summaryrefslogtreecommitdiff
path: root/engine/bank3f
diff options
context:
space:
mode:
Diffstat (limited to 'engine/bank3f')
-rw-r--r--engine/bank3f/data/map_header_banks.asm251
-rw-r--r--engine/bank3f/data/map_header_pointers.asm251
-rw-r--r--engine/bank3f/data/map_songs.asm252
-rw-r--r--engine/bank3f/main.asm240
4 files changed, 994 insertions, 0 deletions
diff --git a/engine/bank3f/data/map_header_banks.asm b/engine/bank3f/data/map_header_banks.asm
new file mode 100644
index 00000000..94a13510
--- /dev/null
+++ b/engine/bank3f/data/map_header_banks.asm
@@ -0,0 +1,251 @@
+; see also MapHeaderPointers
+MapHeaderBanks:: ; fc3e4 (3f:43e4)
+ db BANK(PalletTown_h) ;PALLET_TOWN
+ db BANK(ViridianCity_h) ; VIRIDIAN_CITY
+ db BANK(PewterCity_h) ; PEWTER_CITY
+ db BANK(CeruleanCity_h) ; CERULEAN_CITY
+ db BANK(LavenderTown_h) ; LAVENDER_TOWN
+ db BANK(VermilionCity_h) ; VERMILION_CITY
+ db BANK(CeladonCity_h) ; CELADON_CITY
+ db BANK(FuchsiaCity_h) ; FUCHSIA_CITY
+ db BANK(CinnabarIsland_h) ; CINNABAR_ISLAND
+ db BANK(IndigoPlateau_h) ; INDIGO_PLATEAU
+ db BANK(SaffronCity_h) ; SAFFRON_CITY
+ db $1 ; unused
+ db BANK(Route1_h) ; ROUTE_1
+ db BANK(Route2_h) ; ROUTE_2
+ db BANK(Route3_h) ; ROUTE_3
+ db BANK(Route4_h) ; ROUTE_4
+ db BANK(Route5_h) ; ROUTE_5
+ db BANK(Route6_h) ; ROUTE_6
+ db BANK(Route7_h) ; ROUTE_7
+ db BANK(Route8_h) ; ROUTE_8
+ db BANK(Route9_h) ; ROUTE_9
+ db BANK(Route10_h) ; ROUTE_10
+ db BANK(Route11_h) ; ROUTE_11
+ db BANK(Route12_h) ; ROUTE_12
+ db BANK(Route13_h) ; ROUTE_13
+ db BANK(Route14_h) ; ROUTE_14
+ db BANK(Route15_h) ; ROUTE_15
+ db BANK(Route16_h) ; ROUTE_16
+ db BANK(Route17_h) ; ROUTE_17
+ db BANK(Route18_h) ; ROUTE_18
+ db BANK(Route19_h) ; ROUTE_19
+ db BANK(Route20_h) ; ROUTE_20
+ db BANK(Route21_h) ; ROUTE_21
+ db BANK(Route22_h) ; ROUTE_22
+ db BANK(Route23_h) ; ROUTE_23
+ db BANK(Route24_h) ; ROUTE_24
+ db BANK(Route25_h) ; ROUTE_25
+ db BANK(RedsHouse1F_h)
+ db BANK(RedsHouse2F_h)
+ db BANK(BluesHouse_h)
+ db BANK(OaksLab_h)
+ db BANK(ViridianPokecenter_h)
+ db BANK(ViridianMart_h)
+ db BANK(School_h)
+ db BANK(ViridianHouse_h)
+ db BANK(ViridianGym_h)
+ db BANK(DiglettsCaveRoute2_h)
+ db BANK(ViridianForestExit_h)
+ db BANK(Route2House_h)
+ db BANK(Route2Gate_h)
+ db BANK(ViridianForestEntrance_h)
+ db BANK(ViridianForest_h)
+ db BANK(Museum1F_h)
+ db BANK(Museum2F_h)
+ db BANK(PewterGym_h)
+ db BANK(PewterHouse1_h)
+ db BANK(PewterMart_h)
+ db BANK(PewterHouse2_h)
+ db BANK(PewterPokecenter_h)
+ db BANK(MtMoon1_h)
+ db BANK(MtMoon2_h)
+ db BANK(MtMoon3_h)
+ db BANK(CeruleanHouseTrashed_h)
+ db BANK(CeruleanHouse1_h)
+ db BANK(CeruleanPokecenter_h)
+ db BANK(CeruleanGym_h)
+ db BANK(BikeShop_h)
+ db BANK(CeruleanMart_h)
+ db BANK(MtMoonPokecenter_h)
+ db BANK(CeruleanHouseTrashed_h)
+ db BANK(Route5Gate_h)
+ db BANK(UndergroundPathEntranceRoute5_h)
+ db BANK(DayCareM_h)
+ db BANK(Route6Gate_h)
+ db BANK(UndergroundPathEntranceRoute6_h)
+ db BANK(UndergroundPathEntranceRoute6_h) ;FREEZE
+ db BANK(Route7Gate_h)
+ db BANK(UndergroundPathEntranceRoute7_h)
+ db BANK(UndergroundPathEntranceRoute7Copy_h) ;FREEZE
+ db BANK(Route8Gate_h)
+ db BANK(UndergroundPathEntranceRoute8_h)
+ db BANK(RockTunnelPokecenter_h)
+ db BANK(RockTunnel1_h)
+ db BANK(PowerPlant_h)
+ db BANK(Route11Gate_h)
+ db BANK(DiglettsCaveEntranceRoute11_h)
+ db BANK(Route11GateUpstairs_h)
+ db BANK(Route12Gate_h)
+ db BANK(BillsHouse_h)
+ db BANK(VermilionPokecenter_h)
+ db BANK(FanClub_h)
+ db BANK(VermilionMart_h)
+ db BANK(VermilionGym_h)
+ db BANK(VermilionHouse1_h)
+ db BANK(VermilionDock_h)
+ db BANK(SSAnne1_h)
+ db BANK(SSAnne2_h)
+ db BANK(SSAnne3_h)
+ db BANK(SSAnne4_h)
+ db BANK(SSAnne5_h)
+ db BANK(SSAnne6_h)
+ db BANK(SSAnne7_h)
+ db BANK(SSAnne8_h)
+ db BANK(SSAnne9_h)
+ db BANK(SSAnne10_h)
+ db $1D ;unused
+ db $1D ;unused
+ db $1D ;unused
+ db BANK(VictoryRoad1_h)
+ db $1D ;unused
+ db $1D ;unused
+ db $1D ;unused
+ db $1D ;unused
+ db BANK(Lance_h)
+ db $1D ;unused
+ db $1D ;unused
+ db $1D ;unused
+ db $1D ;unused
+ db BANK(HallofFameRoom_h)
+ db BANK(UndergroundPathNS_h)
+ db BANK(Gary_h)
+ db BANK(UndergroundPathWE_h)
+ db BANK(CeladonMart1_h)
+ db BANK(CeladonMart2_h)
+ db BANK(CeladonMart3_h)
+ db BANK(CeladonMart4_h)
+ db BANK(CeladonMartRoof_h)
+ db BANK(CeladonMartElevator_h)
+ db BANK(CeladonMansion1_h)
+ db BANK(CeladonMansion2_h)
+ db BANK(CeladonMansion3_h)
+ db BANK(CeladonMansion4_h)
+ db BANK(CeladonMansion5_h)
+ db BANK(CeladonPokecenter_h)
+ db BANK(CeladonGym_h)
+ db BANK(CeladonGameCorner_h)
+ db BANK(CeladonMart5_h)
+ db BANK(CeladonPrizeRoom_h)
+ db BANK(CeladonDiner_h)
+ db BANK(CeladonHouse_h)
+ db BANK(CeladonHotel_h)
+ db BANK(LavenderPokecenter_h)
+ db BANK(PokemonTower1_h)
+ db BANK(PokemonTower2_h)
+ db BANK(PokemonTower3_h)
+ db BANK(PokemonTower4_h)
+ db BANK(PokemonTower5_h)
+ db BANK(PokemonTower6_h)
+ db BANK(PokemonTower7_h)
+ db BANK(LavenderHouse1_h)
+ db BANK(LavenderMart_h)
+ db BANK(LavenderHouse2_h)
+ db BANK(FuchsiaMart_h)
+ db BANK(FuchsiaHouse1_h)
+ db BANK(FuchsiaPokecenter_h)
+ db BANK(FuchsiaHouse2_h)
+ db BANK(SafariZoneEntrance_h)
+ db BANK(FuchsiaGym_h)
+ db BANK(FuchsiaMeetingRoom_h)
+ db BANK(SeafoamIslands2_h)
+ db BANK(SeafoamIslands3_h)
+ db BANK(SeafoamIslands4_h)
+ db BANK(SeafoamIslands5_h)
+ db BANK(VermilionHouse2_h)
+ db BANK(FuchsiaHouse3_h)
+ db BANK(Mansion1_h)
+ db BANK(CinnabarGym_h)
+ db BANK(Lab1_h)
+ db BANK(Lab2_h)
+ db BANK(Lab3_h)
+ db BANK(Lab4_h)
+ db BANK(CinnabarPokecenter_h)
+ db BANK(CinnabarMart_h)
+ db BANK(CinnabarMart_h)
+ db BANK(IndigoPlateauLobby_h)
+ db BANK(CopycatsHouse1F_h)
+ db BANK(CopycatsHouse2F_h)
+ db BANK(FightingDojo_h)
+ db BANK(SaffronGym_h)
+ db BANK(SaffronHouse1_h)
+ db BANK(SaffronMart_h)
+ db BANK(SilphCo1_h)
+ db BANK(SaffronPokecenter_h)
+ db BANK(SaffronHouse2_h)
+ db BANK(Route15Gate_h)
+ db BANK(Route15GateUpstairs_h)
+ db BANK(Route16Gate_h)
+ db BANK(Route16GateUpstairs_h)
+ db BANK(Route16House_h)
+ db BANK(Route12House_h)
+ db BANK(Route18Gate_h)
+ db BANK(Route18GateUpstairs_h)
+ db BANK(SeafoamIslands1_h)
+ db BANK(Route22Gate_h)
+ db BANK(VictoryRoad2_h)
+ db BANK(Route12GateUpstairs_h)
+ db BANK(VermilionHouse3_h)
+ db BANK(DiglettsCave_h)
+ db BANK(VictoryRoad3_h)
+ db BANK(RocketHideout1_h)
+ db BANK(RocketHideout2_h)
+ db BANK(RocketHideout3_h)
+ db BANK(RocketHideout4_h)
+ db BANK(RocketHideoutElevator_h)
+ db $01
+ db $01
+ db $01
+ db BANK(SilphCo2_h)
+ db BANK(SilphCo3_h)
+ db BANK(SilphCo4_h)
+ db BANK(SilphCo5_h)
+ db BANK(SilphCo6_h)
+ db BANK(SilphCo7_h)
+ db BANK(SilphCo8_h)
+ db BANK(Mansion2_h)
+ db BANK(Mansion3_h)
+ db BANK(Mansion4_h)
+ db BANK(SafariZoneEast_h)
+ db BANK(SafariZoneNorth_h)
+ db BANK(SafariZoneWest_h)
+ db BANK(SafariZoneCenter_h)
+ db BANK(SafariZoneRestHouse1_h)
+ db BANK(SafariZoneSecretHouse_h)
+ db BANK(SafariZoneRestHouse2_h)
+ db BANK(SafariZoneRestHouse3_h)
+ db BANK(SafariZoneRestHouse4_h)
+ db BANK(UnknownDungeon2_h)
+ db BANK(UnknownDungeon3_h)
+ db BANK(UnknownDungeon1_h)
+ db BANK(NameRater_h)
+ db BANK(CeruleanHouse2_h)
+ db $01
+ db BANK(RockTunnel2_h)
+ db BANK(SilphCo9_h)
+ db BANK(SilphCo10_h)
+ db BANK(SilphCo11_h)
+ db BANK(SilphCoElevator_h)
+ db $11
+ db $11
+ db BANK(BattleCenterM_h)
+ db BANK(TradeCenterM_h)
+ db $11
+ db $11
+ db $11
+ db $11
+ db BANK(Lorelei_h)
+ db BANK(Bruno_h)
+ db BANK(Agatha_h)
+ db BANK(BeachHouse_h)
diff --git a/engine/bank3f/data/map_header_pointers.asm b/engine/bank3f/data/map_header_pointers.asm
new file mode 100644
index 00000000..5431727e
--- /dev/null
+++ b/engine/bank3f/data/map_header_pointers.asm
@@ -0,0 +1,251 @@
+; see also MapHeaderBanks
+MapHeaderPointers:: ; fc1f2 (3f:41f2)
+ dw PalletTown_h
+ dw ViridianCity_h
+ dw PewterCity_h
+ dw CeruleanCity_h
+ dw LavenderTown_h
+ dw VermilionCity_h
+ dw CeladonCity_h
+ dw FuchsiaCity_h
+ dw CinnabarIsland_h
+ dw IndigoPlateau_h
+ dw SaffronCity_h
+ dw SaffronCity_h
+ dw Route1_h
+ dw Route2_h
+ dw Route3_h
+ dw Route4_h
+ dw Route5_h
+ dw Route6_h
+ dw Route7_h
+ dw Route8_h
+ dw Route9_h
+ dw Route10_h
+ dw Route11_h
+ dw Route12_h
+ dw Route13_h
+ dw Route14_h
+ dw Route15_h
+ dw Route16_h
+ dw Route17_h
+ dw Route18_h
+ dw Route19_h
+ dw Route20_h
+ dw Route21_h
+ dw Route22_h
+ dw Route23_h
+ dw Route24_h
+ dw Route25_h
+ dw RedsHouse1F_h
+ dw RedsHouse2F_h
+ dw BluesHouse_h
+ dw OaksLab_h ;id=40
+ dw ViridianPokecenter_h
+ dw ViridianMart_h
+ dw School_h
+ dw ViridianHouse_h
+ dw ViridianGym_h
+ dw DiglettsCaveRoute2_h
+ dw ViridianForestExit_h
+ dw Route2House_h
+ dw Route2Gate_h
+ dw ViridianForestEntrance_h ;id=50
+ dw ViridianForest_h
+ dw Museum1F_h
+ dw Museum2F_h
+ dw PewterGym_h
+ dw PewterHouse1_h
+ dw PewterMart_h
+ dw PewterHouse2_h
+ dw PewterPokecenter_h
+ dw MtMoon1_h
+ dw MtMoon2_h ;id=60
+ dw MtMoon3_h
+ dw CeruleanHouseTrashed_h
+ dw CeruleanHouse1_h
+ dw CeruleanPokecenter_h
+ dw CeruleanGym_h
+ dw BikeShop_h
+ dw CeruleanMart_h
+ dw MtMoonPokecenter_h
+ dw CeruleanHouseTrashed_h ; copy
+ dw Route5Gate_h
+ dw UndergroundPathEntranceRoute5_h
+ dw DayCareM_h
+ dw Route6Gate_h
+ dw UndergroundPathEntranceRoute6_h
+ dw UndergroundPathEntranceRoute6_h ; unused
+ dw Route7Gate_h
+ dw UndergroundPathEntranceRoute7_h
+ dw UndergroundPathEntranceRoute7Copy_h
+ dw Route8Gate_h
+ dw UndergroundPathEntranceRoute8_h ;id=80
+ dw RockTunnelPokecenter_h
+ dw RockTunnel1_h
+ dw PowerPlant_h
+ dw Route11Gate_h
+ dw DiglettsCaveEntranceRoute11_h
+ dw Route11GateUpstairs_h
+ dw Route12Gate_h
+ dw BillsHouse_h
+ dw VermilionPokecenter_h
+ dw FanClub_h ;id=90
+ dw VermilionMart_h
+ dw VermilionGym_h
+ dw VermilionHouse1_h
+ dw VermilionDock_h
+ dw SSAnne1_h
+ dw SSAnne2_h
+ dw SSAnne3_h
+ dw SSAnne4_h
+ dw SSAnne5_h
+ dw SSAnne6_h ;id=100
+ dw SSAnne7_h
+ dw SSAnne8_h
+ dw SSAnne9_h
+ dw SSAnne10_h
+ dw Lance_h ; unused
+ dw Lance_h ; unused
+ dw Lance_h ; unused
+ dw VictoryRoad1_h
+ dw Lance_h ; unused
+ dw Lance_h ; unused ;id=110
+ dw Lance_h ; unused
+ dw Lance_h ; unused
+ dw Lance_h
+ dw Lance_h ; unused
+ dw Lance_h ; unused
+ dw Lance_h ; unused
+ dw Lance_h ; unused
+ dw HallofFameRoom_h
+ dw UndergroundPathNS_h
+ dw Gary_h ;id=120
+ dw UndergroundPathWE_h
+ dw CeladonMart1_h
+ dw CeladonMart2_h
+ dw CeladonMart3_h
+ dw CeladonMart4_h
+ dw CeladonMartRoof_h
+ dw CeladonMartElevator_h
+ dw CeladonMansion1_h
+ dw CeladonMansion2_h
+ dw CeladonMansion3_h ;id=130
+ dw CeladonMansion4_h
+ dw CeladonMansion5_h
+ dw CeladonPokecenter_h
+ dw CeladonGym_h
+ dw CeladonGameCorner_h
+ dw CeladonMart5_h
+ dw CeladonPrizeRoom_h
+ dw CeladonDiner_h
+ dw CeladonHouse_h
+ dw CeladonHotel_h ;id=140
+ dw LavenderPokecenter_h
+ dw PokemonTower1_h
+ dw PokemonTower2_h
+ dw PokemonTower3_h
+ dw PokemonTower4_h
+ dw PokemonTower5_h
+ dw PokemonTower6_h
+ dw PokemonTower7_h
+ dw LavenderHouse1_h
+ dw LavenderMart_h ;id=150
+ dw LavenderHouse2_h
+ dw FuchsiaMart_h
+ dw FuchsiaHouse1_h
+ dw FuchsiaPokecenter_h
+ dw FuchsiaHouse2_h
+ dw SafariZoneEntrance_h
+ dw FuchsiaGym_h
+ dw FuchsiaMeetingRoom_h
+ dw SeafoamIslands2_h
+ dw SeafoamIslands3_h ;id=160
+ dw SeafoamIslands4_h
+ dw SeafoamIslands5_h
+ dw VermilionHouse2_h
+ dw FuchsiaHouse3_h
+ dw Mansion1_h
+ dw CinnabarGym_h
+ dw Lab1_h
+ dw Lab2_h
+ dw Lab3_h
+ dw Lab4_h ;id=170
+ dw CinnabarPokecenter_h
+ dw CinnabarMart_h
+ dw CinnabarMart_h ; unused
+ dw IndigoPlateauLobby_h
+ dw CopycatsHouse1F_h
+ dw CopycatsHouse2F_h
+ dw FightingDojo_h
+ dw SaffronGym_h
+ dw SaffronHouse1_h
+ dw SaffronMart_h ;id=180
+ dw SilphCo1_h
+ dw SaffronPokecenter_h
+ dw SaffronHouse2_h
+ dw Route15Gate_h
+ dw Route15GateUpstairs_h
+ dw Route16Gate_h
+ dw Route16GateUpstairs_h
+ dw Route16House_h
+ dw Route12House_h
+ dw Route18Gate_h ;id=190
+ dw Route18GateUpstairs_h
+ dw SeafoamIslands1_h
+ dw Route22Gate_h
+ dw VictoryRoad2_h
+ dw Route12GateUpstairs_h
+ dw VermilionHouse3_h
+ dw DiglettsCave_h
+ dw VictoryRoad3_h
+ dw RocketHideout1_h
+ dw RocketHideout2_h ;200
+ dw RocketHideout3_h
+ dw RocketHideout4_h
+ dw RocketHideoutElevator_h
+ dw RocketHideoutElevator_h ; unused
+ dw RocketHideoutElevator_h ; unused
+ dw RocketHideoutElevator_h ; unused
+ dw SilphCo2_h
+ dw SilphCo3_h
+ dw SilphCo4_h
+ dw SilphCo5_h ;210
+ dw SilphCo6_h
+ dw SilphCo7_h
+ dw SilphCo8_h
+ dw Mansion2_h
+ dw Mansion3_h
+ dw Mansion4_h
+ dw SafariZoneEast_h
+ dw SafariZoneNorth_h
+ dw SafariZoneWest_h
+ dw SafariZoneCenter_h ;220
+ dw SafariZoneRestHouse1_h
+ dw SafariZoneSecretHouse_h
+ dw SafariZoneRestHouse2_h
+ dw SafariZoneRestHouse3_h
+ dw SafariZoneRestHouse4_h
+ dw UnknownDungeon2_h
+ dw UnknownDungeon3_h
+ dw UnknownDungeon1_h
+ dw NameRater_h
+ dw CeruleanHouse2_h
+ dw Route16Gate_h ; unused
+ dw RockTunnel2_h
+ dw SilphCo9_h
+ dw SilphCo10_h
+ dw SilphCo11_h
+ dw SilphCoElevator_h
+ dw SilphCo2_h ; unused
+ dw SilphCo2_h ; unused
+ dw BattleCenterM_h
+ dw TradeCenterM_h
+ dw SilphCo2_h ; unused
+ dw SilphCo2_h ; unused
+ dw SilphCo2_h ; unused
+ dw SilphCo2_h ; unused
+ dw Lorelei_h
+ dw Bruno_h
+ dw Agatha_h ;247
+ dw BeachHouse_h
diff --git a/engine/bank3f/data/map_songs.asm b/engine/bank3f/data/map_songs.asm
new file mode 100644
index 00000000..4a84aebb
--- /dev/null
+++ b/engine/bank3f/data/map_songs.asm
@@ -0,0 +1,252 @@
+MapSongBanks: ; fc000 (3f:4000)
+ db MUSIC_PALLET_TOWN, BANK(Music_PalletTown) ;PALLET_TOWN
+ db MUSIC_CITIES1, BANK(Music_Cities1) ; VIRIDIAN_CITY
+ db MUSIC_CITIES1, BANK(Music_Cities1) ; PEWTER_CITY
+ db MUSIC_CITIES2, BANK(Music_Cities2) ; CERULEAN_CITY
+ db MUSIC_LAVENDER, BANK(Music_Lavender) ; LAVENDER_TOWN
+ db MUSIC_VERMILION, BANK(Music_Vermilion) ; VERMILION_CITY
+ db MUSIC_CELADON, BANK(Music_Celadon) ; CELADON_CITY
+ db MUSIC_CITIES2, BANK(Music_Cities2) ; FUCHSIA_CITY
+ db MUSIC_CINNABAR, BANK(Music_Cinnabar) ; CINNABAR_ISLAND
+ db MUSIC_INDIGO_PLATEAU, BANK(Music_IndigoPlateau) ; INDIGO_PLATEAU
+ db MUSIC_CITIES1, BANK(Music_Cities1) ; SAFFRON_CITY
+ db MUSIC_CITIES1, BANK(Music_Cities1) ; unused
+ db MUSIC_ROUTES1, BANK(Music_Routes1) ; ROUTE_1
+ db MUSIC_ROUTES1, BANK(Music_Routes1) ; ROUTE_2
+ db MUSIC_ROUTES3, BANK(Music_Routes3) ; ROUTE_3
+ db MUSIC_ROUTES3, BANK(Music_Routes3) ; ROUTE_4
+ db MUSIC_ROUTES3, BANK(Music_Routes3) ; ROUTE_5
+ db MUSIC_ROUTES3, BANK(Music_Routes3) ; ROUTE_6
+ db MUSIC_ROUTES3, BANK(Music_Routes3) ; ROUTE_7
+ db MUSIC_ROUTES3, BANK(Music_Routes3) ; ROUTE_8
+ db MUSIC_ROUTES3, BANK(Music_Routes3) ; ROUTE_9
+ db MUSIC_ROUTES3, BANK(Music_Routes3) ; ROUTE_10
+ db MUSIC_ROUTES4, BANK(Music_Routes4) ; ROUTE_11
+ db MUSIC_ROUTES4, BANK(Music_Routes4) ; ROUTE_12
+ db MUSIC_ROUTES4, BANK(Music_Routes4) ; ROUTE_13
+ db MUSIC_ROUTES4, BANK(Music_Routes4) ; ROUTE_14
+ db MUSIC_ROUTES4, BANK(Music_Routes4) ; ROUTE_15
+ db MUSIC_ROUTES3, BANK(Music_Routes3) ; ROUTE_16
+ db MUSIC_ROUTES3, BANK(Music_Routes3) ; ROUTE_17
+ db MUSIC_ROUTES3, BANK(Music_Routes3) ; ROUTE_18
+ db MUSIC_ROUTES3, BANK(Music_Routes3) ; ROUTE_19
+ db MUSIC_ROUTES3, BANK(Music_Routes3) ; ROUTE_20
+ db MUSIC_ROUTES3, BANK(Music_Routes3) ; ROUTE_21
+ db MUSIC_ROUTES3, BANK(Music_Routes3) ; ROUTE_22
+ db MUSIC_INDIGO_PLATEAU, BANK(Music_IndigoPlateau) ; ROUTE_23
+ db MUSIC_ROUTES2, BANK(Music_Routes2) ; ROUTE_24
+ db MUSIC_ROUTES2, BANK(Music_Routes2) ; ROUTE_25
+ db MUSIC_PALLET_TOWN, BANK(Music_PalletTown) ; RedsHouse1F
+ db MUSIC_PALLET_TOWN, BANK(Music_PalletTown) ; RedsHouse2F
+ db MUSIC_PALLET_TOWN, BANK(Music_PalletTown) ; BluesHouse
+ db MUSIC_OAKS_LAB, BANK(Music_OaksLab) ; OaksLab
+ db MUSIC_POKECENTER, BANK(Music_Pokecenter) ; ViridianPokecenter
+ db MUSIC_POKECENTER, BANK(Music_Pokecenter) ; ViridianMart
+ db MUSIC_CITIES1, BANK(Music_Cities1) ; School
+ db MUSIC_CITIES1, BANK(Music_Cities1) ; ViridianHouse
+ db MUSIC_GYM, BANK(Music_Gym) ; ViridianGym
+ db MUSIC_DUNGEON2, BANK(Music_Dungeon2) ; DiglettsCaveRoute2
+ db MUSIC_CITIES1, BANK(Music_Cities1) ; ViridianForestExit
+ db MUSIC_CITIES1, BANK(Music_Cities1) ; Route2House
+ db MUSIC_CITIES1, BANK(Music_Cities1) ; Route2Gate
+ db MUSIC_CITIES1, BANK(Music_Cities1) ; ViridianForestEntrance
+ db MUSIC_DUNGEON2, BANK(Music_Dungeon2) ; ViridianForest
+ db MUSIC_CITIES1, BANK(Music_Cities1) ; Museum1F
+ db MUSIC_CITIES1, BANK(Music_Cities1) ; Museum2F
+ db MUSIC_GYM, BANK(Music_Gym) ; PewterGym
+ db MUSIC_CITIES1, BANK(Music_Cities1) ; PewterHouse1
+ db MUSIC_POKECENTER, BANK(Music_Pokecenter) ; PewterMart
+ db MUSIC_CITIES1, BANK(Music_Cities1) ; PewterHouse2
+ db MUSIC_POKECENTER, BANK(Music_Pokecenter) ; PewterPokecenter
+ db MUSIC_DUNGEON3, BANK(Music_Dungeon3) ; MtMoon1
+ db MUSIC_DUNGEON3, BANK(Music_Dungeon3) ; MtMoon2
+ db MUSIC_DUNGEON3, BANK(Music_Dungeon3) ; MtMoon3
+ db MUSIC_CITIES2, BANK(Music_Cities2) ; CeruleanHouseTrashed
+ db MUSIC_CITIES2, BANK(Music_Cities2) ; CeruleanHouse1
+ db MUSIC_POKECENTER, BANK(Music_Pokecenter) ; CeruleanPokecenter
+ db MUSIC_GYM, BANK(Music_Gym) ; CeruleanGym
+ db MUSIC_CITIES2, BANK(Music_Cities2) ; BikeShop
+ db MUSIC_POKECENTER, BANK(Music_Pokecenter) ; CeruleanMart
+ db MUSIC_POKECENTER, BANK(Music_Pokecenter) ; MtMoonPokecenter
+ db MUSIC_DUNGEON3, BANK(Music_Dungeon3) ; CeruleanHouseTrashed
+ db MUSIC_CITIES1, BANK(Music_Cities1) ; Route5Gate
+ db MUSIC_CITIES1, BANK(Music_Cities1) ; UndergroundTunnelEntranceRoute5
+ db MUSIC_CITIES1, BANK(Music_Cities1) ; DayCareM
+ db MUSIC_CITIES1, BANK(Music_Cities1) ; Route6Gate
+ db MUSIC_CITIES1, BANK(Music_Cities1) ; UndergroundTunnelEntranceRoute6
+ db MUSIC_VERMILION, BANK(Music_Vermilion) ; FREEZE
+ db MUSIC_CITIES1, BANK(Music_Cities1) ; Route7Gate
+ db MUSIC_CITIES1, BANK(Music_Cities1) ; UndergroundPathEntranceRoute7
+ db MUSIC_CELADON, BANK(Music_Celadon) ;FREEZE
+ db MUSIC_CITIES1, BANK(Music_Cities1) ; Route8Gate
+ db MUSIC_CITIES1, BANK(Music_Cities1) ; UndergroundPathEntranceRoute8
+ db MUSIC_POKECENTER, BANK(Music_Pokecenter) ; RockTunnelPokecenter
+ db MUSIC_DUNGEON3, BANK(Music_Dungeon3) ; RockTunnel1
+ db MUSIC_DUNGEON1, BANK(Music_Dungeon1) ; PowerPlant
+ db MUSIC_VERMILION, BANK(Music_Vermilion) ; Route11Gate
+ db MUSIC_DUNGEON2, BANK(Music_Dungeon2) ; DiglettsCaveEntranceRoute11
+ db MUSIC_VERMILION, BANK(Music_Vermilion) ; Route11GateUpstairs
+ db MUSIC_CITIES1, BANK(Music_Cities1) ; Route12Gate
+ db MUSIC_CITIES2, BANK(Music_Cities2) ; BillsHouse
+ db MUSIC_POKECENTER, BANK(Music_Pokecenter) ; VermilionPokecenter
+ db MUSIC_VERMILION, BANK(Music_Vermilion) ; FanClub
+ db MUSIC_POKECENTER, BANK(Music_Pokecenter) ; VermilionMart
+ db MUSIC_GYM, BANK(Music_Gym) ; VermilionGym
+ db MUSIC_VERMILION, BANK(Music_Vermilion) ; VermilionHouse1
+ db MUSIC_SS_ANNE, BANK(Music_SSAnne) ; VermilionDock
+ db MUSIC_SS_ANNE, BANK(Music_SSAnne) ; SSAnne1
+ db MUSIC_SS_ANNE, BANK(Music_SSAnne) ; SSAnne2
+ db MUSIC_SS_ANNE, BANK(Music_SSAnne) ; SSAnne3
+ db MUSIC_SS_ANNE, BANK(Music_SSAnne) ; SSAnne4
+ db MUSIC_SS_ANNE, BANK(Music_SSAnne) ; SSAnne5
+ db MUSIC_SS_ANNE, BANK(Music_SSAnne) ; SSAnne6
+ db MUSIC_SS_ANNE, BANK(Music_SSAnne) ; SSAnne7
+ db MUSIC_SS_ANNE, BANK(Music_SSAnne) ; SSAnne8
+ db MUSIC_SS_ANNE, BANK(Music_SSAnne) ; SSAnne9
+ db MUSIC_SS_ANNE, BANK(Music_SSAnne) ; SSAnne10
+ db MUSIC_DUNGEON2, BANK(Music_Dungeon2) ;unused
+ db MUSIC_DUNGEON2, BANK(Music_Dungeon2) ;unused
+ db MUSIC_SS_ANNE, BANK(Music_SSAnne) ;unused
+ db MUSIC_DUNGEON3, BANK(Music_Dungeon3) ; VictoryRoad1
+ db MUSIC_POKEMON_TOWER, BANK(Music_PokemonTower) ;unused
+ db MUSIC_DUNGEON1, BANK(Music_Dungeon1) ;unused
+ db MUSIC_SILPH_CO, BANK(Music_SilphCo) ;unused
+ db MUSIC_SILPH_CO, BANK(Music_SilphCo) ;unused
+ db MUSIC_INDIGO_PLATEAU, BANK(Music_IndigoPlateau) ; Lance
+ db MUSIC_SS_ANNE, BANK(Music_SSAnne) ;unused
+ db MUSIC_SS_ANNE, BANK(Music_SSAnne) ;unused
+ db MUSIC_SS_ANNE, BANK(Music_SSAnne) ;unused
+ db MUSIC_SS_ANNE, BANK(Music_SSAnne) ;unused
+ db MUSIC_PALLET_TOWN, BANK(Music_PalletTown) ; HallofFameRoom
+ db MUSIC_ROUTES1, BANK(Music_Routes1) ; UndergroundPathNS
+ db MUSIC_INDIGO_PLATEAU, BANK(Music_IndigoPlateau) ; Gary
+ db MUSIC_ROUTES1, BANK(Music_Routes1) ; UndergroundPathWE
+ db MUSIC_POKECENTER, BANK(Music_Pokecenter) ; CeladonMart1
+ db MUSIC_POKECENTER, BANK(Music_Pokecenter) ; CeladonMart2
+ db MUSIC_POKECENTER, BANK(Music_Pokecenter) ; CeladonMart3
+ db MUSIC_POKECENTER, BANK(Music_Pokecenter) ; CeladonMart4
+ db MUSIC_POKECENTER, BANK(Music_Pokecenter) ; CeladonMartRoof
+ db MUSIC_POKECENTER, BANK(Music_Pokecenter) ; CeladonMartElevator
+ db MUSIC_CELADON, BANK(Music_Celadon) ; CeladonMansion1
+ db MUSIC_CELADON, BANK(Music_Celadon) ; CeladonMansion2
+ db MUSIC_CELADON, BANK(Music_Celadon) ; CeladonMansion3
+ db MUSIC_CELADON, BANK(Music_Celadon) ; CeladonMansion4
+ db MUSIC_CELADON, BANK(Music_Celadon) ; CeladonMansion5
+ db MUSIC_POKECENTER, BANK(Music_Pokecenter) ; CeladonPokecenter
+ db MUSIC_GYM, BANK(Music_Gym) ; CeladonGym
+ db MUSIC_GAME_CORNER, BANK(Music_GameCorner) ; CeladonGameCorner
+ db MUSIC_POKECENTER, BANK(Music_Pokecenter) ; CeladonMart5
+ db MUSIC_CELADON, BANK(Music_Celadon) ; CeladonPrizeRoom
+ db MUSIC_CELADON, BANK(Music_Celadon) ; CeladonDiner
+ db MUSIC_CELADON, BANK(Music_Celadon) ; CeladonHouse
+ db MUSIC_CELADON, BANK(Music_Celadon) ; CeladonHotel
+ db MUSIC_POKECENTER, BANK(Music_Pokecenter) ; LavenderPokecenter
+ db MUSIC_POKEMON_TOWER, BANK(Music_PokemonTower) ; PokemonTower1
+ db MUSIC_POKEMON_TOWER, BANK(Music_PokemonTower) ; PokemonTower2
+ db MUSIC_POKEMON_TOWER, BANK(Music_PokemonTower) ; PokemonTower3
+ db MUSIC_POKEMON_TOWER, BANK(Music_PokemonTower) ; PokemonTower4
+ db MUSIC_POKEMON_TOWER, BANK(Music_PokemonTower) ; PokemonTower5
+ db MUSIC_POKEMON_TOWER, BANK(Music_PokemonTower) ; PokemonTower6
+ db MUSIC_POKEMON_TOWER, BANK(Music_PokemonTower) ; PokemonTower7
+ db MUSIC_LAVENDER, BANK(Music_Lavender) ; LavenderHouse1
+ db MUSIC_POKECENTER, BANK(Music_Pokecenter) ; LavenderMart
+ db MUSIC_LAVENDER, BANK(Music_Lavender) ; LavenderHouse2
+ db MUSIC_POKECENTER, BANK(Music_Pokecenter) ; FuchsiaMart
+ db MUSIC_CITIES2, BANK(Music_Cities2) ; FuchsiaHouse1
+ db MUSIC_POKECENTER, BANK(Music_Pokecenter) ; FuchsiaPokecenter
+ db MUSIC_CITIES2, BANK(Music_Cities2) ; FuchsiaHouse2
+ db MUSIC_CITIES2, BANK(Music_Cities2) ; SafariZoneEntrance
+ db MUSIC_GYM, BANK(Music_Gym) ; FuchsiaGym
+ db MUSIC_CITIES2, BANK(Music_Cities2) ; FuchsiaMeetingRoom
+ db MUSIC_DUNGEON2, BANK(Music_Dungeon2) ; SeafoamIslands2
+ db MUSIC_DUNGEON2, BANK(Music_Dungeon2) ; SeafoamIslands3
+ db MUSIC_DUNGEON2, BANK(Music_Dungeon2) ; SeafoamIslands4
+ db MUSIC_DUNGEON2, BANK(Music_Dungeon2) ; SeafoamIslands5
+ db MUSIC_CITIES2, BANK(Music_Cities2) ; VermilionHouse2
+ db MUSIC_CITIES2, BANK(Music_Cities2) ; FuchsiaHouse3
+ db MUSIC_CINNABAR_MANSION, BANK(Music_CinnabarMansion) ; Mansion1
+ db MUSIC_GYM, BANK(Music_Gym) ; CinnabarGym
+ db MUSIC_CINNABAR, BANK(Music_Cinnabar) ; Lab1
+ db MUSIC_CINNABAR, BANK(Music_Cinnabar) ; Lab2
+ db MUSIC_CINNABAR, BANK(Music_Cinnabar) ; Lab3
+ db MUSIC_CINNABAR, BANK(Music_Cinnabar) ; Lab4
+ db MUSIC_POKECENTER, BANK(Music_Pokecenter) ; CinnabarPokecenter
+ db MUSIC_POKECENTER, BANK(Music_Pokecenter) ; CinnabarMart
+ db MUSIC_CINNABAR, BANK(Music_Cinnabar)
+ db MUSIC_INDIGO_PLATEAU, BANK(Music_IndigoPlateau) ; IndigoPlateauLobby
+ db MUSIC_CITIES1, BANK(Music_Cities1) ; CopycatsHouse1F
+ db MUSIC_CITIES1, BANK(Music_Cities1) ; CopycatsHouse2F
+ db MUSIC_CITIES1, BANK(Music_Cities1) ; FightingDojo
+ db MUSIC_GYM, BANK(Music_Gym) ; SaffronGym
+ db MUSIC_CITIES1, BANK(Music_Cities1) ; SaffronHouse1
+ db MUSIC_POKECENTER, BANK(Music_Pokecenter) ; SaffronMart
+ db MUSIC_SILPH_CO, BANK(Music_SilphCo) ; SilphCo1
+ db MUSIC_POKECENTER, BANK(Music_Pokecenter) ; SaffronPokecenter
+ db MUSIC_CITIES1, BANK(Music_Cities1) ; SaffronHouse2
+ db MUSIC_CITIES1, BANK(Music_Cities1) ; Route15Gate
+ db MUSIC_CITIES1, BANK(Music_Cities1) ; Route15GateUpstairs
+ db MUSIC_CITIES1, BANK(Music_Cities1) ; Route16Gate
+ db MUSIC_CITIES1, BANK(Music_Cities1) ; Route16GateUpstairs
+ db MUSIC_CELADON, BANK(Music_Celadon) ; Route16House
+ db MUSIC_CELADON, BANK(Music_Celadon) ; Route12House
+ db MUSIC_CITIES1, BANK(Music_Cities1) ; Route18Gate
+ db MUSIC_CITIES1, BANK(Music_Cities1) ; Route18GateUpstairs
+ db MUSIC_DUNGEON2, BANK(Music_Dungeon2) ; SeafoamIslands1
+ db MUSIC_DUNGEON2, BANK(Music_Dungeon2) ; Route22Gate
+ db MUSIC_DUNGEON3, BANK(Music_Dungeon3) ; VictoryRoad2
+ db MUSIC_CITIES1, BANK(Music_Cities1) ; Route12GateUpstairs
+ db MUSIC_VERMILION, BANK(Music_Vermilion) ; VermilionHouse3
+ db MUSIC_DUNGEON2, BANK(Music_Dungeon2) ; DiglettsCave
+ db MUSIC_DUNGEON3, BANK(Music_Dungeon3) ; VictoryRoad3
+ db MUSIC_DUNGEON1, BANK(Music_Dungeon1) ; RocketHideout1
+ db MUSIC_DUNGEON1, BANK(Music_Dungeon1) ; RocketHideout2
+ db MUSIC_DUNGEON1, BANK(Music_Dungeon1) ; RocketHideout3
+ db MUSIC_DUNGEON1, BANK(Music_Dungeon1) ; RocketHideout4
+ db MUSIC_DUNGEON1, BANK(Music_Dungeon1) ; RocketHideoutElevator
+ db MUSIC_DUNGEON1, BANK(Music_Dungeon1)
+ db MUSIC_DUNGEON1, BANK(Music_Dungeon1)
+ db MUSIC_DUNGEON1, BANK(Music_Dungeon1)
+ db MUSIC_SILPH_CO, BANK(Music_SilphCo) ; SilphCo2
+ db MUSIC_SILPH_CO, BANK(Music_SilphCo) ; SilphCo3
+ db MUSIC_SILPH_CO, BANK(Music_SilphCo) ; SilphCo4
+ db MUSIC_SILPH_CO, BANK(Music_SilphCo) ; SilphCo5
+ db MUSIC_SILPH_CO, BANK(Music_SilphCo) ; SilphCo6
+ db MUSIC_SILPH_CO, BANK(Music_SilphCo) ; SilphCo7
+ db MUSIC_SILPH_CO, BANK(Music_SilphCo) ; SilphCo8
+ db MUSIC_CINNABAR_MANSION, BANK(Music_CinnabarMansion) ; Mansion2
+ db MUSIC_CINNABAR_MANSION, BANK(Music_CinnabarMansion) ; Mansion3
+ db MUSIC_CINNABAR_MANSION, BANK(Music_CinnabarMansion) ; Mansion4
+ db MUSIC_SAFARI_ZONE, BANK(Music_SafariZone) ; SafariZoneEast
+ db MUSIC_SAFARI_ZONE, BANK(Music_SafariZone) ; SafariZoneNorth
+ db MUSIC_SAFARI_ZONE, BANK(Music_SafariZone) ; SafariZoneWest
+ db MUSIC_SAFARI_ZONE, BANK(Music_SafariZone) ; SafariZoneCenter
+ db MUSIC_SAFARI_ZONE, BANK(Music_SafariZone) ; SafariZoneRestHouse1
+ db MUSIC_SAFARI_ZONE, BANK(Music_SafariZone) ; SafariZoneSecretHouse
+ db MUSIC_SAFARI_ZONE, BANK(Music_SafariZone) ; SafariZoneRestHouse2
+ db MUSIC_SAFARI_ZONE, BANK(Music_SafariZone) ; SafariZoneRestHouse3
+ db MUSIC_SAFARI_ZONE, BANK(Music_SafariZone) ; SafariZoneRestHouse4
+ db MUSIC_DUNGEON1, BANK(Music_Dungeon1) ; UnknownDungeon2
+ db MUSIC_DUNGEON1, BANK(Music_Dungeon1) ; UnknownDungeon3
+ db MUSIC_DUNGEON1, BANK(Music_Dungeon1) ; UnknownDungeon1
+ db MUSIC_CITIES2, BANK(Music_Cities2) ; NameRater
+ db MUSIC_CITIES1, BANK(Music_Cities1) ; CeruleanHouse2
+ db MUSIC_CINNABAR, BANK(Music_Cinnabar)
+ db MUSIC_DUNGEON3, BANK(Music_Dungeon3) ; RockTunnel2
+ db MUSIC_SILPH_CO, BANK(Music_SilphCo) ; SilphCo9
+ db MUSIC_SILPH_CO, BANK(Music_SilphCo) ; SilphCo10
+ db MUSIC_SILPH_CO, BANK(Music_SilphCo) ; SilphCo11
+ db MUSIC_SILPH_CO, BANK(Music_SilphCo) ; SilphCoElevator
+ db MUSIC_SILPH_CO, BANK(Music_SilphCo)
+ db MUSIC_SILPH_CO, BANK(Music_SilphCo)
+ db MUSIC_CELADON, BANK(Music_Celadon) ; BattleCenterM
+ db MUSIC_CELADON, BANK(Music_Celadon) ; TradeCenterM
+ db MUSIC_SILPH_CO, BANK(Music_SilphCo)
+ db MUSIC_SILPH_CO, BANK(Music_SilphCo)
+ db MUSIC_SILPH_CO, BANK(Music_SilphCo)
+ db MUSIC_SILPH_CO, BANK(Music_SilphCo)
+ db MUSIC_GYM, BANK(Music_Gym) ; Lorelei
+ db MUSIC_DUNGEON1, BANK(Music_Dungeon1) ; Bruno
+ db MUSIC_POKEMON_TOWER, BANK(Music_PokemonTower) ; Agatha
+IF DEF(_OPTION_BEACH_HOUSE)
+ db MUSIC_ROUTES3, BANK(Music_Routes3) ; BeachHouse
+ENDC
diff --git a/engine/bank3f/main.asm b/engine/bank3f/main.asm
new file mode 100644
index 00000000..b02829eb
--- /dev/null
+++ b/engine/bank3f/main.asm
@@ -0,0 +1,240 @@
+INCLUDE "engine/bank3f/data/map_songs.asm"
+INCLUDE "engine/bank3f/data/map_header_pointers.asm"
+INCLUDE "engine/bank3f/data/map_header_banks.asm"
+
+Func_fc4dd:: ; fc4dd (3f:44dd)
+; possibly to test if pika should be out?
+ ld a,[wd430]
+ bit 5,a
+ jr nz,.asm_fc4f8 ; 3f:44f8
+ ld a,[wd430]
+ bit 7,a
+ jr nz,.asm_fc4f8
+ call Func_fcdb8
+ jr nc,.asm_fc4f8
+ ld a,[wWalkBikeSurfState]
+ and a
+ jr nz,.asm_fc4f8
+ scf
+ ret
+.asm_fc4f8
+ and a
+ ret
+
+Func_fc4fa:: ; fc4fa (3f:44fa)
+ ld hl,wd430
+ bit 4,[hl]
+ res 4,[hl]
+ jr nz,.asm_fc515
+ call Func_1542
+ call Func_fc523
+ ld a,$ff
+ ld [wSpriteStateData1 + $f2],a
+ call Func_fcb84
+ call Func_fc5bc
+ ret
+
+.asm_fc515
+ call Func_fc53f
+ xor a
+ ld [wd431],a
+ ld a,[wSpriteStateData1 + $9]
+ ld [wSpriteStateData1 + $f9],a
+ ret
+
+Func_fc523:: ; fc523 (3f:4523)
+ ld hl,wSpriteStateData1 + $f0
+ call Func_fc52c
+ ld hl,wSpriteStateData2 + $f0
+Func_fc52c:: ; fc52c (3f:4523)
+ ld bc,$10
+ xor a
+ call FillMemory
+ ret
+
+Func_fc534:: ; fc534 (3f:4534)
+ call Func_fc53f
+ call Func_fc5bc
+ xor a
+ ld [wd431],a
+ ret
+
+Func_fc53f:: ; fc53f (3f:453f)
+ ld bc,wSpriteStateData1 + $10
+ ld a,[W_YCOORD]
+ add $4
+ ld e,a
+ ld a,[W_XCOORD]
+ add $4
+ ld d,a
+ ld a,[wd431]
+ and a
+ jr z,.asm_fc5aa
+ cp $1
+ jr z,.asm_fc59e
+ cp $2
+ jr z,.asm_fc584
+ cp $3
+ jr z,.asm_fc5aa
+ cp $4
+ jr z,.asm_fc5a4
+ cp $5
+ jr z,.asm_fc5a7
+ cp $6
+ jr z,.asm_fc5a1
+ cp $7
+ jr z,.asm_fc572
+ jr .asm_fc59e
+
+.asm_fc572
+ ld a,[wSpriteStateData1 + $9]
+ and a ; SPRITE_FACING_DOWN
+ jr z,.asm_fc5a4
+ cp SPRITE_FACING_UP
+ jr z,.asm_fc5a7
+ cp SPRITE_FACING_LEFT
+ jr z,.asm_fc5a1
+ cp SPRITE_FACING_RIGHT
+ jr z,.asm_fc59e
+.asm_fc584
+ ld a,[wSpriteStateData1 + $9]
+ and a
+ jr nz,.asm_fc58d
+ dec e
+ jr .asm_fc5aa
+.asm_fc58d
+ cp SPRITE_FACING_UP
+ jr nz,.asm_fc594
+ inc e
+ jr .asm_fc5aa
+.asm_fc594
+ cp SPRITE_FACING_LEFT
+ jr nz,.asm_fc59b
+ inc d
+ jr .asm_fc5aa
+.asm_fc59b
+ dec d
+ jr .asm_fc5aa
+.asm_fc59e
+ inc d
+ jr .asm_fc5aa
+.asm_fc5a1
+ dec d
+ jr .asm_fc5aa
+.asm_fc5a4
+ inc e
+ jr .asm_fc5aa
+.asm_fc5a7
+ dec e
+ jr .asm_fc5aa ; useless jr
+.asm_fc5aa
+ ld hl,$104
+ add hl,bc
+ ld [hl],e
+ inc hl
+ ld [hl],d
+ inc hl
+Func_fc4b2:: ; fc4b2 (3f:44b2)
+ ld [hl],$fe
+ push hl
+ ld hl,wd472
+ set 5,[hl]
+ pop hl
+ ret
+
+Func_fc5bc:: ; fc5bc (3f:45bc)
+ ld a,$49
+ ld [wSpriteStateData1 + $f0],a
+ ld a,$ff
+ ld [wSpriteStateData1 + $f2],a
+ ld a,[wd431]
+ and a
+ jr z,.asm_fc5e4
+ cp $1
+ jr z,.asm_fc5e4
+ cp $3
+ jr z,.asm_fc5eb
+ cp $4
+ jr z,.asm_fc5e4
+ cp $6
+ jr z,.asm_fc5e4
+ cp $7
+ jr z,.asm_fc5f1
+ call Func_fc4b2
+ ret
+
+.asm_fc5e4
+ ld a,[wSpriteStateData1 + $9]
+ ld [wSpriteStateData1 + $f9],a
+ ret
+.asm_fc5eb
+ ld a,$0
+ ld [wSpriteStateData1 + $f9],a
+ ret
+.asm_fc5f1
+ ld a,[wSpriteStateData1 + $9]
+ xor $4
+ ld [wSpriteStateData1 + $f9],a
+ ret
+
+Func_fc5fa:: ; fc5fa (3f:45fa)
+ ld a,[W_CURMAP]
+ cp OAKS_LAB
+ jr z,.asm_fc63d
+ cp ROUTE_22_GATE
+ jr z,.asm_fc62d
+ cp MT_MOON_2
+ jr z,.asm_fc635
+ cp ROCK_TUNNEL_1
+ jr z,.asm_fc645
+ ld a,[W_CURMAP]
+ ld hl,Pointer_fc46b
+ call Func_1568 ; similar to IsInArray, but not the same
+ jr c,.asm_fc639
+ ld a,[W_CURMAP]
+ ld hl,Pointer_fc653
+ call Func_1568
+ jr nc,.asm_fc641
+ ld a,[wSpriteStateData1 + $9]
+ and a
+ jr nz,.asm_fc641
+ ld a,$3
+ jr .asm_fc647
+
+.asm_fc62d
+ ld a,[wSpriteStateData1 + $9]
+ and a
+ jr z,.asm_fc645
+ jr .asm_fc641
+.asm_fc635
+ ld a,$3
+ jr .asm_fc647
+.asm_fc639
+ ld a,$4
+ jr .asm_fc647
+.asm_fc63d
+ ld a,$6
+ jr .asm_fc647
+.asm_fc641
+ ld a,$1
+ jr .asm_fc647
+.asm_fc645
+ ld a,$3
+.asm_fc647
+ ld [wd431],a
+ ret
+
+Pointer_fc64b:: ; fc64b (3f:464b)
+ db $c2,$4c,$4f,$ba,$be,$b8,$54,$ff
+
+Pointer_fc653:: ; fc653 (3f:4653)
+ db $2f,$e6,$3e,$5e,$80,$31,$a4,$ff
+
+Func_fc65b:: ; fc65b (3f:465b)
+ ld a,[W_CURMAP]
+
+Func_fc69a:: ; fc69a (3f:469a)
+
+Func_fcc08:: ; fcc08 (3f:4c08)
+
+Func_fcf0c:: ; fcf0c (3f:4f0c)