From 60ff6c25e36ea52d785f58dc62ce2357d082bef4 Mon Sep 17 00:00:00 2001 From: pikalaxalt Date: Tue, 24 May 2016 12:59:55 -0400 Subject: Printer error funcs --- macros.asm | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) (limited to 'macros.asm') diff --git a/macros.asm b/macros.asm index 06aa34a9..b71a5dd9 100644 --- a/macros.asm +++ b/macros.asm @@ -157,25 +157,41 @@ money equs "bcd3" ;\2 = X ;\3 = Y coord: MACRO +if _NARG >= 4 + ld \1, \4 + 20 * \3 + \2 +else ld \1, wTileMap + 20 * \3 + \2 +endc ENDM ;\1 = X ;\2 = Y aCoord: MACRO +if _NARG >= 3 + ld a, [\3 + 20 * \2 + \1] +else ld a, [wTileMap + 20 * \2 + \1] +endc ENDM ;\1 = X ;\2 = Y Coorda: MACRO +if _NARG >= 3 + ld [\3 + 20 * \2 + \1], a +else ld [wTileMap + 20 * \2 + \1], a +endc ENDM ;\1 = X ;\2 = Y dwCoord: MACRO +if _NARG >= 3 + dw \3 + 20 * \2 + \1 +else dw wTileMap + 20 * \2 + \1 +endc ENDM ;\1 = r -- cgit v1.3.1-sl0p From 219eddf056933c6e5f06903caa73d49de3118a60 Mon Sep 17 00:00:00 2001 From: pikalaxalt Date: Tue, 24 May 2016 17:41:33 -0400 Subject: Update hidden object functions and include them in main --- data/hidden_objects.asm | 606 +++++++++++++---------------------- engine/hidden_object_functions18.asm | 74 +++-- engine/overworld/hidden_objects.asm | 20 +- macros.asm | 4 + main.asm | 19 +- 5 files changed, 284 insertions(+), 439 deletions(-) (limited to 'macros.asm') diff --git a/data/hidden_objects.asm b/data/hidden_objects.asm index 8170cf5a..2750a8fa 100755 --- a/data/hidden_objects.asm +++ b/data/hidden_objects.asm @@ -1,244 +1,137 @@ -HiddenObjectMaps: ; 46a40 (11:6a40) - db REDS_HOUSE_2F - db BLUES_HOUSE - db OAKS_LAB - db VIRIDIAN_POKECENTER - db VIRIDIAN_MART - db VIRIDIAN_SCHOOL - db VIRIDIAN_GYM - db MUSEUM_1F - db PEWTER_GYM - db PEWTER_MART - db PEWTER_POKECENTER - db CERULEAN_POKECENTER - db CERULEAN_GYM - db CERULEAN_MART - db LAVENDER_POKECENTER - db VERMILION_POKECENTER - db VERMILION_GYM - db CELADON_MANSION_2 - db CELADON_POKECENTER - db CELADON_GYM - db GAME_CORNER - db CELADON_HOTEL - db FUCHSIA_POKECENTER - db FUCHSIA_GYM - db CINNABAR_GYM - db CINNABAR_POKECENTER - db SAFFRON_GYM - db MT_MOON_POKECENTER - db ROCK_TUNNEL_POKECENTER - db TRADE_CENTER - db COLOSSEUM - db VIRIDIAN_FOREST - db MT_MOON_3 - db INDIGO_PLATEAU - db ROUTE_25 - db ROUTE_9 - db SS_ANNE_6 - db SS_ANNE_10 - db ROCKET_HIDEOUT_1 - db ROCKET_HIDEOUT_3 - db ROCKET_HIDEOUT_4 - db SAFFRON_POKECENTER - db POKEMONTOWER_5 - db ROUTE_13 - db SAFARI_ZONE_ENTRANCE - db SAFARI_ZONE_WEST - db SILPH_CO_5F - db SILPH_CO_9F - db COPYCATS_HOUSE_2F - db UNKNOWN_DUNGEON_1 - db UNKNOWN_DUNGEON_3 - db POWER_PLANT - db SEAFOAM_ISLANDS_3 - db SEAFOAM_ISLANDS_5 - db MANSION_1 - db MANSION_3 - db ROUTE_23 - db VICTORY_ROAD_2 - db $6F - db BILLS_HOUSE - db VIRIDIAN_CITY - db SAFARI_ZONE_REST_HOUSE_2 - db SAFARI_ZONE_REST_HOUSE_3 - db SAFARI_ZONE_REST_HOUSE_4 - db ROUTE_15_GATE_2F - db LAVENDER_HOUSE_1 - db CELADON_MANSION_5 - db FIGHTING_DOJO - db ROUTE_10 - db INDIGO_PLATEAU_LOBBY - db CINNABAR_LAB_4 - db BIKE_SHOP - db ROUTE_11 - db ROUTE_12 - db MANSION_2 - db MANSION_4 - db SILPH_CO_11F - db ROUTE_17 - db UNDERGROUND_PATH_NS - db UNDERGROUND_PATH_WE - db CELADON_CITY - db SEAFOAM_ISLANDS_4 - db VERMILION_CITY - db CERULEAN_CITY - db ROUTE_4 +HiddenObjectMaps: ; f268d (3c:668d) + dbw SILPH_CO_11F, SilphCo11FHiddenObjects + dbw SILPH_CO_5F, SilphCo5FHiddenObjects + dbw SILPH_CO_9F, SilphCo9FHiddenObjects + dbw MANSION_2, Mansion2HiddenObjects + dbw MANSION_3, Mansion3HiddenObjects + dbw MANSION_4, Mansion4HiddenObjects + dbw SAFARI_ZONE_WEST, SafariZoneWestHiddenObjects + dbw UNKNOWN_DUNGEON_2, UnknownDungeon2HiddenObjects + dbw UNKNOWN_DUNGEON_3, UnknownDungeon3HiddenObjects + dbw UNUSED_MAP_6F, UnusedMap6FHiddenObjects + dbw SEAFOAM_ISLANDS_3, SeafoamIslands3HiddenObjects + dbw SEAFOAM_ISLANDS_4, SeafoamIslands4HiddenObjects + dbw SEAFOAM_ISLANDS_5, SeafoamIslands5HiddenObjects + dbw VIRIDIAN_FOREST, ViridianForestHiddenObjects + dbw MT_MOON_3, MtMoon3HiddenObjects + dbw SS_ANNE_10, SSAnne10HiddenObjects + dbw SS_ANNE_6, SSAnne6HiddenObjects + dbw UNDERGROUND_PATH_NS, UndergroundPathNsHiddenObjects + dbw UNDERGROUND_PATH_WE, UndergroundPathWeHiddenObjects + dbw ROCKET_HIDEOUT_1, RocketHideout1HiddenObjects + dbw ROCKET_HIDEOUT_3, RocketHideout3HiddenObjects + dbw ROCKET_HIDEOUT_4, RocketHideout4HiddenObjects + dbw ROUTE_10, Route10HiddenObjects + dbw ROCK_TUNNEL_POKECENTER, RockTunnelPokecenterHiddenObjects + dbw POWER_PLANT, PowerPlantHiddenObjects + dbw ROUTE_11, Route11HiddenObjects + dbw ROUTE_12, Route12HiddenObjects + dbw ROUTE_13, Route13HiddenObjects + dbw ROUTE_15_GATE_2F, Route15Gate2FHiddenObjects + dbw ROUTE_17, Route17HiddenObjects + dbw ROUTE_23, Route23HiddenObjects + dbw VICTORY_ROAD_2, VictoryRoad2HiddenObjects + dbw ROUTE_25, Route25HiddenObjects + dbw BILLS_HOUSE, BillsHouseHiddenObjects + dbw ROUTE_4, Route4HiddenObjects + dbw MT_MOON_POKECENTER, MtMoonPokecenterHiddenObjects + dbw ROUTE_9, Route9HiddenObjects + dbw TRADE_CENTER, TradeCenterHiddenObjects + dbw COLOSSEUM, ColosseumHiddenObjects + dbw INDIGO_PLATEAU, IndigoPlateauHiddenObjects + dbw INDIGO_PLATEAU_LOBBY, IndigoPlateauLobbyHiddenObjects + dbw COPYCATS_HOUSE_2F, CopycatsHouse2FHiddenObjects + dbw FIGHTING_DOJO, FightingDojoHiddenObjects + dbw SAFFRON_GYM, SaffronGymHiddenObjects + dbw SAFFRON_POKECENTER, SaffronPokecenterHiddenObjects + dbw REDS_HOUSE_2F, RedsHouse2FHiddenObjects + dbw BLUES_HOUSE, BluesHouseHiddenObjects + dbw OAKS_LAB, OaksLabHiddenObjects + dbw VIRIDIAN_CITY, ViridianCityHiddenObjects + dbw VIRIDIAN_POKECENTER, ViridianPokecenterHiddenObjects + dbw VIRIDIAN_SCHOOL, ViridianSchoolHiddenObjects + dbw VIRIDIAN_GYM, ViridianGymHiddenObjects + dbw MUSEUM_1F, Museum1FHiddenObjects + dbw PEWTER_GYM, PewterGymHiddenObjects + dbw PEWTER_POKECENTER, PewterPokecenterHiddenObjects + dbw CERULEAN_CITY, CeruleanCityHiddenObjects + dbw CERULEAN_POKECENTER, CeruleanPokecenterHiddenObjects + dbw CERULEAN_GYM, CeruleanGymHiddenObjects + dbw BIKE_SHOP, BikeShopHiddenObjects + dbw UNKNOWN_DUNGEON_1, UnknownDungeon1HiddenObjects + dbw LAVENDER_POKECENTER, LavenderPokecenterHiddenObjects + dbw POKEMONTOWER_5, Pokemontower5HiddenObjects + dbw LAVENDER_HOUSE_1, LavenderHouse1HiddenObjects + dbw VERMILION_CITY, VermilionCityHiddenObjects + dbw VERMILION_POKECENTER, VermilionPokecenterHiddenObjects + dbw POKEMON_FAN_CLUB, PokemonFanClubHiddenObjects + dbw VERMILION_GYM, VermilionGymHiddenObjects + dbw CELADON_CITY, CeladonCityHiddenObjects + dbw CELADON_HOTEL, CeladonHotelHiddenObjects + dbw CELADON_MANSION_2, CeladonMansion2HiddenObjects + dbw CELADON_MANSION_5, CeladonMansion5HiddenObjects + dbw CELADON_POKECENTER, CeladonPokecenterHiddenObjects + dbw CELADON_GYM, CeladonGymHiddenObjects + dbw GAME_CORNER, GameCornerHiddenObjects + dbw FUCHSIA_POKECENTER, FuchsiaPokecenterHiddenObjects + dbw SAFARI_ZONE_ENTRANCE, SafariZoneEntranceHiddenObjects + dbw FUCHSIA_GYM, FuchsiaGymHiddenObjects + dbw MANSION_1, Mansion1HiddenObjects + dbw CINNABAR_GYM, CinnabarGymHiddenObjects + dbw CINNABAR_LAB_4, CinnabarLab4HiddenObjects + dbw CINNABAR_POKECENTER, CinnabarPokecenterHiddenObjects db $FF -HiddenObjectPointers: ; 46a96 (11:6a96) -; each of these pointers is for the corresponding map in HiddenObjectMaps - dw RedsHouse2FHiddenObjects - dw BluesHouseHiddenObjects - dw OaksLabHiddenObjects - dw ViridianPokecenterHiddenObjects - dw ViridianMartHiddenObjects - dw ViridianSchoolHiddenObjects - dw ViridianGymHiddenObjects - dw Museum1FHiddenObjects - dw PewterGymHiddenObjects - dw PewterMartHiddenObjects - dw PewterPokecenterHiddenObjects - dw CeruleanPokecenterHiddenObjects - dw CeruleanGymHiddenObjects - dw CeruleanMartHiddenObjects - dw LavenderPokecenterHiddenObjects - dw VermilionPokecenterHiddenObjects - dw VermilionGymHiddenObjects - dw CeladonMansion2HiddenObjects - dw CeladonPokecenterHiddenObjects - dw CeladonGymHiddenObjects - dw GameCornerHiddenObjects - dw CeladonHotelHiddenObjects - dw FuchsiaPokecenterHiddenObjects - dw FuchsiaGymHiddenObjects - dw CinnabarGymHiddenObjects - dw CinnabarPokecenterHiddenObjects - dw SaffronGymHiddenObjects - dw MtMoonPokecenterHiddenObjects - dw RockTunnelPokecenterHiddenObjects - dw TradeCenterHiddenObjects - dw ColosseumHiddenObjects - dw ViridianForestHiddenObjects - dw MtMoon3HiddenObjects - dw IndigoPlateauHiddenObjects - dw Route25HiddenObjects - dw Route9HiddenObjects - dw SSAnne6HiddenObjects - dw SSAnne10HiddenObjects - dw RocketHideout1HiddenObjects - dw RocketHideout3HiddenObjects - dw RocketHideout4HiddenObjects - dw SaffronPokecenterHiddenObjects - dw PokemonTower5HiddenObjects - dw Route13HiddenObjects - dw SafariZoneEntranceHiddenObjects - dw SafariZoneWestHiddenObjects - dw SilphCo5FHiddenObjects - dw SilphCo9FHiddenObjects - dw CopycatsHouse2FHiddenObjects - dw UnknownDungeon1HiddenObjects - dw UnknownDungeon3HiddenObjects - dw PowerPlantHiddenObjects - dw SeafoamIslands3HiddenObjects - dw SeafoamIslands5HiddenObjects - dw Mansion1HiddenObjects - dw Mansion3HiddenObjects - dw Route23HiddenObjects - dw VictoryRoad2HiddenObjects - dw Unused6FHiddenObjects - dw BillsHouseHiddenObjects - dw ViridianCityHiddenObjects - dw SafariZoneRestHouse2HiddenObjects - dw SafariZoneRestHouse3HiddenObjects - dw SafariZoneRestHouse4HiddenObjects - dw Route15GateUpstairsHiddenObjects - dw LavenderHouse1HiddenObjects - dw CeladonMansion5HiddenObjects - dw FightingDojoHiddenObjects - dw Route10HiddenObjects - dw IndigoPlateauLobbyHiddenObjects - dw CinnabarLab4HiddenObjects - dw BikeShopHiddenObjects - dw Route11HiddenObjects - dw Route12HiddenObjects - dw Mansion2HiddenObjects - dw Mansion4HiddenObjects - dw SilphCo11FHiddenObjects - dw Route17HiddenObjects - dw UndergroundPathNsHiddenObjects - dw UndergroundPathWeHiddenObjects - dw CeladonCityHiddenObjects - dw SeafoamIslands4HiddenObjects - dw VermilionCityHiddenObjects - dw CeruleanCityHiddenObjects - dw Route4HiddenObjects - ; format: y-coord, x-coord, text id/item id, object routine TradeCenterHiddenObjects: ; 46b40 (11:6b40) db $04,$05,$d0 - db BANK(CableClubRightGameboy) - dw CableClubRightGameboy + dba CableClubRightGameboy db $04,$04,$d0 - db BANK(CableClubLeftGameboy) - dw CableClubLeftGameboy + dba CableClubLeftGameboy db $FF ColosseumHiddenObjects: ; 46b4d (11:6b4d) db $04,$05,$d0 - db BANK(CableClubRightGameboy) - dw CableClubRightGameboy + dba CableClubRightGameboy db $04,$04,$d0 - db BANK(CableClubLeftGameboy) - dw CableClubLeftGameboy + dba CableClubLeftGameboy db $FF RedsHouse2FHiddenObjects: ; 46b5a (11:6b5a) db $01,$00,$04 - dbw BANK(OpenRedsPC), OpenRedsPC + dba OpenRedsPC db $05,$03,$d0 - dbw BANK(PrintRedsNESText), PrintRedsNESText + dba PrintRedsNESText db $FF BluesHouseHiddenObjects: ; 46b67 (11:6b67) db $01,$00,$04 - db BANK(PrintBookcaseText) - dw PrintBookcaseText + dba PrintBookcaseText db $01,$01,$04 - db BANK(PrintBookcaseText) - dw PrintBookcaseText + dba PrintBookcaseText db $01,$07,$04 - db BANK(PrintBookcaseText) - dw PrintBookcaseText + dba PrintBookcaseText db $FF OaksLabHiddenObjects: ; 46b7a (11:6b7a) db $00,$04,$04 - db BANK(DisplayOakLabLeftPoster) - dw DisplayOakLabLeftPoster + dba DisplayOakLabLeftPoster db $00,$05,$04 - db BANK(DisplayOakLabRightPoster) - dw DisplayOakLabRightPoster + dba DisplayOakLabRightPoster db $01,$00,$04 - db BANK(DisplayOakLabEmailText) - dw DisplayOakLabEmailText + dba DisplayOakLabEmailText db $01,$01,$04 - db BANK(DisplayOakLabEmailText) - dw DisplayOakLabEmailText + dba DisplayOakLabEmailText db $FF ViridianPokecenterHiddenObjects: ; 46b93 (11:6b93) db $04,$00,$08 - db Bank(PrintBenchGuyText) - dw PrintBenchGuyText + dba PrintBenchGuyText db $03,$0d,$04 - db BANK(OpenPokemonCenterPC) - dw OpenPokemonCenterPC + dba OpenPokemonCenterPC db $FF ViridianMartHiddenObjects: ; 46ba0 (11:6ba0) db $FF ViridianSchoolHiddenObjects: ; 46ba1 (11:6ba1) db $04,$03,(ViridianSchoolNotebook_id - TextPredefs) / 2 + 1 - db Bank(PrintNotebookText) - dw PrintNotebookText + dba PrintNotebookText db $00,$03,(ViridianSchoolBlackboard_id - TextPredefs) / 2 + 1 - db BANK(PrintBlackboardLinkCableText) - dw PrintBlackboardLinkCableText + dba PrintBlackboardLinkCableText db $FF ViridianGymHiddenObjects: ; 46bae (11:6bae) db $0f,$0f,$04 @@ -248,9 +141,9 @@ ViridianGymHiddenObjects: ; 46bae (11:6bae) db $FF Museum1FHiddenObjects: ; 46bbb (11:6bbb) db $03,$02,$04 - dbw BANK(AerodactylFossil), AerodactylFossil + dba AerodactylFossil db $06,$02,$04 - dbw BANK(KabutopsFossil), KabutopsFossil + dba KabutopsFossil db $FF PewterGymHiddenObjects: ; 46bc8 (11:6bc8) db $0a,$03,$04 @@ -262,19 +155,15 @@ PewterMartHiddenObjects: ; 46bd5 (11:6bd5) db $FF PewterPokecenterHiddenObjects: ; 46bd6 (11:6bd6) db $04,$00,$08 - db Bank(PrintBenchGuyText) - dw PrintBenchGuyText + dba PrintBenchGuyText db $03,$0d,$04 - db BANK(OpenPokemonCenterPC) - dw OpenPokemonCenterPC + dba OpenPokemonCenterPC db $FF CeruleanPokecenterHiddenObjects: ; 46be3 (11:6be3) db $04,$00,$08 - db Bank(PrintBenchGuyText) - dw PrintBenchGuyText + dba PrintBenchGuyText db $03,$0d,$04 - db BANK(OpenPokemonCenterPC) - dw OpenPokemonCenterPC + dba OpenPokemonCenterPC db $FF CeruleanGymHiddenObjects: ; 46bf0 (11:6bf0) db $0b,$03,$04 @@ -286,70 +175,63 @@ CeruleanMartHiddenObjects: ; 46bfd (11:6bfd) db $FF LavenderPokecenterHiddenObjects: ; 46bfe (11:6bfe) db $04,$00,$08 - db Bank(PrintBenchGuyText) - dw PrintBenchGuyText + dba PrintBenchGuyText db $03,$0d,$04 - db BANK(OpenPokemonCenterPC) - dw OpenPokemonCenterPC + dba OpenPokemonCenterPC db $FF VermilionPokecenterHiddenObjects: ; 46c0b (11:6c0b) db $03,$0d,$04 - db BANK(OpenPokemonCenterPC) - dw OpenPokemonCenterPC + dba OpenPokemonCenterPC db $04,$00,$04 - db Bank(PrintBenchGuyText) - dw PrintBenchGuyText + dba PrintBenchGuyText db $FF VermilionGymHiddenObjects: ; 46c18 (11:6c18) db $0e,$03,$04 - dbw BANK(GymStatues), GymStatues + dba GymStatues db $0e,$06,$04 - dbw BANK(GymStatues), GymStatues + dba GymStatues db $01,$06,$00 - dbw BANK(PrintTrashText), PrintTrashText + dba PrintTrashText db $07,$01,$00 - dbw BANK(GymTrashScript), GymTrashScript + dba GymTrashScript db $09,$01,$01 - dbw BANK(GymTrashScript), GymTrashScript + dba GymTrashScript db $0b,$01,$02 - dbw BANK(GymTrashScript), GymTrashScript + dba GymTrashScript db $07,$03,$03 - dbw BANK(GymTrashScript), GymTrashScript + dba GymTrashScript db $09,$03,$04 - dbw BANK(GymTrashScript), GymTrashScript + dba GymTrashScript db $0b,$03,$05 - dbw BANK(GymTrashScript), GymTrashScript + dba GymTrashScript db $07,$05,$06 - dbw BANK(GymTrashScript), GymTrashScript + dba GymTrashScript db $09,$05,$07 - dbw BANK(GymTrashScript), GymTrashScript + dba GymTrashScript db $0b,$05,$08 - dbw BANK(GymTrashScript), GymTrashScript + dba GymTrashScript db $07,$07,$09 - dbw BANK(GymTrashScript), GymTrashScript + dba GymTrashScript db $09,$07,$0a - dbw BANK(GymTrashScript), GymTrashScript + dba GymTrashScript db $0b,$07,$0b - dbw BANK(GymTrashScript), GymTrashScript + dba GymTrashScript db $07,$09,$0c - dbw BANK(GymTrashScript), GymTrashScript + dba GymTrashScript db $09,$09,$0d - dbw BANK(GymTrashScript), GymTrashScript + dba GymTrashScript db $0b,$09,$0e - dbw BANK(GymTrashScript), GymTrashScript + dba GymTrashScript db $FF CeladonMansion2HiddenObjects: ; 46c85 (11:6c85) db $05,$00,$04 - db BANK(OpenPokemonCenterPC) - dw OpenPokemonCenterPC + dba OpenPokemonCenterPC db $FF CeladonPokecenterHiddenObjects: ; 46c8c (11:6c8c) db $04,$00,$08 - db Bank(PrintBenchGuyText) - dw PrintBenchGuyText + dba PrintBenchGuyText db $03,$0d,$04 - db BANK(OpenPokemonCenterPC) - dw OpenPokemonCenterPC + dba OpenPokemonCenterPC db $FF CeladonGymHiddenObjects: ; 46c99 (11:6c99) db $0f,$03,$04 @@ -359,77 +241,77 @@ CeladonGymHiddenObjects: ; 46c99 (11:6c99) db $FF GameCornerHiddenObjects: ; 46ca6 (11:6ca6) db $0f,$12,$d0 - dbw BANK(StartSlotMachine), StartSlotMachine + dba StartSlotMachine db $0e,$12,$d0 - dbw BANK(StartSlotMachine), StartSlotMachine + dba StartSlotMachine db $0d,$12,$d0 - dbw BANK(StartSlotMachine), StartSlotMachine + dba StartSlotMachine db $0c,$12,$d0 - dbw BANK(StartSlotMachine), StartSlotMachine + dba StartSlotMachine db $0b,$12,$d0 - dbw BANK(StartSlotMachine), StartSlotMachine + dba StartSlotMachine db $0a,$12,$ff ; "Someone's Keys" - dbw BANK(StartSlotMachine), StartSlotMachine + dba StartSlotMachine db $0a,$0d,$d0 - dbw BANK(StartSlotMachine), StartSlotMachine + dba StartSlotMachine db $0b,$0d,$d0 - dbw BANK(StartSlotMachine), StartSlotMachine + dba StartSlotMachine db $0c,$0d,$fe ; "Out To Lunch" - dbw BANK(StartSlotMachine), StartSlotMachine + dba StartSlotMachine db $0d,$0d,$d0 - dbw BANK(StartSlotMachine), StartSlotMachine + dba StartSlotMachine db $0e,$0d,$d0 - dbw BANK(StartSlotMachine), StartSlotMachine + dba StartSlotMachine db $0f,$0d,$d0 - dbw BANK(StartSlotMachine), StartSlotMachine + dba StartSlotMachine db $0f,$0c,$d0 - dbw BANK(StartSlotMachine), StartSlotMachine + dba StartSlotMachine db $0e,$0c,$d0 - dbw BANK(StartSlotMachine), StartSlotMachine + dba StartSlotMachine db $0d,$0c,$d0 - dbw BANK(StartSlotMachine), StartSlotMachine + dba StartSlotMachine db $0c,$0c,$d0 - dbw BANK(StartSlotMachine), StartSlotMachine + dba StartSlotMachine db $0b,$0c,$d0 - dbw BANK(StartSlotMachine), StartSlotMachine + dba StartSlotMachine db $0a,$0c,$d0 - dbw BANK(StartSlotMachine), StartSlotMachine + dba StartSlotMachine db $0a,$07,$d0 - dbw BANK(StartSlotMachine), StartSlotMachine + dba StartSlotMachine db $0b,$07,$d0 - dbw BANK(StartSlotMachine), StartSlotMachine + dba StartSlotMachine db $0c,$07,$d0 - dbw BANK(StartSlotMachine), StartSlotMachine + dba StartSlotMachine db $0d,$07,$d0 - dbw BANK(StartSlotMachine), StartSlotMachine + dba StartSlotMachine db $0e,$07,$d0 - dbw BANK(StartSlotMachine), StartSlotMachine + dba StartSlotMachine db $0f,$07,$d0 - dbw BANK(StartSlotMachine), StartSlotMachine + dba StartSlotMachine db $0f,$06,$d0 - dbw BANK(StartSlotMachine), StartSlotMachine + dba StartSlotMachine db $0e,$06,$d0 - dbw BANK(StartSlotMachine), StartSlotMachine + dba StartSlotMachine db $0d,$06,$d0 - dbw BANK(StartSlotMachine), StartSlotMachine + dba StartSlotMachine db $0c,$06,$fd ; "Out Of Order" - dbw BANK(StartSlotMachine), StartSlotMachine + dba StartSlotMachine db $0b,$06,$d0 - dbw BANK(StartSlotMachine), StartSlotMachine + dba StartSlotMachine db $0a,$06,$d0 - dbw BANK(StartSlotMachine), StartSlotMachine + dba StartSlotMachine db $0a,$01,$d0 - dbw BANK(StartSlotMachine), StartSlotMachine + dba StartSlotMachine db $0b,$01,$d0 - dbw BANK(StartSlotMachine), StartSlotMachine + dba StartSlotMachine db $0c,$01,$d0 - dbw BANK(StartSlotMachine), StartSlotMachine + dba StartSlotMachine db $0d,$01,$d0 - dbw BANK(StartSlotMachine), StartSlotMachine + dba StartSlotMachine db $0e,$01,$d0 - dbw BANK(StartSlotMachine), StartSlotMachine + dba StartSlotMachine db $0f,$01,$d0 - dbw BANK(StartSlotMachine), StartSlotMachine + dba StartSlotMachine db $08,$00,COIN+10 dbw BANK(HiddenCoins),HiddenCoins db $10,$01,COIN+10 @@ -457,19 +339,15 @@ GameCornerHiddenObjects: ; 46ca6 (11:6ca6) db $FF CeladonHotelHiddenObjects: ; 46dc7 (11:6dc7) db $03,$0d,$04 - db BANK(OpenPokemonCenterPC) - dw OpenPokemonCenterPC + dba OpenPokemonCenterPC db $04,$00,$08 - db Bank(PrintBenchGuyText) - dw PrintBenchGuyText + dba PrintBenchGuyText db $FF FuchsiaPokecenterHiddenObjects: ; 46dd4 (11:6dd4) db $03,$0d,$04 - db BANK(OpenPokemonCenterPC) - dw OpenPokemonCenterPC + dba OpenPokemonCenterPC db $04,$00,$04 - db Bank(PrintBenchGuyText) - dw PrintBenchGuyText + dba PrintBenchGuyText db $FF FuchsiaGymHiddenObjects: ; 46de1 (11:6de1) db $0f,$03,$04 @@ -481,31 +359,23 @@ CinnabarGymHiddenObjects: ; 46dee (11:6dee) db $0d,$11,$04 dbw BANK(GymStatues),GymStatues db $07,$0f,$01 - db Bank(PrintCinnabarQuiz) - dw PrintCinnabarQuiz + dba PrintCinnabarQuiz db $01,$0a,$12 - db Bank(PrintCinnabarQuiz) - dw PrintCinnabarQuiz + dba PrintCinnabarQuiz db $07,$09,$13 - db Bank(PrintCinnabarQuiz) - dw PrintCinnabarQuiz + dba PrintCinnabarQuiz db $0d,$09,$14 - db Bank(PrintCinnabarQuiz) - dw PrintCinnabarQuiz + dba PrintCinnabarQuiz db $0d,$01,$05 - db Bank(PrintCinnabarQuiz) - dw PrintCinnabarQuiz + dba PrintCinnabarQuiz db $07,$01,$16 - db Bank(PrintCinnabarQuiz) - dw PrintCinnabarQuiz + dba PrintCinnabarQuiz db $FF CinnabarPokecenterHiddenObjects: ; 46e19 (11:6e19) db $04,$00,$04 - db Bank(PrintBenchGuyText) - dw PrintBenchGuyText + dba PrintBenchGuyText db $03,$0d,$04 - db BANK(OpenPokemonCenterPC) - dw OpenPokemonCenterPC + dba OpenPokemonCenterPC db $FF SaffronGymHiddenObjects: ; 46e26 (11:6e26) db $0f,$09,$04 @@ -513,19 +383,15 @@ SaffronGymHiddenObjects: ; 46e26 (11:6e26) db $FF MtMoonPokecenterHiddenObjects: ; 46e2d (11:6e2d) db $04,$00,$08 - db Bank(PrintBenchGuyText) - dw PrintBenchGuyText + dba PrintBenchGuyText db $03,$0d,$04 - db BANK(OpenPokemonCenterPC) - dw OpenPokemonCenterPC + dba OpenPokemonCenterPC db $FF RockTunnelPokecenterHiddenObjects: ; 46e3a (11:6e3a) db $04,$00,$08 - db Bank(PrintBenchGuyText) - dw PrintBenchGuyText + dba PrintBenchGuyText db $03,$0d,$04 - db BANK(OpenPokemonCenterPC) - dw OpenPokemonCenterPC + dba OpenPokemonCenterPC db $FF ViridianForestHiddenObjects: ; 46e47 (11:6e47) db $12,$01,POTION @@ -541,11 +407,9 @@ MtMoon3HiddenObjects: ; 46e54 (11:6e54) db $FF IndigoPlateauHiddenObjects: ; 46e61 (11:6e61) db $0d,$08,$ff - db BANK(PrintIndigoPlateauHQText) - dw PrintIndigoPlateauHQText + dba PrintIndigoPlateauHQText db $0d,$0b,$00 - db BANK(PrintIndigoPlateauHQText) - dw PrintIndigoPlateauHQText + dba PrintIndigoPlateauHQText db $FF Route25HiddenObjects: ; 46e6e (11:6e6e) db $03,$26,ETHER @@ -559,9 +423,9 @@ Route9HiddenObjects: ; 46e7b (11:6e7b) db $FF SSAnne6HiddenObjects: ; 46e82 (11:6e82) db $05,$0d,$00 - dbw BANK(PrintTrashText), PrintTrashText + dba PrintTrashText db $07,$0d,$00 - dbw BANK(PrintTrashText), PrintTrashText + dba PrintTrashText db $09,$0d,GREAT_BALL dbw BANK(HiddenItems),HiddenItems db $FF @@ -589,11 +453,9 @@ RocketHideout4HiddenObjects: ; 46eb7 (11:6eb7) db $FF SaffronPokecenterHiddenObjects: ; 46ebe (11:6ebe) db $04,$00,$04 - db Bank(PrintBenchGuyText) - dw PrintBenchGuyText + dba PrintBenchGuyText db $03,$0d,$04 - db BANK(OpenPokemonCenterPC) - dw OpenPokemonCenterPC + dba OpenPokemonCenterPC db $FF PokemonTower5HiddenObjects: ; 46ecb (11:6ecb) db $0c,$04,ELIXER @@ -651,30 +513,25 @@ Mansion1HiddenObjects: ; 46f2b (11:6f2b) db $10,$08,MOON_STONE dbw BANK(HiddenItems),HiddenItems db $05,$02,$04 - db BANK(Mansion1Script_Switches) - dw Mansion1Script_Switches + dba Mansion1Script_Switches db $FF Mansion2HiddenObjects: ; 46f38 (11:6f38) db $0b,$02,$04 - db BANK(Mansion2Script_Switches) - dw Mansion2Script_Switches + dba Mansion2Script_Switches db $FF Mansion3HiddenObjects: ; 46f3f (11:6f3f) db $09,$01,MAX_REVIVE dbw BANK(HiddenItems),HiddenItems db $05,$0a,$04 - db BANK(Mansion3Script_Switches) - dw Mansion3Script_Switches + dba Mansion3Script_Switches db $FF Mansion4HiddenObjects: ; 46f4c (11:6f4c) db $09,$01,RARE_CANDY dbw BANK(HiddenItems),HiddenItems db $03,$14,$04 - db BANK(Mansion4Script_Switches) - dw Mansion4Script_Switches + dba Mansion4Script_Switches db $19,$12,$04 - db BANK(Mansion4Script_Switches) - dw Mansion4Script_Switches + dba Mansion4Script_Switches db $FF Route23HiddenObjects: ; 46f5f (11:6f5f) db $2c,$09,FULL_RESTORE @@ -696,7 +553,7 @@ Unused6FHiddenObjects: ; 46f7f (11:6f7f) db $FF BillsHouseHiddenObjects: ; 46f86 (11:6f86) db $04,$01,$04 - dbw BANK(BillsHousePC), BillsHousePC + dba BillsHousePC db $FF ViridianCityHiddenObjects: ; 46f8d (11:6f8d) db $04,$0e,POTION @@ -704,95 +561,75 @@ ViridianCityHiddenObjects: ; 46f8d (11:6f8d) db $FF SafariZoneRestHouse2HiddenObjects: ; 46f94 (11:6f94) db $04,$00,$08 - db Bank(PrintBenchGuyText) - dw PrintBenchGuyText + dba PrintBenchGuyText db $03,$0d,$04 - db BANK(OpenPokemonCenterPC) - dw OpenPokemonCenterPC + dba OpenPokemonCenterPC db $FF SafariZoneRestHouse3HiddenObjects: ; 46fa1 (11:6fa1) db $04,$00,$08 - db Bank(PrintBenchGuyText) - dw PrintBenchGuyText + dba PrintBenchGuyText db $03,$0d,$04 - db BANK(OpenPokemonCenterPC) - dw OpenPokemonCenterPC + dba OpenPokemonCenterPC db $FF SafariZoneRestHouse4HiddenObjects: ; 46fae (11:6fae) db $04,$00,$08 - db Bank(PrintBenchGuyText) - dw PrintBenchGuyText + dba PrintBenchGuyText db $03,$0d,$04 - db BANK(OpenPokemonCenterPC) - dw OpenPokemonCenterPC + dba OpenPokemonCenterPC db $FF Route15GateUpstairsHiddenObjects: ; 46fbb (11:6fbb) db $02,$01,$04 - db BANK(Route15GateLeftBinoculars) - dw Route15GateLeftBinoculars + dba Route15GateLeftBinoculars db $FF LavenderHouse1HiddenObjects: ; 46fc2 (11:6fc2) db $01,$00,$00 - db BANK(PrintMagazinesText) - dw PrintMagazinesText + dba PrintMagazinesText db $01,$01,$00 - db BANK(PrintMagazinesText) - dw PrintMagazinesText + dba PrintMagazinesText db $01,$07,$00 - db BANK(PrintMagazinesText) - dw PrintMagazinesText + dba PrintMagazinesText db $FF CeladonMansion5HiddenObjects: ; 46fd5 (11:6fd5) db $00,$03,(LinkCableHelp_id - TextPredefs) / 2 + 1 - db BANK(PrintBlackboardLinkCableText) - dw PrintBlackboardLinkCableText + dba PrintBlackboardLinkCableText db $00,$04,(LinkCableHelp_id - TextPredefs) / 2 + 1 - db BANK(PrintBlackboardLinkCableText) - dw PrintBlackboardLinkCableText + dba PrintBlackboardLinkCableText db $04,$03,(TMNotebook_id - TextPredefs) / 2 + 1 - db Bank(PrintNotebookText) - dw PrintNotebookText + dba PrintNotebookText db $FF FightingDojoHiddenObjects: ; 46fe8 (11:6fe8) db $09,$03,$04 - db BANK(PrintFightingDojoText) - dw PrintFightingDojoText + dba PrintFightingDojoText db $09,$06,$04 - db BANK(PrintFightingDojoText) - dw PrintFightingDojoText + dba PrintFightingDojoText db $00,$04,$04 - db BANK(PrintFightingDojoText2) - dw PrintFightingDojoText2 + dba PrintFightingDojoText2 db $00,$05,$04 - db BANK(PrintFightingDojoText3) - dw PrintFightingDojoText3 + dba PrintFightingDojoText3 db $FF IndigoPlateauLobbyHiddenObjects: ; 47001 (11:7001) db $07,$0f,$04 - db BANK(OpenPokemonCenterPC) - dw OpenPokemonCenterPC + dba OpenPokemonCenterPC db $FF CinnabarLab4HiddenObjects: ; 47008 (11:7008) db $04,$00,$04 - db BANK(OpenPokemonCenterPC) - dw OpenPokemonCenterPC + dba OpenPokemonCenterPC db $04,$02,$04 - db BANK(OpenPokemonCenterPC) - dw OpenPokemonCenterPC + dba OpenPokemonCenterPC db $FF BikeShopHiddenObjects: ; 47015 (11:7015) db $00,$01,$d0 - dbw BANK(PrintNewBikeText), PrintNewBikeText + dba PrintNewBikeText db $01,$02,$d0 - dbw BANK(PrintNewBikeText), PrintNewBikeText + dba PrintNewBikeText db $02,$01,$d0 - dbw BANK(PrintNewBikeText), PrintNewBikeText + dba PrintNewBikeText db $02,$03,$d0 - dbw BANK(PrintNewBikeText), PrintNewBikeText + dba PrintNewBikeText db $04,$00,$d0 - dbw BANK(PrintNewBikeText), PrintNewBikeText + dba PrintNewBikeText db $05,$01,$d0 - dbw BANK(PrintNewBikeText), PrintNewBikeText + dba PrintNewBikeText db $FF Route11HiddenObjects: ; 4703a (11:703a) db $05,$30,ESCAPE_ROPE @@ -804,8 +641,7 @@ Route12HiddenObjects: ; 47041 (11:7041) db $FF SilphCo11FHiddenObjects: ; 47048 (11:7048) db $0c,$0a,$04 - db BANK(OpenPokemonCenterPC) - dw OpenPokemonCenterPC + dba OpenPokemonCenterPC db $FF Route17HiddenObjects: ; 4704f (11:704f) db $0e,$0f,RARE_CANDY diff --git a/engine/hidden_object_functions18.asm b/engine/hidden_object_functions18.asm index ab66a818..9d19dd7c 100755 --- a/engine/hidden_object_functions18.asm +++ b/engine/hidden_object_functions18.asm @@ -1,4 +1,4 @@ -GymStatues: ; 62419 (18:6419) +GymStatues: ; 625e8 (18:65e8) ; if in a gym and have the corresponding badge, a = GymStatueText2_id and jp PrintPredefTextID ; if in a gym and don’t have the corresponding badge, a = GymStatueText1_id and jp PrintPredefTextID ; else ret @@ -29,14 +29,14 @@ GymStatues: ; 62419 (18:6419) jp PrintPredefTextID .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 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) @@ -72,30 +72,36 @@ PrintBenchGuyText: ; 6245d (18:645d) ; format: db map id, player sprite facing direction, text id of PredefTextIDPointerTable BenchGuyTextPointers: ; 6247e (18:647e) - db VIRIDIAN_POKECENTER, SPRITE_FACING_LEFT - db (ViridianCityPokecenterBenchGuyText_id - TextPredefs) / 2 + 1 - db PEWTER_POKECENTER, SPRITE_FACING_LEFT - db (PewterCityPokecenterBenchGuyText_id - TextPredefs) / 2 + 1 - db CERULEAN_POKECENTER, SPRITE_FACING_LEFT - db (CeruleanCityPokecenterBenchGuyText_id - TextPredefs) / 2 + 1 - db LAVENDER_POKECENTER, SPRITE_FACING_LEFT - db (LavenderCityPokecenterBenchGuyText_id - TextPredefs) / 2 + 1 - db VERMILION_POKECENTER, SPRITE_FACING_LEFT - db (VermilionCityPokecenterBenchGuyText_id - TextPredefs) / 2 + 1 - db CELADON_POKECENTER, SPRITE_FACING_LEFT - db (CeladonCityPokecenterBenchGuyText_id - TextPredefs) / 2 + 1 - db CELADON_HOTEL, SPRITE_FACING_LEFT - db (CeladonCityHotelText_id - TextPredefs) / 2 + 1 - db FUCHSIA_POKECENTER, SPRITE_FACING_LEFT - db (FuchsiaCityPokecenterBenchGuyText_id - TextPredefs) / 2 + 1 - db CINNABAR_POKECENTER, SPRITE_FACING_LEFT - db (CinnabarIslandPokecenterBenchGuyText_id - TextPredefs) / 2 + 1 - db SAFFRON_POKECENTER, SPRITE_FACING_LEFT - db (SaffronCityPokecenterBenchGuyText_id - TextPredefs) / 2 + 1 - db MT_MOON_POKECENTER, SPRITE_FACING_LEFT - db (MtMoonPokecenterBenchGuyText_id - TextPredefs) / 2 + 1 - db ROCK_TUNNEL_POKECENTER,SPRITE_FACING_LEFT - db (RockTunnelPokecenterBenchGuyText_id - TextPredefs) / 2 + 1 + db VIRIDIAN_POKECENTER, SPRITE_FACING_LEFT + db $11 ; (ViridianCityPokecenterBenchGuyText_id - TextPredefs) / 2 + 1 + db PEWTER_POKECENTER, SPRITE_FACING_LEFT + db $12 ; (PewterCityPokecenterBenchGuyText_id - TextPredefs) / 2 + 1 + db CERULEAN_POKECENTER, SPRITE_FACING_LEFT + db $13 ; (CeruleanCityPokecenterBenchGuyText_id - TextPredefs) / 2 + 1 + db LAVENDER_POKECENTER, SPRITE_FACING_LEFT + db $14 ; (LavenderCityPokecenterBenchGuyText_id - TextPredefs) / 2 + 1 + db VERMILION_POKECENTER, SPRITE_FACING_LEFT + db $15 ; (VermilionCityPokecenterBenchGuyText_id - TextPredefs) / 2 + 1 + db CELADON_POKECENTER, SPRITE_FACING_LEFT + db $16 ; (CeladonCityPokecenterBenchGuyText_id - TextPredefs) / 2 + 1 + db CELADON_HOTEL, SPRITE_FACING_LEFT + db $17 ; (CeladonCityHotelText_id - TextPredefs) / 2 + 1 + db FUCHSIA_POKECENTER, SPRITE_FACING_LEFT + db $18 ; (FuchsiaCityPokecenterBenchGuyText_id - TextPredefs) / 2 + 1 + db CINNABAR_POKECENTER, SPRITE_FACING_LEFT + db $19 ; (CinnabarIslandPokecenterBenchGuyText_id - TextPredefs) / 2 + 1 + db SAFFRON_POKECENTER, SPRITE_FACING_LEFT + db $1a ; (SaffronCityPokecenterBenchGuyText_id - TextPredefs) / 2 + 1 + db MT_MOON_POKECENTER, SPRITE_FACING_LEFT + db $1b ; (MtMoonPokecenterBenchGuyText_id - TextPredefs) / 2 + 1 + db ROCK_TUNNEL_POKECENTER, SPRITE_FACING_LEFT + db $1c ; (RockTunnelPokecenterBenchGuyText_id - TextPredefs) / 2 + 1 + db SAFARI_ZONE_REST_HOUSE_2,SPRITE_FACING_LEFT + db $1d + db SAFARI_ZONE_REST_HOUSE_3,SPRITE_FACING_LEFT + db $1e + db SAFARI_ZONE_REST_HOUSE_4,SPRITE_FACING_LEFT + db $1f db $FF ViridianCityPokecenterBenchGuyText: ; 624a3 (18:64a3) @@ -177,7 +183,7 @@ CeladonCityHotelText: ; 62502 (18:6502) UnusedPredefText: ; 62508 (18:6508) db "@" -PrintBookcaseText: ; 6509 (18:6509) +PrintBookcaseText: ; 626e1 (18:66e1) call EnableAutoTextBoxDrawing tx_pre_jump BookcaseText diff --git a/engine/overworld/hidden_objects.asm b/engine/overworld/hidden_objects.asm index 3774c482..15496b81 100755 --- a/engine/overworld/hidden_objects.asm +++ b/engine/overworld/hidden_objects.asm @@ -1,27 +1,17 @@ ; if a hidden object was found, stores $00 in [$ffee], else stores $ff -CheckForHiddenObject: ; 469a0 (11:69a0) +CheckForHiddenObject: ; f25f8 (3c:65f8) ld hl, $ffeb xor a ld [hli], a ld [hli], a ld [hli], a ld [hl], a - ld de, $0 ld hl, HiddenObjectMaps -.hiddenMapLoop - ld a, [hli] - ld b, a - cp $ff - jr z, .noMatch + ld de, 3 ld a, [wCurMap] - cp b - jr z, .foundMatchingMap - inc de - inc de - jr .hiddenMapLoop -.foundMatchingMap - ld hl, HiddenObjectPointers - add hl, de + call IsInArray + jr nc, .noMatch + inc hl ld a, [hli] ld h, [hl] ld l, a diff --git a/macros.asm b/macros.asm index b71a5dd9..c4318278 100644 --- a/macros.asm +++ b/macros.asm @@ -262,6 +262,10 @@ dbw: MACRO dw \2 ENDM +dba: MACRO + dbw BANK(\1), \1 + ENDM + ; data format macros RGB: MACRO dw (\3 << 10 | \2 << 5 | \1) diff --git a/main.asm b/main.asm index 79b08454..b32935de 100755 --- a/main.asm +++ b/main.asm @@ -741,7 +741,13 @@ JessieJamesPic: INCBIN "pic/ytrainer/jessiejames.pic" SECTION "bank14",ROMX,BANK[$14] - dr $50000,$525d8 + dr $50000,$52060 +Mansion2Script_Switches: + dr $52060,$522a3 +Mansion3Script_Switches: + dr $522a3,$52449 +Mansion4Script_Switches: + dr $52449,$525d8 INCLUDE "engine/overworld/card_key.asm" INCLUDE "engine/menu/prize_menu.asm" @@ -782,13 +788,14 @@ SECTION "bank17",ROMX,BANK[$17] INCLUDE "engine/evolution.asm" - dr $5db93,$5df60 + dr $5db93,$5dbae +INCLUDE "engine/hidden_object_functions17.asm" SECTION "bank18",ROMX,BANK[$18] - dr $60000,$62702 - + dr $60000,$625e8 +INCLUDE "engine/hidden_object_functions18.asm" SECTION "bank19",ROMX,BANK[$19] Overworld_GFX: @@ -842,7 +849,9 @@ INCLUDE "engine/items/itemfinder.asm" VendingMachineMenu: ; 74726 (1d:4726) dr $74726,$75dfe PKMNLeaguePC: ; 75dfe (1d:5dfe) - dr $75dfe,$75faa + dr $75dfe,$75f74 +HiddenItems: ; 75f74 (1d:5f74) + dr $75f74,$75faa INCLUDE "data/hidden_item_coords.asm" -- cgit v1.3.1-sl0p From 87b20762d539888b031aba92b574108f5f817815 Mon Sep 17 00:00:00 2001 From: pikalaxalt Date: Tue, 24 May 2016 18:54:06 -0400 Subject: Numerous changes (see below) * Fix build errors from previous commit * Fix predef text pointers * Disassemble hidden object data and additional accessory functions --- constants/predef_constants.asm | 2 +- constants/tx_pre_constants.asm | 140 +++--- data/hidden_objects.asm | 947 +++++++++++++++++------------------ engine/bank3c.asm | 78 +-- engine/game_corner_slots2.asm | 4 +- engine/hidden_object_functions17.asm | 109 ++-- engine/hidden_object_functions18.asm | 30 +- engine/overworld/hidden_items.asm | 17 +- home.asm | 143 +++--- hram.asm | 2 + macros.asm | 4 +- main.asm | 10 +- 12 files changed, 741 insertions(+), 745 deletions(-) (limited to 'macros.asm') diff --git a/constants/predef_constants.asm b/constants/predef_constants.asm index 14d1029d..d1e81a72 100644 --- a/constants/predef_constants.asm +++ b/constants/predef_constants.asm @@ -98,4 +98,4 @@ const_value = 0 predef_const DrawHP ; 5F predef_const DrawHP2 predef_const Func_1c9c6 - predef_const OaksAideScript \ No newline at end of file + predef_const OaksAideScript diff --git a/constants/tx_pre_constants.asm b/constants/tx_pre_constants.asm index e2bade58..0e06a8e3 100644 --- a/constants/tx_pre_constants.asm +++ b/constants/tx_pre_constants.asm @@ -1,70 +1,72 @@ -const_value = 1 +; const_value = 1 - tx_pre_const CardKeySuccessText ; 01 - tx_pre_const CardKeyFailText ; 02 - tx_pre_const RedBedroomPCText ; 03 - tx_pre_const RedBedroomSNESText ; 04 - tx_pre_const PushStartText ; 05 - tx_pre_const SaveOptionText ; 06 - tx_pre_const StrengthsAndWeaknessesText ; 07 - tx_pre_const OakLabEmailText ; 08 - tx_pre_const AerodactylFossilText ; 09 - tx_pre_const Route15UpstairsBinocularsText ; 0A - tx_pre_const KabutopsFossilText ; 0B - tx_pre_const GymStatueText1 ; 0C - tx_pre_const GymStatueText2 ; 0D - tx_pre_const BookcaseText ; 0E - tx_pre_const ViridianCityPokecenterBenchGuyText ; 0F - tx_pre_const PewterCityPokecenterBenchGuyText ; 10 - tx_pre_const CeruleanCityPokecenterBenchGuyText ; 11 - tx_pre_const LavenderCityPokecenterBenchGuyText ; 12 - tx_pre_const VermilionCityPokecenterBenchGuyText ; 13 - tx_pre_const CeladonCityPokecenterBenchGuyText ; 14 - tx_pre_const CeladonCityHotelText ; 15 - tx_pre_const FuchsiaCityPokecenterBenchGuyText ; 16 - tx_pre_const CinnabarIslandPokecenterBenchGuyText ; 17 - tx_pre_const SaffronCityPokecenterBenchGuyText ; 18 - tx_pre_const MtMoonPokecenterBenchGuyText ; 19 - tx_pre_const RockTunnelPokecenterBenchGuyText ; 1A - tx_pre_const UnusedBenchGuyText1 ; 1B XXX unused - tx_pre_const UnusedBenchGuyText2 ; 1C XXX unused - tx_pre_const UnusedBenchGuyText3 ; 1D XXX unused - tx_pre_const UnusedPredefText ; 1E XXX unused - tx_pre_const PokemonCenterPCText ; 1F - tx_pre_const ViridianSchoolNotebook ; 20 - tx_pre_const ViridianSchoolBlackboard ; 21 - tx_pre_const FakeTextPredef22 - tx_pre_const FakeTextPredef23 - tx_pre_const JustAMomentText ; 22 - tx_pre_const OpenBillsPCText ; 23 - tx_pre_const FoundHiddenItemText ; 24 - tx_pre_const HiddenItemBagFullText ; 25 XXX unused - tx_pre_const VermilionGymTrashText ; 26 - tx_pre_const IndigoPlateauHQText ; 27 - tx_pre_const GameCornerOutOfOrderText ; 28 - tx_pre_const GameCornerOutToLunchText ; 29 - tx_pre_const GameCornerSomeonesKeysText ; 2A - tx_pre_const FoundHiddenCoinsText ; 2B - tx_pre_const DroppedHiddenCoinsText ; 2C - tx_pre_const BillsHouseMonitorText ; 2D - tx_pre_const BillsHouseInitiatedText ; 2E - tx_pre_const BillsHousePokemonList ; 2F - tx_pre_const MagazinesText ; 30 - tx_pre_const CinnabarGymQuiz ; 31 - tx_pre_const GameCornerNoCoinsText ; 32 - tx_pre_const GameCornerCoinCaseText ; 33 - tx_pre_const LinkCableHelp ; 34 - tx_pre_const TMNotebook ; 35 - tx_pre_const FightingDojoText ; 36 - tx_pre_const EnemiesOnEverySideText ; 37 - tx_pre_const WhatGoesAroundComesAroundText ; 38 - tx_pre_const NewBicycleText ; 39 - tx_pre_const IndigoPlateauStatues ; 3A - tx_pre_const VermilionGymTrashSuccesText1 ; 3B - tx_pre_const VermilionGymTrashSuccesText2 ; 3C XXX unused - tx_pre_const VermilionGymTrashSuccesText3 ; 3D - tx_pre_const VermilionGymTrashFailText ; 3E - tx_pre_const TownMapText ; 3F - tx_pre_const BookOrSculptureText ; 40 - tx_pre_const ElevatorText ; 41 - tx_pre_const PokemonStuffText ; 42 \ No newline at end of file + ; tx_pre_const CardKeySuccessText ; 01 + ; tx_pre_const CardKeyFailText ; 02 + ; tx_pre_const RedBedroomPCText ; 03 + ; tx_pre_const RedBedroomSNESText ; 04 + ; tx_pre_const PushStartText ; 05 + ; tx_pre_const SaveOptionText ; 06 + ; tx_pre_const StrengthsAndWeaknessesText ; 07 + ; tx_pre_const OakLabEmailText ; 08 + ; tx_pre_const AerodactylFossilText ; 09 + ; tx_pre_const Route15UpstairsBinocularsText ; 0A + ; tx_pre_const KabutopsFossilText ; 0B + ; tx_pre_const FanClubRapidashText ; 0C + ; tx_pre_const FanClubFearowText ; 0D + ; tx_pre_const GymStatueText1 ; 0E + ; tx_pre_const GymStatueText2 ; 0F + ; tx_pre_const BookcaseText ; 10 + ; tx_pre_const ViridianCityPokecenterBenchGuyText ; 11 + ; tx_pre_const PewterCityPokecenterBenchGuyText ; 12 + ; tx_pre_const CeruleanCityPokecenterBenchGuyText ; 13 + ; tx_pre_const LavenderCityPokecenterBenchGuyText ; 14 + ; tx_pre_const VermilionCityPokecenterBenchGuyText ; 15 + ; tx_pre_const CeladonCityPokecenterBenchGuyText ; 16 + ; tx_pre_const CeladonCityHotelText ; 17 + ; tx_pre_const FuchsiaCityPokecenterBenchGuyText ; 18 + ; tx_pre_const CinnabarIslandPokecenterBenchGuyText ; 19 + ; tx_pre_const SaffronCityPokecenterBenchGuyText ; 1A + ; tx_pre_const MtMoonPokecenterBenchGuyText ; 1B + ; tx_pre_const RockTunnelPokecenterBenchGuyText ; 1C + ; tx_pre_const UnusedBenchGuyText1 ; 1D + ; tx_pre_const UnusedBenchGuyText2 ; 1E + ; tx_pre_const UnusedBenchGuyText3 ; 1F + ; tx_pre_const UnusedPredefText ; 20 + ; tx_pre_const PokemonCenterPCText ; 21 + ; tx_pre_const ViridianSchoolNotebook ; 22 + ; tx_pre_const ViridianSchoolBlackboard ; 23 + ; tx_pre_const FakeTextPredef22 + ; tx_pre_const FakeTextPredef23 + ; tx_pre_const JustAMomentText ; 24 + ; tx_pre_const OpenBillsPCText ; 25 + ; tx_pre_const FoundHiddenItemText ; 26 + ; tx_pre_const HiddenItemBagFullText ; 27 + ; tx_pre_const VermilionGymTrashText ; 28 + ; tx_pre_const IndigoPlateauHQText ; 29 + ; tx_pre_const GameCornerOutOfOrderText ; 2A + ; tx_pre_const GameCornerOutToLunchText ; 2B + ; tx_pre_const GameCornerSomeonesKeysText ; 2C + ; tx_pre_const FoundHiddenCoinsText ; 2D + ; tx_pre_const DroppedHiddenCoinsText ; 2E + ; tx_pre_const BillsHouseMonitorText ; 2F + ; tx_pre_const BillsHouseInitiatedText ; 30 + ; tx_pre_const BillsHousePokemonList ; 31 + ; tx_pre_const MagazinesText ; 32 + ; tx_pre_const CinnabarGymQuiz ; 33 + ; tx_pre_const GameCornerNoCoinsText ; 34 + ; tx_pre_const GameCornerCoinCaseText ; 35 + ; tx_pre_const LinkCableHelp ; 36 + ; tx_pre_const TMNotebook ; 37 + ; tx_pre_const FightingDojoText ; 38 + ; tx_pre_const EnemiesOnEverySideText ; 39 + ; tx_pre_const WhatGoesAroundComesAroundText ; 3A + ; tx_pre_const NewBicycleText ; 3B + ; tx_pre_const IndigoPlateauStatues ; 3C XXX unused + ; tx_pre_const VermilionGymTrashSuccesText1 ; 3D + ; tx_pre_const VermilionGymTrashSuccesText2 ; 3E + ; tx_pre_const VermilionGymTrashSuccesText3 ; 3F + ; tx_pre_const VermilionGymTrashFailText ; 40 + ; tx_pre_const TownMapText ; 41 + ; tx_pre_const BookOrSculptureText ; 42 + ; tx_pre_const ElevatorText ; 43 + ; tx_pre_const PokemonStuffText ; 44 diff --git a/data/hidden_objects.asm b/data/hidden_objects.asm index 2750a8fa..5b2b27d0 100755 --- a/data/hidden_objects.asm +++ b/data/hidden_objects.asm @@ -83,607 +83,592 @@ HiddenObjectMaps: ; f268d (3c:668d) db $FF ; format: y-coord, x-coord, text id/item id, object routine -TradeCenterHiddenObjects: ; 46b40 (11:6b40) - db $04,$05,$d0 +SilphCo11FHiddenObjects: + db $0c, $0a, $04 + dba OpenPokemonCenterPC + db $FF +SilphCo5FHiddenObjects: + db $03, $0c, $52 + dba HiddenItems + db $FF +SilphCo9FHiddenObjects: + db $0f, $02, $11 + dba HiddenItems + db $FF +Mansion2HiddenObjects: + db $0b, $02, $04 + dba Mansion2Script_Switches + db $FF +Mansion3HiddenObjects: + db $09, $01, $36 + dba HiddenItems + db $05, $0a, $04 + dba Mansion3Script_Switches + db $FF +Mansion4HiddenObjects: + db $09, $01, $28 + dba HiddenItems + db $03, $14, $04 + dba Mansion4Script_Switches + db $19, $12, $04 + dba Mansion4Script_Switches + db $FF +SafariZoneWestHiddenObjects: + db $05, $06, $35 + dba HiddenItems + db $FF +UnknownDungeon2HiddenObjects: + db $0d, $10, $4f + dba HiddenItems + db $FF +UnknownDungeon3HiddenObjects: + db $0e, $08, $4f + dba HiddenItems + db $FF +UnusedMap6FHiddenObjects: + db $0b, $0e, $53 + dba HiddenItems + db $FF +SeafoamIslands3HiddenObjects: + db $0f, $0f, $31 + dba HiddenItems + db $FF +SeafoamIslands4HiddenObjects: + db $10, $09, $53 + dba HiddenItems + db $FF +SeafoamIslands5HiddenObjects: + db $11, $19, $02 + dba HiddenItems + db $FF +ViridianForestHiddenObjects: + db $12, $01, $14 + dba HiddenItems + db $2a, $10, $0b + dba HiddenItems + db $FF +MtMoon3HiddenObjects: + db $0c, $12, $0a + dba HiddenItems + db $09, $21, $50 + dba HiddenItems + db $FF +SSAnne10HiddenObjects: + db $01, $03, $12 + dba HiddenItems + db $FF +SSAnne6HiddenObjects: + db $05, $0d, $00 + dba PrintTrashText + db $07, $0d, $00 + dba PrintTrashText + db $09, $0d, $03 + dba HiddenItems + db $FF +UndergroundPathNsHiddenObjects: + db $04, $03, $10 + dba HiddenItems + db $22, $04, $44 + dba HiddenItems + db $FF +UndergroundPathWeHiddenObjects: + db $02, $0c, $31 + dba HiddenItems + db $05, $15, $52 + dba HiddenItems + db $FF +RocketHideout1HiddenObjects: + db $0f, $15, $4f + dba HiddenItems + db $FF +RocketHideout3HiddenObjects: + db $11, $1b, $31 + dba HiddenItems + db $FF +RocketHideout4HiddenObjects: + db $01, $19, $13 + dba HiddenItems + db $FF +Route10HiddenObjects: + db $11, $09, $13 + dba HiddenItems + db $35, $10, $51 + dba HiddenItems + db $FF +RockTunnelPokecenterHiddenObjects: + db $04, $00, $08 + dba PrintBenchGuyText + db $03, $0d, $04 + dba OpenPokemonCenterPC + db $FF +PowerPlantHiddenObjects: + db $10, $11, $53 + dba HiddenItems + db $01, $0c, $4f + dba HiddenItems + db $FF +Route11HiddenObjects: + db $05, $30, $1d + dba HiddenItems + db $FF +Route12HiddenObjects: + db $3f, $02, $12 + dba HiddenItems + db $FF +Route13HiddenObjects: + db $0e, $01, $4f + dba HiddenItems + db $0d, $10, $27 + dba HiddenItems + db $FF +Route15Gate2FHiddenObjects: + db $02, $01, $04 + dba Route15GateLeftBinoculars + db $FF +Route17HiddenObjects: + db $0e, $0f, $28 + dba HiddenItems + db $2d, $08, $10 + dba HiddenItems + db $48, $11, $4f + dba HiddenItems + db $5b, $04, $36 + dba HiddenItems + db $79, $08, $53 + dba HiddenItems + db $FF +Route23HiddenObjects: + db $2c, $09, $10 + dba HiddenItems + db $46, $13, $02 + dba HiddenItems + db $5a, $08, $51 + dba HiddenItems + db $FF +VictoryRoad2HiddenObjects: + db $02, $05, $02 + dba HiddenItems + db $07, $1a, $10 + dba HiddenItems + db $FF +Route25HiddenObjects: + db $03, $26, $50 + dba HiddenItems + db $01, $0a, $52 + dba HiddenItems + db $FF +BillsHouseHiddenObjects: + db $04, $01, $04 + dba BillsHousePC + db $FF +Route4HiddenObjects: + db $03, $28, $03 + dba HiddenItems + db $FF +MtMoonPokecenterHiddenObjects: + db $04, $00, $08 + dba PrintBenchGuyText + db $03, $0d, $04 + dba OpenPokemonCenterPC + db $FF +Route9HiddenObjects: + db $07, $0e, $50 + dba HiddenItems + db $FF +TradeCenterHiddenObjects: + db $04, $05, $d0 dba CableClubRightGameboy - db $04,$04,$d0 + db $04, $04, $d0 dba CableClubLeftGameboy db $FF -ColosseumHiddenObjects: ; 46b4d (11:6b4d) - db $04,$05,$d0 +ColosseumHiddenObjects: + db $04, $05, $d0 dba CableClubRightGameboy - db $04,$04,$d0 + db $04, $04, $d0 dba CableClubLeftGameboy db $FF -RedsHouse2FHiddenObjects: ; 46b5a (11:6b5a) - db $01,$00,$04 +IndigoPlateauHiddenObjects: + db $0d, $08, $ff + dba PrintIndigoPlateauHQText + db $0d, $0b, $00 + dba PrintIndigoPlateauHQText + db $FF +IndigoPlateauLobbyHiddenObjects: + db $07, $0f, $04 + dba OpenPokemonCenterPC + db $FF +CopycatsHouse2FHiddenObjects: + db $01, $01, $31 + dba HiddenItems + db $FF +FightingDojoHiddenObjects: + db $09, $03, $04 + dba PrintFightingDojoText + db $09, $06, $04 + dba PrintFightingDojoText + db $00, $04, $04 + dba PrintFightingDojoText2 + db $00, $05, $04 + dba PrintFightingDojoText3 + db $FF +SaffronGymHiddenObjects: + db $0f, $09, $04 + dba GymStatues + db $FF +SaffronPokecenterHiddenObjects: + db $04, $00, $04 + dba PrintBenchGuyText + db $03, $0d, $04 + dba OpenPokemonCenterPC + db $FF +RedsHouse2FHiddenObjects: + db $01, $00, $04 dba OpenRedsPC - db $05,$03,$d0 + db $05, $03, $d0 dba PrintRedsNESText db $FF -BluesHouseHiddenObjects: ; 46b67 (11:6b67) - db $01,$00,$04 +BluesHouseHiddenObjects: + db $01, $00, $04 dba PrintBookcaseText - db $01,$01,$04 + db $01, $01, $04 dba PrintBookcaseText - db $01,$07,$04 + db $01, $07, $04 dba PrintBookcaseText db $FF -OaksLabHiddenObjects: ; 46b7a (11:6b7a) - db $00,$04,$04 +OaksLabHiddenObjects: + db $00, $04, $04 dba DisplayOakLabLeftPoster - db $00,$05,$04 + db $00, $05, $04 dba DisplayOakLabRightPoster - db $01,$00,$04 + db $01, $00, $04 dba DisplayOakLabEmailText - db $01,$01,$04 + db $01, $01, $04 dba DisplayOakLabEmailText db $FF -ViridianPokecenterHiddenObjects: ; 46b93 (11:6b93) - db $04,$00,$08 +ViridianCityHiddenObjects: + db $04, $0e, $14 + dba HiddenItems + db $FF +ViridianPokecenterHiddenObjects: + db $04, $00, $08 dba PrintBenchGuyText - db $03,$0d,$04 + db $03, $0d, $04 dba OpenPokemonCenterPC db $FF -ViridianMartHiddenObjects: ; 46ba0 (11:6ba0) - db $FF -ViridianSchoolHiddenObjects: ; 46ba1 (11:6ba1) - db $04,$03,(ViridianSchoolNotebook_id - TextPredefs) / 2 + 1 +ViridianSchoolHiddenObjects: + db $04, $03, $22 dba PrintNotebookText - db $00,$03,(ViridianSchoolBlackboard_id - TextPredefs) / 2 + 1 + db $00, $03, $23 dba PrintBlackboardLinkCableText db $FF -ViridianGymHiddenObjects: ; 46bae (11:6bae) - db $0f,$0f,$04 - dbw BANK(GymStatues),GymStatues - db $0f,$12,$04 - dbw BANK(GymStatues),GymStatues +ViridianGymHiddenObjects: + db $0f, $0f, $04 + dba GymStatues + db $0f, $12, $04 + dba GymStatues db $FF -Museum1FHiddenObjects: ; 46bbb (11:6bbb) - db $03,$02,$04 +Museum1FHiddenObjects: + db $03, $02, $04 dba AerodactylFossil - db $06,$02,$04 + db $06, $02, $04 dba KabutopsFossil db $FF -PewterGymHiddenObjects: ; 46bc8 (11:6bc8) - db $0a,$03,$04 - dbw BANK(GymStatues),GymStatues - db $0a,$06,$04 - dbw BANK(GymStatues),GymStatues - db $FF -PewterMartHiddenObjects: ; 46bd5 (11:6bd5) +PewterGymHiddenObjects: + db $0a, $03, $04 + dba GymStatues + db $0a, $06, $04 + dba GymStatues db $FF -PewterPokecenterHiddenObjects: ; 46bd6 (11:6bd6) - db $04,$00,$08 +PewterPokecenterHiddenObjects: + db $04, $00, $08 dba PrintBenchGuyText - db $03,$0d,$04 + db $03, $0d, $04 dba OpenPokemonCenterPC db $FF -CeruleanPokecenterHiddenObjects: ; 46be3 (11:6be3) - db $04,$00,$08 +CeruleanCityHiddenObjects: + db $08, $0f, $28 + dba HiddenItems + db $FF +CeruleanPokecenterHiddenObjects: + db $04, $00, $08 dba PrintBenchGuyText - db $03,$0d,$04 + db $03, $0d, $04 dba OpenPokemonCenterPC db $FF -CeruleanGymHiddenObjects: ; 46bf0 (11:6bf0) - db $0b,$03,$04 - dbw BANK(GymStatues),GymStatues - db $0b,$06,$04 - dbw BANK(GymStatues),GymStatues +CeruleanGymHiddenObjects: + db $0b, $03, $04 + dba GymStatues + db $0b, $06, $04 + dba GymStatues db $FF -CeruleanMartHiddenObjects: ; 46bfd (11:6bfd) +BikeShopHiddenObjects: + db $00, $01, $d0 + dba PrintNewBikeText + db $01, $02, $d0 + dba PrintNewBikeText + db $02, $01, $d0 + dba PrintNewBikeText + db $02, $03, $d0 + dba PrintNewBikeText + db $04, $00, $d0 + dba PrintNewBikeText + db $05, $01, $d0 + dba PrintNewBikeText + db $FF +UnknownDungeon1HiddenObjects: + db $07, $12, $4f + dba HiddenItems db $FF -LavenderPokecenterHiddenObjects: ; 46bfe (11:6bfe) - db $04,$00,$08 +LavenderPokecenterHiddenObjects: + db $04, $00, $08 dba PrintBenchGuyText - db $03,$0d,$04 + db $03, $0d, $04 dba OpenPokemonCenterPC db $FF -VermilionPokecenterHiddenObjects: ; 46c0b (11:6c0b) - db $03,$0d,$04 +Pokemontower5HiddenObjects: + db $0c, $04, $52 + dba HiddenItems + db $FF +LavenderHouse1HiddenObjects: + db $01, $00, $00 + dba PrintMagazinesText + db $01, $01, $00 + dba PrintMagazinesText + db $01, $07, $00 + dba PrintMagazinesText + db $FF +VermilionCityHiddenObjects: + db $0b, $0e, $51 + dba HiddenItems + db $FF +VermilionPokecenterHiddenObjects: + db $03, $0d, $04 dba OpenPokemonCenterPC - db $04,$00,$04 + db $04, $00, $04 dba PrintBenchGuyText db $FF -VermilionGymHiddenObjects: ; 46c18 (11:6c18) - db $0e,$03,$04 +PokemonFanClubHiddenObjects: + db $00, $01, $04 + dba FanClubPicture1 + db $00, $06, $04 + dba FanClubPicture2 + db $FF +VermilionGymHiddenObjects: + db $0e, $03, $04 dba GymStatues - db $0e,$06,$04 + db $0e, $06, $04 dba GymStatues - db $01,$06,$00 + db $01, $06, $00 dba PrintTrashText - db $07,$01,$00 + db $07, $01, $00 dba GymTrashScript - db $09,$01,$01 + db $09, $01, $01 dba GymTrashScript - db $0b,$01,$02 + db $0b, $01, $02 dba GymTrashScript - db $07,$03,$03 + db $07, $03, $03 dba GymTrashScript - db $09,$03,$04 + db $09, $03, $04 dba GymTrashScript - db $0b,$03,$05 + db $0b, $03, $05 dba GymTrashScript - db $07,$05,$06 + db $07, $05, $06 dba GymTrashScript - db $09,$05,$07 + db $09, $05, $07 dba GymTrashScript - db $0b,$05,$08 + db $0b, $05, $08 dba GymTrashScript - db $07,$07,$09 + db $07, $07, $09 dba GymTrashScript - db $09,$07,$0a + db $09, $07, $0a dba GymTrashScript - db $0b,$07,$0b + db $0b, $07, $0b dba GymTrashScript - db $07,$09,$0c + db $07, $09, $0c dba GymTrashScript - db $09,$09,$0d + db $09, $09, $0d dba GymTrashScript - db $0b,$09,$0e + db $0b, $09, $0e dba GymTrashScript db $FF -CeladonMansion2HiddenObjects: ; 46c85 (11:6c85) - db $05,$00,$04 +CeladonCityHiddenObjects: + db $0f, $30, $4f + dba HiddenItems + db $FF +CeladonHotelHiddenObjects: + db $04, $00, $08 + dba PrintBenchGuyText + db $FF +CeladonMansion2HiddenObjects: + db $05, $00, $04 dba OpenPokemonCenterPC db $FF -CeladonPokecenterHiddenObjects: ; 46c8c (11:6c8c) - db $04,$00,$08 +CeladonMansion5HiddenObjects: + db $00, $03, $36 + dbw $17, $5c7f + db $00, $04, $36 + dbw $17, $5c7f + db $04, $03, $37 + dbw $14, $68f6 + db $FF +CeladonPokecenterHiddenObjects: + db $04, $00, $08 dba PrintBenchGuyText - db $03,$0d,$04 + db $03, $0d, $04 dba OpenPokemonCenterPC db $FF -CeladonGymHiddenObjects: ; 46c99 (11:6c99) - db $0f,$03,$04 - dbw BANK(GymStatues),GymStatues - db $0f,$06,$04 - dbw BANK(GymStatues),GymStatues +CeladonGymHiddenObjects: + db $0f, $03, $04 + dba GymStatues + db $0f, $06, $04 + dba GymStatues db $FF -GameCornerHiddenObjects: ; 46ca6 (11:6ca6) - db $0f,$12,$d0 +GameCornerHiddenObjects: + db $0f, $12, $d0 dba StartSlotMachine - db $0e,$12,$d0 + db $0e, $12, $d0 dba StartSlotMachine - db $0d,$12,$d0 + db $0d, $12, $d0 dba StartSlotMachine - db $0c,$12,$d0 + db $0c, $12, $d0 dba StartSlotMachine - db $0b,$12,$d0 + db $0b, $12, $d0 dba StartSlotMachine - db $0a,$12,$ff ; "Someone's Keys" + db $0a, $12, $ff dba StartSlotMachine - db $0a,$0d,$d0 + db $0a, $0d, $d0 dba StartSlotMachine - db $0b,$0d,$d0 + db $0b, $0d, $d0 dba StartSlotMachine - db $0c,$0d,$fe ; "Out To Lunch" + db $0c, $0d, $fe dba StartSlotMachine - db $0d,$0d,$d0 + db $0d, $0d, $d0 dba StartSlotMachine - db $0e,$0d,$d0 + db $0e, $0d, $d0 dba StartSlotMachine - db $0f,$0d,$d0 + db $0f, $0d, $d0 dba StartSlotMachine - db $0f,$0c,$d0 + db $0f, $0c, $d0 dba StartSlotMachine - db $0e,$0c,$d0 + db $0e, $0c, $d0 dba StartSlotMachine - db $0d,$0c,$d0 + db $0d, $0c, $d0 dba StartSlotMachine - db $0c,$0c,$d0 + db $0c, $0c, $d0 dba StartSlotMachine - db $0b,$0c,$d0 + db $0b, $0c, $d0 dba StartSlotMachine - db $0a,$0c,$d0 + db $0a, $0c, $d0 dba StartSlotMachine - db $0a,$07,$d0 + db $0a, $07, $d0 dba StartSlotMachine - db $0b,$07,$d0 + db $0b, $07, $d0 dba StartSlotMachine - db $0c,$07,$d0 + db $0c, $07, $d0 dba StartSlotMachine - db $0d,$07,$d0 + db $0d, $07, $d0 dba StartSlotMachine - db $0e,$07,$d0 + db $0e, $07, $d0 dba StartSlotMachine - db $0f,$07,$d0 + db $0f, $07, $d0 dba StartSlotMachine - db $0f,$06,$d0 + db $0f, $06, $d0 dba StartSlotMachine - db $0e,$06,$d0 + db $0e, $06, $d0 dba StartSlotMachine - db $0d,$06,$d0 + db $0d, $06, $d0 dba StartSlotMachine - db $0c,$06,$fd ; "Out Of Order" + db $0c, $06, $fd dba StartSlotMachine - db $0b,$06,$d0 + db $0b, $06, $d0 dba StartSlotMachine - db $0a,$06,$d0 + db $0a, $06, $d0 dba StartSlotMachine - db $0a,$01,$d0 + db $0a, $01, $d0 dba StartSlotMachine - db $0b,$01,$d0 + db $0b, $01, $d0 dba StartSlotMachine - db $0c,$01,$d0 + db $0c, $01, $d0 dba StartSlotMachine - db $0d,$01,$d0 + db $0d, $01, $d0 dba StartSlotMachine - db $0e,$01,$d0 + db $0e, $01, $d0 dba StartSlotMachine - db $0f,$01,$d0 + db $0f, $01, $d0 dba StartSlotMachine - db $08,$00,COIN+10 - dbw BANK(HiddenCoins),HiddenCoins - db $10,$01,COIN+10 - dbw BANK(HiddenCoins),HiddenCoins - db $0b,$03,COIN+20 - dbw BANK(HiddenCoins),HiddenCoins - db $0e,$03,COIN+10 - dbw BANK(HiddenCoins),HiddenCoins - db $0c,$04,COIN+10 - dbw BANK(HiddenCoins),HiddenCoins - db $0c,$09,COIN+20 - dbw BANK(HiddenCoins),HiddenCoins - db $0f,$09,COIN+10 - dbw BANK(HiddenCoins),HiddenCoins - db $0e,$10,COIN+10 - dbw BANK(HiddenCoins),HiddenCoins - db $10,$0a,COIN+10 - dbw BANK(HiddenCoins),HiddenCoins - db $07,$0b,COIN+40 - dbw BANK(HiddenCoins),HiddenCoins - db $08,$0f,COIN+100 - dbw BANK(HiddenCoins),HiddenCoins - db $0f,$0c,COIN+10 - dbw BANK(HiddenCoins),HiddenCoins + db $08, $00, COIN + 10 + dba HiddenCoins + db $10, $01, COIN + 10 + dba HiddenCoins + db $0b, $03, COIN + 20 + dba HiddenCoins + db $0e, $03, COIN + 10 + dba HiddenCoins + db $0c, $04, COIN + 10 + dba HiddenCoins + db $0c, $09, COIN + 20 + dba HiddenCoins + db $0f, $09, COIN + 10 + dba HiddenCoins + db $0e, $10, COIN + 10 + dba HiddenCoins + db $10, $0a, COIN + 10 + dba HiddenCoins + db $07, $0b, COIN + 40 + dba HiddenCoins + db $08, $0f, COIN + 100 + dba HiddenCoins + db $0f, $0c, COIN + 10 + dba HiddenCoins db $FF -CeladonHotelHiddenObjects: ; 46dc7 (11:6dc7) - db $03,$0d,$04 +FuchsiaPokecenterHiddenObjects: + db $03, $0d, $04 dba OpenPokemonCenterPC - db $04,$00,$08 + db $04, $00, $04 dba PrintBenchGuyText db $FF -FuchsiaPokecenterHiddenObjects: ; 46dd4 (11:6dd4) - db $03,$0d,$04 - dba OpenPokemonCenterPC - db $04,$00,$04 - dba PrintBenchGuyText +SafariZoneEntranceHiddenObjects: + db $01, $0a, $31 + dba HiddenItems db $FF -FuchsiaGymHiddenObjects: ; 46de1 (11:6de1) - db $0f,$03,$04 - dbw BANK(GymStatues),GymStatues - db $0f,$06,$04 - dbw BANK(GymStatues),GymStatues +FuchsiaGymHiddenObjects: + db $0f, $03, $04 + dba GymStatues + db $0f, $06, $04 + dba GymStatues db $FF -CinnabarGymHiddenObjects: ; 46dee (11:6dee) - db $0d,$11,$04 - dbw BANK(GymStatues),GymStatues - db $07,$0f,$01 +Mansion1HiddenObjects: + db $10, $08, $0a + dba HiddenItems + db $05, $02, $04 + dba Mansion1Script_Switches + db $FF +CinnabarGymHiddenObjects: + db $0d, $11, $04 + dba GymStatues + db $07, $0f, $01 dba PrintCinnabarQuiz - db $01,$0a,$12 + db $01, $0a, $12 dba PrintCinnabarQuiz - db $07,$09,$13 + db $07, $09, $13 dba PrintCinnabarQuiz - db $0d,$09,$14 + db $0d, $09, $14 dba PrintCinnabarQuiz - db $0d,$01,$05 + db $0d, $01, $05 dba PrintCinnabarQuiz - db $07,$01,$16 + db $07, $01, $16 dba PrintCinnabarQuiz db $FF -CinnabarPokecenterHiddenObjects: ; 46e19 (11:6e19) - db $04,$00,$04 - dba PrintBenchGuyText - db $03,$0d,$04 +CinnabarLab4HiddenObjects: + db $04, $00, $04 dba OpenPokemonCenterPC - db $FF -SaffronGymHiddenObjects: ; 46e26 (11:6e26) - db $0f,$09,$04 - dbw BANK(GymStatues),GymStatues - db $FF -MtMoonPokecenterHiddenObjects: ; 46e2d (11:6e2d) - db $04,$00,$08 - dba PrintBenchGuyText - db $03,$0d,$04 + db $04, $02, $04 dba OpenPokemonCenterPC db $FF -RockTunnelPokecenterHiddenObjects: ; 46e3a (11:6e3a) - db $04,$00,$08 - dba PrintBenchGuyText - db $03,$0d,$04 - dba OpenPokemonCenterPC - db $FF -ViridianForestHiddenObjects: ; 46e47 (11:6e47) - db $12,$01,POTION - dbw BANK(HiddenItems),HiddenItems - db $2a,$10,ANTIDOTE - dbw BANK(HiddenItems),HiddenItems - db $FF -MtMoon3HiddenObjects: ; 46e54 (11:6e54) - db $0c,$12,MOON_STONE - dbw BANK(HiddenItems),HiddenItems - db $09,$21,ETHER - dbw BANK(HiddenItems),HiddenItems - db $FF -IndigoPlateauHiddenObjects: ; 46e61 (11:6e61) - db $0d,$08,$ff - dba PrintIndigoPlateauHQText - db $0d,$0b,$00 - dba PrintIndigoPlateauHQText - db $FF -Route25HiddenObjects: ; 46e6e (11:6e6e) - db $03,$26,ETHER - dbw BANK(HiddenItems),HiddenItems - db $01,$0a,ELIXER - dbw BANK(HiddenItems),HiddenItems - db $FF -Route9HiddenObjects: ; 46e7b (11:6e7b) - db $07,$0e,ETHER - dbw BANK(HiddenItems),HiddenItems - db $FF -SSAnne6HiddenObjects: ; 46e82 (11:6e82) - db $05,$0d,$00 - dba PrintTrashText - db $07,$0d,$00 - dba PrintTrashText - db $09,$0d,GREAT_BALL - dbw BANK(HiddenItems),HiddenItems - db $FF -SSAnne10HiddenObjects: ; 46e95 (11:6e95) - db $01,$03,HYPER_POTION - dbw BANK(HiddenItems),HiddenItems - db $FF -Route10HiddenObjects: ; 46e9c (11:6e9c) - db $11,$09,SUPER_POTION - dbw BANK(HiddenItems),HiddenItems - db $35,$10,MAX_ETHER - dbw BANK(HiddenItems),HiddenItems - db $FF -RocketHideout1HiddenObjects: ; 46ea9 (11:6ea9) - db $0f,$15,PP_UP - dbw BANK(HiddenItems),HiddenItems - db $FF -RocketHideout3HiddenObjects: ; 46eb0 (11:6eb0) - db $11,$1b,NUGGET - dbw BANK(HiddenItems),HiddenItems - db $FF -RocketHideout4HiddenObjects: ; 46eb7 (11:6eb7) - db $01,$19,SUPER_POTION - dbw BANK(HiddenItems),HiddenItems - db $FF -SaffronPokecenterHiddenObjects: ; 46ebe (11:6ebe) - db $04,$00,$04 +CinnabarPokecenterHiddenObjects: ; 6cc3 + db $04, $00, $04 dba PrintBenchGuyText - db $03,$0d,$04 + db $03, $0d, $04 dba OpenPokemonCenterPC db $FF -PokemonTower5HiddenObjects: ; 46ecb (11:6ecb) - db $0c,$04,ELIXER - dbw BANK(HiddenItems),HiddenItems - db $FF -Route13HiddenObjects: ; 46ed2 (11:6ed2) - db $0e,$01,PP_UP - dbw BANK(HiddenItems),HiddenItems - db $0d,$10,CALCIUM - dbw BANK(HiddenItems),HiddenItems - db $FF -SafariZoneEntranceHiddenObjects: ; 46edf (11:6edf) - db $01,$0a,NUGGET - dbw BANK(HiddenItems),HiddenItems - db $FF -SafariZoneWestHiddenObjects: ; 46ee6 (11:6ee6) - db $05,$06,REVIVE - dbw BANK(HiddenItems),HiddenItems - db $FF -SilphCo5FHiddenObjects: ; 46eed (11:6eed) - db $03,$0c,ELIXER - dbw BANK(HiddenItems),HiddenItems - db $FF -SilphCo9FHiddenObjects: ; 46ef4 (11:6ef4) - db $0f,$02,MAX_POTION - dbw BANK(HiddenItems),HiddenItems - db $FF -CopycatsHouse2FHiddenObjects: ; 46efb (11:6efb) - db $01,$01,NUGGET - dbw BANK(HiddenItems),HiddenItems - db $FF -UnknownDungeon1HiddenObjects: ; 46f02 (11:6f02) - db $0b,$0e,RARE_CANDY - dbw BANK(HiddenItems),HiddenItems - db $FF -UnknownDungeon3HiddenObjects: ; 46f09 (11:6f09) - db $03,$1b,ULTRA_BALL - dbw BANK(HiddenItems),HiddenItems - db $FF -PowerPlantHiddenObjects: ; 46f10 (11:6f10) - db $10,$11,MAX_ELIXER - dbw BANK(HiddenItems),HiddenItems - db $01,$0c,PP_UP - dbw BANK(HiddenItems),HiddenItems - db $FF -SeafoamIslands3HiddenObjects: ; 46f1d (11:6f1d) - db $0f,$0f,NUGGET - dbw BANK(HiddenItems),HiddenItems - db $FF -SeafoamIslands5HiddenObjects: ; 46f24 (11:6f24) - db $11,$19,ULTRA_BALL - dbw BANK(HiddenItems),HiddenItems - db $FF -Mansion1HiddenObjects: ; 46f2b (11:6f2b) - db $10,$08,MOON_STONE - dbw BANK(HiddenItems),HiddenItems - db $05,$02,$04 - dba Mansion1Script_Switches - db $FF -Mansion2HiddenObjects: ; 46f38 (11:6f38) - db $0b,$02,$04 - dba Mansion2Script_Switches - db $FF -Mansion3HiddenObjects: ; 46f3f (11:6f3f) - db $09,$01,MAX_REVIVE - dbw BANK(HiddenItems),HiddenItems - db $05,$0a,$04 - dba Mansion3Script_Switches - db $FF -Mansion4HiddenObjects: ; 46f4c (11:6f4c) - db $09,$01,RARE_CANDY - dbw BANK(HiddenItems),HiddenItems - db $03,$14,$04 - dba Mansion4Script_Switches - db $19,$12,$04 - dba Mansion4Script_Switches - db $FF -Route23HiddenObjects: ; 46f5f (11:6f5f) - db $2c,$09,FULL_RESTORE - dbw BANK(HiddenItems),HiddenItems - db $46,$13,ULTRA_BALL - dbw BANK(HiddenItems),HiddenItems - db $5a,$08,MAX_ETHER - dbw BANK(HiddenItems),HiddenItems - db $FF -VictoryRoad2HiddenObjects: ; 46f72 (11:6f72) - db $02,$05,ULTRA_BALL - dbw BANK(HiddenItems),HiddenItems - db $07,$1a,FULL_RESTORE - dbw BANK(HiddenItems),HiddenItems - db $FF -Unused6FHiddenObjects: ; 46f7f (11:6f7f) - db $0b,$0e,MAX_ELIXER - dbw BANK(HiddenItems),HiddenItems - db $FF -BillsHouseHiddenObjects: ; 46f86 (11:6f86) - db $04,$01,$04 - dba BillsHousePC - db $FF -ViridianCityHiddenObjects: ; 46f8d (11:6f8d) - db $04,$0e,POTION - dbw BANK(HiddenItems),HiddenItems - db $FF -SafariZoneRestHouse2HiddenObjects: ; 46f94 (11:6f94) - db $04,$00,$08 - dba PrintBenchGuyText - db $03,$0d,$04 - dba OpenPokemonCenterPC - db $FF -SafariZoneRestHouse3HiddenObjects: ; 46fa1 (11:6fa1) - db $04,$00,$08 - dba PrintBenchGuyText - db $03,$0d,$04 - dba OpenPokemonCenterPC - db $FF -SafariZoneRestHouse4HiddenObjects: ; 46fae (11:6fae) - db $04,$00,$08 - dba PrintBenchGuyText - db $03,$0d,$04 - dba OpenPokemonCenterPC - db $FF -Route15GateUpstairsHiddenObjects: ; 46fbb (11:6fbb) - db $02,$01,$04 - dba Route15GateLeftBinoculars - db $FF -LavenderHouse1HiddenObjects: ; 46fc2 (11:6fc2) - db $01,$00,$00 - dba PrintMagazinesText - db $01,$01,$00 - dba PrintMagazinesText - db $01,$07,$00 - dba PrintMagazinesText - db $FF -CeladonMansion5HiddenObjects: ; 46fd5 (11:6fd5) - db $00,$03,(LinkCableHelp_id - TextPredefs) / 2 + 1 - dba PrintBlackboardLinkCableText - db $00,$04,(LinkCableHelp_id - TextPredefs) / 2 + 1 - dba PrintBlackboardLinkCableText - db $04,$03,(TMNotebook_id - TextPredefs) / 2 + 1 - dba PrintNotebookText - db $FF -FightingDojoHiddenObjects: ; 46fe8 (11:6fe8) - db $09,$03,$04 - dba PrintFightingDojoText - db $09,$06,$04 - dba PrintFightingDojoText - db $00,$04,$04 - dba PrintFightingDojoText2 - db $00,$05,$04 - dba PrintFightingDojoText3 - db $FF -IndigoPlateauLobbyHiddenObjects: ; 47001 (11:7001) - db $07,$0f,$04 - dba OpenPokemonCenterPC - db $FF -CinnabarLab4HiddenObjects: ; 47008 (11:7008) - db $04,$00,$04 - dba OpenPokemonCenterPC - db $04,$02,$04 - dba OpenPokemonCenterPC - db $FF -BikeShopHiddenObjects: ; 47015 (11:7015) - db $00,$01,$d0 - dba PrintNewBikeText - db $01,$02,$d0 - dba PrintNewBikeText - db $02,$01,$d0 - dba PrintNewBikeText - db $02,$03,$d0 - dba PrintNewBikeText - db $04,$00,$d0 - dba PrintNewBikeText - db $05,$01,$d0 - dba PrintNewBikeText - db $FF -Route11HiddenObjects: ; 4703a (11:703a) - db $05,$30,ESCAPE_ROPE - dbw BANK(HiddenItems),HiddenItems - db $FF -Route12HiddenObjects: ; 47041 (11:7041) - db $3f,$02,HYPER_POTION - dbw BANK(HiddenItems),HiddenItems - db $FF -SilphCo11FHiddenObjects: ; 47048 (11:7048) - db $0c,$0a,$04 - dba OpenPokemonCenterPC - db $FF -Route17HiddenObjects: ; 4704f (11:704f) - db $0e,$0f,RARE_CANDY - dbw BANK(HiddenItems),HiddenItems - db $2d,$08,FULL_RESTORE - dbw BANK(HiddenItems),HiddenItems - db $48,$11,PP_UP - dbw BANK(HiddenItems),HiddenItems - db $5b,$04,MAX_REVIVE - dbw BANK(HiddenItems),HiddenItems - db $79,$08,MAX_ELIXER - dbw BANK(HiddenItems),HiddenItems - db $FF -UndergroundPathNsHiddenObjects: ; 4706e (11:706e) - db $04,$03,FULL_RESTORE - dbw BANK(HiddenItems),HiddenItems - db $22,$04,X_SPECIAL - dbw BANK(HiddenItems),HiddenItems - db $FF -UndergroundPathWeHiddenObjects: ; 4707b (11:707b) - db $02,$0c,NUGGET - dbw BANK(HiddenItems),HiddenItems - db $05,$15,ELIXER - dbw BANK(HiddenItems),HiddenItems - db $FF -CeladonCityHiddenObjects: ; 47088 (11:7088) - db $0f,$30,PP_UP - dbw BANK(HiddenItems),HiddenItems - db $FF -SeafoamIslands4HiddenObjects: ; 4708f (11:708f) - db $10,$09,MAX_ELIXER - dbw BANK(HiddenItems),HiddenItems - db $FF -VermilionCityHiddenObjects: ; 47096 (11:7096) - db $0b,$0e,MAX_ETHER - dbw BANK(HiddenItems),HiddenItems - db $FF -CeruleanCityHiddenObjects: ; 4709d (11:709d) - db $08,$0f,RARE_CANDY - dbw BANK(HiddenItems),HiddenItems - db $FF -Route4HiddenObjects: ; 470a4 (11:70a4) - db $03,$28,GREAT_BALL - dbw BANK(HiddenItems),HiddenItems - db $FF +; 6cd0 diff --git a/engine/bank3c.asm b/engine/bank3c.asm index cadfe1cf..f5f9d696 100644 --- a/engine/bank3c.asm +++ b/engine/bank3c.asm @@ -157,7 +157,7 @@ INCLUDE "engine/overworld/advance_player_sprite.asm" ResetStatusAndHalveMoneyOnBlackout:: ; f0274 (3c:4274) ; Reset player status on blackout. xor a - ld [wd435],a + ld [wd435], a xor a ; gamefreak copypasting functions (double xor a) ld [wBattleResult], a ld [wWalkBikeSurfState], a @@ -204,33 +204,33 @@ ResetStatusAndHalveMoneyOnBlackout:: ; f0274 (3c:4274) predef_jump HealParty Func_f02da:: ; f02da (3c:42da) - ld a,[wCurMap] + ld a, [wCurMap] cp VERMILION_GYM ; ??? new thing about verm gym? - jr z,.asm_f02ee - ld c,a - ld hl,Pointer_f02fa + jr z, .asm_f02ee + ld c, a + ld hl, Pointer_f02fa .asm_f02e5 - ld a,[hli] + ld a, [hli] cp c - jr z,.asm_f02f4 - cp a,$ff - jr nz,.asm_f02e5 + jr z, .asm_f02f4 + cp a, $ff + jr nz, .asm_f02e5 ret .asm_f02ee - ld hl,wd126 - set 6,[hl] + ld hl, wd126 + set 6, [hl] ret .asm_f02f4 - ld hl,wd126 - set 5,[hl] + ld hl, wd126 + set 5, [hl] ret Pointer_f02fa:: ; f02fa (3c:42fa) - db $cf,$d0,$d1,$d2,$d3,$d4 - db $d5,$e9,$ea,$eb,$d6,$d7 - db $d8,$a5,$a6,$87,$c7,$ca - db $c6,$6c,$c2,$71,$f5,$f6 - db $f7,$ff + db $cf, $d0, $d1, $d2, $d3, $d4 + db $d5, $e9, $ea, $eb, $d6, $d7 + db $d8, $a5, $a6, $87, $c7, $ca + db $c6, $6c, $c2, $71, $f5, $f6 + db $f7, $ff BeachHouse_GFX:: ; f0314 (3c:4314) INCBIN "gfx/tilesets/beachhouse.2bpp" @@ -242,40 +242,44 @@ Func_f0a54:: ; f0a54 (3c:4a54) ret Func_f0a55:: ; f0a55 (3c:4a55) - ld hl,Pointer_f0a76 ; 3c:4a76 + ld hl, Pointer_f0a76 ; 3c:4a76 .loop - ld a,[hli] - cp a,$ff + ld a, [hli] + cp a, $ff ret z - ld b,a - ld a,[wCurMap] + ld b, a + ld a, [wCurMap] cp b - jr z,.asm_f0a68 + jr z, .asm_f0a68 inc hl inc hl inc hl jr .loop .asm_f0a68 - ld a,[hli] - ld c,a - ld b,$0 - ld a,[hli] - ld h,[hl] - ld l,a - ld de,wMissableObjectList + ld a, [hli] + ld c, a + ld b, $0 + ld a, [hli] + ld h, [hl] + ld l, a + ld de, wMissableObjectList call CopyData ret Pointer_f0a76:: ; f0a76 (3c:4a76) - db $27,$07,$7b,$4a,$ff - db $01,$ec,$02,$ed,$03,$ee,$ff + db $27, $07, $7b, $4a, $ff + db $01, $ec, $02, $ed, $03, $ee, $ff - dr $f0a82,$f220e + dr $f0a82, $f220e BeachHouse_h: ; f220e (3c:620e) ;INCLUDE "data/mapHeaders/beach_house.asm" - dr $f220e,$f24ae + dr $f220e, $f24ae Func_f24ae: ; f24ae (3c:64ae) - dr $f24ae,$f25f8 + dr $f24ae, $f25f8 CheckForHiddenObject:: ; f25f8 (3c:65f8) - dr $f25f8,$f4000 \ No newline at end of file + dr $f25f8, $f268d +INCLUDE "data/hidden_objects.asm" + dr $f2cd0, $f2d0c +Func_f2d0c: + dr $f2d0c, $f2db8 diff --git a/engine/game_corner_slots2.asm b/engine/game_corner_slots2.asm index 1bcbefb1..3f7c3f71 100755 --- a/engine/game_corner_slots2.asm +++ b/engine/game_corner_slots2.asm @@ -6,13 +6,13 @@ AbleToPlaySlotsCheck: ; 2fdfd (b:7dfd) predef GetQuantityOfItemInBag ld a, b and a - ld b, GameCornerCoinCaseText_id ; - TextPredefs) / 2 + 1 + ld b, (GameCornerCoinCaseText_id - TextPredefs) / 2 + 1 jr z, .printCoinCaseRequired ld hl, wPlayerCoins ld a, [hli] or [hl] jr nz, .done ; able to play - ld b, GameCornerNoCoinsText_id ; - TextPredefs) / 2 + 1 + ld b, (GameCornerNoCoinsText_id - TextPredefs) / 2 + 1 .printCoinCaseRequired call EnableAutoTextBoxDrawing ld a, b diff --git a/engine/hidden_object_functions17.asm b/engine/hidden_object_functions17.asm index 90b26578..41f20218 100755 --- a/engine/hidden_object_functions17.asm +++ b/engine/hidden_object_functions17.asm @@ -1,4 +1,4 @@ -PrintRedsNESText: ; 5db79 (17:5b79) +PrintRedsNESText: ; 5dbae (17:5bae) call EnableAutoTextBoxDrawing tx_pre_jump RedBedroomSNESText @@ -22,7 +22,10 @@ Route15GateLeftBinoculars: ; 5db8f (17:5b8f) ld a, ARTICUNO ld [wcf91], a call PlayCry - jp DisplayMonFrontSpriteInBox + call DisplayMonFrontSpriteInBox + xor a + ld [H_AUTOBGTRANSFERENABLED], a + ret Route15UpstairsBinocularsText: ; 5dba8 (17:5ba8) TX_FAR _Route15UpstairsBinocularsText @@ -52,6 +55,30 @@ KabutopsFossilText: ; 5dbd4 (17:5bd4) TX_FAR _KabutopsFossilText db "@" +FanClubPicture1: ; 5dbad (17:5c12) + ld a, RAPIDASH + ld [wcf91], a + call DisplayMonFrontSpriteInBox + call EnableAutoTextBoxDrawing + tx_pre FanClubPicture1Text + ret + +FanClubPicture1Text: ; 5dbbe (17:5bbe) + TX_FAR _FanClubPicture1Text + db "@" + +FanClubPicture2: ; 5dbad (17:5c28) + ld a, FEAROW + ld [wcf91], a + call DisplayMonFrontSpriteInBox + call EnableAutoTextBoxDrawing + tx_pre FanClubPicture2Text + ret + +FanClubPicture2Text: ; 5dc39 (17:5c39) + TX_FAR _FanClubPicture2Text + db "@" + DisplayMonFrontSpriteInBox: ; 5dbd9 (17:5bd9) ; Displays a pokemon's front sprite in a pop-up window. ; [wcf91] = pokemon interal id number @@ -110,8 +137,7 @@ LinkCableHelp: ; 5dc29 (17:5c29) ld hl, wd730 set 6, [hl] coord hl, 0, 0 - ld b, $8 - ld c, $d + lb bc, $8, $d call TextBoxBorder coord hl, 2, 2 ld de, HowToLinkText @@ -339,53 +365,17 @@ GymTrashScript: ; 5ddfc (17:5dfc) .openFirstLock ; Next can is trying for the second switch. SetEvent EVENT_1ST_LOCK_OPENED - - ld hl, GymTrashCans - ld a, [wGymTrashCanIndex] - ; * 5 - ld b, a - add a - add a - add b - - ld d, 0 - ld e, a - add hl, de - ld a, [hli] - -; There is a bug in this code. It should calculate a value in the range [0, 3] -; but if the mask and random number don't have any 1 bits in common, then -; the result of the AND will be 0. When 1 is subtracted from that, the value -; will become $ff. This will result in 255 being added to hl, which will cause -; hl to point to one of the zero bytes that pad the end of the ROM bank. -; Trash can 0 was intended to be able to have the second lock only when the -; first lock was in trash can 1 or 3. However, due to this bug, trash can 0 can -; have the second lock regardless of which trash can had the first lock. - - ld [hGymTrashCanRandNumMask], a - push hl - call Random - swap a - ld b, a - ld a, [hGymTrashCanRandNumMask] - and b - dec a - pop hl - - ld d, 0 - ld e, a - add hl, de - ld a, [hl] - and $f - ld [wSecondLockTrashCanIndex], a - + callab Func_f2d0c tx_pre_id VermilionGymTrashSuccesText1 jr .done .trySecondLock - ld a, [wSecondLockTrashCanIndex] - ld b, a ld a, [wGymTrashCanIndex] + ld b, a + ld a, [wSecondLockTrashCanIndex] + cp b + jr z, .openSecondLock + ld a, [wSecondLockTrashCanIndex + 1] cp b jr z, .openSecondLock @@ -413,25 +403,24 @@ GymTrashScript: ; 5ddfc (17:5dfc) GymTrashCans: ; 5de7d (17:5e7d) ; byte 0: mask for random number ; bytes 1-4: indices of the trash cans that can have the second lock -; (but see the comment above explaining a bug regarding this) ; Note that the mask is simply the number of valid trash can indices that -; follow. The remaining bytes are filled with 0 to pad the length of each entry +; follow. The remaining bytes are filled with -1 to pad the length of each entry ; to 5 bytes. - 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 2, 1, 3, -1, -1 ; 0 + db 3, 0, 2, 4, -1 ; 1 + db 2, 1, 5, -1, -1 ; 2 + db 3, 0, 4, 6, -1 ; 3 db 4, 1, 3, 5, 7 ; 4 - db 3, 2, 4, 8, 0 ; 5 - db 3, 3, 7, 9, 0 ; 6 + db 3, 2, 4, 8, -1 ; 5 + db 3, 3, 7, 9, -1 ; 6 db 4, 4, 6, 8, 10 ; 7 - db 3, 5, 7, 11, 0 ; 8 - db 3, 6, 10, 12, 0 ; 9 + db 3, 5, 7, 11, -1 ; 8 + db 3, 6, 10, 12, -1 ; 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 + db 3, 8, 10, 14, -1 ; 11 + db 2, 9, 13, -1, -1 ; 12 + db 3, 10, 12, 14, -1 ; 13 + db 2, 11, 13, -1, -1 ; 14 ; 5dec8 VermilionGymTrashSuccesText1: ; 5dec8 (17:5ec8) diff --git a/engine/hidden_object_functions18.asm b/engine/hidden_object_functions18.asm index 9d19dd7c..443f8369 100755 --- a/engine/hidden_object_functions18.asm +++ b/engine/hidden_object_functions18.asm @@ -73,35 +73,35 @@ PrintBenchGuyText: ; 6245d (18:645d) ; format: db map id, player sprite facing direction, text id of PredefTextIDPointerTable BenchGuyTextPointers: ; 6247e (18:647e) db VIRIDIAN_POKECENTER, SPRITE_FACING_LEFT - db $11 ; (ViridianCityPokecenterBenchGuyText_id - TextPredefs) / 2 + 1 + db_tx_pre ViridianCityPokecenterBenchGuyText db PEWTER_POKECENTER, SPRITE_FACING_LEFT - db $12 ; (PewterCityPokecenterBenchGuyText_id - TextPredefs) / 2 + 1 + db_tx_pre PewterCityPokecenterBenchGuyText db CERULEAN_POKECENTER, SPRITE_FACING_LEFT - db $13 ; (CeruleanCityPokecenterBenchGuyText_id - TextPredefs) / 2 + 1 + db_tx_pre CeruleanCityPokecenterBenchGuyText db LAVENDER_POKECENTER, SPRITE_FACING_LEFT - db $14 ; (LavenderCityPokecenterBenchGuyText_id - TextPredefs) / 2 + 1 + db_tx_pre LavenderCityPokecenterBenchGuyText db VERMILION_POKECENTER, SPRITE_FACING_LEFT - db $15 ; (VermilionCityPokecenterBenchGuyText_id - TextPredefs) / 2 + 1 + db_tx_pre VermilionCityPokecenterBenchGuyText db CELADON_POKECENTER, SPRITE_FACING_LEFT - db $16 ; (CeladonCityPokecenterBenchGuyText_id - TextPredefs) / 2 + 1 + db_tx_pre CeladonCityPokecenterBenchGuyText db CELADON_HOTEL, SPRITE_FACING_LEFT - db $17 ; (CeladonCityHotelText_id - TextPredefs) / 2 + 1 + db_tx_pre CeladonCityHotelText db FUCHSIA_POKECENTER, SPRITE_FACING_LEFT - db $18 ; (FuchsiaCityPokecenterBenchGuyText_id - TextPredefs) / 2 + 1 + db_tx_pre FuchsiaCityPokecenterBenchGuyText db CINNABAR_POKECENTER, SPRITE_FACING_LEFT - db $19 ; (CinnabarIslandPokecenterBenchGuyText_id - TextPredefs) / 2 + 1 + db_tx_pre CinnabarIslandPokecenterBenchGuyText db SAFFRON_POKECENTER, SPRITE_FACING_LEFT - db $1a ; (SaffronCityPokecenterBenchGuyText_id - TextPredefs) / 2 + 1 + db_tx_pre SaffronCityPokecenterBenchGuyText db MT_MOON_POKECENTER, SPRITE_FACING_LEFT - db $1b ; (MtMoonPokecenterBenchGuyText_id - TextPredefs) / 2 + 1 + db_tx_pre MtMoonPokecenterBenchGuyText db ROCK_TUNNEL_POKECENTER, SPRITE_FACING_LEFT - db $1c ; (RockTunnelPokecenterBenchGuyText_id - TextPredefs) / 2 + 1 + db_tx_pre RockTunnelPokecenterBenchGuyText db SAFARI_ZONE_REST_HOUSE_2,SPRITE_FACING_LEFT - db $1d + db_tx_pre UnusedBenchGuyText1 db SAFARI_ZONE_REST_HOUSE_3,SPRITE_FACING_LEFT - db $1e + db_tx_pre UnusedBenchGuyText2 db SAFARI_ZONE_REST_HOUSE_4,SPRITE_FACING_LEFT - db $1f + db_tx_pre UnusedBenchGuyText3 db $FF ViridianCityPokecenterBenchGuyText: ; 624a3 (18:64a3) diff --git a/engine/overworld/hidden_items.asm b/engine/overworld/hidden_items.asm index f7f81070..39bb385d 100755 --- a/engine/overworld/hidden_items.asm +++ b/engine/overworld/hidden_items.asm @@ -9,7 +9,7 @@ HiddenItems: ; 76688 (1d:6688) predef FlagActionPredef ld a, c and a - ret nz + jr nz, .asm_75fa5 call EnableAutoTextBoxDrawing ld a, 1 ld [wDoNotWaitForButtonPressAfterDisplayingText], a @@ -18,6 +18,11 @@ HiddenItems: ; 76688 (1d:6688) call GetItemName tx_pre_jump FoundHiddenItemText +.asm_75fa5 + ld a, $ff + ld [hItemAlreadyFound], a + ret + INCLUDE "data/hidden_item_coords.asm" FoundHiddenItemText: ; 7675b (1d:675b) @@ -54,7 +59,7 @@ HiddenCoins: ; 76799 (1d:6799) predef GetQuantityOfItemInBag ld a, b and a - ret z + jr z, .asm_760ce ld hl, HiddenCoinCoords call FindHiddenItemOrCoinsIndex ld [wHiddenItemOrCoinsIndex], a @@ -65,7 +70,7 @@ HiddenCoins: ; 76799 (1d:6799) predef FlagActionPredef ld a, c and a - ret nz + jr nz, .asm_760ce xor a ld [hUnusedCoinsByte], a ld [hCoins], a @@ -79,6 +84,12 @@ HiddenCoins: ; 76799 (1d:6799) cp 40 jr z, .bcd20 jr .bcd100 + +.asm_760ce + ld a, $ff + ld [hItemAlreadyFound], a + ret + .bcd10 ld a, $10 ld [hCoins + 1], a diff --git a/home.asm b/home.asm index 3d8db84f..e5a84d9b 100644 --- a/home.asm +++ b/home.asm @@ -4977,72 +4977,77 @@ SetMapTextPointer:: ; 3f54 (0:3f54) ret TextPredefs:: ; 3f67 (0:3f67) - dr $3f67,$4000 -; add_tx_pre CardKeySuccessText ; 01 -; add_tx_pre CardKeyFailText ; 02 -; add_tx_pre RedBedroomPC ; 03 -; add_tx_pre RedBedroomSNESText ; 04 -; add_tx_pre PushStartText ; 05 -; add_tx_pre SaveOptionText ; 06 -; add_tx_pre StrengthsAndWeaknessesText ; 07 -; add_tx_pre OakLabEmailText ; 08 -; add_tx_pre AerodactylFossilText ; 09 -; add_tx_pre Route15UpstairsBinocularsText ; 0A -; add_tx_pre KabutopsFossilText ; 0B -; add_tx_pre GymStatueText1 ; 0C -; add_tx_pre GymStatueText2 ; 0D -; add_tx_pre BookcaseText ; 0E -; add_tx_pre ViridianCityPokecenterBenchGuyText ; 0F -; add_tx_pre PewterCityPokecenterBenchGuyText ; 10 -; add_tx_pre CeruleanCityPokecenterBenchGuyText ; 11 -; add_tx_pre LavenderCityPokecenterBenchGuyText ; 12 -; add_tx_pre VermilionCityPokecenterBenchGuyText ; 13 -; add_tx_pre CeladonCityPokecenterBenchGuyText ; 14 -; add_tx_pre CeladonCityHotelText ; 15 -; add_tx_pre FuchsiaCityPokecenterBenchGuyText ; 16 -; add_tx_pre CinnabarIslandPokecenterBenchGuyText ; 17 -; add_tx_pre SaffronCityPokecenterBenchGuyText ; 18 -; add_tx_pre MtMoonPokecenterBenchGuyText ; 19 -; add_tx_pre RockTunnelPokecenterBenchGuyText ; 1A -; add_tx_pre UnusedBenchGuyText1 ; 1B -; add_tx_pre UnusedBenchGuyText2 ; 1C -; add_tx_pre UnusedBenchGuyText3 ; 1D -; add_tx_pre TerminatorText_62508 ; 1E -; add_tx_pre PredefText1f ; 1F -; add_tx_pre ViridianSchoolNotebook ; 20 -; add_tx_pre ViridianSchoolBlackboard ; 21 -; add_tx_pre JustAMomentText ; 22 -; add_tx_pre PredefText23 ; 23 -; add_tx_pre FoundHiddenItemText ; 24 -; add_tx_pre HiddenItemBagFullText ; 25 -; add_tx_pre VermilionGymTrashText ; 26 -; add_tx_pre IndigoPlateauHQText ; 27 -; add_tx_pre GameCornerOutOfOrderText ; 28 -; add_tx_pre GameCornerOutToLunchText ; 29 -; add_tx_pre GameCornerSomeonesKeysText ; 2A -; add_tx_pre FoundHiddenCoinsText ; 2B -; add_tx_pre DroppedHiddenCoinsText ; 2C -; add_tx_pre BillsHouseMonitorText ; 2D -; add_tx_pre BillsHouseInitiatedText ; 2E -; add_tx_pre BillsHousePokemonList ; 2F -; add_tx_pre MagazinesText ; 30 -; add_tx_pre CinnabarGymQuiz ; 31 -; add_tx_pre GameCornerNoCoinsText ; 32 -; add_tx_pre GameCornerCoinCaseText ; 33 -; add_tx_pre LinkCableHelp ; 34 -; add_tx_pre TMNotebook ; 35 -; add_tx_pre FightingDojoText ; 36 -; add_tx_pre FightingDojoText_52a10 ; 37 -; add_tx_pre FightingDojoText_52a1d ; 38 -; add_tx_pre NewBicycleText ; 39 -; add_tx_pre IndigoPlateauStatues ; 3A -; add_tx_pre VermilionGymTrashSuccesText1 ; 3B -; add_tx_pre VermilionGymTrashSuccesText2 ; 3C -; add_tx_pre VermilionGymTrashSuccesText3 ; 3D -; add_tx_pre VermilionGymTrashFailText ; 3E -; add_tx_pre TownMapText ; 3F -; add_tx_pre BookOrSculptureText ; 40 -; add_tx_pre ElevatorText ; 41 -; add_tx_pre PokemonStuffText ; 42 -; add_tx_pre $7a9b ; 43 -; add_tx_pre $7ad3 ; 44 +const_value = 1 + + add_tx_pre CardKeySuccessText ; 01 + add_tx_pre CardKeyFailText ; 02 + add_tx_pre RedBedroomPCText ; 03 + add_tx_pre RedBedroomSNESText ; 04 + add_tx_pre PushStartText ; 05 + add_tx_pre SaveOptionText ; 06 + add_tx_pre StrengthsAndWeaknessesText ; 07 + add_tx_pre OakLabEmailText ; 08 + add_tx_pre AerodactylFossilText ; 09 + add_tx_pre Route15UpstairsBinocularsText ; 0A + add_tx_pre KabutopsFossilText ; 0B + add_tx_pre FanClubPicture1Text ; 0C + add_tx_pre FanClubPicture2Text ; 0D + add_tx_pre GymStatueText1 ; 0E + add_tx_pre GymStatueText2 ; 0F + add_tx_pre BookcaseText ; 10 + add_tx_pre ViridianCityPokecenterBenchGuyText ; 11 + add_tx_pre PewterCityPokecenterBenchGuyText ; 12 + add_tx_pre CeruleanCityPokecenterBenchGuyText ; 13 + add_tx_pre LavenderCityPokecenterBenchGuyText ; 14 + add_tx_pre VermilionCityPokecenterBenchGuyText ; 15 + add_tx_pre CeladonCityPokecenterBenchGuyText ; 16 + add_tx_pre CeladonCityHotelText ; 17 + add_tx_pre FuchsiaCityPokecenterBenchGuyText ; 18 + add_tx_pre CinnabarIslandPokecenterBenchGuyText ; 19 + add_tx_pre SaffronCityPokecenterBenchGuyText ; 1A + add_tx_pre MtMoonPokecenterBenchGuyText ; 1B + add_tx_pre RockTunnelPokecenterBenchGuyText ; 1C + add_tx_pre UnusedBenchGuyText1 ; 1D + add_tx_pre UnusedBenchGuyText2 ; 1E + add_tx_pre UnusedBenchGuyText3 ; 1F + add_tx_pre UnusedPredefText ; 20 + add_tx_pre PokemonCenterPCText ; 21 + add_tx_pre ViridianSchoolNotebook ; 22 + add_tx_pre ViridianSchoolBlackboard ; 23 + ; add_tx_pre FakeTextPredef22 + ; add_tx_pre FakeTextPredef23 + add_tx_pre JustAMomentText ; 24 + add_tx_pre OpenBillsPCText ; 25 + add_tx_pre FoundHiddenItemText ; 26 + add_tx_pre HiddenItemBagFullText ; 27 + add_tx_pre VermilionGymTrashText ; 28 + add_tx_pre IndigoPlateauHQText ; 29 + add_tx_pre GameCornerOutOfOrderText ; 2A + add_tx_pre GameCornerOutToLunchText ; 2B + add_tx_pre GameCornerSomeonesKeysText ; 2C + add_tx_pre FoundHiddenCoinsText ; 2D + add_tx_pre DroppedHiddenCoinsText ; 2E + add_tx_pre BillsHouseMonitorText ; 2F + add_tx_pre BillsHouseInitiatedText ; 30 + add_tx_pre BillsHousePokemonList ; 31 + add_tx_pre MagazinesText ; 32 + add_tx_pre CinnabarGymQuiz ; 33 + add_tx_pre GameCornerNoCoinsText ; 34 + add_tx_pre GameCornerCoinCaseText ; 35 + add_tx_pre LinkCableHelp ; 36 + add_tx_pre TMNotebook ; 37 + add_tx_pre FightingDojoText ; 38 + add_tx_pre EnemiesOnEverySideText ; 39 + add_tx_pre WhatGoesAroundComesAroundText ; 3A + add_tx_pre NewBicycleText ; 3B + add_tx_pre IndigoPlateauStatues ; 3C XXX unused + add_tx_pre VermilionGymTrashSuccesText1 ; 3D + add_tx_pre VermilionGymTrashSuccesText2 ; 3E + add_tx_pre VermilionGymTrashSuccesText3 ; 3F + add_tx_pre VermilionGymTrashFailText ; 40 + add_tx_pre TownMapText ; 41 + add_tx_pre BookOrSculptureText ; 42 + add_tx_pre ElevatorText ; 43 + add_tx_pre PokemonStuffText ; 44 + + ; dr $3f67,$4000 diff --git a/hram.asm b/hram.asm index 21dbee05..eeb425f6 100644 --- a/hram.asm +++ b/hram.asm @@ -309,6 +309,8 @@ hCoordsInFrontOfPlayerMatch EQU $FFEA hSpriteAnimFrameCounter EQU $FFEA +hItemAlreadyFound EQU $FFEB + H_WHOSETURN EQU $FFF3 ; 0 on player’s turn, 1 on enemy’s turn hLCDCPointer EQU $FFF4 diff --git a/macros.asm b/macros.asm index c4318278..f153e379 100644 --- a/macros.asm +++ b/macros.asm @@ -342,11 +342,11 @@ add_tx_pre: MACRO ENDM db_tx_pre: MACRO - db \1_id + db (\1_id - TextPredefs) / 2 + 1 ENDM tx_pre_id: MACRO - ld a, \1_id ; - TextPredefs) / 2 + 1 + ld a, (\1_id - TextPredefs) / 2 + 1 ENDM tx_pre: MACRO diff --git a/main.asm b/main.asm index b32935de..a106b3a3 100755 --- a/main.asm +++ b/main.asm @@ -674,7 +674,9 @@ SECTION "bank11",ROMX,BANK[$11] INCLUDE "engine/pokedex_rating.asm" - dr $44251,$45077 + dr $44251,$443b7 +Mansion1Script_Switches: + dr $443b7,$45077 LoadSpinnerArrowTiles: ; 45077 (11:5077) dr $45077,$46bf3 @@ -850,12 +852,8 @@ VendingMachineMenu: ; 74726 (1d:4726) dr $74726,$75dfe PKMNLeaguePC: ; 75dfe (1d:5dfe) dr $75dfe,$75f74 -HiddenItems: ; 75f74 (1d:5f74) - dr $75f74,$75faa -INCLUDE "data/hidden_item_coords.asm" - - dr $76050,$76177 +INCLUDE "engine/overworld/hidden_items.asm" SECTION "bank1E",ROMX,BANK[$1E] -- cgit v1.3.1-sl0p From e933fb3639329a40576b2878344d647fe42218cb Mon Sep 17 00:00:00 2001 From: pikalaxalt Date: Wed, 25 May 2016 10:20:45 -0400 Subject: More pikachu engine stuff --- engine/bank3f.asm | 149 ++++++++++++++++++++++++++++++++++++++++++++++++++---- macros.asm | 11 ++++ 2 files changed, 149 insertions(+), 11 deletions(-) (limited to 'macros.asm') diff --git a/engine/bank3f.asm b/engine/bank3f.asm index 170bafb4..f958de12 100644 --- a/engine/bank3f.asm +++ b/engine/bank3f.asm @@ -3247,7 +3247,7 @@ Func_fd814: ret Func_fd831: - ld hl, vChars1 + $7f * $10 + ld hl, vNPCSprites2 + $7f * $10 ld de, LedgeHoppingShadowGFX_3F lb bc, BANK(LedgeHoppingShadowGFX_3F), (LedgeHoppingShadowGFX_3FEnd - LedgeHoppingShadowGFX_3F) / 8 jp CopyVideoDataDoubleAlternate @@ -3257,13 +3257,13 @@ INCBIN "gfx/ledge_hopping_shadow.1bpp" LedgeHoppingShadowGFX_3FEnd: Func_fd845: - ld hl, vChars1 + $7e * $10 + ld hl, vNPCSprites2 + $7e * $10 ld de, GFX_fd86b lb bc, BANK(GFX_fd86b), 1 jp CopyVideoDataDoubleAlternate Func_fd851: - ld hl, vChars0 + $c * $10 + ld hl, vNPCSprites + $c * $10 ld a, 3 .asm_fd856 push af @@ -3283,19 +3283,146 @@ GFX_fd86b: INCBIN "gfx/unknown_fd86b.2bpp" Func_fd8ab: ; fd8ab (3f:58ab) - dr $fd8ab, $fd8d4 + ld de, PikachuSprite + lb bc, BANK(PikachuSprite), (SandshrewSprite - PikachuSprite) / 32 + ld hl, vNPCSprites + $c * $10 + push bc + call CopyVideoDataAlternate + ld de, PikachuSprite + $c * $10 + ld hl, vNPCSprites2 + $c * $10 + ld a, [h_0xFFFC] + and a + jr z, .asm_fd8c9 + ld de, PikachuSprite + $c * $10 + ld hl, vNPCSprites2 + $4c * $10 +.asm_fd8c9 + pop bc + call CopyVideoDataAlternate + call Func_fd831 + call Func_fd845 + ret + Func_fd8d4: ; fd8d4 (3f:58d4) - dr $fd8d4, $fd8e1 + ld a, [wCurMap] + cp PEWTER_POKECENTER + ret nz + call Func_1542 + call Func_fcff2 + ret + Func_fd8e1: ; fd8e1 (3f:58e1) - dr $fd8e1, $fd8ee + ld a, [wCurMap] + cp POKEMON_FAN_CLUB + ret nz + call Func_1542 + call Func_fcff2 + ret + Func_fd8ee: ; fd8ee (3f:58ee) - dr $fd8ee, $fd8f8 + ld a, [wCurMap] + cp BILLS_HOUSE + ret nz + call Func_1542 + ret + Func_fd8f8: ; fd8f8 (3f:58f8) - dr $fd8f8, $fd907 -Func_fd907: - dr $fd907, $fd978 + call LoadCurrentMapView + call UpdateSprites + call Delay3 + ret + +Func_fd902: ; cosine? + ld a, e + add $10 + jr asm_fd908 + +Func_fd907: ; sine? + ld a, e +asm_fd908 + and $3f + cp $20 + jr nc, .asm_fd913 + call Func_fd91c + ld a, h + ret + +.asm_fd913 + and $1f + call Func_fd91c + ld a, h + cpl + inc a + ret + +Func_fd91c: + ld e, a + ld a, d + ld d, 0 + ld hl, Data_fd938 + add hl, de + add hl, de + ld e, [hl] + inc hl + ld d, [hl] + ld hl, 0 +.asm_fd92b + srl a + jr nc, .asm_fd930 + add hl, de +.asm_fd930 + sla e + rl d + and a + jr nz, .asm_fd92b + ret + +Data_fd938: + sine_wave $100 + Func_fd978: ; fd978 (3f:5978) - dr $fd978, $fd9d0 + ld hl, Data_fd99c + ld a, [wPikachuMood] + ld d, a +.asm_fd97f + ld a, [hli] + inc hl + cp d + jr c, .asm_fd97f + dec hl + ld e, [hl] + ld hl, Data_fd9a6 + ld a, [wPikachuHappiness] + ld d, a + ld bc, 6 +.asm_fd990 + ld a, [hl] + cp d + jr nc, .asm_fd997 + add hl, bc + jr .asm_fd990 + +.asm_fd997 + ld d, 0 + add hl, de + ld a, [hl] + ret + +Data_fd99c: + db $28, 1 + db $7f, 2 + db $80, 3 + db $d2, 4 + db $ff, 5 + +Data_fd9a6: + db $32, $0e, $0e, $06, $0d, $0d + db $64, $09, $09, $05, $0c, $0c + db $82, $03, $03, $01, $08, $08 + db $a0, $03, $03, $04, $0f, $0f + db $c8, $11, $11, $07, $02, $02 + db $fa, $11, $11, $10, $0a, $0a + db $ff, $11, $11, $13, $14, $14 + Func_fd9d0: ; fd9d0 (3f:59d0) dr $fd9d0, $fe66f diff --git a/macros.asm b/macros.asm index f153e379..969d9465 100644 --- a/macros.asm +++ b/macros.asm @@ -758,3 +758,14 @@ ENDC endr db x ENDM + +sine_wave: MACRO +; \1: amplitude + +x = 0 + rept $20 + ; Round up. + dw (sin(x) + (sin(x) & $ff)) >> 8 +x = x + (\1) * $40000 + endr +ENDM -- cgit v1.3.1-sl0p From 10c5a34994150fe034653c7a4ad258079180bcc7 Mon Sep 17 00:00:00 2001 From: pikalaxalt Date: Wed, 25 May 2016 16:39:00 -0400 Subject: Make some sense out of the pic animations --- engine/bank3c.asm | 86 +- engine/bank3f.asm | 2976 +------------------------------------- engine/pikachu_pic_animation.asm | 2898 +++++++++++++++++++++++++++++++++++++ macros.asm | 118 ++ wram.asm | 19 +- 5 files changed, 3107 insertions(+), 2990 deletions(-) create mode 100755 engine/pikachu_pic_animation.asm (limited to 'macros.asm') diff --git a/engine/bank3c.asm b/engine/bank3c.asm index fe2d192f..1ebbd65b 100644 --- a/engine/bank3c.asm +++ b/engine/bank3c.asm @@ -90,67 +90,67 @@ PikachuCriesPointerTable: ; f008e (3c:408e) ; dw pointer to cry ; bank 21 - dbw BANK(PikachuCry1), PikachuCry1 ; 21:4000 - dbw BANK(PikachuCry2), PikachuCry2 ; 21:491a - dbw BANK(PikachuCry3), PikachuCry3 ; 21:4fdc - dbw BANK(PikachuCry4), PikachuCry4 ; 21:59ee + pikacry_def PikachuCry1 ; 21:4000 + pikacry_def PikachuCry2 ; 21:491a + pikacry_def PikachuCry3 ; 21:4fdc + pikacry_def PikachuCry4 ; 21:59ee ; bank 22 - dbw BANK(PikachuCry5), PikachuCry5 ; 22:4000 - dbw BANK(PikachuCry6), PikachuCry6 ; 22:5042 - dbw BANK(PikachuCry7), PikachuCry7 ; 22:6254 + pikacry_def PikachuCry5 ; 22:4000 + pikacry_def PikachuCry6 ; 22:5042 + pikacry_def PikachuCry7 ; 22:6254 ; bank 23 - dbw BANK(PikachuCry8), PikachuCry8 ; 23:4000 - dbw BANK(PikachuCry9), PikachuCry9 ; 23:50ca - dbw BANK(PikachuCry10), PikachuCry10 ; 23:5e0c + pikacry_def PikachuCry8 ; 23:4000 + pikacry_def PikachuCry9 ; 23:50ca + pikacry_def PikachuCry10 ; 23:5e0c ; bank 24 - dbw BANK(PikachuCry11), PikachuCry11 ; 24:4000 - dbw BANK(PikachuCry12), PikachuCry12 ; 24:4722 - dbw BANK(PikachuCry13), PikachuCry13 ; 24:54a4 + pikacry_def PikachuCry11 ; 24:4000 + pikacry_def PikachuCry12 ; 24:4722 + pikacry_def PikachuCry13 ; 24:54a4 ; bank 25 - dbw BANK(PikachuCry14), PikachuCry14 ; 25:4000 - dbw BANK(PikachuCry15), PikachuCry15 ; 25:589a + pikacry_def PikachuCry14 ; 25:4000 + pikacry_def PikachuCry15 ; 25:589a ; banks 31-34, in no particular order - dbw BANK(PikachuCry16), PikachuCry16 ; 31:4000 - dbw BANK(PikachuCry17), PikachuCry17 ; 34:4000 - dbw BANK(PikachuCry18), PikachuCry18 ; 31:549a - dbw BANK(PikachuCry19), PikachuCry19 ; 33:4000 - dbw BANK(PikachuCry20), PikachuCry20 ; 32:4000 - dbw BANK(PikachuCry21), PikachuCry21 ; 32:6002 - dbw BANK(PikachuCry22), PikachuCry22 ; 31:63a4 - dbw BANK(PikachuCry23), PikachuCry23 ; 34:4862 - dbw BANK(PikachuCry24), PikachuCry24 ; 33:5632 - dbw BANK(PikachuCry25), PikachuCry25 ; 34:573c - dbw BANK(PikachuCry26), PikachuCry26 ; 33:725c + pikacry_def PikachuCry16 ; 31:4000 + pikacry_def PikachuCry17 ; 34:4000 + pikacry_def PikachuCry18 ; 31:549a + pikacry_def PikachuCry19 ; 33:4000 + pikacry_def PikachuCry20 ; 32:4000 + pikacry_def PikachuCry21 ; 32:6002 + pikacry_def PikachuCry22 ; 31:63a4 + pikacry_def PikachuCry23 ; 34:4862 + pikacry_def PikachuCry24 ; 33:5632 + pikacry_def PikachuCry25 ; 34:573c + pikacry_def PikachuCry26 ; 33:725c ; bank 35 - dbw BANK(PikachuCry27), PikachuCry27 ; 35:4000 - dbw BANK(PikachuCry28), PikachuCry28 ; 35:4b5a - dbw BANK(PikachuCry29), PikachuCry29 ; 35:5da4 - dbw BANK(PikachuCry30), PikachuCry30 ; 35:69ce - dbw BANK(PikachuCry31), PikachuCry31 ; 35:6e80 + pikacry_def PikachuCry27 ; 35:4000 + pikacry_def PikachuCry28 ; 35:4b5a + pikacry_def PikachuCry29 ; 35:5da4 + pikacry_def PikachuCry30 ; 35:69ce + pikacry_def PikachuCry31 ; 35:6e80 ; bank 36 - dbw BANK(PikachuCry32), PikachuCry32 ; 36:4000 - dbw BANK(PikachuCry33), PikachuCry33 ; 36:458a - dbw BANK(PikachuCry34), PikachuCry34 ; 36:523c + pikacry_def PikachuCry32 ; 36:4000 + pikacry_def PikachuCry33 ; 36:458a + pikacry_def PikachuCry34 ; 36:523c ; bank 37 - dbw BANK(PikachuCry35), PikachuCry35 ; 37:4000 - dbw BANK(PikachuCry36), PikachuCry36 ; 37:522a + pikacry_def PikachuCry35 ; 37:4000 + pikacry_def PikachuCry36 ; 37:522a ; banks 36-38 - dbw BANK(PikachuCry37), PikachuCry37 ; 38:4000 - dbw BANK(PikachuCry38), PikachuCry38 ; 38:4dfa - dbw BANK(PikachuCry39), PikachuCry39 ; 37:6e0c - dbw BANK(PikachuCry40), PikachuCry40 ; 38:5a64 - dbw BANK(PikachuCry41), PikachuCry41 ; 36:6746 - dbw BANK(PikachuCry42), PikachuCry42 ; 38:6976 + pikacry_def PikachuCry37 ; 38:4000 + pikacry_def PikachuCry38 ; 38:4dfa + pikacry_def PikachuCry39 ; 37:6e0c + pikacry_def PikachuCry40 ; 38:5a64 + pikacry_def PikachuCry41 ; 36:6746 + pikacry_def PikachuCry42 ; 38:6976 INCLUDE "engine/overworld/advance_player_sprite.asm" @@ -312,7 +312,7 @@ Func_f0a82: ; f0a82 push af ld a, $ff ld [wUpdateSpritesEnabled], a - callab Func_fd831 + callab LoadPikachuShadowIntoVRAM pop af ld [wUpdateSpritesEnabled], a pop hl diff --git a/engine/bank3f.asm b/engine/bank3f.asm index 72a8ed26..fda65680 100644 --- a/engine/bank3f.asm +++ b/engine/bank3f.asm @@ -1764,7 +1764,7 @@ DoStarterPikachuEmotions: ; fcf35 (3f:4f35) jr z, .done ld c, a ld b, $0 - ld hl, Jumptable_fcf54 + ld hl, StarterPikachuEmotionsJumptable add hl, bc add hl, bc ld a, [hli] @@ -1775,23 +1775,24 @@ DoStarterPikachuEmotions: ; fcf35 (3f:4f35) .done ret -Jumptable_fcf54: ; fcf54 (3f:4f54) - dw Func_fcf6a - dw Func_fcf6b - dw Func_fcf77 - dw Func_fcf8d - dw Func_fcfb0 - dw Func_fd9d0 - dw Func_fcfc7 - dw Func_fcfbe - dw Func_fcfe8 - dw Func_fcfe9 - dw Func_fcf6a +StarterPikachuEmotionsJumptable: ; fcf54 (3f:4f54) + dw StarterPikachuEmotionCommand_nop ; 0 + dw StarterPikachuEmotionCommand_text ; 1 + dw StarterPikachuEmotionCommand_pcm ; 2 + dw StarterPikachuEmotionCommand_emote ; 3 + dw StarterPikachuEmotionCommand_4 ; 4 + dw StarterPikachuEmotionCommand_5 ; 5 + dw StarterPikachuEmotionCommand_subcmd ; 6 + dw StarterPikachuEmotionCommand_delay ; 7 + dw StarterPikachuEmotionCommand_nop2 ; 8 + dw StarterPikachuEmotionCommand_9 ; 9 + dw StarterPikachuEmotionCommand_nop3 ; a -Func_fcf6a: ; fcf6a (3f:4f6a) +StarterPikachuEmotionCommand_nop: ; fcf6a (3f:4f6a) +StarterPikachuEmotionCommand_nop3: ; fcf6a (3f:4f6a) ret -Func_fcf6b: ; fcf6b (3f:4f6b) +StarterPikachuEmotionCommand_text: ; fcf6b (3f:4f6b) ld a, [de] ld l, a inc de @@ -1803,23 +1804,23 @@ Func_fcf6b: ; fcf6b (3f:4f6b) pop de ret -Func_fcf77: ; fcf77 (3f:4f77) +StarterPikachuEmotionCommand_pcm: ; fcf77 (3f:4f77) ld a, [de] inc de push de ld e, a nop - call Func_fcf81 + call PlayPikachuSoundClip_ pop de ret -Func_fcf81: ; fcf81 (3f:4f81) +PlayPikachuSoundClip_: ; fcf81 (3f:4f81) cp $ff ret z callab PlayPikachuSoundClip ret -Func_fcf8d: ; fcf8d (3f:4f8d) +StarterPikachuEmotionCommand_emote: ; fcf8d (3f:4f8d) ld a, [wUpdateSpritesEnabled] push af ld a, $ff @@ -1827,20 +1828,20 @@ Func_fcf8d: ; fcf8d (3f:4f8d) ld a, [de] inc de push de - call Func_fcfa2 + call ShowPikachuEmoteBubble pop de pop af ld [wUpdateSpritesEnabled], a ret -Func_fcfa2: ; fcfa2 (3f:4fa2) +ShowPikachuEmoteBubble: ; fcfa2 (3f:4fa2) ld [wWhichEmotionBubble], a ld a, $f ld [wEmotionBubbleSpriteIndex], a predef EmotionBubble ret -Func_fcfb0: ; fcfb0 (3f:4fb0) +StarterPikachuEmotionCommand_4: ; fcfb0 (3f:4fb0) ld a, [de] inc de ld l, a @@ -1853,7 +1854,7 @@ Func_fcfb0: ; fcfb0 (3f:4fb0) pop de ret -Func_fcfbe: ; fcfbe (3f:4fbe) +StarterPikachuEmotionCommand_delay: ; fcfbe (3f:4fbe) ld a, [de] inc de push de @@ -1862,7 +1863,7 @@ Func_fcfbe: ; fcfbe (3f:4fbe) pop de ret -Func_fcfc7: ; fcfc7 (3f:4fc7) +StarterPikachuEmotionCommand_subcmd: ; fcfc7 (3f:4fc7) ld a, [de] inc de push de @@ -1879,18 +1880,18 @@ Func_fcfc7: ; fcfc7 (3f:4fc7) ret Jumptable_fcfda: - dw Func_fd8ab + dw LoadPikachuSpriteIntoVRAM dw LoadFontTilePatterns - dw Func_fd8f8 + dw Pikachu_LoadCurrentMapViewUpdateSpritesAndDelay3 dw WaitForTextScrollButtonPress - dw Func_fd8d4 - dw Func_fd8e1 - dw Func_fd8ee + dw PikachuPewterPokecenterCheck + dw PikachuFanClubCheck + dw PikachuBillsHouseCheck -Func_fcfe8: ; fcfe8 (3f:4fe8) +StarterPikachuEmotionCommand_nop2: ; fcfe8 (3f:4fe8) ret -Func_fcfe9: ; fcfe9 (3f:4fe9) +StarterPikachuEmotionCommand_9: ; fcfe9 (3f:4fe9) push de call Func_fcff2 call UpdateSprites @@ -1914,2918 +1915,7 @@ Func_fd001:: ; fd001 (3f:5001) ld a, e jr asm_fd00f -Func_fd004:: ; fd004 (3f:5004) - call Func_fd05e - jr c, asm_fd00f - call Func_fd978 - call Func_fcffb -asm_fd00f: ; fd00f (3f:500f) - ld [wExpressionNumber], a - ld hl, PikachuEmotionTable - call DoStarterPikachuEmotions - ret - -PikachuEmotionTable: ; fd019 (3f:4019) - dw PikachuEmotion0_fd115 - dw PikachuEmotion1_fd141 - dw PikachuEmotion2_fd116 - dw PikachuEmotion3_fd160 - dw PikachuEmotion4_fd136 - dw PikachuEmotion5_fd14d - dw PikachuEmotion6_fd153 - dw PikachuEmotion7_fd128 - dw PikachuEmotion8_fd147 - dw PikachuEmotion9_fd166 - dw PikachuEmotion10_fd11e - dw PikachuEmotion11_fd173 - dw PikachuEmotion12_fd17a - dw PikachuEmotion13_fd180 - dw PikachuEmotion14_fd189 - dw PikachuEmotion15_fd191 - dw PikachuEmotion16_fd197 - dw PikachuEmotion17_fd19d - dw PikachuEmotion18_fd1a3 - dw PikachuEmotion19_fd1a9 - dw PikachuEmotion20_fd1b1 - dw PikachuEmotion21_fd1b9 - dw PikachuEmotion22_fd1c1 - dw PikachuEmotion23_fd1c7 - dw PikachuEmotion24_fd1cf - dw PikachuEmotion25_fd1d7 - dw PikachuEmotion26_fd1df - dw PikachuEmotion27_fd1eb - dw PikachuEmotion28_fd1f1 - dw PikachuEmotion29_fd1f7 - dw PikachuEmotion30_fd1fc - dw PikachuEmotion31_fd20a - dw PikachuEmotion32_fd213 - dw PikachuEmotion33_fd05d - -PikachuEmotion33_fd05d: ; fd05d (3f:505d) - db $ff - -Func_fd05e: ; fd05e (3f:505e) - ld a, [wCurMap] - cp POKEMON_FAN_CLUB - jr nz, .notFanClub - ld hl, wPreventBlackout - bit 7, [hl] - ld a, $1d - jr z, .asm_fd0c9 - call Func_154a - ld a, $1e - jr nz, .asm_fd0c9 - jr .asm_fd096 -.notFanClub - ld a, [wCurMap] - cp PEWTER_POKECENTER - jr nz, .notPewterPokecenter - call Func_154a - ld a, $1a - jr nz, .asm_fd0c9 - jr .asm_fd096 -.notPewterPokecenter - callab Func_f24ae - ld a, e - cp $ff - jr nz, .asm_fd0c9 - jr .asm_fd096 -.asm_fd096 - call IsPlayerPikachuAsleepInParty - ld a, $b - jr c, .asm_fd0c9 - callab Func_fce73 ; same bank - ld a, $1c - jr c, .asm_fd0c9 - ld a, [wCurMap] - cp POKEMONTOWER_1 - jr c, .notInLavenderTower - cp POKEMONTOWER_7 + 1 - ld a, $16 - jr c, .asm_fd0c9 -.notInLavenderTower - ld a, [wd49c] - and a - jr z, .asm_fd0c7 - dec a - ld c, a - ld b, $0 - ld hl, Pointer_fd0cb - add hl, bc - ld a, [hl] - jr .asm_fd0c9 -.asm_fd0c7 - and a - ret -.asm_fd0c9 - scf - ret - -Pointer_fd0cb: - db $12, $15, $17, $18, $19 - -IsPlayerPikachuAsleepInParty:: ; fd0d0 (3f:50d0) - xor a - ld [wWhichPokemon], a -.loop - ld a, [wWhichPokemon] - ld c, a - ld b, $0 - ld hl, wPartySpecies - add hl, bc - ld a, [hl] - cp $ff - jr z, .done - cp PIKACHU - jr nz, .curMonNotStarterPikachu - callab IsThisPartymonStarterPikachu - jr nc, .curMonNotStarterPikachu - ld a, [wWhichPokemon] - ld hl, wPartyMon1Status - ld bc, wPartyMon2 - wPartyMon1 - call AddNTimes - ld a, [hl] - and SLP - jr z, .done - jr .curMonSleepingPikachu -.curMonNotStarterPikachu - ld a, [wWhichPokemon] - cp PARTY_LENGTH - 1 - jr z, .done - inc a - ld [wWhichPokemon], a - jr .loop -.curMonSleepingPikachu - scf - ret -.done - and a - ret - -PikachuEmotion0_fd115: ; fd115 (3f:5115) - db $ff - -PikachuEmotion2_fd116: ; fd116 (3f:5116) - pikaemotion_dummy2 - pikaemotion_emotebubble SMILE_BUBBLE - pikaemotion_pcm $22 - pikaemotion_5 $2 - db $ff - -PikachuEmotion10_fd11e: ; fd11e (3f:511e) - pikaemotion_dummy2 - pikaemotion_subcmd PIKAEMOTION_SUBCMD_LOADEXTRAPIKASPRITES - pikaemotion_emotebubble HEART_BUBBLE - pikaemotion_pcm $4 - pikaemotion_5 $a - db $ff - -PikachuEmotion7_fd128: ; fd128 (3f:5128) - pikaemotion_dummy2 - pikaemotion_subcmd PIKAEMOTION_SUBCMD_LOADEXTRAPIKASPRITES - pikaemotion_4 Pointer_fd224 - pikaemotion_pcm $0 - pikaemotion_4 Pointer_fd224 - pikaemotion_5 $7 - db $ff - -PikachuEmotion4_fd136: ; fd136 (3f:5136) - pikaemotion_dummy2 - pikaemotion_subcmd PIKAEMOTION_SUBCMD_LOADEXTRAPIKASPRITES - pikaemotion_4 Pointer_fd230 - pikaemotion_pcm $1c - pikaemotion_5 $4 - db $ff - -PikachuEmotion1_fd141: ; fd141 (3f:5141) - pikaemotion_dummy2 - pikaemotion_pcm $ff - pikaemotion_5 $1 - db $ff - -PikachuEmotion8_fd147: ; fd147 (3f:5147) - pikaemotion_dummy2 - pikaemotion_pcm $26 - pikaemotion_5 $8 - db $ff - -PikachuEmotion5_fd14d: ; fd14d (3f:514d) - pikaemotion_dummy2 - pikaemotion_pcm $1e - pikaemotion_5 $5 - db $ff - -PikachuEmotion6_fd153: ; fd153 (3f:5153) - pikaemotion_dummy2 - pikaemotion_subcmd PIKAEMOTION_SUBCMD_LOADEXTRAPIKASPRITES - pikaemotion_pcm $ff - pikaemotion_4 Pointer_fd21e - pikaemotion_emotebubble SKULL_BUBBLE - pikaemotion_5 $6 - db $ff - -PikachuEmotion3_fd160: ; fd160 (3f:5160) - pikaemotion_dummy2 - pikaemotion_pcm $27 - pikaemotion_5 $3 - db $ff - -PikachuEmotion9_fd166: ; fd166 (3f:5166) - pikaemotion_dummy2 - pikaemotion_subcmd PIKAEMOTION_SUBCMD_LOADEXTRAPIKASPRITES - pikaemotion_pcm $5 - pikaemotion_4 Pointer_fd218 - pikaemotion_emotebubble SKULL_BUBBLE - pikaemotion_5 $9 - db $ff - -PikachuEmotion11_fd173: ; fd173 (3f:5173) - pikaemotion_emotebubble ZZZ_BUBBLE - pikaemotion_pcm $24 - pikaemotion_5 $b - db $ff - -PikachuEmotion12_fd17a: ; fd17a (3f:517a) - pikaemotion_dummy2 - pikaemotion_pcm $ff - pikaemotion_5 $c - db $ff - -PikachuEmotion13_fd180: ; fd180 (3f:5180) - pikaemotion_dummy2 - pikaemotion_subcmd PIKAEMOTION_SUBCMD_LOADEXTRAPIKASPRITES - pikaemotion_4 Pointer_fd21e - pikaemotion_5 $d - db $ff - -PikachuEmotion14_fd189: ; fd189 (3f:5189) - pikaemotion_dummy2 - pikaemotion_emotebubble BOLT_BUBBLE - pikaemotion_pcm $9 - pikaemotion_5 $e - db $ff - -PikachuEmotion15_fd191: ; fd191 (3f:5191) - pikaemotion_dummy2 - pikaemotion_pcm $21 - pikaemotion_5 $f - db $ff - -PikachuEmotion16_fd197: ; fd197 (3f:5197) - pikaemotion_dummy2 - pikaemotion_pcm $20 - pikaemotion_5 $10 - db $ff - -PikachuEmotion17_fd19d: ; fd19d (3f:519d) - pikaemotion_dummy2 - pikaemotion_pcm $c - pikaemotion_5 $11 - db $ff - -PikachuEmotion18_fd1a3: ; fd1a3 (3f:51a3) - pikaemotion_dummy2 - pikaemotion_pcm $ff - pikaemotion_5 $12 - db $ff - -PikachuEmotion19_fd1a9: ; fd1a9 (3f:51a9) - pikaemotion_dummy2 - pikaemotion_emotebubble HEART_BUBBLE - pikaemotion_pcm $20 - pikaemotion_5 $13 - db $ff - -PikachuEmotion20_fd1b1: ; fd1b1 (3f:51b1) - pikaemotion_dummy2 - pikaemotion_emotebubble HEART_BUBBLE - pikaemotion_pcm $4 - pikaemotion_5 $14 - db $ff - -PikachuEmotion21_fd1b9: ; fd1b9 (3f:51b9) - pikaemotion_dummy2 - pikaemotion_emotebubble FISH_BUBBLE - pikaemotion_pcm $ff - pikaemotion_5 $15 - db $ff - -PikachuEmotion22_fd1c1: ; fd1c1 (3f:51c1) - pikaemotion_dummy2 - pikaemotion_pcm $3 - pikaemotion_5 $16 - db $ff - -PikachuEmotion23_fd1c7: ; fd1c7 (3f:51c7) - pikaemotion_dummy2 - pikaemotion_pcm $12 - pikaemotion_5 $17 - pikaemotion_subcmd PIKAEMOTION_SUBCMD_SHOWMAPVIEW - db $ff - -PikachuEmotion24_fd1cf: ; fd1cf (3f:51cf) - pikaemotion_dummy2 - pikaemotion_emotebubble EXCLAMATION_BUBBLE - pikaemotion_pcm $ff - pikaemotion_5 $18 - db $ff - -PikachuEmotion25_fd1d7: ; fd1d7 (3f:51d7) - pikaemotion_dummy2 - pikaemotion_emotebubble BOLT_BUBBLE - pikaemotion_pcm $22 - pikaemotion_5 $19 - db $ff - -PikachuEmotion26_fd1df: ; fd1df (3f:51df) - pikaemotion_dummy2 - pikaemotion_emotebubble ZZZ_BUBBLE - pikaemotion_pcm $24 - pikaemotion_5 $1a - pikaemotion_subcmd PIKAEMOTION_SUBCMD_SHOWMAPVIEW - pikaemotion_subcmd PIKAEMOTION_SUBCMD_CHECKPEWTERCENTER - db $ff - -PikachuEmotion27_fd1eb: ; fd1eb (3f:51eb) - pikaemotion_dummy2 - pikaemotion_pcm $8 - pikaemotion_5 $1b - db $ff - -PikachuEmotion28_fd1f1: ; fd1f1 (3f:51f1) - pikaemotion_dummy2 - pikaemotion_pcm $e - pikaemotion_5 $1c - db $ff - -PikachuEmotion29_fd1f7: ; fd1f7 (3f:51f7) - pikaemotion_pcm $4 - pikaemotion_5 $a - db $ff - -PikachuEmotion30_fd1fc: ; fd1fc (3f:51fc) - pikaemotion_9 - pikaemotion_emotebubble HEART_BUBBLE - pikaemotion_pcm $4 - pikaemotion_5 $14 - pikaemotion_subcmd PIKAEMOTION_SUBCMD_SHOWMAPVIEW - pikaemotion_subcmd PIKAEMOTION_SUBCMD_LOADFONT - pikaemotion_subcmd PIKAEMOTION_SUBCMD_CHECKLAVENDERTOWER - db $ff - -PikachuEmotion31_fd20a: ; fd20a (3f:520a) - pikaemotion_pcm $12 - pikaemotion_5 $17 - pikaemotion_subcmd PIKAEMOTION_SUBCMD_SHOWMAPVIEW - pikaemotion_subcmd PIKAEMOTION_SUBCMD_CHECKBILLSHOUSE - db $ff - -PikachuEmotion32_fd213: ; fd213 (3f:5213) - pikaemotion_pcm $19 - pikaemotion_5 $17 - db $ff - -Pointer_fd218: ; fd218 (3f:5218) - - db $00 - db $39, $01 - db $3e, $1e - db $3f - -Pointer_fd21e: ; fd21e (3f:521e) - db $00 - db $39, $00 - db $3e, $1e - db $3f - -Pointer_fd224: ; fd224 (3f:5224) - db $00 - db $3c, $07, $2f - db $3c, $07, $2f - db $3f - -Pointer_fd22c: ; fd22c (3f:522c) - db $3b, $1f, $03 - db $3f - -Pointer_fd230: ; fd230 (3f:5230) - db $00 - db $3c, $0f, $1f - db $3c, $0f, $1f - db $3f - -Pointer_fd238: ; fd238 (3f:5238) - db $00 - db $05, $07 - db $39, $00 - db $05, $07 - db $06, $07 - db $39, $00 - db $06, $07 - db $08, $07 - db $39, $00 - db $08, $07 - db $07, $07 - db $39, $00 - db $07, $07 - db $3f - -Func_fd252: ; fd252 (3f:5252) - ld a, $40 - ld [h_0xFFFC], a - call Func_fd8ab - call Func_fd266 - and a - jr z, .asm_fd262 - call Func_159b -.asm_fd262 - xor a - ld [h_0xFFFC], a - ret - -Func_fd266: - ld a, [wSpriteStateData2 + 15 * 16 + 4] - ld e, a - ld a, [wSpriteStateData2 + 15 * 16 + 5] - ld d, a - ld a, [wYCoord] - add 4 - cp e - jr z, .asm_fd280 - jr nc, .asm_fd27e - ld hl, Data_fd294 - ld a, 1 - ret - -.asm_fd27e - xor a - ret - -.asm_fd280 - ld a, [wXCoord] - add 4 - cp d - jr c, .asm_fd28e - ld hl, Data_fd299 - ld a, 2 - ret - -.asm_fd28e - ld hl, Data_fd29d - ld a, 3 - ret - -Data_fd294: - db $00 - db $36 - db $2b - db $34 - db $3f - -Data_fd299: - db $00 - db $36 - db $34 - db $3f - -Data_fd29d: - db $00 - db $36 - db $33 - db $3f - -Func_fd2a1:: ; fd2a1 (3f:52a1) - ld a, b - ld [wd44a], a - ld a, l - ld [wd44b], a - ld a, h - ld [wd44b + 1], a - call Func_fd2c1 -.asm_fd2b0 - call Func_fd2f5 - jr nc, .asm_fd2ba - call Func_fd329 - jr .asm_fd2b0 - -.asm_fd2ba - call Func_fd2c1 - call DelayFrame - ret - -Func_fd2c1: - ld a, [wUpdateSpritesEnabled] - push af - ld a, $ff - ld [wUpdateSpritesEnabled], a - push hl - push de - push bc - - ld hl, wSpriteStateData1 - ld de, wSpriteStateData1 + $f0 - ld c, $10 - call Func_fd2eb - - ld hl, wSpriteStateData2 - ld de, wSpriteStateData2 + $f0 - ld c, $10 - call Func_fd2eb - - pop bc - pop de - pop hl - pop af - ld [wUpdateSpritesEnabled], a - ret - -Func_fd2eb: -.asm_fd2eb - ld b, [hl] - ld a, [de] - ld [hli], a - ld a, b - ld [de], a - inc de - dec c - jr nz, .asm_fd2eb - ret - -Func_fd2f5: - call Func_157c - cp $3f - ret z - ld c, a - ld b, 0 - ld hl, Data_fd3b0 - add hl, bc - add hl, bc - add hl, bc - add hl, bc - ld a, [hli] - ld [$d44e], a - ld a, [hli] - cp $80 - jr nz, .asm_fd311 - call Func_157c -.asm_fd311 - ld [$d44d], a - ld a, [hli] - ld [$d450], a - ld a, [hli] - cp $80 - jr nz, .asm_fd320 - call Func_157c -.asm_fd320 - ld [$d44f], a - xor a - ld [$d451], a - scf - ret - -Func_fd329: - xor a - ld [$d44c], a - ld [$d457], a - ld [$d458], a - ld a, [wSpriteStateData2 + 7] - push af -.asm_fd337 - ld bc, wSpriteStateData1 - ld a, [$d44e] - ld hl, Jumptable_fd4ac - call Func_fd365 - ld a, [$d450] - ld hl, Jumptable_fd65c - call Func_fd365 - call Func_fd36e - call Func_fd39d - call DelayFrame - call DelayFrame - ld hl, $d44c - bit 7, [hl] - jr z, .asm_fd337 - pop af - ld [wSpriteStateData2 + 7], a - scf - ret - -Func_fd365: - ld e, a - ld d, 0 - add hl, de - add hl, de - ld a, [hli] - ld h, [hl] - ld l, a - jp [hl] - -Func_fd36e: - ld hl, 2 - add hl, bc - ld a, [$d452] - ld [hl], a - ld a, [$d454] - ld d, a - ld a, [$d456] - add d - ld hl, 4 - add hl, bc - ld [hl], a - ld a, [$d453] - ld d, a - ld a, [$d455] - add d - ld hl, 6 - add hl, bc - ld [hl], a - ld hl, $d44c - bit 6, [hl] - ret z - ld hl, wSpriteStateData2 + 7 - wSpriteStateData1 - add hl, bc - ld [hl], 0 - ret - -Func_fd39d: - ld hl, $d44c - bit 6, [hl] - res 6, [hl] - ld hl, wd736 - res 6, [hl] - ret z - set 6, [hl] - call Func_fd7f3 - ret - -Data_fd3b0: - db $01, $00, $00, $00 ; $00 - db $03, $80, $01, $00 ; $01 - db $04, $80, $01, $00 ; $02 - db $05, $80, $01, $00 ; $03 - db $06, $80, $01, $00 ; $04 - db $07, $80, $01, $00 ; $05 - db $08, $80, $01, $00 ; $06 - db $09, $80, $01, $00 ; $07 - db $0a, $80, $01, $00 ; $08 - db $03, $80, $06, $00 ; $09 - db $04, $80, $06, $00 ; $0a - db $05, $80, $06, $00 ; $0b - db $06, $80, $06, $00 ; $0c - db $07, $80, $06, $00 ; $0d - db $08, $80, $06, $00 ; $0e - db $09, $80, $06, $00 ; $0f - db $0a, $80, $06, $00 ; $10 - db $03, $80, $03, $80 ; $11 - db $04, $80, $03, $80 ; $12 - db $05, $80, $03, $80 ; $13 - db $06, $80, $03, $80 ; $14 - db $07, $80, $03, $80 ; $15 - db $08, $80, $03, $80 ; $16 - db $09, $80, $03, $80 ; $17 - db $0a, $80, $03, $80 ; $18 - db $03, $80, $07, $80 ; $19 - db $04, $80, $07, $80 ; $1a - db $05, $80, $07, $80 ; $1b - db $06, $80, $07, $80 ; $1c - db $0b, $27, $02, $00 ; $1d - db $0c, $27, $02, $00 ; $1e - db $0d, $27, $02, $00 ; $1f - db $0e, $27, $02, $00 ; $20 - db $0f, $27, $02, $00 ; $21 - db $10, $27, $02, $00 ; $22 - db $11, $27, $02, $00 ; $23 - db $12, $27, $02, $00 ; $24 - db $0b, $0f, $02, $00 ; $25 - db $0c, $0f, $02, $00 ; $26 - db $0d, $0f, $02, $00 ; $27 - db $0e, $0f, $02, $00 ; $28 - db $0f, $0f, $02, $00 ; $29 - db $10, $0f, $02, $00 ; $2a - db $11, $0f, $02, $00 ; $2b - db $12, $0f, $02, $00 ; $2c - db $0b, $0f, $08, $17 ; $2d - db $0c, $0f, $08, $17 ; $2e - db $0d, $0f, $08, $17 ; $2f - db $0e, $0f, $08, $17 ; $30 - db $0f, $0f, $08, $17 ; $31 - db $10, $0f, $08, $17 ; $32 - db $11, $0f, $08, $17 ; $33 - db $12, $0f, $08, $17 ; $34 - db $13, $0f, $06, $00 ; $35 - db $14, $0f, $06, $00 ; $36 - db $15, $0f, $06, $00 ; $37 - db $16, $0f, $06, $00 ; $38 - db $02, $80, $04, $00 ; $39 - db $02, $80, $05, $00 ; $3a - db $02, $80, $03, $80 ; $3b - db $02, $80, $07, $80 ; $3c - db $02, $80, $09, $80 ; $3d - db $02, $80, $06, $00 ; $3e - -Jumptable_fd4ac: - dw Func_fd4e5 - dw Func_fd4e9 - dw Func_fd504 - dw Func_fd50c - dw Func_fd511 - dw Func_fd518 - dw Func_fd52c - dw Func_fd540 - dw Func_fd553 - dw Func_fd566 - dw Func_fd579 - dw Func_fd5b1 - dw Func_fd5b5 - dw Func_fd5b9 - dw Func_fd5bd - dw Func_fd5c1 - dw Func_fd5c5 - dw Func_fd5c9 - dw Func_fd5cd - dw Func_fd5ea - dw Func_fd5ee - dw Func_fd5f2 - dw Func_fd5f6 - dw Func_fd4e5 - -Func_fd4dc: - ld a, [$d44c] - set 7, a - ld [$d44c], a - ret - -Func_fd4e5: - call Func_fd4dc - ret - -Func_fd4e9: - ld hl, 4 - add hl, bc - ld a, [hl] - ld [$d454], a - ld hl, 6 - add hl, bc - ld a, [hl] - ld [$d453], a - xor a - ld [$d456], a - ld [$d455], a - call Func_fd4dc - ret - -Func_fd504: - call Func_fd775 - ret nz - call Func_fd4dc - ret - -Func_fd50c: - call Func_fd75f - jr asm_fd58c - -Func_fd511: - call Func_fd75f - xor %100 - jr asm_fd58c - -Func_fd518: - call Func_fd75f - ld hl, Data_fd523 - call Func_fd5a0 - jr asm_fd58c - -Data_fd523: - db SPRITE_FACING_DOWN - db SPRITE_FACING_RIGHT - db SPRITE_FACING_UP - db SPRITE_FACING_LEFT - db SPRITE_FACING_LEFT - db SPRITE_FACING_DOWN - db SPRITE_FACING_RIGHT - db SPRITE_FACING_UP - db $ff - -Func_fd52c: - call Func_fd75f - ld hl, Data_fd537 - call Func_fd5a0 - jr asm_fd58c - -Data_fd537: - db SPRITE_FACING_DOWN - db SPRITE_FACING_LEFT - db SPRITE_FACING_UP - db SPRITE_FACING_RIGHT - db SPRITE_FACING_LEFT - db SPRITE_FACING_UP - db SPRITE_FACING_RIGHT - db SPRITE_FACING_DOWN - db $ff - -Func_fd540: - call Func_fd75f - ld hl, Data_fd54b - call Func_fd5a0 - jr asm_fd58c - -Data_fd54b: - db SPRITE_FACING_DOWN - db SPRITE_FACING_UP | $10 - db SPRITE_FACING_UP - db SPRITE_FACING_LEFT | $10 - db SPRITE_FACING_LEFT - db SPRITE_FACING_DOWN | $10 - db SPRITE_FACING_RIGHT - db SPRITE_FACING_RIGHT | $10 - -Func_fd553: - call Func_fd75f - ld hl, Data_fd55e - call Func_fd5a0 - jr asm_fd58c - -Data_fd55e: - db SPRITE_FACING_DOWN - db SPRITE_FACING_DOWN | $10 - db SPRITE_FACING_UP - db SPRITE_FACING_RIGHT | $10 - db SPRITE_FACING_LEFT - db SPRITE_FACING_LEFT | $10 - db SPRITE_FACING_RIGHT - db SPRITE_FACING_UP | $10 - -Func_fd566: - call Func_fd75f - ld hl, Data_fd571 - call Func_fd5a0 - jr asm_fd58c - -Data_fd571: - db SPRITE_FACING_DOWN - db SPRITE_FACING_RIGHT | $10 - db SPRITE_FACING_UP - db SPRITE_FACING_DOWN | $10 - db SPRITE_FACING_LEFT - db SPRITE_FACING_UP | $10 - db SPRITE_FACING_RIGHT - db SPRITE_FACING_LEFT | $10 - -Func_fd579: - call Func_fd75f - ld hl, Data_fd584 - call Func_fd5a0 - jr asm_fd58c - -Data_fd584: - db SPRITE_FACING_DOWN - db SPRITE_FACING_LEFT | $10 - db SPRITE_FACING_UP - db SPRITE_FACING_UP | $10 - db SPRITE_FACING_LEFT - db SPRITE_FACING_RIGHT | $10 - db SPRITE_FACING_RIGHT - db SPRITE_FACING_DOWN | $10 - -asm_fd58c - rrca - rrca - and $7 - ld e, a - call Func_fd784 - ld d, a - call Func_fd601 - call Func_fd775 - ret nz - call Func_fd4dc - ret - -Func_fd5a0: - push de - ld d, a -.asm_fd5a2 - ld a, [hli] - cp d - jr z, .asm_fd5ad - inc hl - cp $ff - jr nz, .asm_fd5a2 - pop de - ret - -.asm_fd5ad - ld a, [hl] - pop de - scf - ret - -Func_fd5b1: - ld a, 0 - jr asm_fd5d1 - -Func_fd5b5: - ld a, 1 - jr asm_fd5d1 - -Func_fd5b9: - ld a, 2 - jr asm_fd5d1 - -Func_fd5bd: - ld a, 3 - jr asm_fd5d1 - -Func_fd5c1: - ld e, 4 - jr asm_fd5d5 - -Func_fd5c5: - ld e, 5 - jr asm_fd5d5 - -Func_fd5c9: - ld e, 6 - jr asm_fd5d5 - -Func_fd5cd: - ld e, 7 - jr asm_fd5d5 - -asm_fd5d1 - ld e, a - call Func_fd769 -asm_fd5d5 - call Func_fd784 - ld d, a - push de - call Func_fd601 - pop de - call Func_fd775 - ret nz - ld a, e - call Func_fd7cb - call Func_fd4dc - ret - -Func_fd5ea: - ld a, 0 - jr asm_fd5fa - -Func_fd5ee: - ld a, 1 - jr asm_fd5fa - -Func_fd5f2: - ld a, 2 - jr asm_fd5fa - -Func_fd5f6: - ld a, 3 - jr asm_fd5fa - -asm_fd5fa - call Func_fd769 - call Func_fd4dc - ret - -Func_fd601: - push de - ld d, 0 - ld hl, Jumptable_fd60f - add hl, de - add hl, de - ld a, [hli] - ld h, [hl] - ld l, a - pop de - ld a, d - jp [hl] - -Jumptable_fd60f: - dw Func_fd61f - dw Func_fd624 - dw Func_fd62b - dw Func_fd632 - dw Func_fd637 - dw Func_fd63d - dw Func_fd641 - dw Func_fd647 - -Func_fd61f: - ld d, 0 - ld e, a - jr Func_fd64d - -Func_fd624: - ld d, 0 - cpl - inc a - ld e, a - jr Func_fd64d - -Func_fd62b: - cpl - inc a - ld d, a - ld e, 0 - jr Func_fd64d - -Func_fd632: - ld d, a - ld e, 0 - jr Func_fd64d - -Func_fd637: - ld e, a - cpl - inc a - ld d, a - jr Func_fd64d - -Func_fd63d: - ld e, a - ld d, a - jr Func_fd64d - -Func_fd641: - cpl - inc a - ld e, a - ld d, a - jr Func_fd64d - -Func_fd647: - ld d, a - cpl - inc a - ld e, a - jr Func_fd64d - -Func_fd64d: - ld a, [$d453] - add d - ld [$d453], a - ld a, [$d454] - add e - ld [$d454], a - ret - -Jumptable_fd65c: - dw Func_fd678 - dw Func_fd6a3 - dw Func_fd698 - dw Func_fd6f4 - dw Func_fd6ff - dw Func_fd718 - dw Func_fd68c - dw Func_fd6c6 - dw Func_fd6c0 - dw Func_fd6e2 - dw Func_fd68b - -Func_fd672: - ld hl, $d44c - set 6, [hl] - ret - -Func_fd678: - ld hl, 7 - add hl, bc - xor a - ld [hli], a - ld [hl], a - call Func_fd74a - ld d, a - call Func_fd75f - or d - ld [$d452], a - ret - -Func_fd68b: - ret - -Func_fd68c: - call Func_fd74a - ld d, a - call Func_fd755 - or d - ld [$d452], a - ret - -Func_fd698: - call Func_fd74a - ld d, a - call Func_fd75f - or d - ld d, a - jr asm_fd6ac - -Func_fd6a3: - call Func_fd74a - ld d, a - call Func_fd755 - or d - ld d, a -asm_fd6ac - ld hl, 8 - add hl, bc - call Func_fd78e - jr nz, .asm_fd6b6 - inc [hl] -.asm_fd6b6 - ld a, [hl] - rrca - rrca - and 3 - or d - ld [$d452], a - ret - -Func_fd6c0: - call Func_fd75f - ld d, a - jr asm_fd6ca - -Func_fd6c6: - call Func_fd755 - ld d, a -asm_fd6ca - call Func_fd74a - or d - ld d, a - call Func_fd736 - or d - ld [$d452], a - call Func_fd79d - ld [$d456], a - and a - ret z - call Func_fd672 - ret - -Func_fd6e2: - call Func_fd75f - ld d, a - call Func_fd74a - or d - ld [$d452], a - call Func_fd79d - ld [$d456], a - ret - -Func_fd6f4: - ld a, [$d44f] - and $40 - cp $40 - jr z, Func_fd6ff - jr Func_fd718 - -Func_fd6ff: - call Func_fd755 - ld d, a - call Func_fd78e - jr nz, .asm_fd710 - ld hl, Data_fd731 -.asm_fd70b - ld a, [hli] - cp d - jr nz, .asm_fd70b - ld d, [hl] -.asm_fd710 - call Func_fd74a - or d - ld [$d452], a - ret - -Func_fd718: - call Func_fd755 - ld d, a - call Func_fd78e - jr nz, .asm_fd529 - ld hl, Data_fd731End -.asm_fd524 - ld a, [hld] - cp d - jr nz, .asm_fd524 - ld d, [hl] -.asm_fd529 - call Func_fd74a - or d - ld [$d452], a - ret - -Data_fd731: - db SPRITE_FACING_DOWN - db SPRITE_FACING_LEFT - db SPRITE_FACING_UP - db SPRITE_FACING_RIGHT - db SPRITE_FACING_DOWN -Data_fd731End: - -Func_fd736: - push hl - ld hl, 7 - add hl, bc - ld a, [hl] - inc a - and $3 - ld [hli], a - jr nz, .asm_fd747 - ld a, [hl] - inc a - and $3 - ld [hl], a -.asm_fd747 - ld a, [hl] - pop hl - ret - -Func_fd74a: - push hl - ld hl, wSpriteStateData2 - wSpriteStateData1 + 14 - add hl, bc - ld a, [hl] - dec a - swap a - pop hl - ret - -Func_fd755: - push hl - ld hl, 2 - add hl, bc - ld a, [hl] - and $c - pop hl - ret - -Func_fd75f: - push hl - ld hl, 9 - add hl, bc - ld a, [hl] - and $c - pop hl - ret - -Func_fd769: - push hl - ld hl, 9 - add hl, bc - add a - add a - and $c - ld [hl], a - pop hl - ret - -Func_fd775: - ld hl, $d457 - inc [hl] - ld a, [$d44d] - and $1f - inc a - cp [hl] - ret nz - ld [hl], 0 - ret - -Func_fd784: - ld a, [$d44d] - swap a - rrca - and $3 - inc a - ret - -Func_fd78e: - ld hl, $d458 - inc [hl] - ld a, [$d44f] - and $f - inc a - cp [hl] - ret nz - ld [hl], 0 - ret - -Func_fd79d: - call Func_fd7b2 - ld a, [$d458] - add e - ld [$d458], a - add $20 - ld e, a - push hl - push bc - call Func_fd907 - pop bc - pop hl - ret - -Func_fd7b2: - ld a, [$d44f] - and $f - inc a - ld d, a - ld a, [$d44f] - swap a - and $7 - ld e, a - ld a, 1 - jr z, .asm_fd7c9 -.asm_fd7c5 - add a - dec e - jr nz, .asm_fd7c5 -.asm_fd7c9 - ld e, a - ret - -Func_fd7cb: - push bc - ld c, a - ld b, 0 - ld hl, Data_fd7e3 - add hl, bc - add hl, bc - ld d, [hl] - inc hl - ld e, [hl] - pop bc - ld hl, wSpriteStateData2 - wSpriteStateData1 + 4 - add hl, bc - ld a, [hl] - add e - ld [hli], a - ld a, [hl] - add d - ld [hl], a - ret - -Data_fd7e3: - db 0, 1 - db 0, -1 - db -1, 0 - db 1, 0 - db -1, 1 - db 1, 1 - db -1, -1 - db 1, -1 - -Func_fd7f3: - push bc - push de - push hl - - ld bc, wOAMBuffer + 4 * 36 - ld a, [$d454] - ld e, a - ld a, [$d453] - ld d, a - ld hl, Data_fd80b - call Func_fd814 - - pop hl - pop de - pop bc - ret - -Data_fd80b: - db $02 - db $0c, $00, $ff, 0 - db $0c, $08, $ff, 1 << OAM_X_FLIP - -Func_fd814: - ld a, e - add $10 - ld e, a - ld a, d - add $8 - ld d, a - ld a, [hli] -.asm_fd81d - push af - ld a, [hli] - add e - ld [bc], a - inc bc - ld a, [hli] - add d - ld [bc], a - inc bc - ld a, [hli] - ld [bc], a - inc bc - ld a, [hli] - ld [bc], a - inc bc - pop af - dec a - jr nz, .asm_fd81d - ret - -Func_fd831: - ld hl, vNPCSprites2 + $7f * $10 - ld de, LedgeHoppingShadowGFX_3F - lb bc, BANK(LedgeHoppingShadowGFX_3F), (LedgeHoppingShadowGFX_3FEnd - LedgeHoppingShadowGFX_3F) / 8 - jp CopyVideoDataDoubleAlternate - -LedgeHoppingShadowGFX_3F: -INCBIN "gfx/ledge_hopping_shadow.1bpp" -LedgeHoppingShadowGFX_3FEnd: - -Func_fd845: - ld hl, vNPCSprites2 + $7e * $10 - ld de, GFX_fd86b - lb bc, BANK(GFX_fd86b), 1 - jp CopyVideoDataDoubleAlternate - -Func_fd851: - ld hl, vNPCSprites + $c * $10 - ld a, 3 -.asm_fd856 - push af - push hl - ld de, GFX_fd86b - lb bc, BANK(GFX_fd86b), 4 - call CopyVideoDataAlternate - pop hl - ld de, 4 * $10 - add hl, de - pop af - dec a - jr nz, .asm_fd856 - ret - -GFX_fd86b: -INCBIN "gfx/unknown_fd86b.2bpp" - -Func_fd8ab: ; fd8ab (3f:58ab) - ld de, PikachuSprite - lb bc, BANK(PikachuSprite), (SandshrewSprite - PikachuSprite) / 32 - ld hl, vNPCSprites + $c * $10 - push bc - call CopyVideoDataAlternate - ld de, PikachuSprite + $c * $10 - ld hl, vNPCSprites2 + $c * $10 - ld a, [h_0xFFFC] - and a - jr z, .asm_fd8c9 - ld de, PikachuSprite + $c * $10 - ld hl, vNPCSprites2 + $4c * $10 -.asm_fd8c9 - pop bc - call CopyVideoDataAlternate - call Func_fd831 - call Func_fd845 - ret - -Func_fd8d4: ; fd8d4 (3f:58d4) - ld a, [wCurMap] - cp PEWTER_POKECENTER - ret nz - call Func_1542 - call Func_fcff2 - ret - -Func_fd8e1: ; fd8e1 (3f:58e1) - ld a, [wCurMap] - cp POKEMON_FAN_CLUB - ret nz - call Func_1542 - call Func_fcff2 - ret - -Func_fd8ee: ; fd8ee (3f:58ee) - ld a, [wCurMap] - cp BILLS_HOUSE - ret nz - call Func_1542 - ret - -Func_fd8f8: ; fd8f8 (3f:58f8) - call LoadCurrentMapView - call UpdateSprites - call Delay3 - ret - -Func_fd902: ; cosine? - ld a, e - add $10 - jr asm_fd908 - -Func_fd907: ; sine? - ld a, e -asm_fd908 - and $3f - cp $20 - jr nc, .asm_fd913 - call Func_fd91c - ld a, h - ret - -.asm_fd913 - and $1f - call Func_fd91c - ld a, h - cpl - inc a - ret - -Func_fd91c: - ld e, a - ld a, d - ld d, 0 - ld hl, Data_fd938 - add hl, de - add hl, de - ld e, [hl] - inc hl - ld d, [hl] - ld hl, 0 -.asm_fd92b - srl a - jr nc, .asm_fd930 - add hl, de -.asm_fd930 - sla e - rl d - and a - jr nz, .asm_fd92b - ret - -Data_fd938: - sine_wave $100 - -Func_fd978: ; fd978 (3f:5978) - ld hl, Data_fd99c - ld a, [wPikachuMood] - ld d, a -.asm_fd97f - ld a, [hli] - inc hl - cp d - jr c, .asm_fd97f - dec hl - ld e, [hl] - ld hl, Data_fd9a6 - ld a, [wPikachuHappiness] - ld d, a - ld bc, 6 -.asm_fd990 - ld a, [hl] - cp d - jr nc, .asm_fd997 - add hl, bc - jr .asm_fd990 - -.asm_fd997 - ld d, 0 - add hl, de - ld a, [hl] - ret - -Data_fd99c: -; First byte: mood threshold -; Second byte: column index in Data_fd9a6 - db $28, 1 - db $7f, 2 - db $80, 3 - db $d2, 4 - db $ff, 5 - -Data_fd9a6: -; First byte: happiness threshold -; Remaining bytes: loaded based on Pikachu's mood - db $32, $0e, $0e, $06, $0d, $0d - db $64, $09, $09, $05, $0c, $0c - db $82, $03, $03, $01, $08, $08 - db $a0, $03, $03, $04, $0f, $0f - db $c8, $11, $11, $07, $02, $02 - db $fa, $11, $11, $10, $0a, $0a - db $ff, $11, $11, $13, $14, $14 - -Func_fd9d0: ; fd9d0 (3f:59d0) - ld a, [H_AUTOBGTRANSFERENABLED] - push af - xor a - ld [H_AUTOBGTRANSFERENABLED], a - ld a, [de] - ld [$d448], a - inc de - push de - call Func_fd9e4 - pop de - pop af - ld [H_AUTOBGTRANSFERENABLED], a - ret - -Func_fd9e4: - call Func_fda2c - callab Func_720e3 - call Func_fd9ff - call Func_fda46 - call Func_fda9a - call Func_fda2c - call RunDefaultPaletteCommand - ret - -Func_fd9ff: - ld hl, $d44d - ld bc, $0011 - xor a - call FillMemory - ld hl, wNPCMovementDirections2 - ld bc, $0021 - xor a - call FillMemory - call Func_fe15c - ld hl, $0064 - ld a, l - ld [$d451], a - ld a, h - ld [$d452], a - ld a, $07 - ld [$d454], a - ld a, $06 - ld [$d455], a - ret - -Func_fda2c: - xor a - ld [H_AUTOBGTRANSFERENABLED], a - coord hl, 6, 5 - lb bc, 5, 5 - call TextBoxBorder - call Delay3 - call UpdateSprites - ld a, $01 - ld [H_AUTOBGTRANSFERENABLED], a - call Delay3 - ret - -Func_fda46: - ld a, [$d448] - cp $1d - jr c, .asm_fda4f - ld a, $00 -.asm_fda4f - ld e, a - ld d, $00 - ld hl, Data_fda5e - add hl, de - add hl, de - ld a, [hli] - ld h, [hl] - ld l, a - call Func_fe0d0 - ret - -Data_fda5e: - dw Data_fe28a - dw Data_fe28a - dw Data_fe2a4 - dw Data_fe2be - dw Data_fe2d8 - dw Data_fe2f2 - dw Data_fe30c - dw Data_fe326 - dw Data_fe340 - dw Data_fe35a - dw Data_fe374 - dw Data_fe390 - dw Data_fe3aa - dw Data_fe3c4 - dw Data_fe3de - dw Data_fe3f8 - dw Data_fe412 - dw Data_fe42c - dw Data_fe446 - dw Data_fe460 - dw Data_fe47a - dw Data_fe494 - dw Data_fe4b4 - dw Data_fe4ce - dw Data_fe4e8 - dw Data_fe502 - dw Data_fe520 - dw Data_fe53e - dw Data_fe558 - dw Data_fe28a - - -Func_fda9a: -.asm_fda9a - xor a - ld [H_AUTOBGTRANSFERENABLED], a - call Func_fe046 - call Func_fdad5 - call Func_fdad6 - call Func_fdad5 - ld a, $01 - ld [H_AUTOBGTRANSFERENABLED], a - call Func_fdab4 - and a - jr z, .asm_fda9a - ret - -Func_fdab4: - call Delay3 - call Func_fdac4 - and a - ret nz - call JoypadLowSensitivity - ld a, [hJoyPressed] - and A_BUTTON | B_BUTTON - ret - -Func_fdac4: - ld hl, $d451 - dec [hl] - jr nz, .asm_fdad0 - inc hl - ld a, [hl] - and a - jr z, .asm_fdad2 - dec [hl] -.asm_fdad0 - xor a - ret - -.asm_fdad2 - ld a, $01 - ret - -Func_fdad5: - ret - -Func_fdad6: - ld bc, wNPCMovementDirections2 + 1 - ld a, 4 -.asm_fdadb - push af - push bc - ld hl, 0 - add hl, bc - ld a, [hli] - and a - jr z, .asm_fdb26 - ld a, [hli] - ld [$d459], a - ld a, [hli] - ld [$d45a], a - ld a, [hli] - ld [$d45b], a - ld a, [hli] - ld [$d456], a - ld a, [hli] - ld [$d457], a - ld a, [hli] - ld [$d458], a - ld a, [hli] - ld [$d45c], a - push bc - call Func_fdb7e - pop bc - ld hl, 1 - add hl, bc - ld a, [$d459] - ld [hli], a - ld a, [$d45a] - ld [hli], a - ld a, [$d45b] - ld [hli], a - ld a, [$d456] - ld [hli], a - ld a, [$d457] - ld [hli], a - ld a, [$d458] - ld [hli], a - ld a, [$d45c] - ld [hl], a -.asm_fdb26 - pop bc - ld hl, 8 - add hl, bc - ld b, h - ld c, l - pop af - dec a - jr nz, .asm_fdadb - ret - -Func_fdb32: - ld hl, wNPCMovementDirections2 + 1 - ld de, 8 - ld c, 4 -.asm_fdb3a - ld a, [hl] - and a - jr z, .asm_fdb44 - add hl, de - dec c - jr nz, .asm_fdb3a - scf - ret - -.asm_fdb44 - ld a, [wNPCMovementDirections2] - inc a - ld [wNPCMovementDirections2], a - ld [hli], a - call Func_fe0c3 - ld [hli], a - call Func_fe0c3 - ld [hl], a - xor a - ld [hli], a - ld [hli], a - call Func_fe0c3 - ld [hli], a - call Func_fe0c3 - ld [hli], a - call Func_fe0c3 - ld [hli], a - and a - ret - -Func_fdb65 - call Func_fe0c3 - ld b, a - ld hl, wNPCMovementDirections2 + 1 - ld de, 8 - ld c, 4 -.asm_fdb71 - ld a, [hl] - cp b - jr z, .asm_fdb7b - add hl, de - dec c - jr nz, .asm_fdb71 - scf - ret - -.asm_fdb7b - xor a - ld [hl], a - ret - -Func_fdb7e: -.asm_fdb7e - ld a, [$d459] - cp $23 - jr c, .asm_fdb87 - ld a, $04 -.asm_fdb87 - ld e, a - ld d, $00 - ld hl, Pointers_fdbc9 - add hl, de - add hl, de - ld a, [hli] - ld h, [hl] - ld l, a - ld a, [$d45a] - ld e, a - ld d, 0 - add hl, de - add hl, de - ld a, [hli] - cp $e0 - jr z, .asm_fdba1 - jr .asm_fdbaa - -.asm_fdba1 - xor a - ld [$d45a], a - ld [$d45b], a - jr .asm_fdb7e - -.asm_fdbaa - push hl - call Func_fdd62 - pop hl - ld a, [hl] - and a - jr z, .asm_fdbc8 - ld a, [$d45b] - inc a - ld [$d45b], a - cp [hl] - jr nz, .asm_fdbc8 - xor a - ld [$d45b], a - ld a, [$d45a] - inc a - ld [$d45a], a -.asm_fdbc8 - ret - -Pointers_fdbc9: - dw Data_fdc11 - dw Data_fdc11 - dw Data_fdc29 - dw Data_fdc32 - dw Data_fdc3b - dw Data_fdc3e - dw Data_fdc41 - dw Data_fdc50 - dw Data_fdc61 - dw Data_fdc6e - dw Data_fdc77 - dw Data_fdc84 - dw Data_fdc8d - dw Data_fdc98 - dw Data_fdca5 - dw Data_fdcb2 - dw Data_fdcb7 - dw Data_fdcc2 - dw Data_fdccb - dw Data_fdcd4 - dw Data_fdcdf - dw Data_fdce8 - dw Data_fdcf1 - dw Data_fdcf6 - dw Data_fdd01 - dw Data_fdd0a - dw Data_fdd13 - dw Data_fdd1c - dw Data_fdd27 - dw Data_fdd2c - dw Data_fdd35 - dw Data_fdd40 - dw Data_fdd47 - dw Data_fdd54 - dw Data_fdd59 - dw Data_fdc3b - -Data_fdc11: - db $01, $14 - db $07, $02 - db $01, $01 - db $07, $02 - db $01, $01 - db $07, $08 - db $e0 -Data_fdc1e: - db $02, $02 - db $01, $01 - db $02, $02 - db $01, $01 - db $02, $08 - db $e0 -Data_fdc29: - db $00, $08 - db $08, $08 - db $00, $08 - db $08, $08 - db $e0 -Data_fdc32: - db $08, $08 - db $00, $08 - db $08, $08 - db $00, $08 - db $e0 -Data_fdc3b: - db $01, $00 - db $e0 -Data_fdc3e: - db $09, $00 - db $e0 -Data_fdc41: - db $00, $02 - db $0e, $04 - db $00, $08 - db $0e, $04 - db $00, $40 - db $0e, $04 - db $00, $40 - db $e0 -Data_fdc50: - db $00, $04 - db $0f, $04 - db $00, $04 - db $0f, $04 - db $00, $08 - db $0f, $04 - db $00, $08 - db $0f, $04 - db $e0 -Data_fdc61: - db $10, $01 - db $00, $01 - db $10, $01 - db $00, $40 - db $10, $01 - db $00, $40 - db $e0 -Data_fdc6e: - db $00, $08 - db $11, $08 - db $00, $14 - db $11, $08 - db $e0 -Data_fdc77: - db $00, $02 - db $12, $02 - db $00, $02 - db $12, $40 - db $00, $03 - db $12, $40 - db $e0 -Data_fdc84: - db $00, $08 - db $13, $40 - db $00, $04 - db $13, $40 - db $e0 -Data_fdc8d: - db $14, $08 - db $00, $02 - db $14, $08 - db $00, $02 - db $14, $08 - db $e0 -Data_fdc98: - db $15, $04 - db $00, $08 - db $15, $04 - db $00, $40 - db $15, $04 - db $00, $40 - db $e0 -Data_fdca5: - db $00, $02 - db $16, $02 - db $00, $02 - db $16, $02 - db $00, $14 - db $16, $02 - db $e0 -Data_fdcb2: - db $00, $08 - db $17, $08 - db $e0 -Data_fdcb7: - db $00, $08 - db $17, $03 - db $18, $05 - db $17, $03 - db $00, $05 - db $e0 -Data_fdcc2: - db $00, $14 - db $19, $08 - db $00, $14 - db $19, $08 - db $e0 -Data_fdccb: - db $00, $0d - db $1a, $0c - db $00, $64 - db $1a, $08 - db $e0 -Data_fdcd4: - db $00, $05 - db $1b, $05 - db $00, $05 - db $1b, $05 - db $00, $64 - db $e0 -Data_fdcdf: - db $00, $02 - db $1c, $02 - db $00, $02 - db $1c, $02 - db $e0 -Data_fdce8: - db $00, $05 - db $1d, $05 - db $00, $05 - db $1d, $05 - db $e0 -Data_fdcf1: - db $1e, $08 - db $00, $64 - db $e0 -Data_fdcf6: - db $00, $0a - db $1f, $03 - db $00, $03 - db $1f, $03 - db $00, $64 - db $e0 -Data_fdd01: - db $00, $03 - db $20, $64 - db $00, $08 - db $20, $08 - db $e0 -Data_fdd0a: - db $21, $06 - db $00, $06 - db $21, $06 - db $00, $06 - db $e0 -Data_fdd13: - db $00, $08 - db $22, $0c - db $00, $08 - db $22, $0c - db $e0 -Data_fdd1c: - db $00, $08 - db $09, $02 - db $0a, $01 - db $0b, $01 - db $0c, $64 - db $e0 -Data_fdd27: - db $00, $08 - db $24, $64 - db $e0 -Data_fdd2c: - db $00, $10 - db $25, $10 - db $00, $10 - db $25, $10 - db $e0 -Data_fdd35: - db $00, $06 - db $26, $06 - db $00, $06 - db $26, $06 - db $00, $64 - db $e0 -Data_fdd40: - db $00, $06 - db $09, $06 - db $0a, $64 - db $e0 -Data_fdd47: - db $00, $14 - db $09, $08 - db $00, $14 - db $09, $08 - db $0a, $08 - db $0b, $64 - db $e0 -Data_fdd54: - db $00, $04 - db $09, $64 - db $e0 -Data_fdd59: - db $00, $0c - db $09, $0c - db $00, $0c - db $09, $64 - db $e0 - -Func_fdd62: - and a - ret z - ld e, a - ld d, 0 - ld hl, Pointers_fddb8 - add hl, de - add hl, de - ld e, [hl] - inc hl - ld d, [hl] - ld a, [de] - ld c, a - inc de - ld a, [de] - ld b, a - inc de - push de - push bc - call Func_fdd98 - pop bc - pop de -.asm_fdd7c - push bc - push hl - ld a, [$d456] - ld c, a -.asm_fdd82 - ld a, [de] - inc de - cp $ff - jr z, .asm_fdd8a - add c - ld [hl], a -.asm_fdd8a - inc hl - dec b - jr nz, .asm_fdd82 - pop hl - ld bc, SCREEN_WIDTH - add hl, bc - pop bc - dec c - jr nz, .asm_fdd7c - ret - -Func_fdd98: - push bc - ld a, [$d458] - ld b, a - ld a, [$d455] - add b - coord hl, 0, 0 - ld bc, SCREEN_WIDTH - call AddNTimes - ld a, [$d457] - ld c, a - ld a, [$d454] - add c - ld c, a - ld b, 0 - add hl, bc - pop bc - ret - -Pointers_fddb8: - dw Data_fde0e - dw Data_fde0f - dw Data_fde2a - dw Data_fde60 - dw Data_fde63 - dw Data_fde67 - dw Data_fde6b - dw Data_fde45 - dw Data_fde6b - dw Data_fdfaa - dw Data_fdfc5 - dw Data_fdfe0 - dw Data_fdffb - dw Data_fe016 - dw Data_fde81 - dw Data_fde9c - dw Data_fdeb7 - dw Data_fded2 - dw Data_fdeed - dw Data_fdf08 - dw Data_fdf23 - dw Data_fdf3e - dw Data_fdf59 - dw Data_fdf74 - dw Data_fdf8f - dw Data_fdfaa - dw Data_fdfaa - dw Data_fdfaa - dw Data_fdfaa - dw Data_fdfaa - dw Data_fdfaa - dw Data_fdfaa - dw Data_fdfaa - dw Data_fdfaa - dw Data_fdfaa - dw Data_fdfaa - dw Data_fdfaa - dw Data_fdfaa - dw Data_fdfaa - dw Data_fdfaa - dw Data_fdfc5 - dw Data_fdfe0 - dw Data_fde0f - -Data_fde0e: - db $ff ; unused - -Data_fde0f: ; fde0f - db 5, 5 - db $00, $05, $0a, $0f, $14 - db $01, $06, $0b, $10, $15 - db $02, $07, $0c, $11, $16 - db $03, $08, $0d, $12, $17 - db $04, $09, $0e, $13, $18 - -Data_fde2a: ; fde2a - db 5, 5 - db $19, $1e, $23, $28, $2d - db $1a, $1f, $24, $29, $2e - db $1b, $20, $25, $2a, $2f - db $1c, $21, $26, $2b, $30 - db $1d, $22, $27, $2c, $31 - -Data_fde45: ; fde45 - db 5, 5 - db $ff, $ff, $ff, $ff, $ff - db $ff, $ff, $ff, $ff, $ff - db $ff, $20, $25, $ff, $ff - db $ff, $21, $26, $ff, $ff - db $ff, $ff, $ff, $ff, $ff - -Data_fde60: ; fde60 - db 1, 1 - db $00 - -Data_fde63: ; fde63 - db 2, 1 - db $00 - db $01 - -Data_fde67: ; fde67 - db 1, 2 - db $00, $01 - -Data_fde6b: ; fde6b - db 2, 2 - db $00, $01 - db $02, $03 - -Data_fde71: ; fde71 - db 3, 2 - db $00, $01 - db $02, $03 - db $04, $05 - -Data_fde79: ; fde79 - db 2, 3 - db $00, $01, $02 - db $03, $04, $05 - -Data_fde81: ; fde81 - db 5, 5 - db $ff, $ff, $ff, $ff, $ff - db $ff, $ff, $ff, $ff, $ff - db $00, $01, $02, $03, $04 - db $ff, $ff, $ff, $ff, $ff - db $ff, $ff, $ff, $ff, $ff - -Data_fde9c: ; fde9c - db 5, 5 - db $ff, $ff, $ff, $ff, $ff - db $ff, $ff, $ff, $ff, $ff - db $ff, $ff, $ff, $ff, $ff - db $00, $01, $02, $03, $04 - db $05, $06, $07, $08, $09 - -Data_fdeb7: ; fdeb7 - db 5, 5 - db $00, $01, $ff, $ff, $ff - db $02, $03, $ff, $ff, $ff - db $04, $05, $ff, $ff, $ff - db $ff, $ff, $ff, $ff, $ff - db $ff, $ff, $ff, $ff, $ff - -Data_fded2: ; fded2 - db 5, 5 - db $ff, $ff, $ff, $ff, $ff - db $00, $01, $02, $03, $04 - db $05, $06, $07, $08, $09 - db $0a, $0b, $0c, $0d, $0e - db $0f, $10, $11, $12, $13 - -Data_fdeed: ; fdeed - db 5, 5 - db $ff, $ff, $ff, $ff, $ff - db $ff, $ff, $ff, $00, $01 - db $ff, $ff, $ff, $02, $03 - db $ff, $ff, $ff, $ff, $ff - db $ff, $ff, $ff, $ff, $ff - -Data_fdf08: ; fdf08 - db 5, 5 - db $ff, $ff, $ff, $ff, $ff - db $ff, $ff, $ff, $ff, $ff - db $00, $01, $ff, $ff, $ff - db $02, $03, $ff, $ff, $ff - db $ff, $ff, $ff, $ff, $ff - -Data_fdf23: ; fdf23 - db 5, 5 - db $00, $01, $02, $03, $04 - db $05, $06, $07, $08, $09 - db $0a, $0b, $0c, $0d, $0e - db $0f, $10, $11, $12, $13 - db $14, $15, $16, $17, $18 - -Data_fdf3e: ; fdf3e - db 5, 5 - db $ff, $ff, $ff, $ff, $ff - db $ff, $ff, $ff, $ff, $ff - db $00, $01, $02, $03, $04 - db $05, $06, $07, $08, $09 - db $ff, $ff, $ff, $ff, $ff - -Data_fdf59: ; fdf59 - db 5, 5 - db $ff, $ff, $ff, $ff, $ff - db $ff, $ff, $ff, $ff, $ff - db $00, $01, $ff, $ff, $ff - db $02, $03, $ff, $ff, $ff - db $04, $05, $ff, $ff, $ff - -Data_fdf74: ; fdf74 - db 5, 5 - db $00, $01, $02, $03, $04 - db $05, $06, $07, $08, $09 - db $0a, $0b, $0c, $0d, $0e - db $0f, $10, $11, $12, $13 - db $14, $15, $16, $17, $18 - -Data_fdf8f: ; fdf8f - db 5, 5 - db $19, $1a, $1b, $1c, $1d - db $1e, $1f, $20, $21, $22 - db $23, $24, $25, $26, $27 - db $28, $29, $2a, $2b, $2c - db $2d, $2e, $2f, $30, $31 - -Data_fdfaa: ; fdfaa - db 5, 5 - db $00, $01, $02, $03, $04 - db $05, $06, $07, $08, $09 - db $0a, $0b, $0c, $0d, $0e - db $0f, $10, $11, $12, $13 - db $14, $15, $16, $17, $18 - -Data_fdfc5: ; fdfc5 - db 5, 5 - db $19, $1a, $1b, $1c, $1d - db $1e, $1f, $20, $21, $22 - db $23, $24, $25, $26, $27 - db $28, $29, $2a, $2b, $2c - db $2d, $2e, $2f, $30, $31 - -Data_fdfe0: ; fdfe0 - db 5, 5 - db $32, $33, $34, $35, $36 - db $37, $38, $39, $3a, $3b - db $3c, $3d, $3e, $3f, $40 - db $41, $42, $43, $44, $45 - db $46, $47, $48, $49, $4a - -Data_fdffb: ; fdffb - db 5, 5 - db $4b, $4c, $4d, $4e, $4f - db $50, $51, $52, $53, $54 - db $55, $56, $57, $58, $59 - db $5a, $5b, $5c, $5d, $5e - db $5f, $60, $61, $62, $63 - -Data_fe016: ; fe016 - db 5, 5 - db $64, $65, $66, $67, $68 - db $69, $6a, $6b, $6c, $6d - db $6e, $6f, $70, $71, $72 - db $73, $74, $75, $76, $77 - db $78, $79, $7a, $7b, $7c - -Func_fe031: - push hl - ld e, a - ld d, 0 - ld hl, Data_fe572 - add hl, de - add hl, de - add hl, de - add hl, de - ld a, [hli] - ld c, a - ld a, [hli] - ld b, a - ld a, [hli] - ld e, a - ld a, [hli] - ld d, a - pop hl - ret - -Func_fe046: - call Func_fe066 - ret c - xor a - ld [$d44f], a -.asm_fe04e - call Func_fe0c3 - ld e, a - ld d, 0 - ld hl, Jumptable_fe071 - add hl, de - add hl, de - ld a, [hli] - ld h, [hl] - ld l, a - call JumpToAddress - ld a, [$d44f] - and a - jr z, .asm_fe04e - ret - -Func_fe066: - ld a, [$d453] - and a - ret z - dec a - ld [$d453], a - scf - ret - -Jumptable_fe071: - dw Func_fe08f - dw Func_fe0af - dw Func_fe0db - dw Func_fdb32 - dw Func_fe0b6 - dw Func_fe0b6 - dw Func_fdb65 - dw Func_fe0b6 - dw Func_fe0b6 - dw Func_fe0b7 - dw Func_fe09c - dw Func_fe1c7 - dw Func_fe1d7 - dw Func_fe0a9 - dw Func_fe090 - -Func_fe08f: - ret - -Func_fe090: - ld a, 1 - ld [$d451], a - xor a - ld [$d452], a - jr Func_fe0a9 - -Func_fe09b: - ret - -Func_fe09c: - call Func_fe0c3 - ld [$d451], a - call Func_fe0c3 - ld [$d452], a - ret - -Func_fe0a9: - ld a, $ff - ld [$d44f], a - ret - -Func_fe0af: - call Func_fe0c3 - ld [$d453], a - ret - -Func_fe0b6: - ret - -Func_fe0b7: - call Func_fe0c3 - ld l, a - call Func_fe0c3 - ld h, a - call Func_fe0d0 - ret - -Func_fe0c3: - push hl - ld hl, $d44d - ld a, [hli] - ld h, [hl] - ld l, a - ld a, [hli] - call Func_fe0d0 - pop hl - ret - -Func_fe0d0: - push af - ld a, l - ld [$d44d], a - ld a, h - ld [$d44e], a - pop af - ret - -Func_fe0db: - ld a, [wUpdateSpritesEnabled] - push af - ld a, $ff - ld [wUpdateSpritesEnabled], a - ld a, [H_AUTOBGTRANSFERENABLED] - push af - xor a - ld [H_AUTOBGTRANSFERENABLED], a - ld a, [hTilesetType] - push af - xor a - ld [hTilesetType], a - call Func_fe0c3 - ld [$d450], a - ld a, [$d450] - call Func_fe031 - ld a, c - cp a, $ff - jr z, .asm_fe106 - call Func_fe114 - jr .asm_fe109 - -.asm_fe106 - call Func_fe128 -.asm_fe109 - pop af - ld [hTilesetType], a - pop af - ld [H_AUTOBGTRANSFERENABLED], a - pop af - ld [wUpdateSpritesEnabled], a - ret - -Func_fe114: ; fe114 - push de - ld a, [$d450] - ld d, a - ld e, c - call Func_fe17a - pop de - jr c, .asm_fe127 - call Func_fe167 - call CopyVideoDataAlternate - and a -.asm_fe127 - ret - -Func_fe128: ; fe128 - push de - ld a, [$d450] - ld d, a - ld e, $19 - call Func_fe17a - pop de - jr c, .asm_fe15b - ld a, b - call UncompressSpriteFromDE - ld a, $00 - call SwitchSRAMBankAndLatchClockData - ld hl, S_SPRITEBUFFER1 - ld de, S_SPRITEBUFFER0 - ld bc, SPRITEBUFFERSIZE * 2 - call CopyData - call PrepareRTCDataAndDisableSRAM - ld a, [$d450] - call Func_fe1af - call Func_fe167 - ld d, h - ld e, l - call InterlaceMergeSpriteBuffers -.asm_fe15b - ret - -Func_fe15c: - ld hl, wNPCMovementDirections - ld bc, $11 - xor a - call FillMemory - ret - -Func_fe167: - ld hl, vNPCSprites - push bc - ld b, a - and $f - swap a - ld c, a - ld a, b - and $f0 - swap a - ld b, a - add hl, bc - pop bc - ret - -Func_fe17a: - push bc - push hl - ld hl, wNPCMovementDirections + 1 - ld c, 8 -.asm_fe181 - ld a, [hl] - and a - jr z, .asm_fe192 - cp d - jr z, .asm_fe18f - inc hl - inc hl - dec c - jr nz, .asm_fe181 - scf - ret - -.asm_fe18f - inc hl - ld a, [hl] - ret - -.asm_fe192 - ld [hl], d - inc hl - ld a, [wNPCMovementDirections] - add $80 - ld [hl], a - ld a, [wNPCMovementDirections] - add e - ld [wNPCMovementDirections], a - cp $80 - jr z, .asm_fe1a7 - jr nc, .asm_fe1ab -.asm_fe1a7 - ld a, [hl] - and a - jr .asm_fe1ac - -.asm_fe1ab - scf -.asm_fe1ac - pop hl - pop bc - ret - -Func_fe1af: - push bc - push hl - ld b, a - ld hl, wNPCMovementDirections + 1 - ld c, 8 -.asm_fe1b7 - ld a, [hli] - cp b - jr z, .asm_fe1c2 - inc hl - dec c - jr nz, .asm_fe1b7 - scf - jr .asm_fe1c4 - -.asm_fe1c2 - ld a, [hl] - and a -.asm_fe1c4 - pop hl - pop bc - ret - -Func_fe1c7: - call Func_fe0c3 - cp $ff - ret z - ld e, a - callab PlayPikachuSoundClip - ret - -Func_fe1d7: - ld a, $1 - ld [wMuteAudioAndPauseMusic], a - call DelayFrame - ld a, [wAudioROMBank] - push af - ld a, BANK(SFX_Battle_2F) - ld [wAudioROMBank], a - ld [wAudioSavedROMBank], a - call Func_fe203 - call PlaySound - call Func_fe227 - call WaitForSoundToFinish - pop af - ld [wAudioROMBank], a - ld [wAudioSavedROMBank], a - xor a - ld [wMuteAudioAndPauseMusic], a - ret - -Func_fe203: - ld hl, MoveSoundTable - ld e, THUNDERBOLT - ld d, 0 - add hl, de - add hl, de - add hl, de - ld a, BANK(MoveSoundTable) - call GetFarByte - ld b, a - inc hl - ld a, BANK(MoveSoundTable) - call GetFarByte - inc hl - ld [wFrequencyModifier], a - ld a, BANK(MoveSoundTable) - call GetFarByte - ld [wTempoModifier], a - ld a, b - ret - -Func_fe227: - ld hl, Data_fe242 -.asm_fe22a - ld a, [hli] - cp $ff - ret z - ld c, a - ld b, [hl] - inc hl - push hl - call Func_fe238 - pop hl - jr .asm_fe22a - -Func_fe238: - ld a, b - ld [rBGP], a - call UpdateGBCPal_BGP - call DelayFrames - ret - -Data_fe242: - db 4, %11000000 - db 4, %11100100 - db 4, %11000000 - db 4, %11100100 - db 4, %11000000 - db 4, %11100100 - db 4, %11000000 - db 4, %11100100 - db 4, %11000000 - db 4, %11100100 - db 4, %11000000 - db 4, %11100100 - db 4, %11000000 - db 4, %11100100 - db 4, %11000000 - db 4, %11100100 - db 4, %11000000 - db 4, %11100100 - db 4, %11000000 - db 4, %11100100 - db $ff - -Data_fe26b: - dr $fe26b, $fe28a - -Data_fe28a: - dr $fe28a, $fe2a4 -Data_fe2a4: - dr $fe2a4, $fe2be -Data_fe2be: - dr $fe2be, $fe2d8 -Data_fe2d8: - dr $fe2d8, $fe2f2 -Data_fe2f2: - dr $fe2f2, $fe30c -Data_fe30c: - dr $fe30c, $fe326 -Data_fe326: - dr $fe326, $fe340 -Data_fe340: - dr $fe340, $fe35a -Data_fe35a: - dr $fe35a, $fe374 -Data_fe374: - dr $fe374, $fe390 -Data_fe390: - dr $fe390, $fe3aa -Data_fe3aa: - dr $fe3aa, $fe3c4 -Data_fe3c4: - dr $fe3c4, $fe3de -Data_fe3de: - dr $fe3de, $fe3f8 -Data_fe3f8: - dr $fe3f8, $fe412 -Data_fe412: - dr $fe412, $fe42c -Data_fe42c: - dr $fe42c, $fe446 -Data_fe446: - dr $fe446, $fe460 -Data_fe460: - dr $fe460, $fe47a -Data_fe47a: - dr $fe47a, $fe494 -Data_fe494: - dr $fe494, $fe4b4 -Data_fe4b4: - dr $fe4b4, $fe4ce -Data_fe4ce: - dr $fe4ce, $fe4e8 -Data_fe4e8: - dr $fe4e8, $fe502 -Data_fe502: - dr $fe502, $fe520 -Data_fe520: - dr $fe520, $fe53e -Data_fe53e: - dr $fe53e, $fe558 -Data_fe558: - dr $fe558, $fe572 - -Data_fe572: - dr $fe572, $fe66f +INCLUDE "engine/pikachu_pic_animation.asm" OfficerJennySprite: INCBIN "gfx/sprites/officer_jenny.2bpp" PikachuSprite: INCBIN "gfx/sprites/pikachu.2bpp" diff --git a/engine/pikachu_pic_animation.asm b/engine/pikachu_pic_animation.asm new file mode 100755 index 00000000..81a94cbd --- /dev/null +++ b/engine/pikachu_pic_animation.asm @@ -0,0 +1,2898 @@ +Func_fd004:: ; fd004 (3f:5004) + call Func_fd05e + jr c, asm_fd00f + call GetPikaPicAnimationScriptIndex + call Func_fcffb +asm_fd00f: ; fd00f (3f:500f) + ld [wExpressionNumber], a + ld hl, PikachuEmotionTable + call DoStarterPikachuEmotions + ret + +PikachuEmotionTable: ; fd019 (3f:4019) + dw PikachuEmotion0_fd115 + dw PikachuEmotion1_fd141 + dw PikachuEmotion2_fd116 + dw PikachuEmotion3_fd160 + dw PikachuEmotion4_fd136 + dw PikachuEmotion5_fd14d + dw PikachuEmotion6_fd153 + dw PikachuEmotion7_fd128 + dw PikachuEmotion8_fd147 + dw PikachuEmotion9_fd166 + dw PikachuEmotion10_fd11e + dw PikachuEmotion11_fd173 + dw PikachuEmotion12_fd17a + dw PikachuEmotion13_fd180 + dw PikachuEmotion14_fd189 + dw PikachuEmotion15_fd191 + dw PikachuEmotion16_fd197 + dw PikachuEmotion17_fd19d + dw PikachuEmotion18_fd1a3 + dw PikachuEmotion19_fd1a9 + dw PikachuEmotion20_fd1b1 + dw PikachuEmotion21_fd1b9 + dw PikachuEmotion22_fd1c1 + dw PikachuEmotion23_fd1c7 + dw PikachuEmotion24_fd1cf + dw PikachuEmotion25_fd1d7 + dw PikachuEmotion26_fd1df + dw PikachuEmotion27_fd1eb + dw PikachuEmotion28_fd1f1 + dw PikachuEmotion29_fd1f7 + dw PikachuEmotion30_fd1fc + dw PikachuEmotion31_fd20a + dw PikachuEmotion32_fd213 + dw PikachuEmotion33_fd05d + +PikachuEmotion33_fd05d: ; fd05d (3f:505d) + db $ff + +Func_fd05e: ; fd05e (3f:505e) + ld a, [wCurMap] + cp POKEMON_FAN_CLUB + jr nz, .notFanClub + ld hl, wPreventBlackout + bit 7, [hl] + ld a, $1d + jr z, .asm_fd0c9 + call Func_154a + ld a, $1e + jr nz, .asm_fd0c9 + jr .asm_fd096 +.notFanClub + ld a, [wCurMap] + cp PEWTER_POKECENTER + jr nz, .notPewterPokecenter + call Func_154a + ld a, $1a + jr nz, .asm_fd0c9 + jr .asm_fd096 +.notPewterPokecenter + callab Func_f24ae + ld a, e + cp $ff + jr nz, .asm_fd0c9 + jr .asm_fd096 +.asm_fd096 + call IsPlayerPikachuAsleepInParty + ld a, $b + jr c, .asm_fd0c9 + callab Func_fce73 ; same bank + ld a, $1c + jr c, .asm_fd0c9 + ld a, [wCurMap] + cp POKEMONTOWER_1 + jr c, .notInLavenderTower + cp POKEMONTOWER_7 + 1 + ld a, $16 + jr c, .asm_fd0c9 +.notInLavenderTower + ld a, [wd49c] + and a + jr z, .asm_fd0c7 + dec a + ld c, a + ld b, $0 + ld hl, Pointer_fd0cb + add hl, bc + ld a, [hl] + jr .asm_fd0c9 +.asm_fd0c7 + and a + ret +.asm_fd0c9 + scf + ret + +Pointer_fd0cb: + db $12, $15, $17, $18, $19 + +IsPlayerPikachuAsleepInParty:: ; fd0d0 (3f:50d0) + xor a + ld [wWhichPokemon], a +.loop + ld a, [wWhichPokemon] + ld c, a + ld b, $0 + ld hl, wPartySpecies + add hl, bc + ld a, [hl] + cp $ff + jr z, .done + cp PIKACHU + jr nz, .curMonNotStarterPikachu + callab IsThisPartymonStarterPikachu + jr nc, .curMonNotStarterPikachu + ld a, [wWhichPokemon] + ld hl, wPartyMon1Status + ld bc, wPartyMon2 - wPartyMon1 + call AddNTimes + ld a, [hl] + and SLP + jr z, .done + jr .curMonSleepingPikachu +.curMonNotStarterPikachu + ld a, [wWhichPokemon] + cp PARTY_LENGTH - 1 + jr z, .done + inc a + ld [wWhichPokemon], a + jr .loop +.curMonSleepingPikachu + scf + ret +.done + and a + ret + +PikachuEmotion0_fd115: ; fd115 (3f:5115) + db $ff + +PikachuEmotion2_fd116: ; fd116 (3f:5116) + pikaemotion_dummy2 + pikaemotion_emotebubble SMILE_BUBBLE + pikaemotion_pcm $22 + pikaemotion_5 $2 + db $ff + +PikachuEmotion10_fd11e: ; fd11e (3f:511e) + pikaemotion_dummy2 + pikaemotion_subcmd PIKAEMOTION_SUBCMD_LOADEXTRAPIKASPRITES + pikaemotion_emotebubble HEART_BUBBLE + pikaemotion_pcm $4 + pikaemotion_5 $a + db $ff + +PikachuEmotion7_fd128: ; fd128 (3f:5128) + pikaemotion_dummy2 + pikaemotion_subcmd PIKAEMOTION_SUBCMD_LOADEXTRAPIKASPRITES + pikaemotion_4 Pointer_fd224 + pikaemotion_pcm $0 + pikaemotion_4 Pointer_fd224 + pikaemotion_5 $7 + db $ff + +PikachuEmotion4_fd136: ; fd136 (3f:5136) + pikaemotion_dummy2 + pikaemotion_subcmd PIKAEMOTION_SUBCMD_LOADEXTRAPIKASPRITES + pikaemotion_4 Pointer_fd230 + pikaemotion_pcm $1c + pikaemotion_5 $4 + db $ff + +PikachuEmotion1_fd141: ; fd141 (3f:5141) + pikaemotion_dummy2 + pikaemotion_pcm $ff + pikaemotion_5 $1 + db $ff + +PikachuEmotion8_fd147: ; fd147 (3f:5147) + pikaemotion_dummy2 + pikaemotion_pcm $26 + pikaemotion_5 $8 + db $ff + +PikachuEmotion5_fd14d: ; fd14d (3f:514d) + pikaemotion_dummy2 + pikaemotion_pcm $1e + pikaemotion_5 $5 + db $ff + +PikachuEmotion6_fd153: ; fd153 (3f:5153) + pikaemotion_dummy2 + pikaemotion_subcmd PIKAEMOTION_SUBCMD_LOADEXTRAPIKASPRITES + pikaemotion_pcm $ff + pikaemotion_4 Pointer_fd21e + pikaemotion_emotebubble SKULL_BUBBLE + pikaemotion_5 $6 + db $ff + +PikachuEmotion3_fd160: ; fd160 (3f:5160) + pikaemotion_dummy2 + pikaemotion_pcm $27 + pikaemotion_5 $3 + db $ff + +PikachuEmotion9_fd166: ; fd166 (3f:5166) + pikaemotion_dummy2 + pikaemotion_subcmd PIKAEMOTION_SUBCMD_LOADEXTRAPIKASPRITES + pikaemotion_pcm $5 + pikaemotion_4 Pointer_fd218 + pikaemotion_emotebubble SKULL_BUBBLE + pikaemotion_5 $9 + db $ff + +PikachuEmotion11_fd173: ; fd173 (3f:5173) + pikaemotion_emotebubble ZZZ_BUBBLE + pikaemotion_pcm $24 + pikaemotion_5 $b + db $ff + +PikachuEmotion12_fd17a: ; fd17a (3f:517a) + pikaemotion_dummy2 + pikaemotion_pcm $ff + pikaemotion_5 $c + db $ff + +PikachuEmotion13_fd180: ; fd180 (3f:5180) + pikaemotion_dummy2 + pikaemotion_subcmd PIKAEMOTION_SUBCMD_LOADEXTRAPIKASPRITES + pikaemotion_4 Pointer_fd21e + pikaemotion_5 $d + db $ff + +PikachuEmotion14_fd189: ; fd189 (3f:5189) + pikaemotion_dummy2 + pikaemotion_emotebubble BOLT_BUBBLE + pikaemotion_pcm $9 + pikaemotion_5 $e + db $ff + +PikachuEmotion15_fd191: ; fd191 (3f:5191) + pikaemotion_dummy2 + pikaemotion_pcm $21 + pikaemotion_5 $f + db $ff + +PikachuEmotion16_fd197: ; fd197 (3f:5197) + pikaemotion_dummy2 + pikaemotion_pcm $20 + pikaemotion_5 $10 + db $ff + +PikachuEmotion17_fd19d: ; fd19d (3f:519d) + pikaemotion_dummy2 + pikaemotion_pcm $c + pikaemotion_5 $11 + db $ff + +PikachuEmotion18_fd1a3: ; fd1a3 (3f:51a3) + pikaemotion_dummy2 + pikaemotion_pcm $ff + pikaemotion_5 $12 + db $ff + +PikachuEmotion19_fd1a9: ; fd1a9 (3f:51a9) + pikaemotion_dummy2 + pikaemotion_emotebubble HEART_BUBBLE + pikaemotion_pcm $20 + pikaemotion_5 $13 + db $ff + +PikachuEmotion20_fd1b1: ; fd1b1 (3f:51b1) + pikaemotion_dummy2 + pikaemotion_emotebubble HEART_BUBBLE + pikaemotion_pcm $4 + pikaemotion_5 $14 + db $ff + +PikachuEmotion21_fd1b9: ; fd1b9 (3f:51b9) + pikaemotion_dummy2 + pikaemotion_emotebubble FISH_BUBBLE + pikaemotion_pcm $ff + pikaemotion_5 $15 + db $ff + +PikachuEmotion22_fd1c1: ; fd1c1 (3f:51c1) + pikaemotion_dummy2 + pikaemotion_pcm $3 + pikaemotion_5 $16 + db $ff + +PikachuEmotion23_fd1c7: ; fd1c7 (3f:51c7) + pikaemotion_dummy2 + pikaemotion_pcm $12 + pikaemotion_5 $17 + pikaemotion_subcmd PIKAEMOTION_SUBCMD_SHOWMAPVIEW + db $ff + +PikachuEmotion24_fd1cf: ; fd1cf (3f:51cf) + pikaemotion_dummy2 + pikaemotion_emotebubble EXCLAMATION_BUBBLE + pikaemotion_pcm $ff + pikaemotion_5 $18 + db $ff + +PikachuEmotion25_fd1d7: ; fd1d7 (3f:51d7) + pikaemotion_dummy2 + pikaemotion_emotebubble BOLT_BUBBLE + pikaemotion_pcm $22 + pikaemotion_5 $19 + db $ff + +PikachuEmotion26_fd1df: ; fd1df (3f:51df) + pikaemotion_dummy2 + pikaemotion_emotebubble ZZZ_BUBBLE + pikaemotion_pcm $24 + pikaemotion_5 $1a + pikaemotion_subcmd PIKAEMOTION_SUBCMD_SHOWMAPVIEW + pikaemotion_subcmd PIKAEMOTION_SUBCMD_CHECKPEWTERCENTER + db $ff + +PikachuEmotion27_fd1eb: ; fd1eb (3f:51eb) + pikaemotion_dummy2 + pikaemotion_pcm $8 + pikaemotion_5 $1b + db $ff + +PikachuEmotion28_fd1f1: ; fd1f1 (3f:51f1) + pikaemotion_dummy2 + pikaemotion_pcm $e + pikaemotion_5 $1c + db $ff + +PikachuEmotion29_fd1f7: ; fd1f7 (3f:51f7) + pikaemotion_pcm $4 + pikaemotion_5 $a + db $ff + +PikachuEmotion30_fd1fc: ; fd1fc (3f:51fc) + pikaemotion_9 + pikaemotion_emotebubble HEART_BUBBLE + pikaemotion_pcm $4 + pikaemotion_5 $14 + pikaemotion_subcmd PIKAEMOTION_SUBCMD_SHOWMAPVIEW + pikaemotion_subcmd PIKAEMOTION_SUBCMD_LOADFONT + pikaemotion_subcmd PIKAEMOTION_SUBCMD_CHECKLAVENDERTOWER + db $ff + +PikachuEmotion31_fd20a: ; fd20a (3f:520a) + pikaemotion_pcm $12 + pikaemotion_5 $17 + pikaemotion_subcmd PIKAEMOTION_SUBCMD_SHOWMAPVIEW + pikaemotion_subcmd PIKAEMOTION_SUBCMD_CHECKBILLSHOUSE + db $ff + +PikachuEmotion32_fd213: ; fd213 (3f:5213) + pikaemotion_pcm $19 + pikaemotion_5 $17 + db $ff + +Pointer_fd218: ; fd218 (3f:5218) + + db $00 + db $39, $01 + db $3e, $1e + db $3f + +Pointer_fd21e: ; fd21e (3f:521e) + db $00 + db $39, $00 + db $3e, $1e + db $3f + +Pointer_fd224: ; fd224 (3f:5224) + db $00 + db $3c, $07, $2f + db $3c, $07, $2f + db $3f + +Pointer_fd22c: ; fd22c (3f:522c) + db $3b, $1f, $03 + db $3f + +Pointer_fd230: ; fd230 (3f:5230) + db $00 + db $3c, $0f, $1f + db $3c, $0f, $1f + db $3f + +Pointer_fd238: ; fd238 (3f:5238) + db $00 + db $05, $07 + db $39, $00 + db $05, $07 + db $06, $07 + db $39, $00 + db $06, $07 + db $08, $07 + db $39, $00 + db $08, $07 + db $07, $07 + db $39, $00 + db $07, $07 + db $3f + +Func_fd252: ; fd252 (3f:5252) + ld a, $40 + ld [h_0xFFFC], a + call LoadPikachuSpriteIntoVRAM + call Func_fd266 + and a + jr z, .asm_fd262 + call Func_159b +.asm_fd262 + xor a + ld [h_0xFFFC], a + ret + +Func_fd266: + ld a, [wSpriteStateData2 + 15 * 16 + 4] + ld e, a + ld a, [wSpriteStateData2 + 15 * 16 + 5] + ld d, a + ld a, [wYCoord] + add 4 + cp e + jr z, .asm_fd280 + jr nc, .asm_fd27e + ld hl, Data_fd294 + ld a, 1 + ret + +.asm_fd27e + xor a + ret + +.asm_fd280 + ld a, [wXCoord] + add 4 + cp d + jr c, .asm_fd28e + ld hl, Data_fd299 + ld a, 2 + ret + +.asm_fd28e + ld hl, Data_fd29d + ld a, 3 + ret + +Data_fd294: + db $00 + db $36 + db $2b + db $34 + db $3f + +Data_fd299: + db $00 + db $36 + db $34 + db $3f + +Data_fd29d: + db $00 + db $36 + db $33 + db $3f + +Func_fd2a1:: ; fd2a1 (3f:52a1) + ld a, b + ld [wd44a], a + ld a, l + ld [wd44b], a + ld a, h + ld [wd44b + 1], a + call PikachuSwapSpriteStateData +.loop + call Func_fd2f5 + jr nc, .done + call Func_fd329 + jr .loop + +.done + call PikachuSwapSpriteStateData + call DelayFrame + ret + +PikachuSwapSpriteStateData: + ld a, [wUpdateSpritesEnabled] + push af + ld a, $ff + ld [wUpdateSpritesEnabled], a + push hl + push de + push bc + + ld hl, wSpriteStateData1 + ld de, wSpriteStateData1 + $f0 + ld c, $10 + call SwapBytes3f + + ld hl, wSpriteStateData2 + ld de, wSpriteStateData2 + $f0 + ld c, $10 + call SwapBytes3f + + pop bc + pop de + pop hl + pop af + ld [wUpdateSpritesEnabled], a + ret + +SwapBytes3f: +.loop + ld b, [hl] + ld a, [de] + ld [hli], a + ld a, b + ld [de], a + inc de + dec c + jr nz, .loop + ret + +Func_fd2f5: + call Func_157c + cp $3f + ret z + ld c, a + ld b, 0 + ld hl, Data_fd3b0 + add hl, bc + add hl, bc + add hl, bc + add hl, bc + ld a, [hli] + ld [wPikaPicAnimPointer + 1], a + ld a, [hli] + cp $80 + jr nz, .asm_fd311 + call Func_157c +.asm_fd311 + ld [wPikaPicAnimPointer], a + ld a, [hli] + ld [$d450], a + ld a, [hli] + cp $80 + jr nz, .asm_fd320 + call Func_157c +.asm_fd320 + ld [$d44f], a + xor a + ld [wPikaPicAnimTimer], a + scf + ret + +Func_fd329: + xor a + ld [$d44c], a + ld [$d457], a + ld [$d458], a + ld a, [wSpriteStateData2 + 7] + push af +.asm_fd337 + ld bc, wSpriteStateData1 + ld a, [wPikaPicAnimPointer + 1] + ld hl, Jumptable_fd4ac + call Func_fd365 + ld a, [$d450] + ld hl, Jumptable_fd65c + call Func_fd365 + call Func_fd36e + call Func_fd39d + call DelayFrame + call DelayFrame + ld hl, $d44c + bit 7, [hl] + jr z, .asm_fd337 + pop af + ld [wSpriteStateData2 + 7], a + scf + ret + +Func_fd365: + ld e, a + ld d, 0 + add hl, de + add hl, de + ld a, [hli] + ld h, [hl] + ld l, a + jp [hl] + +Func_fd36e: + ld hl, 2 + add hl, bc + ld a, [wPikaPicAnimTimer + 1] + ld [hl], a + ld a, [wPikaSpriteY] + ld d, a + ld a, [$d456] + add d + ld hl, 4 + add hl, bc + ld [hl], a + ld a, [wPikaSpriteX] + ld d, a + ld a, [$d455] + add d + ld hl, 6 + add hl, bc + ld [hl], a + ld hl, $d44c + bit 6, [hl] + ret z + ld hl, wSpriteStateData2 + 7 - wSpriteStateData1 + add hl, bc + ld [hl], 0 + ret + +Func_fd39d: + ld hl, $d44c + bit 6, [hl] + res 6, [hl] + ld hl, wd736 + res 6, [hl] + ret z + set 6, [hl] + call Func_fd7f3 + ret + +Data_fd3b0: + db $01, $00, $00, $00 ; $00 + db $03, $80, $01, $00 ; $01 + db $04, $80, $01, $00 ; $02 + db $05, $80, $01, $00 ; $03 + db $06, $80, $01, $00 ; $04 + db $07, $80, $01, $00 ; $05 + db $08, $80, $01, $00 ; $06 + db $09, $80, $01, $00 ; $07 + db $0a, $80, $01, $00 ; $08 + db $03, $80, $06, $00 ; $09 + db $04, $80, $06, $00 ; $0a + db $05, $80, $06, $00 ; $0b + db $06, $80, $06, $00 ; $0c + db $07, $80, $06, $00 ; $0d + db $08, $80, $06, $00 ; $0e + db $09, $80, $06, $00 ; $0f + db $0a, $80, $06, $00 ; $10 + db $03, $80, $03, $80 ; $11 + db $04, $80, $03, $80 ; $12 + db $05, $80, $03, $80 ; $13 + db $06, $80, $03, $80 ; $14 + db $07, $80, $03, $80 ; $15 + db $08, $80, $03, $80 ; $16 + db $09, $80, $03, $80 ; $17 + db $0a, $80, $03, $80 ; $18 + db $03, $80, $07, $80 ; $19 + db $04, $80, $07, $80 ; $1a + db $05, $80, $07, $80 ; $1b + db $06, $80, $07, $80 ; $1c + db $0b, $27, $02, $00 ; $1d + db $0c, $27, $02, $00 ; $1e + db $0d, $27, $02, $00 ; $1f + db $0e, $27, $02, $00 ; $20 + db $0f, $27, $02, $00 ; $21 + db $10, $27, $02, $00 ; $22 + db $11, $27, $02, $00 ; $23 + db $12, $27, $02, $00 ; $24 + db $0b, $0f, $02, $00 ; $25 + db $0c, $0f, $02, $00 ; $26 + db $0d, $0f, $02, $00 ; $27 + db $0e, $0f, $02, $00 ; $28 + db $0f, $0f, $02, $00 ; $29 + db $10, $0f, $02, $00 ; $2a + db $11, $0f, $02, $00 ; $2b + db $12, $0f, $02, $00 ; $2c + db $0b, $0f, $08, $17 ; $2d + db $0c, $0f, $08, $17 ; $2e + db $0d, $0f, $08, $17 ; $2f + db $0e, $0f, $08, $17 ; $30 + db $0f, $0f, $08, $17 ; $31 + db $10, $0f, $08, $17 ; $32 + db $11, $0f, $08, $17 ; $33 + db $12, $0f, $08, $17 ; $34 + db $13, $0f, $06, $00 ; $35 + db $14, $0f, $06, $00 ; $36 + db $15, $0f, $06, $00 ; $37 + db $16, $0f, $06, $00 ; $38 + db $02, $80, $04, $00 ; $39 + db $02, $80, $05, $00 ; $3a + db $02, $80, $03, $80 ; $3b + db $02, $80, $07, $80 ; $3c + db $02, $80, $09, $80 ; $3d + db $02, $80, $06, $00 ; $3e + +Jumptable_fd4ac: + dw Func_fd4e5 + dw Func_fd4e9 + dw Func_fd504 + dw Func_fd50c + dw Func_fd511 + dw Func_fd518 + dw Func_fd52c + dw Func_fd540 + dw Func_fd553 + dw Func_fd566 + dw Func_fd579 + dw Func_fd5b1 + dw Func_fd5b5 + dw Func_fd5b9 + dw Func_fd5bd + dw Func_fd5c1 + dw Func_fd5c5 + dw Func_fd5c9 + dw Func_fd5cd + dw Func_fd5ea + dw Func_fd5ee + dw Func_fd5f2 + dw Func_fd5f6 + dw Func_fd4e5 + +Func_fd4dc: + ld a, [$d44c] + set 7, a + ld [$d44c], a + ret + +Func_fd4e5: + call Func_fd4dc + ret + +Func_fd4e9: + ld hl, 4 + add hl, bc + ld a, [hl] + ld [wPikaSpriteY], a + ld hl, 6 + add hl, bc + ld a, [hl] + ld [wPikaSpriteX], a + xor a + ld [$d456], a + ld [$d455], a + call Func_fd4dc + ret + +Func_fd504: + call Func_fd775 + ret nz + call Func_fd4dc + ret + +Func_fd50c: + call GetObjectFacing + jr asm_fd58c + +Func_fd511: + call GetObjectFacing + xor %100 + jr asm_fd58c + +Func_fd518: + call GetObjectFacing + ld hl, Data_fd523 + call Func_fd5a0 + jr asm_fd58c + +Data_fd523: + db SPRITE_FACING_DOWN, SPRITE_FACING_RIGHT + db SPRITE_FACING_UP, SPRITE_FACING_LEFT + db SPRITE_FACING_LEFT, SPRITE_FACING_DOWN + db SPRITE_FACING_RIGHT, SPRITE_FACING_UP + db $ff + +Func_fd52c: + call GetObjectFacing + ld hl, Data_fd537 + call Func_fd5a0 + jr asm_fd58c + +Data_fd537: + db SPRITE_FACING_DOWN, SPRITE_FACING_LEFT + db SPRITE_FACING_UP, SPRITE_FACING_RIGHT + db SPRITE_FACING_LEFT, SPRITE_FACING_UP + db SPRITE_FACING_RIGHT, SPRITE_FACING_DOWN + db $ff + +Func_fd540: + call GetObjectFacing + ld hl, Data_fd54b + call Func_fd5a0 + jr asm_fd58c + +Data_fd54b: + db SPRITE_FACING_DOWN, SPRITE_FACING_UP | $10 + db SPRITE_FACING_UP, SPRITE_FACING_LEFT | $10 + db SPRITE_FACING_LEFT, SPRITE_FACING_DOWN | $10 + db SPRITE_FACING_RIGHT, SPRITE_FACING_RIGHT | $10 + +Func_fd553: + call GetObjectFacing + ld hl, Data_fd55e + call Func_fd5a0 + jr asm_fd58c + +Data_fd55e: + db SPRITE_FACING_DOWN, SPRITE_FACING_DOWN | $10 + db SPRITE_FACING_UP, SPRITE_FACING_RIGHT | $10 + db SPRITE_FACING_LEFT, SPRITE_FACING_LEFT | $10 + db SPRITE_FACING_RIGHT, SPRITE_FACING_UP | $10 + +Func_fd566: + call GetObjectFacing + ld hl, Data_fd571 + call Func_fd5a0 + jr asm_fd58c + +Data_fd571: + db SPRITE_FACING_DOWN, SPRITE_FACING_RIGHT | $10 + db SPRITE_FACING_UP, SPRITE_FACING_DOWN | $10 + db SPRITE_FACING_LEFT, SPRITE_FACING_UP | $10 + db SPRITE_FACING_RIGHT, SPRITE_FACING_LEFT | $10 + +Func_fd579: + call GetObjectFacing + ld hl, Data_fd584 + call Func_fd5a0 + jr asm_fd58c + +Data_fd584: + db SPRITE_FACING_DOWN, SPRITE_FACING_LEFT | $10 + db SPRITE_FACING_UP, SPRITE_FACING_UP | $10 + db SPRITE_FACING_LEFT, SPRITE_FACING_RIGHT | $10 + db SPRITE_FACING_RIGHT, SPRITE_FACING_DOWN | $10 + +asm_fd58c + rrca + rrca + and $7 + ld e, a + call Func_fd784 + ld d, a + call UpdatePikachuPosition + call Func_fd775 + ret nz + call Func_fd4dc + ret + +Func_fd5a0: + push de + ld d, a +.asm_fd5a2 + ld a, [hli] + cp d + jr z, .asm_fd5ad + inc hl + cp $ff + jr nz, .asm_fd5a2 + pop de + ret + +.asm_fd5ad + ld a, [hl] + pop de + scf + ret + +Func_fd5b1: + ld a, SPRITE_FACING_DOWN >> 2 + jr asm_fd5d1 + +Func_fd5b5: + ld a, SPRITE_FACING_UP >> 2 + jr asm_fd5d1 + +Func_fd5b9: + ld a, SPRITE_FACING_LEFT >> 2 + jr asm_fd5d1 + +Func_fd5bd: + ld a, SPRITE_FACING_RIGHT >> 2 + jr asm_fd5d1 + +Func_fd5c1: + ld e, 4 + jr asm_fd5d5 + +Func_fd5c5: + ld e, 5 + jr asm_fd5d5 + +Func_fd5c9: + ld e, 6 + jr asm_fd5d5 + +Func_fd5cd: + ld e, 7 + jr asm_fd5d5 + +asm_fd5d1 + ld e, a + call SetObjectFacing +asm_fd5d5 + call Func_fd784 + ld d, a + push de + call UpdatePikachuPosition + pop de + call Func_fd775 + ret nz + ld a, e + call Func_fd7cb + call Func_fd4dc + ret + +Func_fd5ea: + ld a, SPRITE_FACING_DOWN >> 2 + jr asm_fd5fa + +Func_fd5ee: + ld a, SPRITE_FACING_UP >> 2 + jr asm_fd5fa + +Func_fd5f2: + ld a, SPRITE_FACING_LEFT >> 2 + jr asm_fd5fa + +Func_fd5f6: + ld a, SPRITE_FACING_RIGHT >> 2 + jr asm_fd5fa + +asm_fd5fa + call SetObjectFacing + call Func_fd4dc + ret + +UpdatePikachuPosition: + push de + ld d, 0 + ld hl, Jumptable_fd60f + add hl, de + add hl, de + ld a, [hli] + ld h, [hl] + ld l, a + pop de + ld a, d + jp [hl] + +Jumptable_fd60f: + dw MovePikachuSpriteDown + dw MovePikachuSpriteUp + dw MovePikachuSpriteLeft + dw MovePikachuSpriteRight + dw MovePikachuSpriteDownLeft + dw MovePikachuSpriteDownRight + dw MovePikachuSpriteUpLeft + dw MovePikachuSpriteUpRight + +MovePikachuSpriteDown: + ld d, 0 + ld e, a + jr asm_fd64d + +MovePikachuSpriteUp: + ld d, 0 + cpl + inc a + ld e, a + jr asm_fd64d + +MovePikachuSpriteLeft: + cpl + inc a + ld d, a + ld e, 0 + jr asm_fd64d + +MovePikachuSpriteRight: + ld d, a + ld e, 0 + jr asm_fd64d + +MovePikachuSpriteDownLeft: + ld e, a + cpl + inc a + ld d, a + jr asm_fd64d + +MovePikachuSpriteDownRight: + ld e, a + ld d, a + jr asm_fd64d + +MovePikachuSpriteUpLeft: + cpl + inc a + ld e, a + ld d, a + jr asm_fd64d + +MovePikachuSpriteUpRight: + ld d, a + cpl + inc a + ld e, a + jr asm_fd64d + +asm_fd64d + ld a, [wPikaSpriteX] + add d + ld [wPikaSpriteX], a + ld a, [wPikaSpriteY] + add e + ld [wPikaSpriteY], a + ret + +Jumptable_fd65c: + dw Func_fd678 + dw Func_fd6a3 + dw Func_fd698 + dw Func_fd6f4 + dw Func_fd6ff + dw Func_fd718 + dw Func_fd68c + dw Func_fd6c6 + dw Func_fd6c0 + dw Func_fd6e2 + dw Func_fd68b + +Func_fd672: + ld hl, $d44c + set 6, [hl] + ret + +Func_fd678: + ld hl, 7 + add hl, bc + xor a + ld [hli], a + ld [hl], a + call Func_fd74a + ld d, a + call GetObjectFacing + or d + ld [wPikaPicAnimTimer + 1], a + ret + +Func_fd68b: + ret + +Func_fd68c: + call Func_fd74a + ld d, a + call Func_fd755 + or d + ld [wPikaPicAnimTimer + 1], a + ret + +Func_fd698: + call Func_fd74a + ld d, a + call GetObjectFacing + or d + ld d, a + jr asm_fd6ac + +Func_fd6a3: + call Func_fd74a + ld d, a + call Func_fd755 + or d + ld d, a +asm_fd6ac + ld hl, 8 + add hl, bc + call Func_fd78e + jr nz, .asm_fd6b6 + inc [hl] +.asm_fd6b6 + ld a, [hl] + rrca + rrca + and 3 + or d + ld [wPikaPicAnimTimer + 1], a + ret + +Func_fd6c0: + call GetObjectFacing + ld d, a + jr asm_fd6ca + +Func_fd6c6: + call Func_fd755 + ld d, a +asm_fd6ca + call Func_fd74a + or d + ld d, a + call Func_fd736 + or d + ld [wPikaPicAnimTimer + 1], a + call Func_fd79d + ld [$d456], a + and a + ret z + call Func_fd672 + ret + +Func_fd6e2: + call GetObjectFacing + ld d, a + call Func_fd74a + or d + ld [wPikaPicAnimTimer + 1], a + call Func_fd79d + ld [$d456], a + ret + +Func_fd6f4: + ld a, [$d44f] + and $40 + cp $40 + jr z, Func_fd6ff + jr Func_fd718 + +Func_fd6ff: + call Func_fd755 + ld d, a + call Func_fd78e + jr nz, .asm_fd710 + ld hl, Data_fd731 +.asm_fd70b + ld a, [hli] + cp d + jr nz, .asm_fd70b + ld d, [hl] +.asm_fd710 + call Func_fd74a + or d + ld [wPikaPicAnimTimer + 1], a + ret + +Func_fd718: + call Func_fd755 + ld d, a + call Func_fd78e + jr nz, .asm_fd529 + ld hl, Data_fd731End +.asm_fd524 + ld a, [hld] + cp d + jr nz, .asm_fd524 + ld d, [hl] +.asm_fd529 + call Func_fd74a + or d + ld [wPikaPicAnimTimer + 1], a + ret + +Data_fd731: + db SPRITE_FACING_DOWN + db SPRITE_FACING_LEFT + db SPRITE_FACING_UP + db SPRITE_FACING_RIGHT + db SPRITE_FACING_DOWN +Data_fd731End: + +Func_fd736: + push hl + ld hl, 7 + add hl, bc + ld a, [hl] + inc a + and $3 + ld [hli], a + jr nz, .asm_fd747 + ld a, [hl] + inc a + and $3 + ld [hl], a +.asm_fd747 + ld a, [hl] + pop hl + ret + +Func_fd74a: + push hl + ld hl, wSpriteStateData2 - wSpriteStateData1 + 14 + add hl, bc + ld a, [hl] + dec a + swap a + pop hl + ret + +Func_fd755: + push hl + ld hl, 2 + add hl, bc + ld a, [hl] + and $c + pop hl + ret + +GetObjectFacing: + push hl + ld hl, 9 + add hl, bc + ld a, [hl] + and $c + pop hl + ret + +SetObjectFacing: + push hl + ld hl, 9 + add hl, bc + add a + add a + and $c + ld [hl], a + pop hl + ret + +Func_fd775: + ld hl, $d457 + inc [hl] + ld a, [wPikaPicAnimPointer] + and $1f + inc a + cp [hl] + ret nz + ld [hl], 0 + ret + +Func_fd784: + ld a, [wPikaPicAnimPointer] + swap a + rrca + and $3 + inc a + ret + +Func_fd78e: + ld hl, $d458 + inc [hl] + ld a, [$d44f] + and $f + inc a + cp [hl] + ret nz + ld [hl], 0 + ret + +Func_fd79d: + call Func_fd7b2 + ld a, [$d458] + add e + ld [$d458], a + add $20 + ld e, a + push hl + push bc + call Sine_e + pop bc + pop hl + ret + +Func_fd7b2: + ld a, [$d44f] + and $f + inc a + ld d, a + ld a, [$d44f] + swap a + and $7 + ld e, a + ld a, 1 + jr z, .asm_fd7c9 +.asm_fd7c5 + add a + dec e + jr nz, .asm_fd7c5 +.asm_fd7c9 + ld e, a + ret + +Func_fd7cb: + push bc + ld c, a + ld b, 0 + ld hl, Data_fd7e3 + add hl, bc + add hl, bc + ld d, [hl] + inc hl + ld e, [hl] + pop bc + ld hl, wSpriteStateData2 - wSpriteStateData1 + 4 + add hl, bc + ld a, [hl] + add e + ld [hli], a + ld a, [hl] + add d + ld [hl], a + ret + +Data_fd7e3: + db 0, 1 + db 0, -1 + db -1, 0 + db 1, 0 + db -1, 1 + db 1, 1 + db -1, -1 + db 1, -1 + +Func_fd7f3: + push bc + push de + push hl + + ld bc, wOAMBuffer + 4 * 36 + ld a, [wPikaSpriteY] + ld e, a + ld a, [wPikaSpriteX] + ld d, a + ld hl, Data_fd80b + call Func_fd814 + + pop hl + pop de + pop bc + ret + +Data_fd80b: + db $02 + db $0c, $00, $ff, 0 + db $0c, $08, $ff, 1 << OAM_X_FLIP + +Func_fd814: + ld a, e + add $10 + ld e, a + ld a, d + add $8 + ld d, a + ld a, [hli] +.asm_fd81d + push af + ld a, [hli] + add e + ld [bc], a + inc bc + ld a, [hli] + add d + ld [bc], a + inc bc + ld a, [hli] + ld [bc], a + inc bc + ld a, [hli] + ld [bc], a + inc bc + pop af + dec a + jr nz, .asm_fd81d + ret + +LoadPikachuShadowIntoVRAM: + ld hl, vNPCSprites2 + $7f * $10 + ld de, LedgeHoppingShadowGFX_3F + lb bc, BANK(LedgeHoppingShadowGFX_3F), (LedgeHoppingShadowGFX_3FEnd - LedgeHoppingShadowGFX_3F) / 8 + jp CopyVideoDataDoubleAlternate + +LedgeHoppingShadowGFX_3F: +INCBIN "gfx/ledge_hopping_shadow.1bpp" +LedgeHoppingShadowGFX_3FEnd: + +LoadPikachuBallIconIntoVRAM: + ld hl, vNPCSprites2 + $7e * $10 + ld de, GFX_fd86b + lb bc, BANK(GFX_fd86b), 1 + jp CopyVideoDataDoubleAlternate + +Func_fd851: + ld hl, vNPCSprites + $c * $10 + ld a, 3 +.asm_fd856 + push af + push hl + ld de, GFX_fd86b + lb bc, BANK(GFX_fd86b), 4 + call CopyVideoDataAlternate + pop hl + ld de, 4 * $10 + add hl, de + pop af + dec a + jr nz, .asm_fd856 + ret + +GFX_fd86b: +INCBIN "gfx/unknown_fd86b.2bpp" + +LoadPikachuSpriteIntoVRAM: ; fd8ab (3f:58ab) + ld de, PikachuSprite + lb bc, BANK(PikachuSprite), (SandshrewSprite - PikachuSprite) / 32 + ld hl, vNPCSprites + $c * $10 + push bc + call CopyVideoDataAlternate + ld de, PikachuSprite + $c * $10 + ld hl, vNPCSprites2 + $c * $10 + ld a, [h_0xFFFC] + and a + jr z, .load + ld de, PikachuSprite + $c * $10 + ld hl, vNPCSprites2 + $4c * $10 +.load + pop bc + call CopyVideoDataAlternate + call LoadPikachuShadowIntoVRAM + call LoadPikachuBallIconIntoVRAM + ret + +PikachuPewterPokecenterCheck: ; fd8d4 (3f:58d4) + ld a, [wCurMap] + cp PEWTER_POKECENTER + ret nz + call Func_1542 + call Func_fcff2 + ret + +PikachuFanClubCheck: ; fd8e1 (3f:58e1) + ld a, [wCurMap] + cp POKEMON_FAN_CLUB + ret nz + call Func_1542 + call Func_fcff2 + ret + +PikachuBillsHouseCheck: ; fd8ee (3f:58ee) + ld a, [wCurMap] + cp BILLS_HOUSE + ret nz + call Func_1542 + ret + +Pikachu_LoadCurrentMapViewUpdateSpritesAndDelay3: ; fd8f8 (3f:58f8) + call LoadCurrentMapView + call UpdateSprites + call Delay3 + ret + +Cosine_e: ; cosine? + ld a, e + add $10 + jr asm_fd908 + +Sine_e: ; sine? + ld a, e +asm_fd908 + and $3f + cp $20 + jr nc, .asm_fd913 + call GetSine + ld a, h + ret + +.asm_fd913 + and $1f + call GetSine + ld a, h + cpl + inc a + ret + +GetSine: + ld e, a + ld a, d + ld d, 0 + ld hl, SineWave_3f + add hl, de + add hl, de + ld e, [hl] + inc hl + ld d, [hl] + ld hl, 0 +.asm_fd92b + srl a + jr nc, .asm_fd930 + add hl, de +.asm_fd930 + sla e + rl d + and a + jr nz, .asm_fd92b + ret + +SineWave_3f: + sine_wave $100 + +GetPikaPicAnimationScriptIndex: ; fd978 (3f:5978) + ld hl, PikachuMoodLookupTable + ld a, [wPikachuMood] + ld d, a +.asm_fd97f + ld a, [hli] + inc hl + cp d + jr c, .asm_fd97f + dec hl + ld e, [hl] + ld hl, PikaPicAnimationScriptPointerLookupTable + ld a, [wPikachuHappiness] + ld d, a + ld bc, 6 +.asm_fd990 + ld a, [hl] + cp d + jr nc, .asm_fd997 + add hl, bc + jr .asm_fd990 + +.asm_fd997 + ld d, 0 + add hl, de + ld a, [hl] + ret + +PikachuMoodLookupTable: +; First byte: mood threshold +; Second byte: column index in PikaPicAnimationScriptPointerLookupTable + db $28, 1 + db $7f, 2 + db $80, 3 + db $d2, 4 + db $ff, 5 + +PikaPicAnimationScriptPointerLookupTable: +; First byte: happiness threshold +; Remaining bytes: loaded based on Pikachu's mood + db $32, $0e, $0e, $06, $0d, $0d + db $64, $09, $09, $05, $0c, $0c + db $82, $03, $03, $01, $08, $08 + db $a0, $03, $03, $04, $0f, $0f + db $c8, $11, $11, $07, $02, $02 + db $fa, $11, $11, $10, $0a, $0a + db $ff, $11, $11, $13, $14, $14 + +StarterPikachuEmotionCommand_5: ; fd9d0 (3f:59d0) + ld a, [H_AUTOBGTRANSFERENABLED] + push af + xor a + ld [H_AUTOBGTRANSFERENABLED], a + ld a, [de] + ld [wExpressionNumber2], a + inc de + push de + call Func_fd9e4 + pop de + pop af + ld [H_AUTOBGTRANSFERENABLED], a + ret + +Func_fd9e4: + call Func_fda2c + callab Func_720e3 + call Func_fd9ff + call LoadCurrentPikaPicAnimScriptPointer + call Func_fda9a + call Func_fda2c + call RunDefaultPaletteCommand + ret + +Func_fd9ff: + ld hl, wPikaPicAnimPointer + ld bc, $11 + xor a + call FillMemory + ld hl, wNPCMovementDirections2 + ld bc, $21 + xor a + call FillMemory + call Func_fe15c + ld hl, $64 + ld a, l + ld [wPikaPicAnimTimer], a + ld a, h + ld [wPikaPicAnimTimer + 1], a + ld a, $07 + ld [wPikaSpriteY], a + ld a, $06 + ld [$d455], a + ret + +Func_fda2c: + xor a + ld [H_AUTOBGTRANSFERENABLED], a + coord hl, 6, 5 + lb bc, 5, 5 + call TextBoxBorder + call Delay3 + call UpdateSprites + ld a, $01 + ld [H_AUTOBGTRANSFERENABLED], a + call Delay3 + ret + +LoadCurrentPikaPicAnimScriptPointer: + ld a, [wExpressionNumber2] + cp $1d + jr c, .valid + ld a, 0 +.valid + ld e, a + ld d, 0 + ld hl, Pointers_fda5e + add hl, de + add hl, de + ld a, [hli] + ld h, [hl] + ld l, a + call UpdatePikaPicAnimPointer + ret + +Pointers_fda5e: + dw Data_fe28a ; 00 + dw Data_fe28a ; 01 + dw Data_fe2a4 ; 02 + dw Data_fe2be ; 03 + dw Data_fe2d8 ; 04 + dw Data_fe2f2 ; 05 + dw Data_fe30c ; 06 + dw Data_fe326 ; 07 + dw Data_fe340 ; 08 + dw Data_fe35a ; 09 + dw Data_fe374 ; 0a + dw Data_fe390 ; 0b + dw Data_fe3aa ; 0c + dw Data_fe3c4 ; 0d + dw Data_fe3de ; 0e + dw Data_fe3f8 ; 0f + dw Data_fe412 ; 10 + dw Data_fe42c ; 11 + dw Data_fe446 ; 12 + dw Data_fe460 ; 13 + dw Data_fe47a ; 14 + dw Data_fe494 ; 15 + dw Data_fe4b4 ; 16 + dw Data_fe4ce ; 17 + dw Data_fe4e8 ; 18 + dw Data_fe502 ; 19 + dw Data_fe520 ; 1a + dw Data_fe53e ; 1b + dw Data_fe558 ; 1c + dw Data_fe28a ; 1d + + +Func_fda9a: +.loop + xor a + ld [H_AUTOBGTRANSFERENABLED], a + call RunPikaPicAnimScript + call Func_fdad5 + call Func_fdad6 + call Func_fdad5 + ld a, $01 + ld [H_AUTOBGTRANSFERENABLED], a + call PikaPicAnimTimerAndJoypad + and a + jr z, .loop + ret + +PikaPicAnimTimerAndJoypad: + call Delay3 + call CheckPikaPicAnimTimer + and a + ret nz + call JoypadLowSensitivity + ld a, [hJoyPressed] + and A_BUTTON | B_BUTTON + ret + +CheckPikaPicAnimTimer: + ld hl, wPikaPicAnimTimer + dec [hl] + jr nz, .not_done_yet + inc hl + ld a, [hl] + and a + jr z, .timer_expired + dec [hl] +.not_done_yet + xor a + ret + +.timer_expired + ld a, $01 + ret + +Func_fdad5: + ret + +Func_fdad6: + ld bc, wNPCMovementDirections2 + 1 + ld a, 4 +.asm_fdadb + push af + push bc + ld hl, 0 + add hl, bc + ld a, [hli] + and a + jr z, .asm_fdb26 + ld a, [hli] + ld [$d459], a + ld a, [hli] + ld [$d45a], a + ld a, [hli] + ld [$d45b], a + ld a, [hli] + ld [$d456], a + ld a, [hli] + ld [$d457], a + ld a, [hli] + ld [$d458], a + ld a, [hli] + ld [$d45c], a + push bc + call Func_fdb7e + pop bc + ld hl, 1 + add hl, bc + ld a, [$d459] + ld [hli], a + ld a, [$d45a] + ld [hli], a + ld a, [$d45b] + ld [hli], a + ld a, [$d456] + ld [hli], a + ld a, [$d457] + ld [hli], a + ld a, [$d458] + ld [hli], a + ld a, [$d45c] + ld [hl], a +.asm_fdb26 + pop bc + ld hl, 8 + add hl, bc + ld b, h + ld c, l + pop af + dec a + jr nz, .asm_fdadb + ret + +Func_fdb32: + ld hl, wNPCMovementDirections2 + 1 + ld de, 8 + ld c, 4 +.asm_fdb3a + ld a, [hl] + and a + jr z, .asm_fdb44 + add hl, de + dec c + jr nz, .asm_fdb3a + scf + ret + +.asm_fdb44 + ld a, [wNPCMovementDirections2] + inc a + ld [wNPCMovementDirections2], a + ld [hli], a + call GetPikaPicAnimByte + ld [hli], a + call GetPikaPicAnimByte + ld [hl], a + xor a + ld [hli], a + ld [hli], a + call GetPikaPicAnimByte + ld [hli], a + call GetPikaPicAnimByte + ld [hli], a + call GetPikaPicAnimByte + ld [hli], a + and a + ret + +Func_fdb65: + call GetPikaPicAnimByte + ld b, a + ld hl, wNPCMovementDirections2 + 1 + ld de, 8 + ld c, 4 +.asm_fdb71 + ld a, [hl] + cp b + jr z, .asm_fdb7b + add hl, de + dec c + jr nz, .asm_fdb71 + scf + ret + +.asm_fdb7b + xor a + ld [hl], a + ret + +Func_fdb7e: +.asm_fdb7e + ld a, [$d459] + cp $23 + jr c, .asm_fdb87 + ld a, $04 +.asm_fdb87 + ld e, a + ld d, $00 + ld hl, Pointers_fdbc9 + add hl, de + add hl, de + ld a, [hli] + ld h, [hl] + ld l, a + ld a, [$d45a] + ld e, a + ld d, 0 + add hl, de + add hl, de + ld a, [hli] + cp $e0 + jr z, .asm_fdba1 + jr .asm_fdbaa + +.asm_fdba1 + xor a + ld [$d45a], a + ld [$d45b], a + jr .asm_fdb7e + +.asm_fdbaa + push hl + call Func_fdd62 + pop hl + ld a, [hl] + and a + jr z, .asm_fdbc8 + ld a, [$d45b] + inc a + ld [$d45b], a + cp [hl] + jr nz, .asm_fdbc8 + xor a + ld [$d45b], a + ld a, [$d45a] + inc a + ld [$d45a], a +.asm_fdbc8 + ret + +Pointers_fdbc9: + dw Data_fdc11 + dw Data_fdc11 + dw Data_fdc29 + dw Data_fdc32 + dw Data_fdc3b + dw Data_fdc3e + dw Data_fdc41 + dw Data_fdc50 + dw Data_fdc61 + dw Data_fdc6e + dw Data_fdc77 + dw Data_fdc84 + dw Data_fdc8d + dw Data_fdc98 + dw Data_fdca5 + dw Data_fdcb2 + dw Data_fdcb7 + dw Data_fdcc2 + dw Data_fdccb + dw Data_fdcd4 + dw Data_fdcdf + dw Data_fdce8 + dw Data_fdcf1 + dw Data_fdcf6 + dw Data_fdd01 + dw Data_fdd0a + dw Data_fdd13 + dw Data_fdd1c + dw Data_fdd27 + dw Data_fdd2c + dw Data_fdd35 + dw Data_fdd40 + dw Data_fdd47 + dw Data_fdd54 + dw Data_fdd59 + dw Data_fdc3b + +Data_fdc11: + db $01, $14 + db $07, $02 + db $01, $01 + db $07, $02 + db $01, $01 + db $07, $08 + db $e0 +Data_fdc1e: + db $02, $02 + db $01, $01 + db $02, $02 + db $01, $01 + db $02, $08 + db $e0 +Data_fdc29: + db $00, $08 + db $08, $08 + db $00, $08 + db $08, $08 + db $e0 +Data_fdc32: + db $08, $08 + db $00, $08 + db $08, $08 + db $00, $08 + db $e0 +Data_fdc3b: + db $01, $00 + db $e0 +Data_fdc3e: + db $09, $00 + db $e0 +Data_fdc41: + db $00, $02 + db $0e, $04 + db $00, $08 + db $0e, $04 + db $00, $40 + db $0e, $04 + db $00, $40 + db $e0 +Data_fdc50: + db $00, $04 + db $0f, $04 + db $00, $04 + db $0f, $04 + db $00, $08 + db $0f, $04 + db $00, $08 + db $0f, $04 + db $e0 +Data_fdc61: + db $10, $01 + db $00, $01 + db $10, $01 + db $00, $40 + db $10, $01 + db $00, $40 + db $e0 +Data_fdc6e: + db $00, $08 + db $11, $08 + db $00, $14 + db $11, $08 + db $e0 +Data_fdc77: + db $00, $02 + db $12, $02 + db $00, $02 + db $12, $40 + db $00, $03 + db $12, $40 + db $e0 +Data_fdc84: + db $00, $08 + db $13, $40 + db $00, $04 + db $13, $40 + db $e0 +Data_fdc8d: + db $14, $08 + db $00, $02 + db $14, $08 + db $00, $02 + db $14, $08 + db $e0 +Data_fdc98: + db $15, $04 + db $00, $08 + db $15, $04 + db $00, $40 + db $15, $04 + db $00, $40 + db $e0 +Data_fdca5: + db $00, $02 + db $16, $02 + db $00, $02 + db $16, $02 + db $00, $14 + db $16, $02 + db $e0 +Data_fdcb2: + db $00, $08 + db $17, $08 + db $e0 +Data_fdcb7: + db $00, $08 + db $17, $03 + db $18, $05 + db $17, $03 + db $00, $05 + db $e0 +Data_fdcc2: + db $00, $14 + db $19, $08 + db $00, $14 + db $19, $08 + db $e0 +Data_fdccb: + db $00, $0d + db $1a, $0c + db $00, $64 + db $1a, $08 + db $e0 +Data_fdcd4: + db $00, $05 + db $1b, $05 + db $00, $05 + db $1b, $05 + db $00, $64 + db $e0 +Data_fdcdf: + db $00, $02 + db $1c, $02 + db $00, $02 + db $1c, $02 + db $e0 +Data_fdce8: + db $00, $05 + db $1d, $05 + db $00, $05 + db $1d, $05 + db $e0 +Data_fdcf1: + db $1e, $08 + db $00, $64 + db $e0 +Data_fdcf6: + db $00, $0a + db $1f, $03 + db $00, $03 + db $1f, $03 + db $00, $64 + db $e0 +Data_fdd01: + db $00, $03 + db $20, $64 + db $00, $08 + db $20, $08 + db $e0 +Data_fdd0a: + db $21, $06 + db $00, $06 + db $21, $06 + db $00, $06 + db $e0 +Data_fdd13: + db $00, $08 + db $22, $0c + db $00, $08 + db $22, $0c + db $e0 +Data_fdd1c: + db $00, $08 + db $09, $02 + db $0a, $01 + db $0b, $01 + db $0c, $64 + db $e0 +Data_fdd27: + db $00, $08 + db $24, $64 + db $e0 +Data_fdd2c: + db $00, $10 + db $25, $10 + db $00, $10 + db $25, $10 + db $e0 +Data_fdd35: + db $00, $06 + db $26, $06 + db $00, $06 + db $26, $06 + db $00, $64 + db $e0 +Data_fdd40: + db $00, $06 + db $09, $06 + db $0a, $64 + db $e0 +Data_fdd47: + db $00, $14 + db $09, $08 + db $00, $14 + db $09, $08 + db $0a, $08 + db $0b, $64 + db $e0 +Data_fdd54: + db $00, $04 + db $09, $64 + db $e0 +Data_fdd59: + db $00, $0c + db $09, $0c + db $00, $0c + db $09, $64 + db $e0 + +Func_fdd62: + and a + ret z + ld e, a + ld d, 0 + ld hl, Pointers_fddb8 + add hl, de + add hl, de + ld e, [hl] + inc hl + ld d, [hl] + ld a, [de] + ld c, a + inc de + ld a, [de] + ld b, a + inc de + push de + push bc + call Func_fdd98 + pop bc + pop de +.asm_fdd7c + push bc + push hl + ld a, [$d456] + ld c, a +.asm_fdd82 + ld a, [de] + inc de + cp $ff + jr z, .asm_fdd8a + add c + ld [hl], a +.asm_fdd8a + inc hl + dec b + jr nz, .asm_fdd82 + pop hl + ld bc, SCREEN_WIDTH + add hl, bc + pop bc + dec c + jr nz, .asm_fdd7c + ret + +Func_fdd98: + push bc + ld a, [$d458] + ld b, a + ld a, [$d455] + add b + coord hl, 0, 0 + ld bc, SCREEN_WIDTH + call AddNTimes + ld a, [$d457] + ld c, a + ld a, [wPikaSpriteY] + add c + ld c, a + ld b, 0 + add hl, bc + pop bc + ret + +Pointers_fddb8: + dw Data_fde0e + dw Data_fde0f + dw Data_fde2a + dw Data_fde60 + dw Data_fde63 + dw Data_fde67 + dw Data_fde6b + dw Data_fde45 + dw Data_fde6b + dw Data_fdfaa + dw Data_fdfc5 + dw Data_fdfe0 + dw Data_fdffb + dw Data_fe016 + dw Data_fde81 + dw Data_fde9c + dw Data_fdeb7 + dw Data_fded2 + dw Data_fdeed + dw Data_fdf08 + dw Data_fdf23 + dw Data_fdf3e + dw Data_fdf59 + dw Data_fdf74 + dw Data_fdf8f + dw Data_fdfaa + dw Data_fdfaa + dw Data_fdfaa + dw Data_fdfaa + dw Data_fdfaa + dw Data_fdfaa + dw Data_fdfaa + dw Data_fdfaa + dw Data_fdfaa + dw Data_fdfaa + dw Data_fdfaa + dw Data_fdfaa + dw Data_fdfaa + dw Data_fdfaa + dw Data_fdfaa + dw Data_fdfc5 + dw Data_fdfe0 + dw Data_fde0f + +Data_fde0e: + db $ff ; unused + +Data_fde0f: ; fde0f + db 5, 5 + db $00, $05, $0a, $0f, $14 + db $01, $06, $0b, $10, $15 + db $02, $07, $0c, $11, $16 + db $03, $08, $0d, $12, $17 + db $04, $09, $0e, $13, $18 + +Data_fde2a: ; fde2a + db 5, 5 + db $19, $1e, $23, $28, $2d + db $1a, $1f, $24, $29, $2e + db $1b, $20, $25, $2a, $2f + db $1c, $21, $26, $2b, $30 + db $1d, $22, $27, $2c, $31 + +Data_fde45: ; fde45 + db 5, 5 + db $ff, $ff, $ff, $ff, $ff + db $ff, $ff, $ff, $ff, $ff + db $ff, $20, $25, $ff, $ff + db $ff, $21, $26, $ff, $ff + db $ff, $ff, $ff, $ff, $ff + +Data_fde60: ; fde60 + db 1, 1 + db $00 + +Data_fde63: ; fde63 + db 2, 1 + db $00 + db $01 + +Data_fde67: ; fde67 + db 1, 2 + db $00, $01 + +Data_fde6b: ; fde6b + db 2, 2 + db $00, $01 + db $02, $03 + +Data_fde71: ; fde71 + db 3, 2 + db $00, $01 + db $02, $03 + db $04, $05 + +Data_fde79: ; fde79 + db 2, 3 + db $00, $01, $02 + db $03, $04, $05 + +Data_fde81: ; fde81 + db 5, 5 + db $ff, $ff, $ff, $ff, $ff + db $ff, $ff, $ff, $ff, $ff + db $00, $01, $02, $03, $04 + db $ff, $ff, $ff, $ff, $ff + db $ff, $ff, $ff, $ff, $ff + +Data_fde9c: ; fde9c + db 5, 5 + db $ff, $ff, $ff, $ff, $ff + db $ff, $ff, $ff, $ff, $ff + db $ff, $ff, $ff, $ff, $ff + db $00, $01, $02, $03, $04 + db $05, $06, $07, $08, $09 + +Data_fdeb7: ; fdeb7 + db 5, 5 + db $00, $01, $ff, $ff, $ff + db $02, $03, $ff, $ff, $ff + db $04, $05, $ff, $ff, $ff + db $ff, $ff, $ff, $ff, $ff + db $ff, $ff, $ff, $ff, $ff + +Data_fded2: ; fded2 + db 5, 5 + db $ff, $ff, $ff, $ff, $ff + db $00, $01, $02, $03, $04 + db $05, $06, $07, $08, $09 + db $0a, $0b, $0c, $0d, $0e + db $0f, $10, $11, $12, $13 + +Data_fdeed: ; fdeed + db 5, 5 + db $ff, $ff, $ff, $ff, $ff + db $ff, $ff, $ff, $00, $01 + db $ff, $ff, $ff, $02, $03 + db $ff, $ff, $ff, $ff, $ff + db $ff, $ff, $ff, $ff, $ff + +Data_fdf08: ; fdf08 + db 5, 5 + db $ff, $ff, $ff, $ff, $ff + db $ff, $ff, $ff, $ff, $ff + db $00, $01, $ff, $ff, $ff + db $02, $03, $ff, $ff, $ff + db $ff, $ff, $ff, $ff, $ff + +Data_fdf23: ; fdf23 + db 5, 5 + db $00, $01, $02, $03, $04 + db $05, $06, $07, $08, $09 + db $0a, $0b, $0c, $0d, $0e + db $0f, $10, $11, $12, $13 + db $14, $15, $16, $17, $18 + +Data_fdf3e: ; fdf3e + db 5, 5 + db $ff, $ff, $ff, $ff, $ff + db $ff, $ff, $ff, $ff, $ff + db $00, $01, $02, $03, $04 + db $05, $06, $07, $08, $09 + db $ff, $ff, $ff, $ff, $ff + +Data_fdf59: ; fdf59 + db 5, 5 + db $ff, $ff, $ff, $ff, $ff + db $ff, $ff, $ff, $ff, $ff + db $00, $01, $ff, $ff, $ff + db $02, $03, $ff, $ff, $ff + db $04, $05, $ff, $ff, $ff + +Data_fdf74: ; fdf74 + db 5, 5 + db $00, $01, $02, $03, $04 + db $05, $06, $07, $08, $09 + db $0a, $0b, $0c, $0d, $0e + db $0f, $10, $11, $12, $13 + db $14, $15, $16, $17, $18 + +Data_fdf8f: ; fdf8f + db 5, 5 + db $19, $1a, $1b, $1c, $1d + db $1e, $1f, $20, $21, $22 + db $23, $24, $25, $26, $27 + db $28, $29, $2a, $2b, $2c + db $2d, $2e, $2f, $30, $31 + +Data_fdfaa: ; fdfaa + db 5, 5 + db $00, $01, $02, $03, $04 + db $05, $06, $07, $08, $09 + db $0a, $0b, $0c, $0d, $0e + db $0f, $10, $11, $12, $13 + db $14, $15, $16, $17, $18 + +Data_fdfc5: ; fdfc5 + db 5, 5 + db $19, $1a, $1b, $1c, $1d + db $1e, $1f, $20, $21, $22 + db $23, $24, $25, $26, $27 + db $28, $29, $2a, $2b, $2c + db $2d, $2e, $2f, $30, $31 + +Data_fdfe0: ; fdfe0 + db 5, 5 + db $32, $33, $34, $35, $36 + db $37, $38, $39, $3a, $3b + db $3c, $3d, $3e, $3f, $40 + db $41, $42, $43, $44, $45 + db $46, $47, $48, $49, $4a + +Data_fdffb: ; fdffb + db 5, 5 + db $4b, $4c, $4d, $4e, $4f + db $50, $51, $52, $53, $54 + db $55, $56, $57, $58, $59 + db $5a, $5b, $5c, $5d, $5e + db $5f, $60, $61, $62, $63 + +Data_fe016: ; fe016 + db 5, 5 + db $64, $65, $66, $67, $68 + db $69, $6a, $6b, $6c, $6d + db $6e, $6f, $70, $71, $72 + db $73, $74, $75, $76, $77 + db $78, $79, $7a, $7b, $7c + +Func_fe031: + push hl + ld e, a + ld d, 0 + ld hl, Data_fe572 + add hl, de + add hl, de + add hl, de + add hl, de + ld a, [hli] + ld c, a + ld a, [hli] + ld b, a + ld a, [hli] + ld e, a + ld a, [hli] + ld d, a + pop hl + ret + +RunPikaPicAnimScript: + call Func_fe066 + ret c + xor a + ld [$d44f], a +.loop + call GetPikaPicAnimByte + ld e, a + ld d, 0 + ld hl, Jumptable_fe071 + add hl, de + add hl, de + ld a, [hli] + ld h, [hl] + ld l, a + call JumpToAddress + ld a, [$d44f] + and a + jr z, .loop + ret + +Func_fe066: + ld a, [wPikaSpriteX] + and a + ret z + dec a + ld [wPikaSpriteX], a + scf + ret + +Jumptable_fe071: + dw PikaPicAnimCommand_nop ; 00, 0 params + dw PikaPicAnimCommand_writebyte ; 01, 1 param + dw Func_fe0db ; 02, 1 param + dw Func_fdb32 ; 03, 5 params + dw Func_fe0b6 ; 04, 0 params + dw Func_fe0b6 ; 05, 0 params + dw Func_fdb65 ; 06, 1 param + dw Func_fe0b6 ; 07, 0 params + dw Func_fe0b6 ; 08, 0 params + dw PikaPicAnimCommand_jump ; 09, 1 dw param + dw PikaPicAnimCommand_setdelay ; 0a, 1 dw param + dw PikaPicAnimCommand_cry ; 0b, 1 param + dw PikaPicAnimCommand_thunderbolt ; 0c, 0 params + dw Func_fe0a9 ; 0d, 0 params (ret) + dw Func_fe090 ; 0e, 0 params (ret) + +PikaPicAnimCommand_nop: + ret + +Func_fe090: + ld a, 1 + ld [wPikaPicAnimTimer], a + xor a + ld [wPikaPicAnimTimer + 1], a + jr Func_fe0a9 + +Func_fe09b: + ret + +PikaPicAnimCommand_setdelay: + call GetPikaPicAnimByte + ld [wPikaPicAnimTimer], a + call GetPikaPicAnimByte + ld [wPikaPicAnimTimer + 1], a + ret + +Func_fe0a9: + ld a, $ff + ld [$d44f], a + ret + +PikaPicAnimCommand_writebyte: + call GetPikaPicAnimByte + ld [wPikaSpriteX], a + ret + +Func_fe0b6: + ret + +PikaPicAnimCommand_jump: + call GetPikaPicAnimByte + ld l, a + call GetPikaPicAnimByte + ld h, a + call UpdatePikaPicAnimPointer + ret + +GetPikaPicAnimByte: + push hl + ld hl, wPikaPicAnimPointer + ld a, [hli] + ld h, [hl] + ld l, a + ld a, [hli] + call UpdatePikaPicAnimPointer + pop hl + ret + +UpdatePikaPicAnimPointer: + push af + ld a, l + ld [wPikaPicAnimPointer], a + ld a, h + ld [wPikaPicAnimPointer + 1], a + pop af + ret + +Func_fe0db: + ld a, [wUpdateSpritesEnabled] + push af + ld a, $ff + ld [wUpdateSpritesEnabled], a + ld a, [H_AUTOBGTRANSFERENABLED] + push af + xor a + ld [H_AUTOBGTRANSFERENABLED], a + ld a, [hTilesetType] + push af + xor a + ld [hTilesetType], a + call GetPikaPicAnimByte + ld [$d450], a + ld a, [$d450] + call Func_fe031 + ld a, c + cp a, $ff + jr z, .asm_fe106 + call Func_fe114 + jr .asm_fe109 + +.asm_fe106 + call Func_fe128 +.asm_fe109 + pop af + ld [hTilesetType], a + pop af + ld [H_AUTOBGTRANSFERENABLED], a + pop af + ld [wUpdateSpritesEnabled], a + ret + +Func_fe114: ; fe114 + push de + ld a, [$d450] + ld d, a + ld e, c + call Func_fe17a + pop de + jr c, .asm_fe127 + call Func_fe167 + call CopyVideoDataAlternate + and a +.asm_fe127 + ret + +Func_fe128: ; fe128 + push de + ld a, [$d450] + ld d, a + ld e, $19 + call Func_fe17a + pop de + jr c, .asm_fe15b + ld a, b + call UncompressSpriteFromDE + ld a, $00 + call SwitchSRAMBankAndLatchClockData + ld hl, S_SPRITEBUFFER1 + ld de, S_SPRITEBUFFER0 + ld bc, SPRITEBUFFERSIZE * 2 + call CopyData + call PrepareRTCDataAndDisableSRAM + ld a, [$d450] + call Func_fe1af + call Func_fe167 + ld d, h + ld e, l + call InterlaceMergeSpriteBuffers +.asm_fe15b + ret + +Func_fe15c: + ld hl, wNPCMovementDirections + ld bc, $11 + xor a + call FillMemory + ret + +Func_fe167: + ld hl, vNPCSprites + push bc + ld b, a + and $f + swap a + ld c, a + ld a, b + and $f0 + swap a + ld b, a + add hl, bc + pop bc + ret + +Func_fe17a: + push bc + push hl + ld hl, wNPCMovementDirections + 1 + ld c, 8 +.asm_fe181 + ld a, [hl] + and a + jr z, .asm_fe192 + cp d + jr z, .asm_fe18f + inc hl + inc hl + dec c + jr nz, .asm_fe181 + scf + ret + +.asm_fe18f + inc hl + ld a, [hl] + ret + +.asm_fe192 + ld [hl], d + inc hl + ld a, [wNPCMovementDirections] + add $80 + ld [hl], a + ld a, [wNPCMovementDirections] + add e + ld [wNPCMovementDirections], a + cp $80 + jr z, .asm_fe1a7 + jr nc, .asm_fe1ab +.asm_fe1a7 + ld a, [hl] + and a + jr .asm_fe1ac + +.asm_fe1ab + scf +.asm_fe1ac + pop hl + pop bc + ret + +Func_fe1af: + push bc + push hl + ld b, a + ld hl, wNPCMovementDirections + 1 + ld c, 8 +.asm_fe1b7 + ld a, [hli] + cp b + jr z, .asm_fe1c2 + inc hl + dec c + jr nz, .asm_fe1b7 + scf + jr .asm_fe1c4 + +.asm_fe1c2 + ld a, [hl] + and a +.asm_fe1c4 + pop hl + pop bc + ret + +PikaPicAnimCommand_cry: + call GetPikaPicAnimByte + cp $ff + ret z + ld e, a + callab PlayPikachuSoundClip + ret + +PikaPicAnimCommand_thunderbolt: + ld a, $1 + ld [wMuteAudioAndPauseMusic], a + call DelayFrame + ld a, [wAudioROMBank] + push af + ld a, BANK(SFX_Battle_2F) + ld [wAudioROMBank], a + ld [wAudioSavedROMBank], a + call PikaPicAnimLoadThunderboltAudio + call PlaySound + call PikaPicAnimThunderboltFlashScreen + call WaitForSoundToFinish + pop af + ld [wAudioROMBank], a + ld [wAudioSavedROMBank], a + xor a + ld [wMuteAudioAndPauseMusic], a + ret + +PikaPicAnimLoadThunderboltAudio: + ld hl, MoveSoundTable + ld e, THUNDERBOLT + ld d, 0 + add hl, de + add hl, de + add hl, de + ld a, BANK(MoveSoundTable) + call GetFarByte + ld b, a + inc hl + ld a, BANK(MoveSoundTable) + call GetFarByte + inc hl + ld [wFrequencyModifier], a + ld a, BANK(MoveSoundTable) + call GetFarByte + ld [wTempoModifier], a + ld a, b + ret + +PikaPicAnimThunderboltFlashScreen: + ld hl, Data_fe242 +.loop + ld a, [hli] + cp $ff + ret z + ld c, a + ld b, [hl] + inc hl + push hl + call GetDMGBGPalForPikaThunderbolt + pop hl + jr .loop + +GetDMGBGPalForPikaThunderbolt: + ld a, b + ld [rBGP], a + call UpdateGBCPal_BGP + call DelayFrames + ret + +Data_fe242: + db 4, %11000000 + db 4, %11100100 + db 4, %11000000 + db 4, %11100100 + db 4, %11000000 + db 4, %11100100 + db 4, %11000000 + db 4, %11100100 + db 4, %11000000 + db 4, %11100100 + db 4, %11000000 + db 4, %11100100 + db 4, %11000000 + db 4, %11100100 + db 4, %11000000 + db 4, %11100100 + db 4, %11000000 + db 4, %11100100 + db 4, %11000000 + db 4, %11100100 + db $ff + +Data_fe26b: + pikapic_2 $1 + pikapic_2 $f + pikapic_2 $3e + pikapic_3 $1, $80, $0 + pikapic_3 $2, $5b2, $5 + pikapic_3 $3, $5b6, $5 + pikapic_d + pikapic_cry $ff +Data_fe286: + pikapic_d + pikapic_jump Data_fe286 + +Data_fe28a: + dr $fe28a, $fe2a4 +Data_fe2a4: + dr $fe2a4, $fe2be +Data_fe2be: + dr $fe2be, $fe2d8 +Data_fe2d8: + dr $fe2d8, $fe2f2 +Data_fe2f2: + dr $fe2f2, $fe30c +Data_fe30c: + dr $fe30c, $fe326 +Data_fe326: + dr $fe326, $fe340 +Data_fe340: + dr $fe340, $fe35a +Data_fe35a: + dr $fe35a, $fe374 +Data_fe374: + dr $fe374, $fe390 +Data_fe390: + dr $fe390, $fe3aa +Data_fe3aa: + dr $fe3aa, $fe3c4 +Data_fe3c4: + dr $fe3c4, $fe3de +Data_fe3de: + dr $fe3de, $fe3f8 +Data_fe3f8: + dr $fe3f8, $fe412 +Data_fe412: + dr $fe412, $fe42c +Data_fe42c: + dr $fe42c, $fe446 +Data_fe446: + dr $fe446, $fe460 +Data_fe460: + dr $fe460, $fe47a +Data_fe47a: + dr $fe47a, $fe494 +Data_fe494: + dr $fe494, $fe4b4 +Data_fe4b4: + dr $fe4b4, $fe4ce +Data_fe4ce: + dr $fe4ce, $fe4e8 +Data_fe4e8: + dr $fe4e8, $fe502 +Data_fe502: + dr $fe502, $fe520 +Data_fe520: + dr $fe520, $fe53e +Data_fe53e: + dr $fe53e, $fe558 +Data_fe558: + dr $fe558, $fe572 + +Data_fe572: + dr $fe572, $fe66f diff --git a/macros.asm b/macros.asm index 969d9465..7cb768cc 100644 --- a/macros.asm +++ b/macros.asm @@ -769,3 +769,121 @@ x = 0 x = x + (\1) * $40000 endr ENDM + +enum_start: macro +if _NARG >= 1 +__enum__ = \1 +else +__enum__ = 0 +endc +if _NARG >= 2 +__enumdir__ = \2 +else +__enumdir__ = +1 +endc +endm + +enum: macro +\1 = __enum__ +__enum__ = __enum__ + __enumdir__ +endm + +enum_set: macro +__enum__ = \1 +endm + +pikacry_def: MACRO +\1_id:: dba \1 +endm + +dpikacry: MACRO + db (\1_id - PikachuCriesPointerTable) / 3 + endm + +pikacry: MACRO + ld a, (\1_id - PikachuCriesPointerTable) / 3 + endm + + + enum_start + enum pikapic_nop_command +pikapic_nop: macro + db pikapic_nop_command + endm + + enum pikapic_writebyte_command +pikapic_writebyte: macro + db pikapic_writebyte_command, \1 + endm + + enum pikapic_2_command +pikapic_2: macro + db pikapic_2_command, \1 + endm + + enum pikapic_3_command +pikapic_3: macro + db pikapic_3_command + dw \1, \2 + db \3 + endm + + enum pikapic_4_command +pikapic_4: macro + db pikapic_4_command + endm + + enum pikapic_5_command +pikapic_5: macro + db pikapic_5_command + endm + + enum pikapic_6_command +pikapic_6: macro + db pikapic_6_command, \1 + endm + + enum pikapic_7_command +pikapic_7: macro + db pikapic_7_command + endm + + enum pikapic_8_command +pikapic_8: macro + db pikapic_8_command + endm + + enum pikapic_jump_command +pikapic_jump: macro ; 9 + dbw pikapic_jump_command, \1 + endm + + enum pikapic_setdelay_command +pikapic_setdelay: macro ; a + dbw pikapic_setdelay_command, \1 + endm + + enum pikapic_cry_command +pikapic_cry: macro ; b + db pikapic_cry_command +if \1 == $ff + db \1 +else + dpikacry \1 + endc + endm + + enum pikapic_thunderbolt_command +pikapic_thunderbolt: macro ; c + db pikapic_thunderbolt_command + endm + + enum pikapic_d_command +pikapic_d: macro ; d + db pikapic_d_command + endm + + enum pikapic_e_command +pikapic_e: macro ; e + db pikapic_e_command + endm diff --git a/wram.asm b/wram.asm index 252f8012..53821388 100755 --- a/wram.asm +++ b/wram.asm @@ -2523,13 +2523,24 @@ wd438:: ds 1 wExpressionNumber:: ; d447 ds 1 - +wExpressionNumber2:: ds 1 -wd44a:: ds 1 +wd44a:: ds 1 ; d449 wd44b:: ds 1 - - ds 36 +wd44c:: ds 1 +wd44d:: ds 1 +wPikaPicAnimPointer:: dw ; d44d +wd450:: ds 1 +wd451:: ds 1 +wPikaPicAnimTimer:: ds 1 ; d451 +wd453:: ds 1 +wPikaPicAnimVar:: +wPikaSpriteX:: ds 1 +wPikaPicTextboxStartX:: +wPikaSpriteY:: ds 1 ; d454 +wPikaPicTextboxStartY:: ds 1 + ds 25 wPikachuHappiness:: ds 1 ; d46f wPikachuMood:: ds 1 ; d470 -- cgit v1.3.1-sl0p From 3724c414fc7fd7b216efff954ec4b7a0cc74839d Mon Sep 17 00:00:00 2001 From: pikalaxalt Date: Wed, 25 May 2016 17:11:10 -0400 Subject: More playing around with pikapic script disasm --- engine/bank3f.asm | 5 +- engine/pikachu_pic_animation.asm | 145 +++++++++++++++++++++++++++++---------- macros.asm | 67 +++++++++--------- 3 files changed, 150 insertions(+), 67 deletions(-) (limited to 'macros.asm') diff --git a/engine/bank3f.asm b/engine/bank3f.asm index fda65680..f6a9371e 100644 --- a/engine/bank3f.asm +++ b/engine/bank3f.asm @@ -1917,6 +1917,9 @@ Func_fd001:: ; fd001 (3f:5001) INCLUDE "engine/pikachu_pic_animation.asm" +Func_fe66e: + ret + OfficerJennySprite: INCBIN "gfx/sprites/officer_jenny.2bpp" PikachuSprite: INCBIN "gfx/sprites/pikachu.2bpp" SandshrewSprite: INCBIN "gfx/sprites/sandshrew.2bpp" @@ -1927,4 +1930,4 @@ Clefairy2Sprite: INCBIN "gfx/sprites/clefairy2.2bpp" ChanseySprite: INCBIN "gfx/sprites/chansey.2bpp" SurfingPikachuSprite: INCBIN "gfx/sprites/surfing_pikachu.2bpp" JessieSprite: INCBIN "gfx/sprites/jessie.2bpp" -JamesSprite: INCBIN "gfx/sprites/james.2bpp" \ No newline at end of file +JamesSprite: INCBIN "gfx/sprites/james.2bpp" diff --git a/engine/pikachu_pic_animation.asm b/engine/pikachu_pic_animation.asm index 81a94cbd..3419b8bf 100755 --- a/engine/pikachu_pic_animation.asm +++ b/engine/pikachu_pic_animation.asm @@ -1775,21 +1775,21 @@ Func_fdad6: jr nz, .asm_fdadb ret -Func_fdb32: +PikaPicAnimCommand_object: ld hl, wNPCMovementDirections2 + 1 ld de, 8 ld c, 4 -.asm_fdb3a +.loop ld a, [hl] and a - jr z, .asm_fdb44 + jr z, .found add hl, de dec c - jr nz, .asm_fdb3a + jr nz, .loop scf ret -.asm_fdb44 +.found ld a, [wNPCMovementDirections2] inc a ld [wNPCMovementDirections2], a @@ -1810,7 +1810,7 @@ Func_fdb32: and a ret -Func_fdb65: +PikaPicAnimCommand_deleteobject: call GetPikaPicAnimByte ld b, a ld hl, wNPCMovementDirections2 + 1 @@ -2436,11 +2436,11 @@ Data_fe016: ; fe016 db $73, $74, $75, $76, $77 db $78, $79, $7a, $7b, $7c -Func_fe031: +LoadPikaPicAnimGFXHeader: push hl ld e, a ld d, 0 - ld hl, Data_fe572 + ld hl, PikaPicAnimGFXHeaders add hl, de add hl, de add hl, de @@ -2489,29 +2489,29 @@ Func_fe066: Jumptable_fe071: dw PikaPicAnimCommand_nop ; 00, 0 params dw PikaPicAnimCommand_writebyte ; 01, 1 param - dw Func_fe0db ; 02, 1 param - dw Func_fdb32 ; 03, 5 params - dw Func_fe0b6 ; 04, 0 params - dw Func_fe0b6 ; 05, 0 params - dw Func_fdb65 ; 06, 1 param - dw Func_fe0b6 ; 07, 0 params - dw Func_fe0b6 ; 08, 0 params + dw PikaPicAnimCommand_loadgfx ; 02, 1 param + dw PikaPicAnimCommand_object ; 03, 5 params + dw PikaPicAnimCommand_nop4 ; 04, 0 params + dw PikaPicAnimCommand_nop5 ; 05, 0 params + dw PikaPicAnimCommand_deleteobject ; 06, 1 param + dw PikaPicAnimCommand_nop7 ; 07, 0 params + dw PikaPicAnimCommand_nop8 ; 08, 0 params dw PikaPicAnimCommand_jump ; 09, 1 dw param dw PikaPicAnimCommand_setdelay ; 0a, 1 dw param dw PikaPicAnimCommand_cry ; 0b, 1 param dw PikaPicAnimCommand_thunderbolt ; 0c, 0 params - dw Func_fe0a9 ; 0d, 0 params (ret) - dw Func_fe090 ; 0e, 0 params (ret) + dw PikaPicAnimCommand_waitbgmap ; 0d, 0 params (ret) + dw PikaPicAnimCommand_ret ; 0e, 0 params (ret) PikaPicAnimCommand_nop: ret -Func_fe090: +PikaPicAnimCommand_ret: ld a, 1 ld [wPikaPicAnimTimer], a xor a ld [wPikaPicAnimTimer + 1], a - jr Func_fe0a9 + jr PikaPicAnimCommand_waitbgmap Func_fe09b: ret @@ -2523,7 +2523,7 @@ PikaPicAnimCommand_setdelay: ld [wPikaPicAnimTimer + 1], a ret -Func_fe0a9: +PikaPicAnimCommand_waitbgmap: ld a, $ff ld [$d44f], a ret @@ -2533,7 +2533,10 @@ PikaPicAnimCommand_writebyte: ld [wPikaSpriteX], a ret -Func_fe0b6: +PikaPicAnimCommand_nop4: +PikaPicAnimCommand_nop5: +PikaPicAnimCommand_nop7: +PikaPicAnimCommand_nop8: ret PikaPicAnimCommand_jump: @@ -2564,7 +2567,7 @@ UpdatePikaPicAnimPointer: pop af ret -Func_fe0db: +PikaPicAnimCommand_loadgfx: ld a, [wUpdateSpritesEnabled] push af ld a, $ff @@ -2580,7 +2583,7 @@ Func_fe0db: call GetPikaPicAnimByte ld [$d450], a ld a, [$d450] - call Func_fe031 + call LoadPikaPicAnimGFXHeader ld a, c cp a, $ff jr z, .asm_fe106 @@ -2825,20 +2828,30 @@ Data_fe242: db $ff Data_fe26b: - pikapic_2 $1 - pikapic_2 $f - pikapic_2 $3e - pikapic_3 $1, $80, $0 - pikapic_3 $2, $5b2, $5 - pikapic_3 $3, $5b6, $5 - pikapic_d - pikapic_cry $ff + pikapic_loadgfx $1 + pikapic_loadgfx $f + pikapic_loadgfx $3e + pikapic_object $1, $80, $0, $0 + pikapic_object $2, $b2, $5, $5 + pikapic_object $3, $b6, $5, $5 + pikapic_waitbgmap + pikapic_cry Data_fe286: - pikapic_d + pikapic_waitbgmap pikapic_jump Data_fe286 Data_fe28a: - dr $fe28a, $fe2a4 + pikapic_setdelay $28 + pikapic_loadgfx $1 + pikapic_loadgfx $2 + pikapic_object $4, $80, $0, $0 + pikapic_object $6, $99, $0, $0 + pikapic_waitbgmap + pikapic_cry PikachuCry3 +Data_fe2a0: + pikapic_waitbgmap + pikapic_jump Data_fe2a0 + Data_fe2a4: dr $fe2a4, $fe2be Data_fe2be: @@ -2894,5 +2907,67 @@ Data_fe53e: Data_fe558: dr $fe558, $fe572 -Data_fe572: - dr $fe572, $fe66f +PikaPicAnimGFXHeaders: + dbbw $01, $39, $0000 + dbbw $ff, $39, $4000 + dbbw $05, $39, $40cc + dbbw $ff, $39, $411c + dbbw $0a, $39, $41d2 + dbbw $ff, $39, $4272 + dbbw $06, $39, $4323 + dbbw $ff, $39, $4383 + dbbw $14, $39, $444b + dbbw $ff, $39, $458b + dbbw $04, $39, $463b + dbbw $ff, $39, $467b + dbbw $04, $39, $472e + dbbw $ff, $39, $476e + dbbw $19, $39, $4841 + dbbw $ff, $39, $49d1 + dbbw $0a, $39, $4a99 + dbbw $ff, $39, $4b39 + dbbw $06, $39, $4bde + dbbw $ff, $39, $4c3e + dbbw $19, $39, $4ce0 + dbbw $19, $39, $4e70 + dbbw $ff, $39, $5000 + dbbw $19, $39, $50af + dbbw $ff, $39, $523f + dbbw $19, $39, $52fe + dbbw $ff, $39, $548e + dbbw $19, $39, $5541 + dbbw $ff, $39, $56d1 + dbbw $19, $39, $5794 + dbbw $ff, $39, $5924 + dbbw $19, $39, $59ed + dbbw $ff, $39, $5b7d + dbbw $19, $39, $5c4d + dbbw $ff, $39, $5ddd + dbbw $19, $39, $5e90 + dbbw $19, $39, $6020 + dbbw $19, $39, $61b0 + dbbw $ff, $39, $6340 + dbbw $19, $39, $63f7 + dbbw $ff, $39, $6587 + dbbw $19, $39, $6646 + dbbw $ff, $39, $67d6 + dbbw $19, $39, $682f + dbbw $19, $39, $69bf + dbbw $19, $39, $6b4f + dbbw $19, $39, $6cdf + dbbw $19, $39, $6e6f + dbbw $19, $39, $6fff + dbbw $19, $39, $718f + dbbw $19, $39, $731f + dbbw $19, $39, $74af + dbbw $19, $39, $763f + dbbw $ff, $39, $77cf + dbbw $19, $39, $7863 + dbbw $19, $39, $79f3 + dbbw $19, $39, $7b83 + dbbw $19, $39, $7d13 + dbbw $ff, $3c, $4abf + dbbw $19, $3c, $4b64 + dbbw $ff, $3c, $4cf4 + dbbw $19, $3c, $4d82 + dbbw $18, BANK(PikachuSprite), PikachuSprite diff --git a/macros.asm b/macros.asm index 7cb768cc..c59a77ed 100644 --- a/macros.asm +++ b/macros.asm @@ -266,6 +266,11 @@ dba: MACRO dbw BANK(\1), \1 ENDM +dbbw: MACRO + db \1, \2 + dw \3 + ENDM + ; data format macros RGB: MACRO dw (\3 << 10 | \2 << 5 | \1) @@ -816,41 +821,41 @@ pikapic_writebyte: macro db pikapic_writebyte_command, \1 endm - enum pikapic_2_command -pikapic_2: macro - db pikapic_2_command, \1 + enum pikapic_loadgfx_command +pikapic_loadgfx: macro + db pikapic_loadgfx_command, \1 ; _id - PikaPicAnimGFXHeaders) / 4 endm - enum pikapic_3_command -pikapic_3: macro - db pikapic_3_command - dw \1, \2 - db \3 + enum pikapic_object_command +pikapic_object: macro + db pikapic_object_command + dw \1 + db \2, \3, \4 endm - enum pikapic_4_command -pikapic_4: macro - db pikapic_4_command + enum pikapic_nop4_command +pikapic_nop4: macro + db pikapic_nop4_command endm - enum pikapic_5_command -pikapic_5: macro - db pikapic_5_command + enum pikapic_nop5_command +pikapic_nop5: macro + db pikapic_nop5_command endm - enum pikapic_6_command -pikapic_6: macro - db pikapic_6_command, \1 + enum pikapic_waitbgmapeleteobject_command +pikapic_waitbgmapeleteobject: macro + db pikapic_waitbgmapeleteobject_command, \1 endm - enum pikapic_7_command -pikapic_7: macro - db pikapic_7_command + enum pikapic_nop7_command +pikapic_nop7: macro + db pikapic_nop7_command endm - enum pikapic_8_command -pikapic_8: macro - db pikapic_8_command + enum pikapic_nop8_command +pikapic_nop8: macro + db pikapic_nop8_command endm enum pikapic_jump_command @@ -866,8 +871,8 @@ pikapic_setdelay: macro ; a enum pikapic_cry_command pikapic_cry: macro ; b db pikapic_cry_command -if \1 == $ff - db \1 +IF _NARG == 0 + db $ff else dpikacry \1 endc @@ -878,12 +883,12 @@ pikapic_thunderbolt: macro ; c db pikapic_thunderbolt_command endm - enum pikapic_d_command -pikapic_d: macro ; d - db pikapic_d_command + enum pikapic_waitbgmap_command +pikapic_waitbgmap: macro ; d + db pikapic_waitbgmap_command endm - enum pikapic_e_command -pikapic_e: macro ; e - db pikapic_e_command + enum pikapic_ret_command +pikapic_ret: macro ; e + db pikapic_ret_command endm -- cgit v1.3.1-sl0p From f19ef183bec397bf346c54c41e05f8cd8d8be27c Mon Sep 17 00:00:00 2001 From: pikalaxalt Date: Wed, 25 May 2016 21:34:29 -0400 Subject: All Pikachu emotion gfx have been labeled --- engine/bank3c.asm | 23 ++- engine/pikachu_pic_animation.asm | 316 +++++++++++++++++++-------------------- macros.asm | 8 +- main.asm | 121 ++++++++++++++- 4 files changed, 298 insertions(+), 170 deletions(-) (limited to 'macros.asm') diff --git a/engine/bank3c.asm b/engine/bank3c.asm index d61fd8ed..2d10b45c 100644 --- a/engine/bank3c.asm +++ b/engine/bank3c.asm @@ -321,7 +321,28 @@ Func_f0a82: ; f0a82 callab Func_fcba1 ret - dr $f0abf, $f220e +Pic_f0abf: ; f0abf (3c:4abf) + dr $f0abf, $f0b64 +GFX_f0b64: ; f0b64 (3c:4b64) + dr $f0b64, $f0cf4 +Pic_f0cf4: ; f0cf4 (3c:4cf4) + dr $f0cf4, $f0d82 +GFX_f0d82: ; f0d82 (3c:4d82) + dr $f0d82, $f0f12 + +Func_f0f12: + ld hl, NurseChanseyText + call PrintText + ld a, CHANSEY + call PlayCry + call WaitForSoundToFinish + ret + +NurseChanseyText: + TX_FAR _NurseChanseyText + db "@" + + dr $f0f26, $f220e INCLUDE "data/mapHeaders/beach_house.asm" INCLUDE "scripts/beach_house.asm" diff --git a/engine/pikachu_pic_animation.asm b/engine/pikachu_pic_animation.asm index e5099a04..d95eb538 100755 --- a/engine/pikachu_pic_animation.asm +++ b/engine/pikachu_pic_animation.asm @@ -2688,7 +2688,7 @@ Jumptable_fe071: dw PikaPicAnimCommand_nop7 ; 07, 0 params dw PikaPicAnimCommand_nop8 ; 08, 0 params dw PikaPicAnimCommand_jump ; 09, 1 dw param - dw PikaPicAnimCommand_setdelay ; 0a, 1 dw param + dw PikaPicAnimCommand_setduration ; 0a, 1 dw param dw PikaPicAnimCommand_cry ; 0b, 1 param dw PikaPicAnimCommand_thunderbolt ; 0c, 0 params dw PikaPicAnimCommand_waitbgmap ; 0d, 0 params (ret) @@ -2707,7 +2707,7 @@ PikaPicAnimCommand_ret: Func_fe09b: ret -PikaPicAnimCommand_setdelay: +PikaPicAnimCommand_setduration: call GetPikaPicAnimByte ld [wPikaPicAnimTimer], a call GetPikaPicAnimByte @@ -3019,9 +3019,9 @@ Data_fe242: db $ff Data_fe26b: ; fe26b (3f:626b) - pikapic_loadgfx $1 - pikapic_loadgfx $f - pikapic_loadgfx $3e + pikapic_loadgfx Pic_e4000 + pikapic_loadgfx Pic_e49d1 + pikapic_loadgfx PikachuSprite pikapic_object $1, $80, $0, $0 pikapic_object $2, $b2, $5, $5 pikapic_object $3, $b6, $5, $5 @@ -3032,9 +3032,9 @@ Data_fe286: ; fe286 (3f:6286) pikapic_jump Data_fe286 Data_fe28a: ; fe28a (3f:628a) - pikapic_setdelay 40 - pikapic_loadgfx $1 - pikapic_loadgfx $2 + pikapic_setduration 40 + pikapic_loadgfx Pic_e4000 + pikapic_loadgfx GFX_e40cc pikapic_object $4, $80, $0, $0 pikapic_object $6, $99, $0, $0 pikapic_waitbgmap @@ -3044,9 +3044,9 @@ Data_fe2a0: ; fe2a0 (3f:62a0) pikapic_jump Data_fe2a0 Data_fe2a4: ; fe2a4 (3f:62a4) - pikapic_setdelay 44 - pikapic_loadgfx $3 - pikapic_loadgfx $4 + pikapic_setduration 44 + pikapic_loadgfx Pic_e411c + pikapic_loadgfx GFX_e41d2 pikapic_object $4, $80, $0, $0 pikapic_object $7, $99, $0, $0 pikapic_waitbgmap @@ -3056,9 +3056,9 @@ Data_fe2ba: ; fe2ba (3f:62ba) pikapic_jump Data_fe2ba Data_fe2be: ; fe2be (3f:62be) - pikapic_setdelay 80 - pikapic_loadgfx $5 - pikapic_loadgfx $6 + pikapic_setduration 80 + pikapic_loadgfx Pic_e4272 + pikapic_loadgfx GFX_e4323 pikapic_object $4, $80, $0, $0 pikapic_object $8, $99, $0, $0 pikapic_waitbgmap @@ -3068,9 +3068,9 @@ Data_fe2d4: ; fe2d4 (3f:62d4) pikapic_jump Data_fe2d4 Data_fe2d8: ; fe2d8 (3f:62d8) - pikapic_setdelay 70 - pikapic_loadgfx $7 - pikapic_loadgfx $8 + pikapic_setduration 70 + pikapic_loadgfx Pic_e4383 + pikapic_loadgfx GFX_e444b pikapic_object $4, $80, $0, $0 pikapic_object $9, $99, $0, $0 pikapic_waitbgmap @@ -3080,9 +3080,9 @@ Data_fe2ee: ; fe2ee (3f:62ee) pikapic_jump Data_fe2ee Data_fe2f2: ; fe2f2 (3f:62f2) - pikapic_setdelay 32 - pikapic_loadgfx $9 - pikapic_loadgfx $a + pikapic_setduration 32 + pikapic_loadgfx Pic_e458b + pikapic_loadgfx GFX_e463b pikapic_object $4, $80, $0, $0 pikapic_object $a, $99, $0, $0 pikapic_waitbgmap @@ -3092,9 +3092,9 @@ Data_fe308: ; fe308 (3f:6308) pikapic_jump Data_fe308 Data_fe30c: ; fe30c (3f:630c) - pikapic_setdelay 50 - pikapic_loadgfx $b - pikapic_loadgfx $c + pikapic_setduration 50 + pikapic_loadgfx Pic_e467b + pikapic_loadgfx GFX_e472e pikapic_object $4, $80, $0, $0 pikapic_object $b, $99, $0, $0 pikapic_waitbgmap @@ -3104,9 +3104,9 @@ Data_fe322: ; fe322 (3f:6322) pikapic_jump Data_fe322 Data_fe326: ; fe326 (3f:6326) - pikapic_setdelay 58 - pikapic_loadgfx $d - pikapic_loadgfx $e + pikapic_setduration 58 + pikapic_loadgfx Pic_e476e + pikapic_loadgfx GFX_e4841 pikapic_object $4, $80, $0, $0 pikapic_object $c, $99, $0, $0 pikapic_waitbgmap @@ -3116,9 +3116,9 @@ Data_fe33c: ; fe33c (3f:633c) pikapic_jump Data_fe33c Data_fe340: ; fe340 (3f:6340) - pikapic_setdelay 44 - pikapic_loadgfx $f - pikapic_loadgfx $10 + pikapic_setduration 44 + pikapic_loadgfx Pic_e49d1 + pikapic_loadgfx GFX_e4a99 pikapic_object $4, $80, $0, $0 pikapic_object $d, $99, $0, $0 pikapic_waitbgmap @@ -3128,9 +3128,9 @@ Data_fe356: ; fe356 (3f:6356) pikapic_jump Data_fe356 Data_fe35a: ; fe35a (3f:635a) - pikapic_setdelay 56 - pikapic_loadgfx $11 - pikapic_loadgfx $12 + pikapic_setduration 56 + pikapic_loadgfx Pic_e4b39 + pikapic_loadgfx GFX_e4bde pikapic_object $4, $80, $0, $0 pikapic_object $e, $99, $0, $0 pikapic_waitbgmap @@ -3140,10 +3140,10 @@ Data_fe370: ; fe370 (3f:6370) pikapic_jump Data_fe370 Data_fe374: ; fe374 (3f:6374) - pikapic_setdelay 56 - pikapic_loadgfx $13 - pikapic_loadgfx $14 - pikapic_loadgfx $15 + pikapic_setduration 56 + pikapic_loadgfx Pic_e4c3e + pikapic_loadgfx GFX_e4ce0 + pikapic_loadgfx GFX_e4e70 pikapic_object $4, $80, $0, $0 pikapic_object $10, $99, $0, $0 pikapic_waitbgmap @@ -3153,9 +3153,9 @@ Data_fe38c: ; fe38c (3f:638c) pikapic_jump Data_fe38c Data_fe390: ; fe390 (3f:6390) - pikapic_setdelay 100 - pikapic_loadgfx $16 - pikapic_loadgfx $17 + pikapic_setduration 100 + pikapic_loadgfx Pic_e5000 + pikapic_loadgfx GFX_e50af pikapic_object $4, $80, $0, $0 pikapic_object $11, $99, $0, $0 pikapic_waitbgmap @@ -3165,9 +3165,9 @@ Data_fe3a6: ; fe3a6 (3f:63a6) pikapic_jump Data_fe3a6 Data_fe3aa: ; fe3aa (3f:63aa) - pikapic_setdelay 50 - pikapic_loadgfx $18 - pikapic_loadgfx $19 + pikapic_setduration 50 + pikapic_loadgfx Pic_e523f + pikapic_loadgfx GFX_e52fe pikapic_object $4, $80, $0, $0 pikapic_object $12, $99, $0, $0 pikapic_waitbgmap @@ -3177,9 +3177,9 @@ Data_fe3c0: ; fe3c0 (3f:63c0) pikapic_jump Data_fe3c0 Data_fe3c4: ; fe3c4 (3f:63c4) - pikapic_setdelay 50 - pikapic_loadgfx $1a - pikapic_loadgfx $1b + pikapic_setduration 50 + pikapic_loadgfx Pic_e548e + pikapic_loadgfx GFX_e5541 pikapic_object $4, $80, $0, $0 pikapic_object $13, $99, $0, $0 pikapic_waitbgmap @@ -3189,9 +3189,9 @@ Data_fe3da: ; fe3da (3f:63da) pikapic_jump Data_fe3da Data_fe3de: ; fe3de (3f:63de) - pikapic_setdelay 40 - pikapic_loadgfx $1c - pikapic_loadgfx $1d + pikapic_setduration 40 + pikapic_loadgfx Pic_e56d1 + pikapic_loadgfx GFX_e5794 pikapic_object $4, $80, $0, $0 pikapic_object $14, $99, $0, $0 pikapic_waitbgmap @@ -3201,9 +3201,9 @@ Data_fe3f4: ; fe3f4 (3f:63f4) pikapic_jump Data_fe3f4 Data_fe3f8: ; fe3f8 (3f:63f8) - pikapic_setdelay 50 - pikapic_loadgfx $1e - pikapic_loadgfx $1f + pikapic_setduration 50 + pikapic_loadgfx Pic_e5924 + pikapic_loadgfx GFX_e59ed pikapic_object $4, $80, $0, $0 pikapic_object $15, $99, $0, $0 pikapic_waitbgmap @@ -3213,9 +3213,9 @@ Data_fe40e: ; fe40e (3f:640e) pikapic_jump Data_fe40e Data_fe412: ; fe412 (3f:6412) - pikapic_setdelay 32 - pikapic_loadgfx $20 - pikapic_loadgfx $21 + pikapic_setduration 32 + pikapic_loadgfx Pic_e5b7d + pikapic_loadgfx GFX_e5c4d pikapic_object $4, $80, $0, $0 pikapic_object $16, $99, $0, $0 pikapic_waitbgmap @@ -3225,9 +3225,9 @@ Data_fe428: ; fe428 (3f:6428) pikapic_jump Data_fe428 Data_fe42c: ; fe42c (3f:642c) - pikapic_setdelay 100 - pikapic_loadgfx $22 - pikapic_loadgfx $23 + pikapic_setduration 100 + pikapic_loadgfx Pic_e5ddd + pikapic_loadgfx GFX_e5e90 pikapic_object $4, $80, $0, $0 pikapic_object $17, $99, $0, $0 pikapic_waitbgmap @@ -3237,9 +3237,9 @@ Data_fe442: ; fe442 (3f:6442) pikapic_jump Data_fe442 Data_fe446: ; fe446 (3f:6446) - pikapic_setdelay 32 - pikapic_loadgfx $24 - pikapic_loadgfx $25 + pikapic_setduration 32 + pikapic_loadgfx GFX_e6020 + pikapic_loadgfx GFX_e61b0 pikapic_object $5, $80, $0, $0 pikapic_object $18, $99, $0, $0 pikapic_waitbgmap @@ -3249,9 +3249,9 @@ Data_fe45c: ; fe45c (3f:645c) pikapic_jump Data_fe45c Data_fe460: ; fe460 (3f:6460) - pikapic_setdelay 44 - pikapic_loadgfx $26 - pikapic_loadgfx $27 + pikapic_setduration 44 + pikapic_loadgfx Pic_e6340 + pikapic_loadgfx GFX_e63f7 pikapic_object $4, $80, $0, $0 pikapic_object $19, $99, $0, $0 pikapic_waitbgmap @@ -3261,9 +3261,9 @@ Data_fe476: ; fe476 (3f:6476) pikapic_jump Data_fe476 Data_fe47a: ; fe47a (3f:647a) - pikapic_setdelay 50 - pikapic_loadgfx $28 - pikapic_loadgfx $29 + pikapic_setduration 50 + pikapic_loadgfx Pic_e6587 + pikapic_loadgfx GFX_e6646 pikapic_object $4, $80, $0, $0 pikapic_object $1a, $99, $0, $0 pikapic_waitbgmap @@ -3273,12 +3273,12 @@ Data_fe490: ; fe490 (3f:6490) pikapic_jump Data_fe490 Data_fe494: ; fe494 (3f:6494) - pikapic_setdelay 40 - pikapic_loadgfx $2a - pikapic_loadgfx $2b - pikapic_loadgfx $2c - pikapic_loadgfx $2d - pikapic_loadgfx $2e + pikapic_setduration 40 + pikapic_loadgfx Pic_e67d6 + pikapic_loadgfx GFX_e682f + pikapic_loadgfx GFX_e69bf + pikapic_loadgfx GFX_e6b4f + pikapic_loadgfx GFX_e6cdf pikapic_object $4, $80, $0, $0 pikapic_object $1b, $99, $0, $0 pikapic_waitbgmap @@ -3288,9 +3288,9 @@ Data_fe4b0: ; fe4b0 (3f:64b0) pikapic_jump Data_fe4b0 Data_fe4b4: ; fe4b4 (3f:64b4) - pikapic_setdelay 40 - pikapic_loadgfx $2f - pikapic_loadgfx $30 + pikapic_setduration 40 + pikapic_loadgfx GFX_e6e6f + pikapic_loadgfx GFX_e6fff pikapic_object $5, $80, $0, $0 pikapic_object $1c, $99, $0, $0 pikapic_waitbgmap @@ -3300,9 +3300,9 @@ Data_fe4ca: ; fe4ca (3f:64ca) pikapic_jump Data_fe4ca Data_fe4ce: ; fe4ce (3f:64ce) - pikapic_setdelay 70 - pikapic_loadgfx $31 - pikapic_loadgfx $32 + pikapic_setduration 70 + pikapic_loadgfx GFX_e718f + pikapic_loadgfx GFX_e731f pikapic_object $5, $80, $0, $0 pikapic_object $1d, $99, $0, $0 pikapic_waitbgmap @@ -3312,9 +3312,9 @@ Data_fe4e4: ; fe4e4 (3f:64e4) pikapic_jump Data_fe4e4 Data_fe4e8: ; fe4e8 (3f:64e8) - pikapic_setdelay 60 - pikapic_loadgfx $33 - pikapic_loadgfx $34 + pikapic_setduration 60 + pikapic_loadgfx GFX_e74af + pikapic_loadgfx GFX_e763f pikapic_object $5, $80, $0, $0 pikapic_object $1e, $99, $0, $0 pikapic_waitbgmap @@ -3324,10 +3324,10 @@ Data_fe4fe: ; fe4fe (3f:64fe) pikapic_jump Data_fe4fe Data_fe502: ; fe502 (3f:6502) - pikapic_setdelay 50 - pikapic_loadgfx $35 - pikapic_loadgfx $36 - pikapic_loadgfx $37 + pikapic_setduration 50 + pikapic_loadgfx Pic_e77cf + pikapic_loadgfx GFX_e7863 + pikapic_loadgfx GFX_e79f3 pikapic_object $4, $80, $0, $0 pikapic_object $1f, $99, $0, $0 pikapic_waitbgmap @@ -3340,11 +3340,11 @@ Data_fe502: ; fe502 (3f:6502) Data_fe51f: ; fe51f (3f:651f) pikapic_waitbgmap Data_fe520: ; fe520 (3f:6520) - pikapic_setdelay 100 - pikapic_loadgfx $16 - pikapic_loadgfx $17 - pikapic_loadgfx $38 - pikapic_loadgfx $39 + pikapic_setduration 100 + pikapic_loadgfx Pic_e5000 + pikapic_loadgfx GFX_e50af + pikapic_loadgfx GFX_e7b83 + pikapic_loadgfx GFX_e7d13 pikapic_object $4, $80, $0, $0 pikapic_object $20, $99, $0, $0 pikapic_waitbgmap @@ -3354,9 +3354,9 @@ Data_fe53a: ; fe53a (3f:653a) pikapic_jump Data_fe53a Data_fe53e: ; fe53e (3f:653e) - pikapic_setdelay 30 - pikapic_loadgfx $3a - pikapic_loadgfx $3b + pikapic_setduration 30 + pikapic_loadgfx Pic_f0abf + pikapic_loadgfx GFX_f0b64 pikapic_object $4, $80, $0, $0 pikapic_object $21, $99, $0, $0 pikapic_waitbgmap @@ -3366,9 +3366,9 @@ Data_fe554: ; fe554 (3f:6554) pikapic_jump Data_fe554 Data_fe558: ; fe558 (3f:6558) - pikapic_setdelay 64 - pikapic_loadgfx $3c - pikapic_loadgfx $3d + pikapic_setduration 64 + pikapic_loadgfx Pic_f0cf4 + pikapic_loadgfx GFX_f0d82 pikapic_object $4, $80, $0, $0 pikapic_object $22, $99, $0, $0 pikapic_waitbgmap @@ -3385,65 +3385,65 @@ pikapicanimgfx: MACRO endm dbbw $01, $39, $0000 - pikapicanimgfx $ff, Pic_e4000 - pikapicanimgfx 5, GFX_e40cc - dbbw $ff, $39, $411c - dbbw $0a, $39, $41d2 - dbbw $ff, $39, $4272 - dbbw $06, $39, $4323 - dbbw $ff, $39, $4383 - dbbw $14, $39, $444b - dbbw $ff, $39, $458b - dbbw $04, $39, $463b - dbbw $ff, $39, $467b - dbbw $04, $39, $472e - dbbw $ff, $39, $476e - dbbw $19, $39, $4841 - dbbw $ff, $39, $49d1 - dbbw $0a, $39, $4a99 - dbbw $ff, $39, $4b39 - dbbw $06, $39, $4bde - dbbw $ff, $39, $4c3e - dbbw $19, $39, $4ce0 - dbbw $19, $39, $4e70 - dbbw $ff, $39, $5000 - dbbw $19, $39, $50af - dbbw $ff, $39, $523f - dbbw $19, $39, $52fe - dbbw $ff, $39, $548e - dbbw $19, $39, $5541 - dbbw $ff, $39, $56d1 - dbbw $19, $39, $5794 - dbbw $ff, $39, $5924 - dbbw $19, $39, $59ed - dbbw $ff, $39, $5b7d - dbbw $19, $39, $5c4d - dbbw $ff, $39, $5ddd - dbbw $19, $39, $5e90 - dbbw $19, $39, $6020 - dbbw $19, $39, $61b0 - dbbw $ff, $39, $6340 - dbbw $19, $39, $63f7 - dbbw $ff, $39, $6587 - dbbw $19, $39, $6646 - dbbw $ff, $39, $67d6 - dbbw $19, $39, $682f - dbbw $19, $39, $69bf - dbbw $19, $39, $6b4f - dbbw $19, $39, $6cdf - dbbw $19, $39, $6e6f - dbbw $19, $39, $6fff - dbbw $19, $39, $718f - dbbw $19, $39, $731f - dbbw $19, $39, $74af - dbbw $19, $39, $763f - dbbw $ff, $39, $77cf - dbbw $19, $39, $7863 - dbbw $19, $39, $79f3 - dbbw $19, $39, $7b83 - dbbw $19, $39, $7d13 - dbbw $ff, $3c, $4abf - dbbw $19, $3c, $4b64 - dbbw $ff, $3c, $4cf4 - dbbw $19, $3c, $4d82 - dbbw $18, BANK(PikachuSprite), PikachuSprite + pikapicanimgfx -1, Pic_e4000 ; 01 + pikapicanimgfx 5, GFX_e40cc ; 02 + pikapicanimgfx -1, Pic_e411c ; 03 + pikapicanimgfx 10, GFX_e41d2 ; 04 + pikapicanimgfx -1, Pic_e4272 ; 05 + pikapicanimgfx 6, GFX_e4323 ; 06 + pikapicanimgfx -1, Pic_e4383 ; 07 + pikapicanimgfx 20, GFX_e444b ; 08 + pikapicanimgfx -1, Pic_e458b ; 09 + pikapicanimgfx 4, GFX_e463b ; 0a + pikapicanimgfx -1, Pic_e467b ; 0b + pikapicanimgfx 4, GFX_e472e ; 0c + pikapicanimgfx -1, Pic_e476e ; 0d + pikapicanimgfx 25, GFX_e4841 ; 0e + pikapicanimgfx -1, Pic_e49d1 ; 0f + pikapicanimgfx 10, GFX_e4a99 ; 00 + pikapicanimgfx -1, Pic_e4b39 ; 11 + pikapicanimgfx 6, GFX_e4bde ; 12 + pikapicanimgfx -1, Pic_e4c3e ; 13 + pikapicanimgfx 25, GFX_e4ce0 ; 14 + pikapicanimgfx 25, GFX_e4e70 ; 15 + pikapicanimgfx -1, Pic_e5000 ; 16 + pikapicanimgfx 25, GFX_e50af ; 17 + pikapicanimgfx -1, Pic_e523f ; 18 + pikapicanimgfx 25, GFX_e52fe ; 19 + pikapicanimgfx -1, Pic_e548e ; 1a + pikapicanimgfx 25, GFX_e5541 ; 1b + pikapicanimgfx -1, Pic_e56d1 ; 1c + pikapicanimgfx 25, GFX_e5794 ; 1d + pikapicanimgfx -1, Pic_e5924 ; 1e + pikapicanimgfx 25, GFX_e59ed ; 1f + pikapicanimgfx -1, Pic_e5b7d ; 20 + pikapicanimgfx 25, GFX_e5c4d ; 21 + pikapicanimgfx -1, Pic_e5ddd ; 22 + pikapicanimgfx 25, GFX_e5e90 ; 23 + pikapicanimgfx 25, GFX_e6020 ; 24 + pikapicanimgfx 25, GFX_e61b0 ; 25 + pikapicanimgfx -1, Pic_e6340 ; 26 + pikapicanimgfx 25, GFX_e63f7 ; 27 + pikapicanimgfx -1, Pic_e6587 ; 28 + pikapicanimgfx 25, GFX_e6646 ; 29 + pikapicanimgfx -1, Pic_e67d6 ; 2a + pikapicanimgfx 25, GFX_e682f ; 2b + pikapicanimgfx 25, GFX_e69bf ; 2c + pikapicanimgfx 25, GFX_e6b4f ; 2d + pikapicanimgfx 25, GFX_e6cdf ; 2e + pikapicanimgfx 25, GFX_e6e6f ; 2f + pikapicanimgfx 25, GFX_e6fff ; 30 + pikapicanimgfx 25, GFX_e718f ; 31 + pikapicanimgfx 25, GFX_e731f ; 32 + pikapicanimgfx 25, GFX_e74af ; 33 + pikapicanimgfx 25, GFX_e763f ; 34 + pikapicanimgfx -1, Pic_e77cf ; 35 + pikapicanimgfx 25, GFX_e7863 ; 36 + pikapicanimgfx 25, GFX_e79f3 ; 37 + pikapicanimgfx 25, GFX_e7b83 ; 38 + pikapicanimgfx 25, GFX_e7d13 ; 39 + pikapicanimgfx -1, Pic_f0abf ; 3a + pikapicanimgfx 25, GFX_f0b64 ; 3b + pikapicanimgfx -1, Pic_f0cf4 ; 3c + pikapicanimgfx 25, GFX_f0d82 ; 3d + pikapicanimgfx 24, PikachuSprite ; 3e diff --git a/macros.asm b/macros.asm index c59a77ed..7c2dd65e 100644 --- a/macros.asm +++ b/macros.asm @@ -823,7 +823,7 @@ pikapic_writebyte: macro enum pikapic_loadgfx_command pikapic_loadgfx: macro - db pikapic_loadgfx_command, \1 ; _id - PikaPicAnimGFXHeaders) / 4 + db pikapic_loadgfx_command, (\1_id - PikaPicAnimGFXHeaders) / 4 endm enum pikapic_object_command @@ -863,9 +863,9 @@ pikapic_jump: macro ; 9 dbw pikapic_jump_command, \1 endm - enum pikapic_setdelay_command -pikapic_setdelay: macro ; a - dbw pikapic_setdelay_command, \1 + enum pikapic_setduration_command +pikapic_setduration: macro ; a + dbw pikapic_setduration_command, \1 endm enum pikapic_cry_command diff --git a/main.asm b/main.asm index ff4bdc30..0c198eca 100755 --- a/main.asm +++ b/main.asm @@ -879,13 +879,120 @@ SECTION "bank30",ROMX,BANK[$30] dr $c0000,$c4000 SECTION "bank39",ROMX,BANK[$39] -Pic_e4000: - dr $e4000,$e40cc -GFX_e40cc: - dr $e40cc,$e411c -Pic_e411c: - dr $e411c,$e7ea3 - +Pic_e4000: ; e4000 + dr $e4000, $e40cc +GFX_e40cc: ; e40cc + dr $e40cc, $e411c +Pic_e411c: ; e411c + dr $e411c, $e41d2 +GFX_e41d2: ; e41d2 + dr $e41d2, $e4272 +Pic_e4272: ; e4272 + dr $e4272, $e4323 +GFX_e4323: ; e4323 + dr $e4323, $e4383 +Pic_e4383: ; e4383 + dr $e4383, $e444b +GFX_e444b: ; e444b + dr $e444b, $e458b +Pic_e458b: ; e458b + dr $e458b, $e463b +GFX_e463b: ; e463b + dr $e463b, $e467b +Pic_e467b: ; e467b + dr $e467b, $e472e +GFX_e472e: ; e472e + dr $e472e, $e476e +Pic_e476e: ; e476e + dr $e476e, $e4841 +GFX_e4841: ; e4841 + dr $e4841, $e49d1 +Pic_e49d1: ; e49d1 + dr $e49d1, $e4a99 +GFX_e4a99: ; e4a99 + dr $e4a99, $e4b39 +Pic_e4b39: ; e4b39 + dr $e4b39, $e4bde +GFX_e4bde: ; e4bde + dr $e4bde, $e4c3e +Pic_e4c3e: ; e4c3e + dr $e4c3e, $e4ce0 +GFX_e4ce0: ; e4ce0 + dr $e4ce0, $e4e70 +GFX_e4e70: ; e4e70 + dr $e4e70, $e5000 +Pic_e5000: ; e5000 + dr $e5000, $e50af +GFX_e50af: ; e50af + dr $e50af, $e523f +Pic_e523f: ; e523f + dr $e523f, $e52fe +GFX_e52fe: ; e52fe + dr $e52fe, $e548e +Pic_e548e: ; e548e + dr $e548e, $e5541 +GFX_e5541: ; e5541 + dr $e5541, $e56d1 +Pic_e56d1: ; e56d1 + dr $e56d1, $e5794 +GFX_e5794: ; e5794 + dr $e5794, $e5924 +Pic_e5924: ; e5924 + dr $e5924, $e59ed +GFX_e59ed: ; e59ed + dr $e59ed, $e5b7d +Pic_e5b7d: ; e5b7d + dr $e5b7d, $e5c4d +GFX_e5c4d: ; e5c4d + dr $e5c4d, $e5ddd +Pic_e5ddd: ; e5ddd + dr $e5ddd, $e5e90 +GFX_e5e90: ; e5e90 + dr $e5e90, $e6020 +GFX_e6020: ; e6020 + dr $e6020, $e61b0 +GFX_e61b0: ; e61b0 + dr $e61b0, $e6340 +Pic_e6340: ; e6340 + dr $e6340, $e63f7 +GFX_e63f7: ; e63f7 + dr $e63f7, $e6587 +Pic_e6587: ; e6587 + dr $e6587, $e6646 +GFX_e6646: ; e6646 + dr $e6646, $e67d6 +Pic_e67d6: ; e67d6 + dr $e67d6, $e682f +GFX_e682f: ; e682f + dr $e682f, $e69bf +GFX_e69bf: ; e69bf + dr $e69bf, $e6b4f +GFX_e6b4f: ; e6b4f + dr $e6b4f, $e6cdf +GFX_e6cdf: ; e6cdf + dr $e6cdf, $e6e6f +GFX_e6e6f: ; e6e6f + dr $e6e6f, $e6fff +GFX_e6fff: ; e6fff + dr $e6fff, $e718f +GFX_e718f: ; e718f + dr $e718f, $e731f +GFX_e731f: ; e731f + dr $e731f, $e74af +GFX_e74af: ; e74af + dr $e74af, $e763f +GFX_e763f: ; e763f + dr $e763f, $e77cf +Pic_e77cf: ; e77cf + dr $e77cf, $e7863 +GFX_e7863: ; e7863 + dr $e7863, $e79f3 +GFX_e79f3: ; e79f3 + dr $e79f3, $e7b83 +GFX_e7b83: ; e7b83 + dr $e7b83, $e7d13 +GFX_e7d13: ; e7d13 + dr $e7d13, $e7ea3 SECTION "bank3A",ROMX,BANK[$3A] INCLUDE "text/monster_names.asm" -- cgit v1.3.1-sl0p From ce639816996d908de0a197b62c08d3a63846a512 Mon Sep 17 00:00:00 2001 From: pikalaxalt Date: Thu, 26 May 2016 18:24:54 -0400 Subject: Final phase 3 of Viridian City script disassembly --- engine/bank3c.asm | 11 ++- engine/bank3f.asm | 17 ++-- macros.asm | 2 + scripts/viridiancity.asm | 111 +++++++++++++++++++++- scripts/viridiancity2.asm | 218 ++++++++++++++++++++++++++++++++++++++++++++ text/maps/viridian_city.asm | 2 +- 6 files changed, 345 insertions(+), 16 deletions(-) create mode 100755 scripts/viridiancity2.asm (limited to 'macros.asm') diff --git a/engine/bank3c.asm b/engine/bank3c.asm index 6345424f..e8121bb1 100644 --- a/engine/bank3c.asm +++ b/engine/bank3c.asm @@ -302,7 +302,7 @@ Func_f0a82: ; f0a82 ret nz push hl push bc - callab Func_fcb4d + callab Func_fcb4d ; get Pikachu's position with respect to you? pop bc pop hl ld a, b @@ -317,7 +317,7 @@ Func_f0a82: ; f0a82 pop af ld [wUpdateSpritesEnabled], a pop hl - call Func_159b + call Func_159b ; homecall Func_fd2a1 - pikachu movement script? callab Func_fcba1 ret @@ -342,9 +342,10 @@ NurseChanseyText: TX_FAR _NurseChanseyText db "@" - dr $f0f26, $f1a01 -Func_f1a01: - dr $f1a01, $f220e + dr $f0f26, $f18bb + +INCLUDE "scripts/viridiancity2.asm" + dr $f1a0f, $f220e INCLUDE "data/mapHeaders/beach_house.asm" INCLUDE "scripts/beach_house.asm" diff --git a/engine/bank3f.asm b/engine/bank3f.asm index a077a24b..8f01097e 100644 --- a/engine/bank3f.asm +++ b/engine/bank3f.asm @@ -1051,32 +1051,35 @@ Func_fcb52: ; fcb52 (3f:4b52) ld a, [wYCoord] add $4 ld e, a - ld hl, $104 + ld hl, wSpriteStateData2 - wSpriteStateData1 + 4 add hl, bc ld a, [hl] cp e jr z, Func_fcb71 jr nc, .asm_fcb6e - ld a, $4 + ld a, SPRITE_FACING_UP ret + .asm_fcb6e - ld a, $0 + ld a, SPRITE_FACING_DOWN ret Func_fcb71: ; fcb71 (3f:4b71) - ld hl, $105 + ld hl, wSpriteStateData2 - wSpriteStateData1 + 5 add hl, bc ld a, [hl] cp d jr z, .asm_fcb81 jr nc, .asm_fcb7e - ld a, $8 + ld a, SPRITE_FACING_LEFT ret + .asm_fcb7e - ld a, $c + ld a, SPRITE_FACING_RIGHT ret + .asm_fcb81 - ld a, $ff + ld a, $ff ; standing ret Func_fcb84: ; fcb84 (3f:4b84) diff --git a/macros.asm b/macros.asm index 7c2dd65e..ed59b848 100644 --- a/macros.asm +++ b/macros.asm @@ -312,6 +312,8 @@ TX_ASM: MACRO ENDM TX_SFX_ITEM EQUS "db $0b" +TX_SFX_CONGRATS EQUS "db $10" +TX_SFX_KEY_ITEM EQUS "db $11" ; Predef macro. add_predef: MACRO diff --git a/scripts/viridiancity.asm b/scripts/viridiancity.asm index dd4931e9..c20285bc 100755 --- a/scripts/viridiancity.asm +++ b/scripts/viridiancity.asm @@ -51,7 +51,7 @@ ViridianCityScript_1905b: call StartSimulatingJoypadStates ld a, $1 ld [wSimulatedJoypadStatesIndex], a - ld a, $80 + ld a, D_DOWN ld [wSimulatedJoypadStatesEnd], a xor a ld [wSpriteStateData1 + 9], a @@ -158,7 +158,7 @@ ViridianCityScript_1914d: call StartSimulatingJoypadStates ld a, $1 ld [wSimulatedJoypadStatesIndex], a - ld a, $80 + ld a, D_DOWN ld [wSimulatedJoypadStatesEnd], a xor a ld [wSpriteStateData1 + 9], a @@ -256,4 +256,109 @@ ViridianCityScript10: ; 191f9 ret ViridianCityTextPointers: - dr $19213,$192f5 + dw ViridianCityText_0 ; 19233 + dw ViridianCityText_1 ; 1923f + dw ViridianCityText_2 ; 1924b + dw ViridianCityText_3 ; 19257 + dw ViridianCityText_4 ; 19263 + dw ViridianCityText_5 ; 1926f + dw ViridianCityText_6 ; 1927b + dw ViridianCityText_7 ; 1928c + dw ViridianCityText_8 ; 192b9 + dw ViridianCityText_9 ; 192c5 + dw ViridianCityText_10 ; 192d1 + dw MartSignText ; 23e5 + dw PokeCenterSignText ; 23ea + dw ViridianCityText_11 ; 192dd + dw ViridianCityText_12 ; 192e9 + dw ViridianCityText_13 ; 19287 + +ViridianCityText_0: + TX_ASM + callba Func_f18bb + jp TextScriptEnd + +ViridianCityText_1: + TX_ASM + callba Func_f18c7 + jp TextScriptEnd + +ViridianCityText_2: + TX_ASM + callba Func_f18e9 + jp TextScriptEnd + +ViridianCityText_3: + TX_ASM + callba Func_f1911 + jp TextScriptEnd + +ViridianCityText_4: + TX_ASM + callba Func_f192c + jp TextScriptEnd + +ViridianCityText_5: + TX_ASM + callba Func_f194a + jp TextScriptEnd + +ViridianCityText_6: + TX_ASM + callba Func_f198e + jp TextScriptEnd + +ViridianCityText_13: + TX_FAR _ViridianCityText_19219 + db "@" + +ViridianCityText_7: + TX_ASM + CheckEvent EVENT_02D + jr nz, .asm_192a6 + ld hl, ViridianCityText_192af + call PrintText + ld c, 2 + call DelayFrames + ld a, $7 + ld [W_VIRIDIANCITYCURSCRIPT], a + jr .asm_192ac + +.asm_192a6 + ld hl, ViridianCityText_192b4 + call PrintText +.asm_192ac + jp TextScriptEnd + +ViridianCityText_192af: + TX_FAR _ViridianCityText_1920a + db "@" + +ViridianCityText_192b4: + TX_FAR _OldManTextAfterBattle + db "@" + +ViridianCityText_8: + TX_ASM + callba Func_f19c5 + jp TextScriptEnd + +ViridianCityText_9: + TX_ASM + callba Func_f19d1 + jp TextScriptEnd + +ViridianCityText_10: + TX_ASM + callba Func_f19dd + jp TextScriptEnd + +ViridianCityText_11: + TX_ASM + callba Func_f19e9 + jp TextScriptEnd + +ViridianCityText_12: + TX_ASM + callba Func_f19f5 + jp TextScriptEnd diff --git a/scripts/viridiancity2.asm b/scripts/viridiancity2.asm new file mode 100755 index 00000000..80ae3924 --- /dev/null +++ b/scripts/viridiancity2.asm @@ -0,0 +1,218 @@ +Func_f18bb: + ld hl, ViridianCityText_f18c2 + call PrintText + ret + +ViridianCityText_f18c2: + TX_FAR _ViridianCityText1 + db "@" + +Func_f18c7: + ld hl, ViridianCityText_f18e4 + ld a, [wObtainedBadges] + cp $7f ; all but EARTHBADGE + jr z, .asm_f18db + CheckEvent EVENT_BEAT_VIRIDIAN_GYM_GIOVANNI + jr nz, .asm_f18db + ld hl, ViridianCityText_f18df +.asm_f18db + call PrintText + ret + +ViridianCityText_f18df: + TX_FAR _ViridianCityText_19122 + db "@" + +ViridianCityText_f18e4: + TX_FAR _ViridianCityText_19127 + db "@" + +Func_f18e9: + ld hl, ViridianCityText_f1902 + call PrintText + call YesNoChoice + ld a, [wCurrentMenuItem] + and a + ld hl, ViridianCityText_f1907 + jr nz, .asm_f18fe + ld hl, ViridianCityText_f190c +.asm_f18fe + call PrintText + ret + +ViridianCityText_f1902: + TX_FAR _ViridianCityText_1914d + db "@" + +ViridianCityText_f1907: + TX_FAR _ViridianCityText_19152 + db "@" + +ViridianCityText_f190c: + TX_FAR _ViridianCityText_19157 + db "@" + +Func_f1911: + ld hl, ViridianCityText_f1927 + CheckEvent EVENT_GOT_POKEDEX + jr nz, .asm_f191e + ld hl, ViridianCityText_f1922 +.asm_f191e + call PrintText + ret + +ViridianCityText_f1922: + TX_FAR _ViridianCityText_19175 + db "@" + +ViridianCityText_f1927: + TX_FAR _ViridianCityText_1917a + db "@" + +Func_f192c: + ld hl, ViridianCityText_f1945 + call PrintText + call StartSimulatingJoypadStates + ld a, $1 + ld [wSimulatedJoypadStatesIndex], a + ld a, D_DOWN + ld [wSimulatedJoypadStatesEnd], a + ld a, $5 + ld [W_VIRIDIANCITYCURSCRIPT], a + ret + +ViridianCityText_f1945: + TX_FAR _ViridianCityText_19191 + db "@" + +Func_f194a: + CheckEvent EVENT_GOT_TM42 + jr nz, .asm_f1972 + ld hl, ViridianCityText_f1979 + call PrintText + lb bc, TM_42, 1 + call GiveItem + jr nc, .asm_f196b + ld hl, ViridianCityText_f197e + call PrintText + SetEvent EVENT_GOT_TM42 + ret + +.asm_f196b + ld hl, ViridianCityText_f1989 + call PrintText + ret + +.asm_f1972 + ld hl, ViridianCityText_f1984 + call PrintText + ret + +ViridianCityText_f1979: + TX_FAR _ViridianCityText_191ca + db "@" + +ViridianCityText_f197e: + TX_FAR _ReceivedTM42Text + TX_SFX_CONGRATS + db "@" + +ViridianCityText_f1984: + TX_FAR _TM42Explanation + db "@" + +ViridianCityText_f1989: + TX_FAR _TM42NoRoomText + db "@" + +Func_f198e: + ld hl, ViridianCityText_f19b6 + call PrintText + ld c, 2 + call DelayFrames + call YesNoChoice + ld a, [wCurrentMenuItem] + and a + jr nz, .asm_f19af + ld hl, ViridianCityText_f19bb + call PrintText + ld a, $3 + ld [W_VIRIDIANCITYCURSCRIPT], a + jr .asm_f19b5 + +.asm_f19af + ld hl, ViridianCityText_f19c0 + call PrintText +.asm_f19b5 + ret + +ViridianCityText_f19b6: + TX_FAR _OldManAgainText1 + db "@" + +ViridianCityText_f19bb: + TX_FAR _OldManAgainText2 + db "@" + +ViridianCityText_f19c0: + TX_FAR _OldManAgainText3 + db "@" + +Func_f19c5: + ld hl, ViridianCityText_f19cc + call PrintText + ret + +ViridianCityText_f19cc: + TX_FAR _ViridianCityText8 + db "@" + +Func_f19d1: + ld hl, ViridianCityText_f19d8 + call PrintText + ret + +ViridianCityText_f19d8: + TX_FAR _ViridianCityText9 + db "@" + +Func_f19dd: + ld hl, ViridianCityText_f19e4 + call PrintText + ret + +ViridianCityText_f19e4: + TX_FAR _ViridianCityText10 + db "@" + +Func_f19e9: + ld hl, ViridianCityText_f19f0 + call PrintText + ret + +ViridianCityText_f19f0: + TX_FAR _ViridianCityText13 + db "@" + +Func_f19f5: + ld hl, ViridianCityText_f19fc + call PrintText + ret + +ViridianCityText_f19fc: + TX_FAR _ViridianCityText14 + db "@" + + +Func_f1a01: + ld hl, Data_f1a0a + ld b, SPRITE_FACING_RIGHT + call Func_f0a82 + ret + +Data_f1a0a: + db $00 + db $1d + db $1f + db $38 + db $3f diff --git a/text/maps/viridian_city.asm b/text/maps/viridian_city.asm index 4459acb8..a9a2184e 100644 --- a/text/maps/viridian_city.asm +++ b/text/maps/viridian_city.asm @@ -1,4 +1,4 @@ -_ViridianCityText_19219:: +_ViridianCityText_19219:: ; 2d:4478 text "First, you need" line "to weaken the" cont "target #MON." -- cgit v1.3.1-sl0p From 40f0dba6c17116c61ce4935663bf1a79485edee9 Mon Sep 17 00:00:00 2001 From: pikalaxalt Date: Fri, 27 May 2016 09:22:38 -0400 Subject: Route 24 scripts --- constants/event_constants.asm | 2 +- data/mapObjects/route24.asm | 3 +- home/text.asm | 440 +++++++++++++++++++++--------------------- macros.asm | 4 + main.asm | 19 +- scripts/route24.asm | 64 +++++- text/maps/route_24.asm | 28 +++ text/maps/route_25.asm | 28 --- 8 files changed, 333 insertions(+), 255 deletions(-) (limited to 'macros.asm') diff --git a/constants/event_constants.asm b/constants/event_constants.asm index 491f8664..b0c67e4b 100644 --- a/constants/event_constants.asm +++ b/constants/event_constants.asm @@ -5,7 +5,7 @@ const_value = 0 const EVENT_002 ; 002, (D747, bit 2) const EVENT_HALL_OF_FAME_DEX_RATING ; 003, (D747, bit 3) const EVENT_004 ; 004, (D747, bit 4) - const EVENT_PLAYER_AT_RIGHT_EXIT_TO_PALLET_TOWN ; 005, (D747, bit 5) + const EVENT_PLAYER_AT_RIGHT_EXIT_TO_PALLET_TOWN ; 005, (D747, bit 5) const EVENT_PALLET_AFTER_GETTING_POKEBALLS ; 006, (D747, bit 6) const EVENT_007 ; 007, (D747, bit 7) const EVENT_008 ; 008, (D748, bit 0) diff --git a/data/mapObjects/route24.asm b/data/mapObjects/route24.asm index f8173c9d..115f08d3 100755 --- a/data/mapObjects/route24.asm +++ b/data/mapObjects/route24.asm @@ -5,7 +5,7 @@ Route24Object: ; 0x506a4 (size=67) db $0 ; signs - db $8 ; objects + db $9 ; objects object SPRITE_BLACK_HAIR_BOY_1, $b, $f, STAY, LEFT, $1, OPP_ROCKET, $6 object SPRITE_BLACK_HAIR_BOY_1, $5, $14, STAY, UP, $2, OPP_JR_TRAINER_M, $2 object SPRITE_BLACK_HAIR_BOY_1, $b, $13, STAY, LEFT, $3, OPP_JR_TRAINER_M, $3 @@ -14,3 +14,4 @@ Route24Object: ; 0x506a4 (size=67) object SPRITE_LASS, $a, $1c, STAY, RIGHT, $6, OPP_LASS, $8 object SPRITE_BUG_CATCHER, $b, $1f, STAY, LEFT, $7, OPP_BUG_CATCHER, $9 object SPRITE_BALL, $a, $5, STAY, NONE, $8, TM_45 + object SPRITE_BLACK_HAIR_BOY_1, $6, $5, STAY, DOWN, $9 diff --git a/home/text.asm b/home/text.asm index da20a833..437a5c79 100644 --- a/home/text.asm +++ b/home/text.asm @@ -18,7 +18,7 @@ TextBoxBorder:: ; 16f0 (0:16f0) .next push hl ld a, "│" - ld [hli],a + ld [hli], a ld a, " " call NPlaceChar ld [hl], "│" @@ -49,32 +49,32 @@ NPlaceChar:: ; 171d (0:171d) PlaceString:: ; 1723 (0:1723) push hl PlaceNextChar:: ; 1724 (0:1724) - ld a,[de] + ld a, [de] cp "@" - jr nz,Char4ETest - ld b,h - ld c,l + jr nz, Char4ETest + ld b, h + ld c, l pop hl ret Char4ETest:: ; 172d (0:172d) cp $4E - jr nz,.next - ld bc,$0028 - ld a,[hFlags_0xFFFA] - bit 2,a - jr z,.next2 - ld bc,SCREEN_WIDTH + jr nz, .next + ld bc, $0028 + ld a, [hFlags_0xFFFA] + bit 2, a + jr z, .next2 + ld bc, SCREEN_WIDTH .next2 pop hl - add hl,bc + add hl, bc push hl jp PlaceNextChar_inc ; 17b6 .next cp $4F - jr nz,.next3 + jr nz, .next3 pop hl coord hl, 1, 16 push hl @@ -82,56 +82,56 @@ Char4ETest:: ; 172d (0:172d) .next3 ; Check against a dictionary and a - jp z,Char00 + jp z, Char00 cp $4C - jp z,Char4C + jp z, Char4C cp $4B - jp z,Char4B + jp z, Char4B cp $51 - jp z,Char51 + jp z, Char51 cp $49 - jp z,Char49 + jp z, Char49 cp $52 - jp z,Char52 + jp z, Char52 cp $53 - jp z,Char53 + jp z, Char53 cp $54 - jp z,Char54 + jp z, Char54 cp $5B - jp z,Char5B + jp z, Char5B cp $5E - jp z,Char5E + jp z, Char5E cp $5C - jp z,Char5C + jp z, Char5C cp $5D - jp z,Char5D + jp z, Char5D cp $55 - jp z,Char55 + jp z, Char55 cp $56 - jp z,Char56 + jp z, Char56 cp $57 - jp z,Char57 + jp z, Char57 cp $58 - jp z,Char58 + jp z, Char58 cp $4A - jp z,Char4A + jp z, Char4A cp $5F - jp z,Char5F + jp z, Char5F cp $59 - jp z,Char59 + jp z, Char59 cp $5A - jp z,Char5A - ld [hli],a + jp z, Char5A + ld [hli], a call PrintLetterDelay PlaceNextChar_inc:: ; 17b6 (0:17b6) inc de jp PlaceNextChar Char00:: ; 17ba (0:17ba) - ld b,h - ld c,l + ld b, h + ld c, l pop hl - ld de,Char00Text + ld de, Char00Text dec de ret @@ -141,47 +141,47 @@ Char00Text:: ; 17c2 (0:17c2) ; “%d ERROR.” Char52:: ; 17c7 (0:17c7) ; player’s name push de - ld de,wPlayerName + ld de, wPlayerName jr FinishDTE Char53:: ; 17cd (0:17cd) ; rival’s name push de - ld de,wRivalName + ld de, wRivalName jr FinishDTE Char5D:: ; 17d3 (0:17d3) ; TRAINER push de - ld de,Char5DText + ld de, Char5DText jr FinishDTE Char5C:: ; 17d9 (0:17d9) ; TM push de - ld de,Char5CText + ld de, Char5CText jr FinishDTE Char5B:: ; 17df (0:17df) ; PC push de - ld de,Char5BText + ld de, Char5BText jr FinishDTE Char5E:: ; 17e5 (0:17e5) ; ROCKET push de - ld de,Char5EText + ld de, Char5EText jr FinishDTE Char54:: ; 17eb (0:17eb) ; POKé push de - ld de,Char54Text + ld de, Char54Text jr FinishDTE Char56:: ; 17f1 (0:17f1) ; …… push de - ld de,Char56Text + ld de, Char56Text jr FinishDTE Char4A:: ; 17f7 (0:17f7) ; PKMN push de - ld de,Char4AText + ld de, Char4AText jr FinishDTE Char59:: ; 17fb (0:17fb) @@ -190,7 +190,7 @@ Char59:: ; 17fb (0:17fb) ; or ; player active monster’s name ; (like Char5A but flipped) - ld a,[H_WHOSETURN] + ld a, [H_WHOSETURN] xor 1 jr MonsterNameCharsCommon @@ -199,26 +199,26 @@ Char5A:: ; 1803 (0:1803) ; player active monster’s name ; or ; enemy active monster’s name, prefixed with “Enemy ” - ld a,[H_WHOSETURN] + ld a, [H_WHOSETURN] MonsterNameCharsCommon:: ; 1a37 (0:1a37) push de and a - jr nz,.Enemy - ld de,wBattleMonNick ; player active monster name + jr nz, .Enemy + ld de, wBattleMonNick ; player active monster name jr FinishDTE .Enemy ; print “Enemy ” - ld de,Char5AText + ld de, Char5AText call PlaceString - ld h,b - ld l,c - ld de,wEnemyMonNick ; enemy active monster name + ld h, b + ld l, c + ld de, wEnemyMonNick ; enemy active monster name FinishDTE:: ; 1819 (0:1819) call PlaceString - ld h,b - ld l,c + ld h, b + ld l, c pop de inc de jp PlaceNextChar @@ -238,16 +238,16 @@ Char56Text:: ; 183d (0:183d) Char5AText:: ; 1840 (0:1840) db "Enemy @" Char4AText:: ; 1847 (0:1847) - db $E1,$E2,"@" ; PKMN + db $E1, $E2, "@" ; PKMN Char55:: ; 184a (0:184a) push de - ld b,h - ld c,l - ld hl,Char55Text + ld b, h + ld c, l + ld hl, Char55Text call TextCommandProcessor ; 1919 - ld h,b - ld l,c + ld h, b + ld l, c pop de inc de jp PlaceNextChar @@ -259,15 +259,15 @@ Char55Text:: ; 185a (0:185a) Char5F:: ; 185f (0:185f) ; ends a Pokédex entry - ld [hl],"." + ld [hl], "." pop hl ret Char58:: ; 1863 (0:1863) - ld a,[wLinkState] + ld a, [wLinkState] cp LINK_STATE_BATTLING - jp z,Next1870 - ld a,$EE + jp z, Next1870 + ld a, $EE Coorda 18, 16 Next1870:: ; 1870 (0:1870) call ProtectedDelay3 ; 1913 @@ -276,7 +276,7 @@ Next1870:: ; 1870 (0:1870) Coorda 18, 16 Char57:: ; 1aad (0:1aad) pop hl - ld de,Char58Text + ld de, Char58Text dec de ret @@ -285,36 +285,36 @@ Char58Text:: ; 1881 (0:1881) Char51:: ; 1882 (0:1882) push de - ld a,$EE + ld a, $EE Coorda 18, 16 call ProtectedDelay3 call ManualTextScroll coord hl, 1, 13 lb bc, 4, 18 call ClearScreenArea - ld c,20 + ld c, 20 call DelayFrames pop de coord hl, 1, 14 jp PlaceNextChar_inc Char49:: ; 18a3 (0:18a3) - ld a,[hFlags_0xFFFA] - bit 3,a - jr z,.Char49 - ld a,$4e + ld a, [hFlags_0xFFFA] + bit 3, a + jr z, .Char49 + ld a, $4e jp Char4ETest .Char49 push de - ld a,$EE + ld a, $EE Coorda 18, 16 call ProtectedDelay3 call ManualTextScroll coord hl, 1, 10 lb bc, 7, 18 call ClearScreenArea - ld c,20 + ld c, 20 call DelayFrames pop de pop hl @@ -323,7 +323,7 @@ Char49:: ; 18a3 (0:18a3) jp PlaceNextChar_inc Char4B:: ; 18d1 (0:18d1) - ld a,$EE + ld a, $EE Coorda 18, 16 call ProtectedDelay3 push de @@ -345,25 +345,25 @@ Next18F1:: ; 18f1 (0:18f1) coord de, 0, 13 ld b, 60 .next - ld a,[hli] - ld [de],a + ld a, [hli] + ld [de], a inc de dec b - jr nz,.next + jr nz, .next coord hl, 1, 16 ld a, " " - ld b,SCREEN_WIDTH - 2 + ld b, SCREEN_WIDTH - 2 .next2 - ld [hli],a + ld [hli], a dec b - jr nz,.next2 + jr nz, .next2 ; wait five frames - ld b,5 + ld b, 5 .WaitFrame call DelayFrame dec b - jr nz,.WaitFrame + jr nz, .WaitFrame ret @@ -374,42 +374,42 @@ ProtectedDelay3:: ; 1913 (0:1913) ret TextCommandProcessor:: ; 1919 (0:1919) - ld a,[wLetterPrintingDelayFlags] + ld a, [wLetterPrintingDelayFlags] push af - set 1,a - ld e,a - ld a,[$fff9] + set 1, a + ld e, a + ld a, [$fff9] xor e - ld [wLetterPrintingDelayFlags],a - ld a,c - ld [wUnusedCC3A],a - ld a,b - ld [wUnusedCC3B],a + ld [wLetterPrintingDelayFlags], a + ld a, c + ld [wUnusedCC3A], a + ld a, b + ld [wUnusedCC3B], a NextTextCommand:: ; 192e (0:192e) - ld a,[hli] + ld a, [hli] cp a, "@" ; terminator - jr nz,.doTextCommand + jr nz, .doTextCommand pop af - ld [wLetterPrintingDelayFlags],a + ld [wLetterPrintingDelayFlags], a ret .doTextCommand push hl - cp a,$17 - jp z,TextCommand17 - cp a,$0e - jp nc,TextCommand0B ; if a != 0x17 and a >= 0xE, go to command 0xB + cp a, $17 + jp z, TextCommand17 + cp a, $0e + jp nc, TextCommand0B ; if a != 0x17 and a >= 0xE, go to command 0xB ; if a < 0xE, use a jump table - ld hl,TextCommandJumpTable + ld hl, TextCommandJumpTable push bc add a - ld b,$00 - ld c,a - add hl,bc + ld b, $00 + ld c, a + add hl, bc pop bc - ld a,[hli] - ld h,[hl] - ld l,a + ld a, [hli] + ld h, [hl] + ld l, a jp [hl] ; draw box @@ -419,17 +419,17 @@ NextTextCommand:: ; 192e (0:192e) ; CC = width TextCommand04:: ; 1951 (0:1951) pop hl - ld a,[hli] - ld e,a - ld a,[hli] - ld d,a - ld a,[hli] - ld b,a - ld a,[hli] - ld c,a + ld a, [hli] + ld e, a + ld a, [hli] + ld d, a + ld a, [hli] + ld b, a + ld a, [hli] + ld c, a push hl - ld h,d - ld l,e + ld h, d + ld l, e call TextBoxBorder pop hl jr NextTextCommand @@ -438,13 +438,13 @@ TextCommand04:: ; 1951 (0:1951) ; 00{string} TextCommand00:: ; 1963 (0:1963) pop hl - ld d,h - ld e,l - ld h,b - ld l,c + ld d, h + ld e, l + ld h, b + ld l, c call PlaceString - ld h,d - ld l,e + ld h, d + ld l, e inc hl jr NextTextCommand @@ -453,13 +453,13 @@ TextCommand00:: ; 1963 (0:1963) ; AAAA = address of string TextCommand01:: ; 1970 (0:1970) pop hl - ld a,[hli] - ld e,a - ld a,[hli] - ld d,a + ld a, [hli] + ld e, a + ld a, [hli] + ld d, a push hl - ld h,b - ld l,c + ld h, b + ld l, c call PlaceString pop hl jr NextTextCommand @@ -472,18 +472,18 @@ TextCommand01:: ; 1970 (0:1970) ; bits 5-7 = unknown flags TextCommand02:: ; 197e (0:197e) pop hl - ld a,[hli] - ld e,a - ld a,[hli] - ld d,a - ld a,[hli] + ld a, [hli] + ld e, a + ld a, [hli] + ld d, a + ld a, [hli] push hl - ld h,b - ld l,c - ld c,a + ld h, b + ld l, c + ld c, a call PrintBCDNumber - ld b,h - ld c,l + ld b, h + ld c, l pop hl jr NextTextCommand @@ -492,12 +492,12 @@ TextCommand02:: ; 197e (0:197e) ; AAAA = new destination address TextCommand03:: ; 1990 (0:1990) pop hl - ld a,[hli] - ld [wUnusedCC3A],a - ld c,a - ld a,[hli] - ld [wUnusedCC3B],a - ld b,a + ld a, [hli] + ld [wUnusedCC3A], a + ld c, a + ld a, [hli] + ld [wUnusedCC3B], a + ld b, a jp NextTextCommand ; repoint destination to second line of dialogue text box @@ -512,15 +512,15 @@ TextCommand05:: ; 199e (0:199e) ; 06 ; (no arguments) TextCommand06:: ; 19a5 (0:19a5) - ld a,[wLinkState] - cp a,LINK_STATE_BATTLING - jp z,TextCommand0D - ld a,$ee ; down arrow + ld a, [wLinkState] + cp a, LINK_STATE_BATTLING + jp z, TextCommand0D + ld a, $ee ; down arrow Coorda 18, 16 ; place down arrow in lower right corner of dialogue text box push bc call ManualTextScroll ; blink arrow and wait for A or B to be pressed pop bc - ld a," " + ld a, " " Coorda 18, 16 ; overwrite down arrow with blank space pop hl jp NextTextCommand @@ -529,7 +529,7 @@ TextCommand06:: ; 19a5 (0:19a5) ; 07 ; (no arguments) TextCommand07:: ; 19c0 (0:19c0) - ld a," " + ld a, " " Coorda 18, 16 ; place blank space in lower right corner of dialogue text box call Next18F1 ; scroll up text call Next18F1 @@ -541,7 +541,7 @@ TextCommand07:: ; 19c0 (0:19c0) ; 08{code} TextCommand08:: ; 19d2 (0:19d2) pop hl - ld de,NextTextCommand + ld de, NextTextCommand push de ; return address jp [hl] @@ -553,25 +553,25 @@ TextCommand08:: ; 19d2 (0:19d2) ; bits 4-7 = how long the number is in bytes TextCommand09:: ; 19d8 (0:19d8) pop hl - ld a,[hli] - ld e,a - ld a,[hli] - ld d,a - ld a,[hli] + ld a, [hli] + ld e, a + ld a, [hli] + ld d, a + ld a, [hli] push hl - ld h,b - ld l,c - ld b,a - and a,$0f - ld c,a - ld a,b - and a,$f0 + ld h, b + ld l, c + ld b, a + and a, $0f + ld c, a + ld a, b + and a, $f0 swap a - set BIT_LEFT_ALIGN,a - ld b,a + set BIT_LEFT_ALIGN, a + ld b, a call PrintNumber - ld b,h - ld c,l + ld b, h + ld c, l pop hl jp NextTextCommand @@ -581,10 +581,10 @@ TextCommand09:: ; 19d8 (0:19d8) TextCommand0A:: ; 19f6 (0:19f6) push bc call Joypad - ld a,[hJoyHeld] - and a,A_BUTTON | B_BUTTON - jr nz,.skipDelay - ld c,30 + ld a, [hJoyHeld] + and a, A_BUTTON | B_BUTTON + jr nz, .skipDelay + ld c, 30 call DelayFrames .skipDelay pop bc @@ -598,24 +598,24 @@ TextCommand0B:: ; 1a0a (0:1a0a) pop hl push bc dec hl - ld a,[hli] - ld b,a ; b = command number that got us here + ld a, [hli] + ld b, a ; b = command number that got us here push hl - ld hl,TextCommandSounds + ld hl, TextCommandSounds .loop - ld a,[hli] + ld a, [hli] cp b - jr z,.matchFound + jr z, .matchFound inc hl jr .loop .matchFound - cp a,$14 - jr z,.pokemonCry - cp a,$15 - jr z,.pokemonCry - cp a,$16 - jr z,.pokemonCry - ld a,[hl] + cp a, $14 + jr z, .pokemonCry + cp a, $15 + jr z, .pokemonCry + cp a, $16 + jr z, .pokemonCry + ld a, [hl] call PlaySound call WaitForSoundToFinish pop hl @@ -623,7 +623,7 @@ TextCommand0B:: ; 1a0a (0:1a0a) jp NextTextCommand .pokemonCry push de - ld a,[hl] + ld a, [hl] call PlayCry pop de pop hl @@ -632,43 +632,43 @@ TextCommand0B:: ; 1a0a (0:1a0a) ; format: text command ID, sound ID or cry ID TextCommandSounds:: ; 1a3d (0:1a3d) - db $0B,$86 ; (SFX_02_3a - SFX_Headers_02) / 3 - db $12,$9A ; (SFX_08_46 - SFX_Headers_08) / 3 - db $0E,$91 ; (SFX_02_41 - SFX_Headers_02) / 3 - db $0F,$86 ; (SFX_02_3a - SFX_Headers_02) / 3 - db $10,$89 ; (SFX_02_3b - SFX_Headers_02) / 3 - db $11,$94 ; (SFX_02_42 - SFX_Headers_02) / 3 - db $13,$98 ; (SFX_08_45 - SFX_Headers_08) / 3 - db $14,PIKACHU ; used in OakSpeech - db $15,PIDGEOT ; used in SaffronCityText12 - db $16,DEWGONG ; unused? + db $0B, SFX_GET_ITEM_1 + db $12, SFX_TURN_OFF_PC + db $0E, SFX_POKEDEX_RATING + db $0F, SFX_GET_ITEM_1 + db $10, SFX_GET_ITEM_2 + db $11, SFX_GET_KEY_ITEM + db $13, SFX_TRADE_MACHINE + db $14, PIKACHU ; used in OakSpeech + db $15, PIDGEOT ; used in SaffronCityText12 + db $16, DEWGONG ; unused? ; draw ellipses ; 0CAA ; AA = number of ellipses to draw TextCommand0C:: ; 1a51 (0:1a51) pop hl - ld a,[hli] - ld d,a + ld a, [hli] + ld d, a push hl - ld h,b - ld l,c + ld h, b + ld l, c .loop - ld a,$75 ; ellipsis - ld [hli],a + ld a, $75 ; ellipsis + ld [hli], a push de call Joypad pop de - ld a,[hJoyHeld] ; joypad state - and a,A_BUTTON | B_BUTTON - jr nz,.skipDelay ; if so, skip the delay - ld c,10 + ld a, [hJoyHeld] ; joypad state + and a, A_BUTTON | B_BUTTON + jr nz, .skipDelay ; if so, skip the delay + ld c, 10 call DelayFrames .skipDelay dec d - jr nz,.loop - ld b,h - ld c,l + jr nz, .loop + ld b, h + ld c, l pop hl jp NextTextCommand @@ -688,23 +688,23 @@ TextCommand0D:: ; 1a73 (0:1a73) ; BB = bank TextCommand17:: ; 1a7c (0:1a7c) pop hl - ld a,[H_LOADEDROMBANK] + ld a, [H_LOADEDROMBANK] push af - ld a,[hli] - ld e,a - ld a,[hli] - ld d,a - ld a,[hli] - ld [H_LOADEDROMBANK],a - ld [MBC1RomBank],a + ld a, [hli] + ld e, a + ld a, [hli] + ld d, a + ld a, [hli] + ld [H_LOADEDROMBANK], a + ld [MBC1RomBank], a push hl - ld l,e - ld h,d + ld l, e + ld h, d call TextCommandProcessor pop hl pop af - ld [H_LOADEDROMBANK],a - ld [MBC1RomBank],a + ld [H_LOADEDROMBANK], a + ld [MBC1RomBank], a jp NextTextCommand TextCommandJumpTable:: ; 1a9a (0:1a9a) diff --git a/macros.asm b/macros.asm index ed59b848..8d7a37c8 100644 --- a/macros.asm +++ b/macros.asm @@ -311,6 +311,10 @@ TX_ASM: MACRO db $08 ENDM +TX_BUTTON_SOUND: MACRO + db $06 + ENDM + TX_SFX_ITEM EQUS "db $0b" TX_SFX_CONGRATS EQUS "db $10" TX_SFX_KEY_ITEM EQUS "db $11" diff --git a/main.asm b/main.asm index 4503d4d7..a7e4908e 100755 --- a/main.asm +++ b/main.asm @@ -781,10 +781,21 @@ SECTION "bank14",ROMX,BANK[$14] dr $50000,$5003d Route22Blocks: INCBIN "maps/route22.blk" - dr $500f1,$506ed + dr $500f1,$50682 + +INCLUDE "data/mapHeaders/route24.asm" +INCLUDE "data/mapObjects/route24.asm" Route24Blocks: ; 506ed (14:46ed) INCBIN "maps/route24.blk" - dr $507a1,$509aa + +; INCLUDE "data/mapHeaders/route25.asm" +; INCLUDE "data/mapObjects/route25.asm" + dr $507a1,$50816 +Route25Blocks: ; 50816 (14:4816) +INCBIN "maps/route25.blk" + + + dr $50924,$509aa INCLUDE "data/mapHeaders/saffroncity.asm" INCLUDE "data/mapObjects/saffroncity.asm" @@ -792,7 +803,9 @@ SaffronCityBlocks: ; 50a98 (14:4a98) INCBIN "maps/saffroncity.blk" INCLUDE "scripts/saffroncity.asm" - dr $50ca9,$517cc + dr $50ca9,$51366 +INCLUDE "scripts/route24.asm" + dr $515f3,$517cc ; victoryroad2 dr $517cc,$52060 diff --git a/scripts/route24.asm b/scripts/route24.asm index 61df4377..15fe78b8 100755 --- a/scripts/route24.asm +++ b/scripts/route24.asm @@ -1,4 +1,4 @@ -Route24Script: ; 513ad (14:53ad) +Route24Script: ; 51366 (14:5366) call EnableAutoTextBoxDrawing ld hl, Route24TrainerHeaders ld de, Route24ScriptPointers @@ -84,6 +84,7 @@ Route24TextPointers: ; 5144b (14:544b) dw Route24Text6 dw Route24Text7 dw PickUpItemText + dw Route24Text8 Route24TrainerHeaders: ; 5145b (14:545b) Route24TrainerHeader0: ; 5145b (14:545b) @@ -191,7 +192,9 @@ Route24Text_51510: ; 51510 (14:5510) Route24Text_5151a: ; 5151a (14:551a) TX_FAR _Route24Text_5151a - db $0B, $6, "@" + TX_SFX_KEY_ITEM + TX_BUTTON_SOUND + db "@" Route24Text_51521: ; 51521 (14:5521) TX_FAR _Route24Text_51521 @@ -316,3 +319,60 @@ Route24EndBattleText6: ; 515c1 (14:55c1) Route24AfterBattleText6: ; 515c6 (14:55c6) TX_FAR _Route24AfterBattleText6 db "@" + +Route24Text8: + TX_ASM + CheckEvent EVENT_54F + jr nz, .asm_515d5 + ld hl, Route24Text_515de + call PrintText + call YesNoChoice + ld a, [wCurrentMenuItem] + and a + jr nz, .asm_515d0 + ld a, CHARMANDER + ld [wd11e], a + ld [wcf91], a + call GetMonName + ld a, $1 + ld [wDoNotWaitForButtonPressAfterDisplayingText], a + lb bc, CHARMANDER, 10 + call GivePokemon + jp nc, TextScriptEnd + ld a, [wAddedToParty] + and a + call z, WaitForTextScrollButtonPress + ld a, $1 + ld [wDoNotWaitForButtonPressAfterDisplayingText], a + ld hl, Route24Text_515e3 + call PrintText + SetEvent EVENT_54F + jp TextScriptEnd + +.asm_515d0 + ld hl, Route24Text_515e9 + jr .asm_515d8 + +.asm_515d5 + ld hl, Route24Text_515ee +.asm_515d8 + call PrintText + jp TextScriptEnd + +Route24Text_515de: + TX_FAR _Route24DamianText1 + db "@" + +Route24Text_515e3: + TX_FAR _Route24DamianText2 + db $d + db "@" + +Route24Text_515e9: + TX_FAR _Route24DamianText3 + db "@" + +Route24Text_515ee: + TX_FAR _Route24DamianText4 + db "@" + diff --git a/text/maps/route_24.asm b/text/maps/route_24.asm index 7a073916..26cb4044 100644 --- a/text/maps/route_24.asm +++ b/text/maps/route_24.asm @@ -154,3 +154,31 @@ _Route24AfterBattleText6:: line "have no regrets!" done +_Route24DamianText1:: + text "I'm not good at" + line "raising #MON." + + para "I should release" + line "my CHARMANDER" + cont "because I haven't" + cont "raised it well..." + + para "If you promise me" + line "you'll care for" + cont "it, it's yours." + done + +_Route24DamianText2:: + text "Take good care of" + line "my CHARMANDER!@@" + +_Route24DamianText3:: + text "Oh... I'd better" + line "release it then." + done + +_Route24DamianText4:: + text "How's CHARMANDER" + line "doing?" + done + diff --git a/text/maps/route_25.asm b/text/maps/route_25.asm index 0d0d8b5b..f9f0c8ff 100644 --- a/text/maps/route_25.asm +++ b/text/maps/route_25.asm @@ -1,31 +1,3 @@ -_Route25DamianText1:: - text "I'm not good at" - line "raising #MON." - - para "I should release" - line "my CHARMANDER" - cont "because I haven't" - cont "raised it well..." - - para "If you promise me" - line "you'll care for" - cont "it, it's yours." - done - -_Route25DamianText2:: - text "Take good care of" - line "my CHARMANDER!@@" - -_Route25DamianText3:: - text "Oh... I'd better" - line "release it then." - done - -_Route25DamianText4:: - text "How's CHARMANDER" - line "doing?" - done - _Route25BattleText1:: text "Local trainers" line "come here to" -- cgit v1.3.1-sl0p From ff62edda93b25a35dc6c3c795f5d568b382a4b5a Mon Sep 17 00:00:00 2001 From: pikalaxalt Date: Sat, 28 May 2016 16:07:46 -0400 Subject: Oaks Lab rewrite part 5 (finish) --- macros.asm | 6 +++- scripts/oakslab.asm | 96 ++++++++++++++++++++++++++++++++++++++++++++--------- 2 files changed, 86 insertions(+), 16 deletions(-) (limited to 'macros.asm') diff --git a/macros.asm b/macros.asm index 8d7a37c8..829841fa 100644 --- a/macros.asm +++ b/macros.asm @@ -811,8 +811,12 @@ dpikacry: MACRO db (\1_id - PikachuCriesPointerTable) / 3 endm +ldpikacry: MACRO + ld \1, (\2_id - PikachuCriesPointerTable) / 3 + ENDM + pikacry: MACRO - ld a, (\1_id - PikachuCriesPointerTable) / 3 + ldpikacry a, \1 endm diff --git a/scripts/oakslab.asm b/scripts/oakslab.asm index f441605c..63cec822 100755 --- a/scripts/oakslab.asm +++ b/scripts/oakslab.asm @@ -1062,35 +1062,101 @@ OaksLabText_1cb8a: db "@" OaksLabText10: - dr $1cb90,$1cb9f + TX_ASM + ld hl, OaksLabText_1cb9a + call PrintText + jp TextScriptEnd + +OaksLabText_1cb9a: + TX_FAR _OaksLabLeavingText + db "@" + OaksLabText11: - dr $1cb9f,$1cbae + TX_ASM + ld hl, OaksLabText_1cba9 + call PrintText + jp TextScriptEnd + +OaksLabText_1cba9: + TX_FAR _OaksLabRivalChallengeText + db "@" OaksLabRivalDefeatedText: - dr $1cbae,$1cbb3 + TX_FAR _OaksLabText_1d3be + db "@" OaksLabRivalBeatYouText: - dr $1cbb3,$1cbb8 + TX_FAR _OaksLabText_1d3c3 + db "@" + OaksLabText12: - dr $1cbb8,$1cbc7 + TX_ASM + ld hl, OaksLabText_1cbc2 + call PrintText + jp TextScriptEnd + +OaksLabText_1cbc2: + TX_FAR _OaksLabRivalToughenUpText + db "@" + OaksLabText26: - dr $1cbc7,$1cbe0 + TX_ASM + ldpikacry e, PikachuCry2 + callab PlayPikachuSoundClip + ld hl, OaksLabText_1cbdb + call PrintText + jp TextScriptEnd + +OaksLabText_1cbdb: + TX_FAR _OaksLabPikachuDislikesPokeballsText1 + db "@" + OaksLabText27: - dr $1cbe0,$1cbef + TX_ASM + ld hl, OaksLabText_1cbea + call PrintText + jp TextScriptEnd + +OaksLabText_1cbea: + TX_FAR _OaksLabPikachuDislikesPokeballsText2 + db "@" + OaksLabText19: - dr $1cbef,$1cbf4 + TX_FAR _OaksLabText21 + db "@" + OaksLabText20: - dr $1cbf4,$1cbf9 + TX_FAR _OaksLabText22 + db "@" + OaksLabText21: - dr $1cbf9,$1cbfe + TX_FAR _OaksLabText23 + db "@" + OaksLabText22: - dr $1cbfe,$1cc03 + TX_FAR _OaksLabText24 + db "@" + OaksLabText23: - dr $1cc03,$1cc09 + TX_FAR _OaksLabText25 + TX_SFX_KEY_ITEM + db "@" + OaksLabText24: - dr $1cc09,$1cc0e + TX_FAR _OaksLabText26 + db "@" + OaksLabText25: - dr $1cc0e,$1cc13 + TX_FAR _OaksLabText27 + db "@" + OaksLabText8: OaksLabText9: - dr $1cc13,$1cc22 + TX_ASM + ld hl, OaksLabText_1c31d + call PrintText + jp TextScriptEnd + +OaksLabText_1c31d: + TX_FAR _OaksLabText_1d405 + db "@" -- cgit v1.3.1-sl0p From 17b1752f8bdd75d9cd1bb72bd0d609b69c2d47c4 Mon Sep 17 00:00:00 2001 From: pikalaxalt Date: Sun, 29 May 2016 00:28:33 -0400 Subject: More far text scripts --- data/map_header_banks.asm | 2 +- data/map_header_pointers.asm | 2 +- engine/bank3c.asm | 67 +++++++++++++++++++++++++++++++++++++++++++- macros.asm | 1 + 4 files changed, 69 insertions(+), 3 deletions(-) (limited to 'macros.asm') diff --git a/data/map_header_banks.asm b/data/map_header_banks.asm index 2d57ccff..fe3a1db1 100644 --- a/data/map_header_banks.asm +++ b/data/map_header_banks.asm @@ -51,7 +51,7 @@ MapHeaderBanks:: ; fc3e4 (3f:43e4) db BANK(Route2House_h) db BANK(Route2Gate_h) db BANK(ViridianForestEntrance_h) - db $18 ; db BANK(ViridianForest_h) + db BANK(ViridianForest_h) db $17 ; db BANK(Museum1F_h) db $17 ; db BANK(Museum2F_h) db $17 ; db BANK(PewterGym_h) diff --git a/data/map_header_pointers.asm b/data/map_header_pointers.asm index 1c151398..930ce54a 100644 --- a/data/map_header_pointers.asm +++ b/data/map_header_pointers.asm @@ -51,7 +51,7 @@ MapHeaderPointers:: ; fc1f2 (3f:41f2) dw Route2House_h dw Route2Gate_h dw ViridianForestEntrance_h ;id=50 - dw $50ed ; dw ViridianForest_h + dw ViridianForest_h dw $40e3 ; dw Museum1F_h dw $41b4 ; dw Museum2F_h dw $4257 ; dw PewterGym_h diff --git a/engine/bank3c.asm b/engine/bank3c.asm index 964cc0bd..26fcbf61 100644 --- a/engine/bank3c.asm +++ b/engine/bank3c.asm @@ -360,7 +360,72 @@ INCBIN "maps/beach_house.blk" INCLUDE "data/mapObjects/beach_house.asm" Func_f23d0: ; f23d0 - dr $f23d0, $f24ae + call SaveScreenTilesToBuffer2 + xor a + ld [wUpdateSpritesEnabled], a + ld hl, wd730 + set 6, [hl] + callab Func_e8c5c + ld hl, wd730 + res 6, [hl] + call GBPalWhiteOutWithDelay3 + call ReloadTilesetTilePatterns + call RestoreScreenTilesAndReloadTilePatterns + call LoadScreenTilesFromBuffer2 + call Delay3 + call GBPalNormal + ld hl, Text_f2412 + ld a, [hOaksAideResult] + and a + jr nz, .asm_f2406 + ld hl, Text_f240c +.asm_f2406 + call PrintText + jp TextScriptEnd + +Text_f240c: + TX_FAR _BeachHousePrinterText5 + TX_SFX_ITEM2 + db "@" + +Text_f2412: + TX_FAR _BeachHousePrinterText6 + TX_SFX_ITEM2 + db "@" + +Func_f2418: + ld hl, BillsHouseText_f243b + call PrintText + call YesNoChoice + ld a, [wCurrentMenuItem] + and a + jr nz, .asm_f2433 +.asm_f2427 + ld hl, BillsHouseText_f2440 + call PrintText + ld a, $2 + ld [W_BILLSHOUSECURSCRIPT], a + ret + +.asm_f2433 + ld hl, BillsHouseText_f2445 + call PrintText + jr .asm_f2427 + +BillsHouseText_f243b: + TX_FAR _BillsHouseText_1e865 + db "@" + +BillsHouseText_f2440: + TX_FAR _BillsHouseText_1e86a + db "@" + +BillsHouseText_f2445: + TX_FAR _BillsHouseText_1e86f + db "@" + +Func_f244a: + dr $f244a, $f24ae Func_f24ae: ; f24ae dr $f24ae, $f2528 diff --git a/macros.asm b/macros.asm index 829841fa..29ca12f3 100644 --- a/macros.asm +++ b/macros.asm @@ -316,6 +316,7 @@ TX_BUTTON_SOUND: MACRO ENDM TX_SFX_ITEM EQUS "db $0b" +TX_SFX_ITEM2 EQUS "db $0d" TX_SFX_CONGRATS EQUS "db $10" TX_SFX_KEY_ITEM EQUS "db $11" -- cgit v1.3.1-sl0p From b8cced19fce2a212f5cb205039382a63821a3762 Mon Sep 17 00:00:00 2001 From: pikalaxalt Date: Sun, 29 May 2016 20:52:05 -0400 Subject: Mt Moon B2F --- constants/event_macros.asm | 32 ++- constants/hide_show_constants.asm | 34 +-- data/mapObjects/mtmoon3.asm | 15 +- data/map_header_banks.asm | 2 +- data/map_header_pointers.asm | 2 +- macros.asm | 2 +- main.asm | 10 +- scripts/beach_house2.asm | 4 +- scripts/mtmoon3.asm | 562 ++++++++++++++++++++++++++++---------- 9 files changed, 486 insertions(+), 177 deletions(-) (limited to 'macros.asm') diff --git a/constants/event_macros.asm b/constants/event_macros.asm index 5eb73147..bf0a95b5 100644 --- a/constants/event_macros.asm +++ b/constants/event_macros.asm @@ -452,6 +452,36 @@ CheckEitherEventSet: MACRO ENDC ENDM +CheckEitherEventSetReuseA: MACRO + IF event_byte != ((\1) / 8) +event_byte = ((\1) / 8) + ld a, [wEventFlags + event_byte] + ENDC + IF ((\1) / 8) == ((\2) / 8) + ld a, [wEventFlags + ((\1) / 8)] + and (1 << ((\1) % 8)) | (1 << ((\2) % 8)) + ELSE + ; This case doesn't happen in the original ROM. + IF ((\1) % 8) == ((\2) % 8) + push hl + ld a, [wEventFlags + ((\1) / 8)] + ld hl, wEventFlags + ((\2) / 8) + or [hl] + bit ((\1) % 8), a + pop hl + ELSE + push bc + ld a, [wEventFlags + ((\1) / 8)] + and (1 << ((\1) % 8)) + ld b, a + ld a, [wEventFlags + ((\2) / 8)] + and (1 << ((\2) % 8)) + or b + pop bc + ENDC + ENDC + ENDM + ; for handling fixed event bits when events are inserted/removed ;\1 = event index ;\2 = fixed flag bit @@ -459,4 +489,4 @@ AdjustEventBit: MACRO IF ((\1) % 8) != (\2) add ((\1) % 8) - (\2) ENDC - ENDM \ No newline at end of file + ENDM diff --git a/constants/hide_show_constants.asm b/constants/hide_show_constants.asm index ffc4ea08..6fc52187 100755 --- a/constants/hide_show_constants.asm +++ b/constants/hide_show_constants.asm @@ -114,27 +114,27 @@ const_value SET $43 ; replace the tower rockets with jessie/james const HS_VIRIDIAN_FOREST_ITEM_1 ; 64 X const HS_VIRIDIAN_FOREST_ITEM_2 ; 65 X const HS_VIRIDIAN_FOREST_ITEM_3 ; 66 X - const HS_MT_MOON_1_ITEM_1 ; 67 X - const HS_MT_MOON_1_ITEM_2 ; 68 X + const HS_MT_MOON_1_ITEM_1 ; 67 + const HS_MT_MOON_1_ITEM_2 ; 68 const HS_MT_MOON_1_ITEM_3 ; 69 X const HS_MT_MOON_1_ITEM_4 ; 6A X const HS_MT_MOON_1_ITEM_5 ; 6B X const HS_MT_MOON_1_ITEM_6 ; 6C X - const HS_MT_MOON_3_FOSSIL_1 ; 6D - const HS_MT_MOON_3_FOSSIL_2 ; 6E - const HS_MT_MOON_3_ITEM_1 ; 6F X - const HS_MT_MOON_3_ITEM_2 ; 70 X - const HS_SS_ANNE_2_RIVAL ; 71 - const HS_SS_ANNE_8_ITEM ; 72 X - const HS_SS_ANNE_9_ITEM_1 ; 73 X - const HS_SS_ANNE_9_ITEM_2 ; 74 X - const HS_SS_ANNE_10_ITEM_1 ; 75 X - const HS_SS_ANNE_10_ITEM_2 ; 76 X - const HS_SS_ANNE_10_ITEM_3 ; 77 X - const HS_VICTORY_ROAD_3_ITEM_1 ; 78 X - const HS_VICTORY_ROAD_3_ITEM_2 ; 79 X - -const_value SET $7c ; idk anymore lol + const HS_MT_MOON_JESSIE ; 6D + const HS_MT_MOON_JAMES ; 6E + const HS_MT_MOON_3_FOSSIL_1 ; 6F X + const HS_MT_MOON_3_FOSSIL_2 ; 70 X + const HS_MT_MOON_3_ITEM_1 ; 71 + const HS_MT_MOON_3_ITEM_2 ; 72 X + const HS_SS_ANNE_2_RIVAL ; 73 X + const HS_SS_ANNE_8_ITEM ; 74 X + const HS_SS_ANNE_9_ITEM_1 ; 75 X + const HS_SS_ANNE_9_ITEM_2 ; 76 X + const HS_SS_ANNE_10_ITEM_1 ; 77 X + const HS_SS_ANNE_10_ITEM_2 ; 78 X + const HS_SS_ANNE_10_ITEM_3 ; 79 X + const HS_VICTORY_ROAD_3_ITEM_1 ; 7A + const HS_VICTORY_ROAD_3_ITEM_2 ; 7B const HS_VICTORY_ROAD_3_BOULDER ; 7C X const HS_ROCKET_HIDEOUT_1_ITEM_1 ; 7D X const HS_ROCKET_HIDEOUT_1_ITEM_2 ; 7E X diff --git a/data/mapObjects/mtmoon3.asm b/data/mapObjects/mtmoon3.asm index 4f8f911c..4a9b1946 100755 --- a/data/mapObjects/mtmoon3.asm +++ b/data/mapObjects/mtmoon3.asm @@ -9,16 +9,17 @@ MtMoon3Object: ; 0x49fdb (size=102) db $0 ; signs - db $9 ; objects + db $a ; objects object SPRITE_BLACK_HAIR_BOY_2, $c, $8, STAY, RIGHT, $1, OPP_SUPER_NERD, $2 - object SPRITE_ROCKET, $b, $10, STAY, DOWN, $2, OPP_ROCKET, $1 + object SPRITE_JESSIE, $9, $3, STAY, LEFT, $2 object SPRITE_ROCKET, $f, $16, STAY, DOWN, $3, OPP_ROCKET, $2 object SPRITE_ROCKET, $1d, $b, STAY, UP, $4, OPP_ROCKET, $3 - object SPRITE_ROCKET, $1d, $11, STAY, LEFT, $5, OPP_ROCKET, $4 - object SPRITE_OMANYTE, $c, $6, STAY, NONE, $6 ; person - object SPRITE_OMANYTE, $d, $6, STAY, NONE, $7 ; person - object SPRITE_BALL, $19, $15, STAY, NONE, $8, HP_UP - object SPRITE_BALL, $1d, $5, STAY, NONE, $9, TM_01 + object SPRITE_ROCKET, $1d, $11, STAY, LEFT, $5, OPP_ROCKET, $1 + object SPRITE_JAMES, $9, $4, STAY, LEFT, $6 + object SPRITE_OMANYTE, $c, $6, STAY, NONE, $7 ; person + object SPRITE_OMANYTE, $d, $6, STAY, NONE, $8 ; person + object SPRITE_BALL, $19, $15, STAY, NONE, $9, HP_UP + object SPRITE_BALL, $1d, $5, STAY, NONE, $a, TM_01 ; warp-to EVENT_DISP MT_MOON_3_WIDTH, $9, $19 ; MT_MOON_2 diff --git a/data/map_header_banks.asm b/data/map_header_banks.asm index dd088a1b..90ca27f9 100644 --- a/data/map_header_banks.asm +++ b/data/map_header_banks.asm @@ -61,7 +61,7 @@ MapHeaderBanks:: ; fc3e4 (3f:43e4) db BANK(PewterPokecenter_h) db BANK(MtMoon1_h) db BANK(MtMoon2_h) - db $12 ; db BANK(MtMoon3_h) + db BANK(MtMoon3_h) db $07 ; db BANK(CeruleanHouseTrashed_h) db $07 ; db BANK(CeruleanHouse1_h) db $17 ; db BANK(CeruleanPokecenter_h) diff --git a/data/map_header_pointers.asm b/data/map_header_pointers.asm index 0e5149e3..37357204 100644 --- a/data/map_header_pointers.asm +++ b/data/map_header_pointers.asm @@ -61,7 +61,7 @@ MapHeaderPointers:: ; fc1f2 (3f:41f2) dw PewterPokecenter_h dw MtMoon1_h dw MtMoon2_h ;id=60 - dw $5c7e ; dw MtMoon3_h + dw MtMoon3_h dw $4ec3 ; dw CeruleanHouseTrashed_h dw $4f34 ; dw CeruleanHouse1_h dw $44f5 ; dw CeruleanPokecenter_h diff --git a/macros.asm b/macros.asm index 29ca12f3..6ee88391 100644 --- a/macros.asm +++ b/macros.asm @@ -316,7 +316,7 @@ TX_BUTTON_SOUND: MACRO ENDM TX_SFX_ITEM EQUS "db $0b" -TX_SFX_ITEM2 EQUS "db $0d" +TX_WAIT_BUTTON EQUS "db $0d" TX_SFX_CONGRATS EQUS "db $10" TX_SFX_KEY_ITEM EQUS "db $11" diff --git a/main.asm b/main.asm index a8c063ba..8b3569e3 100755 --- a/main.asm +++ b/main.asm @@ -793,7 +793,15 @@ INCLUDE "scripts/mtmoon1.asm" INCLUDE "data/mapObjects/mtmoon1.asm" MtMoon1Blocks: INCBIN "maps/mtmoon1.blk" - dr $49c7e,$4a540 + +INCLUDE "data/mapHeaders/mtmoon3.asm" +INCLUDE "scripts/mtmoon3.asm" +INCLUDE "data/mapObjects/mtmoon3.asm" +MtMoon3Blocks: +INCBIN "maps/mtmoon3.blk" + +MtMoon3Script_4a325: ; pikachu-related function? + dr $4a325,$4a540 SECTION "bank13",ROMX,BANK[$13] diff --git a/scripts/beach_house2.asm b/scripts/beach_house2.asm index 918334ab..a2dd2114 100755 --- a/scripts/beach_house2.asm +++ b/scripts/beach_house2.asm @@ -24,10 +24,10 @@ Func_f23d0: ; f23d0 Text_f240c: TX_FAR _BeachHousePrinterText5 - TX_SFX_ITEM2 + TX_WAIT_BUTTON db "@" Text_f2412: TX_FAR _BeachHousePrinterText6 - TX_SFX_ITEM2 + TX_WAIT_BUTTON db "@" diff --git a/scripts/mtmoon3.asm b/scripts/mtmoon3.asm index b3a994e2..1de3445d 100755 --- a/scripts/mtmoon3.asm +++ b/scripts/mtmoon3.asm @@ -1,6 +1,6 @@ MtMoon3Script: ; 49d0b (12:5d0b) call EnableAutoTextBoxDrawing - ld hl, MtMoon3TrainerHeader0 + ld hl, MtMoon3TrainerHeaders ld de, MtMoon3ScriptPointers ld a, [W_MTMOON3CURSCRIPT] call ExecuteCurMapScriptInTable @@ -37,13 +37,23 @@ CoordsData_49d37: ; 49d37 (12:5d37) db $08,$0E db $FF -MtMoon3Script_49d58: ; 49d58 (12:5d58) +MtMoon3Script_49cd7: ; 49d58 (12:5d58) + CheckAndResetEvent EVENT_57E + call nz, MtMoon3Script_49cec xor a ld [wJoyIgnore], a +MtMoon3Script_49ce5: ld [W_MTMOON3CURSCRIPT], a ld [W_CURMAPSCRIPT], a ret +MtMoon3Script_49cec: + ld a, HS_MT_MOON_JESSIE + call MtMoon3Script_49f93 + ld a, HS_MT_MOON_JAMES + call MtMoon3Script_49f93 + ret + MtMoon3ScriptPointers: ; 49d63 (12:5d63) dw MtMoon3Script0 dw DisplayEnemyTrainerTextAndStartBattle @@ -51,23 +61,41 @@ MtMoon3ScriptPointers: ; 49d63 (12:5d63) dw MtMoon3Script3 dw MtMoon3Script4 dw MtMoon3Script5 + dw MtMoon3Script6 + dw MtMoon3Script7 + dw MtMoon3Script8 + dw MtMoon3Script9 + dw MtMoon3Script10 + dw MtMoon3Script11 + dw MtMoon3Script12 + dw MtMoon3Script13 + dw MtMoon3Script14 + dw MtMoon3Script15 MtMoon3Script0: ; 49d6f (12:5d6f) + CheckEitherEventSet EVENT_GOT_DOME_FOSSIL, EVENT_GOT_HELIX_FOSSIL + call z, MtMoon3Script_49d28 + CheckEvent EVENT_BEAT_MT_MOON_3_TRAINER_0 + call z, MtMoon3Script_49e15 + ret + +MtMoon3Script_49d28: CheckEvent EVENT_BEAT_MT_MOON_EXIT_SUPER_NERD - jp nz, MtMoon3Script_49d91 + jp nz, .asm_49d4b ld a, [wYCoord] cp $8 - jp nz, MtMoon3Script_49d91 + jp nz, .asm_49d4b ld a, [wXCoord] cp $d - jp nz, MtMoon3Script_49d91 + jp nz, .asm_49d4b xor a ld [hJoyHeld], a ld a, $1 ld [hSpriteIndexOrTextID], a - jp DisplayTextID + call DisplayTextID + ret -MtMoon3Script_49d91: ; 49d91 (12:5d91) +.asm_49d4b CheckEitherEventSet EVENT_GOT_DOME_FOSSIL, EVENT_GOT_HELIX_FOSSIL jp z, CheckFightingMapTrainers ret @@ -75,57 +103,93 @@ MtMoon3Script_49d91: ; 49d91 (12:5d91) MtMoon3Script3: ; 49d9a (12:5d9a) ld a, [wIsInBattle] cp $ff - jp z, MtMoon3Script_49d58 + jp z, MtMoon3Script_49cd7 call UpdateSprites call Delay3 SetEvent EVENT_BEAT_MT_MOON_EXIT_SUPER_NERD xor a ld [wJoyIgnore], a ld a, $0 - ld [W_MTMOON3CURSCRIPT], a - ld [W_CURMAPSCRIPT], a + call MtMoon3Script_49ce5 ret MtMoon3Script4: ; 49dba (12:5dba) ld a, $1 ld [H_SPRITEINDEX], a call SetSpriteMovementBytesToFF - ld hl, CoordsData_49dea + ld hl, CoordsData_49dc7 + call ArePlayerCoordsInArray + jr c, .asm_49da8 + ld hl, CoordsData_49dc0 call ArePlayerCoordsInArray - jr c, .asm_49dd7 - ld hl, CoordsData_49df1 + jr c, .asm_49db0 + ld hl, CoordsData_49dd5 call ArePlayerCoordsInArray - jp nc, CheckFightingMapTrainers - ld de, MovementData_49df9 - jr .asm_49dda -.asm_49dd7 - ld de, MovementData_49df8 -.asm_49dda + jr c, .asm_49d9b + ld hl, CoordsData_49dce + call ArePlayerCoordsInArray + jr c, .asm_49da3 + jp CheckFightingMapTrainers + +.asm_49d9b + ld b, SPRITE_FACING_LEFT + ld hl, PikachuMovementData_49dd8 + call MtMoon3Script_4a325 +.asm_49da3 + ld de, MovementData_49ddd + jr .asm_49db3 + +.asm_49da8 + ld b, SPRITE_FACING_RIGHT + ld hl, PikachuMovementData_49dca + call MtMoon3Script_4a325 +.asm_49db0 + ld de, MovementData_49ddc +.asm_49db3 ld a, $1 ld [H_SPRITEINDEX], a call MoveSprite ld a, $5 - ld [W_MTMOON3CURSCRIPT], a - ld [W_CURMAPSCRIPT], a + call MtMoon3Script_49ce5 ret -CoordsData_49dea: ; 49dea (12:5dea) +CoordsData_49dc0: db $07,$0C db $06,$0B db $05,$0C db $FF -CoordsData_49df1: ; 49df1 (12:5df1) +CoordsData_49dc7: + db $07,$0C + db $FF + +PikachuMovementData_49dca: + db $00 + db $35 + db $33 + db $3f + +CoordsData_49dce: db $07,$0D db $06,$0E db $05,$0E db $FF -MovementData_49df8: ; 49df8 (12:5df8) - db NPC_MOVEMENT_RIGHT +CoordsData_49dd5: + db $07,$0D + db $FF -MovementData_49df9: ; 49df9 (12:5df9) - db NPC_MOVEMENT_UP,$FF +PikachuMovementData_49dd8: + db $00 + db $35 + db $34 + db $3f + +MovementData_49ddc: ; 49df8 (12:5df8) + db NPC_MOVEMENT_RIGHT +MovementData_49ddd: ; 49df9 (12:5df9) + db NPC_MOVEMENT_UP + db $FF MtMoon3Script5: ; 49dfb (12:5dfb) ld a, [wd730] @@ -135,23 +199,213 @@ MtMoon3Script5: ; 49dfb (12:5dfb) ld [wJoyIgnore], a ld a, $1 ld [wDoNotWaitForButtonPressAfterDisplayingText], a - ld a, $a + ld a, $b ld [hSpriteIndexOrTextID], a call DisplayTextID - CheckEvent EVENT_GOT_DOME_FOSSIL + CheckEvent EVENT_GOT_HELIX_FOSSIL jr z, .asm_49e1d - ld a, HS_MT_MOON_3_FOSSIL_2 + ld a, HS_MT_MOON_3_FOSSIL_1 jr .asm_49e1f .asm_49e1d - ld a, HS_MT_MOON_3_FOSSIL_1 + ld a, HS_MT_MOON_3_FOSSIL_2 .asm_49e1f ld [wMissableObjectIndex], a predef HideObject xor a ld [wJoyIgnore], a ld a, $0 - ld [W_MTMOON3CURSCRIPT], a - ld [W_CURMAPSCRIPT], a + call MtMoon3Script_49ce5 + ret + +MtMoon3Script_49e15: + ld a, [wXCoord] + cp $3 + ret nz + ld a, [wYCoord] + cp $5 + ret nz + call StopAllMusic + ld c, BANK(Music_JessieAndJames) + ld a, MUSIC_JESSIE_AND_JAMES + call PlayMusic + xor a + ld [hJoyHeld], a + ld a, $FF ^ (A_BUTTON | B_BUTTON) + ld [wJoyIgnore], a + ld a, HS_MT_MOON_JESSIE + call MtMoon3Script_49f84 + ld a, HS_MT_MOON_JAMES + call MtMoon3Script_49f84 + ld a, $1 + ld [wDoNotWaitForButtonPressAfterDisplayingText], a + ld a, $c + ld [hSpriteIndexOrTextID], a + call DisplayTextID + xor a + ld [wDoNotWaitForButtonPressAfterDisplayingText], a + ld a, $1 + ld [wSimulatedJoypadStatesIndex], a + ld a, D_UP + ld [wSimulatedJoypadStatesEnd], a + call StartSimulatingJoypadStates + ld a, $ff + ld [wJoyIgnore], a + ld a, $6 + call MtMoon3Script_49ce5 + ret + +MovementData_f9e65: + db $06 +MovementData_f9e66: + db $06 + db $06 + db $06 + db $06 + db $06 + db $FF + +MtMoon3Script6: + ld a, $ff + ld [wJoyIgnore], a + ld a, [wSimulatedJoypadStatesIndex] + and a + ret nz + call Delay3 + ld a, $2 + ld [H_SPRITEINDEX], a + ld de, MovementData_f9e65 + call MoveSprite + ld a, $ff + ld [wJoyIgnore], a + ld a, $7 + call MtMoon3Script_49ce5 + ret + +MtMoon3Script7: + ld a, $ff + ld [wJoyIgnore], a + ld a, [wd730] + bit 0, a + ret nz +MtMoon3Script8: + ld a, $2 + ld [wSpriteStateData1 + 2 * $10 + 1], a + ld a, SPRITE_FACING_DOWN + ld [wSpriteStateData1 + 2 * $10 + 9], a +MtMoon3Script9: + ld a, $6 + ld [H_SPRITEINDEX], a + ld de, MovementData_f9e66 + call MoveSprite + ld a, $ff + ld [wJoyIgnore], a + ld a, $a + call MtMoon3Script_49ce5 + ret + +MtMoon3Script10: + ld a, $ff + ld [wJoyIgnore], a + ld a, [wd730] + bit 0, a + ret nz +MtMoon3Script11: + ld a, $2 + ld [wSpriteStateData1 + 6 * $10 + 1], a + ld a, SPRITE_FACING_LEFT + ld [wSpriteStateData1 + 6 * $10 + 9], a + call Delay3 + ld a, $FF ^ (A_BUTTON | B_BUTTON) + ld [wJoyIgnore], a + ld a, $d + ld [hSpriteIndexOrTextID], a + call DisplayTextID +MtMoon3Script12: + ld hl, wd72d + set 6, [hl] + set 7, [hl] + ld hl, MtMoon3JessieJamesEndBattleText + ld de, MtMoon3JessieJamesEndBattleText + call SaveEndBattleTextPointers + ld a, OPP_ROCKET + ld [wCurOpponent], a + ld a, $2a + ld [wTrainerNo], a + xor a + ld [hJoyHeld], a + ld [wJoyIgnore], a + SetEvent EVENT_57E + ld a, $d + call MtMoon3Script_49ce5 + ret + +MtMoon3Script13: + ld a, $ff + ld [wJoyIgnore], a + ld a, [wIsInBattle] + cp $ff + jp z, MtMoon3Script_49cd7 + ld a, $2 + ld [wSpriteStateData1 + 2 * $10 + 1], a + ld [wSpriteStateData1 + 6 * $10 + 1], a + xor a + ld [wSpriteStateData1 + 2 * $10 + 9], a + ld [wSpriteStateData1 + 6 * $10 + 9], a + ld a, $FF ^ (A_BUTTON | B_BUTTON) + ld [wJoyIgnore], a + ld a, $1 + ld [wDoNotWaitForButtonPressAfterDisplayingText], a + ld a, $e + ld [hSpriteIndexOrTextID], a + call DisplayTextID + xor a + ld [wDoNotWaitForButtonPressAfterDisplayingText], a + call StopAllMusic + ld c, BANK(Music_JessieAndJames) + ld a, MUSIC_JESSIE_AND_JAMES + call PlayMusic + ld a, $ff + ld [wJoyIgnore], a + ld a, $e + call MtMoon3Script_49ce5 + ret + +MtMoon3Script14: + ld a, $ff + ld [wJoyIgnore], a + call GBFadeOutToBlack + ld a, HS_MT_MOON_JESSIE + call MtMoon3Script_49f93 + ld a, HS_MT_MOON_JAMES + call MtMoon3Script_49f93 + call UpdateSprites + call Delay3 + call GBFadeInFromBlack + ld a, $f + call MtMoon3Script_49ce5 + ret + +MtMoon3Script15: + call PlayDefaultMusic + xor a + ld [hJoyHeld], a + ld [wJoyIgnore], a + SetEvent EVENT_BEAT_MT_MOON_3_TRAINER_0 + ResetEventReuseHL EVENT_57E + ld a, $0 + call MtMoon3Script_49ce5 + ret + +MtMoon3Script_49f84: + ld [wMissableObjectIndex], a + predef ShowObject + call UpdateSprites + call Delay3 + ret + +MtMoon3Script_49f93: + ld [wMissableObjectIndex], a + predef HideObject ret MtMoon3TextPointers: ; 49e34 (12:5e34) @@ -162,242 +416,258 @@ MtMoon3TextPointers: ; 49e34 (12:5e34) dw MtMoon3Text5 dw MtMoon3Text6 dw MtMoon3Text7 + dw MtMoon3Text8 dw PickUpItemText dw PickUpItemText - dw MtMoon3Text_49f99 - -MtMoon3TrainerHeaders: ; 49e48 (12:5e48) -MtMoon3TrainerHeader0: ; 49e48 (12:5e48) - dbEventFlagBit EVENT_BEAT_MT_MOON_3_TRAINER_0 - db ($4 << 4) ; trainer's view range - dwEventFlagAddress EVENT_BEAT_MT_MOON_3_TRAINER_0 - dw MtMoon3BattleText2 ; TextBeforeBattle - dw MtMoon3AfterBattleText2 ; TextAfterBattle - dw MtMoon3EndBattleText2 ; TextEndBattle - dw MtMoon3EndBattleText2 ; TextEndBattle - -MtMoon3TrainerHeader2: ; 49e54 (12:5e54) + dw MtMoon3Text11 + dw MtMoon3Text12 + dw MtMoon3Text13 + dw MtMoon3Text14 + +MtMoon3TrainerHeaders: +MtMoon3TrainerHeader0: dbEventFlagBit EVENT_BEAT_MT_MOON_3_TRAINER_2 - db ($4 << 4) ; trainer's view range + db ($4 << 4) dwEventFlagAddress EVENT_BEAT_MT_MOON_3_TRAINER_2 - dw MtMoon3BattleText3 ; TextBeforeBattle - dw MtMoon3AfterBattleText3 ; TextAfterBattle - dw MtMoon3EndBattleText3 ; TextEndBattle - dw MtMoon3EndBattleText3 ; TextEndBattle + dw MtMoon3BattleText3 + dw MtMoon3AfterBattleText3 + dw MtMoon3EndBattleText3 + dw MtMoon3EndBattleText3 -MtMoon3TrainerHeader3: ; 49e60 (12:5e60) +MtMoon3TrainerHeader1: dbEventFlagBit EVENT_BEAT_MT_MOON_3_TRAINER_3 - db ($4 << 4) ; trainer's view range + db ($4 << 4) dwEventFlagAddress EVENT_BEAT_MT_MOON_3_TRAINER_3 - dw MtMoon3BattleText4 ; TextBeforeBattle - dw MtMoon3AfterBattleText4 ; TextAfterBattle - dw MtMoon3EndBattleText4 ; TextEndBattle - dw MtMoon3EndBattleText4 ; TextEndBattle + dw MtMoon3BattleText4 + dw MtMoon3AfterBattleText4 + dw MtMoon3EndBattleText4 + dw MtMoon3EndBattleText4 -MtMoon3TrainerHeader4: ; 49e6c (12:5e6c) +MtMoon3TrainerHeader2: dbEventFlagBit EVENT_BEAT_MT_MOON_3_TRAINER_4 - db ($4 << 4) ; trainer's view range + db ($4 << 4) dwEventFlagAddress EVENT_BEAT_MT_MOON_3_TRAINER_4 - dw MtMoon3BattleText5 ; TextBeforeBattle - dw MtMoon3AfterBattleText5 ; TextAfterBattle - dw MtMoon3EndBattleText5 ; TextEndBattle - dw MtMoon3EndBattleText5 ; TextEndBattle + dw MtMoon3BattleText5 + dw MtMoon3AfterBattleText5 + dw MtMoon3EndBattleText5 + dw MtMoon3EndBattleText5 - db $ff + db $FF + +MtMoon3Text2: +MtMoon3Text6: + db "@" + +MtMoon3Text12: + TX_FAR _MtMoonJessieJamesText1 + TX_ASM + ld c, 10 + call DelayFrames + ld a, PLAYER_DIR_UP + ld [wPlayerMovingDirection], a + ld a, $0 + ld [wEmotionBubbleSpriteIndex], a + ld a, $0 + ld [wWhichEmotionBubble], a + predef EmotionBubble + ld c, 20 + call DelayFrames + jp TextScriptEnd + +MtMoon3Text13: + TX_FAR _MtMoonJessieJamesText2 + db "@" -MtMoon3Text1: ; 49e79 (12:5e79) +MtMoon3JessieJamesEndBattleText: + TX_FAR _MtMoonJessieJamesText3 + db "@" + +MtMoon3Text14: + TX_FAR _MtMoonJessieJamesText4 + TX_ASM + ld c, 64 + call DelayFrames + jp TextScriptEnd + +MtMoon3Text1: TX_ASM CheckEvent EVENT_BEAT_MT_MOON_EXIT_SUPER_NERD - jr z, .asm_49e8d - and $c0 - jr nz, .asm_49eb8 - ld hl, MtMoon3Text_49f8f + jr z, .asm_4a02f + and $81 ; CheckEitherEventSetReuseA EVENT_GOT_DOME_FOSSIL, EVENT_GOT_HELIX_FOSSIL + jr nz, .asm_4a057 + ld hl, MtMoon3Text_4a116 call PrintText - jr .asm_49ebe -.asm_49e8d - ld hl, MtMoon3Text_49f85 + jr .asm_4a05d + +.asm_4a02f + ld hl, MtMoon3Text_4a10c call PrintText ld hl, wd72d set 6, [hl] set 7, [hl] - ld hl, MtMoon3Text_49f8a - ld de, MtMoon3Text_49f8a + ld hl, MtMoon3SuperNerdEndBattleText + ld de, MtMoon3SuperNerdEndBattleText call SaveEndBattleTextPointers ld a, [H_SPRITEINDEX] ld [wSpriteIndex], a call EngageMapTrainer call InitBattleEnemyParameters ld a, $3 - ld [W_MTMOON3CURSCRIPT], a - ld [W_CURMAPSCRIPT], a - jr .asm_49ebe -.asm_49eb8 - ld hl, MtMoon3Text_49f94 + call MtMoon3Script_49ce5 + jr .asm_4a05d + +.asm_4a057 + ld hl, MtMoon3Text_4a11b call PrintText -.asm_49ebe +.asm_4a05d jp TextScriptEnd -MtMoon3Text2: ; 49ec1 (12:5ec1) +MtMoon3Text3: TX_ASM ld hl, MtMoon3TrainerHeader0 - call TalkToTrainer - jp TextScriptEnd + jr MtMoon3TalkToTrainer -MtMoon3Text3: ; 49ecb (12:5ecb) +MtMoon3Text4: TX_ASM - ld hl, MtMoon3TrainerHeader2 - call TalkToTrainer - jp TextScriptEnd + ld hl, MtMoon3TrainerHeader1 + jr MtMoon3TalkToTrainer -MtMoon3Text4: ; 49ed5 (12:5ed5) - TX_ASM - ld hl, MtMoon3TrainerHeader3 - call TalkToTrainer - jp TextScriptEnd -MtMoon3Text5: ; 49edf (12:5edf) +MtMoon3Text5: TX_ASM - ld hl, MtMoon3TrainerHeader4 + ld hl, MtMoon3TrainerHeader2 +MtMoon3TalkToTrainer: call TalkToTrainer jp TextScriptEnd -MtMoon3Text6: ; 49ee9 (12:5ee9) +MtMoon3Text7: TX_ASM ld a, $1 ld [wDoNotWaitForButtonPressAfterDisplayingText], a - ld hl, MtMoon3Text_49f24 + ld hl, MtMoon3Text_4a0ae call PrintText call YesNoChoice ld a, [wCurrentMenuItem] and a - jr nz, .asm_49f21 + jr nz, .asm_4a0ab lb bc, DOME_FOSSIL, 1 call GiveItem - jp nc, MtMoon3Script_49f76 - call MtMoon3Script_49f69 + jp nc, MtMoon3Script_4a0fd + call MtMoon3Script_4a0f0 ld a, HS_MT_MOON_3_FOSSIL_1 ld [wMissableObjectIndex], a predef HideObject SetEvent EVENT_GOT_DOME_FOSSIL ld a, $4 - ld [W_MTMOON3CURSCRIPT], a - ld [W_CURMAPSCRIPT], a -.asm_49f21 + call MtMoon3Script_49ce5 +.asm_4a0ab jp TextScriptEnd -MtMoon3Text_49f24: ; 49f24 (12:5f24) +MtMoon3Text_4a0ae: TX_FAR _MtMoon3Text_49f24 db "@" -MtMoon3Text7: ; 49f29 (12:5f29) +MtMoon3Text8: TX_ASM ld a, $1 ld [wDoNotWaitForButtonPressAfterDisplayingText], a - ld hl, MtMoon3Text_49f64 + ld hl, MtMoon3Text_4a0eb call PrintText call YesNoChoice ld a, [wCurrentMenuItem] and a - jr nz, .asm_49f61 + jr nz, .asm_4a0e8 lb bc, HELIX_FOSSIL, 1 call GiveItem - jp nc, MtMoon3Script_49f76 - call MtMoon3Script_49f69 + jp nc, MtMoon3Script_4a0fd + call MtMoon3Script_4a0f0 ld a, HS_MT_MOON_3_FOSSIL_2 ld [wMissableObjectIndex], a predef HideObject SetEvent EVENT_GOT_HELIX_FOSSIL ld a, $4 - ld [W_MTMOON3CURSCRIPT], a - ld [W_CURMAPSCRIPT], a -.asm_49f61 + call MtMoon3Script_49ce5 +.asm_4a0e8 jp TextScriptEnd -MtMoon3Text_49f64: ; 49f64 (12:5f64) +MtMoon3Text_4a0eb: TX_FAR _MtMoon3Text_49f64 db "@" -MtMoon3Script_49f69: ; 49f69 (12:5f69) - ld hl, MtMoon3Text_49f6f +MtMoon3Script_4a0f0: + ld hl, MtMoon3Text_4a0f6 jp PrintText -MtMoon3Text_49f6f: ; 49f6f (12:5f6f) +MtMoon3Text_4a0f6: TX_FAR _MtMoon3Text_49f6f - db $11, $d, "@" + TX_SFX_KEY_ITEM + TX_WAIT_BUTTON + db "@" -MtMoon3Script_49f76: ; 49f76 (12:5f76) - ld hl, MtMoon3Text_49f7f +MtMoon3Script_4a0fd: + ld hl, MtMoon3Text_4a106 call PrintText jp TextScriptEnd -MtMoon3Text_49f7f: ; 49f7f (12:5f7f) +MtMoon3Text_4a106: TX_FAR _MtMoon3Text_49f7f - db $d, "@" + TX_WAIT_BUTTON + db "@" -MtMoon3Text_49f85: ; 49f85 (12:5f85) +MtMoon3Text_4a10c: TX_FAR _MtMoon3Text_49f85 db "@" -MtMoon3Text_49f8a: ; 49f8a (12:5f8a) +MtMoon3SuperNerdEndBattleText: TX_FAR _MtMoon3Text_49f8a db "@" -MtMoon3Text_49f8f: ; 49f8f (12:5f8f) +MtMoon3Text_4a116: TX_FAR _MtMoon3Text_49f8f db "@" -MtMoon3Text_49f94: ; 49f94 (12:5f94) +MtMoon3Text_4a11b: TX_FAR _MtMoon3Text_49f94 db "@" -MtMoon3Text_49f99: ; 49f99 (12:5f99) +MtMoon3Text11: TX_FAR _MtMoon3Text_49f99 - db $11, "@" - -MtMoon3BattleText2: ; 49f9f (12:5f9f) - TX_FAR _MtMoon3BattleText2 + TX_SFX_KEY_ITEM db "@" -MtMoon3EndBattleText2: ; 49fa4 (12:5fa4) - TX_FAR _MtMoon3EndBattleText2 - db "@" - -MtMoon3AfterBattleText2: ; 49fa9 (12:5fa9) - TX_FAR _MtMoon3AfterBattleText2 - db "@" - -MtMoon3BattleText3: ; 49fae (12:5fae) +MtMoon3BattleText3: TX_FAR _MtMoon3BattleText3 db "@" -MtMoon3EndBattleText3: ; 49fb3 (12:5fb3) +MtMoon3EndBattleText3: TX_FAR _MtMoon3EndBattleText3 db "@" -MtMoon3AfterBattleText3: ; 49fb8 (12:5fb8) +MtMoon3AfterBattleText3: TX_FAR _MtMoon3AfterBattleText3 db "@" -MtMoon3BattleText4: ; 49fbd (12:5fbd) +MtMoon3BattleText4: TX_FAR _MtMoon3BattleText4 db "@" -MtMoon3EndBattleText4: ; 49fc2 (12:5fc2) +MtMoon3EndBattleText4: TX_FAR _MtMoon3EndBattleText4 db "@" -MtMoon3AfterBattleText4: ; 49fc7 (12:5fc7) +MtMoon3AfterBattleText4: TX_FAR _MtMoon3AfterBattleText4 db "@" -MtMoon3BattleText5: ; 49fcc (12:5fcc) +MtMoon3BattleText5: TX_FAR _MtMoon3BattleText5 db "@" -MtMoon3EndBattleText5: ; 49fd1 (12:5fd1) +MtMoon3EndBattleText5: TX_FAR _MtMoon3EndBattleText5 db "@" -MtMoon3AfterBattleText5: ; 49fd6 (12:5fd6) +MtMoon3AfterBattleText5: TX_FAR _MtMoon3AfterBattleText5 db "@" + -- cgit v1.3.1-sl0p From 6e3581df4b9cbc8cf14fc7948df5df70002cc062 Mon Sep 17 00:00:00 2001 From: pikalaxalt Date: Mon, 30 May 2016 11:38:46 -0400 Subject: Mt Moon Pokemon Center --- data/mapObjects/mtmoonpokecenter.asm | 3 +- data/map_header_banks.asm | 2 +- data/map_header_pointers.asm | 2 +- engine/bank3c.asm | 4 +- home/text.asm | 8 ++-- macros.asm | 90 +++++++++++++++++++++++++----------- main.asm | 13 ++++-- scripts/mtmoonpokecenter.asm | 72 ++++------------------------- scripts/mtmoonpokecenter2.asm | 66 ++++++++++++++++++++++++++ wram.asm | 6 +-- 10 files changed, 159 insertions(+), 107 deletions(-) create mode 100755 scripts/mtmoonpokecenter2.asm (limited to 'macros.asm') diff --git a/data/mapObjects/mtmoonpokecenter.asm b/data/mapObjects/mtmoonpokecenter.asm index d6cd35ba..935c4a40 100755 --- a/data/mapObjects/mtmoonpokecenter.asm +++ b/data/mapObjects/mtmoonpokecenter.asm @@ -7,13 +7,14 @@ MtMoonPokecenterObject: ; 0x49376 (size=56) db $0 ; signs - db $6 ; objects + db $7 ; objects object SPRITE_NURSE, $3, $1, STAY, DOWN, $1 ; person object SPRITE_BUG_CATCHER, $4, $3, STAY, UP, $2 ; person object SPRITE_GENTLEMAN, $7, $3, STAY, UP, $3 ; person object SPRITE_FAT_BALD_GUY, $a, $6, WALK, $2, $4 ; person object SPRITE_CLIPBOARD, $7, $2, STAY, NONE, $5 ; person object SPRITE_CABLE_CLUB_WOMAN, $b, $2, STAY, DOWN, $6 ; person + object SPRITE_CHANSEY, $4, $1, STAY, DOWN, $7 ; person ; warp-to EVENT_DISP MT_MOON_POKECENTER_WIDTH, $7, $3 diff --git a/data/map_header_banks.asm b/data/map_header_banks.asm index cbc4395c..ca060492 100644 --- a/data/map_header_banks.asm +++ b/data/map_header_banks.asm @@ -68,7 +68,7 @@ MapHeaderBanks:: ; fc3e4 (3f:43e4) db BANK(CeruleanGym_h) db BANK(BikeShop_h) db BANK(CeruleanMart_h) - db $12 ; db BANK(MtMoonPokecenter_h) + db BANK(MtMoonPokecenter_h) db BANK(CeruleanHouseTrashed_h) db $07 ; db BANK(Route5Gate_h) db $17 ; db BANK(UndergroundPathEntranceRoute5_h) diff --git a/data/map_header_pointers.asm b/data/map_header_pointers.asm index 5131cf67..d2ecea33 100644 --- a/data/map_header_pointers.asm +++ b/data/map_header_pointers.asm @@ -68,7 +68,7 @@ MapHeaderPointers:: ; fc1f2 (3f:41f2) dw CeruleanGym_h dw BikeShop_h dw CeruleanMart_h - dw $52a9 ; dw MtMoonPokecenter_h + dw MtMoonPokecenter_h dw CeruleanHouseTrashed_h ; copy dw $5831 ; dw Route5Gate_h dw $55a8 ; dw UndergroundPathEntranceRoute5_h diff --git a/engine/bank3c.asm b/engine/bank3c.asm index 5a18d55b..d176511c 100644 --- a/engine/bank3c.asm +++ b/engine/bank3c.asm @@ -485,7 +485,9 @@ CeladonMansion1Text_f1eee: TX_FAR _CeladonMansion1Text12 db "@" - dr $f1ef3, $f220e + dr $f1ef3, $f218c + +INCLUDE "scripts/mtmoonpokecenter2.asm" INCLUDE "data/mapHeaders/beach_house.asm" INCLUDE "scripts/beach_house.asm" diff --git a/home/text.asm b/home/text.asm index 437a5c79..a0e860d9 100644 --- a/home/text.asm +++ b/home/text.asm @@ -382,9 +382,9 @@ TextCommandProcessor:: ; 1919 (0:1919) xor e ld [wLetterPrintingDelayFlags], a ld a, c - ld [wUnusedCC3A], a + ld [wTextDestinationTileAddrBuffer], a ld a, b - ld [wUnusedCC3B], a + ld [wTextDestinationTileAddrBuffer + 1], a NextTextCommand:: ; 192e (0:192e) ld a, [hli] @@ -493,10 +493,10 @@ TextCommand02:: ; 197e (0:197e) TextCommand03:: ; 1990 (0:1990) pop hl ld a, [hli] - ld [wUnusedCC3A], a + ld [wTextDestinationTileAddrBuffer], a ld c, a ld a, [hli] - ld [wUnusedCC3B], a + ld [wTextDestinationTileAddrBuffer + 1], a ld b, a jp NextTextCommand diff --git a/macros.asm b/macros.asm index 6ee88391..ef0b9f01 100644 --- a/macros.asm +++ b/macros.asm @@ -153,44 +153,61 @@ bcd3: MACRO coins equs "bcd2" money equs "bcd3" +validateCoords: MACRO + if \1 >= SCREEN_WIDTH + fail "x coord out of range" + endc + if \2 >= SCREEN_HEIGHT + fail "y coord out of range" + endc + endm + ;\1 = r ;\2 = X ;\3 = Y +;\4 = which tilemap (optional) coord: MACRO + validateCoords \2, \3 if _NARG >= 4 - ld \1, \4 + 20 * \3 + \2 + ld \1, \4 + SCREEN_WIDTH * \3 + \2 else - ld \1, wTileMap + 20 * \3 + \2 + ld \1, wTileMap + SCREEN_WIDTH * \3 + \2 endc ENDM ;\1 = X ;\2 = Y +;\3 = which tilemap (optional) aCoord: MACRO + validateCoords \1, \2 if _NARG >= 3 - ld a, [\3 + 20 * \2 + \1] + ld a, [\3 + SCREEN_WIDTH * \2 + \1] else - ld a, [wTileMap + 20 * \2 + \1] + ld a, [wTileMap + SCREEN_WIDTH * \2 + \1] endc ENDM ;\1 = X ;\2 = Y +;\3 = which tilemap (optional) Coorda: MACRO + validateCoords \1, \2 if _NARG >= 3 - ld [\3 + 20 * \2 + \1], a + ld [\3 + SCREEN_WIDTH * \2 + \1], a else - ld [wTileMap + 20 * \2 + \1], a + ld [wTileMap + SCREEN_WIDTH * \2 + \1], a endc ENDM ;\1 = X ;\2 = Y +;\3 = which tilemap (optional) dwCoord: MACRO + validateCoords \1, \2 if _NARG >= 3 - dw \3 + 20 * \2 + \1 + dw \3 + SCREEN_WIDTH * \2 + \1 else - dw wTileMap + 20 * \2 + \1 + dw wTileMap + SCREEN_WIDTH * \2 + \1 endc ENDM @@ -266,6 +283,15 @@ dba: MACRO dbw BANK(\1), \1 ENDM +dwb: MACRO + dw \1 + db \2 + ENDM + +dab: MACRO + dwb \1, BANK(\1) + ENDM + dbbw: MACRO db \1, \2 dw \3 @@ -277,22 +303,6 @@ RGB: MACRO ENDM ; text macros -TX_NUM: MACRO -; print a big-endian decimal number. -; \1: address to read from -; \2: number of bytes to read -; \3: number of digits to display - db $09 - dw \1 - db \2 << 4 | \3 - ENDM - -TX_FAR: MACRO - db $17 - dw \1 - db BANK(\1) - ENDM - ; text engine command $1 TX_RAM: MACRO ; prints text to screen @@ -307,12 +317,26 @@ TX_BCD: MACRO db \2 ENDM -TX_ASM: MACRO - db $08 +TX_CURSOR: MACRO +; Move cursor to (\1, \2) +; \1: X coord (0 - 19) +; \2: Y coord (0 - 17) + db $3 + dwCoord \1, \2 ENDM -TX_BUTTON_SOUND: MACRO - db $06 +TX_LINE EQUS "db $05" +TX_BUTTON_SOUND EQUS "db $06" +TX_ASM EQUS "db $08" + +TX_NUM: MACRO +; print a big-endian decimal number. +; \1: address to read from +; \2: number of bytes to read +; \3: number of digits to display + db $09 + dw \1 + db \2 << 4 | \3 ENDM TX_SFX_ITEM EQUS "db $0b" @@ -320,6 +344,16 @@ TX_WAIT_BUTTON EQUS "db $0d" TX_SFX_CONGRATS EQUS "db $10" TX_SFX_KEY_ITEM EQUS "db $11" +TX_FAR: MACRO +; 17AAAABB (call text at BB:AAAA) + db $17 + dab \1 + ENDM + + +TX_POKECENTER_PC EQUS "db $f6" +TX_POKECENTER_NURSE EQUS "db $ff" + ; Predef macro. add_predef: MACRO \1Predef:: diff --git a/main.asm b/main.asm index f4f08f0c..58846267 100755 --- a/main.asm +++ b/main.asm @@ -765,7 +765,6 @@ LavenderPokecenterBlocks: CeladonPokecenterBlocks: FuchsiaPokecenterBlocks: CinnabarPokecenterBlocks: -MtMoonPokecenterBlocks: RockTunnelPokecenterBlocks: INCBIN "maps/viridianpokecenter.blk" dr $440fb,$4410b @@ -790,7 +789,9 @@ INCLUDE "data/mapHeaders/route7.asm" INCLUDE "data/mapObjects/route7.asm" Route7Blocks: ; 48051 INCBIN "maps/route7.blk" - dr $480ab,$480eb +MtMoonPokecenterBlocks: +INCBIN "maps/mtmoonpokecenter.blk" + dr $480c7,$480eb INCLUDE "scripts/route7.asm" INCLUDE "data/mapHeaders/redshouse1f.asm" @@ -798,7 +799,13 @@ INCLUDE "scripts/redshouse1f.asm" INCLUDE "data/mapObjects/redshouse1f.asm" RedsHouse1FBlocks: INCBIN "maps/redshouse1f.blk" - dr $48157,$49953 + dr $48157,$492a9 + +INCLUDE "data/mapHeaders/mtmoonpokecenter.asm" +INCLUDE "scripts/mtmoonpokecenter.asm" +INCLUDE "data/mapObjects/mtmoonpokecenter.asm" + + dr $49330,$49953 INCLUDE "data/mapHeaders/mtmoon1.asm" INCLUDE "scripts/mtmoon1.asm" diff --git a/scripts/mtmoonpokecenter.asm b/scripts/mtmoonpokecenter.asm index fd3e4e53..888cab4c 100755 --- a/scripts/mtmoonpokecenter.asm +++ b/scripts/mtmoonpokecenter.asm @@ -9,9 +9,10 @@ MtMoonPokecenterTextPointers: ; 492d5 (12:52d5) dw MtMoonPokecenterText4 dw MtMoonPokecenterText5 dw MtMoonPokecenterText6 + dw MtMoonPokecenterText7 MtMoonPokecenterText1: ; 492e1 (12:52e1) - db $ff + TX_POKECENTER_NURSE MtMoonPokecenterText2: ; 492e2 (12:52e2) TX_FAR _MtMoonPokecenterText1 @@ -23,72 +24,17 @@ MtMoonPokecenterText3: ; 492e7 (12:52e7) MtMoonPokecenterText4: ; 492ec (12:52ec) TX_ASM - CheckEvent EVENT_BOUGHT_MAGIKARP, 1 - jp c, .alreadyBoughtMagikarp - ld hl, MtMoonPokecenterText_4935c - call PrintText - ld a, MONEY_BOX - ld [wTextBoxID], a - call DisplayTextBoxID - call YesNoChoice - ld a, [wCurrentMenuItem] - and a - jp nz, .choseNo - ld [hMoney], a - ld [hMoney + 2], a - ld a, $5 - ld [hMoney + 1], a - call HasEnoughMoney - jr nc, .enoughMoney - ld hl, MtMoonPokecenterText_49366 - jr .printText -.enoughMoney - lb bc, MAGIKARP, 5 - call GivePokemon - jr nc, .done - xor a - ld [wPriceTemp], a - ld [wPriceTemp + 2], a - ld a, $5 - ld [wPriceTemp + 1], a - ld hl, wPriceTemp + 2 - ld de, wPlayerMoney + 2 - ld c, $3 - predef SubBCDPredef - ld a, MONEY_BOX - ld [wTextBoxID], a - call DisplayTextBoxID - SetEvent EVENT_BOUGHT_MAGIKARP - jr .done -.choseNo - ld hl, MtMoonPokecenterText_49361 - jr .printText -.alreadyBoughtMagikarp - ld hl, MtMoonPokecenterText_4936b -.printText - call PrintText -.done + callab Func_f218c 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 + TX_POKECENTER_PC + +MtMoonPokecenterText7: + TX_ASM + callab Func_f0f12 + jp TextScriptEnd diff --git a/scripts/mtmoonpokecenter2.asm b/scripts/mtmoonpokecenter2.asm new file mode 100755 index 00000000..fa42f440 --- /dev/null +++ b/scripts/mtmoonpokecenter2.asm @@ -0,0 +1,66 @@ +Func_f218c: + CheckEvent EVENT_BOUGHT_MAGIKARP, 1 + jp c, .alreadyBoughtMagikarp + ld hl, MtMoonPokecenterText_4935c + call PrintText + ld a, MONEY_BOX + ld [wTextBoxID], a + call DisplayTextBoxID + call YesNoChoice + ld a, [wCurrentMenuItem] + and a + jp nz, .choseNo + ; $000500 + xor a + ld [hMoney], a + ld [hMoney + 2], a + ld a, $5 + ld [hMoney + 1], a + call HasEnoughMoney + jr nc, .enoughMoney + ld hl, MtMoonPokecenterText_49366 + jr .printText +.enoughMoney + lb bc, MAGIKARP, 5 + call GivePokemon + jr nc, .done + ; $000500 + xor a + ld [wPriceTemp], a + ld [wPriceTemp + 2], a + ld a, $5 + ld [wPriceTemp + 1], a + ld hl, wPriceTemp + 2 + ld de, wPlayerMoney + 2 + ld c, $3 + predef SubBCDPredef + ld a, MONEY_BOX + ld [wTextBoxID], a + call DisplayTextBoxID + SetEvent EVENT_BOUGHT_MAGIKARP + jr .done +.choseNo + ld hl, MtMoonPokecenterText_49361 + jr .printText +.alreadyBoughtMagikarp + ld hl, MtMoonPokecenterText_4936b +.printText + call PrintText +.done + ret + +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 "@" diff --git a/wram.asm b/wram.asm index fbfcc288..610574da 100755 --- a/wram.asm +++ b/wram.asm @@ -386,11 +386,7 @@ wTradeCenterPointerTableIndex:: ; cc38 ds 1 -wUnusedCC3A:: ; cc3a - ds 1 - -wUnusedCC3B:: ; cc3b - ds 1 +wTextDestinationTileAddrBuffer:: dw ; cc3a wDoNotWaitForButtonPressAfterDisplayingText:: ; cc3c ; if non-zero, skip waiting for a button press after displaying text in DisplayTextID -- cgit v1.3.1-sl0p From a443384a21060a1077730b08a8981ef707ba8dfa Mon Sep 17 00:00:00 2001 From: pikalaxalt Date: Mon, 30 May 2016 15:53:23 -0400 Subject: Rock Tunnel Pokecenter --- data/mapObjects/rocktunnelpokecenter.asm | 5 +++-- data/map_header_banks.asm | 2 +- data/map_header_pointers.asm | 2 +- macros.asm | 2 +- main.asm | 8 ++++++-- scripts/mtmoonpokecenter.asm | 2 +- scripts/rocktunnelpokecenter.asm | 10 ++++++++-- 7 files changed, 21 insertions(+), 10 deletions(-) (limited to 'macros.asm') diff --git a/data/mapObjects/rocktunnelpokecenter.asm b/data/mapObjects/rocktunnelpokecenter.asm index d2645165..3cd937cf 100755 --- a/data/mapObjects/rocktunnelpokecenter.asm +++ b/data/mapObjects/rocktunnelpokecenter.asm @@ -7,11 +7,12 @@ RockTunnelPokecenterObject: ; 0x493d4 (size=44) db $0 ; signs - db $4 ; objects + db $5 ; objects object SPRITE_NURSE, $3, $1, STAY, DOWN, $1 ; person - object SPRITE_GENTLEMAN, $7, $3, WALK, $2, $2 ; person + object SPRITE_GENTLEMAN, $7, $3, STAY, DOWN, $2 ; person object SPRITE_FISHER2, $2, $5, STAY, NONE, $3 ; person object SPRITE_CABLE_CLUB_WOMAN, $b, $2, STAY, DOWN, $4 ; person + object SPRITE_CHANSEY, $4, $1, STAY, DOWN, $5 ; person ; warp-to EVENT_DISP ROCK_TUNNEL_POKECENTER_WIDTH, $7, $3 diff --git a/data/map_header_banks.asm b/data/map_header_banks.asm index 074b5982..95279061 100644 --- a/data/map_header_banks.asm +++ b/data/map_header_banks.asm @@ -81,7 +81,7 @@ MapHeaderBanks:: ; fc3e4 (3f:43e4) db BANK(UndergroundPathEntranceRoute7Copy_h) ;FREEZE db BANK(Route8Gate_h) db BANK(UndergroundPathEntranceRoute8_h) - db $12 ; db BANK(RockTunnelPokecenter_h) + db BANK(RockTunnelPokecenter_h) db $11 ; db BANK(RockTunnel1_h) db $07 ; db BANK(PowerPlant_h) db $12 ; db BANK(Route11Gate_h) diff --git a/data/map_header_pointers.asm b/data/map_header_pointers.asm index a736462b..5f74b05a 100644 --- a/data/map_header_pointers.asm +++ b/data/map_header_pointers.asm @@ -81,7 +81,7 @@ MapHeaderPointers:: ; fc1f2 (3f:41f2) dw UndergroundPathEntranceRoute7Copy_h dw Route8Gate_h dw UndergroundPathEntranceRoute8_h ;id=80 - dw $5330 ; dw RockTunnelPokecenter_h + dw RockTunnelPokecenter_h dw $4571 ; dw RockTunnel1_h dw $5bc4 ; dw PowerPlant_h dw $5396 ; dw Route11Gate_h diff --git a/macros.asm b/macros.asm index ef0b9f01..54fba2d3 100644 --- a/macros.asm +++ b/macros.asm @@ -351,7 +351,7 @@ TX_FAR: MACRO ENDM -TX_POKECENTER_PC EQUS "db $f6" +TX_CABLE_CLUB_RECEPTIONIST EQUS "db $f6" TX_POKECENTER_NURSE EQUS "db $ff" ; Predef macro. diff --git a/main.asm b/main.asm index 2b8b5017..4516a772 100755 --- a/main.asm +++ b/main.asm @@ -794,7 +794,6 @@ LavenderPokecenterBlocks: CeladonPokecenterBlocks: FuchsiaPokecenterBlocks: CinnabarPokecenterBlocks: -RockTunnelPokecenterBlocks: INCBIN "maps/viridianpokecenter.blk" dr $440fb,$4410b @@ -819,6 +818,7 @@ INCLUDE "data/mapObjects/route7.asm" Route7Blocks: ; 48051 INCBIN "maps/route7.blk" MtMoonPokecenterBlocks: +RockTunnelPokecenterBlocks: INCBIN "maps/mtmoonpokecenter.blk" dr $480c7,$480eb INCLUDE "scripts/route7.asm" @@ -834,7 +834,11 @@ INCLUDE "data/mapHeaders/mtmoonpokecenter.asm" INCLUDE "scripts/mtmoonpokecenter.asm" INCLUDE "data/mapObjects/mtmoonpokecenter.asm" - dr $49330,$49953 +INCLUDE "data/mapHeaders/rocktunnelpokecenter.asm" +INCLUDE "scripts/rocktunnelpokecenter.asm" +INCLUDE "data/mapObjects/rocktunnelpokecenter.asm" + + dr $49396,$49953 INCLUDE "data/mapHeaders/mtmoon1.asm" INCLUDE "scripts/mtmoon1.asm" diff --git a/scripts/mtmoonpokecenter.asm b/scripts/mtmoonpokecenter.asm index 888cab4c..320ed070 100755 --- a/scripts/mtmoonpokecenter.asm +++ b/scripts/mtmoonpokecenter.asm @@ -32,7 +32,7 @@ MtMoonPokecenterText5: ; 49370 (12:5370) db "@" MtMoonPokecenterText6: ; 49375 (12:5375) - TX_POKECENTER_PC + TX_CABLE_CLUB_RECEPTIONIST MtMoonPokecenterText7: TX_ASM diff --git a/scripts/rocktunnelpokecenter.asm b/scripts/rocktunnelpokecenter.asm index 5e822bca..7d8f4bf6 100755 --- a/scripts/rocktunnelpokecenter.asm +++ b/scripts/rocktunnelpokecenter.asm @@ -7,9 +7,10 @@ RockTunnelPokecenterTextPointers: ; 493c0 (12:53c0) dw RockTunnelPokecenterText2 dw RockTunnelPokecenterText3 dw RockTunnelPokecenterText4 + dw RockTunnelPokecenterText5 RockTunnelPokecenterText1: ; 493c8 (12:53c8) - db $ff + TX_POKECENTER_NURSE RockTunnelPokecenterText2: ; 493c9 (12:53c9) TX_FAR _RockTunnelPokecenterText1 @@ -20,4 +21,9 @@ RockTunnelPokecenterText3: ; 493ce (12:53ce) db "@" RockTunnelPokecenterText4: ; 493d3 (12:53d3) - db $f6 + TX_CABLE_CLUB_RECEPTIONIST + +RockTunnelPokecenterText5: + TX_ASM + callab Func_f0f12 + jp TextScriptEnd -- cgit v1.3.1-sl0p