diff options
author | luckytyphlosion <alan.rj.huang@gmail.com> | 2015-10-17 16:11:39 -0400 |
---|---|---|
committer | luckytyphlosion <alan.rj.huang@gmail.com> | 2015-10-17 16:11:39 -0400 |
commit | 35874024438c0a716ad3de8896207f02db56e7d1 (patch) | |
tree | 89687c9ebd659bc2fe3b861a0a0063dd350220e0 | |
parent | b59953dab1f782ff0dd08b57207bb29b9f4f4a67 (diff) |
More bank3 documentation
Also misc. documentation in bank3c and bank3f
-rw-r--r-- | engine/bank3c/main.asm | 4 | ||||
-rw-r--r-- | engine/bank3c/overworld.asm | 77 | ||||
-rw-r--r-- | engine/bank3f/data/map_songs.asm | 500 | ||||
-rwxr-xr-x | engine/items/items.asm | 2 | ||||
-rwxr-xr-x | engine/overworld/cut.asm | 31 | ||||
-rwxr-xr-x | main.asm | 59 | ||||
-rwxr-xr-x | yellow/main.asm | 890 |
7 files changed, 1192 insertions, 371 deletions
diff --git a/engine/bank3c/main.asm b/engine/bank3c/main.asm index 5e74c61e..c967e93c 100644 --- a/engine/bank3c/main.asm +++ b/engine/bank3c/main.asm @@ -152,9 +152,7 @@ PikachuCriesPointerTable: ; f008e (3c:408e) dbw BANK(PikachuCry41), PikachuCry41 ; 36:6746 dbw BANK(PikachuCry42), PikachuCry42 ; 38:6976 -_AdvancePlayerSprite:: ; f010c (3c:410c) -;INCLUDE "engine/bank3c/overworld.asm" - dr $f010c,$f0274 +INCLUDE "engine/bank3c/overworld.asm" ResetStatusAndHalveMoneyOnBlackout:: ; f0274 (3c:4274) ; Reset player status on blackout. diff --git a/engine/bank3c/overworld.asm b/engine/bank3c/overworld.asm index 778244d6..d7e6274f 100644 --- a/engine/bank3c/overworld.asm +++ b/engine/bank3c/overworld.asm @@ -7,6 +7,8 @@ _AdvancePlayerSprite:: ; f010c (3c:410c) dec [hl] jr nz,.afterUpdateMapCoords ; if it's the end of the animation, update the player's map coordinates + ld hl, wd430 + res 5, [hl] ld a,[W_YCOORD] add b ld [W_YCOORD],a @@ -24,11 +26,11 @@ _AdvancePlayerSprite:: ; f010c (3c:410c) ; moving east ld a,[wMapViewVRAMPointer] ld e,a - and a,$e0 + and $e0 ld d,a ld a,e - add a,$02 - and a,$1f + add $02 + and $1f or d ld [wMapViewVRAMPointer],a jr .adjustXCoordWithinBlock @@ -41,8 +43,8 @@ _AdvancePlayerSprite:: ; f010c (3c:410c) and a,$e0 ld d,a ld a,e - sub a,$02 - and a,$1f + sub $02 + and $1f or d ld [wMapViewVRAMPointer],a jr .adjustXCoordWithinBlock @@ -52,13 +54,13 @@ _AdvancePlayerSprite:: ; f010c (3c:410c) jr nz,.checkIfMovingNorth ; moving south ld a,[wMapViewVRAMPointer] - add a,$40 + add $40 ld [wMapViewVRAMPointer],a jr nc,.adjustXCoordWithinBlock ld a,[wMapViewVRAMPointer + 1] inc a - and a,$03 - or a,$98 + and $03 + or $98 ld [wMapViewVRAMPointer + 1],a jr .adjustXCoordWithinBlock .checkIfMovingNorth @@ -66,13 +68,13 @@ _AdvancePlayerSprite:: ; f010c (3c:410c) jr nz,.adjustXCoordWithinBlock ; moving north ld a,[wMapViewVRAMPointer] - sub a,$40 + sub $40 ld [wMapViewVRAMPointer],a jr nc,.adjustXCoordWithinBlock ld a,[wMapViewVRAMPointer + 1] dec a - and a,$03 - or a,$98 + and $03 + or $98 ld [wMapViewVRAMPointer + 1],a .adjustXCoordWithinBlock ld a,c @@ -83,7 +85,7 @@ _AdvancePlayerSprite:: ; f010c (3c:410c) ld a,[hl] add c ld [hl],a - cp a,$02 + cp $02 jr nz,.checkForMoveToWestBlock ; moved into the tile block to the east xor a @@ -97,7 +99,7 @@ _AdvancePlayerSprite:: ; f010c (3c:410c) cp a,$ff jr nz,.adjustYCoordWithinBlock ; moved into the tile block to the west - ld a,$01 + ld a,$1 ld [hl],a ld hl,wXOffsetSinceLastSpecialWarp dec [hl] @@ -109,7 +111,7 @@ _AdvancePlayerSprite:: ; f010c (3c:410c) ld a,[hl] add b ld [hl],a - cp a,$02 + cp $2 jr nz,.checkForMoveToNorthBlock ; moved into the tile block to the south xor a @@ -124,7 +126,7 @@ _AdvancePlayerSprite:: ; f010c (3c:410c) cp a,$ff jr nz,.updateMapView ; moved into the tile block to the north - ld a,$01 + ld a,$1 ld [hl],a ld hl,wYOffsetSinceLastSpecialWarp dec [hl] @@ -134,49 +136,40 @@ _AdvancePlayerSprite:: ; f010c (3c:410c) .updateMapView call LoadCurrentMapView ld a,[wSpriteStateData1 + 3] ; delta Y - cp a,$01 + cp $1 jr nz,.checkIfMovingNorth2 ; if moving south call ScheduleSouthRowRedraw jr .scrollBackgroundAndSprites .checkIfMovingNorth2 - cp a,$ff + cp $ff jr nz,.checkIfMovingEast2 ; if moving north call ScheduleNorthRowRedraw jr .scrollBackgroundAndSprites .checkIfMovingEast2 ld a,[wSpriteStateData1 + 5] ; delta X - cp a,$01 + cp $1 jr nz,.checkIfMovingWest2 ; if moving east call ScheduleEastColumnRedraw jr .scrollBackgroundAndSprites .checkIfMovingWest2 - cp a,$ff + cp $ff jr nz,.scrollBackgroundAndSprites ; if moving west call ScheduleWestColumnRedraw .scrollBackgroundAndSprites ld a,[wSpriteStateData1 + 3] ; delta Y + add a ld b,a ld a,[wSpriteStateData1 + 5] ; delta X + add a ld c,a - sla b - sla c - ld a,[hSCY] - add b - ld [hSCY],a ; update background scroll Y - ld a,[hSCX] - add c - ld [hSCX],a ; update background scroll X ; shift all the sprites in the direction opposite of the player's motion ; so that the player appears to move relative to them ld hl,wSpriteStateData1 + $14 - ld a,[W_NUMSPRITES] ; number of sprites - and a ; are there any sprites? - jr z,.done - ld e,a + ld e,15 .spriteShiftLoop ld a,[hl] sub b @@ -191,11 +184,17 @@ _AdvancePlayerSprite:: ; f010c (3c:410c) dec e jr nz,.spriteShiftLoop .done + ld a,[hSCY] + add b + ld [hSCY],a ; update background scroll Y + ld a,[hSCX] + add c + ld [hSCX],a ; update background scroll X ret -MoveTileBlockMapPointerEast:: ; 0e65 (0:0e65) +MoveTileBlockMapPointerEast:: ; f0248 (3c:4248) ld a,[de] - add a,$01 + add $1 ld [de],a ret nc inc de @@ -204,9 +203,9 @@ MoveTileBlockMapPointerEast:: ; 0e65 (0:0e65) ld [de],a ret -MoveTileBlockMapPointerWest:: ; 0e6f (0:0e6f) +MoveTileBlockMapPointerWest:: ; f0252 (3c:4252) ld a,[de] - sub a,$01 + sub $1 ld [de],a ret nc inc de @@ -215,8 +214,8 @@ MoveTileBlockMapPointerWest:: ; 0e6f (0:0e6f) ld [de],a ret -MoveTileBlockMapPointerSouth:: ; 0e79 (0:0e79) - add a,$06 +MoveTileBlockMapPointerSouth:: ; f025c (3c:425c) + add $6 ld b,a ld a,[de] add b @@ -228,8 +227,8 @@ MoveTileBlockMapPointerSouth:: ; 0e79 (0:0e79) ld [de],a ret -MoveTileBlockMapPointerNorth:: ; 0e85 (0:0e85) - add a,$06 +MoveTileBlockMapPointerNorth:: ; f0268 (3c:4268) + add $6 ld b,a ld a,[de] sub b diff --git a/engine/bank3f/data/map_songs.asm b/engine/bank3f/data/map_songs.asm index ece6d321..b65822e7 100644 --- a/engine/bank3f/data/map_songs.asm +++ b/engine/bank3f/data/map_songs.asm @@ -1,252 +1,250 @@ MapSongBanks: ; fc000 (3f:4000) - dr $fc000,$fc1f2 - - ;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 - ;db MUSIC_ROUTES3, BANK(Music_Routes3) ; BeachHouse
\ No newline at end of file + 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 + db MUSIC_ROUTES3, BANK(Music_Routes3) ; BeachHouse
\ No newline at end of file diff --git a/engine/items/items.asm b/engine/items/items.asm index 25c50b4f..533da448 100755 --- a/engine/items/items.asm +++ b/engine/items/items.asm @@ -709,7 +709,7 @@ ItemUseEvoStone: ; d7d0 (3:57d0) ret Func_d85d: ; d85d (3:585d) - ld hl, Pointer_f1e5 + ld hl, Pointer_3b1e5 ld a, [wLoadedMon] dec a ld c, a diff --git a/engine/overworld/cut.asm b/engine/overworld/cut.asm index 30aedbc1..276ec93e 100755 --- a/engine/overworld/cut.asm +++ b/engine/overworld/cut.asm @@ -1,4 +1,4 @@ -UsedCut: ; ef54 (3:6f54) +UsedCut: ; edd1 (3:6dd1) xor a ld [wActionResultOrTookBattleTurn], a ; initialise to failure value ld a, [W_CURMAPTILESET] @@ -67,15 +67,16 @@ UsedCut: ; ef54 (3:6f54) call UpdateSprites jp RedrawMapView -UsedCutText: ; eff2 (3:6ff2) +UsedCutText: ; ee6f (3:6e6f) TX_FAR _UsedCutText db "@" -InitCutAnimOAM: ; eff7 (3:6ff7) +InitCutAnimOAM: ; ee74 (3:6e74) xor a ld [wWhichAnimationOffsets], a - ld a, $e4 + ld a, %11100100 ld [rOBP1], a + call UpdateGBCPal_OBP1 ld a, [wCutTile] cp $52 jr z, .grass @@ -111,22 +112,22 @@ InitCutAnimOAM: ; eff7 (3:6ff7) jr nz, .loop ret -LoadCutGrassAnimationTilePattern: ; f04c (3:704c) - ld de, AnimationTileset2 + $60 ; tile depicting a leaf +LoadCutGrassAnimationTilePattern: ; eecc (3:6ecc) + ld de, AnimationTileset2 + $30 ; tile depicting a leaf lb bc, BANK(AnimationTileset2), $01 jp CopyVideoData -WriteCutOrBoulderDustAnimationOAMBlock: ; f055 (3:7055) +WriteCutOrBoulderDustAnimationOAMBlock: ; eed5 (3:6ed5) call GetCutOrBoulderDustAnimationOffsets ld a, $9 ld de, CutOrBoulderDustAnimationTilesAndAttributes jp WriteOAMBlock -CutOrBoulderDustAnimationTilesAndAttributes: ; f060 (3:7060) - db $FC,$10,$FD,$10 - db $FE,$10,$FF,$10 +CutOrBoulderDustAnimationTilesAndAttributes: ; eee0 (3:6ee0) + db $FC,$14,$FD,$14 + db $FE,$14,$FF,$14 -GetCutOrBoulderDustAnimationOffsets: ; f068 (3:7068) +GetCutOrBoulderDustAnimationOffsets: ; eee8 (3:6ee8) ld hl, wSpriteStateData1 + 4 ld a, [hli] ; player's sprite screen Y position ld b, a @@ -157,14 +158,14 @@ GetCutOrBoulderDustAnimationOffsets: ; f068 (3:7068) ld c, a ret -CutAnimationOffsets: ; f08f (3:708f) +CutAnimationOffsets: ; ef0f (3:6f0f) ; Each pair represents the x and y pixels offsets from the player of where the cut tree animation should be drawn db 8, 36 ; player is facing down db 8, 4 ; player is facing up db -8, 20 ; player is facing left db 24, 20 ; player is facing right -BoulderDustAnimationOffsets: ; f097 (3:7097) +BoulderDustAnimationOffsets: ; ef17 (3:6f17) ; Each pair represents the x and y pixels offsets from the player of where the cut tree animation should be drawn ; These offsets represent 2 blocks away from the player db 8, 52 ; player is facing down @@ -172,7 +173,7 @@ BoulderDustAnimationOffsets: ; f097 (3:7097) db -24, 20 ; player is facing left db 40, 20 ; player is facing right -ReplaceTreeTileBlock: ; f09f (3:709f) +ReplaceTreeTileBlock: ; ef1f (3:6f1f) ; Determine the address of the tile block that contains the tile in front of the ; player (i.e. where the tree is) and replace it with the corresponding tile ; block that doesn't have the tree. @@ -248,7 +249,7 @@ ReplaceTreeTileBlock: ; f09f (3:709f) ld [hl], a ret -CutTreeBlockSwaps: ; f100 (3:7100) +CutTreeBlockSwaps: ; ef80 (3:6f80) ; first byte = tileset block containing the cut tree ; second byte = corresponding tileset block after the cut animation happens db $32, $6D @@ -2846,7 +2846,7 @@ DrawBadges: ; ea03 (3:6a03) ; call .DrawBadgeRow ; ret -.DrawBadgeRow ; ea4c (3:6a4c) +.DrawBadgeRow ; e8c9 (3:68c9) ; Draw 4 badges. ld c, 4 @@ -2910,14 +2910,14 @@ DrawBadges: ; ea03 (3:6a03) .FaceBadgeTiles db $20, $28, $30, $38, $40, $48, $50, $58 -GymLeaderFaceAndBadgeTileGraphics: ; ea9e (3:6a9e) +GymLeaderFaceAndBadgeTileGraphics: ; e91b (3:691b) INCBIN "gfx/badges.2bpp" ; replaces a tile block with the one specified in [wNewTileBlockID] ; and redraws the map view if necessary ; b = Y ; c = X -ReplaceTileBlock: ; ee9e (3:6e9e) +ReplaceTileBlock: ; ed1b (3:6d1b) call GetPredefRegisters ld hl, wOverworldMap ld a, [W_CURMAPWIDTH] @@ -2961,7 +2961,7 @@ ReplaceTileBlock: ; ee9e (3:6e9e) call CompareHLWithBC ret c ; return if the replaced tile block is above the map view in memory -RedrawMapView: ; eedc (3:6edc) +RedrawMapView: ; ed59 (3:6d59) ld a, [W_ISINBATTLE] inc a ret z @@ -3032,7 +3032,7 @@ RedrawMapView: ; eedc (3:6edc) ld [H_AUTOBGTRANSFERENABLED], a ret -CompareHLWithBC: ; ef4e (3:6f4e) +CompareHLWithBC: ; edcb (3:6dcb) ld a, h sub b ret nz @@ -3042,7 +3042,7 @@ CompareHLWithBC: ; ef4e (3:6f4e) INCLUDE "engine/overworld/cut.asm" -MarkTownVisitedAndLoadMissableObjects: ; f113 (3:7113) +MarkTownVisitedAndLoadMissableObjects: ; ef93 (3:6f93) ld a, [W_CURMAP] cp ROUTE_1 jr nc, .notInTown @@ -3061,18 +3061,15 @@ MarkTownVisitedAndLoadMissableObjects: ; f113 (3:7113) ld h, [hl] ; fall through -LoadMissableObjects: ; f132 (3:7132) +; LoadMissableObjects: ; efb2 (3:6fb2) +; seems to not exist in yellow (predef replaced with something near TryPushingBoulder) ld l, a push hl - ld de, MapHS00 ; calculate difference between out pointer and the base pointer ld a, l - sub e - jr nc, .asm_f13c - dec h -.asm_f13c + sub MapHS00 & $ff ; calculate difference between out pointer and the base pointer ld l, a ld a, h - sub d + sbc MapHS00 / $100 ld h, a ld a, h ld [H_DIVIDEND], a @@ -3111,7 +3108,7 @@ LoadMissableObjects: ; f132 (3:7132) ld [de], a ; write sentinel ret -InitializeMissableObjectsFlags: ; f175 (3:7175) +InitializeMissableObjectsFlags: ; eff1 (3:6ff1) ld hl, W_MISSABLEOBJECTFLAGS ld bc, wMissableObjectFlagsEnd - W_MISSABLEOBJECTFLAGS xor a @@ -3142,7 +3139,7 @@ InitializeMissableObjectsFlags: ; f175 (3:7175) jr .missableObjectsLoop ; tests if current sprite is a missable object that is hidden/has been removed -IsObjectHidden: ; f1a6 (3:71a6) +IsObjectHidden: ; f022 (3:7022) ld a, [H_CURRENTSPRITEOFFSET] swap a ld b, a @@ -3169,7 +3166,7 @@ IsObjectHidden: ; f1a6 (3:71a6) ; adds missable object (items, leg. pokemon, etc.) to the map ; [wMissableObjectIndex]: index of the missable object to be added (global index) -ShowObject: ; f1c8 (3:71c8) +ShowObject: ; f044 (3:7044) ShowObject2: ld hl, W_MISSABLEOBJECTFLAGS ld a, [wMissableObjectIndex] @@ -3180,7 +3177,7 @@ ShowObject2: ; removes missable object (items, leg. pokemon, etc.) from the map ; [wMissableObjectIndex]: index of the missable object to be removed (global index) -HideObject: ; f1d7 (3:71d7) +HideObject: ; f053 (3:7053) ld hl, W_MISSABLEOBJECTFLAGS ld a, [wMissableObjectIndex] ld c, a @@ -3188,7 +3185,7 @@ HideObject: ; f1d7 (3:71d7) call MissableObjectFlagAction ; set "removed" flag jp UpdateSprites -MissableObjectFlagAction: +MissableObjectFlagAction: ; f062 (3:7062) ; identical to FlagAction push hl @@ -3258,10 +3255,11 @@ MissableObjectFlagAction: ld c, a ret -TryPushingBoulder: ; f225 (3:7225) +TryPushingBoulder: ; f0a1 (3:70a1) ld a, [wd728] bit 0, a ; using Strength? ret z +; where LoadMissableObjects predef points to now ld a, [wFlags_0xcd60] bit 1, a ; has boulder dust animation from previous push played yet? ret nz @@ -3330,19 +3328,19 @@ TryPushingBoulder: ; f225 (3:7225) set 1, [hl] ret -PushBoulderUpMovementData: ; f2ad (3:72ad) +PushBoulderUpMovementData: ; f129 (3:7129) db NPC_MOVEMENT_UP,$FF -PushBoulderDownMovementData: ; f2af (3:72af) +PushBoulderDownMovementData: ; f12b (3:712b) db NPC_MOVEMENT_DOWN,$FF -PushBoulderLeftMovementData: ; f2b1 (3:72b1) +PushBoulderLeftMovementData: ; f12d (3:712d) db NPC_MOVEMENT_LEFT,$FF -PushBoulderRightMovementData: ; f2b3 (3:72b3) +PushBoulderRightMovementData: ; f12f (3:712f) db NPC_MOVEMENT_RIGHT,$FF -DoBoulderDustAnimation: ; f2b5 (3:72b5) +DoBoulderDustAnimation: ; f131 (3:7131) ld a, [wd730] bit 0, a ret nz @@ -3358,13 +3356,13 @@ DoBoulderDustAnimation: ; f2b5 (3:72b5) ld a, SFX_CUT jp PlaySound -ResetBoulderPushFlags: ; f2dd (3:72dd) +ResetBoulderPushFlags: ; f159 (3:7159) ld hl, wFlags_0xcd60 res 1, [hl] res 6, [hl] ret -_AddPartyMon: ; f2e5 (3:72e5) +_AddPartyMon: ; f161 (3:7161) ; Adds a new mon to the player's or enemy's party. ; [wMonDataLocation] is used in an unusual way in this function. ; If the lower nybble is 0, the mon is added to the player's party, else the enemy's. @@ -3536,6 +3534,11 @@ _AddPartyMon: ; f2e5 (3:72e5) inc de ld a, [hli] ; catch rate (held item in gen 2) ld [de], a + cp KADABRA + jr nz, .skipGivingTwistedSpoon + ld a, $60 ; twistedspoon in gen 2 + ld [de], a +.skipGivingTwistedSpoon ld hl, W_MONHMOVES ld a, [hli] inc de @@ -3611,10 +3614,10 @@ _AddPartyMon: ; f2e5 (3:72e5) scf ret -LoadMovePPs: ; f473 (3:7473) +LoadMovePPs: ; f2f9 (3:72f9) call GetPredefRegisters ; fallthrough -AddPartyMon_WriteMovePP: ; f476 (3:7476) +AddPartyMon_WriteMovePP: ; f2fc (3:72fc) ld b, NUM_MOVES .pploop ld a, [hli] ; read move ID diff --git a/yellow/main.asm b/yellow/main.asm index 87964875..f11a90e4 100755 --- a/yellow/main.asm +++ b/yellow/main.asm @@ -73,15 +73,6 @@ _RemovePokemon: ; 7a0f (1:7a0f) dr $7a0f,$7abf _DisplayPokedex: ; 7c18 (1:7abf) dr $7abf,$8000 - -;SECTION "bank02",ROMX,BANK[$02] -; dr $8000,$9064 -;PlayBattleMusic: ; 9064 (2:5064) -; dr $9064,$909d -;Music2_UpdateMusic: ; 909d (2:509d) -; dr $909d,$984e -;Func_984e: ; 984e (2:584e) -; dr $984e,$c000 SECTION "bank03",ROMX,BANK[$03] @@ -827,28 +818,864 @@ INCLUDE "data/wild_mons.asm" INCLUDE "engine/items/items.asm" DrawBadges: ; e880 (3:6880) - dr $e880,$e91b +; Draw 4x2 gym leader faces, with the faces replaced by +; badges if they are owned. Used in the player status screen. + +; In Japanese versions, names are displayed above faces. +; Instead of removing relevant code, the name graphics were erased. + +; Tile ids for face/badge graphics. + ld de, wBadgeOrFaceTiles + ld hl, .FaceBadgeTiles + ld bc, 8 + call CopyData + +; Booleans for each badge. + ld hl, wTempObtainedBadgesBooleans + ld bc, 8 + xor a + call FillMemory + +; Alter these based on owned badges. + ld de, wTempObtainedBadgesBooleans + ld hl, wBadgeOrFaceTiles + ld a, [W_OBTAINEDBADGES] + ld b, a + ld c, 8 +.CheckBadge + srl b + jr nc, .NextBadge + ld a, [hl] + add 4 ; Badge graphics are after each face + ld [hl], a + ld a, 1 + ld [de], a +.NextBadge + inc hl + inc de + dec c + jr nz, .CheckBadge + +; Draw two rows of badges. + ld hl, wBadgeNumberTile + ld a, $d8 ; [1] + ld [hli], a + ld [hl], $60 ; First name + + coord hl, 2, 11 + ld de, wTempObtainedBadgesBooleans + call .DrawBadgeRow + + coord hl, 2, 14 + ld de, wTempObtainedBadgesBooleans + 4 +; call .DrawBadgeRow +; ret + +.DrawBadgeRow ; e8c9 (3:68c9) +; Draw 4 badges. + + ld c, 4 +.DrawBadge + push de + push hl + +; Badge no. + ld a, [wBadgeNumberTile] + ld [hli], a + inc a + ld [wBadgeNumberTile], a + +; Names aren't printed if the badge is owned. + ld a, [de] + and a + ld a, [wBadgeNameTile] + jr nz, .SkipName + call .PlaceTiles + jr .PlaceBadge + +.SkipName + inc a + inc a + inc hl + +.PlaceBadge + ld [wBadgeNameTile], a + ld de, SCREEN_WIDTH - 1 + add hl, de + ld a, [wBadgeOrFaceTiles] + call .PlaceTiles + add hl, de + call .PlaceTiles + +; Shift badge array back one byte. + push bc + ld hl, wBadgeOrFaceTiles + 1 + ld de, wBadgeOrFaceTiles + ld bc, 8 + call CopyData + pop bc + + pop hl + ld de, 4 + add hl, de + + pop de + inc de + dec c + jr nz, .DrawBadge + ret + +.PlaceTiles + ld [hli], a + inc a + ld [hl], a + inc a + ret + +.FaceBadgeTiles + db $20, $28, $30, $38, $40, $48, $50, $58 GymLeaderFaceAndBadgeTileGraphics: ; e91b (3:691b) INCBIN "gfx/badges.2bpp" - dr $ed1b,$ed59 +; replaces a tile block with the one specified in [wNewTileBlockID] +; and redraws the map view if necessary +; b = Y +; c = X +ReplaceTileBlock: ; ed1b (3:6d1b) + call GetPredefRegisters + ld hl, wOverworldMap + ld a, [W_CURMAPWIDTH] + add $6 + ld e, a + ld d, $0 + add hl, de + add hl, de + add hl, de + ld e, $3 + add hl, de + ld e, a + ld a, b + and a + jr z, .addX +; add width * Y +.addWidthYTimesLoop + add hl, de + dec b + jr nz, .addWidthYTimesLoop +.addX + add hl, bc ; add X + ld a, [wNewTileBlockID] + ld [hl], a + ld a, [wCurrentTileBlockMapViewPointer] + ld c, a + ld a, [wCurrentTileBlockMapViewPointer + 1] + ld b, a + call CompareHLWithBC + ret c ; return if the replaced tile block is below the map view in memory + push hl + ld l, e + ld h, $0 + ld e, $6 + ld d, h + add hl, hl + add hl, hl + add hl, de + add hl, bc + pop bc + call CompareHLWithBC + ret c ; return if the replaced tile block is above the map view in memory + RedrawMapView: ; ed59 (3:6d59) - dr $ed59,$ef93 + ld a, [W_ISINBATTLE] + inc a + ret z + ld a, [H_AUTOBGTRANSFERENABLED] + push af + ld a, [hTilesetType] + push af + xor a + ld [H_AUTOBGTRANSFERENABLED], a + ld [hTilesetType], a ; no flower/water BG tile animations + call LoadCurrentMapView + call RunDefaultPaletteCommand + ld hl, wMapViewVRAMPointer + ld a, [hli] + ld h, [hl] + ld l, a + ld de, -2 * 32 + add hl, de + ld a, h + and $3 + or $98 + ld a, l + ld [wBuffer], a + ld a, h + ld [wBuffer + 1], a ; this copy of the address is not used + ld a, 2 + ld [$ffbe], a + ld c, 9 ; number of rows of 2x2 tiles (this covers the whole screen) +.redrawRowLoop + push bc + push hl + push hl + ld hl, wTileMap - 2 * SCREEN_WIDTH + ld de, SCREEN_WIDTH + ld a, [$ffbe] +.calcWRAMAddrLoop + add hl, de + dec a + jr nz, .calcWRAMAddrLoop + call CopyToRedrawRowOrColumnSrcTiles + pop hl + ld de, $20 + ld a, [$ffbe] + ld c, a +.calcVRAMAddrLoop + add hl, de + ld a, h + and $3 + or $98 + dec c + jr nz, .calcVRAMAddrLoop + ld [hRedrawRowOrColumnDest + 1], a + ld a, l + ld [hRedrawRowOrColumnDest], a + ld a, REDRAW_ROW + ld [hRedrawRowOrColumnMode], a + call DelayFrame + ld hl, $ffbe + inc [hl] + inc [hl] + pop hl + pop bc + dec c + jr nz, .redrawRowLoop + pop af + ld [hTilesetType], a + pop af + ld [H_AUTOBGTRANSFERENABLED], a + ret + +CompareHLWithBC: ; edcb (3:6dcb) + ld a, h + sub b + ret nz + ld a, l + sub c + ret + +INCLUDE "engine/overworld/cut.asm" + MarkTownVisitedAndLoadMissableObjects: ; ef93 (3:6f93) - dr $ef93,$f0a1 + ld a, [W_CURMAP] + cp ROUTE_1 + jr nc, .notInTown + ld c, a + ld b, FLAG_SET + ld hl, W_TOWNVISITEDFLAG ; mark town as visited (for flying) + predef FlagActionPredef +.notInTown + ld hl, MapHSPointers + ld a, [W_CURMAP] + ld b, $0 + ld c, a + add hl, bc + add hl, bc + ld a, [hli] ; load missable objects pointer in hl + ld h, [hl] + ; fall through + +; LoadMissableObjects: ; efb2 (3:6fb2) +; seems to not exist in yellow (predef replaced with something near TryPushingBoulder) + ld l, a + push hl + ld a, l + sub MapHS00 & $ff ; calculate difference between out pointer and the base pointer + ld l, a + ld a, h + sbc MapHS00 / $100 + ld h, a + ld a, h + ld [H_DIVIDEND], a + ld a, l + ld [H_DIVIDEND+1], a + xor a + ld [H_DIVIDEND+2], a + ld [H_DIVIDEND+3], a + ld a, $3 + ld [H_DIVISOR], a + ld b, $2 + call Divide ; divide difference by 3, resulting in the global offset (number of missable items before ours) + ld a, [W_CURMAP] + ld b, a + ld a, [H_DIVIDEND+3] + ld c, a ; store global offset in c + ld de, W_MISSABLEOBJECTLIST + pop hl +.writeMissableObjectsListLoop + ld a, [hli] + cp $ff + jr z, .done ; end of list + cp b + jr nz, .done ; not for current map anymore + ld a, [hli] + inc hl + ld [de], a ; write (map-local) sprite ID + inc de + ld a, c + inc c + ld [de], a ; write (global) missable object index + inc de + jr .writeMissableObjectsListLoop +.done + ld a, $ff + ld [de], a ; write sentinel + ret + +InitializeMissableObjectsFlags: ; eff1 (3:6ff1) + ld hl, W_MISSABLEOBJECTFLAGS + ld bc, wMissableObjectFlagsEnd - W_MISSABLEOBJECTFLAGS + xor a + call FillMemory ; clear missable objects flags + ld hl, MapHS00 + xor a + ld [wMissableObjectCounter], a +.missableObjectsLoop + ld a, [hli] + cp $ff ; end of list + ret z + push hl + inc hl + ld a, [hl] + cp Hide + jr nz, .skip + ld hl, W_MISSABLEOBJECTFLAGS + ld a, [wMissableObjectCounter] + ld c, a + ld b, FLAG_SET + call MissableObjectFlagAction ; set flag if Item is hidden +.skip + ld hl, wMissableObjectCounter + inc [hl] + pop hl + inc hl + inc hl + jr .missableObjectsLoop + +; tests if current sprite is a missable object that is hidden/has been removed +IsObjectHidden: ; f022 (3:7022) + ld a, [H_CURRENTSPRITEOFFSET] + swap a + ld b, a + ld hl, W_MISSABLEOBJECTLIST +.loop + ld a, [hli] + cp $ff + jr z, .notHidden ; not missable -> not hidden + cp b + ld a, [hli] + jr nz, .loop + ld c, a + ld b, FLAG_TEST + ld hl, W_MISSABLEOBJECTFLAGS + call MissableObjectFlagAction + ld a, c + and a + jr nz, .hidden +.notHidden + xor a +.hidden + ld [$ffe5], a + ret + +; adds missable object (items, leg. pokemon, etc.) to the map +; [wMissableObjectIndex]: index of the missable object to be added (global index) +ShowObject: ; f044 (3:7044) +ShowObject2: + ld hl, W_MISSABLEOBJECTFLAGS + ld a, [wMissableObjectIndex] + ld c, a + ld b, FLAG_RESET + call MissableObjectFlagAction ; reset "removed" flag + jp UpdateSprites + +; removes missable object (items, leg. pokemon, etc.) from the map +; [wMissableObjectIndex]: index of the missable object to be removed (global index) +HideObject: ; f053 (3:7053) + ld hl, W_MISSABLEOBJECTFLAGS + ld a, [wMissableObjectIndex] + ld c, a + ld b, FLAG_SET + call MissableObjectFlagAction ; set "removed" flag + jp UpdateSprites + +MissableObjectFlagAction: ; f062 (3:7062) +; identical to FlagAction + + push hl + push de + push bc + + ; bit + ld a, c + ld d, a + and 7 + ld e, a + + ; byte + ld a, d + srl a + srl a + srl a + add l + ld l, a + jr nc, .ok + inc h +.ok + + ; d = 1 << e (bitmask) + inc e + ld d, 1 +.shift + dec e + jr z, .shifted + sla d + jr .shift +.shifted + + ld a, b + and a + jr z, .reset + cp 2 + jr z, .read + +.set + ld a, [hl] + ld b, a + ld a, d + or b + ld [hl], a + jr .done + +.reset + ld a, [hl] + ld b, a + ld a, d + xor $ff + and b + ld [hl], a + jr .done + +.read + ld a, [hl] + ld b, a + ld a, d + and b + +.done + pop bc + pop de + pop hl + ld c, a + ret + TryPushingBoulder: ; f0a1 (3:70a1) - dr $f0a1,$f131 + ld a, [wd728] + bit 0, a ; using Strength? + ret z +; where LoadMissableObjects predef points to now + ld a, [wFlags_0xcd60] + bit 1, a ; has boulder dust animation from previous push played yet? + ret nz + xor a + ld [hSpriteIndexOrTextID], a + call IsSpriteInFrontOfPlayer + ld a, [hSpriteIndexOrTextID] + ld [wBoulderSpriteIndex], a + and a + jp z, ResetBoulderPushFlags + ld hl, wSpriteStateData1 + 1 + ld d, $0 + ld a, [hSpriteIndexOrTextID] + swap a + ld e, a + add hl, de + res 7, [hl] + call GetSpriteMovementByte2Pointer + ld a, [hl] + cp BOULDER_MOVEMENT_BYTE_2 + jp nz, ResetBoulderPushFlags + ld hl, wFlags_0xcd60 + bit 6, [hl] + set 6, [hl] ; indicate that the player has tried pushing + ret z ; the player must try pushing twice before the boulder will move + ld a, [hJoyHeld] + and D_RIGHT | D_LEFT | D_UP | D_DOWN + ret z + predef CheckForCollisionWhenPushingBoulder + ld a, [wTileInFrontOfBoulderAndBoulderCollisionResult] + and a ; was there a collision? + jp nz, ResetBoulderPushFlags + ld a, [hJoyHeld] + ld b, a + ld a, [wSpriteStateData1 + 9] ; player's sprite facing direction + cp SPRITE_FACING_UP + jr z, .pushBoulderUp + cp SPRITE_FACING_LEFT + jr z, .pushBoulderLeft + cp SPRITE_FACING_RIGHT + jr z, .pushBoulderRight +.pushBoulderDown + bit 7, b + ret z + ld de, PushBoulderDownMovementData + jr .done +.pushBoulderUp + bit 6, b + ret z + ld de, PushBoulderUpMovementData + jr .done +.pushBoulderLeft + bit 5, b + ret z + ld de, PushBoulderLeftMovementData + jr .done +.pushBoulderRight + bit 4, b + ret z + ld de, PushBoulderRightMovementData +.done + call MoveSprite + ld a, SFX_PUSH_BOULDER + call PlaySound + ld hl, wFlags_0xcd60 + set 1, [hl] + ret + +PushBoulderUpMovementData: ; f129 (3:7129) + db NPC_MOVEMENT_UP,$FF + +PushBoulderDownMovementData: ; f12b (3:712b) + db NPC_MOVEMENT_DOWN,$FF + +PushBoulderLeftMovementData: ; f12d (3:712d) + db NPC_MOVEMENT_LEFT,$FF + +PushBoulderRightMovementData: ; f12f (3:712f) + db NPC_MOVEMENT_RIGHT,$FF + DoBoulderDustAnimation: ; f131 (3:7131) - dr $f131,$f161 + ld a, [wd730] + bit 0, a + ret nz + callab AnimateBoulderDust + call DiscardButtonPresses + ld [wJoyIgnore], a + call ResetBoulderPushFlags + set 7, [hl] + ld a, [wBoulderSpriteIndex] + ld [H_SPRITEINDEX], a + call GetSpriteMovementByte2Pointer + ld [hl], $10 + ld a, SFX_CUT + jp PlaySound + +ResetBoulderPushFlags: ; f159 (3:7159) + ld hl, wFlags_0xcd60 + res 1, [hl] + res 6, [hl] + ret + _AddPartyMon: ; f161 (3:7161) - dr $f161,$f1e5 -Pointer_f1e5: ; f1e5 (3:71e5) - dr $f1e5,$f323 +; Adds a new mon to the player's or enemy's party. +; [wMonDataLocation] is used in an unusual way in this function. +; If the lower nybble is 0, the mon is added to the player's party, else the enemy's. +; If the entire value is 0, then the player is allowed to name the mon. + ld de, wPartyCount + ld a, [wMonDataLocation] + and $f + jr z, .next + ld de, wEnemyPartyCount +.next + ld a, [de] + inc a + cp PARTY_LENGTH + 1 + ret nc ; return if the party is already full + ld [de], a + ld a, [de] + ld [hNewPartyLength], a + add e + ld e, a + jr nc, .noCarry + inc d +.noCarry + ld a, [wcf91] + ld [de], a ; write species of new mon in party list + inc de + ld a, $ff ; terminator + ld [de], a + ld hl, wPartyMonOT + ld a, [wMonDataLocation] + and $f + jr z, .next2 + ld hl, wEnemyMonOT +.next2 + ld a, [hNewPartyLength] + dec a + call SkipFixedLengthTextEntries + ld d, h + ld e, l + ld hl, wPlayerName + ld bc, NAME_LENGTH + call CopyData + ld a, [wMonDataLocation] + and a + jr nz, .skipNaming + ld hl, wPartyMonNicks + ld a, [hNewPartyLength] + dec a + call SkipFixedLengthTextEntries + ld a, NAME_MON_SCREEN + ld [wNamingScreenType], a + predef AskName +.skipNaming + ld hl, wPartyMons + ld a, [wMonDataLocation] + and $f + jr z, .next3 + ld hl, wEnemyMons +.next3 + ld a, [hNewPartyLength] + dec a + ld bc, wPartyMon2 - wPartyMon1 + call AddNTimes + ld e, l + ld d, h + push hl + ld a, [wcf91] + ld [wd0b5], a + call GetMonHeader + ld hl, W_MONHEADER + ld a, [hli] + ld [de], a ; species + inc de + pop hl + push hl + ld a, [wMonDataLocation] + and $f + ld a, $98 ; set enemy trainer mon IVs to fixed average values + ld b, $88 + jr nz, .next4 + +; If the mon is being added to the player's party, update the pokedex. + ld a, [wcf91] + ld [wd11e], a + push de + predef IndexToPokedex + pop de + ld a, [wd11e] + dec a + ld c, a + ld b, FLAG_TEST + ld hl, wPokedexOwned + call FlagAction + ld a, c ; whether the mon was already flagged as owned + ld [wUnusedD153], a ; not read + ld a, [wd11e] + dec a + ld c, a + ld b, FLAG_SET + push bc + call FlagAction + pop bc + ld hl, wPokedexSeen + call FlagAction + + pop hl + push hl + + ld a, [W_ISINBATTLE] + and a ; is this a wild mon caught in battle? + jr nz, .copyEnemyMonData + +; Not wild. + call Random ; generate random IVs + ld b, a + call Random + +.next4 + push bc + ld bc, wPartyMon1DVs - wPartyMon1 + add hl, bc + pop bc + ld [hli], a + ld [hl], b ; write IVs + ld bc, (wPartyMon1HPExp - 1) - (wPartyMon1DVs + 1) + add hl, bc + ld a, 1 + ld c, a + xor a + ld b, a + call CalcStat ; calc HP stat (set cur Hp to max HP) + ld a, [H_MULTIPLICAND+1] + ld [de], a + inc de + ld a, [H_MULTIPLICAND+2] + ld [de], a + inc de + xor a + ld [de], a ; box level + inc de + ld [de], a ; status ailments + inc de + jr .copyMonTypesAndMoves +.copyEnemyMonData + ld bc, wEnemyMon1DVs - wEnemyMon1 + add hl, bc + ld a, [wEnemyMonDVs] ; copy IVs from cur enemy mon + ld [hli], a + ld a, [wEnemyMonDVs + 1] + ld [hl], a + ld a, [wEnemyMonHP] ; copy HP from cur enemy mon + ld [de], a + inc de + ld a, [wEnemyMonHP+1] + ld [de], a + inc de + xor a + ld [de], a ; box level + inc de + ld a, [wEnemyMonStatus] ; copy status ailments from cur enemy mon + ld [de], a + inc de +.copyMonTypesAndMoves + ld hl, W_MONHTYPES + ld a, [hli] ; type 1 + ld [de], a + inc de + ld a, [hli] ; type 2 + ld [de], a + inc de + ld a, [hli] ; catch rate (held item in gen 2) + ld [de], a + ld a, [wcf91] + cp KADABRA + jr nz, .skipGivingTwistedSpoon + ld a, $60 ; twistedspoon in gen 2 + ld [de], a +.skipGivingTwistedSpoon + ld hl, W_MONHMOVES + ld a, [hli] + inc de + push de + ld [de], a + ld a, [hli] + inc de + ld [de], a + ld a, [hli] + inc de + ld [de], a + ld a, [hli] + inc de + ld [de], a + push de + dec de + dec de + dec de + xor a + ld [wLearningMovesFromDayCare], a + predef WriteMonMoves + pop de + ld a, [wPlayerID] ; set trainer ID to player ID + inc de + ld [de], a + ld a, [wPlayerID + 1] + inc de + ld [de], a + push de + ld a, [W_CURENEMYLVL] + ld d, a + callab CalcExperience + pop de + inc de + ld a, [hExperience] ; write experience + ld [de], a + inc de + ld a, [hExperience + 1] + ld [de], a + inc de + ld a, [hExperience + 2] + ld [de], a + xor a + ld b, NUM_STATS * 2 +.writeEVsLoop ; set all EVs to 0 + inc de + ld [de], a + dec b + jr nz, .writeEVsLoop + inc de + inc de + pop hl + call AddPartyMon_WriteMovePP + inc de + ld a, [W_CURENEMYLVL] + ld [de], a + inc de + ld a, [W_ISINBATTLE] + dec a + jr nz, .calcFreshStats + ld hl, wEnemyMonMaxHP + ld bc, $a + call CopyData ; copy stats of cur enemy mon + pop hl + jr .done +.calcFreshStats + pop hl + ld bc, wPartyMon1HPExp - 1 - wPartyMon1 + add hl, bc + ld b, $0 + call CalcStats ; calculate fresh set of stats +.done + scf + ret + +LoadMovePPs: ; f2f9 (3:72f9) + call GetPredefRegisters + ; fallthrough +AddPartyMon_WriteMovePP: ; f2fc (3:72fc) + ld b, NUM_MOVES +.pploop + ld a, [hli] ; read move ID + and a + jr z, .empty + dec a + push hl + push de + push bc + ld hl, Moves + ld bc, MoveEnd - Moves + call AddNTimes + ld de, wcd6d + ld a, BANK(Moves) + call FarCopyData + pop bc + pop de + pop hl + ld a, [wcd6d + 5] ; PP is byte 5 of move data +.empty + inc de + ld [de], a + dec b + jr nz, .pploop ; there are still moves to read + ret + _AddEnemyMonToPlayerParty: ; f323 (3:7323) dr $f323,$f3a4 Func_f3a4: ; f3a4 (3:73a4) - dr $f3a4,$f9de + dr $f3a4,$f4ef +FlagAction: ; f4ef (3:74ef) + dr $f4ef,$f9de PrintBookshelfText: ; f9de (3:79de) dr $f9de,$fad3 PokemonStuffText: ; fad3 (3:7ad3) @@ -1399,7 +2226,9 @@ TryEvolvingMon: EvolveTradeMon: ; 3adb8 (e:6db8) dr $3adb8,$3b10f Func_3b10f: ; 3b01f (e:710f) - dr $3b10f,$3c000 + dr $3b10f,$3b1e5 +Pointer_3b1e5: ; 3b1e5 (e:71e5) + dr $3b1e5,$3c000 SECTION "bank0F",ROMX,BANK[$0F] @@ -1552,7 +2381,7 @@ SECTION "bank18",ROMX,BANK[$18] SECTION "bank19",ROMX,BANK[$19] - +Overworld_GFX: dr $64000,$68000 @@ -1604,7 +2433,7 @@ VendingMachineMenu: ; 74726 (1d:4726) SECTION "bank1E",ROMX,BANK[$1E] dr $78000,$78757 -AnimationTileset2: ; 78757 (1e:4857) +AnimationTileset2: ; 78757 (1e:4757) dr $78757,$79816 HideSubstituteShowMonAnim: ; 79816 (1e:5816) dr $79816,$798b2 @@ -1613,7 +2442,11 @@ ReshowSubstituteAnim: ; 798b2 (1e:58b2) AnimationTransformMon: ; 798c8 (1e:58c8) dr $798c8,$798d4 ChangeMonPic: ; 798d4 (1e:58d4) - dr $798d4,$7a19a + dr $798d4,$7a037 +AnimCut: ; 7a037 (1e:6037) + dr $7a037,$7a0fb +AnimateBoulderDust: ; 7a0fb (1e:60fb) + dr $7a0fb,$7a19a RedFishingTilesFront: INCBIN "gfx/red_fishing_tile_front.2bpp" RedFishingTilesBack: INCBIN "gfx/red_fishing_tile_back.2bpp" @@ -1804,14 +2637,3 @@ YellowIntroGraphics: INCBIN "gfx/yellow_intro.2bpp" SECTION "bank3F",ROMX,BANK[$3F] INCLUDE "engine/bank3f/main.asm" - - -;IF DEF(_OPTION_BEACH_HOUSE) -;SECTION "bank3C",ROMX[$4314],BANK[$3C] -; -;BeachHouse_GFX: -; INCBIN "gfx/tilesets/beachhouse.2bpp" -; -;BeachHouse_Block: -; INCBIN "gfx/blocksets/beachhouse.bst" -;ENDC |