ref: 3ab8b1f4be65c2058919860d67f78e47a2dd9486
dir: /main.asm/
INCLUDE "constants.asm" ; the rst vectors are unused SECTION "rst00",HOME[0] db $FF SECTION "rst08",HOME[8] db $FF SECTION "rst10",HOME[$10] db $FF SECTION "rst18",HOME[$18] db $FF SECTION "rst20",HOME[$20] db $FF SECTION "rst28",HOME[$28] db $FF SECTION "rst30",HOME[$30] db $FF SECTION "rst38",HOME[$38] db $FF ; interrupts SECTION "vblank",HOME[$40] jp VBlankHandler SECTION "lcdc",HOME[$48] db $FF SECTION "timer",HOME[$50] jp $2306 SECTION "serial",HOME[$58] jp $2125 SECTION "joypad",HOME[$60] reti SECTION "bank0",HOME[$61] DisableLCD: ; $0061 xor a ld [$ff0f],a ld a,[$ffff] ld b,a res 0,a ld [$ffff],a .jr0\@ ld a,[$ff44] cp a,$91 jr nz,.jr0\@ ld a,[$ff40] and a,$7f ; res 7,a ld [$ff40],a ld a,b ld [$ffff],a ret EnableLCD: ; $007b ld a,[$ff40] set 7,a ld [$ff40],a ret CleanLCD_OAM: ; $0082 xor a ld hl,$c300 ld b,$a0 .jr0\@ ld [hli],a dec b jr nz,.jr0\@ ret ResetLCD_OAM: ; $008d ld a,$a0 ld hl,$c300 ld de,$0004 ld b,$28 .jr0\@ ld [hl],a add hl,de dec b jr nz,.jr0\@ ret FarCopyData: ; 009D ; copy bc bytes of data from a:hl to de ld [$CEE9],a ; save future bank # for later ld a,[$FFB8] ; get current bank # push af ld a,[$CEE9] ; get future bank #, switch ld [$FFB8],a ld [$2000],a call CopyData pop af ; okay, done, time to switch back ld [$FFB8],a ld [$2000],a ret CopyData: ; 00B5 ; copy bc bytes of data from hl to de ld a,[hli] ld [de],a inc de dec bc ld a,c or b jr nz,CopyData ret SECTION "romheader",HOME[$100] nop jp Start Section "start",HOME[$150] Start: ; 0x150 cp $11 ; value that indicates Gameboy Color jr z,.gbcDetected\@ xor a jr .storeValue\@ .gbcDetected\@ ld a,$00 .storeValue\@ ld [$cf1a],a ; same value ($00) either way jp InitGame ; this function directly reads the joypad I/O register ; it reads many times in order to give the joypad a chance to stabilize ; it saves a result in [$fff8] in the following format ; (set bit indicates pressed button) ; bit 0 - A button ; bit 1 - B button ; bit 2 - Select button ; bit 3 - Start button ; bit 4 - Right ; bit 5 - Left ; bit 6 - Up ; bit 7 - Down ReadJoypadRegister: ; 15F ld a,%00100000 ; select direction keys ld c,$00 ld [rJOYP],a ld a,[rJOYP] ld a,[rJOYP] ld a,[rJOYP] ld a,[rJOYP] ld a,[rJOYP] ld a,[rJOYP] cpl ; complement the result so that a set bit indicates a pressed key and a,%00001111 swap a ; put direction keys in upper nibble ld b,a ld a,%00010000 ; select button keys ld [rJOYP],a ld a,[rJOYP] ld a,[rJOYP] ld a,[rJOYP] ld a,[rJOYP] ld a,[rJOYP] ld a,[rJOYP] ld a,[rJOYP] ld a,[rJOYP] ld a,[rJOYP] ld a,[rJOYP] cpl ; complement the result so that a set bit indicates a pressed key and a,%00001111 or b ; put button keys in lower nibble ld [$fff8],a ; save joypad state ld a,%00110000 ; unselect all keys ld [rJOYP],a ret ; function to update the joypad state variables ; output: ; [$ffb2] = keys released since last time ; [$ffb3] = keys pressed since last time ; [$ffb4] = currently pressed keys GetJoypadState: ; 19A ld a, [$ffb8] push af ld a,$3 ld [$ffb8],a ld [$2000],a call $4000 pop af ld [$ff00+$b8],a ld [$2000],a ret ; see also MapHeaderBanks MapHeaderPointers: ; $01AE 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 MuseumF1_h dw MuseumF2_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 CeruleanHouse2_h dw CeruleanPokecenter_h dw CeruleanGym_h dw BikeShop_h dw CeruleanMart_h dw MtMoonPokecenter_h dw CeruleanHouseTrashed_h ; copy dw Route5Gate_h dw UndergroundTunnelEntranceRoute5_h dw DayCareM_h dw Route6Gate_h dw UndergroundTunnelEntranceRoute6_h dw UndergroundTunnelEntranceRoute6_h ; unused dw Route7Gate_h dw UndergroundPathEntranceRoute7_h dw $575d 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 CopycatsHouseF1_h dw CopycatsHouseF2_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 $563e dw Route16GateMap_h dw Route16GateUpstairs_h dw Route16House_h dw Route12House_h dw Route18Gate_h ;id=190 dw Route18GateHeader_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 CeruleanHouse3_h dw Route16GateMap_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 ; this function calls a function that takes necessary actions ; at the beginning of each overworld loop iteration as the player jumps ; down a ledge ; it also ends the jump when it's completed HandleMidJump: ; 39E ld b,$1c ld hl,$487e jp Bankswitch ; this is jumped to immediately after loading a save / starting a new game / loading a new map EnterMap: ; 3A6 ld a,$ff ld [$cd6b],a call LoadMapData ; load map data ld b,$03 ld hl,$4335 call Bankswitch ; initialize some variables ld hl,$d72c bit 0,[hl] jr z,.doNotCountSteps\@ ld a,$03 ld [$d13c],a ; some kind of step counter (counts up to 3 steps?) .doNotCountSteps\@ ld hl,$d72e bit 5,[hl] ; did a battle happen immediately before this? res 5,[hl] ; unset the "battle just happened" flag call z,$12e7 call nz,MapEntryAfterBattle ld hl,$d732 ld a,[hl] and a,$18 jr z,.didNotFlyOrTeleportIn\@ res 3,[hl] ld b,$1c ld hl,$4510 call Bankswitch ; display fly/teleport in graphical effect call $2429 ; move sprites .didNotFlyOrTeleportIn\@ ld b,$03 ld hl,$438b call Bankswitch ; handle currents in SF islands and forced bike riding in cycling road ld hl,$d72d res 5,[hl] call $2429 ; move sprites ld hl,$d126 set 5,[hl] set 6,[hl] xor a ld [$cd6b],a OverworldLoop: ; 3FF call DelayFrame OverworldLoopLessDelay: ; 402 call DelayFrame call LoadGBPal ld a,[$d736] bit 6,a ; jumping down a ledge? call nz, HandleMidJump ld a,[W_WALKCOUNTER] and a jp nz,.moveAhead\@ ; if the player sprite has not yet completed the walking animation call GetJoypadStateOverworld ; get joypad state (which is possibly simulated) ld b,$07 ld hl,$6988 call Bankswitch ld a,[$da46] and a jp nz,WarpFound2 ld hl,$d72d bit 3,[hl] res 3,[hl] jp nz,WarpFound2 ld a,[$d732] and a,$18 jp nz,HandleFlyOrTeleportAway ld a,[W_CUROPPONENT] and a jp nz,.newBattle\@ ld a,[$d730] bit 7,a ; are we simulating button presses? jr z,.notSimulating\@ ld a,[$ffb4] jr .checkIfStartIsPressed\@ .notSimulating\@ ld a,[$ffb3] .checkIfStartIsPressed\@ bit 3,a ; start button jr z,.startButtonNotPressed\@ ; if START is pressed xor a ld [$ff8c],a ; the $2920 ID for the start menu is 0 jp .displayDialogue\@ .startButtonNotPressed\@ bit 0,a ; A button jp z,.checkIfDownButtonIsPressed\@ ; if A is pressed ld a,[$d730] bit 2,a jp nz,.noDirectionButtonsPressed\@ call $30fd jr nz,.checkForOpponent\@ call $3eb5 ; check for hidden items, PC's, etc. ld a,[$ffeb] and a jp z,OverworldLoop call IsSpriteOrSignInFrontOfPlayer ; check for sign or sprite in front of the player ld a,[$ff8c] ; $2920 ID for NPC/sign text, if any and a jp z,OverworldLoop .displayDialogue\@ ld a,$35 call Predef ; check what is in front of the player call $2429 ; move sprites ld a,[$cd60] bit 2,a jr nz,.checkForOpponent\@ bit 0,a jr nz,.checkForOpponent\@ ld a,[$c45c] ld [$cf0e],a call $2920 ; display either the start menu or the NPC/sign text ld a,[$cc47] and a jr z,.checkForOpponent\@ dec a ld a,$00 ld [$cc47],a jr z,.changeMap\@ ld a,$52 call Predef ld a,[W_CURMAP] ld [$d71a],a call $62ce ld a,[W_CURMAP] call SwitchToMapRomBank ; switch to the ROM bank of the current map ld hl,$d367 set 7,[hl] .changeMap\@ jp EnterMap .checkForOpponent\@ ld a,[W_CUROPPONENT] and a jp nz,.newBattle\@ jp OverworldLoop .noDirectionButtonsPressed\@ ld hl,$cd60 res 2,[hl] call $2429 ; move sprites ld a,$01 ld [$cc4b],a ld a,[$d528] ; the direction that was pressed last time and a jp z,OverworldLoop ; if a direction was pressed last time ld [$d529],a ; save the last direction xor a ld [$d528],a ; zero the direction jp OverworldLoop .checkIfDownButtonIsPressed\@ ld a,[$ffb4] ; current joypad state bit 7,a ; down button jr z,.checkIfUpButtonIsPressed\@ ld a,$01 ld [$c103],a ld a,$04 jr .handleDirectionButtonPress\@ .checkIfUpButtonIsPressed\@ bit 6,a ; up button jr z,.checkIfLeftButtonIsPressed\@ ld a,$ff ld [$c103],a ld a,$08 jr .handleDirectionButtonPress\@ .checkIfLeftButtonIsPressed\@ bit 5,a ; left button jr z,.checkIfRightButtonIsPressed\@ ld a,$ff ld [$c105],a ld a,$02 jr .handleDirectionButtonPress\@ .checkIfRightButtonIsPressed\@ bit 4,a ; right button jr z,.noDirectionButtonsPressed\@ ld a,$01 ld [$c105],a .handleDirectionButtonPress\@ ld [$d52a],a ; new direction ld a,[$d730] bit 7,a ; are we simulating button presses? jr nz,.noDirectionChange\@ ; ignore direction changes if we are ld a,[$cc4b] and a jr z,.noDirectionChange\@ ld a,[$d52a] ; new direction ld b,a ld a,[$d529] ; old direction cp b jr z,.noDirectionChange\@ ; the code below is strange ; it computes whether or not the player did a 180 degree turn, but then overwrites the result ; also, it does a seemingly pointless loop afterwards swap a ; put old direction in upper half or b ; put new direction in lower half cp a,$48 ; change dir from down to up jr nz,.notDownToUp\@ ld a,$02 ld [$d528],a jr .oddLoop\@ .notDownToUp\@ cp a,$84 ; change dir from up to down jr nz,.notUpToDown\@ ld a,$01 ld [$d528],a jr .oddLoop\@ .notUpToDown\@ cp a,$12 ; change dir from right to left jr nz,.notRightToLeft\@ ld a,$04 ld [$d528],a jr .oddLoop\@ .notRightToLeft\@ cp a,$21 ; change dir from left to right jr nz,.oddLoop\@ ld a,$08 ld [$d528],a .oddLoop\@ ld hl,$cd60 set 2,[hl] ld hl,$cc4b dec [hl] jr nz,.oddLoop\@ ld a,[$d52a] ld [$d528],a call NewBattle jp c,.battleOccurred\@ jp OverworldLoop .noDirectionChange\@ ld a,[$d52a] ; current direction ld [$d528],a ; save direction call $2429 ; move sprites ld a,[$d700] cp a,$02 ; surfing jr z,.surfing\@ ; not surfing call CollisionCheckOnLand jr nc,.noCollision\@ push hl ld hl,$d736 bit 2,[hl] pop hl jp z,OverworldLoop push hl call ExtraWarpCheck ; sets carry if there is a potential to warp pop hl jp c,CheckWarpsCollision jp OverworldLoop .surfing\@ call CollisionCheckOnWater jp c,OverworldLoop .noCollision\@ ld a,$08 ld [W_WALKCOUNTER],a jr .moveAhead2\@ .moveAhead\@ ld a,[$d736] bit 7,a jr z,.noSpinning\@ ld b,$11 ld hl,$4fd7 call Bankswitch ; spin while moving .noSpinning\@ call $2429 ; move sprites .moveAhead2\@ ld hl,$cd60 res 2,[hl] ld a,[$d700] dec a ; riding a bike? jr nz,.normalPlayerSpriteAdvancement\@ ld a,[$d736] bit 6,a ; jumping a ledge? jr nz,.normalPlayerSpriteAdvancement\@ call BikeSpeedup ; if riding a bike and not jumping a ledge .normalPlayerSpriteAdvancement\@ call AdvancePlayerSprite ld a,[W_WALKCOUNTER] and a jp nz,CheckMapConnections ; it seems like this check will never succeed (the other place where CheckMapConnections is run works) ; walking animation finished ld a,[$d730] bit 7,a jr nz,.doneStepCounting\@ ; if button presses are being simulated, don't count steps ; step counting ld hl,$d13b ; step counter dec [hl] ld a,[$d72c] bit 0,a jr z,.doneStepCounting\@ ld hl,$d13c dec [hl] jr nz,.doneStepCounting\@ ld hl,$d72c res 0,[hl] .doneStepCounting\@ ld a,[$d790] bit 7,a ; in the safari zone? jr z,.notSafariZone\@ ld b,$07 ld hl,$6997 call Bankswitch ld a,[$da46] and a jp nz,WarpFound2 .notSafariZone\@ ld a,[W_ISINBATTLE] and a jp nz,CheckWarpsNoCollision ld a,$13 call Predef ; decrement HP of poisoned pokemon ld a,[$d12d] and a jp nz,HandleBlackOut ; if all pokemon fainted .newBattle\@ call NewBattle ld hl,$d736 res 2,[hl] jp nc,CheckWarpsNoCollision ; check for warps if there was no battle .battleOccurred\@ ld hl,$d72d res 6,[hl] ld hl,$d733 res 3,[hl] ld hl,$d126 set 5,[hl] set 6,[hl] xor a ld [$ffb4],a ; clear joypad state ld a,[W_CURMAP] cp a,CINNABAR_GYM jr nz,.notCinnabarGym\@ ld hl,$d79b set 7,[hl] .notCinnabarGym\@ ld hl,$d72e set 5,[hl] ld a,[W_CURMAP] cp a,OAKS_LAB jp z,.noFaintCheck\@ ld hl,$4a83 ld b,$0f call Bankswitch ; check if all the player's pokemon fainted ld a,d and a jr z,.allPokemonFainted\@ .noFaintCheck\@ ld c,$0a call DelayFrames jp EnterMap .allPokemonFainted\@ ld a,$ff ld [$d057],a call RunMapScript jp HandleBlackOut ; function to determine if there will be a battle and execute it (either a trainer battle or wild battle) ; sets carry if a battle occurred and unsets carry if not NewBattle: ; 683 ld a,[$d72d] bit 4,a jr nz,.noBattle\@ call $30fd jr nz,.noBattle\@ ld a,[$d72e] bit 4,a jr nz,.noBattle\@ ld b,$0f ld hl,$6f12 jp Bankswitch ; determines if a battle will occurr and runs the battle if so .noBattle\@ and a ret ; function to make bikes twice as fast as walking BikeSpeedup: ; 6A0 ld a,[$cc57] and a ret nz ld a,[W_CURMAP] cp a,ROUTE_17 ; Cycling Road jr nz,.goFaster\@ ld a,[$ffb4] ; current joypad state and a,%01110000 ; bit mask for up, left, right buttons ret nz .goFaster\@ jp AdvancePlayerSprite ; check if the player has stepped onto a warp after having not collided CheckWarpsNoCollision: ; 6B4 ld a,[$d3ae] ; number of warps and a jp z,CheckMapConnections ld a,[$d3ae] ; number of warps ld b,$00 ld c,a ld a,[W_YCOORD] ld d,a ld a,[W_XCOORD] ld e,a ld hl,$d3af ; start of warp entries CheckWarpsNoCollisionLoop: ; 6CC ld a,[hli] ; check if the warp's Y position matches cp d jr nz,CheckWarpsNoCollisionRetry1 ld a,[hli] ; check if the warp's X position matches cp e jr nz,CheckWarpsNoCollisionRetry2 ; if a match was found push hl push bc ld hl,$d736 set 2,[hl] ld b,$03 ld hl,$449d call Bankswitch ; check if the player sprite is standing on a "door" tile pop bc pop hl jr c,WarpFound1 ; if it is, go to 0735 push hl push bc call ExtraWarpCheck ; sets carry if the warp is confirmed pop bc pop hl jr nc,CheckWarpsNoCollisionRetry2 ; if the extra check passed ld a,[$d733] bit 2,a jr nz,WarpFound1 push de push bc call GetJoypadState pop bc pop de ld a,[$ffb4] ; current joypad state and a,%11110000 ; bit mask for directional buttons jr z,CheckWarpsNoCollisionRetry2 ; if directional buttons aren't being pressed, do not pass through the warp jr WarpFound1 ; check if the player has stepped onto a warp after having collided CheckWarpsCollision: ; 706 ld a,[$d3ae] ; number of warps ld c,a ld hl,$d3af ; start of warp entries .loop\@ ld a,[hli] ; Y coordinate of warp ld b,a ld a,[W_YCOORD] cp b jr nz,.retry1\@ ld a,[hli] ; X coordinate of warp ld b,a ld a,[W_XCOORD] cp b jr nz,.retry2\@ ld a,[hli] ld [$d42f],a ; save target warp ID ld a,[hl] ld [$ff8b],a ; save target map jr WarpFound2 .retry1\@ inc hl .retry2\@ inc hl inc hl dec c jr nz,.loop\@ jp OverworldLoop CheckWarpsNoCollisionRetry1: ; 72F inc hl CheckWarpsNoCollisionRetry2: ; 730 inc hl inc hl jp ContinueCheckWarpsNoCollisionLoop WarpFound1: ; 735 ld a,[hli] ld [$d42f],a ; save target warp ID ld a,[hli] ld [$ff8b],a ; save target map WarpFound2: ; 73C ld a,[$d3ae] ; number of warps sub c ld [$d73b],a ; save ID of used warp ld a,[W_CURMAP] ld [$d73c],a call CheckIfInOutsideMap ; check if the tileset number is 0 or the map is Route 12 jr nz,.indoorMaps\@ ; this is for handling "outside" maps that can't have the 0xFF destination map ld a,[W_CURMAP] ld [$d365],a ; save current map as previous map ld a,[W_CURMAPWIDTH] ld [$d366],a ld a,[$ff8b] ; destination map number ld [W_CURMAP],a ; change current map to destination map cp a,ROCK_TUNNEL_1 jr nz,.notRockTunnel\@ ld a,$06 ld [$d35d],a call GBFadeIn1 .notRockTunnel\@ call PlayMapChangeSound jr .done\@ ; for maps that can have the 0xFF destination map, which means to return to the outside map; not all these maps are necessarily indoors, though .indoorMaps\@ ld a,[$ff8b] ; destination map cp a,$ff jr z,.goBackOutside\@ ; if not going back to the previous map ld [W_CURMAP],a ; current map number ld b,$1c ld hl,$4787 call Bankswitch ; check if the warp was a Silph Co. teleporter ld a,[$cd5b] dec a jr nz,.notTeleporter\@ ; if it's a Silph Co. teleporter ld hl,$d732 set 3,[hl] call DoFlyOrTeleportAwayGraphics jr .skipMapChangeSound\@ .notTeleporter\@ call PlayMapChangeSound .skipMapChangeSound\@ ld hl,$d736 res 0,[hl] res 1,[hl] jr .done\@ .goBackOutside\@ ld a,[$d365] ; previous map ld [W_CURMAP],a call PlayMapChangeSound xor a ld [$d35d],a .done\@ ld hl,$d736 set 0,[hl] call $12da jp EnterMap ContinueCheckWarpsNoCollisionLoop: ; 7B5 inc b ; increment warp number dec c ; decrement number of warps jp nz,CheckWarpsNoCollisionLoop ; if no matching warp was found CheckMapConnections: ; 7BA .checkWestMap\@ ld a,[W_XCOORD] cp a,$ff jr nz,.checkEastMap\@ ld a,[$d387] ld [W_CURMAP],a ld a,[$d38f] ; new X coordinate upon entering west map ld [W_XCOORD],a ld a,[W_YCOORD] ld c,a ld a,[$d38e] ; Y adjustment upon entering west map add c ld c,a ld [W_YCOORD],a ld a,[$d390] ; pointer to upper left corner of map without adjustment for Y position ld l,a ld a,[$d391] ld h,a srl c jr z,.savePointer1\@ .pointerAdjustmentLoop1\@ ld a,[$d38d] ; width of connected map add a,$06 ld e,a ld d,$00 ld b,$00 add hl,de dec c jr nz,.pointerAdjustmentLoop1\@ .savePointer1\@ ld a,l ld [$d35f],a ; pointer to upper left corner of current tile block map section ld a,h ld [$d360],a jp .loadNewMap\@ .checkEastMap\@ ld b,a ld a,[$d525] ; map width cp b jr nz,.checkNorthMap\@ ld a,[$d392] ld [W_CURMAP],a ld a,[$d39a] ; new X coordinate upon entering east map ld [W_XCOORD],a ld a,[W_YCOORD] ld c,a ld a,[$d399] ; Y adjustment upon entering east map add c ld c,a ld [W_YCOORD],a ld a,[$d39b] ; pointer to upper left corner of map without adjustment for Y position ld l,a ld a,[$d39c] ld h,a srl c jr z,.savePointer2\@ .pointerAdjustmentLoop2\@ ld a,[$d398] add a,$06 ld e,a ld d,$00 ld b,$00 add hl,de dec c jr nz,.pointerAdjustmentLoop2\@ .savePointer2\@ ld a,l ld [$d35f],a ; pointer to upper left corner of current tile block map section ld a,h ld [$d360],a jp .loadNewMap\@ .checkNorthMap\@ ld a,[W_YCOORD] cp a,$ff jr nz,.checkSouthMap\@ ld a,[$d371] ld [W_CURMAP],a ld a,[$d378] ; new Y coordinate upon entering north map ld [W_YCOORD],a ld a,[W_XCOORD] ld c,a ld a,[$d379] ; X adjustment upon entering north map add c ld c,a ld [W_XCOORD],a ld a,[$d37a] ; pointer to upper left corner of map without adjustment for X position ld l,a ld a,[$d37b] ld h,a ld b,$00 srl c add hl,bc ld a,l ld [$d35f],a ; pointer to upper left corner of current tile block map section ld a,h ld [$d360],a jp .loadNewMap\@ .checkSouthMap\@ ld b,a ld a,[$d524] cp b jr nz,.didNotEnterConnectedMap\@ ld a,[$d37c] ld [W_CURMAP],a ld a,[$d383] ; new Y coordinate upon entering south map ld [W_YCOORD],a ld a,[W_XCOORD] ld c,a ld a,[$d384] ; X adjustment upon entering south map add c ld c,a ld [W_XCOORD],a ld a,[$d385] ; pointer to upper left corner of map without adjustment for X position ld l,a ld a,[$d386] ld h,a ld b,$00 srl c add hl,bc ld a,l ld [$d35f],a ; pointer to upper left corner of current tile block map section ld a,h ld [$d360],a .loadNewMap\@ ; load the connected map that was entered call LoadMapHeader call $2312 ; music ld b,$09 call GoPAL_SET ; Since the sprite set shouldn't change, this will just update VRAM slots at ; $C2XE without loading any tile patterns. ld b,BANK(InitMapSprites) ld hl,InitMapSprites call Bankswitch call LoadTileBlockMap jp OverworldLoopLessDelay .didNotEnterConnectedMap\@ jp OverworldLoop ; function to play a sound when changing maps PlayMapChangeSound: ; 8c9 ld a,[$c448] ; upper left tile of the 4x4 square the player's sprite is standing on cp a,$0b ; door tile in tileset 0 jr nz,.didNotGoThroughDoor\@ ld a,$ad jr .playSound\@ .didNotGoThroughDoor\@ ld a,$b5 .playSound\@ call $23b1 ld a,[$d35d] and a ret nz jp GBFadeIn1 ; function to set the Z flag if the tileset number is 0 or the map is Route 12 ; strangely, Route 12 has tileset 0, so the check is redundant CheckIfInOutsideMap: ; 8E1 ld a,[W_CURMAPTILESET] and a ret z cp a,ROUTE_12 ret ; this function is an extra check that sometimes has to pass in order to warp, beyond just standing on a warp ; the "sometimes" qualification is necessary because of CheckWarpsNoCollision's behavior ; depending on the map, either "function 1" or "function 2" is used for the check ; "function 1" passes when the player is at the edge of the map and is facing towards the outside of the map ; "function 2" passes when the the tile in front of the player is among a certain set ; sets carry if the check passes, otherwise clears carry ExtraWarpCheck: ; 8E9 ld a,[W_CURMAP] cp a,SS_ANNE_3 jr z,.useFunction1\@ cp a,ROCKET_HIDEOUT_1 jr z,.useFunction2\@ cp a,ROCKET_HIDEOUT_2 jr z,.useFunction2\@ cp a,ROCKET_HIDEOUT_4 jr z,.useFunction2\@ cp a,ROCK_TUNNEL_1 jr z,.useFunction2\@ ld a,[W_CURMAPTILESET] and a ; outside tileset jr z,.useFunction2\@ cp a,$0d ; S.S. Anne tileset jr z,.useFunction2\@ cp a,$0e ; Vermilion Port tileset jr z,.useFunction2\@ cp a,$17 ; Indigo Plateau tileset jr z,.useFunction2\@ .useFunction1\@ ld hl,$43ff jr .doBankswitch\@ .useFunction2\@ ld hl,$444e .doBankswitch\@ ld b,$03 jp Bankswitch MapEntryAfterBattle: ; 91F ld b,$03 ld hl,$435f call Bankswitch ; function that appears to disable warp testing after collisions if the player is standing on a warp ld a,[$d35d] and a jp z,GBFadeIn2 jp LoadGBPal ; for when all the player's pokemon faint ; other code prints the "you blacked out" message before this is called HandleBlackOut: ; 931 call GBFadeIn1 ld a,$08 call StopMusic ld hl,$d72e res 5,[hl] ld a,$01 ld [$ffb8],a ld [$2000],a call $40b0 call $62ce call $2312 jp $5d5f StopMusic: ; 951 ld [$cfc7],a ld a,$ff ld [$c0ee],a call $23b1 .waitLoop\@ ld a,[$cfc7] and a jr nz,.waitLoop\@ jp $200e HandleFlyOrTeleportAway: ; 965 call $2429 ; move sprites call $3dd7 xor a ld [$cf0b],a ld [$d700],a ld [$d057],a ld [$d35d],a ld hl,$d732 set 2,[hl] res 5,[hl] call DoFlyOrTeleportAwayGraphics ld a,$01 ld [$ffb8],a ld [$2000],a call $62ce jp $5d5f ; function that calls a function to do fly away or teleport away graphics DoFlyOrTeleportAwayGraphics: ; 98F ld b,$1c ld hl,$45ba jp Bankswitch ; load sprite graphics based on whether the player is standing, biking, or surfing LoadPlayerSpriteGraphics: ; 997 ld a,[$d700] dec a jr z,.ridingBike\@ ld a,[$ffd7] and a jr nz,.determineGraphics\@ jr .startWalking\@ .ridingBike\@ call IsBikeRidingAllowed jr c,.determineGraphics\@ ; don't start walking if bike riding is allowed .startWalking\@ xor a ld [$d700],a ld [$d11a],a jp LoadWalkingPlayerSpriteGraphics .determineGraphics\@ ld a,[$d700] and a jp z,LoadWalkingPlayerSpriteGraphics dec a jp z,LoadBikePlayerSpriteGraphics dec a jp z,LoadSurfingPlayerSpriteGraphics jp LoadWalkingPlayerSpriteGraphics ; function to check if bike riding is allowed on the current map ; sets carry if bike is allowed, clears carry otherwise IsBikeRidingAllowed: ; 9c5 ld a,[W_CURMAP] cp a,ROUTE_23 jr z,.allowed\@ cp a,INDIGO_PLATEAU jr z,.allowed\@ ld a,[W_CURMAPTILESET] ld b,a ld hl,BikeRidingTilesets .loop\@ ld a,[hli] cp b jr z,.allowed\@ inc a jr nz,.loop\@ and a ret .allowed\@ scf ret BikeRidingTilesets: ; 9E2 db $00, $03, $0B, $0E, $11, $FF ; load the tile pattern data of the current tileset into VRAM LoadTilesetTilePatternData: ; 9E8 ld a,[$d52e] ld l,a ld a,[$d52f] ld h,a ld de,$9000 ld bc,$0600 ld a,[$d52b] jp FarCopyData2 ; this loads the current maps complete tile map (which references blocks, not individual tiles) to C6E8 ; it can also load partial tile maps of connected maps into a border of length 3 around the current map LoadTileBlockMap: ; 9FC ; fill C6E8-CBFB with the background tile ld hl,$c6e8 ld a,[$d3ad] ; background tile number ld d,a ld bc,$0514 .backgroundTileLoop\@ ld a,d ld [hli],a dec bc ld a,c or b jr nz,.backgroundTileLoop\@ ; load tile map of current map (made of tile block IDs) ; a 3-byte border at the edges of the map is kept so that there is space for map connections ld hl,$c6e8 ld a,[W_CURMAPWIDTH] ld [$ff8c],a add a,$06 ; border (east and west) ld [$ff8b],a ; map width + border ld b,$00 ld c,a ; make space for north border (next 3 lines) add hl,bc add hl,bc add hl,bc ld c,$03 add hl,bc ; this puts us past the (west) border ld a,[$d36a] ; tile map pointer ld e,a ld a,[$d36b] ld d,a ; de = tile map pointer ld a,[W_CURMAPHEIGHT] ld b,a .rowLoop\@ ; copy one row each iteration push hl ld a,[$ff8c] ; map width (without border) ld c,a .rowInnerLoop\@ ld a,[de] inc de ld [hli],a dec c jr nz,.rowInnerLoop\@ ; add the map width plus the border to the base address of the current row to get the next row's address pop hl ld a,[$ff8b] ; map width + border add l ld l,a jr nc,.noCarry\@ inc h .noCarry\@ dec b jr nz,.rowLoop\@ .northConnection\@ ld a,[$d371] cp a,$ff jr z,.southConnection\@ call SwitchToMapRomBank ld a,[$d372] ld l,a ld a,[$d373] ld h,a ld a,[$d374] ld e,a ld a,[$d375] ld d,a ld a,[$d376] ld [$ff8b],a ld a,[$d377] ld [$ff8c],a call LoadNorthSouthConnectionsTileMap .southConnection\@ ld a,[$d37c] cp a,$ff jr z,.westConnection\@ call SwitchToMapRomBank ld a,[$d37d] ld l,a ld a,[$d37e] ld h,a ld a,[$d37f] ld e,a ld a,[$d380] ld d,a ld a,[$d381] ld [$ff8b],a ld a,[$d382] ld [$ff8c],a call LoadNorthSouthConnectionsTileMap .westConnection\@ ld a,[$d387] cp a,$ff jr z,.eastConnection\@ call SwitchToMapRomBank ld a,[$d388] ld l,a ld a,[$d389] ld h,a ld a,[$d38a] ld e,a ld a,[$d38b] ld d,a ld a,[$d38c] ld b,a ld a,[$d38d] ld [$ff8b],a call LoadEastWestConnectionsTileMap .eastConnection\@ ld a,[$d392] cp a,$ff jr z,.done\@ call SwitchToMapRomBank ld a,[$d393] ld l,a ld a,[$d394] ld h,a ld a,[$d395] ld e,a ld a,[$d396] ld d,a ld a,[$d397] ld b,a ld a,[$d398] ld [$ff8b],a call LoadEastWestConnectionsTileMap .done\@ ret LoadNorthSouthConnectionsTileMap: ; ADE ld c,$03 .loop\@ push de push hl ld a,[$ff8b] ; width of connection ld b,a .innerLoop\@ ld a,[hli] ld [de],a inc de dec b jr nz,.innerLoop\@ pop hl pop de ld a,[$ff8c] ; width of connected map add l ld l,a jr nc,.noCarry1\@ inc h .noCarry1\@ ld a,[W_CURMAPWIDTH] add a,$06 add e ld e,a jr nc,.noCarry2\@ inc d .noCarry2\@ dec c jr nz,.loop\@ ret LoadEastWestConnectionsTileMap: ; B02 push hl push de ld c,$03 .innerLoop\@ ld a,[hli] ld [de],a inc de dec c jr nz,.innerLoop\@ pop de pop hl ld a,[$ff8b] ; width of connected map add l ld l,a jr nc,.noCarry1\@ inc h .noCarry1\@ ld a,[W_CURMAPWIDTH] add a,$06 add e ld e,a jr nc,.noCarry2\@ inc d .noCarry2\@ dec b jr nz,LoadEastWestConnectionsTileMap ret ; function to check if there is a sign or sprite in front of the player ; if so, it is stored in [$FF8C] ; if not, [$FF8C] is set to 0 IsSpriteOrSignInFrontOfPlayer: ; B23 xor a ld [$ff8c],a ld a,[$d4b0] ; number of signs in the map and a jr z,.extendRangeOverCounter\@ ; if there are signs ld a,$35 call Predef ; get the coordinates in front of the player in de ld hl,$d4b1 ; start of sign coordinates ld a,[$d4b0] ; number of signs in the map ld b,a ld c,$00 .signLoop\@ inc c ld a,[hli] ; sign Y cp d jr z,.yCoordMatched\@ inc hl jr .retry\@ .yCoordMatched\@ ld a,[hli] ; sign X cp e jr nz,.retry\@ .xCoordMatched\@ ; found sign push hl push bc ld hl,$d4d1 ; start of sign text ID's ld b,$00 dec c add hl,bc ld a,[hl] ld [$ff8c],a ; store sign text ID pop bc pop hl ret .retry\@ dec b jr nz,.signLoop\@ ; check if the player is front of a counter in a pokemon center, pokemart, etc. and if so, extend the range at which he can talk to the NPC .extendRangeOverCounter\@ ld a,$35 call Predef ; get the tile in front of the player in c ld hl,$d532 ; list of tiles that extend talking range (counter tiles) ld b,$03 ld d,$20 ; talking range in pixels (long range) .counterTilesLoop\@ ld a,[hli] cp c jr z,IsSpriteInFrontOfPlayer2 ; jumps if the tile in front of the player is a counter tile dec b jr nz,.counterTilesLoop\@ ; part of the above function, but sometimes its called on its own, when signs are irrelevant ; the caller must zero [$FF8C] IsSpriteInFrontOfPlayer: ; B6B ld d,$10 ; talking range in pixels (normal range) IsSpriteInFrontOfPlayer2: ; B6D ld bc,$3c40 ; Y and X position of player sprite ld a,[$c109] ; direction the player is facing .checkIfPlayerFacingUp\@ cp a,$04 jr nz,.checkIfPlayerFacingDown\@ ; facing up ld a,b sub d ld b,a ld a,$08 jr .doneCheckingDirection\@ .checkIfPlayerFacingDown\@ cp a,$00 jr nz,.checkIfPlayerFacingRight\@ ; facing down ld a,b add d ld b,a ld a,$04 jr .doneCheckingDirection\@ .checkIfPlayerFacingRight\@ cp a,$0c jr nz,.playerFacingLeft\@ ; facing right ld a,c add d ld c,a ld a,$01 jr .doneCheckingDirection\@ .playerFacingLeft\@ ; facing left ld a,c sub d ld c,a ld a,$02 .doneCheckingDirection\@ ld [$d52a],a ld a,[$d4e1] ; number of sprites and a ret z ; if there are sprites ld hl,$c110 ld d,a ld e,$01 .spriteLoop\@ push hl ld a,[hli] ; image (0 if no sprite) and a jr z,.nextSprite\@ inc l ld a,[hli] ; sprite visibility inc a jr z,.nextSprite\@ inc l ld a,[hli] ; Y location cp b jr nz,.nextSprite\@ inc l ld a,[hl] ; X location cp c jr z,.foundSpriteInFrontOfPlayer\@ .nextSprite\@ pop hl ld a,l add a,$10 ld l,a inc e dec d jr nz,.spriteLoop\@ ret .foundSpriteInFrontOfPlayer\@ pop hl ld a,l and a,$f0 inc a ld l,a set 7,[hl] ld a,e ld [$ff8c],a ; store sprite ID ret ; function to check if the player will jump down a ledge and check if the tile ahead is passable (when not surfing) ; sets the carry flag if there is a collision, and unsets it if there isn't a collision CollisionCheckOnLand: ; BD1 ld a,[$d736] bit 6,a ; is the player jumping? jr nz,.noCollision\@ ; if not jumping a ledge ld a,[$cd38] and a jr nz,.noCollision\@ ld a,[$d52a] ; the direction that the player is trying to go in ld d,a ld a,[$c10c] ; the player sprite's collision data (bit field) (set in the sprite movement code) and d ; check if a sprite is in the direction the player is trying to go jr nz,.collision\@ xor a ld [$ff8c],a call IsSpriteInFrontOfPlayer ; check for sprite collisions again? when does the above check fail to detect a sprite collision? ld a,[$ff8c] and a ; was there a sprite collision? jr nz,.collision\@ ; if no sprite collision ld hl,TilePairCollisionsLand call CheckForJumpingAndTilePairCollisions jr c,.collision\@ call CheckTilePassable jr nc,.noCollision\@ .collision\@ ld a,[$c02a] cp a,$b4 ; check if collision sound is already playing jr z,.setCarry\@ ld a,$b4 call $23b1 ; play collision sound (if it's not already playing) .setCarry\@ scf ret .noCollision\@ and a ret ; function that checks if the tile in front of the player is passable ; clears carry if it is, sets carry if not CheckTilePassable: ; C10 ld a,$35 call Predef ; get tile in front of player ld a,[$cfc6] ; tile in front of player ld c,a ld hl,$d530 ; pointer to list of passable tiles ld a,[hli] ld h,[hl] ld l,a ; hl now points to passable tiles .loop\@ ld a,[hli] cp a,$ff jr z,.tileNotPassable\@ cp c ret z jr .loop\@ .tileNotPassable\@ scf ret ; check if the player is going to jump down a small ledge ; and check for collisions that only occur between certain pairs of tiles ; Input: hl - address of directional collision data ; sets carry if there is a collision and unsets carry if not CheckForJumpingAndTilePairCollisions: ; C2A push hl ld a,$35 call Predef ; get the tile in front of the player push de push bc ld b,$06 ld hl,$6672 call Bankswitch ; check if the player is trying to jump a ledge pop bc pop de pop hl and a ld a,[$d736] bit 6,a ; is the player jumping? ret nz ; if not jumping ld a,[$c45c] ; tile the player is on ld [$cf0e],a CheckForTilePairCollisions: ; C4A ld a,[$cfc6] ; tile in front of the player ld c,a .tilePairCollisionLoop\@ ld a,[W_CURMAPTILESET] ; tileset number ld b,a ld a,[hli] cp a,$ff jr z,.noMatch\@ cp b jr z,.tilesetMatches\@ inc hl .retry\@ inc hl jr .tilePairCollisionLoop\@ .tilesetMatches\@ ld a,[$cf0e] ; tile the player is on ld b,a ld a,[hl] cp b jr z,.currentTileMatchesFirstInPair\@ inc hl ld a,[hl] cp b jr z,.currentTileMatchesSecondInPair\@ jr .retry\@ .currentTileMatchesFirstInPair\@ inc hl ld a,[hl] cp c jr z,.foundMatch\@ jr .tilePairCollisionLoop\@ .currentTileMatchesSecondInPair\@ dec hl ld a,[hli] cp c inc hl jr nz,.tilePairCollisionLoop\@ .foundMatch\@ scf ret .noMatch\@ and a ret ; FORMAT: tileset number, tile 1, tile 2 ; terminated by 0xFF ; these entries indicate that the player may not cross between tile 1 and tile 2 ; it's mainly used to simulate differences in elevation TilePairCollisionsLand: ; C7E db $11, $20, $05; db $11, $41, $05; db $03, $30, $2E; db $11, $2A, $05; db $11, $05, $21; db $03, $52, $2E; db $03, $55, $2E; db $03, $56, $2E; db $03, $20, $2E; db $03, $5E, $2E; db $03, $5F, $2E; db $FF; TilePairCollisionsWater: ; CA0 db $03, $14, $2E; db $03, $48, $2E; db $11, $14, $05; db $FF; ; this builds a tile map from the tile block map based on the current X/Y coordinates of the player's character LoadCurrentMapView: ; CAA ld a,[$ffb8] push af ld a,[$d52b] ; tile data ROM bank ld [$ffb8],a ld [$2000],a ; switch to ROM bank that contains tile data ld a,[$d35f] ; address of upper left corner of current map view ld e,a ld a,[$d360] ld d,a ld hl,$c508 ld b,$05 .rowLoop\@ ; each loop iteration fills in one row of tile blocks push hl push de ld c,$06 .rowInnerLoop\@ ; loop to draw each tile block of the current row push bc push de push hl ld a,[de] ld c,a ; tile block number call DrawTileBlock pop hl pop de pop bc inc hl inc hl inc hl inc hl inc de dec c jr nz,.rowInnerLoop\@ ; update tile block map pointer to next row's address pop de ld a,[W_CURMAPWIDTH] add a,$06 add e ld e,a jr nc,.noCarry\@ inc d .noCarry\@ ; update tile map pointer to next row's address pop hl ld a,$60 add l ld l,a jr nc,.noCarry2\@ inc h .noCarry2\@ dec b jr nz,.rowLoop\@ ld hl,$c508 ld bc,$0000 .adjustForYCoordWithinTileBlock\@ ld a,[W_YBLOCKCOORD] and a jr z,.adjustForXCoordWithinTileBlock\@ ld bc,$0030 add hl,bc .adjustForXCoordWithinTileBlock\@ ld a,[W_XBLOCKCOORD] and a jr z,.copyToVisibleAreaBuffer\@ ld bc,$0002 add hl,bc .copyToVisibleAreaBuffer\@ ld de,$c3a0 ; base address for the tiles that are directly transfered to VRAM during V-blank ld b,$12 .rowLoop2\@ ld c,$14 .rowInnerLoop2\@ ld a,[hli] ld [de],a inc de dec c jr nz,.rowInnerLoop2\@ ld a,$04 add l ld l,a jr nc,.noCarry3\@ inc h .noCarry3\@ dec b jr nz,.rowLoop2\@ pop af ld [$ffb8],a ld [$2000],a ; restore previous ROM bank ret AdvancePlayerSprite: ; D27 ld a,[$c103] ; delta Y ld b,a ld a,[$c105] ; delta X ld c,a ld hl,W_WALKCOUNTER ; walking animation counter dec [hl] jr nz,.afterUpdateMapCoords\@ ; if it's the end of the animation, update the player's map coordinates ld a,[W_YCOORD] add b ld [W_YCOORD],a ld a,[W_XCOORD] add c ld [W_XCOORD],a .afterUpdateMapCoords\@ ld a,[W_WALKCOUNTER] ; walking animation counter cp a,$07 jp nz,.scrollBackgroundAndSprites\@ ; if this is the first iteration of the animation ld a,c cp a,$01 jr nz,.checkIfMovingWest\@ ; moving east ld a,[$d526] ld e,a and a,$e0 ld d,a ld a,e add a,$02 and a,$1f or d ld [$d526],a jr .adjustXCoordWithinBlock\@ .checkIfMovingWest\@ cp a,$ff jr nz,.checkIfMovingSouth\@ ; moving west ld a,[$d526] ld e,a and a,$e0 ld d,a ld a,e sub a,$02 and a,$1f or d ld [$d526],a jr .adjustXCoordWithinBlock\@ .checkIfMovingSouth\@ ld a,b cp a,$01 jr nz,.checkIfMovingNorth\@ ; moving south ld a,[$d526] add a,$40 ld [$d526],a jr nc,.adjustXCoordWithinBlock\@ ld a,[$d527] inc a and a,$03 or a,$98 ld [$d527],a jr .adjustXCoordWithinBlock\@ .checkIfMovingNorth\@ cp a,$ff jr nz,.adjustXCoordWithinBlock\@ ; moving north ld a,[$d526] sub a,$40 ld [$d526],a jr nc,.adjustXCoordWithinBlock\@ ld a,[$d527] dec a and a,$03 or a,$98 ld [$d527],a .adjustXCoordWithinBlock\@ ld a,c and a jr z,.pointlessJump\@ ; mistake? .pointlessJump\@ ld hl,W_XBLOCKCOORD ld a,[hl] add c ld [hl],a cp a,$02 jr nz,.checkForMoveToWestBlock\@ ; moved into the tile block to the east xor a ld [hl],a ld hl,$d4e3 inc [hl] ld de,$d35f call MoveTileBlockMapPointerEast jr .updateMapView\@ .checkForMoveToWestBlock\@ cp a,$ff jr nz,.adjustYCoordWithinBlock\@ ; moved into the tile block to the west ld a,$01 ld [hl],a ld hl,$d4e3 dec [hl] ld de,$d35f call MoveTileBlockMapPointerWest jr .updateMapView\@ .adjustYCoordWithinBlock\@ ld hl,W_YBLOCKCOORD ld a,[hl] add b ld [hl],a cp a,$02 jr nz,.checkForMoveToNorthBlock\@ ; moved into the tile block to the south xor a ld [hl],a ld hl,$d4e2 inc [hl] ld de,$d35f ld a,[W_CURMAPWIDTH] call MoveTileBlockMapPointerSouth jr .updateMapView\@ .checkForMoveToNorthBlock\@ cp a,$ff jr nz,.updateMapView\@ ; moved into the tile block to the north ld a,$01 ld [hl],a ld hl,$d4e2 dec [hl] ld de,$d35f ld a,[W_CURMAPWIDTH] call MoveTileBlockMapPointerNorth .updateMapView\@ call LoadCurrentMapView ld a,[$c103] ; delta Y cp a,$01 jr nz,.checkIfMovingNorth2\@ ; if moving south call ScheduleSouthRowRedraw jr .scrollBackgroundAndSprites\@ .checkIfMovingNorth2\@ cp a,$ff jr nz,.checkIfMovingEast2\@ ; if moving north call ScheduleNorthRowRedraw jr .scrollBackgroundAndSprites\@ .checkIfMovingEast2\@ ld a,[$c105] ; delta X cp a,$01 jr nz,.checkIfMovingWest2\@ ; if moving east call ScheduleEastColumnRedraw jr .scrollBackgroundAndSprites\@ .checkIfMovingWest2\@ cp a,$ff jr nz,.scrollBackgroundAndSprites\@ ; if moving west call ScheduleWestColumnRedraw .scrollBackgroundAndSprites\@ ld a,[$c103] ; delta Y ld b,a ld a,[$c105] ; delta X ld c,a sla b sla c ld a,[$ffaf] add b ld [$ffaf],a ; update background scroll Y ld a,[$ffae] add c ld [$ffae],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,$c114 ld a,[$d4e1] ; number of sprites and a ; are there any sprites? jr z,.done\@ ld e,a .spriteShiftLoop\@ ld a,[hl] sub b ld [hli],a inc l ld a,[hl] sub c ld [hl],a ld a,$0e add l ld l,a dec e jr nz,.spriteShiftLoop\@ .done\@ ret ; the following four functions are used to move the pointer to the upper left ; corner of the tile block map in the direction of motion MoveTileBlockMapPointerEast: ; E65 ld a,[de] add a,$01 ld [de],a ret nc inc de ld a,[de] inc a ld [de],a ret MoveTileBlockMapPointerWest: ; E6F ld a,[de] sub a,$01 ld [de],a ret nc inc de ld a,[de] dec a ld [de],a ret MoveTileBlockMapPointerSouth: ; E79 add a,$06 ld b,a ld a,[de] add b ld [de],a ret nc inc de ld a,[de] inc a ld [de],a ret MoveTileBlockMapPointerNorth: ; E85 add a,$06 ld b,a ld a,[de] sub b ld [de],a ret nc inc de ld a,[de] dec a ld [de],a ret ; the following 6 functions are used to tell the V-blank handler to redraw ; the portion of the map that was newly exposed due to the player's movement ScheduleNorthRowRedraw: ; E91 FuncCoord 0, 0 ld hl,Coord call ScheduleRowRedrawHelper ld a,[$d526] ld [H_SCREENEDGEREDRAWADDR],a ld a,[$d527] ld [H_SCREENEDGEREDRAWADDR + 1],a ld a,REDRAWROW ld [H_SCREENEDGEREDRAW],a ret ScheduleRowRedrawHelper: ; EA6 ld de,W_SCREENEDGETILES ld c,$28 .loop\@ ld a,[hli] ld [de],a inc de dec c jr nz,.loop\@ ret ScheduleSouthRowRedraw: ; EB2 FuncCoord 0,16 ld hl,Coord call ScheduleRowRedrawHelper ld a,[$d526] ld l,a ld a,[$d527] ld h,a ld bc,$0200 add hl,bc ld a,h and a,$03 or a,$98 ld [H_SCREENEDGEREDRAWADDR + 1],a ld a,l ld [H_SCREENEDGEREDRAWADDR],a ld a,REDRAWROW ld [H_SCREENEDGEREDRAW],a ret ScheduleEastColumnRedraw: ; ED3 FuncCoord 18,0 ld hl,Coord call ScheduleColumnRedrawHelper ld a,[$d526] ld c,a and a,$e0 ld b,a ld a,c add a,18 and a,$1f or b ld [H_SCREENEDGEREDRAWADDR],a ld a,[$d527] ld [H_SCREENEDGEREDRAWADDR + 1],a ld a,REDRAWCOL ld [H_SCREENEDGEREDRAW],a ret ScheduleColumnRedrawHelper: ; EF2 ld de,W_SCREENEDGETILES ld c,$12 .loop\@ ld a,[hli] ld [de],a inc de ld a,[hl] ld [de],a inc de ld a,19 add l ld l,a jr nc,.noCarry\@ inc h .noCarry\@ dec c jr nz,.loop\@ ret ScheduleWestColumnRedraw: ; F08 FuncCoord 0,0 ld hl,Coord call ScheduleColumnRedrawHelper ld a,[$d526] ld [H_SCREENEDGEREDRAWADDR],a ld a,[$d527] ld [H_SCREENEDGEREDRAWADDR + 1],a ld a,REDRAWCOL ld [H_SCREENEDGEREDRAW],a ret ; function to write the tiles that make up a tile block to memory ; Input: c = tile block ID, hl = destination address DrawTileBlock: ; F1D push hl ld a,[$d52c] ; pointer to tiles ld l,a ld a,[$d52d] ld h,a ld a,c swap a ld b,a and a,$f0 ld c,a ld a,b and a,$0f ld b,a ; bc = tile block ID * 0x10 add hl,bc ld d,h ld e,l ; de = address of the tile block's tiles pop hl ld c,$04 ; 4 loop iterations .loop\@ ; each loop iteration, write 4 tile numbers push bc ld a,[de] ld [hli],a inc de ld a,[de] ld [hli],a inc de ld a,[de] ld [hli],a inc de ld a,[de] ld [hl],a inc de ld bc,$0015 add hl,bc pop bc dec c jr nz,.loop\@ ret ; function to update joypad state and simulate button presses GetJoypadStateOverworld: ; F4D xor a ld [$c103],a ld [$c105],a call RunMapScript call GetJoypadState ld a,[$d733] bit 3,a ; check if a trainer wants a challenge jr nz,.notForcedDownwards\@ ld a,[W_CURMAP] cp a,ROUTE_17 ; Cycling Road jr nz,.notForcedDownwards\@ ld a,[$ffb4] ; current joypad state and a,%11110011 ; bit mask for all directions and A/B jr nz,.notForcedDownwards\@ ld a,%10000000 ; down pressed ld [$ffb4],a ; on the cycling road, if there isn't a trainer and the player isn't pressing buttons, simulate a down press .notForcedDownwards\@ ld a,[$d730] bit 7,a ret z ; if simulating button presses ld a,[$ffb4] ; current joypad state ld b,a ld a,[$cd3b] ; bit mask for button presses that override simulated ones and b ret nz ; return if the simulated button presses are overridden ld hl,$cd38 ; index of current simulated button press dec [hl] ld a,[hl] cp a,$ff jr z,.doneSimulating\@ ; if the end of the simulated button presses has been reached ld hl,$ccd3 ; base address of simulated button presses ; add offset to base address add l ld l,a jr nc,.noCarry\@ inc h .noCarry\@ ld a,[hl] ld [$ffb4],a ; store simulated button press in joypad state and a ret nz ld [$ffb3],a ld [$ffb2],a ret ; if done simulating button presses .doneSimulating\@ xor a ld [$cd3a],a ld [$cd38],a ld [$ccd3],a ld [$cd6b],a ld [$ffb4],a ld hl,$d736 ld a,[hl] and a,$f8 ld [hl],a ld hl,$d730 res 7,[hl] ret ; function to check the tile ahead to determine if the character should get on land or keep surfing ; sets carry if there is a collision and clears carry otherwise ; It seems that this function has a bug in it, but due to luck, it doesn't ; show up. After detecting a sprite collision, it jumps to the code that ; checks if the next tile is passable instead of just directly jumping to the ; "collision detected" code. However, it doesn't store the next tile in c, ; so the old value of c is used. 2429 is always called before this function, ; and 2429 always sets c to 0xF0. There is no 0xF0 background tile, so it ; is considered impassable and it is detected as a collision. CollisionCheckOnWater: ; FB7 ld a,[$d730] bit 7,a jp nz,.noCollision\@ ; return and clear carry if button presses are being simulated ld a,[$d52a] ; the direction that the player is trying to go in ld d,a ld a,[$c10c] ; the player sprite's collision data (bit field) (set in the sprite movement code) and d ; check if a sprite is in the direction the player is trying to go jr nz,.checkIfNextTileIsPassable\@ ; bug? ld hl,TilePairCollisionsWater call CheckForJumpingAndTilePairCollisions jr c,.collision\@ ld a,$35 call Predef ; get tile in front of player (puts it in c and [$CFC6]) ld a,[$cfc6] ; tile in front of player cp a,$14 ; water tile jr z,.noCollision\@ ; keep surfing if it's a water tile cp a,$32 ; either the left tile of the S.S. Anne boarding platform or the tile on eastern coastlines (depending on the current tileset) jr z,.checkIfVermilionDockTileset\@ cp a,$48 ; tile on right on coast lines in Safari Zone jr z,.noCollision\@ ; keep surfing ; check if the [land] tile in front of the player is passable .checkIfNextTileIsPassable\@ ld hl,$d530 ; pointer to list of passable tiles ld a,[hli] ld h,[hl] ld l,a .loop\@ ld a,[hli] cp a,$ff jr z,.collision\@ cp c jr z,.stopSurfing\@ ; stop surfing if the tile is passable jr .loop\@ .collision\@ ld a,[$c02a] cp a,$b4 ; check if collision sound is already playing jr z,.setCarry\@ ld a,$b4 call $23b1 ; play collision sound (if it's not already playing) .setCarry\@ scf jr .done\@ .noCollision\@ and a .done\@ ret .stopSurfing\@ xor a ld [$d700],a call LoadPlayerSpriteGraphics call $2307 jr .noCollision\@ .checkIfVermilionDockTileset\@ ld a,[W_CURMAPTILESET] ; tileset cp a,$0e ; Vermilion Dock tileset jr nz,.noCollision\@ ; keep surfing if it's not the boarding platform tile jr .stopSurfing\@ ; if it is the boarding platform tile, stop surfing ; function to run the current map's script RunMapScript: ; 101B push hl push de push bc ld b,$03 ld hl,$7225 call Bankswitch ; check if the player is pushing a boulder ld a,[$cd60] bit 1,a ; is the player pushing a boulder? jr z,.afterBoulderEffect\@ ld b,$03 ld hl,$72b5 call Bankswitch ; displays dust effect when pushing a boulder .afterBoulderEffect\@ pop bc pop de pop hl call $310e ld a,[W_CURMAP] ; current map number call SwitchToMapRomBank ; change to the ROM bank the map's data is in ld hl,W_MAPSCRIPTPTR ld a,[hli] ld h,[hl] ld l,a ld de,.return\@ push de jp [hl] ; jump to script .return\@ ret LoadWalkingPlayerSpriteGraphics: ; 0x104d ld de,$4180 ld hl,$8000 jr LoadPlayerSpriteGraphicsCommon LoadSurfingPlayerSpriteGraphics: ; 0x1055 ld de,$76c0 ld hl,$8000 jr LoadPlayerSpriteGraphicsCommon LoadBikePlayerSpriteGraphics: ; 0x105d ld de,$4000 ld hl,$8000 LoadPlayerSpriteGraphicsCommon: ; 0x1063 push de push hl ld bc,$050c call CopyVideoData pop hl pop de ld a,$c0 add e ld e,a jr nc,.noCarry\@ inc d .noCarry\@ set 3,h ld bc,$050c jp CopyVideoData ; function to load data from the map header LoadMapHeader: ; 107C ld b,$03 ld hl,$7113 call Bankswitch ld a,[W_CURMAPTILESET] ld [$d119],a ld a,[W_CURMAP] call SwitchToMapRomBank ld a,[W_CURMAPTILESET] ld b,a res 7,a ld [W_CURMAPTILESET],a ld [$ff8b],a bit 7,b ret nz ld hl,MapHeaderPointers ld a,[W_CURMAP] sla a jr nc,.noCarry1\@ inc h .noCarry1\@ add l ld l,a jr nc,.noCarry2\@ inc h .noCarry2\@ ld a,[hli] ld h,[hl] ld l,a ; hl = base of map header ; copy the first 10 bytes (the fixed area) of the map data to D367-D370 ld de,$d367 ld c,$0a .copyFixedHeaderLoop\@ ld a,[hli] ld [de],a inc de dec c jr nz,.copyFixedHeaderLoop\@ ; initialize all the connected maps to disabled at first, before loading the actual values ld a,$ff ld [$d371],a ld [$d37c],a ld [$d387],a ld [$d392],a ; copy connection data (if any) to WRAM ld a,[W_MAPCONNECTIONS] ld b,a .checkNorth\@ bit 3,b jr z,.checkSouth\@ ld de,W_MAPCONN1PTR call CopyMapConnectionHeader .checkSouth\@ bit 2,b jr z,.checkWest\@ ld de,W_MAPCONN2PTR call CopyMapConnectionHeader .checkWest\@ bit 1,b jr z,.checkEast\@ ld de,W_MAPCONN3PTR call CopyMapConnectionHeader .checkEast\@ bit 0,b jr z,.getObjectDataPointer\@ ld de,W_MAPCONN4PTR call CopyMapConnectionHeader .getObjectDataPointer\@ ld a,[hli] ld [$d3a9],a ld a,[hli] ld [$d3aa],a push hl ld a,[$d3a9] ld l,a ld a,[$d3aa] ld h,a ; hl = base of object data ld de,$d3ad ; background tile ID ld a,[hli] ld [de],a ; save background tile ID .loadWarpData\@ ld a,[hli] ; number of warps ld [$d3ae],a ; save the number of warps and a ; are there any warps? jr z,.loadSignData\@ ; if not, skip this ld c,a ld de,$d3af ; base address of warps .warpLoop\@ ; one warp per loop iteration ld b,$04 .warpInnerLoop\@ ld a,[hli] ld [de],a inc de dec b jr nz,.warpInnerLoop\@ dec c jr nz,.warpLoop\@ .loadSignData\@ ld a,[hli] ; number of signs ld [$d4b0],a ; save the number of signs and a ; are there any signs? jr z,.loadSpriteData\@ ; if not, skip this ld c,a ld de,$d4d1 ; base address of sign text IDs ld a,d ld [$ff95],a ld a,e ld [$ff96],a ld de,$d4b1 ; base address of sign coordinates .signLoop\@ ld a,[hli] ld [de],a inc de ld a,[hli] ld [de],a inc de push de ld a,[$ff95] ld d,a ld a,[$ff96] ld e,a ld a,[hli] ld [de],a inc de ld a,d ld [$ff95],a ld a,e ld [$ff96],a pop de dec c jr nz,.signLoop\@ .loadSpriteData\@ ld a,[$d72e] bit 5,a ; did a battle happen immediately before this? jp nz,.finishUp\@ ; if so, skip this because battles don't destroy this data ld a,[hli] ld [$d4e1],a ; save the number of sprites push hl ; zero C110-C1FF and C210-C2FF ld hl,$c110 ld de,$c210 xor a ld b,$f0 .zeroSpriteDataLoop\@ ld [hli],a ld [de],a inc e dec b jr nz,.zeroSpriteDataLoop\@ ; initialize all C100-C1FF sprite entries to disabled (other than player's) ld hl,$c112 ld de,$0010 ld c,$0f .disableSpriteEntriesLoop\@ ld [hl],$ff add hl,de dec c jr nz,.disableSpriteEntriesLoop\@ pop hl ld de,$c110 ld a,[$d4e1] ; number of sprites and a ; are there any sprites? jp z,.finishUp\@ ; if there are no sprites, skip the rest ld b,a ld c,$00 .loadSpriteLoop\@ ld a,[hli] ld [de],a ; store picture ID at C1X0 inc d ld a,$04 add e ld e,a ld a,[hli] ld [de],a ; store Y position at C2X4 inc e ld a,[hli] ld [de],a ; store X position at C2X5 inc e ld a,[hli] ld [de],a ; store movement byte 1 at C2X6 ld a,[hli] ld [$ff8d],a ; save movement byte 2 ld a,[hli] ld [$ff8e],a ; save text ID and flags byte push bc push hl ld b,$00 ld hl,$d4e4 ; base address of sprite entries add hl,bc ld a,[$ff8d] ld [hli],a ; store movement byte 2 in byte 0 of sprite entry ld a,[$ff8e] ld [hl],a ; this appears pointless, since the value is overwritten immediately after ld a,[$ff8e] ld [$ff8d],a and a,$3f ld [hl],a ; store text ID in byte 1 of sprite entry pop hl ld a,[$ff8d] bit 6,a jr nz,.trainerSprite\@ bit 7,a jr nz,.itemBallSprite\@ jr .regularSprite\@ .trainerSprite\@ ld a,[hli] ld [$ff8d],a ; save trainer class ld a,[hli] ld [$ff8e],a ; save trainer number (within class) push hl ld hl,$d504 ; base address of extra sprite info entries add hl,bc ld a,[$ff8d] ld [hli],a ; store trainer class in byte 0 of the entry ld a,[$ff8e] ld [hl],a ; store trainer number in byte 1 of the entry pop hl jr .nextSprite\@ .itemBallSprite\@ ld a,[hli] ld [$ff8d],a ; save item number push hl ld hl,$d504 ; base address of extra sprite info add hl,bc ld a,[$ff8d] ld [hli],a ; store item number in byte 0 of the entry xor a ld [hl],a ; zero byte 1, since it is not used pop hl jr .nextSprite\@ .regularSprite\@ push hl ld hl,$d504 ; base address of extra sprite info add hl,bc ; zero both bytes, since regular sprites don't use this extra space xor a ld [hli],a ld [hl],a pop hl .nextSprite\@ pop bc dec d ld a,$0a add e ld e,a inc c inc c dec b jp nz,.loadSpriteLoop\@ .finishUp\@ ld a,$19 call Predef ; load tileset data ld hl,$4eb8 ld b,$03 call Bankswitch ; load wild pokemon data pop hl ; restore hl from before going to the warp/sign/sprite data (this value was saved for seemingly no purpose) ld a,[W_CURMAPHEIGHT] ; map height in 4x4 tile blocks add a ; double it ld [$d524],a ; store map height in 2x2 tile blocks ld a,[W_CURMAPWIDTH] ; map width in 4x4 tile blocks add a ; double it ld [$d525],a ; map width in 2x2 tile blocks ld a,[W_CURMAP] ld c,a ld b,$00 ld a,[$ffb8] push af ld a,$03 ld [$ffb8],a ld [$2000],a ld hl,$404d add hl,bc add hl,bc ld a,[hli] ld [$d35b],a ; music 1 ld a,[hl] ld [$d35c],a ; music 2 pop af ld [$ffb8],a ld [$2000],a ret ; function to copy map connection data from ROM to WRAM ; Input: hl = source, de = destination CopyMapConnectionHeader: ; 1238 ld c,$0b .loop\@ ld a,[hli] ld [de],a inc de dec c jr nz,.loop\@ ret ; function to load map data LoadMapData: ; 1241 ld a,[$ffb8] push af call DisableLCD ld a,$98 ld [$d527],a xor a ld [$d526],a ld [$ffaf],a ld [$ffae],a ld [W_WALKCOUNTER],a ld [$d119],a ld [$d11a],a ld [$d3a8],a call LoadTextBoxTilePatterns call LoadMapHeader ld b,BANK(InitMapSprites) ld hl,InitMapSprites call Bankswitch ; load tile pattern data for sprites call LoadTileBlockMap call LoadTilesetTilePatternData call LoadCurrentMapView ; copy current map view to VRAM ld hl,$c3a0 ld de,$9800 ld b,$12 .vramCopyLoop\@ ld c,$14 .vramCopyInnerLoop\@ ld a,[hli] ld [de],a inc e dec c jr nz,.vramCopyInnerLoop\@ ld a,$0c add e ld e,a jr nc,.noCarry\@ inc d .noCarry\@ dec b jr nz,.vramCopyLoop\@ ld a,$01 ld [$cfcb],a call EnableLCD ld b,$09 call GoPAL_SET call LoadPlayerSpriteGraphics ld a,[$d732] and a,$18 ; did the player fly or teleport in? jr nz,.restoreRomBank\@ ld a,[$d733] bit 1,a jr nz,.restoreRomBank\@ call $235f ; music related call $2312 ; music related .restoreRomBank\@ pop af ld [$ffb8],a ld [$2000],a ret ; function to switch to the ROM bank that a map is stored in ; Input: a = map number SwitchToMapRomBank: ; 12BC push hl push bc ld c,a ld b,$00 ld a,$03 call BankswitchHome ; switch to ROM bank 3 ld hl,MapHeaderBanks add hl,bc ld a,[hl] ld [$ffe8],a ; save map ROM bank call BankswitchBack ld a,[$ffe8] ld [$ffb8],a ld [$2000],a ; switch to map ROM bank pop bc pop hl ret INCBIN "baserom.gbc",$12DA,$12F8 - $12DA ; this is used to check if the player wants to interrupt the opening sequence at several points ; XXX is this used anywhere else? ; INPUT: ; c = number of frames to wait ; sets carry if Up+Select+B, Start, or A is pressed within c frames ; unsets carry otherwise CheckForUserInterruption: ; 12F8 call DelayFrame push bc call GetJoypadStateLowSensitivity pop bc ld a,[$ffb4] ; currently pressed buttons cp a,%01000110 ; Up, Select button, B button jr z,.setCarry\@ ; if all three keys are pressed ld a,[$ffb5] ; either newly pressed buttons or currently pressed buttons at low sampling rate and a,%00001001 ; Start button, A button jr nz,.setCarry\@ ; if either key is pressed dec c jr nz,CheckForUserInterruption .unsetCarry\@ and a ret .setCarry\@ scf ret ; function to load position data for destination warp when switching maps ; INPUT: ; a = ID of destination warp within destination map LoadDestinationWarpPosition: ; 1313 ld b,a ld a,[$ffb8] push af ld a,[$cf12] ld [$ffb8],a ld [$2000],a ld a,b add a add a ld c,a ld b,0 add hl,bc ld bc,4 ld de,$d35f call CopyData pop af ld [$ffb8],a ld [$2000],a ret ; INPUT: ; c: if nonzero, show at least a sliver of health ; d = number of HP bar sections (normally 6) ; e = health (in eighths of bar sections) (normally out of 48) DrawHPBar: ; 1336 push hl push de push bc ld a,$71 ; left of HP bar tile 1 ld [hli],a ld a,$62 ; left of HP bar tile 2 ld [hli],a push hl ld a,$63 ; empty bar section tile .drawEmptyBarLoop\@ ld [hli],a dec d jr nz,.drawEmptyBarLoop\@ ld a,[$cf94] dec a ; what should the right of HP bar tile be? ld a,$6d ; right of HP bar tile, in status screen and battles jr z,.writeTile\@ dec a ; right of HP bar tile, in pokemon menu .writeTile\@ ld [hl],a pop hl ld a,e and a ; is there enough health to show up on the HP bar? jr nz,.loop\@ ; if so, draw the HP bar ld a,c and a ; should a sliver of health be shown no matter what? jr z,.done\@ ld e,1 ; if so, fill one eighth of a bar section ; loop to draw every full bar section .loop\@ ld a,e sub a,8 jr c,.drawPartialBarSection\@ ld e,a ld a,$6b ; filled bar section tile ld [hli],a ld a,e and a jr z,.done\@ jr .loop\@ ; draws a partial bar section at the end (if necessary) ; there are 7 possible partial bar sections from 1/8 to 7/8 full .drawPartialBarSection\@ ld a,$63 ; empty bar section tile add e ; add e to get the appropriate partial bar section tile ld [hl],a ; write the tile .done\@ pop bc pop de pop hl ret ; loads pokemon data from one of multiple sources to $cf98 ; loads base stats to $d0b8 ; INPUT: ; [$cf92] = index of pokemon within party/box ; [$cc49] = source ; 00: player's party ; 01: enemy's party ; 02: current box ; 03: daycare ; OUTPUT: ; [$cf91] = pokemon ID ; $cf98 = base address of pokemon data ; $d0b8 = base address of base stats LoadMonData: ; 1372 ld hl,LoadMonData_ ld b,BANK(LoadMonData_) jp Bankswitch INCBIN "baserom.gbc",$137A,$13D0 - $137A ; plays the cry of a pokemon ; INPUT: ; a = pokemon ID PlayCry: ; 13D0 call GetCryData call $23b1 ; play cry jp $3748 ; wait for sound to be done playing ; gets a pokemon's cry data ; INPUT: ; a = pokemon ID GetCryData: ; 13D9 dec a ld c,a ld b,0 ld hl,$5446 add hl,bc add hl,bc add hl,bc ld a,$0e call BankswitchHome ld a,[hli] ld b,a ld a,[hli] ld [$c0f1],a ld a,[hl] ld [$c0f2],a call BankswitchBack ld a,b ; a = cryID ld c,$14 ; base sound ID for pokemon cries rlca add b ; a = cryID * 3 add c ; a = $14 + cryID * 3 ret DisplayPartyMenu: ; 13FC ld a,[$ffd7] push af xor a ld [$ffd7],a call GBPalWhiteOutWithDelay3 call CleanLCD_OAM call PartyMenuInit call DrawPartyMenu jp HandlePartyMenuInput GoBackToPartyMenu: ; 1411 ld a,[$ffd7] push af xor a ld [$ffd7],a call PartyMenuInit call RedrawPartyMenu jp HandlePartyMenuInput PartyMenuInit: ; 1420 ld a,$01 call BankswitchHome call LoadHpBarAndStatusTilePatterns ld hl,$d730 set 6,[hl] ; turn off letter printing delay xor a ld [$cc49],a ld [$cc37],a ld hl,W_TOPMENUITEMY inc a ld [hli],a ; top menu item Y xor a ld [hli],a ; top menu item X ld a,[$cc2b] push af ld [hli],a ; current menu item ID inc hl ld a,[W_NUMINPARTY] and a ; are there more than 0 pokemon in the party? jr z,.storeMaxMenuItemID\@ dec a ; if party is not empty, the max menu item ID is ([W_NUMINPARTY] - 1) ; otherwise, it is 0 .storeMaxMenuItemID\@ ld [hli],a ; max menu item ID ld a,[$d11f] and a ld a,%00000011 ; A button and B button jr z,.next\@ xor a ld [$d11f],a inc a .next\@ ld [hli],a ; menu watched keys pop af ld [hl],a ; old menu item ID ret HandlePartyMenuInput: ; 145A ld a,1 ld [$cc4a],a ld a,$40 ld [$d09b],a call HandleMenuInputPokemonSelection call PlaceUnfilledArrowMenuCursor ld b,a xor a ld [$d09b],a ld a,[W_CURMENUITEMID] ld [$cc2b],a ld hl,$d730 res 6,[hl] ; turn on letter printing delay ld a,[$cc35] and a jp nz,.swappingPokemon\@ pop af ld [$ffd7],a bit 1,b jr nz,.noPokemonChosen\@ ld a,[W_NUMINPARTY] and a jr z,.noPokemonChosen\@ ld a,[W_CURMENUITEMID] ld [$cf92],a ld hl,W_PARTYMON1 ld b,0 ld c,a add hl,bc ld a,[hl] ld [$cf91],a ld [$cfd9],a call BankswitchBack and a ret .noPokemonChosen\@ call BankswitchBack scf ret .swappingPokemon\@ bit 1,b ; was the B button pressed? jr z,.handleSwap\@ ; if not, handle swapping the pokemon .cancelSwap\@ ; if the B button was pressed ld b,BANK(ErasePartyMenuCursors) ld hl,ErasePartyMenuCursors call Bankswitch xor a ld [$cc35],a ld [$d07d],a call RedrawPartyMenu jr HandlePartyMenuInput .handleSwap\@ ld a,[W_CURMENUITEMID] ld [$cf92],a ld b,$04 ld hl,$7613 call Bankswitch jr HandlePartyMenuInput DrawPartyMenu: ; 14D4 ld hl,$6cd2 jr DrawPartyMenuCommon RedrawPartyMenu: ; 14D9 ld hl,$6ce3 DrawPartyMenuCommon: ; 14DC ld b,$04 jp Bankswitch ; prints a pokemon's status condition ; INPUT: ; de = address of status condition ; hl = destination address PrintStatusCondition: ; 14E1 push de dec de dec de ; de = address of current HP ld a,[de] ld b,a dec de ld a,[de] or b ; is the pokemon's HP zero? pop de jr nz,.notFainted\@ ; if the pokemon's HP is 0, print "FNT" ld a,"F" ld [hli],a ld a,"N" ld [hli],a ld [hl],"T" and a ret .notFainted\@ ld a,[$ffb8] push af ld a,$1d ld [$ffb8],a ld [$2000],a call $47de ; print status condition pop bc ld a,b ld [$ffb8],a ld [$2000],a ret ; function to print pokemon level, leaving off the ":L" if the level is at least 100 ; INPUT: ; hl = destination address ; [$cfb9] = level PrintLevel: ; 150B ld a,$6e ; ":L" tile ID ld [hli],a ld c,2 ; number of digits ld a,[$cfb9] ; level cp a,100 jr c,PrintLevelCommon ; if level at least 100, write over the ":L" tile dec hl inc c ; increment number of digits to 3 jr PrintLevelCommon ; prints the level without leaving off ":L" regardless of level ; INPUT: ; hl = destination address ; [$cfb9] = level PrintLevelFull: ; 151B ld a,$6e ; ":L" tile ID ld [hli],a ld c,3 ; number of digits ld a,[$cfb9] ; level PrintLevelCommon: ; 1523 ld [$d11e],a ld de,$d11e ld b,$41 ; no leading zeroes, left-aligned, one byte jp PrintNumber ; XXX does anything call this? Unknown152E: ; 152E ld hl,$d0dc ld c,a ld b,0 add hl,bc ld a,[hl] ret ; copies the base stat data of a pokemon to $D0B8 ; INPUT: ; [$D0B5] = pokemon ID GetBaseStats: ; 1537 ld a,[$ffb8] push af ld a,$0e ld [$ffb8],a ld [$2000],a push bc push de push hl ld a,[$d11e] push af ld a,[$d0b5] ld [$d11e],a ld de,FossilKabutopsPic ld b,$66 ; size of Kabutops fossil and Ghost sprites cp a,$b6 ; Kabutops fossil jr z,.specialID\@ ld de,GhostPic cp a,$b8 ; Ghost jr z,.specialID\@ ld de,FossilAerodactylPic ld b,$77 ; size of Aerodactyl fossil sprite cp a,$b7 ; Aerodactyl fossil jr z,.specialID\@ cp a,MEW jr z,.mew\@ ld a,$3a call Predef ; convert pokemon ID in [$D11E] to pokedex number ld a,[$d11e] dec a ld bc,28 ld hl,BulbasaurBaseStats call AddNTimes ld de,$d0b8 ld bc,28 call CopyData jr .done\@ .specialID\@ ld hl,$d0c2 ld [hl],b inc hl ld [hl],e inc hl ld [hl],d jr .done\@ .mew\@ ld hl,$425b ld de,$d0b8 ld bc,28 ld a,$01 call FarCopyData .done\@ ld a,[$d0b5] ld [$d0b8],a pop af ld [$d11e],a pop hl pop de pop bc pop af ld [$ffb8],a ld [$2000],a ret ; copy party pokemon's name to $CD6D GetPartyMonName2: ; 15B4 ld a,[$cf92] ; index within party ld hl,W_PARTYMON1NAME ; this is called more often GetPartyMonName: ; 15BA push hl push bc call $3a7d ; add 11 to hl, a times ld de,$cd6d push de ld bc,11 call CopyData pop de pop bc pop hl ret ; function to print a BCD (Binary-coded decimal) number ; de = address of BCD number ; hl = destination address ; c = flags and length ; bit 7: if set, do not print leading zeroes ; if unset, print leading zeroes ; bit 6: if set, left-align the string (do not pad empty digits with spaces) ; if unset, right-align the string ; bit 5: if set, print currency symbol at the beginning of the string ; if unset, do not print the currency symbol ; bits 0-4: length of BCD number in bytes ; Note that bits 5 and 7 are modified during execution. The above reflects ; their meaning at the beginning of the functions's execution. PrintBCDNumber: ; 15CD ld b,c ; save flags in b res 7,c res 6,c res 5,c ; c now holds the length bit 5,b jr z,.loop\@ bit 7,b jr nz,.loop\@ ld [hl],$f0 ; currency symbol inc hl .loop\@ ld a,[de] swap a call PrintBCDDigit ; print upper digit ld a,[de] call PrintBCDDigit ; print lower digit inc de dec c jr nz,.loop\@ bit 7,b ; were any non-zero digits printed? jr z,.done\@ ; if so, we are done .numberEqualsZero\@ ; if every digit of the BCD number is zero bit 6,b ; left or right alignment? jr nz,.skipRightAlignmentAdjustment\@ dec hl ; if the string is right-aligned, it needs to be moved back one space .skipRightAlignmentAdjustment\@ bit 5,b jr z,.skipCurrencySymbol\@ ld [hl],$f0 ; currency symbol inc hl .skipCurrencySymbol\@ ld [hl],"0" call PrintLetterDelay inc hl .done\@ ret PrintBCDDigit: ; 1604 and a,%00001111 and a jr z,.zeroDigit\@ .nonzeroDigit\@ bit 7,b ; have any non-space characters been printed? jr z,.outputDigit\@ ; if bit 7 is set, then no numbers have been printed yet bit 5,b ; print the currency symbol? jr z,.skipCurrencySymbol\@ ld [hl],$f0 ; currency symbol inc hl res 5,b .skipCurrencySymbol\@ res 7,b ; unset 7 to indicate that a nonzero digit has been reached .outputDigit\@ add a,"0" ld [hli],a jp PrintLetterDelay .zeroDigit\@ bit 7,b ; either printing leading zeroes or already reached a nonzero digit? jr z,.outputDigit\@ ; if so, print a zero digit bit 6,b ; left or right alignment? ret nz inc hl ; if right-aligned, "print" a space by advancing the pointer ret ;XXX what does this do ;XXX what points to this Unknown_1627: ; 0x1627 ld bc,$D0B8 add hl,bc ld a,[hli] ld [$D0AB],a ld a,[hl] ld [$D0AC],a Unknown_1633: ; 0x1633 ; define (by index number) the bank that a pokemon's image is in ; index = Mew, bank 1 ; index = Kabutops fossil, bank $B ; index < $1F, bank 9 ; $1F ≤ index < $4A, bank $A ; $4A ≤ index < $74, bank $B ; $74 ≤ index < $99, bank $C ; $99 ≤ index, bank $D ld a,[$CF91] ; XXX name for this ram location ld b,a cp $15 ld a,$01 jr z,.GotBank\@ ld a,b cp $B6 ld a,$0B jr z,.GotBank\@ ld a,b cp $1F ld a,$09 jr c,.GotBank\@ ld a,b cp $4A ld a,$0A jr c,.GotBank\@ ld a,b cp $74 ld a,$0B jr c,.GotBank\@ ld a,b cp $99 ld a,$0C jr c,.GotBank\@ ld a,$0D .GotBank\@ jp $24FD INCBIN "baserom.gbc",$1665,$172F - $1665 Tset0B_Coll: ; 0x172F INCBIN "gfx/tilesets/0b.tilecoll" Tset00_Coll: ; 0x1735 INCBIN "gfx/tilesets/00.tilecoll" Tset01_Coll: ; 0x1749 INCBIN "gfx/tilesets/01.tilecoll" Tset02_Coll: ; 0x1753 INCBIN "gfx/tilesets/02.tilecoll" Tset05_Coll: ; 0x1759 INCBIN "gfx/tilesets/05.tilecoll" Tset03_Coll: ; 0x1765 INCBIN "gfx/tilesets/03.tilecoll" Tset08_Coll: ; 0x1775 INCBIN "gfx/tilesets/08.tilecoll" Tset09_Coll: ; 0x177f INCBIN "gfx/tilesets/09.tilecoll" Tset0D_Coll: ; 0x178a INCBIN "gfx/tilesets/0d.tilecoll" Tset0E_Coll: ; 0x1795 INCBIN "gfx/tilesets/0e.tilecoll" Tset0F_Coll: ; 0x179a INCBIN "gfx/tilesets/0f.tilecoll" Tset10_Coll: ; 0x17a2 INCBIN "gfx/tilesets/10.tilecoll" Tset11_Coll: ; 0x17ac INCBIN "gfx/tilesets/11.tilecoll" Tset12_Coll: ; 0x17b8 INCBIN "gfx/tilesets/12.tilecoll" Tset13_Coll: ; 0x17c0 INCBIN "gfx/tilesets/13.tilecoll" Tset14_Coll: ; 0x17ca INCBIN "gfx/tilesets/14.tilecoll" Tset15_Coll: ; 0x17d1 INCBIN "gfx/tilesets/15.tilecoll" Tset16_Coll: ; 0x17dd INCBIN "gfx/tilesets/16.tilecoll" Tset17_Coll: ; 0x17f0 INCBIN "gfx/tilesets/17.tilecoll" ;Tile Collision ends 0x17f7 ; does the same thing as FarCopyData at 009D ; only difference is that it uses [$ff8b] instead of [$cee9] for a temp value ; copy bc bytes of data from a:hl to de FarCopyData2: ; 17F7 ld [$ff8b],a ld a,[$ffb8] push af ld a,[$ff8b] ld [$ffb8],a ld [$2000],a call CopyData pop af ld [$ffb8],a ld [$2000],a ret ; does a far copy but the source is de and the destination is hl ; copy bc bytes of data from a:de to hl FarCopyData3: ; 180D ld [$ff8b],a ld a,[$ffb8] push af ld a,[$ff8b] ld [$ffb8],a ld [$2000],a push hl push de push de ld d,h ld e,l pop hl call CopyData pop de pop hl pop af ld [$ffb8],a ld [$2000],a ret ; copies each source byte to the destination twice (next to each other) ; copy bc source bytes from a:hl to de FarCopyDataDouble: ; 182B ld [$ff8b],a ld a,[$ffb8] push af ld a,[$ff8b] ld [$ffb8],a ld [$2000],a .loop\@ ld a,[hli] ld [de],a inc de ld [de],a inc de dec bc ld a,c or b jr nz,.loop\@ pop af ld [$ffb8],a ld [$2000],a ret ; copy (c * 16) bytes from b:de to hl during V-blank ; transfers up to 128 bytes per V-blank CopyVideoData: ; 1848 ld a,[H_AUTOBGTRANSFERENABLED] ; save auto-transfer enabled flag push af xor a ld [H_AUTOBGTRANSFERENABLED],a ; disable auto-transfer while copying ld a,[$ffb8] ld [$ff8b],a ld a,b ld [$ffb8],a ld [$2000],a ld a,e ld [H_VBCOPYSRC],a ld a,d ld [H_VBCOPYSRC + 1],a ld a,l ld [H_VBCOPYDEST],a ld a,h ld [H_VBCOPYDEST + 1],a .loop\@ ld a,c cp a,8 ; are there more than 128 bytes left to copy? jr nc,.copyMaxSize\@ ; only copy up to 128 bytes at a time .copyRemainder\@ ld [H_VBCOPYSIZE],a call DelayFrame ; wait for V-blank handler to perform the copy ld a,[$ff8b] ld [$ffb8],a ld [$2000],a pop af ld [H_AUTOBGTRANSFERENABLED],a ; restore original auto-transfer enabled flag ret .copyMaxSize\@ ld a,8 ; 128 bytes ld [H_VBCOPYSIZE],a call DelayFrame ; wait for V-blank handler to perform the copy ld a,c sub a,8 ld c,a jr .loop\@ ; copy (c * 8) source bytes from b:de to hl during V-blank ; copies each source byte to the destination twice (next to each other) ; transfers up to 64 source bytes per V-blank CopyVideoDataDouble: ; 1886 ld a,[H_AUTOBGTRANSFERENABLED] ; save auto-transfer enabled flag push af xor a ld [H_AUTOBGTRANSFERENABLED],a ; disable auto-transfer while copying ld a,[$ffb8] ld [$ff8b],a ld a,b ld [$ffb8],a ld [$2000],a ld a,e ld [H_VBCOPYDOUBLESRC],a ld a,d ld [H_VBCOPYDOUBLESRC + 1],a ld a,l ld [H_VBCOPYDOUBLEDEST],a ld a,h ld [H_VBCOPYDOUBLEDEST + 1],a .loop\@ ld a,c cp a,8 ; are there more than 64 source bytes left to copy? jr nc,.copyMaxSize\@ ; only copy up to 64 source bytes at a time .copyRemainder\@ ld [H_VBCOPYDOUBLESIZE],a call DelayFrame ; wait for V-blank handler to perform the copy ld a,[$ff8b] ld [$ffb8],a ld [$2000],a pop af ld [H_AUTOBGTRANSFERENABLED],a ; restore original auto-transfer enabled flag ret .copyMaxSize\@ ld a,8 ; 64 source bytes ld [H_VBCOPYDOUBLESIZE],a call DelayFrame ; wait for V-blank handler to perform the copy ld a,c sub a,8 ld c,a jr .loop\@ ; clears an area of the screen ; INPUT: ; hl = address of upper left corner of the area ; b = height ; c = width ClearScreenArea: ; 18C4 ld a,$7F ; blank tile ld de,20 ; screen width .loop\@ push hl push bc .innerLoop\@ ld [hli],a dec c jr nz,.innerLoop\@ pop bc pop hl add hl,de dec b jr nz,.loop\@ ret INCBIN "baserom.gbc",$18D6,$190F - $18D6 ClearScreen: ; 190F ; clears all tiles in the tilemap, ; then wait three frames ld bc,$0168 ; tilemap size inc b ld hl,$C3A0 ; TILEMAP_START ld a,$7F ; $7F is blank tile .loop\@ ld [hli],a dec c jr nz,.loop\@ dec b jr nz,.loop\@ jp Delay3 TextBoxBorder: ; 1922 ; draw a text box ; upper-left corner at coordinates hl ; height b ; width c ; first row push hl ld a,"┌" ld [hli],a inc a ; horizontal border ─ call NPlaceChar inc a ; upper-right border ┐ ld [hl],a ; middle rows pop hl ld de,20 add hl,de ; skip the top row .PlaceRow\@ push hl ld a,"│" ld [hli],a ld a," " call NPlaceChar ld [hl],"│" pop hl ld de,20 add hl,de ; move to next row dec b jr nz,.PlaceRow\@ ; bottom row ld a,"└" ld [hli],a ld a,"─" call NPlaceChar ld [hl],"┘" ret ; NPlaceChar: ; 0x194f ; place a row of width c of identical characters ld d,c .loop\@ ld [hli],a dec d jr nz,.loop\@ ret PlaceString: ; 1955 push hl PlaceNextChar: ; 1956 ld a,[de] cp "@" jr nz,.PlaceText\@ ld b,h ld c,l pop hl ret .PlaceText\@ cp $4E jr nz,.next\@ ld bc,$0028 ld a,[$FFF6] bit 2,a jr z,.next2\@ ld bc,$14 .next2\@ pop hl add hl,bc push hl jp Next19E8 .next\@ cp $4F jr nz,.next3\@ pop hl ld hl,$C4E1 push hl jp Next19E8 .next3\@ ; Check against a dictionary and a jp z,Char00 cp $4C jp z,$1B0A cp $4B jp z,Char4B cp $51 jp z,Char51 cp $49 jp z,Char49 cp $52 jp z,Char52 cp $53 jp z,Char53 cp $54 jp z,Char54 cp $5B jp z,Char5B cp $5E jp z,Char5E cp $5C jp z,Char5C cp $5D jp z,Char5D cp $55 jp z,$1A7C cp $56 jp z,Char56 cp $57 jp z,$1AAD cp $58 jp z,Char58 cp $4A jp z,Char4A cp $5F jp z,Char5F cp $59 jp z,Char59 cp $5A jp z,Char5A ld [hli],a call $38D3 Next19E8: ; 0x19e8 inc de jp PlaceNextChar Char00: ; 0x19ec ld b,h ld c,l pop hl ld de,Char00Text dec de ret Char00Text: ; 0x19f4 “%d ERROR.” TX_FAR _Char00Text db "@" Char52: ; 0x19f9 player’s name push de ld de,W_PLAYERNAME jr FinishDTE Char53: ; rival’s name push de ld de,W_RIVALNAME jr FinishDTE Char5D: ; TRAINER push de ld de,Char5DText jr FinishDTE Char5C: ; TM push de ld de,Char5CText jr FinishDTE Char5B: ; PC push de ld de,Char5BText jr FinishDTE Char5E: ; ROCKET push de ld de,Char5EText jr FinishDTE Char54: ; POKé push de ld de,Char54Text jr FinishDTE Char56: ; …… push de ld de,Char56Text jr FinishDTE Char4A: ; PKMN push de ld de,Char4AText jr FinishDTE Char59: ; depending on whose turn it is, print ; enemy active monster’s name, prefixed with “Enemy ” ; or ; player active monster’s name ; (like Char5A but flipped) ld a,[H_WHOSETURN] xor 1 jr MonsterNameCharsCommon Char5A: ; depending on whose turn it is, print ; player active monster’s name ; or ; enemy active monster’s name, prefixed with “Enemy ” ld a,[H_WHOSETURN] MonsterNameCharsCommon: push de and a jr nz,.Enemy\@ ld de,$D009 ; player active monster name jr FinishDTE .Enemy\@ ; 1A40 ; print “Enemy ” ld de,Char5AText call PlaceString ld h,b ld l,c ld de,$CFDA ; enemy active monster name FinishDTE: call PlaceString ld h,b ld l,c pop de inc de jp PlaceNextChar Char5CText: ; 0x1a55 db "TM@" Char5DText: ; 0x1a58 db "TRAINER@" Char5BText: ; 0x1a60 db "PC@" Char5EText: ; 0x1a63 db "ROCKET@" Char54Text: ; 0x1a6a db "POKé@" Char56Text: ; 0x1a70 db "……@" Char5AText: ; 0x1a72 db "Enemy @" Char4AText: ; 0x1a79 db $E1,$E2,"@" ; PKMN Char55: ; 0x1a7c push de ld b,h ld c,l ld hl,Char55Text call TextCommandProcessor ld h,b ld l,c pop de inc de jp PlaceNextChar Char55Text: ; 0x1a8c ; equivalent to Char4B TX_FAR _Char55Text db "@" Char5F: ; 0x1a91 ; ends a Pokédex entry ld [hl],"." pop hl ret Char58: ; 0x1a95 ld a,[$D12B] cp 4 jp z,Next1AA2 ld a,$EE ld [$C4F2],a Next1AA2: ; 0x1aa2 call ProtectedDelay3 call $3898 ld a,$7F ld [$C4F2],a pop hl ld de,Char58Text dec de ret Char58Text: ; 0x1ab3 db "@" Char51: ; 0x1ab4 push de ld a,$EE ld [$C4F2],a call ProtectedDelay3 call $3898 ld hl,$C4A5 ld bc,$0412 call ClearScreenArea ld c,$14 call DelayFrames pop de ld hl,$C4B9 jp Next19E8 Char49: ; 0x1ad5 push de ld a,$EE ld [$C4F2],a call ProtectedDelay3 call $3898 ld hl,$C469 ld bc,$0712 call ClearScreenArea ld c,$14 call DelayFrames pop de pop hl ld hl,$C47D push hl jp Next19E8 Char4B: ; 0x1af8 ld a,$EE ld [$C4F2],a call ProtectedDelay3 push de call $3898 pop de ld a,$7F ld [$C4F2],a push de call Next1B18 call Next1B18 ld hl,$C4E1 pop de jp Next19E8 Next1B18: ; 0x1b18 ld hl,$C4B8 ld de,$C4A4 ld b,$3C .next\@ ld a,[hli] ld [de],a inc de dec b jr nz,.next\@ ld hl,$C4E1 ld a,$7F ld b,$12 .next2\@ ld [hli],a dec b jr nz,.next2\@ ; wait five frames ld b,5 .WaitFrame\@ call DelayFrame dec b jr nz,.WaitFrame\@ ret ProtectedDelay3: ; 0x1b3a push bc call Delay3 pop bc ret TextCommandProcessor: ; 1B40 ld a,[$d358] push af set 1,a ld e,a ld a,[$fff4] xor e ld [$d358],a ld a,c ld [$cc3a],a ld a,b ld [$cc3b],a NextTextCommand: ; 1B55 ld a,[hli] cp a,$50 ; terminator jr nz,.doTextCommand\@ pop af ld [$d358],a ret .doTextCommand\@ push hl cp a,$17 jp z,TextCommand17 cp a,$0e jp nc,TextCommand0B ; if a != 0x17 and a >= 0xE, go to command 0xB ; if a < 0xE, use a jump table ld hl,TextCommandJumpTable push bc add a ld b,$00 ld c,a add hl,bc pop bc ld a,[hli] ld h,[hl] ld l,a jp [hl] ; draw box ; 04AAAABBCC ; AAAA = address of upper left corner ; BB = height ; CC = width TextCommand04: ; 1B78 pop hl ld a,[hli] ld e,a ld a,[hli] ld d,a ld a,[hli] ld b,a ld a,[hli] ld c,a push hl ld h,d ld l,e call TextBoxBorder pop hl jr NextTextCommand ; place string inline ; 00{string} TextCommand00: ; 1B8A pop hl ld d,h ld e,l ld h,b ld l,c call PlaceString ld h,d ld l,e inc hl jr NextTextCommand ; place string from RAM ; 01AAAA ; AAAA = address of string TextCommand01: ; 1B97 pop hl ld a,[hli] ld e,a ld a,[hli] ld d,a push hl ld h,b ld l,c call PlaceString pop hl jr NextTextCommand ; print BCD number ; 02AAAABB ; AAAA = address of BCD number ; BB ; bits 0-4 = length in bytes ; bits 5-7 = unknown flags TextCommand02: ; 1BA5 pop hl ld a,[hli] ld e,a ld a,[hli] ld d,a ld a,[hli] push hl ld h,b ld l,c ld c,a call PrintBCDNumber ld b,h ld c,l pop hl jr NextTextCommand ; repoint destination address ; 03AAAA ; AAAA = new destination address TextCommand03: ; 1BB7 pop hl ld a,[hli] ld [$cc3a],a ld c,a ld a,[hli] ld [$cc3b],a ld b,a jp NextTextCommand ; repoint destination to second line of dialogue text box ; 05 ; (no arguments) TextCommand05: ; 1BC5 pop hl ld bc,$c4e1 ; address of second line of dialogue text box jp NextTextCommand ; blink arrow and wait for A or B to be pressed ; 06 ; (no arguments) TextCommand06: ; 1BCC ld a,[W_ISLINKBATTLE] cp a,$04 jp z,TextCommand0D ld a,$ee ; down arrow ld [$c4f2],a ; place down arrow in lower right corner of dialogue text box push bc call $3898 ; blink arrow and wait for A or B to be pressed pop bc ld a,$7f ; blank space ld [$c4f2],a ; overwrite down arrow with blank space pop hl jp NextTextCommand ; scroll text up one line ; 07 ; (no arguments) TextCommand07: ; 1BE7 ld a,$7f ; blank space ld [$c4f2],a ; place blank space in lower right corner of dialogue text box call $1b18 ; scroll up text call $1b18 pop hl ld bc,$c4e1 ; address of second line of dialogue text box jp NextTextCommand ; execute asm inline ; 08{code} TextCommand08: ; 1BF9 pop hl ld de,NextTextCommand push de ; return address jp [hl] ; print decimal number (converted from binary number) ; 09AAAABB ; AAAA = address of number ; BB ; bits 0-3 = how many digits to display ; bits 4-7 = how long the number is in bytes TextCommand09: ; 1BFF pop hl ld a,[hli] ld e,a ld a,[hli] ld d,a ld a,[hli] push hl ld h,b ld l,c ld b,a and a,$0f ld c,a ld a,b and a,$f0 swap a set 6,a ld b,a call PrintNumber ld b,h ld c,l pop hl jp NextTextCommand ; wait half a second if the user doesn't hold A or B ; 0A ; (no arguments) TextCommand0A: ; 1C1D push bc call GetJoypadState ld a,[$ffb4] and a,%00000011 ; A and B buttons jr nz,.skipDelay\@ ld c,30 call DelayFrames .skipDelay\@ pop bc pop hl jp NextTextCommand ; plays sounds ; this actually handles various command ID's, not just 0B ; (no arguments) TextCommand0B: ; 1C31 pop hl push bc dec hl ld a,[hli] ld b,a ; b = command number that got us here push hl ld hl,TextCommandSounds .loop\@ ld a,[hli] cp b jr z,.matchFound\@ inc hl jr .loop\@ .matchFound\@ cp a,$14 jr z,.pokemonCry\@ cp a,$15 jr z,.pokemonCry\@ cp a,$16 jr z,.pokemonCry\@ ld a,[hl] call $23b1 call $3748 pop hl pop bc jp NextTextCommand .pokemonCry\@ push de ld a,[hl] call $13d0 pop de pop hl pop bc jp NextTextCommand ; format: text command ID, sound ID or cry ID TextCommandSounds: ; 1C64 db $0B,$86 db $12,$9A db $0E,$91 db $0F,$86 db $10,$89 db $11,$94 db $13,$98 db $14,$A8 db $15,$97 db $16,$78 ; draw ellipses ; 0CAA ; AA = number of ellipses to draw TextCommand0C: ; 1C78 pop hl ld a,[hli] ld d,a push hl ld h,b ld l,c .loop\@ ld a,$75 ; ellipsis ld [hli],a push de call GetJoypadState pop de ld a,[$ffb4] ; joypad state and a,%00000011 ; is A or B button pressed? jr nz,.skipDelay\@ ; if so, skip the delay ld c,10 call DelayFrames .skipDelay\@ dec d jr nz,.loop\@ ld b,h ld c,l pop hl jp NextTextCommand ; wait for A or B to be pressed ; 0D ; (no arguments) TextCommand0D: ; 1C9A push bc call $3898 ; wait for A or B to be pressed pop bc pop hl jp NextTextCommand ; process text commands in another ROM bank ; 17AAAABB ; AAAA = address of text commands ; BB = bank TextCommand17: ; 1CA3 pop hl ld a,[$ffb8] push af ld a,[hli] ld e,a ld a,[hli] ld d,a ld a,[hli] ld [$ffb8],a ld [$2000],a push hl ld l,e ld h,d call TextCommandProcessor pop hl pop af ld [$ffb8],a ld [$2000],a jp NextTextCommand TextCommandJumpTable: ; 1CC1 dw TextCommand00 dw TextCommand01 dw TextCommand02 dw TextCommand03 dw TextCommand04 dw TextCommand05 dw TextCommand06 dw TextCommand07 dw TextCommand08 dw TextCommand09 dw TextCommand0A dw TextCommand0B dw TextCommand0C dw TextCommand0D ; this function seems to be used only once ; it store the address of a row and column of the VRAM background map in hl ; INPUT: h - row, l - column, b - high byte of background tile map address in VRAM GetRowColAddressBgMap: ; 1CDD xor a srl h rr a srl h rr a srl h rr a or l ld l,a ld a,b or h ld h,a ret ; clears a VRAM background map with blank space tiles ; INPUT: h - high byte of background tile map address in VRAM ClearBgMap: ; 1CF0 ld a,$7f ; blank space jr .next\@ ld a,l ; XXX does anything call this? .next\@ ld de,$400 ; size of VRAM background map ld l,e .loop\@ ld [hli],a dec e jr nz,.loop\@ dec d jr nz,.loop\@ ret ; When the player takes a step, a row or column of 2x2 tile blocks at the edge ; of the screen toward which they moved is exposed and has to be redrawn. ; This function does the redrawing. RedrawExposedScreenEdge: ; 1D01 ld a,[H_SCREENEDGEREDRAW] and a ret z ld b,a xor a ld [H_SCREENEDGEREDRAW],a dec b jr nz,.redrawRow\@ .redrawColumn\@ ld hl,W_SCREENEDGETILES ld a,[H_SCREENEDGEREDRAWADDR] ld e,a ld a,[H_SCREENEDGEREDRAWADDR + 1] ld d,a ld c,18 ; screen height .loop1\@ ld a,[hli] ld [de],a inc de ld a,[hli] ld [de],a ld a,31 add e ld e,a jr nc,.noCarry\@ inc d .noCarry\@ ; the following 4 lines wrap us from bottom to top if necessary ld a,d and a,$03 or a,$98 ld d,a dec c jr nz,.loop1\@ xor a ld [H_SCREENEDGEREDRAW],a ret .redrawRow\@ ld hl,W_SCREENEDGETILES ld a,[H_SCREENEDGEREDRAWADDR] ld e,a ld a,[H_SCREENEDGEREDRAWADDR + 1] ld d,a push de call .drawHalf\@ ; draw upper half pop de ld a,32 ; width of VRAM background map add e ld e,a ; draw lower half .drawHalf\@ ld c,10 .loop2\@ ld a,[hli] ld [de],a inc de ld a,[hli] ld [de],a ld a,e inc a ; the following 6 lines wrap us from the right edge to the left edge if necessary and a,$1f ld b,a ld a,e and a,$e0 or b ld e,a dec c jr nz,.loop2\@ ret ; This function automatically transfers tile number data from the tile map at ; C3A0 to VRAM during V-blank. Note that it only transfers one third of the ; background per V-blank. It cycles through which third it draws. ; This transfer is turned off when walking around the map, but is turned ; on when talking to sprites, battling, using menus, etc. This is because ; the above function, RedrawExposedScreenEdge, is used when walking to ; improve efficiency. AutoBgMapTransfer: ; 1D57 ld a,[H_AUTOBGTRANSFERENABLED] and a ret z ld hl,[sp + 0] ld a,h ld [H_SPTEMP],a ld a,l ld [H_SPTEMP + 1],a ; save stack pinter ld a,[H_AUTOBGTRANSFERPORTION] and a jr z,.transferTopThird\@ dec a jr z,.transferMiddleThird\@ .transferBottomThird\@ FuncCoord 0,12 ld hl,Coord ld sp,hl ld a,[H_AUTOBGTRANSFERDEST + 1] ld h,a ld a,[H_AUTOBGTRANSFERDEST] ld l,a ld de,(12 * 32) add hl,de xor a ; TRANSFERTOP jr .doTransfer\@ .transferTopThird\@ FuncCoord 0,0 ld hl,Coord ld sp,hl ld a,[H_AUTOBGTRANSFERDEST + 1] ld h,a ld a,[H_AUTOBGTRANSFERDEST] ld l,a ld a,TRANSFERMIDDLE jr .doTransfer\@ .transferMiddleThird\@ FuncCoord 0,6 ld hl,Coord ld sp,hl ld a,[H_AUTOBGTRANSFERDEST + 1] ld h,a ld a,[H_AUTOBGTRANSFERDEST] ld l,a ld de,(6 * 32) add hl,de ld a,TRANSFERBOTTOM .doTransfer\@ ld [H_AUTOBGTRANSFERPORTION],a ; store next portion ld b,6 ; unrolled loop and using pop for speed TransferBgRows: ; 1D9E pop de ld [hl],e inc l ld [hl],d inc l pop de ld [hl],e inc l ld [hl],d inc l pop de ld [hl],e inc l ld [hl],d inc l pop de ld [hl],e inc l ld [hl],d inc l pop de ld [hl],e inc l ld [hl],d inc l pop de ld [hl],e inc l ld [hl],d inc l pop de ld [hl],e inc l ld [hl],d inc l pop de ld [hl],e inc l ld [hl],d inc l pop de ld [hl],e inc l ld [hl],d inc l pop de ld [hl],e inc l ld [hl],d ld a,13 add l ld l,a jr nc,.noCarry\@ inc h .noCarry\@ dec b jr nz,TransferBgRows ld a,[H_SPTEMP] ld h,a ld a,[H_SPTEMP + 1] ld l,a ld sp,hl ; restore stack pointer ret ; Copies [H_VBCOPYBGNUMROWS] rows from H_VBCOPYBGSRC to H_VBCOPYBGDEST. ; If H_VBCOPYBGSRC is XX00, the transfer is disabled. VBlankCopyBgMap: ; 1DE1 ld a,[H_VBCOPYBGSRC] ; doubles as enabling byte and a ret z ld hl,[sp + 0] ld a,h ld [H_SPTEMP],a ld a,l ld [H_SPTEMP + 1],a ; save stack pointer ld a,[H_VBCOPYBGSRC] ld l,a ld a,[H_VBCOPYBGSRC + 1] ld h,a ld sp,hl ld a,[H_VBCOPYBGDEST] ld l,a ld a,[H_VBCOPYBGDEST + 1] ld h,a ld a,[H_VBCOPYBGNUMROWS] ld b,a xor a ld [H_VBCOPYBGSRC],a ; disable transfer so it doesn't continue next V-blank jr TransferBgRows ; This function copies ([H_VBCOPYDOUBLESIZE] * 8) source bytes ; from H_VBCOPYDOUBLESRC to H_VBCOPYDOUBLEDEST. ; It copies each source byte to the destination twice (next to each other). ; The function updates the source and destination addresses, so the transfer ; can be continued easily by repeatingly calling this function. VBlankCopyDouble: ; 1E02 ld a,[H_VBCOPYDOUBLESIZE] and a ; are there any bytes to copy? ret z ld hl,[sp + 0] ld a,h ld [H_SPTEMP],a ld a,l ld [H_SPTEMP + 1],a ; save stack pointer ld a,[H_VBCOPYDOUBLESRC] ld l,a ld a,[H_VBCOPYDOUBLESRC + 1] ld h,a ld sp,hl ld a,[H_VBCOPYDOUBLEDEST] ld l,a ld a,[H_VBCOPYDOUBLEDEST + 1] ld h,a ld a,[H_VBCOPYDOUBLESIZE] ld b,a xor a ld [H_VBCOPYDOUBLESIZE],a ; disable transfer so it doesn't continue next V-blank .loop\@ pop de ld [hl],e inc l ld [hl],e inc l ld [hl],d inc l ld [hl],d inc l pop de ld [hl],e inc l ld [hl],e inc l ld [hl],d inc l ld [hl],d inc l pop de ld [hl],e inc l ld [hl],e inc l ld [hl],d inc l ld [hl],d inc l pop de ld [hl],e inc l ld [hl],e inc l ld [hl],d inc l ld [hl],d inc hl dec b jr nz,.loop\@ ld a,l ld [H_VBCOPYDOUBLEDEST],a ld a,h ld [H_VBCOPYDOUBLEDEST + 1],a ; update destination address ld hl,[sp + 0] ld a,l ld [H_VBCOPYDOUBLESRC],a ld a,h ld [H_VBCOPYDOUBLESRC + 1],a ; update source address ld a,[H_SPTEMP] ld h,a ld a,[H_SPTEMP + 1] ld l,a ld sp,hl ; restore stack pointer ret ; Copies ([H_VBCOPYSIZE] * 16) bytes from H_VBCOPYSRC to H_VBCOPYDEST. ; The function updates the source and destination addresses, so the transfer ; can be continued easily by repeatingly calling this function. VBlankCopy: ; 1E5E ld a,[H_VBCOPYSIZE] and a ; are there any bytes to copy? ret z ld hl,[sp + 0] ld a,h ld [H_SPTEMP],a ld a,l ld [H_SPTEMP + 1],a ; save stack pointer ld a,[H_VBCOPYSRC] ld l,a ld a,[H_VBCOPYSRC + 1] ld h,a ld sp,hl ld a,[H_VBCOPYDEST] ld l,a ld a,[H_VBCOPYDEST + 1] ld h,a ld a,[H_VBCOPYSIZE] ld b,a xor a ld [H_VBCOPYSIZE],a ; disable transfer so it doesn't continue next V-blank .loop\@ pop de ld [hl],e inc l ld [hl],d inc l pop de ld [hl],e inc l ld [hl],d inc l pop de ld [hl],e inc l ld [hl],d inc l pop de ld [hl],e inc l ld [hl],d inc l pop de ld [hl],e inc l ld [hl],d inc l pop de ld [hl],e inc l ld [hl],d inc l pop de ld [hl],e inc l ld [hl],d inc l pop de ld [hl],e inc l ld [hl],d inc hl dec b jr nz,.loop\@ ld a,l ld [H_VBCOPYDEST],a ld a,h ld [H_VBCOPYDEST + 1],a ld hl,[sp + 0] ld a,l ld [H_VBCOPYSRC],a ld a,h ld [H_VBCOPYSRC + 1],a ld a,[H_SPTEMP] ld h,a ld a,[H_SPTEMP + 1] ld l,a ld sp,hl ; restore stack pointer ret ; This function updates the moving water and flower background tiles. UpdateMovingBgTiles: ; 1EBE ld a,[$ffd7] and a ret z ld a,[$ffd8] inc a ld [$ffd8],a cp a,20 ret c cp a,21 jr z,.updateFlowerTile\@ ld hl,$9140 ; water tile pattern VRAM location ld c,16 ; number of bytes in a tile pattern ld a,[$d085] inc a and a,$07 ld [$d085],a and a,$04 jr nz,.rotateWaterLeftLoop\@ .rotateWaterRightloop\@ ld a,[hl] rrca ld [hli],a dec c jr nz,.rotateWaterRightloop\@ jr .done\@ .rotateWaterLeftLoop\@ ld a,[hl] rlca ld [hli],a dec c jr nz,.rotateWaterLeftLoop\@ .done\@ ld a,[$ffd7] rrca ret nc xor a ld [$ffd8],a ret .updateFlowerTile\@ xor a ld [$ffd8],a ld a,[$d085] and a,$03 cp a,2 ld hl,FlowerTilePattern1 jr c,.writeTilePatternToVram\@ ld hl,FlowerTilePattern2 jr z,.writeTilePatternToVram\@ ld hl,FlowerTilePattern3 .writeTilePatternToVram\@ ld de,$9030 ; flower tile pattern VRAM location ld c,16 ; number of bytes in a tile pattern .flowerTileLoop\@ ld a,[hli] ld [de],a inc de dec c jr nz,.flowerTileLoop\@ ret FlowerTilePattern1: ; 1F19 INCBIN "baserom.gbc",$1f19,16 FlowerTilePattern2: ; 1F29 INCBIN "baserom.gbc",$1f29,16 FlowerTilePattern3: ; 1F39 INCBIN "baserom.gbc",$1f39,16 INCBIN "baserom.gbc",$1F49,$1F54 - $1F49 ; initialization code ; explanation for %11100011 (value stored in rLCDC) ; * LCD enabled ; * Window tile map at $9C00 ; * Window display enabled ; * BG and window tile data at $8800 ; * BG tile map at $9800 ; * 8x8 OBJ size ; * OBJ display enabled ; * BG display enabled InitGame: ; 1F54 di ; zero I/O registers xor a ld [$ff0f],a ld [$ffff],a ld [$ff43],a ld [$ff42],a ld [$ff01],a ld [$ff02],a ld [$ff4b],a ld [$ff4a],a ld [$ff06],a ld [$ff07],a ld [$ff47],a ld [$ff48],a ld [$ff49],a ld a,%10000000 ; enable LCD ld [rLCDC],a call DisableLCD ; why enable then disable? ld sp,$dfff ; initialize stack pointer ld hl,$c000 ; start of WRAM ld bc,$2000 ; size of WRAM .zeroWramLoop\@ ld [hl],0 inc hl dec bc ld a,b or c jr nz,.zeroWramLoop\@ call ZeroVram ld hl,$ff80 ld bc,$007f call $36e0 ; zero HRAM call CleanLCD_OAM ; this is unnecessary since it was already cleared above ld a,$01 ld [$ffb8],a ld [$2000],a call $4bed ; copy DMA code to HRAM xor a ld [$ffd7],a ld [$ff41],a ld [$ffae],a ld [$ffaf],a ld [$ff0f],a ld a,%00001101 ; enable V-blank, timer, and serial interrupts ld [rIE],a ld a,$90 ; put the window off the screen ld [$ffb0],a ld [rWY],a ld a,$07 ld [rWX],a ld a,$ff ld [$ffaa],a ld h,$98 call ClearBgMap ; fill $9800-$9BFF (BG tile map) with $7F tiles ld h,$9c call ClearBgMap ; fill $9C00-$9FFF (Window tile map) with $7F tiles ld a,%11100011 ld [rLCDC],a ; enabled LCD ld a,$10 ld [$ff8a],a call $200e ei ld a,$40 call Predef ; SGB border ld a,$1f ld [$c0ef],a ld [$c0f0],a ld a,$9c ld [$ffbd],a xor a ld [$ffbc],a dec a ld [$cfcb],a ld a,$32 call Predef ; display the copyrights, GameFreak logo, and battle animation call DisableLCD call ZeroVram call GBPalNormal call CleanLCD_OAM ld a,%11100011 ld [rLCDC],a ; enable LCD jp $42b7 ; zeroes all VRAM ZeroVram: ; 2004 ld hl,$8000 ld bc,$2000 xor a jp $36e0 INCBIN "baserom.gbc",$200E,$2024 - $200E VBlankHandler: ; 2024 push af push bc push de push hl ld a,[$ffb8] ; current ROM bank ld [$d122],a ld a,[$ffae] ld [rSCX],a ld a,[$ffaf] ld [rSCY],a ld a,[$d0a0] and a jr nz,.doVramTransfers\@ ld a,[$ffb0] ld [rWY],a .doVramTransfers\@ call AutoBgMapTransfer call VBlankCopyBgMap call RedrawExposedScreenEdge call VBlankCopy call VBlankCopyDouble call UpdateMovingBgTiles call $ff80 ; OAM DMA ld a,$01 ld [$ffb8],a ld [$2000],a call $4b0f ; update OAM buffer with current sprite data call GenRandom ld a,[H_VBLANKOCCURRED] and a jr z,.next\@ xor a ld [H_VBLANKOCCURRED],a .next\@ ld a,[H_FRAMECOUNTER] and a jr z,.handleMusic\@ dec a ld [H_FRAMECOUNTER],a .handleMusic\@ call $28cb ld a,[$c0ef] ; music ROM bank ld [$ffb8],a ld [$2000],a cp a,$02 jr nz,.checkIfBank08\@ .bank02\@ call $5103 jr .afterMusic\@ .checkIfBank08\@ cp a,$08 jr nz,.bank1F\@ .bank08\@ call $536e call $5879 jr .afterMusic\@ .bank1F\@ call $5177 .afterMusic\@ ld b,$06 ld hl,$4dee call Bankswitch ; keep track of time played ld a,[$fff9] and a call z,ReadJoypadRegister ld a,[$d122] ld [$ffb8],a ld [$2000],a pop hl pop de pop bc pop af reti DelayFrame: ; 20AF ; delay for one frame ld a,1 ld [H_VBLANKOCCURRED],a ; wait for the next Vblank, halting to conserve battery .halt\@ db $76 ; XXX this is a hack--rgbasm adds a nop after this instr even when ints are enabled ld a,[H_VBLANKOCCURRED] and a jr nz,.halt\@ ret ; These routines manage gradual fading ; (e.g., entering a doorway) LoadGBPal: ; 20BA ld a,[$d35d] ;tells if cur.map is dark (requires HM5_FLASH?) ld b,a ld hl,GBPalTable_00 ;16 ld a,l sub b ld l,a jr nc,.jr0\@ dec h .jr0\@ ld a,[hli] ld [rBGP],a ld a,[hli] ld [rOBP0],a ld a,[hli] ld [rOBP1],a ret GBFadeOut1: ; 20D1 ld hl,IncGradGBPalTable_01 ;0d ld b,$04 jr GBFadeOutCommon GBFadeOut2: ; 20D8 ld hl,IncGradGBPalTable_02 ;1c ld b,$03 GBFadeOutCommon: ; 0x20dd ld a,[hli] ld [rBGP],a ld a,[hli] ld [rOBP0],a ld a,[hli] ld [rOBP1],a ld c,8 call DelayFrames dec b jr nz,GBFadeOutCommon ret GBFadeIn1: ; 20EF ld hl,DecGradGBPalTable_01 ;18 ld b,$04 jr GBFadeInCommon GBFadeIn2: ; 20F6 ld hl,DecGradGBPalTable_02 ;21 ld b,$03 GBFadeInCommon: ; 0x20fb ld a,[hld] ld [rOBP1],a ld a,[hld] ld [rOBP0],a ld a,[hld] ld [rBGP],a ld c,8 call DelayFrames dec b jr nz,GBFadeInCommon ret IncGradGBPalTable_01: ; 210D db %11111111 ;BG Pal db %11111111 ;OBJ Pal 1 db %11111111 ;OBJ Pal 2 ;and so on... db %11111110 db %11111110 db %11111000 db %11111001 db %11100100 db %11100100 GBPalTable_00: ; 0x2116 16 db %11100100 db %11010000 DecGradGBPalTable_01: ; 0x2118 18 db %11100000 ;19 db %11100100 db %11010000 db %11100000 IncGradGBPalTable_02: ; 0x211c db %10010000 db %10000000 db %10010000 db %01000000 db %01000000 DecGradGBPalTable_02: ; 0x2121 db %01000000 db %00000000 db %00000000 db %00000000 INCBIN "baserom.gbc",$2125,$2442 - $2125 ; XXX where is the pointer to this data? MartInventories: ; 2442 ; first byte $FE, next byte # of items, last byte $FF ; Viridian ViridianMartText4: ; 2442 XXX confirm db $FE,4,POKE_BALL,ANTIDOTE,PARLYZ_HEAL,BURN_HEAL,$FF ; Pewter PewterMartText1: ; 2449 db $FE,7,POKE_BALL,POTION,ESCAPE_ROPE,ANTIDOTE,BURN_HEAL,AWAKENING db PARLYZ_HEAL,$FF ; Cerulean CeruleanMartText1: ; 2453 db $FE,7,POKE_BALL,POTION,REPEL,ANTIDOTE,BURN_HEAL,AWAKENING db PARLYZ_HEAL,$FF ; Bike shop db $FE,1,BICYCLE,$FF ; Vermilion VermilionMartText1: ; 2461 db $FE,6,POKE_BALL,SUPER_POTION,ICE_HEAL,AWAKENING,PARLYZ_HEAL db REPEL,$FF ; Lavender LavenderMartText1: ; 246a db $FE,9,GREAT_BALL,SUPER_POTION,REVIVE,ESCAPE_ROPE,SUPER_REPEL db ANTIDOTE,BURN_HEAL,ICE_HEAL,PARLYZ_HEAL,$FF ; Celadon Dept. Store 2F (1) CeladonMart2Text1: ; 2476 db $FE,9,GREAT_BALL,SUPER_POTION,REVIVE,SUPER_REPEL,ANTIDOTE db BURN_HEAL,ICE_HEAL,AWAKENING,PARLYZ_HEAL,$FF ; Celadon Dept. Store 2F (2) CeladonMart2Text2: ; 2482 db $FE,9,TM_32,TM_33,TM_02,TM_07,TM_37,TM_01,TM_05,TM_09,TM_17,$FF ; Celadon Dept. Store 4F CeladonMart4Text1: ; 248e db $FE,5,POKE_DOLL,FIRE_STONE,THUNDER_STONE,WATER_STONE,LEAF_STONE,$FF ; Celadon Dept. Store 5F (1) CeladonMart5Text3: ; 2496 db $FE,7,X_ACCURACY,GUARD_SPEC_,DIRE_HIT,X_ATTACK,X_DEFEND,X_SPEED db X_SPECIAL,$FF ; Celadon Dept. Store 5F (2) CeladonMart5Text4: ; 24a0 db $FE,5,HP_UP,PROTEIN,IRON,CARBOS,CALCIUM,$FF ; Fuchsia FuchsiaMartText1: ; 24a8 db $FE,6,ULTRA_BALL,GREAT_BALL,SUPER_POTION,REVIVE,FULL_HEAL db SUPER_REPEL,$FF ; unused? 24b1 db $FE,5,GREAT_BALL,HYPER_POTION,SUPER_POTION,FULL_HEAL,REVIVE,$FF ; Cinnabar CinnabarMartText1: ; 24b9 db $FE,7,ULTRA_BALL,GREAT_BALL,HYPER_POTION,MAX_REPEL,ESCAPE_ROPE db FULL_HEAL,REVIVE,$FF ; Saffron SaffronMartText1: ; 24c3 db $FE,6,GREAT_BALL,HYPER_POTION,MAX_REPEL,ESCAPE_ROPE,FULL_HEAL db REVIVE,$FF ; Indigo IndigoPlateauLobbyText4: ; 24cc db $FE,7,ULTRA_BALL,GREAT_BALL,FULL_RESTORE,MAX_POTION,FULL_HEAL db REVIVE,MAX_REPEL,$FF TextScriptEndingChar: ; 24D6 db "@" TextScriptEnd: ; 24D7 24d7 ld hl,TextScriptEndingChar ret UnnamedText_24db: ; 0x24db TX_FAR _UnnamedText_24db db $50 ; 0x24db + 5 bytes UnnamedText_24e0: ; 0x24e0 TX_FAR _UnnamedText_24e0 db $50 ; 0x24e0 + 5 bytes VictoryRoad3Text10: VictoryRoad3Text9: VictoryRoad3Text8: VictoryRoad3Text7: VictoryRoad2Text13: VictoryRoad2Text12: VictoryRoad2Text11: SeafoamIslands1Text2: SeafoamIslands1Text1: SeafoamIslands5Text2: SeafoamIslands5Text1: SeafoamIslands4Text6: SeafoamIslands4Text5: SeafoamIslands4Text4: SeafoamIslands4Text3: SeafoamIslands4Text2: SeafoamIslands4Text1: SeafoamIslands3Text2: SeafoamIslands3Text1: SeafoamIslands2Text2: SeafoamIslands2Text1: FuchsiaHouse2Text3: VictoryRoad1Text7: VictoryRoad1Text6: VictoryRoad1Text5: ; 0x24e5 TX_FAR _VictoryRoad1Text5 db $50 SaffronCityText19: CinnabarIslandText4: FuchsiaCityText14: VermilionCityText9: LavenderTownText6: CeruleanCityText14: PewterCityText8: ViridianCityText11: ; 0x24ea TX_FAR _ViridianCityText11 db $50 PewterCityText9: CeruleanCityText15: LavenderTownText7: VermilionCityText10: CeladonCityText12: FuchsiaCityText15: CinnabarIslandText5: SaffronCityText23: Route4Text4: Route10Text8: ViridianCityText12: ; 0x24ef TX_FAR _ViridianCityText12 db $50 Route2Text1: Route4Text3: Route9Text10: Route12Text9: Route12Text10: Route15Text11: Route24Text8: Route25Text10: ViridianGymText11: ViridianForestText5: ViridianForestText6: ViridianForestText7: MtMoon1Text8: MtMoon1Text9: MtMoon1Text10: MtMoon1Text11: MtMoon1Text12: MtMoon1Text13: MtMoon3Text8: MtMoon3Text9: PowerPlantText10: PowerPlantText11: PowerPlantText12: PowerPlantText13: PowerPlantText14: SSAnne8Text10: SSAnne9Text6: SSAnne9Text9: SSAnne10Text9: SSAnne10Text10: SSAnne10Text11: VictoryRoad1Text3: VictoryRoad1Text4: PokemonTower3Text4: PokemonTower4Text4: PokemonTower4Text5: PokemonTower4Text6: PokemonTower5Text6: PokemonTower6Text4: PokemonTower6Text5: FuchsiaHouse2Text2: VictoryRoad2Text7: VictoryRoad2Text8: VictoryRoad2Text9: VictoryRoad2Text10: VictoryRoad3Text5: VictoryRoad3Text6: RocketHideout1Text6: RocketHideout1Text7: RocketHideout2Text2: RocketHideout2Text3: RocketHideout2Text4: RocketHideout2Text5: RocketHideout3Text3: RocketHideout3Text4: RocketHideout4Text5: RocketHideout4Text6: RocketHideout4Text7: RocketHideout4Text8: RocketHideout4Text9: SilphCo3Text4: SilphCo4Text5: SilphCo4Text6: SilphCo4Text7: SilphCo5Text6: SilphCo5Text7: SilphCo5Text8: SilphCo6Text9: SilphCo6Text10: SilphCo7Text10: SilphCo7Text11: SilphCo7Text12: Mansion1Text2: Mansion1Text3: Mansion2Text2: Mansion3Text3: Mansion3Text4: Mansion4Text3: Mansion4Text4: Mansion4Text5: Mansion4Text6: Mansion4Text8: SafariZoneEastText1: SafariZoneEastText2: SafariZoneEastText3: SafariZoneEastText4: SafariZoneNorthText1: SafariZoneNorthText2: SafariZoneWestText1: SafariZoneWestText2: SafariZoneWestText3: SafariZoneWestText4: SafariZoneCenterText1: UnknownDungeon2Text1: UnknownDungeon2Text2: UnknownDungeon2Text3: UnknownDungeon3Text2: UnknownDungeon3Text3: UnknownDungeon1Text1: UnknownDungeon1Text2: UnknownDungeon1Text3: SilphCo10Text4: SilphCo10Text5: SilphCo10Text6: Route2Text2: ; 24f4 0x424f4 db $08 ; asm ld a, $5c call Predef jp TextScriptEnd INCBIN "baserom.gbc",$24fd,$2920 - $24fd ; this function is used to display sign messages, sprite dialog, etc. ; INPUT: [$ff8c] = sprite ID or text ID DisplayTextID: ; 2920 ld a,[$ffb8] push af ld b,BANK(DisplayTextIDInit) ld hl,DisplayTextIDInit ; initialization call Bankswitch ld hl,$cf11 bit 0,[hl] res 0,[hl] jr nz,.skipSwitchToMapBank\@ ld a,[W_CURMAP] call SwitchToMapRomBank .skipSwitchToMapBank\@ ld a,30 ; half a second ld [H_FRAMECOUNTER],a ; used as joypad poll timer ld hl,W_MAPTEXTPTR ld a,[hli] ld h,[hl] ld l,a ; hl = map text pointer ld d,$00 ld a,[$ff8c] ; text ID ld [$cf13],a and a jp z,DisplayStartMenu cp a,$d3 ; safari game over jp z,DisplaySafariGameOverText cp a,$d0 ; fainted jp z,DisplayPokemonFaintedText cp a,$d1 ; blacked out jp z,DisplayPlayerBlackedOutText cp a,$d2 ; repel wore off jp z,DisplayRepelWoreOffText ld a,[$d4e1] ; number of sprites ld e,a ld a,[$ff8c] ; sprite ID cp e jr z,.spriteHandling\@ jr nc,.skipSpriteHandling\@ .spriteHandling\@ ; get the text ID of the sprite push hl push de push bc ld b,$04 ld hl,$7074 call Bankswitch ; update the graphics of the sprite the player is talking to (to face the right direction) pop bc pop de ld hl,$d4e4 ; NPC text entries ld a,[$ff8c] dec a add a add l ld l,a jr nc,.noCarry\@ inc h .noCarry\@ inc hl ld a,[hl] ; a = text ID of the sprite pop hl .skipSpriteHandling\@ ; look up the address of the text in the map's text entries dec a ld e,a sla e add hl,de ld a,[hli] ld h,[hl] ld l,a ; hl = address of the text ld a,[hl] ; a = first byte of text ; check first byte of text for special cases cp a,$fe ; Pokemart NPC jp z,DisplayPokemartDialogue cp a,$ff ; Pokemon Center NPC jp z,DisplayPokemonCenterDialogue cp a,$fc ; Item Storage PC jp z,$3460 cp a,$fd ; Bill's PC jp z,$346a cp a,$f9 ; Pokemon Center PC jp z,$347f cp a,$f5 ; Vending Machine jr nz,.notVendingMachine\@ ld b,$1d ld hl,Unknown_74ee0 call Bankswitch jr AfterDisplayingTextID .notVendingMachine\@ cp a,$f7 ; slot machine jp z,$3474 cp a,$f6 ; cable connection NPC in Pokemon Center jr nz,.notSpecialCase\@ ld hl,$71c5 ld b,$01 call Bankswitch jr AfterDisplayingTextID .notSpecialCase\@ call $3c59 ; display the text ld a,[$cc3c] and a jr nz,HoldTextDisplayOpen AfterDisplayingTextID: ; 29D6 ld a,[$cc47] and a jr nz,HoldTextDisplayOpen call $3865 ; wait for a button press after displaying all the text ; loop to hold the dialogue box open as long as the player keeps holding down the A button HoldTextDisplayOpen: ; 29DF call GetJoypadState ld a,[$ffb4] bit 0,a ; is the A button being pressed? jr nz,HoldTextDisplayOpen CloseTextDisplay: ; 29E8 ld a,[W_CURMAP] call SwitchToMapRomBank ld a,$90 ld [$ffb0],a ; move the window off the screen call DelayFrame call LoadGBPal xor a ld [H_AUTOBGTRANSFERENABLED],a ; disable continuous WRAM to VRAM transfer each V-blank ; loop to make sprites face the directions they originally faced before the dialogue ld hl,$c219 ld c,$0f ld de,$0010 .restoreSpriteFacingDirectionLoop\@ ld a,[hl] dec h ld [hl],a inc h add hl,de dec c jr nz,.restoreSpriteFacingDirectionLoop\@ ld a,BANK(InitMapSprites) ld [$ffb8],a ld [$2000],a call InitMapSprites ; reload sprite tile pattern data (since it was partially overwritten by text tile patterns) ld hl,$cfc4 res 0,[hl] ld a,[$d732] bit 3,a call z,LoadPlayerSpriteGraphics call LoadCurrentMapView pop af ld [$ffb8],a ld [$2000],a jp $2429 ; move sprites DisplayPokemartDialogue: ; 2A2E push hl ld hl,PokemartGreetingText call PrintText pop hl inc hl call LoadItemList ld a,$02 ld [$cf94],a ; selects between subtypes of menus ld a,[$ffb8] push af ld a,$01 ld [$ffb8],a ld [$2000],a call DisplayPokemartDialogue_ pop af ld [$ffb8],a ld [$2000],a jp AfterDisplayingTextID PokemartGreetingText: ; 0x2a55 TX_FAR _PokemartGreetingText db $50 LoadItemList: ; 2A5A ld a,$01 ld [$cfcb],a ld a,h ld [$d128],a ld a,l ld [$d129],a ld de,$cf7b .loop\@ ld a,[hli] ld [de],a inc de cp a,$ff jr nz,.loop\@ ret DisplayPokemonCenterDialogue: ; 2A72 xor a ld [$ff8b],a ld [$ff8c],a ld [$ff8d],a inc hl ld a,[$ffb8] push af ld a,$01 ld [$ffb8],a ld [$2000],a call DisplayPokemonCenterDialogue_ pop af ld [$ffb8],a ld [$2000],a jp AfterDisplayingTextID DisplaySafariGameOverText: ; 2A90 ld hl,$69ed ld b,$07 call Bankswitch jp AfterDisplayingTextID DisplayPokemonFaintedText: ; 2A9B ld hl,PokemonFaintedText call PrintText jp AfterDisplayingTextID PokemonFaintedText: ; 0x2aa4 TX_FAR _PokemonFaintedText db $50 DisplayPlayerBlackedOutText: ; 2AA9 ld hl,PlayerBlackedOutText call PrintText ld a,[$d732] res 5,a ld [$d732],a jp HoldTextDisplayOpen PlayerBlackedOutText: ; 0x2aba TX_FAR _PlayerBlackedOutText db $50 DisplayRepelWoreOffText: ; 2ABF ld hl,RepelWoreOffText call PrintText jp AfterDisplayingTextID RepelWoreOffText: ; 0x2ac8 TX_FAR _RepelWoreOffText db $50 DisplayStartMenu: ; 2ACD ld a,$04 ld [$ffb8],a ld [$2000],a ; ROM bank 4 ld a,[$d700] ; walking/biking/surfing ld [$d11a],a ld a,$8f ; Start menu sound call $23b1 RedisplayStartMenu: ; 2ADF ld b,BANK(DrawStartMenu) ld hl,DrawStartMenu call Bankswitch ld b,$03 ld hl,$452f call Bankswitch ; print Safari Zone info, if in Safari Zone call $2429 ; move sprites .loop\@ call HandleMenuInput ld b,a .checkIfUpPressed\@ bit 6,a ; was Up pressed? jr z,.checkIfDownPressed\@ ld a,[W_CURMENUITEMID] ; menu selection and a jr nz,.loop\@ ld a,[W_OLDMENUITEMID] and a jr nz,.loop\@ ; if the player pressed tried to go past the top item, wrap around to the bottom ld a,[$d74b] bit 5,a ; does the player have the pokedex? ld a,6 ; there are 7 menu items with the pokedex, so the max index is 6 jr nz,.wrapMenuItemId\@ dec a ; there are only 6 menu items without the pokedex .wrapMenuItemId\@ ld [W_CURMENUITEMID],a call EraseMenuCursor jr .loop\@ .checkIfDownPressed\@ bit 7,a jr z,.buttonPressed\@ ; if the player pressed tried to go past the bottom item, wrap around to the top ld a,[$d74b] bit 5,a ; does the player have the pokedex? ld a,[W_CURMENUITEMID] ld c,7 ; there are 7 menu items with the pokedex jr nz,.checkIfPastBottom\@ dec c ; there are only 6 menu items without the pokedex .checkIfPastBottom\@ cp c jr nz,.loop\@ ; the player went past the bottom, so wrap to the top xor a ld [W_CURMENUITEMID],a call EraseMenuCursor jr .loop\@ .buttonPressed\@ ; A, B, or Start button pressed call PlaceUnfilledArrowMenuCursor ld a,[W_CURMENUITEMID] ld [$cc2d],a ; save current menu item ID ld a,b and a,%00001010 ; was the Start button or B button pressed? jp nz,CloseStartMenu call $36f4 ; copy background from $C3A0 to $CD81 ld a,[$d74b] bit 5,a ; does the player have the pokedex? ld a,[W_CURMENUITEMID] jr nz,.displayMenuItem\@ inc a ; adjust position to account for missing pokedex menu item .displayMenuItem\@ cp a,0 jp z,StartMenu_Pokedex cp a,1 jp z,StartMenu_Pokemon cp a,2 jp z,StartMenu_Item cp a,3 jp z,StartMenu_TrainerInfo cp a,4 jp z,StartMenu_SaveReset cp a,5 jp z,StartMenu_Option ; EXIT falls through to here CloseStartMenu: ; 2B70 call GetJoypadState ld a,[$ffb3] bit 0,a ; was A button newly pressed? jr nz,CloseStartMenu call LoadTextBoxTilePatterns jp CloseTextDisplay ; function to count how many bits are set in a string of bytes ; INPUT: ; hl = address of string of bytes ; b = length of string of bytes ; OUTPUT: ; [$D11E] = number of set bits CountSetBits: ; 2B7F ld c,0 .loop\@ ld a,[hli] ld e,a ld d,8 .innerLoop\@ ; count how many bits are set in the current byte srl e ld a,0 adc c ld c,a dec d jr nz,.innerLoop\@ dec b jr nz,.loop\@ ld a,c ld [$d11e],a ; store number of set bits ret ; subtracts the amount the player paid from their money ; sets carry flag if there is enough money and unsets carry flag if not SubtractAmountPaidFromMoney: ; 2B96 ld b,BANK(SubtractAmountPaidFromMoney_) ld hl,SubtractAmountPaidFromMoney_ jp Bankswitch ; adds the amount the player sold to their money AddAmountSoldToMoney: ; 2B9E ld de,W_PLAYERMONEY1 ld hl,$ffa1 ; total price of items ld c,3 ; length of money in bytes ld a,$0b call Predef ; add total price to money ld a,$13 ld [$d125],a call DisplayTextBoxID ; redraw money text box ld a,$b2 call $3740 ; play sound jp $3748 ; wait until sound is done playing ; function to remove an item (in varying quantities) from the player's bag or PC box ; INPUT: ; HL = address of inventory (either W_NUMBAGITEMS or W_NUMBOXITEMS) ; [$CF92] = index (within the inventory) of the item to remove ; [$CF96] = quantity to remove RemoveItemFromInventory: ; 2BBB ld a,[$ffb8] push af ld a,BANK(RemoveItemFromInventory_) ld [$ffb8],a ld [$2000],a call RemoveItemFromInventory_ pop af ld [$ffb8],a ld [$2000],a ret ; function to add an item (in varying quantities) to the player's bag or PC box ; INPUT: ; HL = address of inventory (either W_NUMBAGITEMS or W_NUMBOXITEMS) ; [$CF91] = item ID ; [$CF96] = item quantity ; sets carry flag if successful, unsets carry flag if unsuccessful AddItemToInventory: ; 2BCF push bc ld a,[$ffb8] push af ld a,BANK(AddItemToInventory_) ld [$ffb8],a ld [$2000],a call AddItemToInventory_ pop bc ld a,b ld [$ffb8],a ld [$2000],a pop bc ret ; INPUT: ; [W_LISTMENUID] = list menu ID ; [$cf8b] = address of the list (2 bytes) DisplayListMenuID: ; 2BE6 xor a ld [H_AUTOBGTRANSFERENABLED],a ; disable auto-transfer ld a,1 ld [$ffb7],a ; joypad state update flag ld a,[W_BATTLETYPE] and a ; is it the Old Man battle? jr nz,.specialBattleType\@ ld a,$01 jr .bankswitch\@ .specialBattleType\@ ; Old Man battle ld a,$0f .bankswitch\@ call BankswitchHome ld hl,$d730 set 6,[hl] ; turn off letter printing delay xor a ld [$cc35],a ; 0 means no item is currently being swapped ld [$d12a],a ld a,[$cf8b] ld l,a ld a,[$cf8c] ld h,a ; hl = address of the list ld a,[hl] ld [$d12a],a ; [$d12a] = number of list entries ld a,$0d ; list menu text box ID ld [$d125],a call DisplayTextBoxID ; draw the menu text box call $2429 ; move sprites FuncCoord 4,2 ; coordinates of upper left corner of menu text box ld hl,Coord ld de,$090e ; height and width of menu text box ld a,[W_LISTMENUID] and a ; is it a PC pokemon list? jr nz,.skipMovingSprites\@ call $2429 ; move sprites .skipMovingSprites\@ ld a,1 ; max menu item ID is 1 if the list has less than 2 entries ld [$cc37],a ld a,[$d12a] cp a,2 ; does the list have less than 2 entries? jr c,.setMenuVariables\@ ld a,2 ; max menu item ID is 2 if the list has at least 2 entries .setMenuVariables\@ ld [W_MAXMENUITEMID],a ld a,4 ld [W_TOPMENUITEMY],a ld a,5 ld [W_TOPMENUITEMX],a ld a,%00000111 ; A button, B button, Select button ld [W_MENUWATCHEDKEYS],a ld c,10 call DelayFrames DisplayListMenuIDLoop: ; 2C53 xor a ld [H_AUTOBGTRANSFERENABLED],a ; disable transfer call PrintListMenuEntries ld a,1 ld [H_AUTOBGTRANSFERENABLED],a ; enable transfer call Delay3 ld a,[W_BATTLETYPE] and a ; is it the Old Man battle? jr z,.notOldManBattle\@ .oldManBattle\@ ld a,$ed ; right arrow menu cursor FuncCoord 5,4 ld [Coord],a ; place menu cursor in front of first menu entry ld c,80 call DelayFrames xor a ld [W_CURMENUITEMID],a ld hl,Coord ld a,l ld [W_MENUCURSORLOCATION],a ld a,h ld [W_MENUCURSORLOCATION + 1],a jr .buttonAPressed\@ .notOldManBattle\@ call LoadGBPal call HandleMenuInput push af call PlaceMenuCursor pop af bit 0,a ; was the A button pressed? jp z,.checkOtherKeys\@ .buttonAPressed\@ ld a,[W_CURMENUITEMID] call PlaceUnfilledArrowMenuCursor ld a,$01 ld [$d12e],a ld [$d12d],a xor a ld [$cc37],a ld a,[W_CURMENUITEMID] ld c,a ld a,[W_LISTSCROLLOFFSET] add c ld c,a ld a,[$d12a] ; number of list entries and a ; is the list empty? jp z,ExitListMenu ; if so, exit the menu dec a cp c ; did the player select Cancel? jp c,ExitListMenu ; if so, exit the menu ld a,c ld [$cf92],a ld a,[W_LISTMENUID] cp a,ITEMLISTMENU jr nz,.skipMultiplying\@ ; if it's an item menu sla c ; item entries are 2 bytes long, so multiply by 2 .skipMultiplying\@ ld a,[$cf8b] ld l,a ld a,[$cf8c] ld h,a inc hl ; hl = beginning of list entries ld b,0 add hl,bc ld a,[hl] ld [$cf91],a ld a,[W_LISTMENUID] and a ; is it a PC pokemon list? jr z,.pokemonList\@ push hl call $37df pop hl ld a,[W_LISTMENUID] cp a,ITEMLISTMENU jr nz,.skipGettingQuantity\@ ; if it's an item menu inc hl ld a,[hl] ; a = item quantity ld [$cf97],a .skipGettingQuantity\@ ld a,[$cf91] ld [$d0b5],a ld a,$01 ld [$d0b7],a call GetName jr .storeChosenEntry\@ .pokemonList\@ ld hl,W_NUMINPARTY ld a,[$cf8b] cp l ; is it a list of party pokemon or box pokemon? ld hl,W_PARTYMON1NAME jr z,.getPokemonName\@ ld hl,$de06 ; box pokemon names .getPokemonName\@ ld a,[$cf92] call GetPartyMonName .storeChosenEntry\@ ; store the menu entry that the player chose and return ld de,$cd6d call $3826 ; copy name to $cf4b ld a,$01 ld [$d12e],a ld a,[W_CURMENUITEMID] ld [$d12d],a xor a ld [$ffb7],a ; joypad state update flag ld hl,$d730 res 6,[hl] ; turn on letter printing delay jp BankswitchBack .checkOtherKeys\@ ; check B, SELECT, Up, and Down keys bit 1,a ; was the B button pressed? jp nz,ExitListMenu ; if so, exit the menu bit 2,a ; was the select button pressed? jp nz,HandleItemListSwapping ; if so, allow the player to swap menu entries ld b,a bit 7,b ; was Down pressed? ld hl,W_LISTSCROLLOFFSET jr z,.upPressed\@ .downPressed\@ ld a,[hl] add a,3 ld b,a ld a,[$d12a] ; number of list entries cp b ; will going down scroll past the Cancel button? jp c,DisplayListMenuIDLoop inc [hl] ; if not, go down jp DisplayListMenuIDLoop .upPressed\@ ld a,[hl] and a jp z,DisplayListMenuIDLoop dec [hl] jp DisplayListMenuIDLoop DisplayChooseQuantityMenu: ; 2D57 ; text box dimensions/coordinates for just quantity FuncCoord 15,9 ld hl,Coord ld b,1 ; height ld c,3 ; width ld a,[W_LISTMENUID] cp a,PRICEDITEMLISTMENU jr nz,.drawTextBox\@ ; text box dimensions/coordinates for quantity and price FuncCoord 7,9 ld hl,Coord ld b,1 ; height ld c,11 ; width .drawTextBox\@ call TextBoxBorder FuncCoord 16,10 ld hl,Coord ld a,[W_LISTMENUID] cp a,PRICEDITEMLISTMENU jr nz,.printInitialQuantity\@ FuncCoord 8,10 ld hl,Coord .printInitialQuantity\@ ld de,InitialQuantityText call PlaceString xor a ld [$cf96],a ; initialize current quantity to 0 jp .incrementQuantity\@ .waitForKeyPressLoop\@ call GetJoypadStateLowSensitivity ld a,[$ffb3] ; newly pressed buttons bit 0,a ; was the A button pressed? jp nz,.buttonAPressed\@ bit 1,a ; was the B button pressed? jp nz,.buttonBPressed\@ bit 6,a ; was Up pressed? jr nz,.incrementQuantity\@ bit 7,a ; was Down pressed? jr nz,.decrementQuantity\@ jr .waitForKeyPressLoop\@ .incrementQuantity\@ ld a,[$cf97] ; max quantity inc a ld b,a ld hl,$cf96 ; current quantity inc [hl] ld a,[hl] cp b jr nz,.handleNewQuantity\@ ; wrap to 1 if the player goes above the max quantity ld a,1 ld [hl],a jr .handleNewQuantity\@ .decrementQuantity\@ ld hl,$cf96 ; current quantity dec [hl] jr nz,.handleNewQuantity\@ ; wrap to the max quantity if the player goes below 1 ld a,[$cf97] ; max quantity ld [hl],a .handleNewQuantity\@ FuncCoord 17,10 ld hl,Coord ld a,[W_LISTMENUID] cp a,PRICEDITEMLISTMENU jr nz,.printQuantity\@ .printPrice\@ ld c,$03 ld a,[$cf96] ld b,a ld hl,$ff9f ; total price ; initialize total price to 0 xor a ld [hli],a ld [hli],a ld [hl],a .addLoop\@ ; loop to multiply the individual price by the quantity to get the total price ld de,$ffa1 ld hl,$ff8d push bc ld a,$0b call Predef ; add the individual price to the current sum pop bc dec b jr nz,.addLoop\@ ld a,[$ff8e] and a ; should the price be halved (for selling items)? jr z,.skipHalvingPrice\@ xor a ld [$ffa2],a ld [$ffa3],a ld a,$02 ld [$ffa4],a ld a,$0d call Predef ; halves the price ; store the halved price ld a,[$ffa2] ld [$ff9f],a ld a,[$ffa3] ld [$ffa0],a ld a,[$ffa4] ld [$ffa1],a .skipHalvingPrice\@ FuncCoord 12,10 ld hl,Coord ld de,SpacesBetweenQuantityAndPriceText call PlaceString ld de,$ff9f ; total price ld c,$a3 call PrintBCDNumber FuncCoord 9,10 ld hl,Coord .printQuantity\@ ld de,$cf96 ; current quantity ld bc,$8102 ; print leading zeroes, 1 byte, 2 digits call PrintNumber jp .waitForKeyPressLoop\@ .buttonAPressed\@ ; the player chose to make the transaction xor a ld [$cc35],a ; 0 means no item is currently being swapped ret .buttonBPressed\@ ; the player chose to cancel the transaction xor a ld [$cc35],a ; 0 means no item is currently being swapped ld a,$ff ret InitialQuantityText: ; 2E30 db $f1,"01@" SpacesBetweenQuantityAndPriceText: ; 2E34 db " @" ExitListMenu: ; 2E3B ld a,[W_CURMENUITEMID] ld [$d12d],a ld a,$02 ld [$d12e],a ld [$cc37],a xor a ld [$ffb7],a ld hl,$d730 res 6,[hl] call BankswitchBack xor a ld [$cc35],a ; 0 means no item is currently being swapped scf ret PrintListMenuEntries: ; 2E5A ld hl,$c3e1 ld b,$09 ld c,$0e call ClearScreenArea ld a,[$cf8b] ld e,a ld a,[$cf8c] ld d,a inc de ; de = beginning of list entries ld a,[W_LISTSCROLLOFFSET] ld c,a ld a,[W_LISTMENUID] cp a,ITEMLISTMENU ld a,c jr nz,.skipMultiplying\@ ; if it's an item menu ; item entries are 2 bytes long, so multiply by 2 sla a sla c .skipMultiplying\@ add e ld e,a jr nc,.noCarry\@ inc d .noCarry\@ FuncCoord 6,4 ; coordinates of first list entry name ld hl,Coord ld b,4 ; print 4 names .loop\@ ld a,b ld [$cf92],a ld a,[de] ld [$d11e],a cp a,$ff jp z,.printCancelMenuItem\@ push bc push de push hl push hl push de ld a,[W_LISTMENUID] and a jr z,.pokemonPCMenu\@ cp a,$01 jr z,.movesMenu\@ .itemMenu\@ call GetItemName jr .placeNameString\@ .pokemonPCMenu\@ push hl ld hl,W_NUMINPARTY ld a,[$cf8b] cp l ; is it a list of party pokemon or box pokemon? ld hl,W_PARTYMON1NAME jr z,.getPokemonName\@ ld hl,$de06 ; box pokemon names .getPokemonName\@ ld a,[$cf92] ld b,a ld a,4 sub b ld b,a ld a,[W_LISTSCROLLOFFSET] add b call GetPartyMonName pop hl jr .placeNameString\@ .movesMenu\@ call GetMoveName .placeNameString\@ call PlaceString pop de pop hl ld a,[$cf93] and a ; should prices be printed? jr z,.skipPrintingItemPrice\@ .printItemPrice\@ push hl ld a,[de] ld de,$4608 ld [$cf91],a call $37df ; get price pop hl ld bc,20 + 5 ; 1 row down and 5 columns right add hl,bc ld c,$a3 ; no leading zeroes, right-aligned, print currency symbol, 3 bytes call PrintBCDNumber .skipPrintingItemPrice\@ ld a,[W_LISTMENUID] and a jr nz,.skipPrintingPokemonLevel\@ .printPokemonLevel\@ ld a,[$d11e] push af push hl ld hl,W_NUMINPARTY ld a,[$cf8b] cp l ; is it a list of party pokemon or box pokemon? ld a,$00 jr z,.next\@ ld a,$02 .next\@ ld [$cc49],a ld hl,$cf92 ld a,[hl] ld b,a ld a,$04 sub b ld b,a ld a,[W_LISTSCROLLOFFSET] add b ld [hl],a call LoadMonData ; load pokemon info ld a,[$cc49] and a ; is it a list of party pokemon or box pokemon? jr z,.skipCopyingLevel\@ .copyLevel\@ ld a,[$cf9b] ld [$cfb9],a .skipCopyingLevel\@ pop hl ld bc,$001c add hl,bc call $150b ; print level pop af ld [$d11e],a .skipPrintingPokemonLevel\@ pop hl pop de inc de ld a,[W_LISTMENUID] cp a,ITEMLISTMENU jr nz,.nextListEntry\@ .printItemQuantity\@ ld a,[$d11e] ld [$cf91],a call IsKeyItem ; check if item is unsellable ld a,[$d124] and a ; is the item unsellable? jr nz,.skipPrintingItemQuantity\@ ; if so, don't print the quantity push hl ld bc,20 + 8 ; 1 row down and 8 columns right add hl,bc ld a,$f1 ldi [hl],a ld a,[$d11e] push af ld a,[de] ld [$cf97],a push de ld de,$d11e ld [de],a ld bc,$0102 call PrintNumber pop de pop af ld [$d11e],a pop hl .skipPrintingItemQuantity\@ inc de pop bc inc c push bc inc c ld a,[$cc35] ; ID of item chosen for swapping (counts from 1) and a ; is an item being swapped? jr z,.nextListEntry\@ sla a cp c ; is it this item? jr nz,.nextListEntry\@ dec hl ld a,$ec ; unfilled right arrow menu cursor to indicate an item being swapped ld [hli],a .nextListEntry\@ ld bc,2 * 20 ; 2 rows add hl,bc pop bc inc c dec b jp nz,.loop\@ ld bc,-8 add hl,bc ld a,$ee ; down arrow ld [hl],a ret .printCancelMenuItem\@ ld de,ListMenuCancelText jp PlaceString ListMenuCancelText: ; 2F97 db "CANCEL@" GetMonName: ; 2F9E push hl ld a,[$ffb8] push af ld a,BANK(MonsterNames) ; 07 ld [$ffb8],a ld [$2000],a ld a,[$d11e] dec a ld hl,MonsterNames ; 421E ld c,10 ld b,0 call AddNTimes ld de,$cd6d push de ld bc,10 call CopyData ld hl,$cd77 ld [hl],$50 pop de pop af ld [$ffb8],a ld [$2000],a pop hl ret GetItemName: ; 2FCF ; given an item ID at [$D11E], store the name of the item into a string ; starting at $CD6D push hl push bc ld a,[$D11E] cp HM_01 ; is this a TM/HM? jr nc,.Machine\@ ld [$D0B5],a ld a,ITEM_NAME ld [$D0B6],a ld a,BANK(ItemNames) ld [$D0B7],a call GetName jr .Finish\@ .Machine\@ call GetMachineName .Finish\@ ld de,$CD6D ; pointer to where item name is stored in RAM pop bc pop hl ret GetMachineName: ; 2ff3 ; copies the name of the TM/HM in [$D11E] to $CD6D push hl push de push bc ld a,[$D11E] push af cp TM_01 ; is this a TM? [not HM] jr nc,.WriteTM\@ ; if HM, then write "HM" and add 5 to the item ID, so we can reuse the ; TM printing code add 5 ld [$D11E],a ld hl,HiddenPrefix ; points to "HM" ld bc,2 jr .WriteMachinePrefix\@ .WriteTM\@ ld hl,TechnicalPrefix ; points to "TM" ld bc,2 .WriteMachinePrefix\@ ld de,$CD6D call CopyData ; now get the machine number and convert it to text ld a,[$D11E] sub TM_01 - 1 ld b,$F6 ; "0" .FirstDigit\@ sub 10 jr c,.SecondDigit\@ inc b jr .FirstDigit\@ .SecondDigit\@ add 10 push af ld a,b ld [de],a inc de pop af ld b,$F6 ; "0" add b ld [de],a inc de ld a,"@" ld [de],a pop af ld [$D11E],a pop bc pop de pop hl ret TechnicalPrefix: ; 303c db "TM" HiddenPrefix: ; 303e db "HM" ; sets carry if item is HM, clears carry if item is not HM ; Input: a = item ID IsItemHM: ; 3040 cp a,HM_01 jr c,.notHM\@ cp a,TM_01 ret .notHM\@ and a ret ; sets carry if move is an HM, clears carry if move is not an HM ; Input: a = move ID IsMoveHM: ; 3049 ld hl,HMMoves ld de,1 jp IsInArray HMMoves: ; 3052 db CUT,FLY,SURF,STRENGTH,FLASH db $ff ; terminator GetMoveName: ; 3058 push hl ld a,MOVE_NAME ld [$d0b6],a ld a,[$d11e] ld [$d0b5],a ld a,BANK(MoveNames) ld [$d0b7],a call GetName ld de,$cd6d ; pointer to where move name is stored in RAM pop hl ret ; reloads text box tile patterns, current map view, and tileset tile patterns ReloadMapData: ; 3071 ld a,[$ffb8] push af ld a,[W_CURMAP] call SwitchToMapRomBank call DisableLCD call LoadTextBoxTilePatterns call LoadCurrentMapView call LoadTilesetTilePatternData call EnableLCD pop af ld [$ffb8],a ld [$2000],a ret ; reloads tileset tile patterns ReloadTilesetTilePatterns: ; 3090 ld a,[$ffb8] push af ld a,[W_CURMAP] call SwitchToMapRomBank call DisableLCD call LoadTilesetTilePatternData call EnableLCD pop af ld [$ffb8],a ld [$2000],a ret ; shows the town map and lets the player choose a destination to fly to ChooseFlyDestination: ; 30A9 ld hl,$d72e res 4,[hl] ld b,$1c ld hl,$4f90 jp Bankswitch ; causes the text box to close waithout waiting for a button press after displaying text DisableWaitingAfterTextDisplay: ; 30B6 ld a,$01 ld [$cc3c],a ret ; uses an item ; UseItem is used with dummy items to perform certain other functions as well ; INPUT: ; [$cf91] = item ID ; OUTPUT: ; [$cd6a] = success ; 00: unsucessful ; 01: successful ; 02: not able to be used right now, no extra menu displayed (only certain items use this) UseItem: ; 30BC ld b,BANK(UseItem_) ld hl,UseItem_ jp Bankswitch ; confirms the item toss and then tosses the item ; INPUT: ; hl = address of inventory (either W_NUMBAGITEMS or W_NUMBOXITEMS) ; [$cf91] = item ID ; [$cf92] = index of item within inventory ; [$cf96] = quantity to toss ; OUTPUT: ; clears carry flag if the item is tossed, sets carry flag if not TossItem: ; 30C4 ld a,[$ffb8] push af ld a,BANK(TossItem_) ld [$ffb8],a ld [$2000],a call TossItem_ pop de ld a,d ld [$ffb8],a ld [$2000],a ret ; checks if an item is a key item ; INPUT: ; [$cf91] = item ID ; OUTPUT: ; [$d124] = result ; 00: item is not key item ; 01: item is key item IsKeyItem: ; 30D9 push hl push de push bc ld b,BANK(IsKeyItem_) ld hl,IsKeyItem_ call Bankswitch pop bc pop de pop hl ret ; function to draw various text boxes ; INPUT: ; [$D125] = text box ID DisplayTextBoxID: ; 30E8 ld a,[$ffb8] push af ld a,BANK(DisplayTextBoxID_) ld [$ffb8],a ld [$2000],a call DisplayTextBoxID_ pop bc ld a,b ld [$ffb8],a ld [$2000],a ret INCBIN "baserom.gbc",$30FD,$31cc - $30FD LoadTrainerHeader: ; 0x31cc call $3157 xor a call $3193 ld a, $2 call $3193 ld a, [$cc55] ld c, a ld b, $2 call $31c7 ld a, c and a jr z, .asm_c2964 ; 0x31e3 $8 ld a, $6 call $3193 jp PrintText .asm_c2964 ; 0x31ed ld a, $4 call $3193 call PrintText ld a, $a call $3193 push de ld a, $8 call $3193 pop de call $3354 ld hl, $d733 set 4, [hl] ld hl, $cd60 bit 0, [hl] ret nz call $336a ld hl, $da39 inc [hl] jp $325d call $3306 ld a, [$cf13] cp $ff jr nz, .asm_76c22 ; 0x3221 $8 xor a ld [$cf13], a ld [$cc55], a ret .asm_76c22 ; 0x322b ld hl, $d733 set 3, [hl] ld [$cd4f], a xor a ld [$cd50], a ld a, $4c call Predef ld a, $f0 ld [$cd6b], a xor a ldh [$b4], a call $32cf ld hl, $da39 inc [hl] ret INCBIN "baserom.gbc",$324c,$3474 - $324c FuncTX_F7: ; 3474 ; XXX find a better name for this function ; special_F7 ld b,BANK(CeladonPrizeMenu) ld hl,CeladonPrizeMenu call Bankswitch jp $29DF ; continue to main text-engine function INCBIN "baserom.gbc",$347F,$3493 - $347F IsItemInBag: ; 3493 ; given an item_id in b ; set zero flag if item isn't in player's bag ; else reset zero flag ; related to Pokémon Tower and ghosts ld a,$1C call Predef ld a,b and a ret INCBIN "baserom.gbc",$349B,$34BF - $349B ; tests if the player's coordinates are in a specified array ; INPUT: ; hl = address of array ; OUTPUT: ; [$cd3d] = if there is match, the matching array index ; sets carry if the coordinates are in the array, clears carry if not ArePlayerCoordsInArray: ; 34BF ld a,[W_YCOORD] ld b,a ld a,[W_XCOORD] ld c,a xor a ld [$cd3d],a .loop\@ ld a,[hli] cp a,$ff ; reached terminator? jr z,.notInArray\@ push hl ld hl,$cd3d inc [hl] pop hl .compareYCoord\@ cp b jr z,.compareXCoord\@ inc hl jr .loop\@ .compareXCoord\@ ld a,[hli] cp c jr nz,.loop\@ .inArray\@ scf ret .notInArray\@ and a ret INCBIN "baserom.gbc",$34E4,$3541-$34E4 Function3541: ; 3541 ; XXX what do these three functions do push hl call Function354E ld [hl],$FF call Function3558 ld [hl],$FF ; prevent person from walking? pop hl ret Function354E: ; 354E ld h,$C2 ld a,[$FF8C] ; the sprite to move swap a add a,6 ld l,a ret Function3558: ; 3558 push de ld hl,W_PEOPLEMOVEPERMISSIONS ld a,[$FF8C] ; the sprite to move dec a add a ld d,0 ld e,a add hl,de pop de ret INCBIN "baserom.gbc",$3566,$35BC - $3566 BankswitchHome: ; 35BC ; switches to bank # in a ; Only use this when in the home bank! ld [$CF09],a ld a,[$FFB8] ld [$CF08],a ld a,[$CF09] ld [$FFB8],a ld [$2000],a ret BankswitchBack: ; 35CD ; returns from BankswitchHome ld a,[$CF08] ld [$FFB8],a ld [$2000],a ret Bankswitch: ; 35D6 ; self-contained bankswitch, use this when not in the home bank ; switches to the bank in b ld a,[$FFB8] push af ld a,b ld [$FFB8],a ld [$2000],a ld bc,.Return\@ push bc jp [hl] .Return\@ pop bc ld a,b ld [$FFB8],a ld [$2000],a ret INCBIN "baserom.gbc",$35EC,$363A - $35EC MoveSprite: ; 363A ; move the sprite [$FF8C] with the movement pointed to by de ; actually only copies the movement data to $CC5B for later call Function3541 push hl push bc call Function354E xor a ld [hl],a ld hl,$CC5B ld c,0 .loop\@ ld a,[de] ld [hli],a inc de inc c cp a,$FF ; have we reached the end of the movement data? jr nz,.loop\@ ld a,c ld [$CF0F],a ; number of steps taken pop bc ld hl,$D730 set 0,[hl] pop hl xor a ld [$CD3B],a ld [$CCD3],a dec a ld [$CD6B],a ld [$CD3A],a ret INCBIN "baserom.gbc",$366B,$3680 - $366B ; copies the tile patterns for letters and numbers into VRAM LoadFontTilePatterns: ; 3680 ld a,[rLCDC] bit 7,a ; is the LCD enabled? jr nz,.lcdEnabled\@ .lcdDisabled\@ ld hl,$5a80 ld de,$8800 ld bc,$0400 ld a,$04 jp FarCopyDataDouble ; if LCD is off, transfer all at once .lcdEnabled\@ ld de,$5a80 ld hl,$8800 ld bc,$0480 jp CopyVideoDataDouble ; if LCD is on, transfer during V-blank ; copies the text box tile patterns into VRAM LoadTextBoxTilePatterns: ; 36A0 ld a,[rLCDC] bit 7,a ; is the LCD enabled? jr nz,.lcdEnabled\@ .lcdDisabled\@ ld hl,$6288 ld de,$9600 ld bc,$0200 ld a,$04 jp FarCopyData2 ; if LCD is off, transfer all at once .lcdEnabled\@ ld de,$6288 ld hl,$9600 ld bc,$0420 jp CopyVideoData ; if LCD is on, transfer during V-blank ; copies HP bar and status display tile patterns into VRAM LoadHpBarAndStatusTilePatterns: ; 36C0 ld a,[rLCDC] bit 7,a ; is the LCD enabled? jr nz,.lcdEnabled\@ .lcdDisabled\@ ld hl,$5ea0 ld de,$9620 ld bc,$01e0 ld a,$04 jp FarCopyData2 ; if LCD is off, transfer all at once .lcdEnabled\@ ld de,$5ea0 ld hl,$9620 ld bc,$041e jp CopyVideoData ; if LCD is on, transfer during V-blank INCBIN "baserom.gbc",$36E0,$3739 - $36E0 DelayFrames: ; 3739 ; wait n frames, where n is the value in c call DelayFrame dec c jr nz,DelayFrames ret INCBIN "baserom.gbc",$3740,$375D - $3740 NamePointers: ; 375D dw MonsterNames dw MoveNames dw UnusedNames dw ItemNames dw $D273 ; player's OT names list dw $D9AC ; enemy's OT names list dw TrainerNames GetName: ; 376B ; arguments: ; [$D0B5] = which name ; [$D0B6] = which list ; [$D0B7] = bank of list ; ; returns pointer to name in de ld a,[$d0b5] ld [$d11e],a cp a,$C4 ;it's TM/HM jp nc,GetMachineName ld a,[$ffb8] push af push hl push bc push de ld a,[$d0b6] ;List3759_entrySelector dec a jr nz,.otherEntries\@ ;1 = MON_NAMES call GetMonName ld hl,11 add hl,de ld e,l ld d,h jr .gotPtr\@ .otherEntries\@ ; $378d ;2-7 = OTHER ENTRIES ld a,[$d0b7] ld [$ffb8],a ld [$2000],a ld a,[$d0b6] ;VariousNames' entryID dec a add a ld d,0 ld e,a jr nc,.skip\@ inc d .skip\@ ; $37a0 ld hl,NamePointers add hl,de ld a,[hli] ld [$ff96],a ld a,[hl] ld [$ff95],a ld a,[$ff95] ld h,a ld a,[$ff96] ld l,a ld a,[$d0b5] ld b,a ld c,0 .nextName\@ ld d,h ld e,l .nextChar\@ ld a,[hli] cp a,$50 jr nz,.nextChar\@ inc c ;entry counter ld a,b ;wanted entry cp c jr nz,.nextName\@ ld h,d ld l,e ld de,$cd6d ld bc,$0014 call CopyData .gotPtr\@ ; $37cd ld a,e ld [$cf8d],a ld a,d ld [$cf8e],a pop de pop bc pop hl pop af ld [$ffb8],a ld [$2000],a ret INCBIN "baserom.gbc",$37df,$3831 - $37df ; this function is used when lower button sensitivity is wanted (e.g. menus) ; OUTPUT: [$ffb5] = pressed buttons in usual format ; there are two flags that control its functionality, [$ffb6] and [$ffb7] ; there are esentially three modes of operation ; 1. Get newly pressed buttons only ; ([$ffb7] == 0, [$ffb6] == any) ; Just copies [$ffb3] to [$ffb5]. ; 2. Get currently pressed buttons at low sample rate with delay ; ([$ffb7] == 1, [$ffb6] != 0) ; If the user holds down buttons for more than half a second, ; report buttons as being pressed up to 12 times per second thereafter. ; If the user holds down buttons for less than half a second, ; report only one button press. ; 3. Same as 2, but report no buttons as pressed if A or B is held down. ; ([$ffb7] == 1, [$ffb6] == 0) GetJoypadStateLowSensitivity: ; 3831 call GetJoypadState ld a,[$ffb7] ; flag and a ; get all currently pressed buttons or only newly pressed buttons? ld a,[$ffb3] ; newly pressed buttons jr z,.storeButtonState\@ ld a,[$ffb4] ; all currently pressed buttons .storeButtonState\@ ld [$ffb5],a ld a,[$ffb3] ; newly pressed buttons and a ; have any buttons been newly pressed since last check? jr z,.noNewlyPressedButtons\@ .newlyPressedButtons\@ ld a,30 ; half a second delay ld [H_FRAMECOUNTER],a ret .noNewlyPressedButtons\@ ld a,[H_FRAMECOUNTER] and a ; is the delay over? jr z,.delayOver\@ .delayNotOver\@ xor a ld [$ffb5],a ; report no buttons as pressed ret .delayOver\@ ; if [$ffb6] = 0 and A or B is pressed, report no buttons as pressed ld a,[$ffb4] and a,%00000011 ; A and B buttons jr z,.setShortDelay\@ ld a,[$ffb6] ; flag and a jr nz,.setShortDelay\@ xor a ld [$ffb5],a .setShortDelay\@ ld a,5 ; 1/12 of a second delay ld [H_FRAMECOUNTER],a ret INCBIN "baserom.gbc",$3865,$38AC - $3865 ; function to do multiplication ; all values are big endian ; INPUT ; FF96-FF98 = multiplicand ; FF99 = multiplier ; OUTPUT ; FF95-FF98 = product Multiply: ; 38AC push hl push bc ld hl,$7d41 ld b,$0d call Bankswitch pop bc pop hl ret ; function to do division ; all values are big endian ; INPUT ; FF95-FF98 = dividend ; FF99 = divisor ; b = number of bytes in the dividend (starting from FF95) ; OUTPUT ; FF95-FF98 = quotient ; FF99 = remainder Divide: ; 38B9 push hl push de push bc ld a,[$ffb8] push af ld a,$0d ld [$ffb8],a ld [$2000],a call $7da5 pop af ld [$ffb8],a ld [$2000],a pop bc pop de pop hl ret ; This function is used to wait a short period after printing a letter to the ; screen unless the player presses the A/B button or the delay is turned off ; through the [$d730] or [$d358] flags. PrintLetterDelay: ; 38D3 ld a,[$d730] bit 6,a ret nz ld a,[$d358] bit 1,a ret z push hl push de push bc ld a,[$d358] bit 0,a jr z,.waitOneFrame\@ ld a,[$d355] and a,$0f ld [H_FRAMECOUNTER],a jr .checkButtons\@ .waitOneFrame\@ ld a,1 ld [H_FRAMECOUNTER],a .checkButtons\@ call GetJoypadState ld a,[$ffb4] .checkAButton\@ bit 0,a ; is the A button pressed? jr z,.checkBButton\@ jr .endWait\@ .checkBButton\@ bit 1,a ; is the B button pressed? jr z,.buttonsNotPressed\@ .endWait\@ call DelayFrame jr .done\@ .buttonsNotPressed\@ ; if neither A nor B is pressed ld a,[H_FRAMECOUNTER] and a jr nz,.checkButtons\@ .done\@ pop bc pop de pop hl ret ; Copies [hl, bc) to [de, bc - hl). ; In other words, the source data is from hl up to but not including bc, ; and the destination is de. CopyDataUntil: ; 3913 ld a,[hli] ld [de],a inc de ld a,h cp b jr nz,CopyDataUntil ld a,l cp c jr nz,CopyDataUntil ret ; Function to remove a pokemon from the party or the current box. ; W_WHICHPOKEMON determines the pokemon. ; [$cf95] == 0 specifies the party. ; [$cf95] != 0 specifies the current box. RemovePokemon: ; 391F ld hl,$7b68 ld b,$01 jp Bankswitch AddPokemonToParty: ; 0x3927 push hl push de push bc ld b, $3 ; BANK(MyFunction) ld hl, $72e5 ; MyFunction call Bankswitch pop bc pop de pop hl ret INCBIN "baserom.gbc",$3936,$3A87 - $3936 AddNTimes: ; 3A87 ; add bc to hl a times and a ret z .loop\@ add hl,bc dec a jr nz,.loop\@ ret ; Compare strings, c bytes in length, at de and hl. ; Often used to compare big endian numbers in battle calculations. StringCmp: ; 3A8E ld a,[de] cp [hl] ret nz inc de inc hl dec c jr nz,StringCmp ret ; INPUT: ; a = oam block index (each block is 4 oam entries) ; b = Y coordinate of upper left corner of sprite ; c = X coordinate of upper left corner of sprite ; de = base address of 4 tile number and attribute pairs WriteOAMBlock: ; 3A97 ld h,$c3 swap a ; multiply by 16 ld l,a call .writeOneEntry\@ ; upper left push bc ld a,8 add c ld c,a call .writeOneEntry\@ ; upper right pop bc ld a,8 add b ld b,a call .writeOneEntry\@ ; lower left ld a,8 add c ld c,a ; lower right .writeOneEntry\@ ld [hl],b ; Y coordinate inc hl ld [hl],c ; X coordinate inc hl ld a,[de] ; tile number inc de ld [hli],a ld a,[de] ; attribute inc de ld [hli],a ret HandleMenuInput: ; 3ABE xor a ld [$d09b],a HandleMenuInputPokemonSelection: ; 3AC2 ld a,[H_DOWNARROWBLINKCNT1] push af ld a,[H_DOWNARROWBLINKCNT2] push af ; save existing values on stack xor a ld [H_DOWNARROWBLINKCNT1],a ; blinking down arrow timing value 1 ld a,$06 ld [H_DOWNARROWBLINKCNT2],a ; blinking down arrow timing value 2 .loop1\@ xor a ld [$d08b],a ; counter for pokemon shaking animation call PlaceMenuCursor call Delay3 .loop2\@ push hl ld a,[$d09b] and a ; is it a pokemon selection menu? jr z,.getJoypadState\@ ld b,$1c ld hl,$56ff ; shake mini sprite of selected pokemon call Bankswitch .getJoypadState\@ pop hl call GetJoypadStateLowSensitivity ld a,[$ffb5] and a ; was a key pressed? jr nz,.keyPressed\@ push hl FuncCoord 18,11 ; coordinates of blinking down arrow in some menus ld hl,Coord call $3c04 ; blink down arrow (if any) pop hl ld a,[W_MENUJOYPADPOLLCOUNT] dec a jr z,.giveUpWaiting\@ jr .loop2\@ .giveUpWaiting\@ ; if a key wasn't pressed within the specified number of checks pop af ld [H_DOWNARROWBLINKCNT2],a pop af ld [H_DOWNARROWBLINKCNT1],a ; restore previous values xor a ld [W_MENUWRAPPINGENABLED],a ; disable menu wrapping ret .keyPressed\@ xor a ld [$cc4b],a ld a,[$ffb5] ld b,a bit 6,a ; pressed Up key? jr z,.checkIfDownPressed\@ .upPressed\@ ld a,[W_CURMENUITEMID] ; selected menu item and a ; already at the top of the menu? jr z,.alreadyAtTop\@ .notAtTop\@ dec a ld [W_CURMENUITEMID],a ; move selected menu item up one space jr .checkOtherKeys\@ .alreadyAtTop\@ ld a,[W_MENUWRAPPINGENABLED] and a ; is wrapping around enabled? jr z,.noWrappingAround\@ ld a,[W_MAXMENUITEMID] ld [W_CURMENUITEMID],a ; wrap to the bottom of the menu jr .checkOtherKeys\@ .checkIfDownPressed\@ bit 7,a jr z,.checkOtherKeys\@ .downPressed\@ ld a,[W_CURMENUITEMID] inc a ld c,a ld a,[W_MAXMENUITEMID] cp c jr nc,.notAtBottom\@ .alreadyAtBottom\@ ld a,[W_MENUWRAPPINGENABLED] and a ; is wrapping around enabled? jr z,.noWrappingAround\@ ld c,$00 ; wrap from bottom to top .notAtBottom\@ ld a,c ld [W_CURMENUITEMID],a .checkOtherKeys\@ ld a,[W_MENUWATCHEDKEYS] and b ; does the menu care about any of the pressed keys? jp z,.loop1\@ .checkIfAButtonOrBButtonPressed\@ ld a,[$ffb5] and a,%00000011 ; pressed A button or B button? jr z,.skipPlayingSound\@ .AButtonOrBButtonPressed\@ push hl ld hl,$cd60 bit 5,[hl] pop hl jr nz,.skipPlayingSound\@ ld a,$90 call $23b1 ; play sound .skipPlayingSound\@ pop af ld [H_DOWNARROWBLINKCNT2],a pop af ld [H_DOWNARROWBLINKCNT1],a ; restore previous values xor a ld [W_MENUWRAPPINGENABLED],a ; disable menu wrapping ld a,[$ffb5] ret .noWrappingAround\@ ld a,[$cc37] and a ; should we return if the user tried to go past the top or bottom? jr z,.checkOtherKeys\@ jr .checkIfAButtonOrBButtonPressed\@ PlaceMenuCursor: ; 3B7C ld a,[W_TOPMENUITEMY] and a ; is the y coordinate 0? jr z,.adjustForXCoord\@ ld hl,$c3a0 ld bc,20 ; screen width .topMenuItemLoop\@ add hl,bc dec a jr nz,.topMenuItemLoop\@ .adjustForXCoord\@ ld a,[W_TOPMENUITEMX] ld b,$00 ld c,a add hl,bc push hl ld a,[W_OLDMENUITEMID] and a ; was the previous menu id 0? jr z,.checkForArrow1\@ push af ld a,[$fff6] bit 1,a ; is the menu double spaced? jr z,.doubleSpaced1\@ ld bc,20 jr .getOldMenuItemScreenPosition\@ .doubleSpaced1\@ ld bc,40 .getOldMenuItemScreenPosition\@ pop af .oldMenuItemLoop\@ add hl,bc dec a jr nz,.oldMenuItemLoop\@ .checkForArrow1\@ ld a,[hl] cp a,$ed ; was an arrow next to the previously selected menu item? jr nz,.skipClearingArrow\@ .clearArrow\@ ld a,[W_TILEBEHINDCURSOR] ld [hl],a .skipClearingArrow\@ pop hl ld a,[W_CURMENUITEMID] and a jr z,.checkForArrow2\@ push af ld a,[$fff6] bit 1,a ; is the menu double spaced? jr z,.doubleSpaced2\@ ld bc,20 jr .getCurrentMenuItemScreenPosition\@ .doubleSpaced2\@ ld bc,40 .getCurrentMenuItemScreenPosition\@ pop af .currentMenuItemLoop\@ add hl,bc dec a jr nz,.currentMenuItemLoop\@ .checkForArrow2\@ ld a,[hl] cp a,$ed ; has the right arrow already been placed? jr z,.skipSavingTile\@ ; if so, don't lose the saved tile ld [W_TILEBEHINDCURSOR],a ; save tile before overwriting with right arrow .skipSavingTile\@ ld a,$ed ; place right arrow ld [hl],a ld a,l ld [W_MENUCURSORLOCATION],a ld a,h ld [W_MENUCURSORLOCATION + 1],a ld a,[W_CURMENUITEMID] ld [W_OLDMENUITEMID],a ret ; This is used to mark a menu cursor other than the one currently being ; manipulated. In the case of submenus, this is used to show the location of ; the menu cursor in the parent menu. In the case of swapping items in list, ; this is used to mark the item that was first chosen to be swapped. PlaceUnfilledArrowMenuCursor: ; 3BEC ld b,a ld a,[W_MENUCURSORLOCATION] ld l,a ld a,[W_MENUCURSORLOCATION + 1] ld h,a ld [hl],$ec ; outline of right arrow ld a,b ret ; Replaces the menu cursor with a blank space. EraseMenuCursor: ; 3BF9 ld a,[W_MENUCURSORLOCATION] ld l,a ld a,[W_MENUCURSORLOCATION + 1] ld h,a ld [hl],$7f ; blank space ret ; This toggles a blinking down arrow at hl on and off after a delay has passed. ; This is often called even when no blinking is occurring. ; The reason is that most functions that call this initialize H_DOWNARROWBLINKCNT1 to 0. ; The effect is that if the tile at hl is initialized with a down arrow, ; this function will toggle that down arrow on and off, but if the tile isn't ; initliazed with a down arrow, this function does nothing. ; That allows this to be called without worrying about if a down arrow should ; be blinking. HandleDownArrowBlinkTiming: ; 3C04 ld a,[hl] ld b,a ld a,$ee ; down arrow cp b jr nz,.downArrowOff\@ .downArrowOn\@ ld a,[H_DOWNARROWBLINKCNT1] dec a ld [H_DOWNARROWBLINKCNT1],a ret nz ld a,[H_DOWNARROWBLINKCNT2] dec a ld [H_DOWNARROWBLINKCNT2],a ret nz ld a,$7f ; blank space ld [hl],a ld a,$ff ld [H_DOWNARROWBLINKCNT1],a ld a,$06 ld [H_DOWNARROWBLINKCNT2],a ret .downArrowOff\@ ld a,[H_DOWNARROWBLINKCNT1] and a ret z dec a ld [H_DOWNARROWBLINKCNT1],a ret nz dec a ld [H_DOWNARROWBLINKCNT1],a ld a,[H_DOWNARROWBLINKCNT2] dec a ld [H_DOWNARROWBLINKCNT2],a ret nz ld a,$06 ld [H_DOWNARROWBLINKCNT2],a ld a,$ee ; down arrow ld [hl],a ret ; The following code either enables or disables the automatic drawing of ; text boxes by DisplayTextID. Both functions cause DisplayTextID to wait ; for a button press after displaying text (unless [$cc47] is set). EnableAutoTextBoxDrawing: ; 3C3C xor a jr AutoTextBoxDrawingCommon DisableAutoTextBoxDrawing: ; 3C3F ld a,$01 AutoTextBoxDrawingCommon: ; 3C41 ld [$cf0c],a ; control text box drawing xor a ld [$cc3c],a ; make DisplayTextID wait for button press ret PrintText: ; 3C49 ; given a pointer in hl, print the text there push hl ld a,1 ld [$D125],a call DisplayTextBoxID call $2429 call Delay3 pop hl FuncCoord 1,14 ld bc,Coord ;$C4B9 jp TextCommandProcessor ; converts a big-endian binary number into decimal and prints it ; INPUT: ; b = flags and number of bytes ; bit 7: if set, print leading zeroes ; if unset, do not print leading zeroes ; bit 6: if set, left-align the string (do not pad empty digits with spaces) ; if unset, right-align the string ; bits 4-5: unused ; bits 0-3: number of bytes (only 1 - 3 bytes supported) ; c = number of decimal digits ; de = address of the number (big-endian) PrintNumber: ; 3C5F push bc xor a ld [H_PASTLEADINGZEROES],a ld [H_NUMTOPRINT],a ld [H_NUMTOPRINT + 1],a ld a,b and a,%00001111 cp a,1 jr z,.oneByte\@ cp a,2 jr z,.twoBytes\@ .threeBytes\@ ld a,[de] ld [H_NUMTOPRINT],a inc de ld a,[de] ld [H_NUMTOPRINT + 1],a inc de ld a,[de] ld [H_NUMTOPRINT + 2],a jr .checkNumDigits\@ .twoBytes\@ ld a,[de] ld [H_NUMTOPRINT + 1],a inc de ld a,[de] ld [H_NUMTOPRINT + 2],a jr .checkNumDigits\@ .oneByte\@ ld a,[de] ld [H_NUMTOPRINT + 2],a .checkNumDigits\@ push de ld d,b ld a,c ld b,a xor a ld c,a ld a,b ; a = number of decimal digits cp a,2 jr z,.tensPlace\@ cp a,3 jr z,.hundredsPlace\@ cp a,4 jr z,.thousandsPlace\@ cp a,5 jr z,.tenThousandsPlace\@ cp a,6 jr z,.hundredThousandsPlace\@ .millionsPlace\@ ld a,1000000 >> 16 ld [H_POWEROFTEN],a ld a,(1000000 >> 8) & $FF ld [H_POWEROFTEN + 1],a ld a,1000000 & $FF ld [H_POWEROFTEN + 2],a call PrintNumber_PrintDigit call PrintNumber_AdvancePointer .hundredThousandsPlace\@ ld a,100000 >> 16 ld [H_POWEROFTEN],a ld a,(100000 >> 8) & $FF ld [H_POWEROFTEN + 1],a ld a,100000 & $FF ld [H_POWEROFTEN + 2],a call PrintNumber_PrintDigit call PrintNumber_AdvancePointer .tenThousandsPlace\@ xor a ld [H_POWEROFTEN],a ld a,10000 >> 8 ld [H_POWEROFTEN + 1],a ld a,10000 & $FF ld [H_POWEROFTEN + 2],a call PrintNumber_PrintDigit call PrintNumber_AdvancePointer .thousandsPlace\@ xor a ld [H_POWEROFTEN],a ld a,1000 >> 8 ld [H_POWEROFTEN + 1],a ld a,1000 & $FF ld [H_POWEROFTEN + 2],a call PrintNumber_PrintDigit call PrintNumber_AdvancePointer .hundredsPlace\@ xor a ld [H_POWEROFTEN],a xor a ld [H_POWEROFTEN + 1],a ld a,100 ld [H_POWEROFTEN + 2],a call PrintNumber_PrintDigit call PrintNumber_AdvancePointer .tensPlace\@ ld c,00 ld a,[H_NUMTOPRINT + 2] .loop\@ cp a,10 jr c,.underflow\@ sub a,10 inc c jr .loop\@ .underflow\@ ld b,a ld a,[H_PASTLEADINGZEROES] or c ld [H_PASTLEADINGZEROES],a jr nz,.pastLeadingZeroes\@ call PrintNumber_PrintLeadingZero jr .advancePointer\@ .pastLeadingZeroes\@ ld a,"0" add c ld [hl],a .advancePointer\@ call PrintNumber_AdvancePointer .onesPlace\@ ld a,"0" add b ld [hli],a pop de dec de pop bc ret ; prints a decimal digit ; This works by repeatedely subtracting a power of ten until the number becomes negative. ; The number of subtractions it took in order to make the number negative is the digit for the current number place. ; The last value that the number had before becoming negative is kept as the new value of the number. ; A more succinct description is that the number is divided by a power of ten ; and the quotient becomes the digit while the remainder is stored as the new value of the number. PrintNumber_PrintDigit: ; 3D25 ld c,0 ; counts number of loop iterations to determine the decimal digit .loop\@ ld a,[H_POWEROFTEN] ld b,a ld a,[H_NUMTOPRINT] ld [H_SAVEDNUMTOPRINT],a cp b jr c,.underflow0\@ sub b ld [H_NUMTOPRINT],a ld a,[H_POWEROFTEN + 1] ld b,a ld a,[H_NUMTOPRINT + 1] ld [H_SAVEDNUMTOPRINT + 1],a cp b jr nc,.noBorrowForByte1\@ .byte1BorrowFromByte0\@ ld a,[H_NUMTOPRINT] or a,0 jr z,.underflow1\@ dec a ld [H_NUMTOPRINT],a ld a,[H_NUMTOPRINT + 1] .noBorrowForByte1\@ sub b ld [H_NUMTOPRINT + 1],a ld a,[H_POWEROFTEN + 2] ld b,a ld a,[H_NUMTOPRINT + 2] ld [H_SAVEDNUMTOPRINT + 2],a cp b jr nc,.noBorrowForByte2\@ .byte2BorrowFromByte1\@ ld a,[H_NUMTOPRINT + 1] and a jr nz,.finishByte2BorrowFromByte1\@ .byte2BorrowFromByte0\@ ld a,[H_NUMTOPRINT] and a jr z,.underflow2\@ dec a ld [H_NUMTOPRINT],a xor a .finishByte2BorrowFromByte1\@ dec a ld [H_NUMTOPRINT + 1],a ld a,[H_NUMTOPRINT + 2] .noBorrowForByte2\@ sub b ld [H_NUMTOPRINT + 2],a inc c jr .loop\@ .underflow2\@ ld a,[H_SAVEDNUMTOPRINT + 1] ld [H_NUMTOPRINT + 1],a .underflow1\@ ld a,[H_SAVEDNUMTOPRINT] ld [H_NUMTOPRINT],a .underflow0\@ ld a,[H_PASTLEADINGZEROES] or c jr z,PrintNumber_PrintLeadingZero ld a,"0" add c ld [hl],a ld [H_PASTLEADINGZEROES],a ret ; prints a leading zero unless they are turned off in the flags PrintNumber_PrintLeadingZero: ; 3D83 bit 7,d ; print leading zeroes? ret z ld [hl],"0" ret ; increments the pointer unless leading zeroes are not being printed, ; the number is left-aligned, and no nonzero digits have been printed yet PrintNumber_AdvancePointer: ; 3D89 bit 7,d ; print leading zeroes? jr nz,.incrementPointer\@ bit 6,d ; left alignment or right alignment? jr z,.incrementPointer\@ ld a,[H_PASTLEADINGZEROES] and a ret z .incrementPointer\@ inc hl ret ; calls a function from a table of function pointers ; INPUT: ; a = index within table ; hl = address of function pointer table CallFunctionInTable: ; 3D97 push hl push de push bc add a ld d,0 ld e,a add hl,de ld a,[hli] ld h,[hl] ld l,a ld de,.returnAddress\@ push de jp [hl] .returnAddress\@ pop bc pop de pop hl ret IsInArray: ; 3DAB ; searches an array at hl for the value in a. ; skips (de − 1) bytes between reads, so to check every byte, de should be 1. ; if found, returns count in b and sets carry. ld b,0 ld c,a .loop\@ ld a,[hl] cp a,$FF jr z,.NotInArray\@ cp c jr z,.InArray\@ inc b add hl,de jr .loop\@ .NotInArray\@ and a ret .InArray\@ scf ret INCBIN "baserom.gbc",$3DBE,$3DD4 - $3DBE ; calls GBPalWhiteOut and then Delay3 GBPalWhiteOutWithDelay3: ; 3DD4 call GBPalWhiteOut Delay3: ; 3DD7 ; call Delay with a parameter of 3 ld c,3 jp DelayFrames ; resets BGP and OBP0 to their usual colors GBPalNormal: ; 3DDC ld a,%11100100 ld [rBGP],a ld a,%11010000 ld [rOBP0],a ret ; makes all palette colors white GBPalWhiteOut: ; 3DE5 xor a ld [rBGP],a ld [rOBP0],a ld [rOBP1],a ret GoPAL_SET_CF1C: ; 3ded ld b,$ff GoPAL_SET: ; 3def ld a,[$cf1b] and a ret z ld a,$45 jp Predef INCBIN "baserom.gbc",$3df9,$3e2e - $3df9 GiveItem: ; 0x3e2e ld a, b ld [$d11e], a ld [$cf91], a ld a, c ld [$cf96], a ld hl,W_NUMBAGITEMS call $2bcf ret nc call GetItemName ; $2fcf call $3826 scf ret GivePokemon: ; 0x3e48 ld a, b ld [$cf91], a ld a, c ld [$d127], a xor a ld [$cc49], a ld b, $13 ld hl, $7da5 jp Bankswitch GenRandom: ; 3E5C ; store a random 8-bit value in a push hl push de push bc ld b,BANK(GenRandom_) ld hl,GenRandom_ call Bankswitch ld a,[H_RAND1] pop bc pop de pop hl ret Predef: ; 3E6D ; runs a predefined ASM command, where the command ID is read from $D0B7 ; $3E6D grabs the ath pointer from PredefPointers and executes it ld [$CC4E],a ; save the predef routine's ID for later ld a,[$FFB8] ld [$CF12],a ; save bank and call 13:7E49 push af ld a,BANK(GetPredefPointer) ld [$FFB8],a ld [$2000],a call GetPredefPointer ; call the predef function ; ($D0B7 has the bank of the predef routine) ld a,[$D0B7] ld [$FFB8],a ld [$2000],a ld de,.Return\@ push de jp [hl] ; after the predefined function finishes it returns here .Return\@ pop af ld [$FFB8],a ld [$2000],a ret INCBIN "baserom.gbc",$3E94,$4000 - $3E94 SECTION "bank1",DATA,BANK[$1] INCBIN "baserom.gbc",$4000,$112 MewPicFront: ; 0x4112 INCBIN "pic/bmon/mew.pic" MewPicBack: ; 0x4205 INCBIN "pic/monback/mewb.pic" ; 0x425b MewBaseStats: ; 0x425b db DEX_MEW ; pokedex id db 100 ; base hp db 100 ; base attack db 100 ; base defense db 100 ; base speed db 100 ; base special db PSYCHIC ; species type 1 db PSYCHIC ; species type 2 db 45 ; catch rate db 64 ; base exp yield db $55 ; sprite dimensions dw MewPicFront dw MewPicBack ; attacks known at lvl 0 db POUND db 0 db 0 db 0 db 3 ; growth rate ; include learnset directly db %11111111 db %11111111 db %11111111 db %11111111 db %11111111 db %11111111 db %11111111 db %11111111 ; usually spacing INCBIN "baserom.gbc",$4277,$30 UnnamedText_42a7: ; 0x42a7 TX_FAR SafariZoneEatingText db $50 ; 0x42a7 + 5 bytes UnnamedText_42ac: ; 0x42ac TX_FAR SafariZoneAngryText db $50 ; 0x42ac + 5 bytes INCBIN "baserom.gbc",$42b1,$84 ; 0x4335 IF _RED ld de,$9600 ; where to put redgreenversion.2bpp in the VRAM ld bc,$50 ; how big that file is ENDC IF _BLUE ld de,$9610 ; where to put blueversion.2bpp in the VRAM ld bc,$40 ; how big that file is ENDC INCBIN "baserom.gbc",$433B,$4398-$433B IF _RED ld a,CHARMANDER ; which Pokemon to show first on the title screen ENDC IF _BLUE ld a,SQUIRTLE ; which Pokemon to show first on the title screen ENDC INCBIN "baserom.gbc",$439A,$4588-$439A TitleMons: ; 4588 ; mons on the title screen are randomly chosen from here IF _RED db CHARMANDER db SQUIRTLE db BULBASAUR db WEEDLE db NIDORAN_M db SCYTHER db PIKACHU db CLEFAIRY db RHYDON db ABRA db GASTLY db DITTO db PIDGEOTTO db ONIX db PONYTA db MAGIKARP ENDC IF _GREEN db BULBASAUR db CHARMANDER db SQUIRTLE db CATERPIE db NIDORAN_F db PINSIR db PIKACHU db CLEFAIRY db RHYDON db ABRA db GASTLY db DITTO db PIDGEOTTO db ONIX db PONYTA db MAGIKARP ENDC IF _BLUE db SQUIRTLE db CHARMANDER db BULBASAUR db MANKEY db HITMONLEE db VULPIX db CHANSEY db AERODACTYL db JOLTEON db SNORLAX db GLOOM db POLIWAG db DODUO db PORYGON db GENGAR db RAICHU ENDC INCBIN "baserom.gbc",$4598,$45A1-$4598 ; xxx Version tilemap on the title screen IF _RED db $60,$61,$7F,$65,$66,$67,$68,$69,$50 ENDC IF _BLUE db $61,$62,$63,$64,$65,$66,$67,$68,$50 ENDC NintenText: ; 45AA db "NINTEN@" SonyText: ; 45B1 db "SONY@" ; loads pokemon data from one of multiple sources to $cf98 ; loads base stats to $d0b8 ; INPUT: ; [$cf92] = index of pokemon within party/box ; [$cc49] = source ; 00: player's party ; 01: enemy's party ; 02: current box ; 03: daycare ; OUTPUT: ; [$cf91] = pokemon ID ; $cf98 = base address of pokemon data ; $d0b8 = base address of base stats LoadMonData_: ; 45B6 ld a,[$da5f] ; daycare pokemon ID ld [$cf91],a ld a,[$cc49] cp a,$03 jr z,.getBaseStats\@ ld a,[$cf92] ld e,a ld hl,$5c37 ld b,$0e call Bankswitch ; get pokemon ID .getBaseStats\@ ld a,[$cf91] ld [$d0b5],a ; input for GetBaseStats call GetBaseStats ; load base stats to $d0b8 ld hl,W_PARTYMON1DATA ld bc,44 ld a,[$cc49] cp a,$01 jr c,.getMonEntry\@ ld hl,$d8a4 ; enemy pokemon 1 data jr z,.getMonEntry\@ cp a,$02 ld hl,$da96 ; box pokemon 1 data ld bc,33 jr z,.getMonEntry\@ ld hl,$da5f ; daycare pokemon data jr .copyMonData\@ .getMonEntry\@ ; add the product of the index and the size of each entry ld a,[$cf92] call AddNTimes .copyMonData\@ ld de,$cf98 ld bc,44 jp CopyData INCBIN "baserom.gbc",$4608,$472B-$4608 ItemNames: ; 472B db "MASTER BALL@" db "ULTRA BALL@" db "GREAT BALL@" db "POKé BALL@" db "TOWN MAP@" db "BICYCLE@" db "?????@" db "SAFARI BALL@" db "POKéDEX@" db "MOON STONE@" db "ANTIDOTE@" db "BURN HEAL@" db "ICE HEAL@" db "AWAKENING@" db "PARLYZ HEAL@" db "FULL RESTORE@" db "MAX POTION@" db "HYPER POTION@" db "SUPER POTION@" db "POTION@" db "BOULDERBADGE@" db "CASCADEBADGE@" db "THUNDERBADGE@" db "RAINBOWBADGE@" db "SOULBADGE@" db "MARSHBADGE@" db "VOLCANOBADGE@" db "EARTHBADGE@" db "ESCAPE ROPE@" db "REPEL@" db "OLD AMBER@" db "FIRE STONE@" db "THUNDERSTONE@" db "WATER STONE@" db "HP UP@" db "PROTEIN@" db "IRON@" db "CARBOS@" db "CALCIUM@" db "RARE CANDY@" db "DOME FOSSIL@" db "HELIX FOSSIL@" db "SECRET KEY@" db "?????@" db "BIKE VOUCHER@" db "X ACCURACY@" db "LEAF STONE@" db "CARD KEY@" db "NUGGET@" db "PP UP@" db "POKé DOLL@" db "FULL HEAL@" db "REVIVE@" db "MAX REVIVE@" db "GUARD SPEC.@" db "SUPER REPEL@" db "MAX REPEL@" db "DIRE HIT@" db "COIN@" db "FRESH WATER@" db "SODA POP@" db "LEMONADE@" db "S.S.TICKET@" db "GOLD TEETH@" db "X ATTACK@" db "X DEFEND@" db "X SPEED@" db "X SPECIAL@" db "COIN CASE@" db "OAK's PARCEL@" db "ITEMFINDER@" db "SILPH SCOPE@" db "POKé FLUTE@" db "LIFT KEY@" db "EXP.ALL@" db "OLD ROD@" db "GOOD ROD@" db "SUPER ROD@" db "PP UP@" db "ETHER@" db "MAX ETHER@" db "ELIXER@" db "MAX ELIXER@" db "B2F@" db "B1F@" db "1F@" db "2F@" db "3F@" db "4F@" db "5F@" db "6F@" db "7F@" db "8F@" db "9F@" db "10F@" db "11F@" db "B4F@" UnusedNames: ; 4A92 db "かみなりバッヂ@" db "かいがらバッヂ@" db "おじぞうバッヂ@" db "はやぶさバッヂ@" db "ひんやりバッヂ@" db "なかよしバッヂ@" db "バラバッヂ@" db "ひのたまバッヂ@" db "ゴールドバッヂ@" db "たまご@" db "ひよこ@" db "ブロンズ@" db "シルバー@" db "ゴールド@" db "プチキャプテン@" db "キャプテン@" db "プチマスター@" db "マスター@" INCBIN "baserom.gbc",$4b09,$4e2c - $4b09 UnnamedText_4e2c: ; 0x4e2c TX_FAR _UnnamedText_4e2c db $50 ; 0x4e2c + 5 bytes INCBIN "baserom.gbc",$4e31,$5a24 - $4e31 SSAnne8AfterBattleText2: ; 0x5a24 TX_FAR _SSAnne8AfterBattleText2 db $50 ; 0x5a24 + 5 bytes INCBIN "baserom.gbc",$5a29,$c9 MainMenu: ; 0x5af2 ; Check save file call Func_5bff xor a ld [$D08A],a inc a ld [$D088],a call $609E jr nc,.next0\@ ; Predef 52 loads the save from SRAM to RAM ld a,$52 call Predef .next0\@ ld c,20 call DelayFrames xor a ld [$D12B],a ld hl,$CC2B ld [hli],a ld [hli],a ld [hli],a ld [hl],a ld [$D07C],a ld hl,$D72E res 6,[hl] call ClearScreen call $3DED call LoadTextBoxTilePatterns call LoadFontTilePatterns ld hl,$D730 set 6,[hl] ld a,[$D088] cp a,1 jr z,.next1\@ FuncCoord 0,0 ld hl,Coord ld b,6 ld c,13 call TextBoxBorder FuncCoord 2,2 ld hl,Coord ld de,$5D7E call PlaceString jr .next2\@ .next1\@ FuncCoord 0,0 ld hl,Coord ld b,4 ld c,13 call TextBoxBorder FuncCoord 2,2 ld hl,Coord ld de,$5D87 call PlaceString .next2\@ ld hl,$D730 res 6,[hl] call $2429 ; OAM? xor a ld [$CC26],a ld [$CC2A],a ld [$CC34],a inc a ld [$CC25],a inc a ld [$CC24],a ld a,$B ld [$CC29],a ld a,[$D088] ld [$CC28],a call $3ABE bit 1,a jp nz,$42DD ; load title screen (gfx and arrangement) ld c,20 call DelayFrames ld a,[$CC26] ld b,a ld a,[$D088] cp a,2 jp z,.next3\@ inc b ; adjust MenuArrow_Counter .next3\@ ld a,b and a jr z,.next4\@ ; if press_A on Continue cp a,1 jp z,$5D52 ; if press_A on NewGame call $5E8A ; if press_a on Options ld a,1 ld [$D08A],a jp .next0\@ .next4\@ call $5DB5 ld hl,$D126 set 5,[hl] .next6\@ xor a ld [$FFB3],a ld [$FFB2],a ld [$FFB4],a call GetJoypadState ld a,[$FFB4] bit 0,a jr nz,.next5\@ bit 1,a jp nz,.next0\@ jr .next6\@ .next5\@ call $3DD4 call ClearScreen ld a,4 ld [$D52A],a ld c,10 call DelayFrames ld a,[$D5A2] and a jp z,$5D5F ld a,[W_CURMAP] ; map ID cp a,HALL_OF_FAME jp nz,$5D5F xor a ld [$D71A],a ld hl,$D732 set 2,[hl] call $62CE jp $5D5F Func_5bff: ; 0x5bff ld a,1 ld [$D358],a ld a,3 ld [$D355],a ret ; 0x5c0a INCBIN "baserom.gbc",$5c0a,$5d43 - $5c0a UnnamedText_5d43: ; 0x5d43 TX_FAR _UnnamedText_5d43 db $50 ; 0x5d43 + 5 bytes UnnamedText_5d48: ; 0x5d48 TX_FAR _UnnamedText_5d48 db $50 ; 0x5d48 + 5 bytes UnnamedText_5d4d: ; 0x5d4d TX_FAR _UnnamedText_5d4d db $50 ; 0x5d4d + 5 bytes INCBIN "baserom.gbc",$5d52,$5e8a - $5d52 DisplayOptionMenu: ; 5E8A FuncCoord 0,0 ld hl,Coord ld b,3 ld c,18 call TextBoxBorder FuncCoord 0,5 ld hl,Coord ld b,3 ld c,18 call TextBoxBorder FuncCoord 0,10 ld hl,Coord ld b,3 ld c,18 call TextBoxBorder FuncCoord 1,1 ld hl,Coord ld de,TextSpeedOptionText call PlaceString FuncCoord 1,6 ld hl,Coord ld de,BattleAnimationOptionText call PlaceString FuncCoord 1,11 ld hl,Coord ld de,BattleStyleOptionText call PlaceString FuncCoord 2,16 ld hl,Coord ld de,OptionMenuCancelText call PlaceString xor a ld [W_CURMENUITEMID],a ld [W_OLDMENUITEMID],a inc a ld [$d358],a ld [$cd40],a ld a,3 ; text speed cursor Y coordinate ld [W_TOPMENUITEMY],a call SetCursorPositionsFromOptions ld a,[$cd3d] ; text speed cursor X coordinate ld [W_TOPMENUITEMX],a ld a,$01 ld [H_AUTOBGTRANSFERENABLED],a ; enable auto background transfer call Delay3 .loop\@ call PlaceMenuCursor call SetOptionsFromCursorPositions .getJoypadStateLoop\@ call GetJoypadStateLowSensitivity ld a,[$ffb5] ld b,a and a,%11111011 ; any key besides select pressed? jr z,.getJoypadStateLoop\@ bit 1,b ; B button pressed? jr nz,.exitMenu\@ bit 3,b ; Start button pressed? jr nz,.exitMenu\@ bit 0,b ; A button pressed? jr z,.checkDirectionKeys\@ ld a,[W_TOPMENUITEMY] cp a,16 ; is the cursor on Cancel? jr nz,.loop\@ .exitMenu\@ ld a,$90 call $23b1 ; play sound ret .eraseOldMenuCursor\@ ld [W_TOPMENUITEMX],a call EraseMenuCursor jp .loop\@ .checkDirectionKeys\@ ld a,[W_TOPMENUITEMY] bit 7,b ; Down pressed? jr nz,.downPressed\@ bit 6,b ; Up pressed? jr nz,.upPressed\@ cp a,8 ; cursor in Battle Animation section? jr z,.cursorInBattleAnimation\@ cp a,13 ; cursor in Battle Style section? jr z,.cursorInBattleStyle\@ cp a,16 ; cursor on Cancel? jr z,.loop\@ .cursorInTextSpeed\@ bit 5,b ; Left pressed? jp nz,.pressedLeftInTextSpeed\@ jp .pressedRightInTextSpeed\@ .downPressed\@ cp a,16 ld b,-13 ld hl,$cd3d jr z,.updateMenuVariables\@ ld b,5 cp a,3 inc hl jr z,.updateMenuVariables\@ cp a,8 inc hl jr z,.updateMenuVariables\@ ld b,3 inc hl jr .updateMenuVariables\@ .upPressed\@ cp a,8 ld b,-5 ld hl,$cd3d jr z,.updateMenuVariables\@ cp a,13 inc hl jr z,.updateMenuVariables\@ cp a,16 ld b,-3 inc hl jr z,.updateMenuVariables\@ ld b,13 inc hl .updateMenuVariables\@ add b ld [W_TOPMENUITEMY],a ld a,[hl] ld [W_TOPMENUITEMX],a call PlaceUnfilledArrowMenuCursor jp .loop\@ .cursorInBattleAnimation\@ ld a,[$cd3e] ; battle animation cursor X coordinate xor a,$0b ; toggle between 1 and 10 ld [$cd3e],a jp .eraseOldMenuCursor\@ .cursorInBattleStyle\@ ld a,[$cd3f] ; battle style cursor X coordinate xor a,$0b ; toggle between 1 and 10 ld [$cd3f],a jp .eraseOldMenuCursor\@ .pressedLeftInTextSpeed\@ ld a,[$cd3d] ; text speed cursor X coordinate cp a,1 jr z,.updateTextSpeedXCoord\@ cp a,7 jr nz,.fromSlowToMedium\@ sub a,6 jr .updateTextSpeedXCoord\@ .fromSlowToMedium\@ sub a,7 jr .updateTextSpeedXCoord\@ .pressedRightInTextSpeed\@ ld a,[$cd3d] ; text speed cursor X coordinate cp a,14 jr z,.updateTextSpeedXCoord\@ cp a,7 jr nz,.fromFastToMedium\@ add a,7 jr .updateTextSpeedXCoord\@ .fromFastToMedium\@ add a,6 .updateTextSpeedXCoord\@ ld [$cd3d],a ; text speed cursor X coordinate jp .eraseOldMenuCursor\@ TextSpeedOptionText: ; 5FC0 db "TEXT SPEED",$4E db " FAST MEDIUM SLOW@" BattleAnimationOptionText: ; 5FDE db "BATTLE ANIMATION",$4E db " ON OFF@" BattleStyleOptionText: ; 5FFD db "BATTLE STYLE",$4E db " SHIFT SET@" OptionMenuCancelText: ; 6018 db "CANCEL@" ; sets the options variable according to the current placement of the menu cursors in the options menu SetOptionsFromCursorPositions: ; 601F ld hl,TextSpeedOptionData ld a,[$cd3d] ; text speed cursor X coordinate ld c,a .loop\@ ld a,[hli] cp c jr z,.textSpeedMatchFound\@ inc hl jr .loop\@ .textSpeedMatchFound\@ ld a,[hl] ld d,a ld a,[$cd3e] ; battle animation cursor X coordinate dec a jr z,.battleAnimationOn\@ .battleAnimationOff\@ set 7,d jr .checkBattleStyle\@ .battleAnimationOn\@ res 7,d .checkBattleStyle\@ ld a,[$cd3f] ; battle style cursor X coordinate dec a jr z,.battleStyleShift\@ .battleStyleSet\@ set 6,d jr .storeOptions\@ .battleStyleShift\@ res 6,d .storeOptions\@ ld a,d ld [W_OPTIONS],a ret ; reads the options variable and places menu cursors in the correct positions within the options menu SetCursorPositionsFromOptions: ; 604C ld hl,TextSpeedOptionData + 1 ld a,[W_OPTIONS] ld c,a and a,$3f push bc ld de,2 call IsInArray pop bc dec hl ld a,[hl] ld [$cd3d],a ; text speed cursor X coordinate FuncCoord 0,3 ld hl,Coord call .placeUnfilledRightArrow\@ sla c ld a,1 ; On jr nc,.storeBattleAnimationCursorX\@ ld a,10 ; Off .storeBattleAnimationCursorX\@ ld [$cd3e],a ; battle animation cursor X coordinate FuncCoord 0,8 ld hl,Coord call .placeUnfilledRightArrow\@ sla c ld a,1 jr nc,.storeBattleStyleCursorX\@ ld a,10 .storeBattleStyleCursorX\@ ld [$cd3f],a ; battle style cursor X coordinate FuncCoord 0,13 ld hl,Coord call .placeUnfilledRightArrow\@ ; cursor in front of Cancel FuncCoord 0,16 ld hl,Coord ld a,1 .placeUnfilledRightArrow\@ ld e,a ld d,0 add hl,de ld [hl],$ec ; unfilled right arrow menu cursor ret ; table that indicates how the 3 text speed options affect frame delays ; Format: ; 00: X coordinate of menu cursor ; 01: delay after printing a letter (in frames) TextSpeedOptionData: ; 6096 db 14,5 ; Slow db 7,3 ; Medium db 1,1 ; Fast db 7 ; default X coordinate (Medium) db $ff ; terminator INCBIN "baserom.gbc",$609e,$6115-$609e OakSpeech: ; 6115 ld a,$FF call $23B1 ; stop music ld a,2 ; bank of song ld c,a ld a,$EF ; song # call $23A1 ; plays music call ClearScreen call LoadTextBoxTilePatterns call $60CA ld a,$18 call Predef ld hl,$D53A ld a,$14 ld [$CF91],a ld a,1 ld [$CF96],a call $2BCF ld a,[$D07C] ld [$D71A],a call Function62CE xor a ld [$FFD7],a ld a,[$D732] bit 1,a ; XXX when is bit 1 set? jp nz,Function61BC ; easter egg: skip the intro ld de,$615F ld bc,$1300 call IntroPredef3B ; displays Oak pic? call FadeInIntroPic ld hl,OakSpeechText1 call PrintText ; prints text box call GBFadeOut2 call ClearScreen ld a,NIDORINO ld [$D0B5],a ; pic displayed is stored at this location ld [$CF91],a call $1537 ; this is also related to the pic ld hl,$C3F6 ; position on tilemap the pic is displayed call $1384 ; displays pic? call MovePicLeft ld hl,OakSpeechText2 call PrintText ; Prints text box call GBFadeOut2 call ClearScreen ld de,$6EDE ld bc,$0400 ; affects the position of the player pic call IntroPredef3B ; displays player pic? call MovePicLeft ld hl,IntroducePlayerText call PrintText call $695D ; brings up NewName/Red/etc menu call GBFadeOut2 call ClearScreen ld de,$6049 ld bc,$1300 call IntroPredef3B ; displays rival pic call FadeInIntroPic ld hl,IntroduceRivalText call PrintText call $69A4 Function61BC: ; 0x61bc call GBFadeOut2 call ClearScreen ld de,$6EDE ld bc,$0400 call IntroPredef3B call GBFadeIn2 ld a,[$D72D] and a jr nz,.next\@ ld hl,OakSpeechText3 call PrintText .next\@ ld a,[$FFB8] push af ld a,$9C call $23B1 pop af ld [$FFB8],a ld [$2000],a ld c,4 call DelayFrames ld de,$4180 ld hl,$8000 ld bc,$050C call CopyVideoData ld de,$6FE8 ld bc,$0400 call IntroPredef3B ld c,4 call DelayFrames ld de,$7042 ld bc,$0400 call IntroPredef3B call $28A6 ld a,[$FFB8] push af ld a,2 ld [$C0EF],a ld [$C0F0],a ld a,$A ld [$CFC7],a ld a,$FF ld [$C0EE],a call $23B1 ; stop music pop af ld [$FFB8],a ld [$2000],a ld c,$14 call DelayFrames ld hl,$C40A ld b,7 ld c,7 call ClearScreenArea call LoadTextBoxTilePatterns ld a,1 ld [$CFCB],a ld c,$32 call DelayFrames call GBFadeOut2 jp ClearScreen OakSpeechText1: ; 0x6253 TX_FAR _OakSpeechText1 db "@" OakSpeechText2: ; 0x6258 TX_FAR _OakSpeechText2A db $14 TX_FAR _OakSpeechText2B db "@" IntroducePlayerText: ; 0x6262 TX_FAR _IntroducePlayerText db "@" IntroduceRivalText: ; 0x6267 TX_FAR _IntroduceRivalText db "@" OakSpeechText3: ; 0x626c TX_FAR _OakSpeechText3 db "@" FadeInIntroPic: ; 0x6271 ld hl,IntroFadePalettes ld b,6 .next\@ ld a,[hli] ld [rBGP],a ld c,10 call DelayFrames dec b jr nz,.next\@ ret IntroFadePalettes: ; 0x6282 db %01010100 db %10101000 db %11111100 db %11111000 db %11110100 db %11100100 MovePicLeft: ; 0x6288 ld a,119 ld [$FF4B],a call DelayFrame ld a,$E4 ld [rBGP],a .next\@ call DelayFrame ld a,[$FF4B] sub 8 cp $FF ret z ld [$FF4B],a jr .next\@ Predef3B: ; 62A1 call $3E94 IntroPredef3B: ; 62A4 push bc ld a,b call $36EB ld hl,$A188 ld de,$A000 ld bc,$0310 call CopyData ld de,$9000 call $16EA pop bc ld a,c and a ld hl,$C3C3 jr nz,.next\@ ld hl,$C3F6 .next\@ xor a ld [$FFE1],a ld a,1 jp $3E6D Function62CE: ; 62CE XXX called by 4B2 948 989 5BF9 5D15 call $62FF ld a,$19 call $3E6D ld hl,$D732 bit 2,[hl] res 2,[hl] jr z,.next\@ ld a,[$D71A] jr .next2\@ .next\@ bit 1,[hl] jr z,.next3\@ call $64EA .next3\@ ld a,0 .next2\@ ld b,a ld a,[$D72D] and a jr nz,.next4\@ ld a,b .next4\@ ld hl,$D732 bit 4,[hl] ret nz ld [$D365],a ret INCBIN "baserom.gbc",$62FF,$6420-$62FF FirstMapSpec: ; 0x6420 db REDS_HOUSE_2F ; RedsHouse2F ; Original Format: ; [Event Displacement][Y-block][X-block][Y-sub_block][X-sub_block] ; Macro Format: ; FLYWARP_DATA [Map Width][Y-pos][X-pos] FLYWARP_DATA 4,6,3 db $04 ;Tileset_id INCBIN "baserom.gbc",$6428,$6448-$6428 FlyWarpDataPtr: ; 0x6448 db $00,0 dw Map00FlyWarp db $01,0 dw Map01FlyWarp db $02,0 dw Map02FlyWarp db $03,0 dw Map03FlyWarp db $04,0 dw Map04FlyWarp db $05,0 dw Map05FlyWarp db $06,0 dw Map06FlyWarp db $07,0 dw Map07FlyWarp db $08,0 dw Map08FlyWarp db $09,0 dw Map09FlyWarp db $0A,0 dw Map0aFlyWarp db $0F,0 dw Map0fFlyWarp db $15,0 dw Map15FlyWarp ; Original Format: ; [Event Displacement][Y-block][X-block][Y-sub_block][X-sub_block] ; Macro Format: ; FLYWARP_DATA [Map Width][Y-pos][X-pos] Map00FlyWarp: ; 0x647c FLYWARP_DATA 10,6,5 Map01FlyWarp: ; 0x6482 FLYWARP_DATA 20,26,23 Map02FlyWarp: ; 0x6488 FLYWARP_DATA 20,26,13 Map03FlyWarp: ; 0x648e FLYWARP_DATA 20,18,19 Map04FlyWarp: ; 0x6494 FLYWARP_DATA 10,6,3 Map05FlyWarp: ; 0x649a FLYWARP_DATA 20,4,11 Map06FlyWarp: ; 0x64a0 FLYWARP_DATA 25,10,41 Map07FlyWarp: ; 0x64a6 FLYWARP_DATA 20,28,19 Map08FlyWarp: ; 0x64ac FLYWARP_DATA 10,12,11 Map09FlyWarp: ; 0x64b2 FLYWARP_DATA 10,6,9 Map0aFlyWarp: ; 0x64b8 FLYWARP_DATA 20,30,9 Map0fFlyWarp: ; 0x64be FLYWARP_DATA 45,6,11 Map15FlyWarp: ; 0x64c4 FLYWARP_DATA 10,20,11 INCBIN "baserom.gbc",$64ca,$6557 - $64ca UnnamedText_6557: ; 0x6557 TX_FAR _UnnamedText_6557 db $50 ; 0x6557 + 5 bytes INCBIN "baserom.gbc",$655c,$699f - $655c UnnamedText_699f: ; 0x699f TX_FAR _UnnamedText_699f db $50 ; 0x699f + 5 bytes ; 0x69a4 call Unnamed_6a12 ; 0x69a4 call 0x6a12 ld de, DefaultNamesRival ; 0x69aa INCBIN "baserom.gbc",$69AA,$69B3 - $69AA ld hl, DefaultNamesRivalList INCBIN "baserom.gbc",$69b6,$69e7 - $69b6 UnnamedText_69e7: ; 0x69e7 TX_FAR _UnnamedText_69e7 db $50 ; 0x69e7 + 5 bytes INCBIN "baserom.gbc",$69ec,$6a12 - $69ec Unnamed_6a12: ; 0x6a12 INCBIN "baserom.gbc",$6a12,$6aa8 - $6a12 IF _RED DefaultNamesPlayer: ; 0x6aa8 22 db "NEW NAME",$4E,"RED",$4E,"ASH",$4E,"JACK@" DefaultNamesRival: ; 0x6abe 24 db "NEW NAME",$4E,"BLUE",$4E,"GARY",$4E,"JOHN@" ENDC IF _BLUE DefaultNamesPlayer: db "NEW NAME",$4E,"BLUE",$4E,"GARY",$4E,"JOHN@" DefaultNamesRival: db "NEW NAME",$4E,"RED",$4E,"ASH",$4E,"JACK@" ENDC INCBIN "baserom.gbc",$6AD6,$6AF2 - $6AD6 IF _RED DefaultNamesPlayerList: ; 0x6AF2 22 db "NEW NAME@RED@ASH@JACK@" DefaultNamesRivalList: ; 0x6b08 25 db "NEW NAME@BLUE@GARY@JOHN@@" ENDC IF _BLUE DefaultNamesPlayerList: db "NEW NAME@BLUE@GARY@JOHN@" DefaultNamesRivalList: db "NEW NAME@RED@ASH@JACK@@" ENDC ; subtracts the amount the player paid from their money ; sets carry flag if there is enough money and unsets carry flag if not SubtractAmountPaidFromMoney_: ; 6B21 ld de,W_PLAYERMONEY3 ld hl,$ff9f ; total price of items ld c,3 ; length of money in bytes call StringCmp ret c ld de,W_PLAYERMONEY1 ld hl,$ffa1 ; total price of items ld c,3 ; length of money in bytes ld a,$0c call Predef ; subtract total price from money ld a,$13 ld [$d125],a call DisplayTextBoxID ; redraw money text box and a ret HandleItemListSwapping: ; 6B44 ld a,[W_LISTMENUID] cp a,ITEMLISTMENU jp nz,DisplayListMenuIDLoop ; only rearrange item list menus push hl ld hl,$cf8b ld a,[hli] ld h,[hl] ld l,a inc hl ; hl = beginning of list entries ld a,[W_CURMENUITEMID] ld b,a ld a,[W_LISTSCROLLOFFSET] add b add a ld c,a ld b,0 add hl,bc ; hl = address of currently selected item entry ld a,[hl] pop hl inc a jp z,DisplayListMenuIDLoop ; ignore attempts to swap the Cancel menu item ld a,[$cc35] ; ID of item chosen for swapping (counts from 1) and a ; has the first item to swap already been chosen? jr nz,.swapItems\@ ; if not, set the currently selected item as the first item ld a,[W_CURMENUITEMID] inc a ld b,a ld a,[W_LISTSCROLLOFFSET] ; index of top (visible) menu item within the list add b ld [$cc35],a ; ID of item chosen for swapping (counts from 1) ld c,20 call DelayFrames jp DisplayListMenuIDLoop .swapItems\@ ld a,[W_CURMENUITEMID] inc a ld b,a ld a,[W_LISTSCROLLOFFSET] add b ld b,a ld a,[$cc35] ; ID of item chosen for swapping (counts from 1) cp b ; is the currently selected item the same as the first item to swap? jp z,DisplayListMenuIDLoop ; ignore attempts to swap an item with itself dec a ld [$cc35],a ; ID of item chosen for swapping (counts from 1) ld c,20 call DelayFrames push hl push de ld hl,$cf8b ld a,[hli] ld h,[hl] ld l,a inc hl ; hl = beginning of list entries ld d,h ld e,l ; de = beginning of list entries ld a,[W_CURMENUITEMID] ld b,a ld a,[W_LISTSCROLLOFFSET] add b add a ld c,a ld b,0 add hl,bc ; hl = address of currently selected item entry ld a,[$cc35] ; ID of item chosen for swapping (counts from 1) add a add e ld e,a jr nc,.noCarry\@ inc d .noCarry\@ ; de = address of first item to swap ld a,[de] ld b,a ld a,[hli] cp b jr z,.swapSameItemType\@ .swapDifferentItems\@ ld [$ff95],a ; [$ff95] = second item ID ld a,[hld] ld [$ff96],a ; [$ff96] = second item quantity ld a,[de] ld [hli],a ; put first item ID in second item slot inc de ld a,[de] ld [hl],a ; put first item quantity in second item slot ld a,[$ff96] ld [de],a ; put second item quantity in first item slot dec de ld a,[$ff95] ld [de],a ; put second item ID in first item slot xor a ld [$cc35],a ; 0 means no item is currently being swapped pop de pop hl jp DisplayListMenuIDLoop .swapSameItemType\@ inc de ld a,[hl] ld b,a ld a,[de] add b ; a = sum of both item quantities cp a,100 ; is the sum too big for one item slot? jr c,.combineItemSlots\@ ; swap enough items from the first slot to max out the second slot if they can't be combined sub a,99 ld [de],a ld a,99 ld [hl],a jr .done\@ .combineItemSlots\@ ld [hl],a ; put the sum in the second item slot ld hl,$cf8b ld a,[hli] ld h,[hl] ld l,a dec [hl] ; decrease the number of items ld a,[hl] ld [$d12a],a ; update number of items variable cp a,1 jr nz,.skipSettingMaxMenuItemID\@ ld [W_MAXMENUITEMID],a ; if the number of items is only one now, update the max menu item ID .skipSettingMaxMenuItemID\@ dec de ld h,d ld l,e inc hl inc hl ; hl = address of item after first item to swap .moveItemsUpLoop\@ ; erase the first item slot and move up all the following item slots to fill the gap ld a,[hli] ld [de],a inc de inc a ; reached the $ff terminator? jr z,.afterMovingItemsUp\@ ld a,[hli] ld [de],a inc de jr .moveItemsUpLoop\@ .afterMovingItemsUp\@ xor a ld [W_LISTSCROLLOFFSET],a ld [W_CURMENUITEMID],a .done\@ xor a ld [$cc35],a ; 0 means no item is currently being swapped pop de pop hl jp DisplayListMenuIDLoop DisplayPokemartDialogue_: ; 6C20 ld a,[W_LISTSCROLLOFFSET] ld [$d07e],a call $2429 ; move sprites xor a ld [$cf0a],a ; flag that is set if something is sold or bought .loop\@ xor a ld [W_LISTSCROLLOFFSET],a ld [W_CURMENUITEMID],a ld [$cc2f],a inc a ld [$cf93],a ld a,$13 ld [$d125],a call DisplayTextBoxID ; draw money text box ld a,$15 ld [$d125],a call DisplayTextBoxID ; do buy/sell/quit menu ld hl,$d128 ; pointer to this pokemart's inventory ld a,[hli] ld l,[hl] ld h,a ; hl = address of inventory ld a,[$d12e] cp a,$02 jp z,.done\@ ld a,[$d12d] ; ID of the chosen menu item and a ; buying? jp z,.buyMenu\@ dec a ; selling? jp z,.sellMenu\@ dec a ; quitting? jp z,.done\@ .sellMenu\@ xor a ld [$cf93],a ld a,$02 ld [$d11b],a ld hl,$5bd5 ld b,$0e call Bankswitch ld a,[W_NUMBAGITEMS] and a jp z,.bagEmpty\@ ld hl,PokemonSellingGreetingText call PrintText call $3719 ; save screen .sellMenuLoop\@ call $3725 ; restore saved screen ld a,$13 ld [$d125],a call DisplayTextBoxID ; draw money text box ld hl,W_NUMBAGITEMS ld a,l ld [$cf8b],a ld a,h ld [$cf8c],a xor a ld [$cf93],a ld [W_CURMENUITEMID],a ld a,ITEMLISTMENU ld [W_LISTMENUID],a call DisplayListMenuID jp c,.returnToMainPokemartMenu\@ ; if the player closed the menu .confirmItemSale\@ ; if the player is trying to sell a specific item call IsKeyItem ; check if item is unsellable ld a,[$d124] and a jr nz,.unsellableItem\@ ld a,[$cf91] call IsItemHM jr c,.unsellableItem\@ ld a,PRICEDITEMLISTMENU ld [W_LISTMENUID],a ld [$ff8e],a ; halve prices when selling call DisplayChooseQuantityMenu inc a jr z,.sellMenuLoop\@ ; if the player closed the choose quantity menu with the B button ld hl,PokemartTellSellPrice ld bc,$0e01 call PrintText FuncCoord 14,7 ld hl,Coord ld bc,$080f ld a,$14 ld [$d125],a call DisplayTextBoxID ; yes/no menu ld a,[$d12e] cp a,$02 jr z,.sellMenuLoop\@ ; if the player pressed the B button ld a,[$d12d] ; ID of the chosen menu item dec a jr z,.sellMenuLoop\@ ; if the player chose No .sellItem\@ ld a,[$cf0a] ; flag that is set if something is sold or bought and a jr nz,.skipSettingFlag1\@ inc a ld [$cf0a],a .skipSettingFlag1\@ call AddAmountSoldToMoney ld hl,W_NUMBAGITEMS call RemoveItemFromInventory jp .sellMenuLoop\@ .unsellableItem\@ ld hl,PokemartUnsellableItemText call PrintText jp .returnToMainPokemartMenu\@ .bagEmpty\@ ld hl,PokemartItemBagEmptyText call PrintText call $3719 ; save screen jp .returnToMainPokemartMenu\@ .buyMenu\@ ld a,$01 ld [$cf93],a ld a,$03 ld [$d11b],a ld hl,$5bd5 ld b,$0e call Bankswitch ld hl,PokemartBuyingGreetingText call PrintText call $3719 ; save screen .buyMenuLoop\@ call $3725 ; restore saved screen ld a,$13 ld [$d125],a call DisplayTextBoxID ; draw money text box ld hl,$cf7b ld a,l ld [$cf8b],a ld a,h ld [$cf8c],a xor a ld [W_CURMENUITEMID],a inc a ld [$cf93],a inc a ; a = 2 (PRICEDITEMLISTMENU) ld [W_LISTMENUID],a call DisplayListMenuID jr c,.returnToMainPokemartMenu\@ ; if the player closed the menu ld a,$63 ld [$cf97],a xor a ld [$ff8e],a call DisplayChooseQuantityMenu inc a jr z,.buyMenuLoop\@ ; if the player closed the choose quantity menu with the B button ld a,[$cf91] ; item ID ld [$d11e],a ; store item ID for GetItemName call GetItemName call $3826 ; copy name to $cf4b ld hl,PokemartTellBuyPrice call PrintText FuncCoord 14,7 ld hl,Coord ld bc,$080f ld a,$14 ld [$d125],a call DisplayTextBoxID ; yes/no menu ld a,[$d12e] cp a,$02 jp z,.buyMenuLoop\@ ; if the player pressed the B button ld a,[$d12d] ; ID of the chosen menu item dec a jr z,.buyMenuLoop\@ ; if the player chose No .buyItem\@ call .isThereEnoughMoney\@ jr c,.notEnoughMoney\@ ld hl,W_NUMBAGITEMS call AddItemToInventory jr nc,.bagFull\@ call SubtractAmountPaidFromMoney ld a,[$cf0a] ; flag that is set if something is sold or bought and a jr nz,.skipSettingFlag2\@ ld a,$01 ld [$cf0a],a .skipSettingFlag2\@ ld a,$b2 call $3740 ; play sound call $3748 ; wait until sound is done playing ld hl,PokemartBoughtItemText call PrintText jp .buyMenuLoop\@ .returnToMainPokemartMenu\@ call $3725 ; restore save screen ld a,$13 ld [$d125],a call DisplayTextBoxID ; draw money text box ld hl,PokemartAnythingElseText call PrintText jp .loop\@ .isThereEnoughMoney\@ ld de,W_PLAYERMONEY3 ld hl,$ff9f ; item price ld c,3 ; length of money in bytes jp StringCmp .notEnoughMoney\@ ld hl,PokemartNotEnoughMoneyText call PrintText jr .returnToMainPokemartMenu\@ .bagFull\@ ld hl,PokemartItemBagFullText call PrintText jr .returnToMainPokemartMenu\@ .done\@ ld hl,PokemartThankYouText call PrintText ld a,$01 ld [$cfcb],a call $2429 ; move sprites ld a,[$d07e] ld [W_LISTSCROLLOFFSET],a ret PokemartBuyingGreetingText: ; 0x6e0c TX_FAR _PokemartBuyingGreetingText db $50 PokemartTellBuyPrice: ; 0x6e11 TX_FAR _PokemartTellBuyPrice db $50 PokemartBoughtItemText: ; 0x6e16 TX_FAR _PokemartBoughtItemText db $50 PokemartNotEnoughMoneyText: ; 0x6e1b TX_FAR _PokemartNotEnoughMoneyText db $50 PokemartItemBagFullText: ; 0x6e20 TX_FAR _PokemartItemBagFullText db $50 PokemonSellingGreetingText: ; 0x6e25 TX_FAR _PokemonSellingGreetingText db $50 PokemartTellSellPrice: ; 0x6e2a TX_FAR _PokemartTellSellPrice db $50 PokemartItemBagEmptyText: ; 0x6e2f TX_FAR _PokemartItemBagEmptyText db $50 PokemartUnsellableItemText: ; 0x6e34 TX_FAR _PokemartUnsellableItemText db $50 PokemartThankYouText: ; 0x6e39 TX_FAR _PokemartThankYouText db $50 PokemartAnythingElseText: ; 0x6e3e TX_FAR _PokemartAnythingElseText db $50 INCBIN "baserom.gbc",$6e43,$6fb4 - $6e43 UnnamedText_6fb4: ; 0x6fb4 TX_FAR _UnnamedText_6fb4 db $50 ; 0x6fb4 + 5 bytes UnnamedText_6fb9: ; 0x6fb9 TX_FAR _UnnamedText_6fb9 db $50 ; 0x6fb9 + 5 bytes UnnamedText_6fbe: ; 0x6fbe TX_FAR _UnnamedText_6fbe db $50 ; 0x6fbe + 5 bytes UnnamedText_6fc3: ; 0x6fc3 TX_FAR _UnnamedText_6fc3 db $50 ; 0x6fc3 + 5 bytes UnnamedText_6fc8: ; 0x6fc8 TX_FAR _UnnamedText_6fc8 ; 0xa2819 db $a db $8 ld a, $ae call $3740 ld hl, $6fd7 ret ; 0x6fd7 UnnamedText_6fd7: ; 0x6fd7 TX_FAR _UnnamedText_6fd7 ; 0xa2827 db $a ; 0x6fdb UnnamedText_6fdc: ; 0x6fdc TX_FAR _UnnamedText_6fdc db $50 ; 0x6fe1 UnnamedText_6fe1: ; 0x6fe1 TX_FAR _UnnamedText_6fe1 db $50 ; 0x6fe1 + 5 bytes DisplayPokemonCenterDialogue_: ; 0x6fe6 call $3719 ; save screen ld hl, PokemonCenterWelcomeText call PrintText ld hl, $d72e bit 2, [hl] set 1, [hl] set 2, [hl] jr nz, .skipShallWeHealYourPokemon ld hl, ShallWeHealYourPokemonText call PrintText .skipShallWeHealYourPokemon call $360a ; yes/no menu ld a, [W_CURMENUITEMID] and a jr nz, .declinedHealing\@ ; if the player chose No call $7078 call $3725 ; restore screen ld hl, NeedYourPokemonText call PrintText ld a, $18 ld [$c112], a ; make the nurse turn to face the machine call Delay3 ld a, $7 call Predef ; HealParty ld b, $1c ld hl, $4433 call Bankswitch ; do the healing machine animation xor a ld [$cfc7], a ld a, [$c0f0] ld [$c0ef], a ld a, [$d35b] ld [$cfca], a ld [$c0ee], a call $23b1 ld hl, PokemonFightingFitText call PrintText ld a, $14 ld [$c112], a ; make the nurse bow ld c, a call DelayFrames jr .done\@ .declinedHealing\@ call $3725 ; restore screen .done\@ ld hl, PokemonCenterFarewellText call PrintText jp $2429 ; move sprites PokemonCenterWelcomeText: ; 0x705d TX_FAR _PokemonCenterWelcomeText db $50 ShallWeHealYourPokemonText: ; 0x7062 db $a TX_FAR _ShallWeHealYourPokemonText db $50 NeedYourPokemonText: ; 0x7068 TX_FAR _NeedYourPokemonText db $50 PokemonFightingFitText: ; 0x706d TX_FAR _PokemonFightingFitText db $50 PokemonCenterFarewellText: ; 0x7073 db $a TX_FAR _PokemonCenterFarewellText db $50 Unknown_7078: ; 0x7078 push hl ld hl, SafariZoneRestHouses ld a, [W_CURMAP] ld b, a .asm_7080 ld a, [hli] cp $ff jr z, .asm_708a ; 0x7083 $5 cp b jr nz, .asm_7080 ; 0x7086 $f8 jr .asm_7090 ; 0x7088 $6 .asm_708a ld a, [$d365] ld [$d719], a .asm_7090 pop hl ret ; 0x7092 SafariZoneRestHouses: ; 0x7092 db SAFARI_ZONE_REST_HOUSE_2 db SAFARI_ZONE_REST_HOUSE_3 db SAFARI_ZONE_REST_HOUSE_4 db $ff ; terminator ; function that performs initialization for DisplayTextID DisplayTextIDInit: ; 7096 xor a ld [$cf94],a ld a,[$cf0c] bit 0,a jr nz,.skipDrawingTextBoxBorder\@ ld a,[$ff8c] ; text ID (or sprite ID) and a jr nz,.notStartMenu\@ ; if text ID is 0 (i.e. the start menu) ; Note that the start menu text border is also drawn in the function directly ; below this, so this seems unnecessary. ld a,[$d74b] bit 5,a ; does the player have the pokedex? ; start menu with pokedex ld hl,$c3aa ld b,$0e ld c,$08 jr nz,.drawTextBoxBorder\@ ; start menu without pokedex ld hl,$c3aa ld b,$0c ld c,$08 jr .drawTextBoxBorder\@ ; if text ID is not 0 (i.e. not the start menu) then do a standard dialogue text box .notStartMenu\@ ld hl,$c490 ld b,$04 ld c,$12 .drawTextBoxBorder\@ call TextBoxBorder .skipDrawingTextBoxBorder\@ ld hl,$cfc4 set 0,[hl] ld hl,$cd60 bit 4,[hl] res 4,[hl] jr nz,.skipMovingSprites\@ call $2429 ; move sprites .skipMovingSprites\@ ; loop to copy C1X9 (direction the sprite is facing) to C2X9 for each sprite ; this is done because when you talk to an NPC, they turn to look your way ; the original direction they were facing must be restored after the dialogue is over ld hl,$c119 ld c,$0f ld de,$0010 .spriteFacingDirectionCopyLoop\@ ld a,[hl] inc h ld [hl],a dec h add hl,de dec c jr nz,.spriteFacingDirectionCopyLoop\@ ; loop to force all the sprites in the middle of animation to stand still ; (so that they don't like they're frozen mid-step during the dialogue) ld hl,$c102 ld de,$0010 ld c,e .spriteStandStillLoop\@ ld a,[hl] cp a,$ff ; is the sprite visible? jr z,.nextSprite\@ ; if it is visible and a,$fc ld [hl],a .nextSprite\@ add hl,de dec c jr nz,.spriteStandStillLoop\@ ld b,$9c ; window background address call $18d6 ; transfer background in WRAM to VRAM xor a ld [$ffb0],a ; put the window on the screen call LoadFontTilePatterns ld a,$01 ld [H_AUTOBGTRANSFERENABLED],a ; enable continuous WRAM to VRAM transfer each V-blank ret ; function that displays the start menu DrawStartMenu: ; 710B ld a,[$d74b] bit 5,a ; does the player have the pokedex? ; menu with pokedex ld hl,$c3aa ld b,$0e ld c,$08 jr nz,.drawTextBoxBorder\@ ; shorter menu if the player doesn't have the pokedex ld hl,$c3aa ld b,$0c ld c,$08 .drawTextBoxBorder\@ call TextBoxBorder ld a,%11001011 ; bit mask for down, up, start, B, and A buttons ld [$cc29],a ld a,$02 ld [$cc24],a ; Y position of first menu choice ld a,$0b ld [$cc25],a ; X position of first menu choice ld a,[$cc2d] ; remembered menu selection from last time ld [$cc26],a ld [$cc2a],a xor a ld [$cc37],a ld hl,$d730 set 6,[hl] ; no pauses between printing each letter ld hl,$c3d4 ld a,[$d74b] bit 5,a ; does the player have the pokedex? ; case for not having pokdex ld a,$06 jr z,.storeMenuItemCount\@ ; case for having pokedex ld de,StartMenuPokedexText call PrintStartMenuItem ld a,$07 .storeMenuItemCount\@ ld [$cc28],a ; number of menu items ld de,StartMenuPokemonText call PrintStartMenuItem ld de,StartMenuItemText call PrintStartMenuItem ld de,$d158 ; player's name call PrintStartMenuItem ld a,[$d72e] bit 6,a ; is the player using the link feature? ; case for not using link feature ld de,StartMenuSaveText jr z,.printSaveOrResetText\@ ; case for using link feature ld de,StartMenuResetText .printSaveOrResetText\@ call PrintStartMenuItem ld de,StartMenuOptionText call PrintStartMenuItem ld de,StartMenuExitText call PlaceString ld hl,$d730 res 6,[hl] ; turn pauses between printing letters back on ret StartMenuPokedexText: ; 718F db "POKéDEX@" StartMenuPokemonText: ; 7197 db "POKéMON@" StartMenuItemText: ; 719F db "ITEM@" StartMenuSaveText: ; 71A4 db "SAVE@" StartMenuResetText: ; 71A9 db "RESET@" StartMenuExitText: ; 71AF db "EXIT@" StartMenuOptionText: ; 71B4 db "OPTION@" PrintStartMenuItem: ; 71BB push hl call PlaceString pop hl ld de,$28 add hl,de ret Unknown_71c5: ; 0x71c5 ld hl, $72b8 call PrintText ld a, [$d74b] bit 5, a jp nz, $71e1 ld c, $3c call DelayFrames ld hl, $72d2 call PrintText jp $7298 ; 0x71e1 Unknown_71e1: ; 0x71e1 ld a, $1 ld [$cc34], a ld a, $5a ld [$cc47], a .asm_71eb ld a, [$ff00+$aa] cp $2 jr z, .asm_721a ; 0x71ef $29 cp $1 jr z, .asm_721a ; 0x71f3 $25 ld a, $ff ld [$ff00+$aa], a ld a, $2 ld [$ff00+$1], a xor a ld [$ff00+$ad], a ld a, $80 ld [$ff00+$2], a ld a, [$cc47] dec a ld [$cc47], a jr z, .asm_7287 ; 0x720b $7a ld a, $1 ld [$ff00+$1], a ld a, $81 ld [$ff00+$2], a call DelayFrame jr .asm_71eb ; 0x7218 $d1 .asm_721a call $22ed call DelayFrame call $22ed ld c, $32 call DelayFrames ld hl, $72bd call PrintText xor a ld [$cc34], a call $35ec ld a, $1 ld [$cc34], a ld a, [$cc26] and a jr nz, .asm_728f ; 0x723e $4f ld hl, $7848 ld b, $1c call Bankswitch call $3748 ld a, $b6 call $3740 ld hl, $72c2 call PrintText ld hl, $cc47 ld a, $3 ld [hli], a xor a ld [hl], a ld [$ff00+$a9], a ld [$cc42], a call $227f ld hl, $cc47 ld a, [hli] inc a jr nz, .asm_72a8 ; 0x726b $3b ld a, [hl] inc a jr nz, .asm_72a8 ; 0x726f $37 ld b, $a .asm_7273 call DelayFrame call $22ed dec b jr nz, .asm_7273 ; 0x727a $f7 call $72d7 ld hl, $72c8 call PrintText jr .asm_7298 ; 0x7285 $11 .asm_7287 ld hl, $72b3 call PrintText jr .asm_7298 ; 0x728d $9 .asm_728f call $72d7 ld hl, $72cd call PrintText .asm_7298 xor a ld hl, $cc47 ld [hli], a ld [hl], a ld hl, $d72e res 6, [hl] xor a ld [$cc34], a ret .asm_72a8 xor a ld [hld], a ld [hl], a ld hl, $5c0a ld b, $1 jp Bankswitch ; 0x72b3 UnnamedText_72b3: ; 0x72b3 TX_FAR _UnnamedText_72b3 db $50 ; 0x72b3 + 5 bytes UnnamedText_72b8: ; 0x72b8 TX_FAR _UnnamedText_72b8 db $50 ; 0x72b8 + 5 bytes UnnamedText_72bd: ; 0x72bd TX_FAR _UnnamedText_72bd db $50 ; 0x72bd + 5 bytes UnnamedText_72c2: ; 0x72c2 TX_FAR UnnamedText_a29cc db $a, $50 UnnamedText_72c8: ; 0x72c8 TX_FAR _UnnamedText_72c8 db $50 ; 0x72c8 + 5 bytes UnnamedText_72cd: ; 0x72cd TX_FAR _UnnamedText_72cd db $50 ; 0x72cd + 5 bytes UnnamedText_72d2: ; 0x72d2 TX_FAR _UnnamedText_72d2 db $50 ; 0x72d2 + 5 bytes INCBIN "baserom.gbc",$72d7,$72ea - $72d7 ; function to draw various text boxes ; INPUT: ; [$D125] = text box ID DisplayTextBoxID_: ; 72EA ld a,[$d125] ; a = text box ID cp a,$14 jp z,$7559 ld c,a ld hl,TextBoxFunctionTable ld de,3 call SearchTextBoxTable jr c,.functionTableMatch\@ ld hl,TextBoxCoordTable ld de,5 call SearchTextBoxTable jr c,.coordTableMatch\@ ld hl,TextBoxTextAndCoordTable ld de,9 call SearchTextBoxTable jr c,.textAndCoordTableMatch\@ .done\@ ret .functionTableMatch\@ ld a,[hli] ld h,[hl] ld l,a ; hl = address of function ld de,.done\@ push de jp [hl] ; jump to the function .coordTableMatch\@ call GetTextBoxIDCoords call GetAddressOfScreenCoords call TextBoxBorder ret .textAndCoordTableMatch\@ call GetTextBoxIDCoords push hl call GetAddressOfScreenCoords call TextBoxBorder pop hl call GetTextBoxIDText ld a,[$d730] push af ld a,[$d730] set 6,a ; no pauses between printing each letter ld [$d730],a call PlaceString pop af ld [$d730],a call $2429 ; move sprites ret ; function to search a table terminated with $ff for a byte matching c in increments of de ; sets carry flag if a match is found and clears carry flag if not SearchTextBoxTable: ; 734C dec de .loop\@ ld a,[hli] cp a,$ff jr z,.notFound\@ cp c jr z,.found\@ add hl,de jr .loop\@ .found\@ scf .notFound\@ ret ; function to load coordinates from the TextBoxCoordTable or the TextBoxTextAndCoordTable ; INPUT: ; hl = address of coordinates ; OUTPUT: ; b = height ; c = width ; d = row of upper left corner ; e = column of upper left corner GetTextBoxIDCoords: ; 735A ld a,[hli] ; column of upper left corner ld e,a ld a,[hli] ; row of upper left corner ld d,a ld a,[hli] ; column of lower right corner sub e dec a ld c,a ; c = width ld a,[hli] ; row of lower right corner sub d dec a ld b,a ; b = height ret ; function to load a text address and text coordinates from the TextBoxTextAndCoordTable GetTextBoxIDText: ; 7367 ld a,[hli] ld e,a ld a,[hli] ld d,a ; de = address of text push de ; save text address ld a,[hli] ld e,a ; column of upper left corner of text ld a,[hl] ld d,a ; row of upper left corner of text call GetAddressOfScreenCoords pop de ; restore text address ret ; function to point hl to the screen coordinates ; INPUT: ; d = row ; e = column ; OUTPUT: ; hl = address of upper left corner of text box GetAddressOfScreenCoords: ; 7375 push bc ld hl,$c3a0 ld bc,20 .loop\@ ; loop to add d rows to the base address ld a,d and a jr z,.addedRows\@ add hl,bc dec d jr .loop\@ .addedRows\@ pop bc add hl,de ret ; Format: ; 00: text box ID ; 01-02: function address TextBoxFunctionTable: ; 7387 db $13 dw $74ba db $15 dw $74ea db $04 dw $76e1 db $ff ; terminator ; Format: ; 00: text box ID ; 01: column of upper left corner ; 02: row of upper left corner ; 03: column of lower right corner ; 04: row of lower right corner TextBoxCoordTable: ; 7391 db $01, 0, 12, 19, 17 db $03, 0, 0, 19, 14 db $07, 0, 0, 11, 6 db $0d, 4, 2, 19, 12 db $10, 7, 0, 19, 17 db $11, 6, 4, 14, 13 db $ff ; terminator ; Format: ; 00: text box ID ; 01: column of upper left corner ; 02: row of upper left corner ; 03: column of lower right corner ; 04: row of lower right corner ; 05-06: address of text ; 07: column of beginning of text ; 08: row of beginning of text ; table of window positions and corresponding text [key, start column, start row, end column, end row, text pointer [2 bytes], text column, text row] TextBoxTextAndCoordTable: ; 73B0 db $05 ; text box ID db 0,0,14,17 ; text box coordinates dw JapaneseMochimonoText db 3,0 ; text coordinates db $06 ; text box ID db 13,10,19,14 ; text box coordinates dw UseTossText db 15,11 ; text coordinates db $08 ; text box ID db 0,0,7,5 ; text box coordinates dw JapaneseSaveMessageText db 2,2 ; text coordinates db $09 ; text box ID db 0,6,5,10 ; text box coordinates dw JapaneseSpeedOptionsText db 2,7 ; text coordinates db $0b ; text box ID db 8,12,19,17 ; text box coordinates dw BattleMenuText db 10,14 ; text coordinates db $1b ; text box ID db 0,12,19,17 ; text box coordinates dw SafariZoneBattleMenuText db 2,14 ; text coordinates db $0c ; text box ID db 11,11,19,17 ; text box coordinates dw SwitchStatsCancelText db 13,12 ; text coordinates db $0e ; text box ID db 0,0,10,6 ; text box coordinates dw BuySellQuitText db 2,1 ; text coordinates db $0f ; text box ID db 11,0,19,2 ; text box coordinates dw MoneyText db 13,0 ; text coordinates db $12 ; text box ID db 7,6,11,10 ; text box coordinates dw JapaneseAhText db 8,8 ; text coordinates db $1a ; text box ID db 11,8,19,17 ; text box coordinates dw JapanesePokedexMenu db 12,10 ; text coordinates ; note that there is no terminator BuySellQuitText: ; 7413 db "BUY",$4E db "SELL",$4E db "QUIT@@" UseTossText: ; 7422 db "USE",$4E db "TOSS@" JapaneseSaveMessageText: ; 742B db "きろく",$4E db "メッセージ@" JapaneseSpeedOptionsText: ; 7435 db "はやい",$4E db "おそい@" MoneyText: ; 743D db "MONEY@" JapaneseMochimonoText: ; 7443 db "もちもの@" JapaneseMainMenuText: ; 7448 db "つづきから",$4E db "さいしょから@" BattleMenuText: ; 7455 db "FIGHT ",$E1,$E2,$4E db "ITEM RUN@" SafariZoneBattleMenuText: ; 7468 db "BALL",$F1," BAIT",$4E db "THROW ROCK RUN@" SwitchStatsCancelText: ; 7489 db "SWITCH",$4E db "STATS",$4E db "CANCEL@" JapaneseAhText: ; 749D db "アッ!@" JapanesePokedexMenu: ; 74A1 db "データをみる",$4E db "なきごえ",$4E db "ぶんぷをみる",$4E db "キャンセル@" INCBIN "baserom.gbc",$74ba,$778d - $74ba FieldMoveNames: ; 778D db "CUT@" db "FLY@" db "@" db "SURF@" db "STRENGTH@" db "FLASH@" db "DIG@" db "TELEPORT@" db "SOFTBOILED@" PokemonMenuEntries: ; 77C2 db "STATS",$4E db "SWITCH",$4E db "CANCEL@" INCBIN "baserom.gbc",$77d6,$78dc - $77d6 UnnamedText_78dc: ; 0x78dc TX_FAR _UnnamedText_78dc db $50 ; 0x78dc + 5 bytes UnnamedText_78e1: ; 0x78e1 TX_FAR _UnnamedText_78e1 db $50 ; 0x78e1 + 5 bytes INCBIN "baserom.gbc",$78e6,$20f PlayersPCMenuEntries: ; 7AF5 db "WITHDRAW ITEM",$4E db "DEPOSIT ITEM",$4E db "TOSS ITEM",$4E db "LOG OFF@" UnnamedText_7b22: ; 0x7b22 TX_FAR _UnnamedText_7b22 db $50 ; 0x7b22 + 5 bytes UnnamedText_7b27: ; 0x7b27 TX_FAR _UnnamedText_7b27 db $50 ; 0x7b27 + 5 bytes UnnamedText_7b2c: ; 0x7b2c TX_FAR _UnnamedText_7b2c db $50 ; 0x7b2c + 5 bytes UnnamedText_7b31: ; 0x7b31 TX_FAR _UnnamedText_7b31 db $50 ; 0x7b31 + 5 bytes UnnamedText_7b36: ; 0x7b36 TX_FAR _UnnamedText_7b36 db $50 ; 0x7b36 + 5 bytes UnnamedText_7b3b: ; 0x7b3b TX_FAR _UnnamedText_7b3b db $50 ; 0x7b3b + 5 bytes UnnamedText_7b40: ; 0x7b40 TX_FAR _UnnamedText_7b40 db $50 ; 0x7b40 + 5 bytes UnnamedText_7b45: ; 0x7b45 TX_FAR _UnnamedText_7b45 db $50 ; 0x7b45 + 5 bytes UnnamedText_7b4a: ; 0x7b4a TX_FAR _UnnamedText_7b4a db $50 ; 0x7b4a + 5 bytes UnnamedText_7b4f: ; 0x7b4f TX_FAR _UnnamedText_7b4f db $50 ; 0x7b4f + 5 bytes UnnamedText_7b54: ; 0x7b54 TX_FAR _UnnamedText_7b54 db $50 ; 0x7b54 + 5 bytes UnnamedText_7b59: ; 0x7b59 TX_FAR _UnnamedText_7b59 db $50 ; 0x7b59 + 5 bytes UnnamedText_7b5e: ; 0x7b5e TX_FAR _UnnamedText_7b5e db $50 ; 0x7b5e + 5 bytes UnnamedText_7b63: ; 0x7b63 TX_FAR _UnnamedText_7b63 db $50 ; 0x7b63 + 5 bytes INCBIN "baserom.gbc",$7b68,$e1 SECTION "bank2",DATA,BANK[$2] INCBIN "baserom.gbc",$8000,$822E - $8000 ;Music Headers ;Pallet Town PalletTown_mh: ; 0x822E - 0x8236 db $80 dw PalletTown_md_1 ;Channel 1 ($A7C5 - $A85E) db $01 dw PalletTown_md_2 ;Channel 2 ($A85f - $A8DD) db $02 dw PalletTown_md_3 ;Channel 3 ($A8DE - $AA75) ;Pokemon Center Pokecenter_mh: ; 0x8237 - 0x823F db $80 dw Pokecenter_md_1 ;Channel 1 ($BE56 - $BEF8) db $01 dw Pokecenter_md_2 ;Channel 2 ($BEF9 - $BF6F) db $02 dw Pokecenter_md_3 ;Channel 3 ($BF70 - $BFFF) ;Gyms Gym_mh: ; 0x8240 - 0x8248 db $80 dw Gym_md_1 ;Channel 1 ($BCBB - $BD6A) db $01 dw Gym_md_2 ;Channel 2 ($BD6B - $BDF9) db $02 dw Gym_md_3 ;Channel 3 ($BDFA - $BE55) ;Viridian City, Pewter City, Saffron City Cities1_mh: ; 0x8249 - 0x8254 db $C0 dw Cities1_md_1 ;Channel 1 db $01 dw Cities1_md_2 ;Channel 2 db $02 dw Cities1_md_3 ;Channel 3 db $03 dw Cities1_md_4 ;Channel 4 ;Cerulean City, Fuchsia City Cities2_mh: ; 0x8255 - 0x825D db $80 dw Cities2_md_1 ;Channel 1 db $01 dw Cities2_md_2 ;Channel 2 db $02 dw Cities2_md_3 ;Channel 3 ;Celadon City Celadon_mh: ; 0x825E - 0x8266 db $80 dw Celadon_md_1 ;Channel 1 db $01 dw Celadon_md_2 ;Channel 2 db $02 dw Celadon_md_3 ;Channel 3 ;Cinnabar Island Cinnabar_mh: ; 0x8267 - 0x826F db $80 dw Cinnabar_md_1 ;Channel 1 db $01 dw Cinnabar_md_2 ;Channel 2 db $02 dw Cinnabar_md_3 ;Channel 3 ;Vermilion City Vermilion_mh: ; 0x8270 - 0x827B db $C0 dw Vermilion_md_1 ;Channel 1 db $01 dw Vermilion_md_2 ;Channel 2 db $02 dw Vermilion_md_3 ;Channel 3 db $03 dw Vermilion_md_4 ;Channel 4 ;Lavender Town Lavender_mh: ; 0x827C - 0x8287 db $C0 dw Lavender_md_1 ;Channel 1 db $01 dw Lavender_md_2 ;Channel 2 db $02 dw Lavender_md_3 ;Channel 3 db $03 dw Lavender_md_4 ;Channel 4 ;SS Anne SSAnne_mh: ; 0x8288 - 0x8290 db $80 dw SSAnne_md_1 ;Channel 1 db $01 dw SSAnne_md_2 ;Channel 2 db $02 dw SSAnne_md_3 ;Channel 3 ;Meet Prof. Oak MeetProfOak_mh: ; 0x8291 - 0x8299 db $80 dw MeetProfOak_md_1 ;Channel 1 db $01 dw MeetProfOak_md_2 ;Channel 2 db $02 dw MeetProfOak_md_3 ;Channel 3 ;Meet Rival MeetRival_mh: ; 0x829A - 0x82A2 db $80 dw MeetRival_md_1 ;Channel 1 db $01 dw MeetRival_md_2 ;Channel 2 db $02 dw MeetRival_md_3 ;Channel 3 ;Guy walks you to museum MuseumGuy_mh: ; 0x82A3 - 0x82AE db $C0 dw MuseumGuy_md_1 ;Channel 1 db $01 dw MuseumGuy_md_2 ;Channel 2 db $02 dw MuseumGuy_md_3 ;Channel 3 db $03 dw MuseumGuy_md_4 ;Channel 4 ;Safari Zone SafariZone_mh: ; 0x82AF - 0x82B7 db $80 dw SafariZone_md_1 ;Channel 1 db $01 dw SafariZone_md_2 ;Channel 2 db $02 dw SafariZone_md_3 ;Channel 3 ;Pokemon Get Healed PkmnHealed_mh: ; 0x82B8 - 0x82C0 db $80 dw PkmnHealed_md_1 ;Channel 1 db $01 dw PkmnHealed_md_2 ;Channel 2 db $02 dw PkmnHealed_md_3 ;Channel 3 ;Routes 1 and 2 Routes1_mh: ; 0x82C1 - 0x82CC db $C0 dw Routes1_md_1 ;Channel 1 db $01 dw Routes1_md_2 ;Channel 2 db $02 dw Routes1_md_3 ;Channel 3 db $03 dw Routes1_md_4 ;Channel 4 ;Routes 24 and 25 Routes2_mh: ; 0x82CD - 0x82D8 db $C0 dw Routes2_md_1 ;Channel 1 db $01 dw Routes2_md_2 ;Channel 2 db $02 dw Routes2_md_3 ;Channel 3 db $03 dw Routes2_md_4 ;Channel 4 ;Routes 3, 4, 5, 6, 7, 8, 9, 10, 16, 17, 18, 19, 20, 21, 22 Routes3_mh: ; 0x82D9 - 0x82E4 db $C0 dw Routes3_md_1 ;Channel 1 db $01 dw Routes3_md_2 ;Channel 2 db $02 dw Routes3_md_3 ;Channel 3 db $03 dw Routes3_md_4 ;Channel 4 ;Routes 11, 12, 13, 14, 15 Routes4_mh: ; 0x82E5 - 0x82F0 db $C0 dw Routes4_md_1 ;Channel 1 db $01 dw Routes4_md_2 ;Channel 2 db $02 dw Routes4_md_3 ;Channel 3 db $03 dw Routes4_md_4 ;Channel 4 ;Indigo Plateau IndigoPlateau_mh: ; 0x82F1 - 0x82FC db $C0 dw IndigoPlateau_md_1 ;Channel 1 db $01 dw IndigoPlateau_md_2 ;Channel 2 db $02 dw IndigoPlateau_md_3 ;Channel 3 db $03 dw IndigoPlateau_md_4 ;Channel 4 INCLUDE "music.asm" SECTION "bank3",DATA,BANK[$3] INCBIN "baserom.gbc",$C000,$C23D - $C000 ; see also MapHeaderPointers MapHeaderBanks: ; 423D 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(MuseumF1_h) db BANK(MuseumF2_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(CeruleanHouse2_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(UndergroundTunnelEntranceRoute5_h) db BANK(DayCareM_h) db BANK(Route6Gate_h) db BANK(UndergroundTunnelEntranceRoute6_h) db $17 ;FREEZE db BANK(Route7Gate_h) db BANK(UndergroundPathEntranceRoute7_h) db $17 ;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 $1D db BANK(IndigoPlateauLobby_h) db BANK(CopycatsHouseF1_h) db BANK(CopycatsHouseF2_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 $12 db BANK(Route16GateMap_h) db BANK(Route16GateUpstairs_h) db BANK(Route16House_h) db BANK(Route12House_h) db BANK(Route18Gate_h) db BANK(Route18GateHeader_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(CeruleanHouse3_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) INCBIN "baserom.gbc",$C335,$C766-$C335 ld hl, TilesetsHeadPtr INCBIN "baserom.gbc",$C769,$C7BE-$C769 TilesetsHeadPtr: ; 0xC7BE TSETHEAD Tset00_Block,Tset00_GFX,Tset00_Coll,$FF,$FF,$FF,$52,2 TSETHEAD Tset01_Block,Tset01_GFX,Tset01_Coll,$FF,$FF,$FF,$FF,0 TSETHEAD Tset02_Block,Tset02_GFX,Tset02_Coll,$18,$19,$1E,$FF,0 TSETHEAD Tset03_Block,Tset03_GFX,Tset03_Coll,$FF,$FF,$FF,$20,1 TSETHEAD Tset01_Block,Tset01_GFX,Tset01_Coll,$FF,$FF,$FF,$FF,0 TSETHEAD Tset05_Block,Tset05_GFX,Tset05_Coll,$3A,$FF,$FF,$FF,2 TSETHEAD Tset02_Block,Tset02_GFX,Tset02_Coll,$18,$19,$1E,$FF,0 TSETHEAD Tset05_Block,Tset05_GFX,Tset05_Coll,$3A,$FF,$FF,$FF,2 TSETHEAD Tset08_Block,Tset08_GFX,Tset08_Coll,$FF,$FF,$FF,$FF,0 TSETHEAD Tset09_Block,Tset09_GFX,Tset09_Coll,$17,$32,$FF,$FF,0 TSETHEAD Tset09_Block,Tset09_GFX,Tset09_Coll,$17,$32,$FF,$FF,0 TSETHEAD Tset0B_Block,Tset0B_GFX,Tset0B_Coll,$FF,$FF,$FF,$FF,0 TSETHEAD Tset09_Block,Tset09_GFX,Tset09_Coll,$17,$32,$FF,$FF,0 TSETHEAD Tset0D_Block,Tset0D_GFX,Tset0D_Coll,$FF,$FF,$FF,$FF,1 TSETHEAD Tset0E_Block,Tset0E_GFX,Tset0E_Coll,$FF,$FF,$FF,$FF,1 TSETHEAD Tset0F_Block,Tset0F_GFX,Tset0F_Coll,$12,$FF,$FF,$FF,0 TSETHEAD Tset10_Block,Tset10_GFX,Tset10_Coll,$FF,$FF,$FF,$FF,0 TSETHEAD Tset11_Block,Tset11_GFX,Tset11_Coll,$FF,$FF,$FF,$FF,1 TSETHEAD Tset12_Block,Tset12_GFX,Tset12_Coll,$15,$36,$FF,$FF,0 TSETHEAD Tset13_Block,Tset13_GFX,Tset13_Coll,$FF,$FF,$FF,$FF,0 TSETHEAD Tset14_Block,Tset14_GFX,Tset14_Coll,$FF,$FF,$FF,$FF,0 TSETHEAD Tset15_Block,Tset15_GFX,Tset15_Coll,$07,$17,$FF,$FF,0 TSETHEAD Tset16_Block,Tset16_GFX,Tset16_Coll,$12,$FF,$FF,$FF,1 TSETHEAD Tset17_Block,Tset17_GFX,Tset17_Coll,$FF,$FF,$FF,$45,1 ; 0xC8DE INCBIN "baserom.gbc",$C8DE,$C8F5-$C8DE ; data for default hidden/shown ; objects for each map ($00-$F8) ; Table of 2-Byte pointers, one pointer per map, ; goes up to Map_F7, ends with $FFFF. MapHSPointers: ; 48F5 dw MapHS00 dw MapHS01 dw MapHS02 dw MapHS03 dw MapHSXX dw MapHSXX dw MapHSXX dw MapHSXX dw MapHSXX dw MapHSXX dw MapHS0A dw MapHSXX dw MapHSXX dw MapHS0D dw MapHSXX dw MapHS0F dw MapHSXX dw MapHSXX dw MapHSXX dw MapHSXX dw MapHS14 dw MapHSXX dw MapHSXX dw MapHS17 dw MapHSXX dw MapHSXX dw MapHS1A dw MapHS1B dw MapHSXX dw MapHSXX dw MapHSXX dw MapHSXX dw MapHSXX dw MapHS21 dw MapHSXX dw MapHS23 dw MapHS24 dw MapHSXX dw MapHSXX dw MapHS27 dw MapHS28 dw MapHSXX dw MapHSXX dw MapHSXX dw MapHSXX dw MapHS2D dw MapHSXX dw MapHSXX dw MapHSXX dw MapHSXX dw MapHSXX dw MapHS33 dw MapHS34 dw MapHSXX dw MapHSXX dw MapHSXX dw MapHSXX dw MapHSXX dw MapHSXX dw MapHS3B dw MapHSXX dw MapHS3D dw MapHSXX dw MapHSXX dw MapHSXX dw MapHSXX dw MapHSXX dw MapHSXX dw MapHSXX dw MapHSXX dw MapHSXX dw MapHSXX dw MapHSXX dw MapHSXX dw MapHSXX dw MapHSXX dw MapHSXX dw MapHSXX dw MapHSXX dw MapHSXX dw MapHSXX dw MapHSXX dw MapHSXX dw MapHS53 dw MapHSXX dw MapHSXX dw MapHSXX dw MapHSXX dw MapHS58 dw MapHSXX dw MapHSXX dw MapHSXX dw MapHSXX dw MapHSXX dw MapHSXX dw MapHSXX dw MapHS60 dw MapHSXX dw MapHSXX dw MapHSXX dw MapHSXX dw MapHSXX dw MapHS66 dw MapHS67 dw MapHS68 dw MapHSXX dw MapHSXX dw MapHSXX dw MapHS6C dw MapHSXX dw MapHSXX dw MapHSXX dw MapHSXX dw MapHSXX dw MapHSXX dw MapHSXX dw MapHSXX dw MapHSXX dw MapHSXX dw MapHSXX dw MapHS78 dw MapHSXX dw MapHSXX dw MapHSXX dw MapHSXX dw MapHSXX dw MapHSXX dw MapHSXX dw MapHSXX dw MapHSXX dw MapHSXX dw MapHSXX dw MapHS84 dw MapHSXX dw MapHSXX dw MapHS87 dw MapHSXX dw MapHSXX dw MapHSXX dw MapHSXX dw MapHSXX dw MapHSXX dw MapHSXX dw MapHS8F dw MapHS90 dw MapHS91 dw MapHS92 dw MapHS93 dw MapHS94 dw MapHS95 dw MapHSXX dw MapHSXX dw MapHSXX dw MapHSXX dw MapHSXX dw MapHS9B dw MapHSXX dw MapHSXX dw MapHSXX dw MapHS9F dw MapHSA0 dw MapHSA1 dw MapHSA2 dw MapHSXX dw MapHSXX dw MapHSA5 dw MapHSXX dw MapHSXX dw MapHSXX dw MapHSXX dw MapHSXX dw MapHSXX dw MapHSXX dw MapHSXX dw MapHSXX dw MapHSXX dw MapHSXX dw MapHSB1 dw MapHSXX dw MapHSXX dw MapHSXX dw MapHSB5 dw MapHSXX dw MapHSXX dw MapHSXX dw MapHSXX dw MapHSXX dw MapHSXX dw MapHSXX dw MapHSXX dw MapHSXX dw MapHSXX dw MapHSC0 dw MapHSXX dw MapHSC2 dw MapHSXX dw MapHSXX dw MapHSXX dw MapHSC6 dw MapHSC7 dw MapHSC8 dw MapHSC9 dw MapHSCA dw MapHSXX dw MapHSXX dw MapHSXX dw MapHSXX dw MapHSCF dw MapHSD0 dw MapHSD1 dw MapHSD2 dw MapHSD3 dw MapHSD4 dw MapHSD5 dw MapHSD6 dw MapHSD7 dw MapHSD8 dw MapHSD9 dw MapHSDA dw MapHSDB dw MapHSDC dw MapHSXX dw MapHSXX dw MapHSXX dw MapHSXX dw MapHSXX dw MapHSE2 dw MapHSE3 dw MapHSE4 dw MapHSXX dw MapHSXX dw MapHSXX dw MapHSXX dw MapHSE9 dw MapHSEA dw MapHSEB dw MapHSXX dw MapHSXX dw MapHSXX dw MapHSXX dw MapHSXX dw MapHSXX dw MapHSXX dw MapHSXX dw MapHSF4 dw MapHSXX dw MapHSXX dw MapHSXX dw $FFFF ; Structure: ; 3 bytes per object ; [Map_ID][Object_ID][H/S] ; ; Program stops reading when either: ; a) Map_ID = $FF ; b) Map_ID ≠ currentMapID ; ; This Data is loaded into RAM at $D5CE-$D5F?. ; These constants come from the bytes for Predef functions: Hide equ $11 Show equ $15 MapHSXX: db $FF,$FF,$FF MapHS00: db PALLET_TOWN,$01,Hide MapHS01: db VIRIDIAN_CITY,$05,Show db VIRIDIAN_CITY,$07,Hide MapHS02: db PEWTER_CITY,$03,Show db PEWTER_CITY,$05,Show MapHS03: db CERULEAN_CITY,$01,Hide db CERULEAN_CITY,$02,Show db CERULEAN_CITY,$06,Hide db CERULEAN_CITY,$0A,Show db CERULEAN_CITY,$0B,Show MapHS0A: db SAFFRON_CITY,$01,Show db SAFFRON_CITY,$02,Show db SAFFRON_CITY,$03,Show db SAFFRON_CITY,$04,Show db SAFFRON_CITY,$05,Show db SAFFRON_CITY,$06,Show db SAFFRON_CITY,$07,Show db SAFFRON_CITY,$08,Hide db SAFFRON_CITY,$09,Hide db SAFFRON_CITY,$0A,Hide db SAFFRON_CITY,$0B,Hide db SAFFRON_CITY,$0C,Hide db SAFFRON_CITY,$0D,Hide db SAFFRON_CITY,$0E,Show db SAFFRON_CITY,$0F,Hide MapHS0D: db ROUTE_2,$01,Show db ROUTE_2,$02,Show MapHS0F: db ROUTE_4,$03,Show MapHS14: db ROUTE_9,$0A,Show MapHS17: db ROUTE_12,$01,Show db ROUTE_12,$09,Show db ROUTE_12,$0A,Show MapHS1A: db ROUTE_15,$0B,Show MapHS1B: db ROUTE_16,$07,Show MapHS21: db ROUTE_22,$01,Hide db ROUTE_22,$02,Hide MapHS23: db ROUTE_24,$01,Show db ROUTE_24,$08,Show MapHS24: db ROUTE_25,$0A,Show MapHS27: db BLUES_HOUSE,$01,Show db BLUES_HOUSE,$02,Hide db BLUES_HOUSE,$03,Show MapHS28: db OAKS_LAB,$01,Show db OAKS_LAB,$02,Show db OAKS_LAB,$03,Show db OAKS_LAB,$04,Show db OAKS_LAB,$05,Hide db OAKS_LAB,$06,Show db OAKS_LAB,$07,Show db OAKS_LAB,$08,Hide MapHS2D: db VIRIDIAN_GYM,$01,Show db VIRIDIAN_GYM,$0B,Show MapHS34: db MUSEUM_1F,$05,Show MapHSE4: db UNKNOWN_DUNGEON_1,$01,Show db UNKNOWN_DUNGEON_1,$02,Show db UNKNOWN_DUNGEON_1,$03,Show MapHS8F: db POKEMONTOWER_2,$01,Show MapHS90: db POKEMONTOWER_3,$04,Show MapHS91: db POKEMONTOWER_4,$04,Show db POKEMONTOWER_4,$05,Show db POKEMONTOWER_4,$06,Show MapHS92: db POKEMONTOWER_5,$06,Show MapHS93: db POKEMONTOWER_6,$04,Show db POKEMONTOWER_6,$05,Show MapHS94: db POKEMONTOWER_7,$01,Show db POKEMONTOWER_7,$02,Show db POKEMONTOWER_7,$03,Show db POKEMONTOWER_7,$04,Show MapHS95: db LAVENDER_HOUSE_1,$05,Hide MapHS84: db CELADON_MANSION_5,$02,Show MapHS87: db GAME_CORNER,$0B,Show MapHS9B: db FUCHSIA_HOUSE_2,$02,Show MapHSA5: db MANSION_1,$02,Show db MANSION_1,$03,Show MapHSB1: db FIGHTINGDOJO,$06,Show db FIGHTINGDOJO,$07,Show MapHSB5: db SILPH_CO_1F,$01,Hide MapHS53: db POWER_PLANT,$01,Show db POWER_PLANT,$02,Show db POWER_PLANT,$03,Show db POWER_PLANT,$04,Show db POWER_PLANT,$05,Show db POWER_PLANT,$06,Show db POWER_PLANT,$07,Show db POWER_PLANT,$08,Show db POWER_PLANT,$09,Show db POWER_PLANT,$0A,Show db POWER_PLANT,$0B,Show db POWER_PLANT,$0C,Show db POWER_PLANT,$0D,Show db POWER_PLANT,$0E,Show MapHSC2: db VICTORY_ROAD_2,$06,Show db VICTORY_ROAD_2,$07,Show db VICTORY_ROAD_2,$08,Show db VICTORY_ROAD_2,$09,Show db VICTORY_ROAD_2,$0A,Show db VICTORY_ROAD_2,$0D,Show MapHS58: db BILLS_HOUSE,$01,Show db BILLS_HOUSE,$02,Hide db BILLS_HOUSE,$03,Hide MapHS33: db VIRIDIAN_FOREST,$05,Show db VIRIDIAN_FOREST,$06,Show db VIRIDIAN_FOREST,$07,Show MapHS3B: db MT_MOON_1,$08,Show db MT_MOON_1,$09,Show db MT_MOON_1,$0A,Show db MT_MOON_1,$0B,Show db MT_MOON_1,$0C,Show db MT_MOON_1,$0D,Show MapHS3D: db MT_MOON_3,$06,Show db MT_MOON_3,$07,Show db MT_MOON_3,$08,Show db MT_MOON_3,$09,Show MapHS60: db SS_ANNE_2,$02,Hide MapHS66: db SS_ANNE_8,$0A,Show MapHS67: db SS_ANNE_9,$06,Show db SS_ANNE_9,$09,Show MapHS68: db SS_ANNE_10,$09,Show db SS_ANNE_10,$0A,Show db SS_ANNE_10,$0B,Show MapHSC6: db VICTORY_ROAD_3,$05,Show db VICTORY_ROAD_3,$06,Show db VICTORY_ROAD_3,$0A,Show MapHSC7: db ROCKET_HIDEOUT_1,$06,Show db ROCKET_HIDEOUT_1,$07,Show MapHSC8: db ROCKET_HIDEOUT_2,$02,Show db ROCKET_HIDEOUT_2,$03,Show db ROCKET_HIDEOUT_2,$04,Show db ROCKET_HIDEOUT_2,$05,Show MapHSC9: db ROCKET_HIDEOUT_3,$03,Show db ROCKET_HIDEOUT_3,$04,Show MapHSCA: db ROCKET_HIDEOUT_4,$01,Show db ROCKET_HIDEOUT_4,$05,Show db ROCKET_HIDEOUT_4,$06,Show db ROCKET_HIDEOUT_4,$07,Show db ROCKET_HIDEOUT_4,$08,Hide db ROCKET_HIDEOUT_4,$09,Hide MapHSCF: db SILPH_CO_2F,$01,Show db SILPH_CO_2F,$02,Show db SILPH_CO_2F,$03,Show db SILPH_CO_2F,$04,Show db SILPH_CO_2F,$05,Show MapHSD0: db SILPH_CO_3F,$02,Show db SILPH_CO_3F,$03,Show db SILPH_CO_3F,$04,Show MapHSD1: db SILPH_CO_4F,$02,Show db SILPH_CO_4F,$03,Show db SILPH_CO_4F,$04,Show db SILPH_CO_4F,$05,Show db SILPH_CO_4F,$06,Show db SILPH_CO_4F,$07,Show MapHSD2: db SILPH_CO_5F,$02,Show db SILPH_CO_5F,$03,Show db SILPH_CO_5F,$04,Show db SILPH_CO_5F,$05,Show db SILPH_CO_5F,$06,Show db SILPH_CO_5F,$07,Show db SILPH_CO_5F,$08,Show MapHSD3: db SILPH_CO_6F,$06,Show db SILPH_CO_6F,$07,Show db SILPH_CO_6F,$08,Show db SILPH_CO_6F,$09,Show db SILPH_CO_6F,$0A,Show MapHSD4: db SILPH_CO_7F,$05,Show db SILPH_CO_7F,$06,Show db SILPH_CO_7F,$07,Show db SILPH_CO_7F,$08,Show db SILPH_CO_7F,$09,Show db SILPH_CO_7F,$0A,Show db SILPH_CO_7F,$0B,Show db SILPH_CO_7F,$0C,Show MapHSD5: db SILPH_CO_8F,$02,Show db SILPH_CO_8F,$03,Show db SILPH_CO_8F,$04,Show MapHSE9: db SILPH_CO_9F,$02,Show db SILPH_CO_9F,$03,Show db SILPH_CO_9F,$04,Show MapHSEA: db SILPH_CO_10F,$01,Show db SILPH_CO_10F,$02,Show db SILPH_CO_10F,$03,Show db SILPH_CO_10F,$04,Show db SILPH_CO_10F,$05,Show db SILPH_CO_10F,$06,Show MapHSEB: db SILPH_CO_11F,$03,Show db SILPH_CO_11F,$04,Show db SILPH_CO_11F,$05,Show MapHSF4: db $F4,$02,Show MapHSD6: db MANSION_2,$02,Show MapHSD7: db MANSION_3,$03,Show db MANSION_3,$04,Show MapHSD8: db MANSION_4,$03,Show db MANSION_4,$04,Show db MANSION_4,$05,Show db MANSION_4,$06,Show db MANSION_4,$08,Show MapHSD9: db SAFARI_ZONE_EAST,$01,Show db SAFARI_ZONE_EAST,$02,Show db SAFARI_ZONE_EAST,$03,Show db SAFARI_ZONE_EAST,$04,Show MapHSDA: db SAFARI_ZONE_NORTH,$01,Show db SAFARI_ZONE_NORTH,$02,Show MapHSDB: db SAFARI_ZONE_WEST,$01,Show db SAFARI_ZONE_WEST,$02,Show db SAFARI_ZONE_WEST,$03,Show db SAFARI_ZONE_WEST,$04,Show MapHSDC: db SAFARI_ZONE_CENTER,$01,Show MapHSE2: db UNKNOWN_DUNGEON_2,$01,Show db UNKNOWN_DUNGEON_2,$02,Show db UNKNOWN_DUNGEON_2,$03,Show MapHSE3: db UNKNOWN_DUNGEON_3,$01,Show db UNKNOWN_DUNGEON_3,$02,Show db UNKNOWN_DUNGEON_3,$03,Show MapHS6C: db VICTORY_ROAD_1,$03,Show db VICTORY_ROAD_1,$04,Show MapHS78: db CHAMPIONS_ROOM,$02,Hide MapHSC0: db SEAFOAM_ISLANDS_1,$01,Show db SEAFOAM_ISLANDS_1,$02,Show MapHS9F: db SEAFOAM_ISLANDS_2,$01,Hide db SEAFOAM_ISLANDS_2,$02,Hide MapHSA0: db SEAFOAM_ISLANDS_3,$01,Hide db SEAFOAM_ISLANDS_3,$02,Hide MapHSA1: db SEAFOAM_ISLANDS_4,$02,Show db SEAFOAM_ISLANDS_4,$03,Show db SEAFOAM_ISLANDS_4,$05,Hide db SEAFOAM_ISLANDS_4,$06,Hide MapHSA2: db SEAFOAM_ISLANDS_5,$01,Hide db SEAFOAM_ISLANDS_5,$02,Hide db SEAFOAM_ISLANDS_5,$03,Show db $FF INCBIN "baserom.gbc",$cd97,$cdbb - $cd97 UnnamedText_cdbb: ; 0xcdbb TX_FAR _UnnamedText_cdbb db $50 ; 0xcdbb + 5 bytes INCBIN "baserom.gbc",$cdc0,$cdfa - $cdc0 UnnamedText_cdfa: ; 0xcdfa TX_FAR _UnnamedText_cdfa db $50 ; 0xcdfa + 5 bytes UnnamedText_cdff: ; 0xcdff TX_FAR _UnnamedText_cdff db $50 ; 0xcdff + 5 bytes ; function to add an item (in varying quantities) to the player's bag or PC box ; INPUT: ; hl = address of inventory (either W_NUMBAGITEMS or W_NUMBOXITEMS) ; [$CF91] = item ID ; [$CF96] = item quantity ; sets carry flag if successful, unsets carry flag if unsuccessful AddItemToInventory_: ; 4E04 ld a,[$cf96] ; a = item quantity push af push bc push de push hl push hl ld d,50 ; PC box can hold 50 items ld a,W_NUMBAGITEMS & $FF cp l jr nz,.checkIfInventoryFull\@ ld a,W_NUMBAGITEMS >> 8 cp h jr nz,.checkIfInventoryFull\@ ; if the destination is the bag ld d,20 ; bag can hold 20 items .checkIfInventoryFull\@ ld a,[hl] sub d ld d,a ld a,[hli] and a jr z,.addNewItem\@ .loop\@ ld a,[hli] ld b,a ; b = ID of current item in table ld a,[$cf91] ; a = ID of item being added cp b ; does the current item in the table match the item being added? jp z,.increaseItemQuantity\@ ; if so, increase the item's quantity inc hl ld a,[hl] cp a,$ff ; is it the end of the table? jr nz,.loop\@ .addNewItem\@ ; add an item not yet in the inventory pop hl ld a,d and a ; is there room for a new item slot? jr z,.done\@ ; if there is room inc [hl] ; increment the number of items in the inventory ld a,[hl] ; the number of items will be the index of the new item add a dec a ld c,a ld b,0 add hl,bc ; hl = address to store the item ld a,[$cf91] ld [hli],a ; store item ID ld a,[$cf96] ld [hli],a ; store item quantity ld [hl],$ff ; store terminator jp .success\@ .increaseItemQuantity\@ ; increase the quantity of an item already in the inventory ld a,[$cf96] ld b,a ; b = quantity to add ld a,[hl] ; a = existing item quantity add b ; a = new item quantity cp a,100 jp c,.storeNewQuantity\@ ; if the new quantity is less than 100, store it ; if the new quantity is greater than or equal to 100, ; try to max out the current slot and add the rest in a new slot sub a,99 ld [$cf96],a ; a = amount left over (to put in the new slot) ld a,d and a ; is there room for a new item slot? jr z,.increaseItemQuantityFailed\@ ; if so, store 99 in the current slot and store the rest in a new slot ld a,99 ld [hli],a jp .loop\@ .increaseItemQuantityFailed\@ pop hl and a jr .done\@ .storeNewQuantity\@ ld [hl],a pop hl .success\@ scf .done\@ pop hl pop de pop bc pop bc ld a,b ld [$cf96],a ; restore the initial value from when the function was called ret ; function to remove an item (in varying quantities) from the player's bag or PC box ; INPUT: ; hl = address of inventory (either W_NUMBAGITEMS or W_NUMBOXITEMS) ; [$CF92] = index (within the inventory) of the item to remove ; [$CF96] = quantity to remove RemoveItemFromInventory_: ; 4E74 push hl inc hl ld a,[$cf92] ; index (within the inventory) of the item being removed sla a add l ld l,a jr nc,.noCarry\@ inc h .noCarry\@ inc hl ld a,[$cf96] ; quantity being removed ld e,a ld a,[hl] ; a = current quantity sub e ld [hld],a ; store new quantity ld [$cf97],a and a jr nz,.skipMovingUpSlots\@ ; if the remaining quantity is 0, ; remove the emptied item slot and move up all the following item slots .moveSlotsUp\@ ld e,l ld d,h inc de inc de ; de = address of the slot following the emptied one .loop\@ ; loop to move up the following slots ld a,[de] inc de ld [hli],a cp a,$ff jr nz,.loop\@ ; update menu info xor a ld [W_LISTSCROLLOFFSET],a ld [W_CURMENUITEMID],a ld [$cc2c],a ld [$d07e],a pop hl ld a,[hl] ; a = number of items in inventory dec a ; decrement the number of items ld [hl],a ; store new number of items ld [$d12a],a cp a,2 jr c,.done\@ ld [W_MAXMENUITEMID],a jr .done\@ .skipMovingUpSlots\@ pop hl .done\@ ret ; wild pokemon data: from 4EB8 to 55C7 LoadWildData: ; 4EB8 ld hl,WildDataPointers ld a,[W_CURMAP] ; get wild data for current map ld c,a ld b,0 add hl,bc add hl,bc ld a,[hli] ld h,[hl] ld l,a ; hl now points to wild data for current map ld a,[hli] ld [W_GRASSRATE],a and a jr z,.NoGrassData\@ ; if no grass data, skip to surfing data push hl ld de,W_GRASSMONS ; otherwise, load grass data ld bc,$0014 call CopyData pop hl ld bc,$0014 add hl,bc .NoGrassData\@ ld a,[hli] ld [W_WATERRATE],a and a ret z ; if no water data, we're done ld de,W_WATERMONS ; otherwise, load surfing data ld bc,$0014 jp CopyData WildDataPointers: ; 4EEB dw NoMons ; PALLET_TOWN dw NoMons ; VIRIDIAN_CITY dw NoMons ; PEWTER_CITY dw NoMons ; CERULEAN_CITY dw NoMons ; LAVENDER_TOWN dw NoMons ; VERMILION_CITY dw NoMons ; CELADON_CITY dw NoMons ; FUCHSIA_CITY dw NoMons ; CINNABAR_ISLAND dw NoMons ; INDIGO_PLATEAU dw NoMons ; SAFFRON_CITY dw NoMons ; unused dw Route1Mons ; ROUTE_1 dw Route2Mons ; ROUTE_2 dw Route3Mons ; ROUTE_3 dw Route4Mons ; ROUTE_4 dw Route5Mons ; ROUTE_5 dw Route6Mons ; ROUTE_6 dw Route7Mons ; ROUTE_7 dw Route8Mons ; ROUTE_8 dw Route9Mons ; ROUTE_9 dw Route10Mons ; ROUTE_10 dw Route11Mons ; ROUTE_11 dw Route12Mons ; ROUTE_12 dw Route13Mons ; ROUTE_13 dw Route14Mons ; ROUTE_14 dw Route15Mons ; ROUTE_15 dw Route16Mons ; ROUTE_16 dw Route17Mons ; ROUTE_17 dw Route18Mons ; ROUTE_18 dw WaterMons ; ROUTE_19 dw WaterMons ; ROUTE_20 dw Route21Mons ; ROUTE_21 dw Route22Mons ; ROUTE_22 dw Route23Mons ; ROUTE_23 dw Route24Mons ; ROUTE_24 dw Route25Mons ; ROUTE_25 dw NoMons ; REDS_HOUSE_1F dw NoMons dw NoMons dw NoMons dw NoMons dw NoMons dw NoMons dw NoMons dw NoMons dw NoMons dw NoMons dw NoMons dw NoMons dw NoMons dw ForestMons ; ViridianForest dw NoMons dw NoMons dw NoMons dw NoMons dw NoMons dw NoMons dw NoMons dw MoonMons1 dw MoonMonsB1 dw MoonMonsB2 dw NoMons dw NoMons dw NoMons dw NoMons dw NoMons dw NoMons dw NoMons dw NoMons dw NoMons dw NoMons dw NoMons dw NoMons dw NoMons dw NoMons dw NoMons dw NoMons dw NoMons dw NoMons dw NoMons dw NoMons dw TunnelMonsB1 dw PowerPlantMons dw NoMons dw NoMons dw NoMons dw NoMons dw NoMons dw NoMons dw NoMons dw NoMons dw NoMons dw NoMons dw NoMons dw NoMons dw NoMons dw NoMons dw NoMons dw NoMons dw NoMons dw NoMons dw NoMons dw NoMons dw NoMons dw NoMons dw NoMons dw NoMons dw PlateauMons1 dw NoMons dw NoMons dw NoMons dw NoMons dw NoMons dw NoMons dw NoMons dw NoMons dw NoMons dw NoMons dw NoMons dw NoMons dw NoMons dw NoMons dw NoMons dw NoMons dw NoMons dw NoMons dw NoMons dw NoMons dw NoMons dw NoMons dw NoMons dw NoMons dw NoMons dw NoMons dw NoMons dw NoMons dw NoMons dw NoMons dw NoMons dw NoMons dw NoMons dw TowerMons1 dw TowerMons2 dw TowerMons3 dw TowerMons4 dw TowerMons5 dw TowerMons6 dw TowerMons7 dw NoMons dw NoMons dw NoMons dw NoMons dw NoMons dw NoMons dw NoMons dw NoMons dw NoMons dw NoMons dw IslandMonsB1 dw IslandMonsB2 dw IslandMonsB3 dw IslandMonsB4 dw NoMons dw NoMons dw MansionMons1 dw NoMons dw NoMons dw NoMons dw NoMons dw NoMons dw NoMons dw NoMons dw NoMons dw NoMons dw NoMons dw NoMons dw NoMons dw NoMons dw NoMons dw NoMons dw NoMons dw NoMons dw NoMons dw NoMons dw NoMons dw NoMons dw NoMons dw NoMons dw NoMons dw NoMons dw NoMons dw IslandMons1 dw NoMons dw PlateauMons2 dw NoMons dw NoMons dw CaveMons dw PlateauMons3 dw NoMons dw NoMons dw NoMons dw NoMons dw NoMons dw NoMons dw NoMons dw NoMons dw NoMons dw NoMons dw NoMons dw NoMons dw NoMons dw NoMons dw NoMons dw MansionMons2 dw MansionMons3 dw MansionMonsB1 dw ZoneMons1 dw ZoneMons2 dw ZoneMons3 dw ZoneMonsCenter dw NoMons dw NoMons dw NoMons dw NoMons dw NoMons dw DungeonMons2 dw DungeonMonsB1 dw DungeonMons1 dw NoMons dw NoMons dw NoMons dw TunnelMonsB2 dw NoMons dw NoMons dw NoMons dw NoMons dw NoMons dw NoMons dw NoMons dw NoMons dw NoMons dw NoMons dw NoMons dw NoMons dw NoMons dw NoMons dw NoMons dw $FFFF ; wild pokemon data is divided into two parts. ; first part: pokemon found in grass ; second part: pokemon found while surfing ; each part goes as follows: ; if first byte == 00, then ; no wild pokemon on this map ; if first byte != 00, then ; first byte is encounter rate ; followed by 20 bytes: ; level, species (ten times) IF _RED NoMons: db $00 db $00 Route1Mons: db $19 db 3,PIDGEY db 3,RATTATA db 3,RATTATA db 2,RATTATA db 2,PIDGEY db 3,PIDGEY db 3,PIDGEY db 4,RATTATA db 4,PIDGEY db 5,PIDGEY db $00 Route2Mons: db $19 db 3,RATTATA db 3,PIDGEY db 4,PIDGEY db 4,RATTATA db 5,PIDGEY db 3,WEEDLE db 2,RATTATA db 5,RATTATA db 4,WEEDLE db 5,WEEDLE db $00 Route22Mons: db $19 db 3,RATTATA db 3,NIDORAN_M db 4,RATTATA db 4,NIDORAN_M db 2,RATTATA db 2,NIDORAN_M db 3,SPEAROW db 5,SPEAROW db 3,NIDORAN_F db 4,NIDORAN_F db $00 ForestMons: db $08 db 4,WEEDLE db 5,KAKUNA db 3,WEEDLE db 5,WEEDLE db 4,KAKUNA db 6,KAKUNA db 4,METAPOD db 3,CATERPIE db 3,PIKACHU db 5,PIKACHU db $00 Route3Mons: db $14 db 6,PIDGEY db 5,SPEAROW db 7,PIDGEY db 6,SPEAROW db 7,SPEAROW db 8,PIDGEY db 8,SPEAROW db 3,JIGGLYPUFF db 5,JIGGLYPUFF db 7,JIGGLYPUFF db $00 MoonMons1: db $0A db 8,ZUBAT db 7,ZUBAT db 9,ZUBAT db 8,GEODUDE db 6,ZUBAT db 10,ZUBAT db 10,GEODUDE db 8,PARAS db 11,ZUBAT db 8,CLEFAIRY db $00 MoonMonsB1: db $0A db 8,ZUBAT db 7,ZUBAT db 7,GEODUDE db 8,GEODUDE db 9,ZUBAT db 10,PARAS db 10,ZUBAT db 11,ZUBAT db 9,CLEFAIRY db 9,GEODUDE db $00 MoonMonsB2: db $0A db 9,ZUBAT db 9,GEODUDE db 10,ZUBAT db 10,GEODUDE db 11,ZUBAT db 10,PARAS db 12,PARAS db 10,CLEFAIRY db 12,ZUBAT db 12,CLEFAIRY db $00 Route4Mons: db $14 db 10,RATTATA db 10,SPEAROW db 8,RATTATA db 6,EKANS db 8,SPEAROW db 10,EKANS db 12,RATTATA db 12,SPEAROW db 8,EKANS db 12,EKANS db $00 Route24Mons: db $19 db 7,WEEDLE db 8,KAKUNA db 12,PIDGEY db 12,ODDISH db 13,ODDISH db 10,ABRA db 14,ODDISH db 13,PIDGEY db 8,ABRA db 12,ABRA db $00 Route25Mons: db $0F db 8,WEEDLE db 9,KAKUNA db 13,PIDGEY db 12,ODDISH db 13,ODDISH db 12,ABRA db 14,ODDISH db 10,ABRA db 7,METAPOD db 8,CATERPIE db $00 Route9Mons: db $0F db 16,RATTATA db 16,SPEAROW db 14,RATTATA db 11,EKANS db 13,SPEAROW db 15,EKANS db 17,RATTATA db 17,SPEAROW db 13,EKANS db 17,EKANS db $00 Route5Mons: db $0F db 13,ODDISH db 13,PIDGEY db 15,PIDGEY db 10,MANKEY db 12,MANKEY db 15,ODDISH db 16,ODDISH db 16,PIDGEY db 14,MANKEY db 16,MANKEY db $00 Route6Mons: db $0F db 13,ODDISH db 13,PIDGEY db 15,PIDGEY db 10,MANKEY db 12,MANKEY db 15,ODDISH db 16,ODDISH db 16,PIDGEY db 14,MANKEY db 16,MANKEY db $00 Route11Mons: db $0F db 14,EKANS db 15,SPEAROW db 12,EKANS db 9,DROWZEE db 13,SPEAROW db 13,DROWZEE db 15,EKANS db 17,SPEAROW db 11,DROWZEE db 15,DROWZEE db $00 TunnelMonsB1: db $0F db 16,ZUBAT db 17,ZUBAT db 17,GEODUDE db 15,MACHOP db 16,GEODUDE db 18,ZUBAT db 15,ZUBAT db 17,MACHOP db 13,ONIX db 15,ONIX db $00 TunnelMonsB2: db $0F db 16,ZUBAT db 17,ZUBAT db 17,GEODUDE db 15,MACHOP db 16,GEODUDE db 18,ZUBAT db 17,MACHOP db 17,ONIX db 13,ONIX db 18,GEODUDE db $00 Route10Mons: db $0F db 16,VOLTORB db 16,SPEAROW db 14,VOLTORB db 11,EKANS db 13,SPEAROW db 15,EKANS db 17,VOLTORB db 17,SPEAROW db 13,EKANS db 17,EKANS db $00 Route12Mons: db $0F db 24,ODDISH db 25,PIDGEY db 23,PIDGEY db 24,VENONAT db 22,ODDISH db 26,VENONAT db 26,ODDISH db 27,PIDGEY db 28,GLOOM db 30,GLOOM db $00 Route8Mons: db $0F db 18,PIDGEY db 18,MANKEY db 17,EKANS db 16,GROWLITHE db 20,PIDGEY db 20,MANKEY db 19,EKANS db 17,GROWLITHE db 15,GROWLITHE db 18,GROWLITHE db $00 Route7Mons: db $0F db 19,PIDGEY db 19,ODDISH db 17,MANKEY db 22,ODDISH db 22,PIDGEY db 18,MANKEY db 18,GROWLITHE db 20,GROWLITHE db 19,MANKEY db 20,MANKEY db $00 TowerMons1: db $00 db $00 TowerMons2: db $00 db $00 TowerMons3: db $0A db 20,GASTLY db 21,GASTLY db 22,GASTLY db 23,GASTLY db 19,GASTLY db 18,GASTLY db 24,GASTLY db 20,CUBONE db 22,CUBONE db 25,HAUNTER db $00 TowerMons4: db $0A db 20,GASTLY db 21,GASTLY db 22,GASTLY db 23,GASTLY db 19,GASTLY db 18,GASTLY db 25,HAUNTER db 20,CUBONE db 22,CUBONE db 24,GASTLY db $00 TowerMons5: db $0A db 20,GASTLY db 21,GASTLY db 22,GASTLY db 23,GASTLY db 19,GASTLY db 18,GASTLY db 25,HAUNTER db 20,CUBONE db 22,CUBONE db 24,GASTLY db $00 TowerMons6: db $0F db 21,GASTLY db 22,GASTLY db 23,GASTLY db 24,GASTLY db 20,GASTLY db 19,GASTLY db 26,HAUNTER db 22,CUBONE db 24,CUBONE db 28,HAUNTER db $00 TowerMons7: db $0F db 21,GASTLY db 22,GASTLY db 23,GASTLY db 24,GASTLY db 20,GASTLY db 28,HAUNTER db 22,CUBONE db 24,CUBONE db 28,HAUNTER db 30,HAUNTER db $00 Route13Mons: db $14 db 24,ODDISH db 25,PIDGEY db 27,PIDGEY db 24,VENONAT db 22,ODDISH db 26,VENONAT db 26,ODDISH db 25,DITTO db 28,GLOOM db 30,GLOOM db $00 Route14Mons: db $0F db 24,ODDISH db 26,PIDGEY db 23,DITTO db 24,VENONAT db 22,ODDISH db 26,VENONAT db 26,ODDISH db 30,GLOOM db 28,PIDGEOTTO db 30,PIDGEOTTO db $00 Route15Mons: db $0F db 24,ODDISH db 26,DITTO db 23,PIDGEY db 26,VENONAT db 22,ODDISH db 28,VENONAT db 26,ODDISH db 30,GLOOM db 28,PIDGEOTTO db 30,PIDGEOTTO db $00 Route16Mons: db $19 db 20,SPEAROW db 22,SPEAROW db 18,RATTATA db 20,DODUO db 20,RATTATA db 18,DODUO db 22,DODUO db 22,RATTATA db 23,RATICATE db 25,RATICATE db $00 Route17Mons: db $19 db 20,SPEAROW db 22,SPEAROW db 25,RATICATE db 24,DODUO db 27,RATICATE db 26,DODUO db 28,DODUO db 29,RATICATE db 25,FEAROW db 27,FEAROW db $00 Route18Mons: db $19 db 20,SPEAROW db 22,SPEAROW db 25,RATICATE db 24,DODUO db 25,FEAROW db 26,DODUO db 28,DODUO db 29,RATICATE db 27,FEAROW db 29,FEAROW db $00 ZoneMonsCenter: db $1E db 22,NIDORAN_M db 25,RHYHORN db 22,VENONAT db 24,EXEGGCUTE db 31,NIDORINO db 25,EXEGGCUTE db 31,NIDORINA db 30,PARASECT db 23,SCYTHER db 23,CHANSEY db $00 ZoneMons1: db $1E db 24,NIDORAN_M db 26,DODUO db 22,PARAS db 25,EXEGGCUTE db 33,NIDORINO db 23,EXEGGCUTE db 24,NIDORAN_F db 25,PARASECT db 25,KANGASKHAN db 28,SCYTHER db $00 ZoneMons2: db $1E db 22,NIDORAN_M db 26,RHYHORN db 23,PARAS db 25,EXEGGCUTE db 30,NIDORINO db 27,EXEGGCUTE db 30,NIDORINA db 32,VENOMOTH db 26,CHANSEY db 28,TAUROS db $00 ZoneMons3: db $1E db 25,NIDORAN_M db 26,DODUO db 23,VENONAT db 24,EXEGGCUTE db 33,NIDORINO db 26,EXEGGCUTE db 25,NIDORAN_F db 31,VENOMOTH db 26,TAUROS db 28,KANGASKHAN db $00 WaterMons: db $00 db $05 db 5,TENTACOOL db 10,TENTACOOL db 15,TENTACOOL db 5,TENTACOOL db 10,TENTACOOL db 15,TENTACOOL db 20,TENTACOOL db 30,TENTACOOL db 35,TENTACOOL db 40,TENTACOOL IslandMons1: db $0F db 30,SEEL db 30,SLOWPOKE db 30,SHELLDER db 30,HORSEA db 28,HORSEA db 21,ZUBAT db 29,GOLBAT db 28,PSYDUCK db 28,SHELLDER db 38,GOLDUCK db $00 IslandMonsB1: db $0A db 30,STARYU db 30,HORSEA db 32,SHELLDER db 32,HORSEA db 28,SLOWPOKE db 30,SEEL db 30,SLOWPOKE db 28,SEEL db 38,DEWGONG db 37,SEADRA db $00 IslandMonsB2: db $0A db 30,SEEL db 30,SLOWPOKE db 32,SEEL db 32,SLOWPOKE db 28,HORSEA db 30,STARYU db 30,HORSEA db 28,SHELLDER db 30,GOLBAT db 37,SLOWBRO db $00 IslandMonsB3: db $0A db 31,SLOWPOKE db 31,SEEL db 33,SLOWPOKE db 33,SEEL db 29,HORSEA db 31,SHELLDER db 31,HORSEA db 29,SHELLDER db 39,SEADRA db 37,DEWGONG db $00 IslandMonsB4: db $0A db 31,HORSEA db 31,SHELLDER db 33,HORSEA db 33,SHELLDER db 29,SLOWPOKE db 31,SEEL db 31,SLOWPOKE db 29,SEEL db 39,SLOWBRO db 32,GOLBAT db $00 MansionMons1: db $0A db 32,KOFFING db 30,KOFFING db 34,PONYTA db 30,PONYTA db 34,GROWLITHE db 32,PONYTA db 30,GRIMER db 28,PONYTA db 37,WEEZING db 39,MUK db $00 MansionMons2: db $0A db 32,GROWLITHE db 34,KOFFING db 34,KOFFING db 30,PONYTA db 30,KOFFING db 32,PONYTA db 30,GRIMER db 28,PONYTA db 39,WEEZING db 37,MUK db $00 MansionMons3: db $0A db 31,KOFFING db 33,GROWLITHE db 35,KOFFING db 32,PONYTA db 34,PONYTA db 40,WEEZING db 34,GRIMER db 38,WEEZING db 36,PONYTA db 42,MUK db $00 MansionMonsB1: db $0A db 33,KOFFING db 31,KOFFING db 35,GROWLITHE db 32,PONYTA db 31,KOFFING db 40,WEEZING db 34,PONYTA db 35,GRIMER db 42,WEEZING db 42,MUK db $00 Route21Mons: db $19 db 21,RATTATA db 23,PIDGEY db 30,RATICATE db 23,RATTATA db 21,PIDGEY db 30,PIDGEOTTO db 32,PIDGEOTTO db 28,TANGELA db 30,TANGELA db 32,TANGELA db $05 db 5,TENTACOOL db 10,TENTACOOL db 15,TENTACOOL db 5,TENTACOOL db 10,TENTACOOL db 15,TENTACOOL db 20,TENTACOOL db 30,TENTACOOL db 35,TENTACOOL db 40,TENTACOOL DungeonMons1: db $0A db 46,GOLBAT db 46,HYPNO db 46,MAGNETON db 49,DODRIO db 49,VENOMOTH db 52,ARBOK db 49,KADABRA db 52,PARASECT db 53,RAICHU db 53,DITTO db $00 DungeonMons2: db $0F db 51,DODRIO db 51,VENOMOTH db 51,KADABRA db 52,RHYDON db 52,MAROWAK db 52,ELECTRODE db 56,CHANSEY db 54,WIGGLYTUFF db 55,DITTO db 60,DITTO db $00 DungeonMonsB1: db $19 db 55,RHYDON db 55,MAROWAK db 55,ELECTRODE db 64,CHANSEY db 64,PARASECT db 64,RAICHU db 57,ARBOK db 65,DITTO db 63,DITTO db 67,DITTO db $00 PowerPlantMons: db $0A db 21,VOLTORB db 21,MAGNEMITE db 20,PIKACHU db 24,PIKACHU db 23,MAGNEMITE db 23,VOLTORB db 32,MAGNETON db 35,MAGNETON db 33,ELECTABUZZ db 36,ELECTABUZZ db $00 Route23Mons: db $0A db 26,EKANS db 33,DITTO db 26,SPEAROW db 38,FEAROW db 38,DITTO db 38,FEAROW db 41,ARBOK db 43,DITTO db 41,FEAROW db 43,FEAROW db $00 PlateauMons2: db $0A db 22,MACHOP db 24,GEODUDE db 26,ZUBAT db 36,ONIX db 39,ONIX db 42,ONIX db 41,MACHOKE db 40,GOLBAT db 40,MAROWAK db 43,GRAVELER db $00 PlateauMons3: db $0F db 24,MACHOP db 26,GEODUDE db 22,ZUBAT db 42,ONIX db 40,VENOMOTH db 45,ONIX db 43,GRAVELER db 41,GOLBAT db 42,MACHOKE db 45,MACHOKE db $00 PlateauMons1: db $0F db 24,MACHOP db 26,GEODUDE db 22,ZUBAT db 36,ONIX db 39,ONIX db 42,ONIX db 41,GRAVELER db 41,GOLBAT db 42,MACHOKE db 43,MAROWAK db $00 CaveMons: db $14 db 18,DIGLETT db 19,DIGLETT db 17,DIGLETT db 20,DIGLETT db 16,DIGLETT db 15,DIGLETT db 21,DIGLETT db 22,DIGLETT db 29,DUGTRIO db 31,DUGTRIO db $00 ENDC IF _GREEN || !_JAPAN && _BLUE NoMons: db $00 db $00 Route1Mons: db $19 db 3,PIDGEY db 3,RATTATA db 3,RATTATA db 2,RATTATA db 2,PIDGEY db 3,PIDGEY db 3,PIDGEY db 4,RATTATA db 4,PIDGEY db 5,PIDGEY db $00 Route2Mons: db $19 db 3,RATTATA db 3,PIDGEY db 4,PIDGEY db 4,RATTATA db 5,PIDGEY db 3,CATERPIE db 2,RATTATA db 5,RATTATA db 4,CATERPIE db 5,CATERPIE db $00 Route22Mons: db $19 db 3,RATTATA db 3,NIDORAN_F db 4,RATTATA db 4,NIDORAN_F db 2,RATTATA db 2,NIDORAN_F db 3,SPEAROW db 5,SPEAROW db 3,NIDORAN_M db 4,NIDORAN_M db $00 ForestMons: db $08 db 4,CATERPIE db 5,METAPOD db 3,CATERPIE db 5,CATERPIE db 4,METAPOD db 6,METAPOD db 4,KAKUNA db 3,WEEDLE db 3,PIKACHU db 5,PIKACHU db $00 Route3Mons: db $14 db 6,PIDGEY db 5,SPEAROW db 7,PIDGEY db 6,SPEAROW db 7,SPEAROW db 8,PIDGEY db 8,SPEAROW db 3,JIGGLYPUFF db 5,JIGGLYPUFF db 7,JIGGLYPUFF db $00 MoonMons1: db $0A db 8,ZUBAT db 7,ZUBAT db 9,ZUBAT db 8,GEODUDE db 6,ZUBAT db 10,ZUBAT db 10,GEODUDE db 8,PARAS db 11,ZUBAT db 8,CLEFAIRY db $00 MoonMonsB1: db $0A db 8,ZUBAT db 7,ZUBAT db 7,GEODUDE db 8,GEODUDE db 9,ZUBAT db 10,PARAS db 10,ZUBAT db 11,ZUBAT db 9,CLEFAIRY db 9,GEODUDE db $00 MoonMonsB2: db $0A db 9,ZUBAT db 9,GEODUDE db 10,ZUBAT db 10,GEODUDE db 11,ZUBAT db 10,PARAS db 12,PARAS db 10,CLEFAIRY db 12,ZUBAT db 12,CLEFAIRY db $00 Route4Mons: db $14 db 10,RATTATA db 10,SPEAROW db 8,RATTATA db 6,SANDSHREW db 8,SPEAROW db 10,SANDSHREW db 12,RATTATA db 12,SPEAROW db 8,SANDSHREW db 12,SANDSHREW db $00 Route24Mons: db $19 db 7,CATERPIE db 8,METAPOD db 12,PIDGEY db 12,BELLSPROUT db 13,BELLSPROUT db 10,ABRA db 14,BELLSPROUT db 13,PIDGEY db 8,ABRA db 12,ABRA db $00 Route25Mons: db $0F db 8,CATERPIE db 9,METAPOD db 13,PIDGEY db 12,BELLSPROUT db 13,BELLSPROUT db 12,ABRA db 14,BELLSPROUT db 10,ABRA db 7,KAKUNA db 8,WEEDLE db $00 Route9Mons: db $0F db 16,RATTATA db 16,SPEAROW db 14,RATTATA db 11,SANDSHREW db 13,SPEAROW db 15,SANDSHREW db 17,RATTATA db 17,SPEAROW db 13,SANDSHREW db 17,SANDSHREW db $00 Route5Mons: db $0F db 13,BELLSPROUT db 13,PIDGEY db 15,PIDGEY db 10,MEOWTH db 12,MEOWTH db 15,BELLSPROUT db 16,BELLSPROUT db 16,PIDGEY db 14,MEOWTH db 16,MEOWTH db $00 Route6Mons: db $0F db 13,BELLSPROUT db 13,PIDGEY db 15,PIDGEY db 10,MEOWTH db 12,MEOWTH db 15,BELLSPROUT db 16,BELLSPROUT db 16,PIDGEY db 14,MEOWTH db 16,MEOWTH db $00 Route11Mons: db $0F db 14,SANDSHREW db 15,SPEAROW db 12,SANDSHREW db 9,DROWZEE db 13,SPEAROW db 13,DROWZEE db 15,SANDSHREW db 17,SPEAROW db 11,DROWZEE db 15,DROWZEE db $00 TunnelMonsB1: db $0F db 16,ZUBAT db 17,ZUBAT db 17,GEODUDE db 15,MACHOP db 16,GEODUDE db 18,ZUBAT db 15,ZUBAT db 17,MACHOP db 13,ONIX db 15,ONIX db $00 TunnelMonsB2: db $0F db 16,ZUBAT db 17,ZUBAT db 17,GEODUDE db 15,MACHOP db 16,GEODUDE db 18,ZUBAT db 17,MACHOP db 17,ONIX db 13,ONIX db 18,GEODUDE db $00 Route10Mons: db $0F db 16,VOLTORB db 16,SPEAROW db 14,VOLTORB db 11,SANDSHREW db 13,SPEAROW db 15,SANDSHREW db 17,VOLTORB db 17,SPEAROW db 13,SANDSHREW db 17,SANDSHREW db $00 Route12Mons: db $0F db 24,BELLSPROUT db 25,PIDGEY db 23,PIDGEY db 24,VENONAT db 22,BELLSPROUT db 26,VENONAT db 26,BELLSPROUT db 27,PIDGEY db 28,WEEPINBELL db 30,WEEPINBELL db $00 Route8Mons: db $0F db 18,PIDGEY db 18,MEOWTH db 17,SANDSHREW db 16,VULPIX db 20,PIDGEY db 20,MEOWTH db 19,SANDSHREW db 17,VULPIX db 15,VULPIX db 18,VULPIX db $00 Route7Mons: db $0F db 19,PIDGEY db 19,BELLSPROUT db 17,MEOWTH db 22,BELLSPROUT db 22,PIDGEY db 18,MEOWTH db 18,VULPIX db 20,VULPIX db 19,MEOWTH db 20,MEOWTH db $00 TowerMons1: db $00 db $00 TowerMons2: db $00 db $00 TowerMons3: db $0A db 20,GASTLY db 21,GASTLY db 22,GASTLY db 23,GASTLY db 19,GASTLY db 18,GASTLY db 24,GASTLY db 20,CUBONE db 22,CUBONE db 25,HAUNTER db $00 TowerMons4: db $0A db 20,GASTLY db 21,GASTLY db 22,GASTLY db 23,GASTLY db 19,GASTLY db 18,GASTLY db 25,HAUNTER db 20,CUBONE db 22,CUBONE db 24,GASTLY db $00 TowerMons5: db $0A db 20,GASTLY db 21,GASTLY db 22,GASTLY db 23,GASTLY db 19,GASTLY db 18,GASTLY db 25,HAUNTER db 20,CUBONE db 22,CUBONE db 24,GASTLY db $00 TowerMons6: db $0F db 21,GASTLY db 22,GASTLY db 23,GASTLY db 24,GASTLY db 20,GASTLY db 19,GASTLY db 26,HAUNTER db 22,CUBONE db 24,CUBONE db 28,HAUNTER db $00 TowerMons7: db $0F db 21,GASTLY db 22,GASTLY db 23,GASTLY db 24,GASTLY db 20,GASTLY db 28,HAUNTER db 22,CUBONE db 24,CUBONE db 28,HAUNTER db 30,HAUNTER db $00 Route13Mons: db $14 db 24,BELLSPROUT db 25,PIDGEY db 27,PIDGEY db 24,VENONAT db 22,BELLSPROUT db 26,VENONAT db 26,BELLSPROUT db 25,DITTO db 28,WEEPINBELL db 30,WEEPINBELL db $00 Route14Mons: db $0F db 24,BELLSPROUT db 26,PIDGEY db 23,DITTO db 24,VENONAT db 22,BELLSPROUT db 26,VENONAT db 26,BELLSPROUT db 30,WEEPINBELL db 28,PIDGEOTTO db 30,PIDGEOTTO db $00 Route15Mons: db $0F db 24,BELLSPROUT db 26,DITTO db 23,PIDGEY db 26,VENONAT db 22,BELLSPROUT db 28,VENONAT db 26,BELLSPROUT db 30,WEEPINBELL db 28,PIDGEOTTO db 30,PIDGEOTTO db $00 Route16Mons: db $19 db 20,SPEAROW db 22,SPEAROW db 18,RATTATA db 20,DODUO db 20,RATTATA db 18,DODUO db 22,DODUO db 22,RATTATA db 23,RATICATE db 25,RATICATE db $00 Route17Mons: db $19 db 20,SPEAROW db 22,SPEAROW db 25,RATICATE db 24,DODUO db 27,RATICATE db 26,DODUO db 28,DODUO db 29,RATICATE db 25,FEAROW db 27,FEAROW db $00 Route18Mons: db $19 db 20,SPEAROW db 22,SPEAROW db 25,RATICATE db 24,DODUO db 25,FEAROW db 26,DODUO db 28,DODUO db 29,RATICATE db 27,FEAROW db 29,FEAROW db $00 ZoneMonsCenter: db $1E db 22,NIDORAN_F db 25,RHYHORN db 22,VENONAT db 24,EXEGGCUTE db 31,NIDORINA db 25,EXEGGCUTE db 31,NIDORINO db 30,PARASECT db 23,PINSIR db 23,CHANSEY db $00 ZoneMons1: db $1E db 24,NIDORAN_F db 26,DODUO db 22,PARAS db 25,EXEGGCUTE db 33,NIDORINA db 23,EXEGGCUTE db 24,NIDORAN_M db 25,PARASECT db 25,KANGASKHAN db 28,PINSIR db $00 ZoneMons2: db $1E db 22,NIDORAN_F db 26,RHYHORN db 23,PARAS db 25,EXEGGCUTE db 30,NIDORINA db 27,EXEGGCUTE db 30,NIDORINO db 32,VENOMOTH db 26,CHANSEY db 28,TAUROS db $00 ZoneMons3: db $1E db 25,NIDORAN_F db 26,DODUO db 23,VENONAT db 24,EXEGGCUTE db 33,NIDORINA db 26,EXEGGCUTE db 25,NIDORAN_M db 31,VENOMOTH db 26,TAUROS db 28,KANGASKHAN db $00 WaterMons: db $00 db $05 db 5,TENTACOOL db 10,TENTACOOL db 15,TENTACOOL db 5,TENTACOOL db 10,TENTACOOL db 15,TENTACOOL db 20,TENTACOOL db 30,TENTACOOL db 35,TENTACOOL db 40,TENTACOOL IslandMons1: db $0F db 30,SEEL db 30,PSYDUCK db 30,STARYU db 30,KRABBY db 28,KRABBY db 21,ZUBAT db 29,GOLBAT db 28,SLOWPOKE db 28,STARYU db 38,SLOWBRO db $00 IslandMonsB1: db $0A db 30,SHELLDER db 30,KRABBY db 32,STARYU db 32,KRABBY db 28,PSYDUCK db 30,SEEL db 30,PSYDUCK db 28,SEEL db 38,DEWGONG db 37,KINGLER db $00 IslandMonsB2: db $0A db 30,SEEL db 30,PSYDUCK db 32,SEEL db 32,PSYDUCK db 28,KRABBY db 30,SHELLDER db 30,KRABBY db 28,STARYU db 30,GOLBAT db 37,GOLDUCK db $00 IslandMonsB3: db $0A db 31,PSYDUCK db 31,SEEL db 33,PSYDUCK db 33,SEEL db 29,KRABBY db 31,STARYU db 31,KRABBY db 29,STARYU db 39,KINGLER db 37,DEWGONG db $00 IslandMonsB4: db $0A db 31,KRABBY db 31,STARYU db 33,KRABBY db 33,STARYU db 29,PSYDUCK db 31,SEEL db 31,PSYDUCK db 29,SEEL db 39,GOLDUCK db 32,GOLBAT db $00 MansionMons1: db $0A db 32,GRIMER db 30,GRIMER db 34,PONYTA db 30,PONYTA db 34,VULPIX db 32,PONYTA db 30,KOFFING db 28,PONYTA db 37,MUK db 39,WEEZING db $00 MansionMons2: db $0A db 32,VULPIX db 34,GRIMER db 34,GRIMER db 30,PONYTA db 30,GRIMER db 32,PONYTA db 30,KOFFING db 28,PONYTA db 39,MUK db 37,WEEZING db $00 MansionMons3: db $0A db 31,GRIMER db 33,VULPIX db 35,GRIMER db 32,PONYTA db 34,MAGMAR db 40,MUK db 34,KOFFING db 38,MUK db 36,PONYTA db 42,WEEZING db $00 MansionMonsB1: db $0A db 33,GRIMER db 31,GRIMER db 35,VULPIX db 32,PONYTA db 31,GRIMER db 40,MUK db 34,PONYTA db 35,KOFFING db 38,MAGMAR db 42,WEEZING db $00 Route21Mons: db $19 db 21,RATTATA db 23,PIDGEY db 30,RATICATE db 23,RATTATA db 21,PIDGEY db 30,PIDGEOTTO db 32,PIDGEOTTO db 28,TANGELA db 30,TANGELA db 32,TANGELA db $05 db 5,TENTACOOL db 10,TENTACOOL db 15,TENTACOOL db 5,TENTACOOL db 10,TENTACOOL db 15,TENTACOOL db 20,TENTACOOL db 30,TENTACOOL db 35,TENTACOOL db 40,TENTACOOL DungeonMons1: db $0A db 46,GOLBAT db 46,HYPNO db 46,MAGNETON db 49,DODRIO db 49,VENOMOTH db 52,SANDSLASH db 49,KADABRA db 52,PARASECT db 53,RAICHU db 53,DITTO db $00 DungeonMons2: db $0F db 51,DODRIO db 51,VENOMOTH db 51,KADABRA db 52,RHYDON db 52,MAROWAK db 52,ELECTRODE db 56,CHANSEY db 54,WIGGLYTUFF db 55,DITTO db 60,DITTO db $00 DungeonMonsB1: db $19 db 55,RHYDON db 55,MAROWAK db 55,ELECTRODE db 64,CHANSEY db 64,PARASECT db 64,RAICHU db 57,SANDSLASH db 65,DITTO db 63,DITTO db 67,DITTO db $00 PowerPlantMons: db $0A db 21,VOLTORB db 21,MAGNEMITE db 20,PIKACHU db 24,PIKACHU db 23,MAGNEMITE db 23,VOLTORB db 32,MAGNETON db 35,MAGNETON db 33,RAICHU db 36,RAICHU db $00 Route23Mons: db $0A db 26,SANDSHREW db 33,DITTO db 26,SPEAROW db 38,FEAROW db 38,DITTO db 38,FEAROW db 41,SANDSLASH db 43,DITTO db 41,FEAROW db 43,FEAROW db $00 PlateauMons2: db $0A db 22,MACHOP db 24,GEODUDE db 26,ZUBAT db 36,ONIX db 39,ONIX db 42,ONIX db 41,MACHOKE db 40,GOLBAT db 40,MAROWAK db 43,GRAVELER db $00 PlateauMons3: db $0F db 24,MACHOP db 26,GEODUDE db 22,ZUBAT db 42,ONIX db 40,VENOMOTH db 45,ONIX db 43,GRAVELER db 41,GOLBAT db 42,MACHOKE db 45,MACHOKE db $00 PlateauMons1: db $0F db 24,MACHOP db 26,GEODUDE db 22,ZUBAT db 36,ONIX db 39,ONIX db 42,ONIX db 41,GRAVELER db 41,GOLBAT db 42,MACHOKE db 43,MAROWAK db $00 CaveMons: db $14 db 18,DIGLETT db 19,DIGLETT db 17,DIGLETT db 20,DIGLETT db 16,DIGLETT db 15,DIGLETT db 21,DIGLETT db 22,DIGLETT db 29,DUGTRIO db 31,DUGTRIO db $00 ENDC IF _JAPAN && _BLUE NoMons: db $00 db $00 Route1Mons: db $19 db 3,PIDGEY db 3,RATTATA db 3,RATTATA db 2,RATTATA db 2,PIDGEY db 3,PIDGEY db 3,PIDGEY db 4,RATTATA db 4,PIDGEY db 5,PIDGEY db $00 Route2Mons: db $19 db 3,RATTATA db 3,PIDGEY db 4,PIDGEY db 4,RATTATA db 5,PIDGEY db 3,CATERPIE db 2,RATTATA db 5,RATTATA db 4,CATERPIE db 5,CATERPIE db $00 Route22Mons: db $19 db 3,RATTATA db 3,NIDORAN_M db 4,RATTATA db 4,NIDORAN_M db 2,RATTATA db 2,NIDORAN_M db 3,SPEAROW db 5,SPEAROW db 3,NIDORAN_F db 4,NIDORAN_F db $00 ForestMons: db $08 db 4,CATERPIE db 5,METAPOD db 3,CATERPIE db 5,CATERPIE db 4,METAPOD db 6,METAPOD db 4,KAKUNA db 3,WEEDLE db 3,PIKACHU db 5,PIKACHU db $00 Route3Mons: db $14 db 6,PIDGEY db 5,SPEAROW db 7,PIDGEY db 6,SPEAROW db 7,SPEAROW db 8,PIDGEY db 8,SPEAROW db 3,JIGGLYPUFF db 5,JIGGLYPUFF db 7,JIGGLYPUFF db $00 MoonMons1: db $0A db 8,ZUBAT db 7,ZUBAT db 9,ZUBAT db 8,GEODUDE db 6,ZUBAT db 10,ZUBAT db 10,GEODUDE db 8,PARAS db 11,ZUBAT db 8,CLEFAIRY db $00 MoonMonsB1: db $0A db 8,ZUBAT db 7,ZUBAT db 7,GEODUDE db 8,GEODUDE db 9,ZUBAT db 10,PARAS db 10,ZUBAT db 11,ZUBAT db 9,CLEFAIRY db 9,GEODUDE db $00 MoonMonsB2: db $0A db 9,ZUBAT db 9,GEODUDE db 10,ZUBAT db 10,GEODUDE db 11,ZUBAT db 10,PARAS db 12,PARAS db 10,CLEFAIRY db 12,ZUBAT db 12,CLEFAIRY db $00 Route4Mons: db $14 db 10,RATTATA db 10,SPEAROW db 8,RATTATA db 6,SANDSHREW db 8,SPEAROW db 10,SANDSHREW db 12,RATTATA db 12,SPEAROW db 8,SANDSHREW db 12,SANDSHREW db $00 Route24Mons: db $19 db 7,CATERPIE db 8,METAPOD db 12,PIDGEY db 12,ODDISH db 13,ODDISH db 10,ABRA db 14,ODDISH db 13,PIDGEY db 8,ABRA db 12,ABRA db $00 Route25Mons: db $0F db 8,CATERPIE db 9,METAPOD db 13,PIDGEY db 12,ODDISH db 13,ODDISH db 12,ABRA db 14,ODDISH db 10,ABRA db 7,KAKUNA db 8,WEEDLE db $00 Route9Mons: db $0F db 16,RATTATA db 16,SPEAROW db 14,RATTATA db 11,SANDSHREW db 13,SPEAROW db 15,SANDSHREW db 17,RATTATA db 17,SPEAROW db 13,SANDSHREW db 17,SANDSHREW db $00 Route5Mons: db $0F db 13,ODDISH db 13,PIDGEY db 15,PIDGEY db 10,MEOWTH db 12,MEOWTH db 15,ODDISH db 16,ODDISH db 16,PIDGEY db 14,MEOWTH db 16,MEOWTH db $00 Route6Mons: db $0F db 13,ODDISH db 13,PIDGEY db 15,PIDGEY db 10,MEOWTH db 12,MEOWTH db 15,ODDISH db 16,ODDISH db 16,PIDGEY db 14,MEOWTH db 16,MEOWTH db $00 Route11Mons: db $0F db 14,SANDSHREW db 15,SPEAROW db 12,SANDSHREW db 9,DROWZEE db 13,SPEAROW db 13,DROWZEE db 15,SANDSHREW db 17,SPEAROW db 11,DROWZEE db 15,DROWZEE db $00 TunnelMonsB1: db $0F db 16,ZUBAT db 17,ZUBAT db 17,GEODUDE db 15,MACHOP db 16,GEODUDE db 18,DITTO db 15,ZUBAT db 17,MACHOP db 13,ONIX db 15,ONIX db $00 TunnelMonsB2: db $0F db 16,ZUBAT db 17,ZUBAT db 17,GEODUDE db 15,MACHOP db 16,GEODUDE db 18,DITTO db 17,MACHOP db 17,ONIX db 13,ONIX db 18,GEODUDE db $00 Route10Mons: db $0F db 16,VOLTORB db 16,SPEAROW db 14,VOLTORB db 11,SANDSHREW db 13,SPEAROW db 15,SANDSHREW db 17,VOLTORB db 17,SPEAROW db 13,SANDSHREW db 17,SANDSHREW db $00 Route12Mons: db $0F db 24,ODDISH db 25,PIDGEY db 23,PIDGEY db 24,VENONAT db 22,ODDISH db 26,VENONAT db 26,ODDISH db 27,PIDGEY db 28,GLOOM db 30,GLOOM db $00 Route8Mons: db $0F db 18,PIDGEY db 18,MEOWTH db 17,SANDSHREW db 16,GROWLITHE db 20,PIDGEY db 20,MEOWTH db 19,SANDSHREW db 17,GROWLITHE db 15,GROWLITHE db 18,GROWLITHE db $00 Route7Mons: db $0F db 19,PIDGEY db 19,ODDISH db 17,MEOWTH db 22,ODDISH db 22,PIDGEY db 18,MEOWTH db 18,GROWLITHE db 20,GROWLITHE db 19,MEOWTH db 20,MEOWTH db $00 TowerMons1: db $00 db $00 TowerMons2: db $00 db $00 TowerMons3: db $0A db 20,GASTLY db 21,GASTLY db 22,GASTLY db 23,GASTLY db 19,GASTLY db 18,GASTLY db 24,GASTLY db 20,CUBONE db 22,CUBONE db 25,HAUNTER db $00 TowerMons4: db $0A db 20,GASTLY db 21,GASTLY db 22,GASTLY db 23,GASTLY db 19,GASTLY db 18,GASTLY db 25,HAUNTER db 20,CUBONE db 22,CUBONE db 24,GASTLY db $00 TowerMons5: db $0A db 20,GASTLY db 21,GASTLY db 22,GASTLY db 23,GASTLY db 19,GASTLY db 18,GASTLY db 25,HAUNTER db 20,CUBONE db 22,CUBONE db 24,GASTLY db $00 TowerMons6: db $0F db 21,GASTLY db 22,GASTLY db 23,GASTLY db 24,GASTLY db 20,GASTLY db 19,GASTLY db 26,HAUNTER db 22,CUBONE db 24,CUBONE db 28,HAUNTER db $00 TowerMons7: db $0F db 21,GASTLY db 22,GASTLY db 23,GASTLY db 24,GASTLY db 20,GASTLY db 28,HAUNTER db 22,CUBONE db 24,CUBONE db 28,HAUNTER db 30,HAUNTER db $00 Route13Mons: db $14 db 24,ODDISH db 25,PIDGEY db 27,PIDGEY db 24,VENONAT db 22,ODDISH db 26,VENONAT db 26,ODDISH db 25,DITTO db 28,GLOOM db 30,GLOOM db $00 Route14Mons: db $0F db 24,ODDISH db 26,PIDGEY db 23,DITTO db 24,VENONAT db 22,ODDISH db 26,VENONAT db 26,ODDISH db 30,GLOOM db 28,PIDGEOTTO db 30,PIDGEOTTO db $00 Route15Mons: db $0F db 24,ODDISH db 26,DITTO db 23,PIDGEY db 26,VENONAT db 22,ODDISH db 28,VENONAT db 26,ODDISH db 30,GLOOM db 28,PIDGEOTTO db 30,PIDGEOTTO db $00 Route16Mons: db $19 db 20,SPEAROW db 22,SPEAROW db 18,RATTATA db 20,DODUO db 20,RATTATA db 18,DODUO db 22,DODUO db 22,RATTATA db 23,RATICATE db 25,RATICATE db $00 Route17Mons: db $19 db 20,SPEAROW db 22,SPEAROW db 25,RATICATE db 24,DODUO db 27,RATICATE db 26,DODUO db 28,DODUO db 29,RATICATE db 25,FEAROW db 27,FEAROW db $00 Route18Mons: db $19 db 20,SPEAROW db 22,SPEAROW db 25,RATICATE db 24,DODUO db 25,FEAROW db 26,DODUO db 28,DODUO db 29,RATICATE db 27,FEAROW db 29,FEAROW db $00 ZoneMonsCenter: db $1E db 22,NIDORAN_M db 25,RHYHORN db 22,VENONAT db 24,EXEGGCUTE db 31,NIDORINO db 25,EXEGGCUTE db 31,NIDORINA db 30,PARASECT db 23,SCYTHER db 23,CHANSEY db $00 ZoneMons1: db $1E db 24,NIDORAN_M db 26,DODUO db 22,PARAS db 25,EXEGGCUTE db 33,NIDORINO db 23,EXEGGCUTE db 24,NIDORAN_F db 25,PARASECT db 25,LICKITUNG db 28,SCYTHER db $00 ZoneMons2: db $1E db 22,NIDORAN_M db 26,RHYHORN db 23,PARAS db 25,EXEGGCUTE db 30,NIDORINO db 27,EXEGGCUTE db 30,NIDORINA db 32,VENOMOTH db 26,CHANSEY db 28,PINSIR db $00 ZoneMons3: db $1E db 25,NIDORAN_M db 26,DODUO db 23,VENONAT db 24,EXEGGCUTE db 33,NIDORINO db 26,EXEGGCUTE db 25,NIDORAN_F db 31,VENOMOTH db 26,PINSIR db 28,LICKITUNG db $00 WaterMons: db $00 db $05 db 5,TENTACOOL db 10,TENTACOOL db 15,TENTACOOL db 5,TENTACOOL db 10,TENTACOOL db 15,TENTACOOL db 20,TENTACOOL db 30,TENTACOOL db 35,TENTACOOL db 40,TENTACOOL WaterMons: db $00 db $05 db 5,TENTACOOL db 10,TENTACOOL db 15,TENTACOOL db 5,TENTACOOL db 10,TENTACOOL db 15,TENTACOOL db 20,TENTACOOL db 30,TENTACOOL db 35,TENTACOOL db 40,TENTACOOL IslandMons1: db $0F db 30,SEEL db 30,HORSEA db 30,STARYU db 30,KRABBY db 28,KRABBY db 21,ZUBAT db 29,GOLBAT db 28,SLOWPOKE db 28,STARYU db 38,SLOWBRO db $00 IslandMonsB1: db $0A db 30,SHELLDER db 30,KRABBY db 32,STARYU db 32,KRABBY db 28,HORSEA db 30,SEEL db 30,HORSEA db 28,SEEL db 38,DEWGONG db 37,KINGLER db $00 IslandMonsB2: db $0A db 30,SEEL db 30,HORSEA db 32,SEEL db 32,HORSEA db 28,KRABBY db 30,SHELLDER db 30,KRABBY db 28,STARYU db 30,GOLBAT db 37,JYNX db $00 IslandMonsB3: db $0A db 31,HORSEA db 31,SEEL db 33,HORSEA db 33,SEEL db 29,KRABBY db 31,STARYU db 31,KRABBY db 29,STARYU db 39,KINGLER db 37,DEWGONG db $00 IslandMonsB4: db $0A db 31,KRABBY db 31,STARYU db 33,KRABBY db 33,STARYU db 29,HORSEA db 31,SEEL db 31,HORSEA db 29,SEEL db 39,JYNX db 32,GOLBAT db $00 MansionMons1: db $0A db 32,GRIMER db 30,GRIMER db 34,PONYTA db 30,PONYTA db 34,GROWLITHE db 32,PONYTA db 30,KOFFING db 28,PONYTA db 37,MUK db 39,WEEZING db $00 MansionMons2: db $0A db 32,GROWLITHE db 34,GRIMER db 34,GRIMER db 30,PONYTA db 30,GRIMER db 32,PONYTA db 30,KOFFING db 28,PONYTA db 39,MUK db 37,WEEZING db $00 MansionMons3: db $0A db 31,GRIMER db 33,GROWLITHE db 35,GRIMER db 32,PONYTA db 34,PONYTA db 40,MUK db 34,KOFFING db 38,MUK db 36,PONYTA db 42,WEEZING db $00 MansionMonsB1: db $0A db 33,GRIMER db 31,GRIMER db 35,GROWLITHE db 32,PONYTA db 31,GRIMER db 40,MUK db 34,PONYTA db 35,KOFFING db 38,MUK db 42,WEEZING db $00 Route21Mons: db $19 db 21,RATTATA db 23,PIDGEY db 30,RATICATE db 23,RATTATA db 21,PIDGEY db 30,PIDGEOTTO db 32,PIDGEOTTO db 28,TANGELA db 30,TANGELA db 32,TANGELA db $05 db 5,TENTACOOL db 10,TENTACOOL db 15,TENTACOOL db 5,TENTACOOL db 10,TENTACOOL db 15,TENTACOOL db 20,TENTACOOL db 30,TENTACOOL db 35,TENTACOOL db 40,TENTACOOL DungeonMons1: db $0A db 46,GOLBAT db 46,HYPNO db 46,MAGNETON db 49,RAPIDASH db 49,VENOMOTH db 52,SANDSLASH db 49,KADABRA db 52,PARASECT db 53,RAICHU db 53,DITTO db $00 DungeonMons2: db $0F db 51,DODRIO db 51,VENOMOTH db 51,KADABRA db 52,RHYDON db 52,RATICATE db 52,ELECTRODE db 56,CHANSEY db 54,WIGGLYTUFF db 55,DITTO db 60,DITTO db $00 DungeonMonsB1: db $19 db 55,RHYDON db 55,MAROWAK db 55,ELECTRODE db 64,CLEFAIRY db 64,PARASECT db 64,RAICHU db 57,SANDSLASH db 65,DITTO db 63,DITTO db 67,DITTO db $00 PowerPlantMons: db $0A db 21,VOLTORB db 21,MAGNEMITE db 20,PIKACHU db 24,PIKACHU db 23,MAGNEMITE db 23,VOLTORB db 32,MAGNETON db 35,MAGNETON db 33,RAICHU db 36,RAICHU db $00 Route23Mons: db $0A db 26,SANDSHREW db 33,DITTO db 26,SPEAROW db 38,FEAROW db 38,DITTO db 38,FEAROW db 41,SANDSLASH db 43,DITTO db 41,FEAROW db 43,FEAROW db $00 PlateauMons2: db $0A db 22,MACHOP db 24,GEODUDE db 26,ZUBAT db 36,ONIX db 39,ONIX db 42,ONIX db 41,MACHOKE db 40,GOLBAT db 40,MAROWAK db 43,GRAVELER db $00 PlateauMons3: db $0F db 24,MACHOP db 26,GEODUDE db 22,ZUBAT db 42,ONIX db 40,VENOMOTH db 45,ONIX db 43,GRAVELER db 41,GOLBAT db 42,MACHOKE db 45,MACHOKE db $00 PlateauMons1: db $0F db 24,MACHOP db 26,GEODUDE db 22,ZUBAT db 36,ONIX db 39,ONIX db 42,ONIX db 41,GRAVELER db 41,GOLBAT db 42,MACHOKE db 43,MAROWAK db $00 CaveMons: db $14 db 18,DIGLETT db 19,DIGLETT db 17,DIGLETT db 20,DIGLETT db 16,DIGLETT db 15,DIGLETT db 21,DIGLETT db 22,DIGLETT db 29,DUGTRIO db 31,DUGTRIO db $00 ENDC IF _YELLOW NoMons: db $00 db $00 Route1Mons: db $19 db 3,PIDGEY db 4,PIDGEY db 2,RATTATA db 3,RATTATA db 2,PIDGEY db 3,PIDGEY db 5,PIDGEY db 4,RATTATA db 6,PIDGEY db 7,PIDGEY db $00 Route2Mons: db $19 db 3,RATTATA db 3,PIDGEY db 4,RATTATA db 4,NIDORAN_M db 4,NIDORAN_F db 5,PIDGEY db 6,NIDORAN_M db 6,NIDORAN_F db 7,PIDGEY db 7,PIDGEY db $00 Route22Mons: db $19 db 2,NIDORAN_M db 2,NIDORAN_F db 3,MANKEY db 3,RATTATA db 4,NIDORAN_M db 4,NIDORAN_F db 5,MANKEY db 2,SPEAROW db 4,SPEAROW db 6,SPEAROW db $00 ForestMons: db $19 db 3,CATERPIE db 4,METAPOD db 4,CATERPIE db 5,CATERPIE db 4,PIDGEY db 6,PIDGEY db 6,CATERPIE db 6,METAPOD db 8,PIDGEY db 9,PIDGEOTTO db $00 Route3Mons: db $14 db 8,SPEAROW db 9,SPEAROW db 9,MANKEY db 10,SPEAROW db 8,SANDSHREW db 10,RATTATA db 10,SANDSHREW db 12,RATTATA db 11,SPEAROW db 12,SPEAROW db $00 MoonMons1: db $0A db 8,ZUBAT db 9,ZUBAT db 10,GEODUDE db 6,ZUBAT db 7,ZUBAT db 10,ZUBAT db 10,GEODUDE db 11,ZUBAT db 12,SANDSHREW db 11,CLEFAIRY db $00 MoonMonsB1: db $0A db 8,ZUBAT db 9,ZUBAT db 10,ZUBAT db 10,GEODUDE db 11,GEODUDE db 11,ZUBAT db 9,PARAS db 11,PARAS db 10,CLEFAIRY db 12,CLEFAIRY db $00 MoonMonsB2: db $0A db 10,ZUBAT db 11,GEODUDE db 13,PARAS db 11,ZUBAT db 11,ZUBAT db 12,ZUBAT db 13,ZUBAT db 9,CLEFAIRY db 11,CLEFAIRY db 13,CLEFAIRY db $00 Route4Mons: db $14 db 8,SPEAROW db 9,SPEAROW db 9,MANKEY db 10,SPEAROW db 8,SANDSHREW db 10,RATTATA db 10,SANDSHREW db 12,RATTATA db 11,SPEAROW db 12,SPEAROW db $00 Route24Mons: db $19 db 12,ODDISH db 12,BELLSPROUT db 13,PIDGEY db 14,ODDISH db 14,BELLSPROUT db 15,PIDGEY db 13,VENONAT db 16,VENONAT db 17,PIDGEY db 17,PIDGEOTTO db $00 Route25Mons: db $0F db 12,ODDISH db 12,BELLSPROUT db 13,PIDGEY db 14,ODDISH db 14,BELLSPROUT db 15,PIDGEY db 13,VENONAT db 16,VENONAT db 17,PIDGEY db 17,PIDGEOTTO db $00 Route9Mons: db $0F db 16,NIDORAN_M db 16,NIDORAN_F db 18,RATTATA db 18,NIDORAN_M db 18,NIDORAN_F db 17,SPEAROW db 18,NIDORINO db 18,NIDORINA db 20,RATICATE db 19,FEAROW db $00 Route5Mons: db $0F db 15,PIDGEY db 14,RATTATA db 7,ABRA db 16,PIDGEY db 16,RATTATA db 17,PIDGEY db 17,PIDGEOTTO db 3,JIGGLYPUFF db 5,JIGGLYPUFF db 7,JIGGLYPUFF db $00 Route6Mons: db $0F db 15,PIDGEY db 14,RATTATA db 7,ABRA db 16,PIDGEY db 16,RATTATA db 17,PIDGEY db 17,PIDGEOTTO db 3,JIGGLYPUFF db 5,JIGGLYPUFF db 7,JIGGLYPUFF db $03 db 15,PSYDUCK db 15,PSYDUCK db 15,PSYDUCK db 15,PSYDUCK db 15,PSYDUCK db 15,PSYDUCK db 15,PSYDUCK db 15,PSYDUCK db 15,GOLDUCK db 20,GOLDUCK Route11Mons: db $0F db 16,PIDGEY db 15,RATTATA db 18,PIDGEY db 15,DROWZEE db 17,RATTATA db 17,DROWZEE db 18,PIDGEOTTO db 20,PIDGEOTTO db 19,DROWZEE db 17,RATICATE db $00 TunnelMonsB1: db $0F db 15,ZUBAT db 16,GEODUDE db 17,ZUBAT db 19,ZUBAT db 18,GEODUDE db 20,GEODUDE db 21,ZUBAT db 17,MACHOP db 19,MACHOP db 21,MACHOP db $00 TunnelMonsB2: db $0F db 20,ZUBAT db 17,GEODUDE db 18,MACHOP db 21,ZUBAT db 22,ZUBAT db 21,GEODUDE db 20,MACHOP db 14,ONIX db 18,ONIX db 22,ONIX db $00 Route10Mons: db $0F db 16,MAGNEMITE db 18,RATTATA db 18,MAGNEMITE db 20,MAGNEMITE db 17,NIDORAN_M db 17,NIDORAN_F db 22,MAGNEMITE db 20,RATICATE db 16,MACHOP db 18,MACHOP db $00 Route12Mons: db $0F db 25,ODDISH db 25,BELLSPROUT db 28,PIDGEY db 28,PIDGEOTTO db 27,ODDISH db 27,BELLSPROUT db 29,GLOOM db 29,WEEPINBELL db 26,FARFETCH_D db 31,FARFETCH_D db $03 db 15,SLOWPOKE db 15,SLOWPOKE db 15,SLOWPOKE db 15,SLOWPOKE db 15,SLOWPOKE db 15,SLOWPOKE db 15,SLOWPOKE db 15,SLOWPOKE db 15,SLOWBRO db 20,SLOWBRO Route8Mons: db $0F db 20,PIDGEY db 22,PIDGEY db 20,RATTATA db 15,ABRA db 19,ABRA db 24,PIDGEOTTO db 19,JIGGLYPUFF db 24,JIGGLYPUFF db 20,KADABRA db 27,KADABRA db $00 Route7Mons: db $0F db 20,PIDGEY db 22,PIDGEY db 20,RATTATA db 15,ABRA db 19,ABRA db 24,PIDGEOTTO db 26,ABRA db 19,JIGGLYPUFF db 24,JIGGLYPUFF db 24,JIGGLYPUFF db $00 TowerMons1: db $00 db $00 TowerMons2: db $00 db $00 TowerMons3: db $0A db 20,GASTLY db 21,GASTLY db 22,GASTLY db 23,GASTLY db 24,GASTLY db 19,GASTLY db 18,GASTLY db 25,GASTLY db 20,HAUNTER db 25,HAUNTER db $00 TowerMons4: db $0A db 20,GASTLY db 21,GASTLY db 22,GASTLY db 23,GASTLY db 24,GASTLY db 19,GASTLY db 18,GASTLY db 25,GASTLY db 20,HAUNTER db 25,HAUNTER db $00 TowerMons5: db $0F db 22,GASTLY db 23,GASTLY db 24,GASTLY db 25,GASTLY db 26,GASTLY db 21,GASTLY db 20,CUBONE db 27,GASTLY db 22,HAUNTER db 27,HAUNTER db $00 TowerMons6: db $0F db 22,GASTLY db 23,GASTLY db 24,GASTLY db 25,GASTLY db 26,GASTLY db 21,GASTLY db 22,CUBONE db 27,GASTLY db 22,HAUNTER db 27,HAUNTER db $00 TowerMons7: db $14 db 24,GASTLY db 25,GASTLY db 26,GASTLY db 27,GASTLY db 28,GASTLY db 23,GASTLY db 24,CUBONE db 29,GASTLY db 24,HAUNTER db 29,HAUNTER db $00 Route13Mons: db $0F db 25,ODDISH db 25,BELLSPROUT db 28,PIDGEOTTO db 28,PIDGEY db 27,ODDISH db 27,BELLSPROUT db 29,GLOOM db 29,WEEPINBELL db 26,FARFETCH_D db 31,FARFETCH_D db $03 db 15,SLOWPOKE db 15,SLOWPOKE db 15,SLOWPOKE db 15,SLOWPOKE db 15,SLOWPOKE db 15,SLOWPOKE db 15,SLOWPOKE db 15,SLOWPOKE db 15,SLOWBRO db 20,SLOWBRO Route14Mons: db $0F db 26,ODDISH db 26,BELLSPROUT db 24,VENONAT db 30,PIDGEOTTO db 28,ODDISH db 28,BELLSPROUT db 30,GLOOM db 30,WEEPINBELL db 27,VENONAT db 30,VENOMOTH db $00 Route15Mons: db $0F db 26,ODDISH db 26,BELLSPROUT db 24,VENONAT db 32,PIDGEOTTO db 28,ODDISH db 28,BELLSPROUT db 30,GLOOM db 30,WEEPINBELL db 27,VENONAT db 30,VENOMOTH db $00 Route16Mons: db $19 db 22,SPEAROW db 22,DODUO db 23,RATTATA db 24,DODUO db 24,RATTATA db 26,DODUO db 23,SPEAROW db 24,FEAROW db 25,RATICATE db 26,RATICATE db $00 Route17Mons: db $19 db 26,DODUO db 27,FEAROW db 27,DODUO db 28,DODUO db 28,PONYTA db 30,PONYTA db 29,FEAROW db 28,DODUO db 32,PONYTA db 29,DODRIO db $00 Route18Mons: db $19 db 22,SPEAROW db 22,DODUO db 23,RATTATA db 24,DODUO db 24,RATTATA db 26,DODUO db 23,SPEAROW db 24,FEAROW db 25,RATICATE db 26,RATICATE db $00 ZoneMonsCenter: db $1E db 14,NIDORAN_M db 36,NIDORAN_F db 24,EXEGGCUTE db 20,RHYHORN db 23,NIDORINO db 27,PARASECT db 27,PARAS db 32,PARASECT db 22,TANGELA db 7,CHANSEY db $00 ZoneMons1: db $1E db 21,NIDORAN_M db 29,NIDORAN_F db 22,EXEGGCUTE db 21,TAUROS db 32,NIDORINA db 19,CUBONE db 26,EXEGGCUTE db 24,MAROWAK db 21,CHANSEY db 15,SCYTHER db $00 ZoneMons2: db $1E db 36,NIDORAN_M db 14,NIDORAN_F db 20,EXEGGCUTE db 25,RHYHORN db 23,NIDORINA db 28,KANGASKHAN db 16,CUBONE db 33,KANGASKHAN db 25,SCYTHER db 15,PINSIR db $00 ZoneMons3: db $1E db 29,NIDORAN_M db 21,NIDORAN_F db 22,EXEGGCUTE db 21,TAUROS db 32,NIDORINO db 19,CUBONE db 26,EXEGGCUTE db 24,MAROWAK db 25,PINSIR db 27,TANGELA db $00 WaterMons: db $00 db $05 db 5,TENTACOOL db 10,TENTACOOL db 15,TENTACOOL db 5,TENTACOOL db 10,TENTACOOL db 15,TENTACOOL db 20,TENTACOOL db 30,TENTACOOL db 35,TENTACOOL db 40,TENTACOOL WaterMons: db $00 db $05 db 5,TENTACOOL db 10,TENTACOOL db 15,TENTACOOL db 5,TENTACOOL db 10,TENTACOOL db 15,TENTACOOL db 20,TENTACOOL db 30,TENTACOOL db 35,TENTACOOL db 40,TENTACOOL IslandMons1: db $0F db 18,ZUBAT db 25,KRABBY db 27,KRABBY db 27,ZUBAT db 36,ZUBAT db 28,SLOWPOKE db 30,SLOWPOKE db 9,ZUBAT db 27,GOLBAT db 36,GOLBAT db $00 IslandMonsB1: db $0A db 27,ZUBAT db 26,KRABBY db 36,ZUBAT db 28,KRABBY db 27,GOLBAT db 29,SLOWPOKE db 18,ZUBAT db 28,KINGLER db 22,SEEL db 26,SEEL db $00 IslandMonsB2: db $0A db 27,ZUBAT db 27,KRABBY db 36,ZUBAT db 27,GOLBAT db 28,KINGLER db 24,SEEL db 29,KRABBY db 36,GOLBAT db 31,SLOWPOKE db 31,SLOWBRO db $00 IslandMonsB3: db $0A db 27,GOLBAT db 36,ZUBAT db 29,KRABBY db 27,ZUBAT db 30,KINGLER db 26,SEEL db 31,KRABBY db 30,SEEL db 28,DEWGONG db 32,DEWGONG db $05 db 25,TENTACOOL db 30,TENTACOOL db 20,TENTACOOL db 30,STARYU db 35,TENTACOOL db 30,STARYU db 40,TENTACOOL db 30,STARYU db 30,STARYU db 30,STARYU IslandMonsB4: db $0A db 36,GOLBAT db 36,ZUBAT db 30,KRABBY db 32,KINGLER db 28,SEEL db 32,SEEL db 27,GOLBAT db 45,ZUBAT db 30,DEWGONG db 34,DEWGONG db $05 db 25,TENTACOOL db 30,TENTACOOL db 20,TENTACOOL db 30,STARYU db 35,TENTACOOL db 30,STARYU db 40,TENTACOOL db 30,STARYU db 30,STARYU db 30,STARYU MansionMons1: db $0A db 34,RATTATA db 34,RATICATE db 23,GRIMER db 26,GROWLITHE db 37,RATTATA db 37,RATICATE db 30,GROWLITHE db 26,GRIMER db 34,GROWLITHE db 38,GROWLITHE db $00 MansionMons2: db $0A db 37,RATTATA db 37,RATICATE db 26,GRIMER db 29,GRIMER db 40,RATTATA db 40,RATICATE db 32,GRIMER db 35,GRIMER db 35,MUK db 38,MUK db $00 MansionMons3: db $0A db 40,RATTATA db 40,RATICATE db 32,GRIMER db 35,GRIMER db 43,RATTATA db 43,RATICATE db 38,GRIMER db 38,GRIMER db 38,MUK db 41,MUK db $00 MansionMonsB1: db $0A db 35,GRIMER db 38,GRIMER db 37,RATICATE db 40,RATICATE db 41,MUK db 43,RATICATE db 24,DITTO db 46,RATICATE db 18,DITTO db 12,DITTO db $00 Route21Mons: db $19 db 15,PIDGEY db 13,RATTATA db 13,PIDGEY db 11,PIDGEY db 17,PIDGEY db 15,RATTATA db 15,RATICATE db 17,PIDGEOTTO db 19,PIDGEOTTO db 15,PIDGEOTTO db $05 db 5,TENTACOOL db 10,TENTACOOL db 15,TENTACOOL db 5,TENTACOOL db 10,TENTACOOL db 15,TENTACOOL db 20,TENTACOOL db 30,TENTACOOL db 35,TENTACOOL db 40,TENTACOOL DungeonMons1: db $0A db 50,GOLBAT db 55,GOLBAT db 45,GRAVELER db 55,GLOOM db 55,WEEPINBELL db 52,SANDSLASH db 54,VENOMOTH db 54,PARASECT db 55,DITTO db 60,DITTO db $00 DungeonMons2: db $0F db 52,GOLBAT db 57,GOLBAT db 50,GRAVELER db 56,SANDSLASH db 50,RHYHORN db 60,DITTO db 58,GLOOM db 58,WEEPINBELL db 60,RHYDON db 58,RHYDON db $00 DungeonMonsB1: db $19 db 54,GOLBAT db 59,GOLBAT db 55,GRAVELER db 52,RHYHORN db 62,RHYDON db 60,DITTO db 56,CHANSEY db 65,DITTO db 55,LICKITUNG db 50,LICKITUNG db $00 PowerPlantMons: db $0A db 30,MAGNEMITE db 35,MAGNEMITE db 33,MAGNETON db 33,VOLTORB db 37,VOLTORB db 33,GRIMER db 37,GRIMER db 38,MAGNETON db 33,MUK db 37,MUK db $00 Route23Mons: db $0A db 41,NIDORINO db 41,NIDORINA db 36,MANKEY db 44,NIDORINO db 44,NIDORINA db 40,FEAROW db 41,MANKEY db 45,FEAROW db 41,PRIMEAPE db 46,PRIMEAPE db $00 PlateauMons2: db $0A db 31,GEODUDE db 36,GEODUDE db 41,GEODUDE db 44,ZUBAT db 39,GOLBAT db 44,GRAVELER db 45,ONIX db 47,ONIX db 39,MACHOKE db 42,MACHOKE db $00 PlateauMons3: db $0F db 36,GEODUDE db 44,GOLBAT db 41,GEODUDE db 49,ONIX db 46,GEODUDE db 41,GRAVELER db 42,MACHOKE db 45,MACHOKE db 47,GRAVELER db 47,GRAVELER db $00 PlateauMons1: db $0F db 26,GEODUDE db 31,GEODUDE db 36,GEODUDE db 39,ZUBAT db 44,ZUBAT db 41,GEODUDE db 43,ONIX db 45,ONIX db 41,GRAVELER db 47,GRAVELER db $00 CaveMons: db $14 db 18,DIGLETT db 19,DIGLETT db 17,DIGLETT db 20,DIGLETT db 16,DIGLETT db 15,DIGLETT db 21,DIGLETT db 22,DIGLETT db 29,DUGTRIO db 31,DUGTRIO db $00 ENDC UseItem_: ; $D5C7 ld a,1 ld [$cd6a],a ld a,[$cf91] ;contains item_ID cp a,HM_01 jp nc,ItemUseTMHM ld hl,ItemUsePtrTable dec a add a ld c,a ld b,0 add hl,bc ld a,[hli] ld h,[hl] ld l,a jp [hl] ItemUsePtrTable: ; $D5E1 dw ItemUseBall ; MASTER_BALL dw ItemUseBall ; ULTRA_BALL dw ItemUseBall ; GREAT_BALL dw ItemUseBall ; POKE_BALL dw ItemUseTownMap ; TOWN_MAP dw ItemUseBicycle ; BICYCLE dw ItemUseSurfboard ; out-of-battle Surf effect dw ItemUseBall ; SAFARI_BALL dw ItemUsePokedex ; POKEDEX dw ItemUseEvoStone ; MOON_STONE dw ItemUseMedicine ; ANTIDOTE dw ItemUseMedicine ; BURN_HEAL dw ItemUseMedicine ; ICE_HEAL dw ItemUseMedicine ; AWAKENING dw ItemUseMedicine ; PARLYZ_HEAL dw ItemUseMedicine ; FULL_RESTORE dw ItemUseMedicine ; MAX_POTION dw ItemUseMedicine ; HYPER_POTION dw ItemUseMedicine ; SUPER_POTION dw ItemUseMedicine ; POTION dw ItemUseBait ; BOULDERBADGE dw ItemUseRock ; CASCADEBADGE dw UnusableItem ; THUNDERBADGE dw UnusableItem ; RAINBOWBADGE dw UnusableItem ; SOULBADGE dw UnusableItem ; MARSHBADGE dw UnusableItem ; VOLCANOBADGE dw UnusableItem ; EARTHBADGE dw ItemUseEscapeRope ; ESCAPE_ROPE dw ItemUseRepel ; REPEL dw UnusableItem ; OLD_AMBER dw ItemUseEvoStone ; FIRE_STONE dw ItemUseEvoStone ; THUNDER_STONE dw ItemUseEvoStone ; WATER_STONE dw ItemUseVitamin ; HP_UP dw ItemUseVitamin ; PROTEIN dw ItemUseVitamin ; IRON dw ItemUseVitamin ; CARBOS dw ItemUseVitamin ; CALCIUM dw ItemUseVitamin ; RARE_CANDY dw UnusableItem ; DOME_FOSSIL dw UnusableItem ; HELIX_FOSSIL dw UnusableItem ; SECRET_KEY dw UnusableItem dw UnusableItem ; BIKE_VOUCHER dw ItemUseXAccuracy ; X_ACCURACY dw ItemUseEvoStone ; LEAF_STONE dw ItemUseCardKey ; CARD_KEY dw UnusableItem ; NUGGET dw UnusableItem ; ??? PP_UP dw ItemUsePokedoll ; POKE_DOLL dw ItemUseMedicine ; FULL_HEAL dw ItemUseMedicine ; REVIVE dw ItemUseMedicine ; MAX_REVIVE dw ItemUseGuardSpec ; GUARD_SPEC_ dw ItemUseSuperRepel ; SUPER_REPL dw ItemUseMaxRepel ; MAX_REPEL dw ItemUseDireHit ; DIRE_HIT dw UnusableItem ; COIN dw ItemUseMedicine ; FRESH_WATER dw ItemUseMedicine ; SODA_POP dw ItemUseMedicine ; LEMONADE dw UnusableItem ; S_S__TICKET dw UnusableItem ; GOLD_TEETH dw ItemUseXStat ; X_ATTACK dw ItemUseXStat ; X_DEFEND dw ItemUseXStat ; X_SPEED dw ItemUseXStat ; X_SPECIAL dw ItemUseCoinCase ; COIN_CASE dw ItemUseOaksParcel ; OAKS_PARCEL dw ItemUseItemfinder ; ITEMFINDER dw UnusableItem ; SILPH_SCOPE dw ItemUsePokeflute ; POKE_FLUTE dw UnusableItem ; LIFT_KEY dw UnusableItem ; EXP__ALL dw OldRodCode ; OLD_ROD dw GoodRodCode ; GOOD_ROD dw SuperRodCode ; SUPER_ROD dw ItemUsePPUp ; PP_UP (real one) dw ItemUsePPRestore ; ETHER dw ItemUsePPRestore ; MAX_ETHER dw ItemUsePPRestore ; ELIXER dw ItemUsePPRestore ; MAX_ELIXER ItemUseBall: ; 03:5687 ld a,[W_ISINBATTLE] and a jp z,ItemUseNotTime ; not in battle dec a jp nz,ThrowBallAtTrainerMon ld a,[W_BATTLETYPE] dec a jr z,.UseBall\@ ld a,[W_NUMINPARTY] ;is Party full? cp a,6 jr nz,.UseBall\@ ld a,[W_NUMINBOX] ;is Box full? cp a,20 jp z,BoxFullCannotThrowBall .UseBall\@ ;$56a7 ;ok, you can use a ball xor a ld [$d11c],a ld a,[W_BATTLETYPE] cp a,2 ;SafariBattle jr nz,.skipSafariZoneCode\@ .safariZone\@ ; remove a Safari Ball from inventory ld hl,W_NUMSAFARIBALLS dec [hl] .skipSafariZoneCode\@ ;$56b6 call GoPAL_SET_CF1C ld a,$43 ld [$d11e],a call $3725 ;restore screenBuffer from Backup ld hl,ItemUseText00 call PrintText ld hl,$583a ld b,$0f call Bankswitch ld b,$10 jp z,$5801 ld a,[W_BATTLETYPE] dec a jr nz,.notOldManBattle\@ .oldManBattle\@ ld hl,W_GRASSRATE ld de,W_PLAYERNAME ld bc,11 call CopyData ; save the player's name in the Wild Monster data (part of the Cinnabar Island Missingno glitch) jp .BallSuccess\@ ;$578b .notOldManBattle\@ ;$56e9 ld a,[W_CURMAP] cp a,POKEMONTOWER_6 jr nz,.loop\@ ld a,[$cfd8] cp a,MAROWAK ld b,$10 jp z,$5801 ; if not fighting ghost Marowak, loop until a random number in the current ; pokeball's allowed range is found .loop\@ ;$56fa call GenRandom ld b,a ld hl,$cf91 ld a,[hl] cp a,MASTER_BALL jp z,.BallSuccess\@ ;$578b cp a,POKE_BALL jr z,.checkForAilments ld a,200 cp b jr c,.loop\@ ;get only numbers <= 200 for Great Ball ld a,[hl] cp a,GREAT_BALL jr z,.checkForAilments ld a,150 ;get only numbers <= 150 for Ultra Ball cp b jr c,.loop\@ .checkForAilments\@ ;$571a ; pokemon can be caught more easily with any (primary) status ailment ; Frozen/Asleep pokemon are relatively even easier to catch ; for Frozen/Asleep pokemon, any random number from 0-24 ensures a catch. ; for the others, a random number from 0-11 ensures a catch. ld a,[W_ENEMYMONSTATUS] ;status ailments and a jr z,.noAilments\@ and a,(FRZ + SLP) ;is frozen and/or asleep? ld c,12 jr z,.notFrozenOrAsleep\@ ld c,25 .notFrozenOrAsleep\@ ;$5728 ld a,b sub c jp c,.BallSuccess\@ ;$578b ld b,a .noAilments\@ ;$572e push bc ;save RANDOM number xor a ld [H_MULTIPLICAND],a ld hl,W_ENEMYMONMAXHP ld a,[hli] ld [H_MULTIPLICAND + 1],a ld a,[hl] ld [H_MULTIPLICAND + 2],a ld a,255 ld [H_MULTIPLIER],a call Multiply ; MaxHP * 255 ld a,[$cf91] cp a,GREAT_BALL ld a,12 ;any other BallFactor jr nz,.next7\@ ld a,8 .next7\@ ;$574d ld [H_DIVISOR],a ld b,4 ; number of bytes in dividend call Divide ld hl,W_ENEMYMONCURHP ld a,[hli] ld b,a ld a,[hl] ; explanation: we have a 16-bit value equal to [b << 8 | a]. ; This number is divided by 4. The result is 8 bit (reg. a). ; Always bigger than zero. srl b rr a srl b rr a ; a = current HP / 4 and a jr nz,.next8\@ inc a .next8\@ ;$5766 ld [H_DIVISOR],a ld b,4 call Divide ; ((MaxHP * 255) / BallFactor) / (CurHP / 4) ld a,[H_QUOTIENT + 2] and a jr z,.next9\@ ld a,255 ld [H_QUOTIENT + 3],a .next9\@ ;$5776 pop bc ld a,[$d007] ;enemy: Catch Rate cp b jr c,.next10\@ ld a,[H_QUOTIENT + 2] and a jr nz,.BallSuccess\@ ; if ((MaxHP * 255) / BallFactor) / (CurHP / 4) > 0x255, automatic success call GenRandom ld b,a ld a,[H_QUOTIENT + 3] cp b jr c,.next10\@ .BallSuccess\@ ;$578b jr .BallSuccess2\@ .next10\@ ;$578d ld a,[H_QUOTIENT + 3] ld [$d11e],a xor a ld [H_MULTIPLICAND],a ld [H_MULTIPLICAND + 1],a ld a,[$d007] ;enemy: Catch Rate ld [H_MULTIPLICAND + 2],a ld a,100 ld [H_MULTIPLIER],a call Multiply ; CatchRate * 100 ld a,[$cf91] ld b,255 cp a,POKE_BALL jr z,.next11\@ ld b,200 cp a,GREAT_BALL jr z,.next11\@ ld b,150 cp a,ULTRA_BALL jr z,.next11\@ .next11\@ ;$57b8 ld a,b ld [H_DIVISOR],a ld b,4 call Divide ld a,[H_QUOTIENT + 2] and a ld b,$63 jr nz,.next12\@ ld a,[$d11e] ld [H_MULTIPLIER],a call Multiply ld a,255 ld [H_DIVISOR],a ld b,4 call Divide ld a,[W_ENEMYMONSTATUS] ;status ailments and a jr z,.next13\@ and a,(FRZ + SLP) ld b,5 jr z,.next14\@ ld b,10 .next14\@ ;$57e6 ld a,[H_QUOTIENT + 3] add b ld [H_QUOTIENT + 3],a .next13\@ ;$57eb ld a,[H_QUOTIENT + 3] cp a,10 ld b,$20 jr c,.next12\@ cp a,30 ld b,$61 jr c,.next12\@ cp a,70 ld b,$62 jr c,.next12\@ ld b,$63 .next12\@ ;$5801 ld a,b ld [$d11e],a .BallSuccess2\@ ;$5805 ld c,20 call DelayFrames ld a,TOSS_ANIM ld [W_ANIMATIONID],a xor a ld [$fff3],a ld [$cc5b],a ld [$d05b],a ld a,[$cf92] push af ld a,[$cf91] push af ld a,$08 ;probably animations call Predef pop af ld [$cf91],a pop af ld [$cf92],a ld a,[$d11e] cp a,$10 ld hl,ItemUseBallText00 jp z,.printText0\@ cp a,$20 ld hl,ItemUseBallText01 jp z,.printText0\@ cp a,$61 ld hl,ItemUseBallText02 jp z,.printText0\@ cp a,$62 ld hl,ItemUseBallText03 jp z,.printText0\@ cp a,$63 ld hl,ItemUseBallText04 jp z,.printText0\@ ld hl,$cfe6 ;current HP ld a,[hli] push af ld a,[hli] push af ;backup currentHP... inc hl ld a,[hl] push af ;...and status ailments push hl ld hl,$d069 bit 3,[hl] jr z,.next15\@ ld a,$4c ld [$cfd8],a jr .next16\@ .next15\@ ;$5871 set 3,[hl] ld hl,$cceb ld a,[$cff1] ld [hli],a ld a,[$cff2] ld [hl],a .next16\@ ;$587e ld a,[$cf91] push af ld a,[$cfd8] ld [$cf91],a ld a,[$cff3] ld [$d127],a ld hl,$6b01 ld b,$0f call Bankswitch pop af ld [$cf91],a pop hl pop af ld [hld],a dec hl pop af ld [hld],a pop af ld [hl],a ld a,[$cfe5] ;enemy ld [$d11c],a ld [$cf91],a ld [$d11e],a ld a,[W_BATTLETYPE] dec a jr z,.printText1\@ ld hl,ItemUseBallText05 call PrintText ld a,$3a ;convert order: Internal->Dex call Predef ld a,[$d11e] dec a ld c,a ld b,2 ld hl,$d2f7 ;Dex_own_flags (pokemon) ld a,$10 call Predef ;check Dex flag (own already or not) ld a,c push af ld a,[$d11e] dec a ld c,a ld b,1 ld a,$10 ;set Dex_own_flag? call Predef pop af and a jr nz,.checkParty\@ ld hl,ItemUseBallText06 call PrintText call CleanLCD_OAM ld a,[$cfe5] ;caught mon_ID ld [$d11e],a ld a,$3d call Predef .checkParty\@ ;$58f4 ld a,[W_NUMINPARTY] cp a,6 ;is party full? jr z,.sendToBox\@ xor a ld [$cc49],a call CleanLCD_OAM call AddPokemonToParty ;add mon to Party jr .End\@ .sendToBox\@ ;$5907 call CleanLCD_OAM call $67a4 ld hl,ItemUseBallText07 ld a,[$d7f1] bit 0,a ;already met Bill? jr nz,.sendToBox2\@ ld hl,ItemUseBallText08 .sendToBox2\@ ;$591a call PrintText jr .End\@ .printText1\@ ;$591f ld hl,ItemUseBallText05 .printText0\@ ;$5922 call PrintText call CleanLCD_OAM .End\@ ;$5928 ld a,[W_BATTLETYPE] and a ret nz ld hl,$d31d inc a ld [$cf96],a jp $2bbb ;remove ITEM (XXX) ItemUseBallText00: ;"It dodged the thrown ball!" ;"This pokemon can't be caught" TX_FAR _ItemUseBallText00 db "@" ItemUseBallText01: ;"You missed the pokemon!" TX_FAR _ItemUseBallText01 db "@" ItemUseBallText02: ;"Darn! The pokemon broke free!" TX_FAR _ItemUseBallText02 db "@" ItemUseBallText03: ;"Aww! It appeared to be caught!" TX_FAR _ItemUseBallText03 db "@" ItemUseBallText04: ;"Shoot! It was so close too!" TX_FAR _ItemUseBallText04 db "@" ItemUseBallText05: ;"All right! {MonName} was caught!" ;play sound TX_FAR _ItemUseBallText05 db $12,$06 db "@" ItemUseBallText07: ;"X was transferred to Bill's PC" TX_FAR _ItemUseBallText07 db "@" ItemUseBallText08: ;"X was transferred to someone's PC" TX_FAR _ItemUseBallText08 db "@" ItemUseBallText06: ;"New DEX data will be added..." ;play sound TX_FAR _ItemUseBallText06 db $13,$06 db "@" ItemUseTownMap: ; 5968 ld a,[W_ISINBATTLE] and a jp nz,ItemUseNotTime ld b,$1c ld hl,$4e3e jp Bankswitch ; display Town Map ItemUseBicycle: ; 5977 ld a,[W_ISINBATTLE] and a jp nz,ItemUseNotTime ld a,[$d700] ld [$d11a],a cp a,2 ; is the player surfing? jp z,ItemUseNotTime dec a ; is player already bicycling? jr nz,.tryToGetOnBike\@ .getOffBike\@ call ItemUseReloadOverworldData xor a ld [$d700],a ; change player state to walking call $2307 ; play walking music ld hl,GotOffBicycleText jr .printText\@ .tryToGetOnBike\@ call IsBikeRidingAllowed jp nc,NoCyclingAllowedHere call ItemUseReloadOverworldData xor a ; no keys pressed ld [$ffb4],a ; current joypad state inc a ld [$d700],a ; change player state to bicycling ld hl,GotOnBicycleText call $2307 ; play bike riding music .printText\@ jp PrintText ; used for Surf out-of-battle effect ItemUseSurfboard: ; 59B4 ld a,[$d700] ld [$d11a],a cp a,2 ; is the player already surfing? jr z,.tryToStopSurfing\@ .tryToSurf\@ call IsNextTileShoreOrWater jp c,SurfingAttemptFailed ld hl,TilePairCollisionsWater call CheckForTilePairCollisions jp c,SurfingAttemptFailed .surf\@ call .makePlayerMoveForward\@ ld hl,$d730 set 7,[hl] ld a,2 ld [$d700],a ; change player state to surfing call $2307 ; play surfing music ld hl,SurfingGotOnText jp PrintText .tryToStopSurfing\@ xor a ld [$ff8c],a ld d,16 ; talking range in pixels (normal range) call IsSpriteInFrontOfPlayer2 res 7,[hl] ld a,[$ff8c] and a ; is there a sprite in the way? jr nz,.cannotStopSurfing\@ ld hl,TilePairCollisionsWater call CheckForTilePairCollisions jr c,.cannotStopSurfing\@ ld hl,$d530 ; pointer to list of passable tiles ld a,[hli] ld h,[hl] ld l,a ; hl now points to passable tiles ld a,[$cfc6] ; tile in front of the player ld b,a .passableTileLoop\@ ld a,[hli] cp b jr z,.stopSurfing\@ cp a,$ff jr nz,.passableTileLoop\@ .cannotStopSurfing\@ ld hl,SurfingNoPlaceToGetOffText jp PrintText .stopSurfing\@ call .makePlayerMoveForward\@ ld hl,$d730 set 7,[hl] xor a ld [$d700],a ; change player state to walking dec a ld [$cd6b],a call $2307 ; play walking music jp LoadWalkingPlayerSpriteGraphics ; uses a simulated button press to make the player move forward .makePlayerMoveForward\@ ld a,[$d52a] ; direction the player is going bit 3,a ld b,%01000000 ; Up key jr nz,.storeSimulatedButtonPress\@ bit 2,a ld b,%10000000 ; Down key jr nz,.storeSimulatedButtonPress\@ bit 1,a ld b,%00100000 ; Left key jr nz,.storeSimulatedButtonPress\@ ld b,%00010000 ; Right key .storeSimulatedButtonPress\@ ld a,b ld [$ccd3],a ; base address of simulated button presses xor a ld [$cd39],a inc a ld [$cd38],a ; index of current simulated button press ret SurfingGotOnText: ; 5A4C TX_FAR _SurfingGotOnText db $50 SurfingNoPlaceToGetOffText: ; 5A51 TX_FAR _SurfingNoPlaceToGetOffText db $50 ItemUsePokedex: ; 5A56 ld a,$29 jp Predef ItemUseEvoStone: ; 5A5B ld a,[W_ISINBATTLE] and a jp nz,ItemUseNotTime ld a,[$cf92] push af ld a,[$cf91] ld [$d156],a push af ld a,$05 ; evolution stone party menu ld [$d07d],a ld a,$ff ld [$cfcb],a call DisplayPartyMenu pop bc jr c,.canceledItemUse\@ ld a,b ld [$cf91],a ld a,$01 ld [$ccd4],a ld a,$8e call $3740 ; play sound call $3748 ; wait for sound to end ld hl,$6d0e ld b,$0e call Bankswitch ; try to evolve pokemon ld a,[$d121] and a jr z,.noEffect\@ pop af ld [$cf92],a ld hl,W_NUMBAGITEMS ld a,1 ; remove 1 stone ld [$cf96],a jp RemoveItemFromInventory .noEffect\@ call ItemUseNoEffect .canceledItemUse\@ xor a ld [$cd6a],a pop af ret ItemUseVitamin: ; 5AB4 ld a,[W_ISINBATTLE] and a jp nz,ItemUseNotTime ItemUseMedicine: ; 5ABB ld a,[W_NUMINPARTY] and a jp z,.emptyParty\@ ld a,[$cf92] push af ld a,[$cf91] push af ld a,$01 ld [$d07d],a ; item use party menu ld a,$ff ld [$cfcb],a ld a,[$d152] and a ; using Softboiled? jr z,.notUsingSoftboiled\@ ; if using softboiled call GoBackToPartyMenu jr .getPartyMonDataAddress\@ .emptyParty\@ ld hl,.emptyPartyText\@ xor a ld [$cd6a],a ; item use failed jp PrintText .emptyPartyText\@ db $0,"You don't have",$4F db "any #MON!",$58 .notUsingSoftboiled\@ call DisplayPartyMenu .getPartyMonDataAddress\@ jp c,.canceledItemUse\@ ld hl,W_PARTYMON1DATA ld bc,44 ld a,[$cf92] call AddNTimes ld a,[$cf92] ld [$cf06],a ld d,a ld a,[$cf91] ld e,a ld [$d0b5],a pop af ld [$cf91],a pop af ld [$cf92],a ld a,[$d152] and a ; using Softboiled? jr z,.checkItemType\@ ; if using softboiled ld a,[$cf92] cp d ; is the pokemon trying to use softboiled on itself? jr z,ItemUseMedicine ; if so, force another choice .checkItemType\@ ld a,[$cf91] cp a,REVIVE jr nc,.healHP\@ ; if it's a Revive or Max Revive cp a,FULL_HEAL jr z,.cureStatusAilment\@ ; if it's a Full Heal cp a,HP_UP jp nc,.useVitamin\@ ; if it's a vitamin or Rare Candy cp a,FULL_RESTORE jr nc,.healHP\@ ; if it's a Full Restore or one of the potions ; fall through if it's one of the status-specifc healing items .cureStatusAilment\@ ld bc,4 add hl,bc ; hl now points to status ld a,[$cf91] ld bc,$f008 cp a,ANTIDOTE jr z,.checkMonStatus\@ ld bc,$f110 cp a,BURN_HEAL jr z,.checkMonStatus\@ ld bc,$f220 cp a,ICE_HEAL jr z,.checkMonStatus\@ ld bc,$f307 cp a,AWAKENING jr z,.checkMonStatus\@ ld bc,$f440 cp a,PARLYZ_HEAL jr z,.checkMonStatus\@ ld bc,$f6ff ; Full Heal .checkMonStatus\@ ld a,[hl] ; pokemon's status and c ; does the pokemon have a status ailment the item can cure? jp z,.healingItemNoEffect\@ ; if the pokemon has a status the item can heal xor a ld [hl],a ; remove the status ailment in the party data ld a,b ld [$d07d],a ; the message to display for the item used ld a,[W_PLAYERMONNUMBER] cp d ; is pokemon the item was used on active in battle? jp nz,.doneHealing\@ ; if it is active in battle xor a ld [W_PLAYERMONSTATUS],a ; remove the status ailment in the in-battle pokemon data push hl ld hl,W_PLAYERBATTSTATUS3 res 0,[hl] ; heal Toxic status pop hl ld bc,30 add hl,bc ; hl now points to party stats ld de,W_PLAYERMONMAXHP ld bc,10 call CopyData ; copy party stats to in-battle stat data ld a,$28 call Predef jp .doneHealing\@ .healHP\@ inc hl ; hl = address of current HP ld a,[hli] ld b,a ld [$ceec],a ld a,[hl] ld c,a ld [$ceeb],a ; current HP stored at $ceeb (2 bytes, big-endian) or b jr nz,.notFainted\@ .fainted\@ ld a,[$cf91] cp a,REVIVE jr z,.updateInBattleFaintedData\@ cp a,MAX_REVIVE jr z,.updateInBattleFaintedData\@ jp .healingItemNoEffect\@ .updateInBattleFaintedData\@ ld a,[W_ISINBATTLE] and a jr z,.compareCurrentHPToMaxHP\@ push hl push de push bc ld a,[$cf06] ld c,a ld hl,$ccf5 ld b,$02 ld a,$10 call Predef ld a,c and a jr z,.next\@ ld a,[$cf06] ld c,a ld hl,$d058 ld b,$01 ld a,$10 call Predef .next\@ pop bc pop de pop hl jr .compareCurrentHPToMaxHP\@ .notFainted\@ ld a,[$cf91] cp a,REVIVE jp z,.healingItemNoEffect\@ cp a,MAX_REVIVE jp z,.healingItemNoEffect\@ .compareCurrentHPToMaxHP\@ push hl push bc ld bc,32 add hl,bc ; hl now points to max HP pop bc ld a,[hli] cp b jr nz,.skipComparingLSB\@ ; no need to compare the LSB's if the MSB's don't match ld a,[hl] cp c .skipComparingLSB\@ pop hl jr nz,.notFullHP\@ .fullHP\@ ; if the pokemon's current HP equals its max HP ld a,[$cf91] cp a,FULL_RESTORE jp nz,.healingItemNoEffect\@ inc hl inc hl ld a,[hld] ; status ailment and a ; does the pokemon have a status ailment? jp z,.healingItemNoEffect\@ ld a,FULL_HEAL ld [$cf91],a dec hl dec hl dec hl jp .cureStatusAilment\@ .notFullHP\@ ; if the pokemon's current HP doesn't equal its max HP xor a ld [$d083],a ld [$c02a],a push hl push de ld bc,32 add hl,bc ; hl now points to max HP ld a,[hli] ld [$ceea],a ld a,[hl] ld [$cee9],a ; max HP stored at $cee9 (2 bytes, big-endian) ld a,[$d152] and a ; using Softboiled? jp z,.notUsingSoftboiled2\@ ; if using softboiled ld hl,$cee9 ld a,[hli] push af ld a,[hli] push af ld a,[hli] push af ld a,[hl] push af ld hl,W_PARTYMON1_MAXHP ld a,[$cf92] ld bc,44 call AddNTimes ld a,[hli] ld [$ceea],a ld [H_DIVIDEND],a ld a,[hl] ld [$cee9],a ld [H_DIVIDEND + 1],a ld a,5 ld [H_DIVISOR],a ld b,2 ; number of bytes call Divide ; get 1/5 of max HP of pokemon that used Softboiled ld bc,-33 add hl,bc ; hl now points to LSB of current HP of pokemon that used Softboiled ; subtract 1/5 of max HP from current HP of pokemon that used Softboiled ld a,[H_QUOTIENT + 3] push af ld b,a ld a,[hl] ld [$ceeb],a sub b ld [hld],a ld [$ceed],a ld a,[H_QUOTIENT + 2] ld b,a ld a,[hl] ld [$ceec],a sbc b ld [hl],a ld [$ceee],a ld hl,$c3b8 ld a,[$cf92] ld bc,2 * 20 call AddNTimes ; calculate coordinates of HP bar of pokemon that used Softboiled ld a,$8d call $3740 ; play sound ld a,[$fff6] set 0,a ld [$fff6],a ld a,$02 ld [$cf94],a ld a,$48 call Predef ; animate HP bar decrease of pokemon that used Softboiled ld a,[$fff6] res 0,a ld [$fff6],a pop af ld b,a ; store heal amount (1/5 of max HP) ld hl,$ceec pop af ld [hld],a pop af ld [hld],a pop af ld [hld],a pop af ld [hl],a jr .addHealAmount\@ .notUsingSoftboiled2\@ ld a,[$cf91] cp a,SODA_POP ld b,60 ; Soda Pop heal amount jr z,.addHealAmount\@ ld b,80 ; Lemonade heal amount jr nc,.addHealAmount\@ cp a,FRESH_WATER ld b,50 ; Fresh Water heal amount jr z,.addHealAmount\@ cp a,SUPER_POTION ld b,200 ; Hyper Potion heal amount jr c,.addHealAmount\@ ld b,50 ; Super Potion heal amount jr z,.addHealAmount\@ ld b,20 ; Potion heal amount .addHealAmount\@ pop de pop hl ld a,[hl] add b ld [hld],a ld [$ceed],a ld a,[hl] ld [$ceee],a jr nc,.noCarry\@ inc [hl] ld a,[hl] ld [$ceee],a .noCarry\@ push de inc hl ld d,h ld e,l ; de now points to current HP ld hl,33 add hl,de ; hl now points to max HP ld a,[$cf91] cp a,REVIVE jr z,.setCurrentHPToHalfMaxHP\@ ld a,[hld] ld b,a ld a,[de] sub b dec de ld b,[hl] ld a,[de] sbc b jr nc,.setCurrentHPToMaxHp\@ ; if current HP exceeds max HP after healing ld a,[$cf91] cp a,HYPER_POTION jr c,.setCurrentHPToMaxHp\@ ; if using a Full Restore or Max Potion cp a,MAX_REVIVE jr z,.setCurrentHPToMaxHp\@ ; if using a Max Revive jr .updateInBattleData\@ .setCurrentHPToHalfMaxHP\@ dec hl dec de ld a,[hli] srl a ld [de],a ld [$ceee],a ld a,[hl] rr a inc de ld [de],a ld [$ceed],a dec de jr .doneHealingPartyHP\@ .setCurrentHPToMaxHp\@ ld a,[hli] ld [de],a ld [$ceee],a inc de ld a,[hl] ld [de],a ld [$ceed],a dec de .doneHealingPartyHP\@ ; done updating the pokemon's current HP in the party data structure ld a,[$cf91] cp a,FULL_RESTORE jr nz,.updateInBattleData\@ ld bc,-31 add hl,bc xor a ld [hl],a ; remove the status ailment in the party data .updateInBattleData\@ ld h,d ld l,e pop de ld a,[W_PLAYERMONNUMBER] cp d ; is pokemon the item was used on active in battle? jr nz,.calculateHPBarCoords\@ ; copy party HP to in-battle HP ld a,[hli] ld [W_PLAYERMONCURHP],a ld a,[hld] ld [W_PLAYERMONCURHP + 1],a ld a,[$cf91] cp a,FULL_RESTORE jr nz,.calculateHPBarCoords\@ xor a ld [W_PLAYERMONSTATUS],a ; remove the status ailment in the in-battle pokemon data .calculateHPBarCoords\@ ld hl,$c390 ld bc,2 * 20 inc d .calculateHPBarCoordsLoop\@ add hl,bc dec d jr nz,.calculateHPBarCoordsLoop\@ jr .doneHealing\@ .healingItemNoEffect\@ call ItemUseNoEffect jp .done\@ .doneHealing\@ ld a,[$d152] and a ; using Softboiled? jr nz,.skipRemovingItem\@ ; no item to remove if using Softboiled push hl call RemoveUsedItem pop hl .skipRemovingItem\@ ld a,[$cf91] cp a,FULL_RESTORE jr c,.playStatusAilmentCuringSound\@ cp a,FULL_HEAL jr z,.playStatusAilmentCuringSound\@ ld a,$8d ; HP healing sound call $3740 ; play sound ld a,[$fff6] set 0,a ld [$fff6],a ld a,$02 ld [$cf94],a ld a,$48 call Predef ; animate the HP bar lengthening ld a,[$fff6] res 0,a ld [$fff6],a ld a,$f7 ; revived message ld [$d07d],a ld a,[$cf91] cp a,REVIVE jr z,.showHealingItemMessage\@ cp a,MAX_REVIVE jr z,.showHealingItemMessage\@ ld a,$f5 ; standard HP healed message ld [$d07d],a jr .showHealingItemMessage\@ .playStatusAilmentCuringSound\@ ld a,$8e ; status ailment curing sound call $3740 ; play sound .showHealingItemMessage\@ xor a ld [H_AUTOBGTRANSFERENABLED],a call ClearScreen dec a ld [$cfcb],a call RedrawPartyMenu ; redraws the party menu and displays the message ld a,1 ld [H_AUTOBGTRANSFERENABLED],a ld c,50 call DelayFrames call $3865 ; wait for a button press jr .done\@ .canceledItemUse\@ xor a ld [$cd6a],a ; item use failed pop af pop af .done\@ ld a,[$d152] and a ; using Softboiled? ret nz ; if so, return call GBPalWhiteOut call z,GoPAL_SET_CF1C ld a,[W_ISINBATTLE] and a ret nz jp $3071 ; restore saved screen .useVitamin\@ push hl ld a,[hl] ld [$d0b5],a ld [$d11e],a ld bc,33 add hl,bc ; hl now points to level ld a,[hl] ; a = level ld [$d127],a ; store level call GetBaseStats push de ld a,d ld hl,W_PARTYMON1NAME call GetPartyMonName pop de pop hl ld a,[$cf91] cp a,RARE_CANDY jp z,.useRareCandy\@ push hl sub a,HP_UP add a ld bc,17 add hl,bc add l ld l,a jr nc,.noCarry2\@ inc h .noCarry2\@ ld a,10 ld b,a ld a,[hl] ; a = MSB of stat experience of the appropriate stat cp a,100 ; is there already at least 25600 (256 * 100) stat experience? jr nc,.vitaminNoEffect\@ ; if so, vitamins can't add any more add b ; add 2560 (256 * 10) stat experience jr nc,.noCarry3\@ ; a carry should be impossible here, so this will always jump ld a,255 .noCarry3\@ ld [hl],a pop hl call .recalculateStats\@ ld hl,VitaminText ld a,[$cf91] sub a,HP_UP - 1 ld c,a .statNameLoop\@ ; loop to get the address of the name of the stat the vitamin increases dec c jr z,.gotStatName\@ .statNameInnerLoop\@ ld a,[hli] ld b,a ld a,$50 cp b jr nz,.statNameInnerLoop\@ jr .statNameLoop\@ .gotStatName\@ ld de,$cf4b ld bc,10 call CopyData ; copy the stat's name to $cf4b ld a,$8e call $23b1 ; play sound ld hl,VitaminStatRoseText call PrintText jp RemoveUsedItem .vitaminNoEffect\@ pop hl ld hl,VitaminNoEffectText call PrintText jp GBPalWhiteOut .recalculateStats\@ ld bc,34 add hl,bc ld d,h ld e,l ; de now points to stats ld bc,-18 add hl,bc ; hl now points to byte 3 of experience ld b,1 jp $3936 ; recalculate stats .useRareCandy\@ push hl ld bc,33 add hl,bc ; hl now points to level ld a,[hl] ; a = level cp a,100 jr z,.vitaminNoEffect\@ ; can't raise level above 100 inc a ld [hl],a ; store incremented level ld [$d127],a push hl push de ld d,a ld hl,$4f6a ld b,$16 call Bankswitch ; calculate experience for next level and store it at $ff96 pop de pop hl ld bc,-19 add hl,bc ; hl now points to experience ; update experience to minimum for new level ld a,[$ff96] ld [hli],a ld a,[$ff97] ld [hli],a ld a,[$ff98] ld [hl],a pop hl ld a,[$cf92] push af ld a,[$cf91] push af push de push hl ld bc,34 add hl,bc ; hl now points to MSB of max HP ld a,[hli] ld b,a ld c,[hl] pop hl push bc push hl call .recalculateStats\@ pop hl ld bc,35 ; hl now points to LSB of max HP add hl,bc pop bc ld a,[hld] sub c ld c,a ld a,[hl] sbc b ld b,a ; bc = the amount of max HP gained from leveling up ; add the amount gained to the current HP ld de,-32 add hl,de ; hl now points to MSB of current HP ld a,[hl] add c ld [hld],a ld a,[hl] adc b ld [hl],a ld a,$f8 ; level up message ld [$d07d],a call RedrawPartyMenu pop de ld a,d ld [$cf92],a ld a,e ld [$d11e],a xor a ld [$cc49],a ; load from player's party call LoadMonData ld d,$01 ld hl,$6ae4 ld b,$04 call Bankswitch ; display new stats text box call $3865 ; wait for button press xor a ld [$cc49],a ld a,$1a call Predef ; learn level up move, if any xor a ld [$ccd4],a ld hl,$6d0e ld b,$0e call Bankswitch ; evolve pokemon, if appropriate ld a,$01 ld [$cfcb],a pop af ld [$cf91],a pop af ld [$cf92],a jp RemoveUsedItem VitaminStatRoseText: ; 5F24 TX_FAR _VitaminStatRoseText db $50 VitaminNoEffectText: ; 5F29 TX_FAR _VitaminNoEffectText db $50 VitaminText: ; 5F2E db "HEALTH@" db "ATTACK@" db "DEFENSE@" db "SPEED@" db "SPECIAL@" ItemUseBait: ; 5F52 ld hl,ThrewBaitText call PrintText ld hl,$d007 ; catch rate srl [hl] ; halve catch rate ld a,BAIT_ANIM ld hl,$cce9 ; bait factor ld de,$cce8 ; escape factor jr BaitRockCommon ItemUseRock: ; 5F67 ld hl,ThrewRockText call PrintText ld hl,$d007 ; catch rate ld a,[hl] add a ; double catch rate jr nc,.noCarry\@ ld a,$ff .noCarry\@ ld [hl],a ld a,ROCK_ANIM ld hl,$cce8 ; escape factor ld de,$cce9 ; bait factor BaitRockCommon: ; 5F7F ld [W_ANIMATIONID],a xor a ld [$cc5b],a ld [H_WHOSETURN],a ld [de],a ; zero escape factor (for bait), zero bait factor (for rock) .randomLoop\@ ; loop until a random number less than 5 is generated call GenRandom and a,7 cp a,5 jr nc,.randomLoop\@ inc a ; increment the random number, giving a range from 1 to 5 inclusive ld b,a ld a,[hl] add b ; increase bait factor (for bait), increase escape factor (for rock) jr nc,.noCarry\@ ld a,$ff .noCarry\@ ld [hl],a ld a,$08 call Predef ; do animation ld c,70 jp DelayFrames ThrewBaitText: ; 5FA5 TX_FAR _ThrewBaitText db $50 ThrewRockText: ; 5FAA TX_FAR _ThrewRockText db $50 ; also used for Dig out-of-battle effect ItemUseEscapeRope: ; 5FAF ld a,[W_ISINBATTLE] and a jr nz,.notUsable\@ ld a,[W_CURMAP] cp a,AGATHAS_ROOM jr z,.notUsable\@ ld a,[W_CURMAPTILESET] ld b,a ld hl,EscapeRopeTilesets .loop\@ ld a,[hli] cp a,$ff jr z,.notUsable\@ cp b jr nz,.loop\@ ld hl,$d732 set 3,[hl] set 6,[hl] ld hl,$d72e res 4,[hl] ld hl,$d790 res 7,[hl] ; unset Safari Zone bit xor a ld [$da47],a ld [$d61f],a inc a ld [$d078],a ld [$cd6a],a ; item used ld a,[$d152] and a ; using Dig? ret nz ; if so, return call ItemUseReloadOverworldData ld c,30 call DelayFrames jp RemoveUsedItem .notUsable\@ jp ItemUseNotTime EscapeRopeTilesets: ; 5FFD db $03,$0f,$11,$16,$10 db $ff ; terminator ItemUseRepel: ; 6003 ld b,100 ItemUseRepelCommon: ; 6005 ld a,[W_ISINBATTLE] and a jp nz,ItemUseNotTime ld a,b ld [$d0db],a jp PrintItemUseTextAndRemoveItem ; handles X Accuracy item ItemUseXAccuracy: ; 6013 ld a,[W_ISINBATTLE] and a jp z,ItemUseNotTime ld hl,W_PLAYERBATTSTATUS2 set 0,[hl] ; X Accuracy bit jp PrintItemUseTextAndRemoveItem ; This function is bugged and never works. It always jumps to ItemUseNotTime. ; The Card Key is handled in a different way. ItemUseCardKey: ; 6022 xor a ld [$d71f],a call $4586 ld a,[$4586] cp a,$18 jr nz,.next0\@ ld hl,CardKeyTable1 jr .next1\@ .next0\@ cp a,$24 jr nz,.next2\@ ld hl,CardKeyTable2 jr .next1\@ .next2\@ cp a,$5e jp nz,ItemUseNotTime ld hl,CardKeyTable3 .next1\@ ld a,[W_CURMAP] ld b,a .loop\@ ld a,[hli] cp a,$ff jp z,ItemUseNotTime cp b jr nz,.nextEntry1\@ ld a,[hli] cp d jr nz,.nextEntry2\@ ld a,[hli] cp e jr nz,.nextEntry3\@ ld a,[hl] ld [$d71f],a jr .done\@ .nextEntry1\@ inc hl .nextEntry2\@ inc hl .nextEntry3\@ inc hl jr .loop\@ .done\@ ld hl,ItemUseText00 call PrintText ld hl,$d728 set 7,[hl] ret ; These tables are probably supposed to be door locations in Silph Co., ; but they are unused. ; The reason there are 3 tables is unknown. ; Format: ; 00: Map ID ; 01: Y ; 02: X ; 03: ID? CardKeyTable1: ; 6072 db SILPH_CO_2F,$04,$04,$00 db SILPH_CO_2F,$04,$05,$01 db SILPH_CO_4F,$0C,$04,$02 db SILPH_CO_4F,$0C,$05,$03 db SILPH_CO_7F,$06,$0A,$04 db SILPH_CO_7F,$06,$0B,$05 db SILPH_CO_9F,$04,$12,$06 db SILPH_CO_9F,$04,$13,$07 db SILPH_CO_10F,$08,$0A,$08 db SILPH_CO_10F,$08,$0B,$09 db $ff CardKeyTable2: ; 609B db SILPH_CO_3F,$08,$09,$0A db SILPH_CO_3F,$09,$09,$0B db SILPH_CO_5F,$04,$07,$0C db SILPH_CO_5F,$05,$07,$0D db SILPH_CO_6F,$0C,$05,$0E db SILPH_CO_6F,$0D,$05,$0F db SILPH_CO_8F,$08,$07,$10 db SILPH_CO_8F,$09,$07,$11 db SILPH_CO_9F,$08,$03,$12 db SILPH_CO_9F,$09,$03,$13 db $ff CardKeyTable3: ; 60C4 db SILPH_CO_11F,$08,$09,$14 db SILPH_CO_11F,$09,$09,$15 db $ff ItemUsePokedoll: ; 60CD ld a,[W_ISINBATTLE] dec a jp nz,ItemUseNotTime ld a,$01 ld [$d078],a jp PrintItemUseTextAndRemoveItem ItemUseGuardSpec: ; 60DC ld a,[W_ISINBATTLE] and a jp z,ItemUseNotTime ld hl,W_PLAYERBATTSTATUS2 set 1,[hl] ; Mist bit jp PrintItemUseTextAndRemoveItem ItemUseSuperRepel: ; 60EB ld b,200 jp ItemUseRepelCommon ItemUseMaxRepel: ; 60F0 ld b,250 jp ItemUseRepelCommon ItemUseDireHit: ; 60F5 ld a,[W_ISINBATTLE] and a jp z,ItemUseNotTime ld hl,W_PLAYERBATTSTATUS2 set 2,[hl] ; Focus Energy bit jp PrintItemUseTextAndRemoveItem ItemUseXStat: ; 6104 ld a,[W_ISINBATTLE] and a jr nz,.inBattle\@ call ItemUseNotTime ld a,2 ld [$cd6a],a ; item not used ret .inBattle\@ ld hl,W_PLAYERMOVENUM ld a,[hli] push af ; save [W_PLAYERMOVENUM] ld a,[hl] push af ; save [W_PLAYERMOVEEFFECT] push hl ld a,[$cf91] sub a,X_ATTACK - ATTACK_UP1_EFFECT ld [hl],a ; store player move effect call PrintItemUseTextAndRemoveItem ld a,XSTATITEM_ANIM ; X stat item animation ID ld [W_PLAYERMOVENUM],a call $3725 ; restore saved screen call Delay3 xor a ld [H_WHOSETURN],a ; set turn to player's turn ld b,$0f ld hl,$7428 call Bankswitch ; do stat increase move pop hl pop af ld [hld],a ; restore [W_PLAYERMOVEEFFECT] pop af ld [hl],a ; restore [W_PLAYERMOVENUM] ret ItemUsePokeflute: ; 6140 ld a,[W_ISINBATTLE] and a jr nz,.inBattle\@ ; if not in battle call ItemUseReloadOverworldData ld a,[W_CURMAP] cp a,ROUTE_12 jr nz,.notRoute12\@ ld a,[$d7d8] bit 7,a ; has the player beaten Route 12 Snorlax yet? jr nz,.noSnorlaxToWakeUp\@ ; if the player hasn't beaten Route 12 Snorlax ld hl,Route12SnorlaxFluteCoords call ArePlayerCoordsInArray jr nc,.noSnorlaxToWakeUp\@ ld hl,PlayedFluteHadEffectText call PrintText ld hl,$d7d8 set 6,[hl] ; trigger Snorlax fight (handled by map script) ret .notRoute12\@ cp a,ROUTE_16 jr nz,.noSnorlaxToWakeUp\@ ld a,[$d7e0] bit 1,a ; has the player beaten Route 16 Snorlax yet? jr nz,.noSnorlaxToWakeUp\@ ; if the player hasn't beaten Route 16 Snorlax ld hl,Route16SnorlaxFluteCoords call ArePlayerCoordsInArray jr nc,.noSnorlaxToWakeUp\@ ld hl,PlayedFluteHadEffectText call PrintText ld hl,$d7e0 set 0,[hl] ; trigger Snorlax fight (handled by map script) ret .noSnorlaxToWakeUp\@ ld hl,PlayedFluteNoEffectText jp PrintText .inBattle\@ xor a ld [$cd3d],a ; initialize variable that indicates if any pokemon were woken up to zero ld b,~SLP & $FF ld hl,W_PARTYMON1_STATUS call WakeUpEntireParty ld a,[W_ISINBATTLE] dec a ; is it a trainer battle? jr z,.skipWakingUpEnemyParty\@ ; if it's a trainer battle ld hl,$d8a8 ; enemy party pokemon 1 status call WakeUpEntireParty .skipWakingUpEnemyParty\@ ld hl,W_PLAYERMONSTATUS ld a,[hl] and b ; remove Sleep status ld [hl],a ld hl,W_ENEMYMONSTATUS ld a,[hl] and b ; remove Sleep status ld [hl],a call $3701 ; restore saved screen ld a,[$cd3d] and a ; were any pokemon asleep before playing the flute? ld hl,PlayedFluteNoEffectText jp z,PrintText ; if no pokemon were asleep ; if some pokemon were asleep ld hl,PlayedFluteHadEffectText call PrintText ld a,[$d083] and a,$80 jr nz,.skipMusic\@ call $3748 ; wait for sound to end ld b,$08 ld hl,$6306 call Bankswitch ; play in-battle pokeflute music .musicWaitLoop\@ ; wait for music to finish playing ld a,[$c02c] and a ; music off? jr nz,.musicWaitLoop\@ .skipMusic\@ ld hl,FluteWokeUpText jp PrintText ; wakes up all party pokemon ; INPUT: ; hl must point to status of first pokemon in party (player's or enemy's) ; b must equal ~SLP ; [$cd3d] should be initialized to 0 ; OUTPUT: ; [$cd3d]: set to 1 if any pokemon were asleep WakeUpEntireParty: ; 61E5 ld de,44 ld c,6 .loop\@ ld a,[hl] push af and a,SLP ; is pokemon asleep? jr z,.notAsleep\@ ld a,1 ld [$cd3d],a ; indicate that a pokemon had to be woken up .notAsleep\@ pop af and b ; remove Sleep status ld [hl],a add hl,de dec c jr nz,.loop\@ ret ; Format: ; 00: Y ; 01: X Route12SnorlaxFluteCoords: ; 61FD db 62,9 ; one space West of Snorlax db 61,10 ; one space North of Snorlax db 63,10 ; one space South of Snorlax db 62,11 ; one space East of Snorlax db $ff ; terminator ; Format: ; 00: Y ; 01: X Route16SnorlaxFluteCoords: ; 6206 db 10,27 ; one space East of Snorlax db 10,25 ; one space West of Snorlax db $ff ; terminator PlayedFluteNoEffectText: ; 620B TX_FAR _PlayedFluteNoEffectText db $50 FluteWokeUpText: ; 6210 TX_FAR _FluteWokeUpText db $50 PlayedFluteHadEffectText: ; 6215 TX_FAR _PlayedFluteHadEffectText db $06 db $08 ld a,[W_ISINBATTLE] and a jr nz,.done\@ ; play out-of-battle pokeflute music ld a,$ff call $23b1 ; turn off music ld a,$b8 ld c,$02 call $23a1 ; play music .musicWaitLoop\@ ; wait for music to finish playing ld a,[$c028] cp a,$b8 jr z,.musicWaitLoop\@ call $2307 ; start playing normal music again .done\@ jp $24d7 ; end text ItemUseCoinCase: ; 623A ld a,[W_ISINBATTLE] and a jp nz,ItemUseNotTime ld hl,CoinCaseNumCoinsText jp PrintText CoinCaseNumCoinsText: ; 6247 TX_FAR _CoinCaseNumCoinsText db $50 OldRodCode: ; 0xe24c call FishingInit jp c, ItemUseNotTime ld bc, (5 << 8) | MAGIKARP ld a, $1 ; set bite jr RodResponse ; 0xe257 $34 GoodRodCode: ; 6259 0xe259 call FishingInit jp c,ItemUseNotTime .RandomLoop call GenRandom srl a jr c, .SetBite and %11 cp 2 jr nc, .RandomLoop ; choose which monster appears ld hl,GoodRodMons add a,a ld c,a ld b,0 add hl,bc ld b,[hl] inc hl ld c,[hl] and a .SetBite ld a,0 rla xor 1 jr RodResponse GoodRodMons: db 10,GOLDEEN db 10,POLIWAG SuperRodCode: ; $6283 0xe283 call FishingInit jp c, ItemUseNotTime call ReadSuperRodData ; 0xe8ea ld a, e RodResponse: ld [$CD3D], a dec a ; is there a bite? jr nz, .next\@ ; if yes, store level and species data ld a, 1 ld [$D05F], a ld a, b ; level ld [W_CURENEMYLVL], a ld a, c ; species ld [W_CUROPPONENT], a .next\@ ld hl, $D700 ld a, [hl] ; store the value in a push af push hl ld [hl], 0 ld b, $1C ld hl, $47B6 call Bankswitch pop hl pop af ld [hl], a ret ; checks if fishing is possible and if so, runs initialization code common to all rods ; unsets carry if fishing is possible, sets carry if not FishingInit: ; 62B4 ld a,[W_ISINBATTLE] and a jr z,.notInBattle\@ scf ; can't fish during battle ret .notInBattle\@ call IsNextTileShoreOrWater ret c ld a,[$d700] cp a,2 ; Surfing? jr z,.surfing\@ call ItemUseReloadOverworldData ld hl,ItemUseText00 call PrintText ld a,$8e call $23b1 ; play sound ld c,80 call DelayFrames and a ret .surfing\@ scf ; can't fish when surfing ret ItemUseOaksParcel: ; 62DE jp ItemUseNotYoursToUse ItemUseItemfinder: ; 62E1 ld a,[W_ISINBATTLE] and a jp nz,ItemUseNotTime call ItemUseReloadOverworldData ld b,$1d ld hl,$481f call Bankswitch ; check for hidden items ld hl,ItemfinderFoundNothingText jr nc,.printText\@ ; if no hidden items ld c,4 .loop\@ ld a,$9e call $3740 ; play sound ld a,$b2 call $3740 ; play sound dec c jr nz,.loop\@ ld hl,ItemfinderFoundItemText .printText\@ jp PrintText ItemfinderFoundItemText: ; 630D TX_FAR _ItemfinderFoundItemText db $50 ItemfinderFoundNothingText: ; 6312 TX_FAR _ItemfinderFoundNothingText db $50 ItemUsePPUp: ; 6317 ld a,[W_ISINBATTLE] and a jp nz,ItemUseNotTime ItemUsePPRestore: ; 631E ld a,[$cf92] push af ld a,[$cf91] ld [$cd3d],a .chooseMon\@ xor a ld [$cfcb],a ld a,$01 ; item use party menu ld [$d07d],a call DisplayPartyMenu jr nc,.chooseMove\@ jp .itemNotUsed\@ .chooseMove\@ ld a,[$cd3d] cp a,ELIXER jp nc,.useElixir\@ ; if Elixir or Max Elixir ld a,$02 ld [$ccdb],a ld hl,RaisePPWhichTechniqueText ld a,[$cd3d] cp a,ETHER ; is it a PP Up? jr c,.printWhichTechniqueMessage\@ ; if so, print the raise PP message ld hl,RestorePPWhichTechniqueText ; otherwise, print the restore PP message .printWhichTechniqueMessage\@ call PrintText xor a ld [$cc2e],a ld hl,$5219 ld b,$0f call Bankswitch ; move selection menu ld a,0 ld [$cc2e],a jr nz,.chooseMon\@ ld hl,W_PARTYMON1_MOVE1 ld bc,44 call GetSelectedMoveOffset push hl ld a,[hl] ld [$d11e],a call GetMoveName call $3826 ; copy name to $cf4b pop hl ld a,[$cd3d] cp a,ETHER jr nc,.useEther\@ ; if Ether or Max Ether .usePPUp\@ ld bc,21 add hl,bc ld a,[hl] ; move PP cp a,3 << 6 ; have 3 PP Ups already been used? jr c,.PPNotMaxedOut\@ ld hl,PPMaxedOutText call PrintText jr .chooseMove\@ .PPNotMaxedOut\@ ld a,[hl] add a,1 << 6 ; increase PP Up count by 1 ld [hl],a ld a,1 ; 1 PP Up used ld [$d11e],a call RestoreBonusPP ; add the bonus PP to current PP ld hl,PPIncreasedText call PrintText .done\@ pop af ld [$cf92],a call GBPalWhiteOut call GoPAL_SET_CF1C jp RemoveUsedItem .afterRestoringPP\@ ; after using a (Max) Ether/Elixir ld a,[$cf92] ld b,a ld a,[W_PLAYERMONNUMBER] cp b ; is the pokemon whose PP was restored active in battle? jr nz,.skipUpdatingInBattleData\@ ld hl,W_PARTYMON1_MOVE1PP ld bc,44 call AddNTimes ld de,W_PLAYERMONPP ld bc,4 call CopyData ; copy party data to in-battle data .skipUpdatingInBattleData\@ ld a,$8e call $23b1 ld hl,PPRestoredText call PrintText jr .done\@ .useEther\@ call .restorePP\@ jr nz,.afterRestoringPP\@ jp .noEffect\@ ; unsets zero flag if PP was restored, sets zero flag if not ; however, this is bugged for Max Ethers and Max Elixirs (see below) .restorePP\@ xor a ld [$cc49],a ; party pokemon call GetMaxPP ld hl,W_PARTYMON1_MOVE1 ld bc,44 call GetSelectedMoveOffset ld bc,21 add hl,bc ; hl now points to move's PP ld a,[$d11e] ld b,a ; b = max PP ld a,[$cd3d] cp a,MAX_ETHER jr z,.fullyRestorePP\@ ld a,[hl] ; move PP and a,%00111111 ; lower 6 bit bits store current PP cp b ; does current PP equal max PP? ret z ; if so, return add a,10 ; increase current PP by 10 ; b holds the max PP amount and b will hold the new PP amount. ; So, if the new amount meets or exceeds the max amount, ; cap the amount to the max amount by leaving b unchanged. ; Otherwise, store the new amount in b. cp b ; does the new amount meet or exceed the maximum? jr nc,.storeNewAmount\@ ld b,a .storeNewAmount\@ ld a,[hl] ; move PP and a,%11000000 ; PP Up counter bits add b ld [hl],a ret .fullyRestorePP\@ ld a,[hl] ; move PP ; Note that this code has a bug. It doesn't mask out the upper two bits, which ; are used to count how many PP Ups have been used on the move. So, Max Ethers ; and Max Elixirs will not be detected as having no effect on a move with full ; PP if the move has had any PP Ups used on it. cp b ; does current PP equal max PP? ret z jr .storeNewAmount\@ .useElixir\@ ; decrement the item ID so that ELIXER becomes ETHER and MAX_ELIXER becomes MAX_ETHER ld hl,$cd3d dec [hl] dec [hl] xor a ld hl,W_CURMENUITEMID ld [hli],a ld [hl],a ; zero the counter for number of moves that had their PP restored ld b,4 ; loop through each move and restore PP .elixirLoop\@ push bc ld hl,W_PARTYMON1_MOVE1 ld bc,44 call GetSelectedMoveOffset ld a,[hl] and a ; does the current slot have a move? jr z,.nextMove\@ call .restorePP\@ jr z,.nextMove\@ ; if some PP was restored ld hl,$cc27 ; counter for number of moves that had their PP restored inc [hl] .nextMove\@ ld hl,W_CURMENUITEMID inc [hl] pop bc dec b jr nz,.elixirLoop\@ ld a,[$cc27] and a ; did any moves have their PP restored? jp nz,.afterRestoringPP\@ .noEffect\@ call ItemUseNoEffect .itemNotUsed\@ call GBPalWhiteOut call GoPAL_SET_CF1C pop af xor a ld [$cd6a],a ; item use failed ret RaisePPWhichTechniqueText: ; 645D TX_FAR _RaisePPWhichTechniqueText db $50 RestorePPWhichTechniqueText: ; 6462 TX_FAR _RestorePPWhichTechniqueText db $50 PPMaxedOutText: ; 6467 TX_FAR _PPMaxedOutText db $50 PPIncreasedText: ; 646C TX_FAR _PPIncreasedText db $50 PPRestoredText: ; 6471 TX_FAR _PPRestoredText db $50 ; for items that can't be used from the Item menu UnusableItem: ; 6476 jp ItemUseNotTime ItemUseTMHM: ; 6479 ld a,[W_ISINBATTLE] and a jp nz,ItemUseNotTime ld a,[$cf91] sub a,TM_01 push af jr nc,.skipAdding\@ add a,55 ; if item is an HM, add 55 .skipAdding\@ inc a ld [$d11e],a ld a,$44 call Predef ; get move ID from TM/HM ID ld a,[$d11e] ld [$d0e0],a call GetMoveName call $3826 ; copy name to $cf4b pop af ld hl,BootedUpTMText jr nc,.printBootedUpMachineText\@ ld hl,BootedUpHMText .printBootedUpMachineText\@ call PrintText ld hl,TeachMachineMoveText call PrintText FuncCoord 14,7 ld hl,Coord ld bc,$080f ld a,$14 ld [$d125],a call DisplayTextBoxID ; yes/no menu ld a,[W_CURMENUITEMID] and a jr z,.useMachine\@ ld a,2 ld [$cd6a],a ; item not used ret .useMachine\@ ld a,[$cf92] push af ld a,[$cf91] push af .chooseMon\@ ld hl,$cf4b ld de,$d036 ld bc,14 call CopyData ld a,$ff ld [$cfcb],a ld a,$03 ; teach TM/HM party menu ld [$d07d],a call DisplayPartyMenu push af ld hl,$d036 ld de,$cf4b ld bc,14 call CopyData pop af jr nc,.checkIfAbleToLearnMove\@ ; if the player canceled teaching the move pop af pop af call GBPalWhiteOutWithDelay3 call CleanLCD_OAM call GoPAL_SET_CF1C jp $3725 ; restore saved screen .checkIfAbleToLearnMove\@ ld a,$43 call Predef ; check if the pokemon can learn the move push bc ld a,[$cf92] ld hl,W_PARTYMON1NAME call GetPartyMonName pop bc ld a,c and a ; can the pokemon learn the move? jr nz,.checkIfAlreadyLearnedMove\@ ; if the pokemon can't learn the move ld a,$a5 call $3740 ; play sound ld hl,MonCannotLearnMachineMoveText call PrintText jr .chooseMon\@ .checkIfAlreadyLearnedMove\@ ld hl,$7e18 ld b,$0b call Bankswitch ; check if the pokemon already knows the move jr c,.chooseMon\@ ld a,$1b call Predef ; teach move pop af ld [$cf91],a pop af ld [$cf92],a ld a,b and a ret z ld a,[$cf91] call IsItemHM ret c jp RemoveUsedItem BootedUpTMText: ; 654F TX_FAR _BootedUpTMText db $50 BootedUpHMText: ; 6554 TX_FAR _BootedUpHMText db $50 TeachMachineMoveText: ; 6559 TX_FAR _TeachMachineMoveText db $50 MonCannotLearnMachineMoveText: ; 655E TX_FAR _MonCannotLearnMachineMoveText db $50 PrintItemUseTextAndRemoveItem: ; 6563 ld hl,ItemUseText00 call PrintText ld a,$8e call $23b1 ; play sound call $3865 ; wait for button press RemoveUsedItem: ; 6571 ld hl,W_NUMBAGITEMS ld a,1 ; one item ld [$cf96],a ; store quantity jp RemoveItemFromInventory ItemUseNoEffect: ; 657C ld hl,ItemUseNoEffectText jr ItemUseFailed ItemUseNotTime: ; 6581 ld hl,ItemUseNotTimeText jr ItemUseFailed ItemUseNotYoursToUse: ; 6586 ld hl,ItemUseNotYoursToUseText jr ItemUseFailed ThrowBallAtTrainerMon: ; 658B call GoPAL_SET_CF1C call $3725 ; restore saved screen call Delay3 ld a,TOSS_ANIM ld [W_ANIMATIONID],a ld a,$08 call Predef ; do animation ld hl,ThrowBallAtTrainerMonText1 call PrintText ld hl,ThrowBallAtTrainerMonText2 call PrintText jr RemoveUsedItem NoCyclingAllowedHere: ; 65AC ld hl,NoCyclingAllowedHereText jr ItemUseFailed BoxFullCannotThrowBall: ; 65B1 ld hl,BoxFullCannotThrowBallText jr ItemUseFailed SurfingAttemptFailed: ; 65B6 ld hl,NoSurfingHereText ItemUseFailed: ; 65B9 xor a ld [$cd6a],a ; item use failed jp PrintText ItemUseNotTimeText: ; 65C0 TX_FAR _ItemUseNotTimeText db $50 ItemUseNotYoursToUseText: ; 65C5 TX_FAR _ItemUseNotYoursToUseText db $50 ItemUseNoEffectText: ; 65CA TX_FAR _ItemUseNoEffectText db $50 ThrowBallAtTrainerMonText1: ; 65CF TX_FAR _ThrowBallAtTrainerMonText1 db $50 ThrowBallAtTrainerMonText2: ; 65D4 TX_FAR _ThrowBallAtTrainerMonText2 db $50 NoCyclingAllowedHereText: ; 65D9 TX_FAR _NoCyclingAllowedHereText db $50 NoSurfingHereText: ; 65DE TX_FAR _NoSurfingHereText db $50 BoxFullCannotThrowBallText: ; 65E3 TX_FAR _BoxFullCannotThrowBallText db $50 ItemUseText00: ; 65E8 TX_FAR _ItemUseText001 db $05 TX_FAR _ItemUseText002 db $50 GotOnBicycleText: ; 65F2 TX_FAR _GotOnBicycleText1 db $05 TX_FAR _GotOnBicycleText2 db $50 GotOffBicycleText: ; 65FC TX_FAR _GotOffBicycleText1 db $05 TX_FAR _GotOffBicycleText2 db $50 ; restores bonus PP (from PP Ups) when healing at a pokemon center ; also, when a PP Up is used, it increases the current PP by one PP Up bonus ; INPUT: ; [$cf92] = index of pokemon in party ; [$d11e] = mode ; 0: Pokemon Center healing ; 1: using a PP Up ; [CURMENUITEMID] = index of move (when using a PP Up) RestoreBonusPP: ; 6606 ld hl,W_PARTYMON1_MOVE1 ld bc,44 ld a,[$cf92] call AddNTimes push hl ld de,$cd78 - 1 ld a,$5e call Predef ; loads the normal max PP of each of the pokemon's moves to $cd78 pop hl ld c,21 ld b,0 add hl,bc ; hl now points to move 1 PP ld de,$cd78 ld b,0 ; initialize move counter to zero ; loop through the pokemon's moves .loop\@ inc b ld a,b cp a,5 ; reached the end of the pokemon's moves? ret z ; if so, return ld a,[$d11e] dec a ; using a PP Up? jr nz,.skipMenuItemIDCheck\@ ; if using a PP Up, check if this is the move it's being used on ld a,[W_CURMENUITEMID] inc a cp b jr nz,.nextMove\@ .skipMenuItemIDCheck\@ ld a,[hl] and a,%11000000 ; have any PP Ups been used? call nz,AddBonusPP ; if so, add bonus PP .nextMove\@ inc hl inc de jr .loop\@ ; adds bonus PP from PP Ups to current PP ; 1/5 of normal max PP (capped at 7) is added for each PP Up ; INPUT: ; [de] = normal max PP ; [hl] = move PP ; [$d11e] = max number of times to add bonus ; set to 1 when using a PP Up, set to 255 otherwise AddBonusPP: ; 6642 push bc ld a,[de] ; normal max PP of move ld [H_DIVIDEND + 3],a xor a ld [H_DIVIDEND],a ld [H_DIVIDEND + 1],a ld [H_DIVIDEND + 2],a ld a,5 ld [H_DIVISOR],a ld b,4 call Divide ld a,[hl] ; move PP ld b,a swap a and a,%00001111 srl a srl a ld c,a ; c = number of PP Ups used .loop\@ ld a,[H_QUOTIENT + 3] cp a,8 ; is the amount greater than or equal to 8? jr c,.addAmount\@ ld a,7 ; cap the amount at 7 .addAmount\@ add b ld b,a ld a,[$d11e] dec a jr z,.done\@ dec c jr nz,.loop\@ .done\@ ld [hl],b pop bc ret ; gets max PP of a pokemon's move (including PP from PP Ups) ; INPUT: ; [$cf92] = index of pokemon within party/box ; [$cc49] = pokemon source ; 00: player's party ; 01: enemy's party ; 02: current box ; 03: daycare ; 04: player's in-battle pokemon ; [W_CURMENUITEMID] = move index ; OUTPUT: ; [$d11e] = max PP GetMaxPP: ; 6677 ld a,[$cc49] and a ld hl,W_PARTYMON1_MOVE1 ld bc,44 jr z,.sourceWithMultipleMon\@ ld hl,$d8ac ; enemy party dec a jr z,.sourceWithMultipleMon\@ ld hl,$da9e ; current box ld bc,33 dec a jr z,.sourceWithMultipleMon\@ ld hl,$da67 ; daycare dec a jr z,.sourceWithOneMon\@ ld hl,$d01c ; player's in-battle pokemon .sourceWithOneMon\@ call GetSelectedMoveOffset2 jr .next\@ .sourceWithMultipleMon\@ call GetSelectedMoveOffset .next\@ ld a,[hl] dec a push hl ld hl,Moves ld bc,6 call AddNTimes ld de,$cd6d ld a,BANK(Moves) call FarCopyData ld de,$cd72 ld a,[de] ld b,a ; b = normal max PP pop hl push bc ld bc,21 ; PP offset if not player's in-battle pokemon data ld a,[$cc49] cp a,4 ; player's in-battle pokemon? jr nz,.addPPOffset\@ ld bc,17 ; PP offset if player's in-battle pokemon data .addPPOffset\@ add hl,bc ld a,[hl] ; a = current PP and a,%11000000 ; get PP Up count pop bc or b ; place normal max PP in 6 lower bits of a ld h,d ld l,e inc hl ; hl = $cd73 ld [hl],a xor a ld [$d11e],a ; no limit on PP Up amount call AddBonusPP ; add bonus PP from PP Ups ld a,[hl] and a,%00111111 ; mask out the PP Up count ld [$d11e],a ; store max PP ret GetSelectedMoveOffset: ; 66E3 ld a,[$cf92] call AddNTimes GetSelectedMoveOffset2: ; 66E9 ld a,[W_CURMENUITEMID] ld c,a ld b,0 add hl,bc ret ; confirms the item toss and then tosses the item ; INPUT: ; hl = address of inventory (either W_NUMBAGITEMS or W_NUMBOXITEMS) ; [$cf91] = item ID ; [$cf92] = index of item within inventory ; [$cf96] = quantity to toss ; OUTPUT: ; clears carry flag if the item is tossed, sets carry flag if not TossItem_: ; 66F1 push hl ld a,[$cf91] call IsItemHM pop hl jr c,.tooImportantToToss\@ push hl call IsKeyItem_ ld a,[$d124] pop hl and a jr nz,.tooImportantToToss\@ push hl ld a,[$cf91] ld [$d11e],a call GetItemName call $3826 ; copy name to $cf4b ld hl,IsItOKToTossItemText call PrintText FuncCoord 14,7 ld hl,Coord ld bc,$080f ld a,$14 ld [$d125],a call DisplayTextBoxID ; yes/no menu ld a,[$d12e] cp a,2 pop hl scf ret z ; if the player chose Yes push hl ld a,[$cf92] call RemoveItemFromInventory ld a,[$cf91] ld [$d11e],a call GetItemName call $3826 ; copy name to $cf4b ld hl,ThrewAwayItemText call PrintText pop hl and a ret .tooImportantToToss\@ push hl ld hl,TooImportantToTossText call PrintText pop hl scf ret ThrewAwayItemText: ; 0xe755 TX_FAR _ThrewAwayItemText db $50 IsItOKToTossItemText: ; 0xe75a TX_FAR _IsItOKToTossItemText db $50 TooImportantToTossText: ; 0xe75f TX_FAR _TooImportantToTossText db $50 ; checks if an item is a key item ; INPUT: ; [$cf91] = item ID ; OUTPUT: ; [$d124] = result ; 00: item is not key item ; 01: item is key item IsKeyItem_: ; 6764 ld a,$01 ld [$d124],a ld a,[$cf91] cp a,HM_01 ; is the item an HM or TM? jr nc,.checkIfItemIsHM\@ ; if the item is not an HM or TM push af ld hl,KeyItemBitfield ld de,$cee9 ld bc,15 ; only 11 bytes are actually used call CopyData pop af dec a ld c,a ld hl,$cee9 ld b,$02 ; test bit ld a,$10 call Predef ; bitfield operation function ld a,c and a ret nz .checkIfItemIsHM\@ ld a,[$cf91] call IsItemHM ret c xor a ld [$d124],a ret KeyItemBitfield: ; 6799 db %11110000 db %00000001 db %11110000 db %01001111 db %00000000 db %10011111 db %00000000 db %11000000 db %11110000 db %00111011 db %00000000 INCBIN "baserom.gbc",$e7a4,$68b8 - $67a4 ; checks if the tile in front of the player is a shore or water tile ; used for surfing and fishing ; unsets carry if it is, sets carry if not IsNextTileShoreOrWater: ; 68B8 ld a,[W_CURMAPTILESET] ld hl,WaterTilesets ld de,1 call IsInArray jr nc,.notShoreOrWater\@ ld a,[W_CURMAPTILESET] cp a,$0e ; Vermilion Dock tileset ld a,[$cfc6] ; tile in front of player jr z,.skipShoreTiles\@ ; if it's the Vermilion Dock tileset cp a,$48 ; eastern shore tile in Safari Zone jr z,.shoreOrWater\@ cp a,$32 ; usual eastern shore tile jr z,.shoreOrWater\@ .skipShoreTiles\@ cp a,$14 ; water tile jr z,.shoreOrWater\@ .notShoreOrWater\@ scf ret .shoreOrWater\@ and a ret ; tilesets with water WaterTilesets: ; 68E0 db $00,$03,$05,$07,$0d,$0e,$11,$16,$17 db $ff ; terminator ; 68EA 0xe8ea ReadSuperRodData: ; return e = 2 if no fish on this map ; return e = 1 if a bite, bc = level,species ; return e = 0 if no bite ld a, [W_CURMAP] ld de, 3 ; each fishing group is three bytes wide ld hl, SuperRodData call IsInArray jr c, .ReadFishingGroup ld e, $2 ; $2 if no fishing groups found ret .ReadFishingGroup ; 0xe8f6 ; hl points to the fishing group entry in the index inc hl ; skip map id ; read fishing group address ld a, [hli] ld h, [hl] ld l, a ld b, [hl] ; how many mons in group inc hl ; point to data ld e, $0 ; no bite yet .RandomLoop ; 0xe90c call GenRandom srl a ret c ; 50% chance of no battle and %11 ; 2-bit random number cp b jr nc, .RandomLoop ; if a is greater than the number of mons, regenerate ; get the mon add a ld c, a ld b, $0 add hl, bc ld b, [hl] ; level inc hl ld c, [hl] ; species ld e, $1 ; $1 if there's a bite ret ; 0xe919 ; super rod data ; format: map, pointer to fishing group SuperRodData: ; 6919 dbw PALLET_TOWN, FishingGroup1 dbw VIRIDIAN_CITY, FishingGroup1 dbw CERULEAN_CITY, FishingGroup3 dbw VERMILION_CITY, FishingGroup4 dbw CELADON_CITY, FishingGroup5 dbw FUCHSIA_CITY, FishingGroup10 dbw CINNABAR_ISLAND, FishingGroup8 dbw ROUTE_4, FishingGroup3 dbw ROUTE_6, FishingGroup4 dbw ROUTE_10, FishingGroup5 dbw ROUTE_11, FishingGroup4 dbw ROUTE_12, FishingGroup7 dbw ROUTE_13, FishingGroup7 dbw ROUTE_17, FishingGroup7 dbw ROUTE_18, FishingGroup7 dbw ROUTE_19, FishingGroup8 dbw ROUTE_20, FishingGroup8 dbw ROUTE_21, FishingGroup8 dbw ROUTE_22, FishingGroup2 dbw ROUTE_23, FishingGroup9 dbw ROUTE_24, FishingGroup3 dbw ROUTE_25, FishingGroup3 dbw CERULEAN_GYM, FishingGroup3 dbw VERMILION_DOCK, FishingGroup4 ;XXX syntax errors on the rest? dbw $A1, FishingGroup8 ; SEAFOAM_ISLANDS_4 dbw $A2, FishingGroup8 ; SEAFOAM_ISLANDS_5 dbw SAFARI_ZONE_EAST, FishingGroup6 dbw $DA, FishingGroup6 ; SAFARI_ZONE_NORTH dbw SAFARI_ZONE_WEST, FishingGroup6 dbw $DC, FishingGroup6 ; SAFARI_ZONE_CENTER dbw $E2, FishingGroup9 ; UNKNOWN_DUNGEON_2 dbw $E3, FishingGroup9 ; UNKNOWN_DUNGEON_3 dbw $E4, FishingGroup9 ; UNKNOWN_DUNGEON_1 db $FF ; fishing groups ; number of monsters, followed by level/monster pairs FishingGroup1: db 2 db 15,TENTACOOL db 15,POLIWAG FishingGroup2: db 2 db 15,GOLDEEN db 15,POLIWAG FishingGroup3: db 3 db 15,PSYDUCK db 15,GOLDEEN db 15,KRABBY FishingGroup4: db 2 db 15,KRABBY db 15,SHELLDER FishingGroup5: db 2 db 23,POLIWHIRL db 15,SLOWPOKE FishingGroup6: db 4 db 15,DRATINI db 15,KRABBY db 15,PSYDUCK db 15,SLOWPOKE FishingGroup7: db 4 db 5,TENTACOOL db 15,KRABBY db 15,GOLDEEN db 15,MAGIKARP FishingGroup8: db 4 db 15,STARYU db 15,HORSEA db 15,SHELLDER db 15,GOLDEEN FishingGroup9: db 4 db 23,SLOWBRO db 23,SEAKING db 23,KINGLER db 23,SEADRA FishingGroup10: db 4 db 23,SEAKING db 15,KRABBY db 15,GOLDEEN db 15,MAGIKARP ; reloads map view and processes sprite data ; for items that cause the overworld to be displayed ItemUseReloadOverworldData: ; 69C5 call LoadCurrentMapView jp $2429 INCBIN "baserom.gbc",$E9CB,$ef7d - $E9CB _UnnamedText_ef7d: ; 0xef7d db $17, $f8, $42, $2a db $50 ; 0xef7d + 5 bytes INCBIN "baserom.gbc",$ef82,$f6a5 - $ef82 HealParty: ld hl, W_PARTYMON1 ld de, W_PARTYMON1_HP .HealPokemon\@: ; 0xf704 ld a, [hli] cp $ff jr z, .DoneHealing\@ ; End if there's no Pokémon push hl push de ld hl, $0003 ; Status offset add hl, de xor a ld [hl], a ; Clean status conditions push de ld b, $4 ; A Pokémon has 4 moves .RestorePP\@: ld hl, $0007 ; Move offset add hl, de ld a, [hl] and a jr z, .HealNext\@ ; Skip if there's no move here dec a ld hl, $001c ; PP offset add hl, de push hl push de push bc ld hl, Moves ld bc, $0006 call AddNTimes ld de, $cd6d ld a, BANK(Moves) call FarCopyData ; copy move header to memory ld a, [$cd72] ; get default PP pop bc pop de pop hl inc de push bc ld b, a ld a, [hl] and $c0 add b ld [hl], a pop bc .HealNext\@: dec b jr nz, .RestorePP\@ ; Continue if there's still moves pop de ld hl, $0021 ; Max HP offset add hl, de ld a, [hli] ld [de], a inc de ld a, [hl] ld [de], a ; Restore full HP pop de pop hl push hl ld bc, $002c ld h, d ld l, e add hl, bc ld d, h ld e, l pop hl jr .HealPokemon\@ ; Next Pokémon .DoneHealing\@ xor a ld [$cf92], a ld [$d11e], a ld a, [W_NUMINPARTY] ld b, a .restoreBonusPPLoop\@ ; loop to restore bonus PP from PP Ups push bc call RestoreBonusPP pop bc ld hl, $cf92 inc [hl] dec b jr nz,.restoreBonusPPLoop\@ ret INCBIN "baserom.gbc",$f71e,$fbd9 - $f71e UnnamedText_fbd9: ; 0xfbd9 TX_FAR _UnnamedText_fbd9 db $50 ; 0xfbd9 + 5 bytes UnnamedText_fbde: ; 0xfbde TX_FAR _UnnamedText_fbde db $50 ; 0xfbde + 5 bytes UnnamedText_fbe3: ; 0xfbe3 TX_FAR _UnnamedText_fbe3 db $50 ; 0xfbe3 + 5 bytes INCBIN "baserom.gbc",$fbe8,$fc03 - $fbe8 UnnamedText_fc03: ; 0xfc03 TX_FAR _UnnamedText_fc03 db $50 ; 0xfc03 + 5 bytes UnnamedText_fc08: ; 0xfc08 TX_FAR _UnnamedText_fc08 db $50 ; 0xfc08 + 5 bytes UnnamedText_fc0d: ; 0xfc0d TX_FAR _UnnamedText_fc0d db $50 ; 0xfc0d + 5 bytes INCBIN "baserom.gbc",$fc12,$fc45 - $fc12 UnnamedText_fc45: ; 0xfc45 TX_FAR _UnnamedText_fc45 db $50 ; 0xfc45 + 5 bytes SECTION "bank4",DATA,BANK[$4] OakAideSprite: ; 0x10000 INCBIN "gfx/sprites/oak_aide.2bpp" ; was $10000 RockerSprite: ; 0x10180 INCBIN "gfx/sprites/rocker.2bpp" ; was $10180 SwimmerSprite: ; 0x10300 INCBIN "gfx/sprites/swimmer.2bpp" ; was $10300 WhitePlayerSprite: ; 0x10480 INCBIN "gfx/sprites/white_player.2bpp" ; was $10480 GymHelperSprite: ; 0x10540 INCBIN "gfx/sprites/gym_helper.2bpp" ; was $10540 OldPersonSprite: ; 0x10600 INCBIN "gfx/sprites/old_person.2bpp" ; was $10600 MartGuySprite: ; 0x106c0 INCBIN "gfx/sprites/mart_guy.2bpp" ; was $106c0 FisherSprite: ; 0x10780 INCBIN "gfx/sprites/fisher.2bpp" ; was $10780 OldMediumWomanSprite: ; 0x10840 INCBIN "gfx/sprites/old_medium_woman.2bpp" ; was $10840 NurseSprite: ; 0x10900 INCBIN "gfx/sprites/nurse.2bpp" ; was $10900 CableClubWomanSprite: ; 0x109c0 INCBIN "gfx/sprites/cable_club_woman.2bpp" ; was $109c0 MrMasterballSprite: ; 0x10a80 INCBIN "gfx/sprites/mr_masterball.2bpp" ; was $10a80 LaprasGiverSprite: ; 0x10b40 INCBIN "gfx/sprites/lapras_giver.2bpp" ; was $10b40 WardenSprite: ; 0x10c00 INCBIN "gfx/sprites/warden.2bpp" ; was $10c00 SsCaptainSprite: ; 0x10cc0 INCBIN "gfx/sprites/ss_captain.2bpp" ; was $10cc0 Fisher2Sprite: ; 0x10d80 INCBIN "gfx/sprites/fisher2.2bpp" ; was $10d80 BlackbeltSprite: ; 0x10f00 INCBIN "gfx/sprites/blackbelt.2bpp" ; was $10f00 GuardSprite: ; 0x11080 INCBIN "gfx/sprites/guard.2bpp" ; was $11080 BallSprite: ; 0x11140 INCBIN "gfx/sprites/ball.2bpp" ; was $11140 OmanyteSprite: ; 0x11180 INCBIN "gfx/sprites/omanyte.2bpp" ; was $11180 BoulderSprite: ; 0x111c0 INCBIN "gfx/sprites/boulder.2bpp" ; was $111c0 PaperSheetSprite: ; 0x11200 INCBIN "gfx/sprites/paper_sheet.2bpp" ; was $11200 BookMapDexSprite: ; 0x11240 INCBIN "gfx/sprites/book_map_dex.2bpp" ; was $11240 ClipboardSprite: ; 0x11280 INCBIN "gfx/sprites/clipboard.2bpp" ; was $11280 SnorlaxSprite: ; 0x112c0 INCBIN "gfx/sprites/snorlax.2bpp" ; was $112c0 OldAmberSprite: ; 0x11300 INCBIN "gfx/sprites/old_amber.2bpp" ; was $11300 LyingOldManSprite: ; 0x11340 INCBIN "gfx/sprites/lying_old_man.2bpp" ; was $11340 INCBIN "baserom.gbc",$11380,$12953 - $11380 ; Predef 0x37 StatusScreenInit: ; 0x12953 call LoadMonData ld a, [$cc49] cp $2 jr c, .asm_12971 ; 0x1295b $14 ld a, [$cf9b] ld [$cfb9], a ld [$d127], a ld hl, $cfa8 ld de, $cfba ld b, $1 call $3936 .asm_12971 ld hl, $d72c set 1, [hl] ld a, $33 ld [$ff00+$24], a ; Reduce the volume call GBPalWhiteOutWithDelay3 call ClearScreen call $2429 ; move sprites (?) call LoadHpBarAndStatusTilePatterns ld de, $6080 ; source ld hl, $96d0 ; dest ld bc, $0403 ; bank bytes/8 call CopyVideoDataDouble ld de, $6098 ld hl, $9780 ld bc, $0401 call CopyVideoDataDouble ld de, $60b0 ld hl, $9760 ld bc, $0402 call CopyVideoDataDouble ld de, $6adc ld hl, $9720 ld bc, $0401 call CopyVideoDataDouble ld a, [$ff00+$d7] push af xor a ld [$ff00+$d7], a ld hl, $c3c7 ld bc, $060a call $6ac7 ld de, $fffa add hl, de ld [hl], $f2 dec hl ld [hl], $74 ld hl, $c467 ld bc, $0806 call $6ac7 FuncCoord 10,9 ld hl, Coord ld de, Type1Text call PlaceString ; "TYPE1/" ld hl, $c3e7 ld a, $5f call Predef ld hl, $cf25 call $3df9 ld b, $3 call $3def ; SGB palette ld hl, $c428 ld de, $cf9c call $14e1 jr nz, .PassOK\@ ; 0x129fc $9 FuncCoord 16,6 ld hl, Coord ld de, OKText call PlaceString ; "OK" .PassOK\@ FuncCoord 9,6 ld hl, Coord ld de, StatusText call PlaceString ; "STATUS/" ld hl, $c3d6 call $150b ld a, [$d0b8] ld [$d11e], a ld [$d0b5], a ld a, $3a call Predef ld hl, $c42f ld de, $d11e ld bc, $8103 call PrintNumber ld hl, $c473 ld a, $4b call Predef ld hl, $6a9d call $6a7e ld d, h ld e, l FuncCoord 9,1 ld hl, Coord call PlaceString ; Pokémon name ld hl, $6a95 call $6a7e ld d, h ld e, l FuncCoord 12,16 ld hl, Coord call PlaceString ; OT ld hl, $c4c4 ld de, $cfa4 ; source ld bc, $8205 call PrintNumber ld d, $0 call $6ae4 call Delay3 call GBPalNormal ld hl, $c3a1 call $1384 ; draw Pokémon picture ld a, [$cf91] call $13d0 ; play Pokémon cry call $3865 ; wait for button? pop af ld [$ff00+$d7], a ret ; 0x12a7e INCBIN "baserom.gbc",$12a7e,$12aa5 - $12a7e Type1Text: ; 0x12aa5 db "TYPE1/", $4e Type2Text: ; db "TYPE2/", $4e IDNoText: db $73, $74, "/", $4e OTText: db "OT/", $4e, "@" StatusText: db "STATUS/@" OKText: ; 0x12ac4 db "OK@" INCBIN "baserom.gbc",$12ac7,$12cd2 - $12ac7 ; [$D07D] = menu type / message ID ; if less than $F0, it is a menu type ; menu types: ; 00: normal pokemon menu (e.g. Start menu) ; 01: use healing item on pokemon menu ; 02: in-battle switch pokemon menu ; 03: learn TM/HM menu ; 04: swap pokemon positions menu ; 05: use evolution stone on pokemon menu ; otherwise, it is a message ID ; f0: poison healed ; f1: burn healed ; f2: freeze healed ; f3: sleep healed ; f4: paralysis healed ; f5: HP healed ; f6: health returned ; f7: revitalized ; f8: leveled up DrawPartyMenu_: ; 6CD2 xor a ld [H_AUTOBGTRANSFERENABLED],a call ClearScreen call $2429 ; move sprites ld b,$1C ld hl,$5791 call Bankswitch ; load pokemon icon graphics RedrawPartyMenu_: ; 6CE3 ld a,[$D07D] cp a,$04 jp z,.printMessage\@ call ErasePartyMenuCursors ld b,$1C ld hl,$5FB6 call Bankswitch ; loads some data to $cf2e FuncCoord 3,0 ld hl,Coord ld de,W_PARTYMON1 xor a ld c,a ld [$FF8C],a ; loop counter ld [$CF2D],a .loop\@ ld a,[de] cp a,$FF ; reached the terminator? jp z,.afterDrawingMonEntries\@ push bc push de push hl ld a,c push hl ld hl,W_PARTYMON1NAME call GetPartyMonName pop hl call PlaceString ; print the pokemon's name ld b,$1C ld hl,$5868 call Bankswitch ; place the appropriate pokemon icon ld a,[$FF8C] ; loop counter ld [$CF92],a inc a ld [$FF8C],a call LoadMonData pop hl push hl ld a,[$CC35] and a ; is the player swapping pokemon positions? jr z,.skipUnfilledRightArrow\@ ; if the player is swapping pokemon positions dec a ld b,a ld a,[$CF92] cp b ; is the player swapping the current pokemon in the list? jr nz,.skipUnfilledRightArrow\@ ; the player is swapping the current pokemon in the list dec hl dec hl dec hl ld a,$EC ; unfilled right arrow menu cursor ld [hli],a ; place the cursor inc hl inc hl .skipUnfilledRightArrow\@ ld a,[$D07D] ; menu type cp a,$03 jr z,.teachMoveMenu\@ cp a,$05 jr z,.evolutionStoneMenu\@ push hl ld bc,14 ; 14 columns to the right add hl,bc ld de,$CF9C call PrintStatusCondition pop hl push hl ld bc,20 + 1 ; down 1 row and right 1 column ld a,[$FFF6] set 0,a ld [$FFF6],a add hl,bc ld a,$60 call Predef ; draw HP bar and prints current / max HP ld a,[$FFF6] res 0,a ld [$FFF6],a call $6EC7 ; color the HP bar (on SGB) pop hl jr .printLevel\@ .teachMoveMenu\@ push hl ld a,$43 call Predef ; check if the pokemon can learn the move pop hl ld de,.ableToLearnMoveText\@ ld a,c and a jr nz,.placeMoveLearnabilityString\@ ld de,.notAbleToLearnMoveText\@ .placeMoveLearnabilityString\@ ld bc,20 + 9 ; down 1 row and right 9 columns push hl add hl,bc call PlaceString pop hl .printLevel\@ ld bc,10 ; move 10 columns to the right add hl,bc call PrintLevel pop hl pop de inc de ld bc,2 * 20 add hl,bc pop bc inc c jp .loop\@ .ableToLearnMoveText\@ db "ABLE@" .notAbleToLearnMoveText\@ db "NOT ABLE@" .evolutionStoneMenu\@ push hl ld hl,EvosMovesPointerTable ld b,0 ld a,[$CF98] ; pokemon ID dec a add a rl b ld c,a add hl,bc ld de,$CD6D ld a,BANK(EvosMovesPointerTable) ld bc,2 call FarCopyData ld hl,$CD6D ld a,[hli] ld h,[hl] ld l,a ld de,$CD6D ld a,BANK(EvosMovesPointerTable) ld bc,13 call FarCopyData ld hl,$CD6D ld de,.notAbleToEvolveText\@ ; loop through the pokemon's evolution entries .checkEvolutionsLoop\@ ld a,[hli] and a ; reached terminator? jr z,.placeEvolutionStoneString\@ ; if so, place the "NOT ABLE" string inc hl inc hl cp a,EV_ITEM jr nz,.checkEvolutionsLoop\@ ; if it's a stone evolution entry dec hl dec hl ld b,[hl] ld a,[$D156] ; evolution stone item ID inc hl inc hl inc hl cp b ; does the player's stone match this evolution entry's stone? jr nz,.checkEvolutionsLoop\@ ; if it does match ld de,.ableToEvolveText\@ .placeEvolutionStoneString\@ ld bc,20 + 9 ; down 1 row and right 9 columns pop hl push hl add hl,bc call PlaceString pop hl jr .printLevel\@ .ableToEvolveText\@ db "ABLE@" .notAbleToEvolveText\@ db "NOT ABLE@" .afterDrawingMonEntries\@ ld b,$0A call GoPAL_SET .printMessage\@ ld hl,$D730 ld a,[hl] push af push hl set 6,[hl] ; turn off letter printing delay ld a,[$D07D] ; message ID cp a,$F0 jr nc,.printItemUseMessage\@ add a ld hl,PartyMenuMessagePointers ld b,0 ld c,a add hl,bc ld a,[hli] ld h,[hl] ld l,a call PrintText .done\@ pop hl pop af ld [hl],a ld a,1 ld [H_AUTOBGTRANSFERENABLED],a call Delay3 jp GBPalNormal .printItemUseMessage\@ and a,$0F ld hl,PartyMenuItemUseMessagePointers add a ld c,a ld b,0 add hl,bc ld a,[hli] ld h,[hl] ld l,a push hl ld a,[$CF06] ld hl,W_PARTYMON1NAME call GetPartyMonName pop hl call PrintText jr .done\@ PartyMenuItemUseMessagePointers: ; 6E61 dw AntidoteText dw BurnHealText dw IceHealText dw AwakeningText dw ParlyzHealText dw PotionText dw FullHealText dw ReviveText dw RareCandyText PartyMenuMessagePointers: ; 6E73 dw PartyMenuNormalText dw PartyMenuItemUseText dw PartyMenuBattleText dw PartyMenuUseTMText dw PartyMenuSwapMonText dw PartyMenuItemUseText PartyMenuNormalText: ; 0x12e7f TX_FAR _PartyMenuNormalText db $50 PartyMenuItemUseText: ; 0x12e84 TX_FAR _PartyMenuItemUseText db $50 PartyMenuBattleText: ; 0x12e89 TX_FAR _PartyMenuBattleText db $50 PartyMenuUseTMText: ; 0x12e8e TX_FAR _PartyMenuUseTMText db $50 PartyMenuSwapMonText: ; 0x12e93 TX_FAR _PartyMenuSwapMonText db $50 PotionText: ; 0x12e98 TX_FAR _PotionText db $50 AntidoteText: ; 0x12e9d TX_FAR _AntidoteText db $50 ParlyzHealText: ; 0x12ea2 TX_FAR _ParlyzHealText db $50 BurnHealText: ; 0x12ea7 TX_FAR _BurnHealText db $50 IceHealText: ; 0x12eac TX_FAR _IceHealText db $50 AwakeningText: ; 0x12eb1 TX_FAR _AwakeningText db $50 FullHealText: ; 0x12eb6 TX_FAR _FullHealText db $50 ReviveText: ; 0x12ebb TX_FAR _ReviveText db $50 RareCandyText: ; 0x12ec0 TX_FAR _RareCandyText db $0B db $06 db $50 INCBIN "baserom.gbc",$12ec7,$6ede - $6ec7 RedPicFront: INCBIN "pic/trainer/red.pic" ShrinkPic1: INCBIN "pic/trainer/shrink1.pic" ShrinkPic2: INCBIN "pic/trainer/shrink2.pic" INCBIN "baserom.gbc",$13074,$13095 - $13074 StartMenu_Pokedex: ; 7095 ld a,$29 call Predef call $3701 ; restore saved screen call Delay3 call LoadGBPal call $2429 jp RedisplayStartMenu StartMenu_Pokemon: ; 70A9 ld a,[W_NUMINPARTY] and a jp z,RedisplayStartMenu xor a ld [$cc35],a ld [$d07d],a ld [$cfcb],a call DisplayPartyMenu jr .checkIfPokemonChosen\@ .loop\@ xor a ld [$cc35],a ld [$d07d],a call GoBackToPartyMenu .checkIfPokemonChosen\@ jr nc,.chosePokemon\@ .exitMenu\@ call GBPalWhiteOutWithDelay3 call $3dbe call LoadGBPal jp RedisplayStartMenu .chosePokemon\@ call $3719 ; save screen ld a,$04 ld [$d125],a call DisplayTextBoxID ; display pokemon menu options ld hl,$cd3d ld bc,$020c ; max menu item ID, top menu item Y ld e,5 .adjustMenuVariablesLoop\@ dec e jr z,.storeMenuVariables\@ ld a,[hli] and a jr z,.storeMenuVariables\@ inc b dec c dec c jr .adjustMenuVariablesLoop\@ .storeMenuVariables\@ ld hl,W_TOPMENUITEMY ld a,c ld [hli],a ; top menu item Y ld a,[$fff7] ld [hli],a ; top menu item X xor a ld [hli],a ; current menu item ID inc hl ld a,b ld [hli],a ; max menu item ID ld a,%00000011 ; A button, B button ld [hli],a ; menu watched keys xor a ld [hl],a call HandleMenuInput push af call $3725 ; restore saved screen pop af bit 1,a ; was the B button pressed? jp nz,.loop\@ ; if the B button wasn't pressed ld a,[W_MAXMENUITEMID] ld b,a ld a,[W_CURMENUITEMID] ; menu selection cp b jp z,.exitMenu\@ ; if the player chose Cancel dec b cp b jr z,.choseSwitch\@ dec b cp b jp z,.choseStats\@ ld c,a ld b,0 ld hl,$cd3d add hl,bc jp .choseOutOfBattleMove\@ .choseSwitch\@ ld a,[W_NUMINPARTY] cp a,2 ; is there more than one pokemon in the party? jp c,StartMenu_Pokemon ; if not, no switching call $7653 ld a,$04 ; swap pokemon positions menu ld [$d07d],a call GoBackToPartyMenu jp .checkIfPokemonChosen\@ .choseStats\@ call CleanLCD_OAM xor a ld [$cc49],a ld a,$36 call Predef ld a,$37 call Predef call ReloadMapData jp StartMenu_Pokemon .choseOutOfBattleMove\@ push hl ld a,[$cf92] ld hl,W_PARTYMON1NAME call GetPartyMonName pop hl ld a,[hl] dec a add a ld b,0 ld c,a ld hl,.outOfBattleMovePointers\@ add hl,bc ld a,[hli] ld h,[hl] ld l,a ld a,[W_OBTAINEDBADGES] ; badges obtained jp [hl] .outOfBattleMovePointers\@ dw .cut\@ dw .fly\@ dw .surf\@ dw .surf\@ dw .strength\@ dw .flash\@ dw .dig\@ dw .teleport\@ dw .softboiled\@ .fly\@ bit 2,a ; does the player have the Thunder Badge? jp z,.newBadgeRequired\@ call CheckIfInOutsideMap jr z,.canFly\@ ld a,[$cf92] ld hl,W_PARTYMON1NAME call GetPartyMonName ld hl,.cannotFlyHereText\@ call PrintText jp .loop\@ .canFly\@ call ChooseFlyDestination ld a,[$d732] bit 3,a ; did the player decide to fly? jp nz,.goBackToMap\@ call LoadFontTilePatterns ld hl,$d72e set 1,[hl] jp StartMenu_Pokemon .cut\@ bit 1,a ; does the player have the Cascade Badge? jp z,.newBadgeRequired\@ ld a,$3c call Predef ld a,[$cd6a] and a jp z,.loop\@ jp CloseTextDisplay .surf\@ bit 4,a ; does the player have the Soul Badge? jp z,.newBadgeRequired\@ ld b,$03 ld hl,$4dc0 call Bankswitch ld hl,$d728 bit 1,[hl] res 1,[hl] jp z,.loop\@ ld a,SURFBOARD ld [$cf91],a ld [$d152],a call UseItem ld a,[$cd6a] and a jp z,.loop\@ call GBPalWhiteOutWithDelay3 jp .goBackToMap\@ .strength\@ bit 3,a ; does the player have the Rainbow Badge? jp z,.newBadgeRequired\@ ld a,$5b call Predef call GBPalWhiteOutWithDelay3 jp .goBackToMap\@ .flash\@ bit 0,a ; does the player have the Boulder Badge? jp z,.newBadgeRequired\@ xor a ld [$d35d],a ld hl,.flashLightsAreaText\@ call PrintText call GBPalWhiteOutWithDelay3 jp .goBackToMap\@ .flashLightsAreaText\@ TX_FAR _FlashLightsAreaText db $50 .dig\@ ld a,ESCAPE_ROPE ld [$cf91],a ld [$d152],a call UseItem ld a,[$cd6a] and a jp z,.loop\@ call GBPalWhiteOutWithDelay3 jp .goBackToMap\@ .teleport\@ call CheckIfInOutsideMap jr z,.canTeleport\@ ld a,[$cf92] ld hl,W_PARTYMON1NAME call GetPartyMonName ld hl,.cannotUseTeleportNowText\@ call PrintText jp .loop\@ .canTeleport\@ ld hl,.warpToLastPokemonCenterText\@ call PrintText ld hl,$d732 set 3,[hl] set 6,[hl] ld hl,$d72e set 1,[hl] res 4,[hl] ld c,60 call DelayFrames call GBPalWhiteOutWithDelay3 ; zero all three palettes and wait 3 V-blanks jp .goBackToMap\@ .warpToLastPokemonCenterText\@ TX_FAR _WarpToLastPokemonCenterText db $50 .cannotUseTeleportNowText\@ TX_FAR _CannotUseTeleportNowText db $50 .cannotFlyHereText\@ TX_FAR _CannotFlyHereText db $50 .softboiled\@ ld hl,W_PARTYMON1_MAXHP ld a,[$cf92] ld bc,44 call AddNTimes ld a,[hli] ld [H_DIVIDEND],a ld a,[hl] ld [H_DIVIDEND + 1],a ld a,5 ld [H_DIVISOR],a ld b,2 ; number of bytes call Divide ld bc,-33 add hl,bc ld a,[hld] ld b,a ld a,[H_QUOTIENT + 3] sub b ld b,[hl] ld a,[H_QUOTIENT + 2] sbc b jp nc,.notHealthyEnough\@ ld a,[$cc2b] push af ld a,POTION ld [$cf91],a ld [$d152],a call UseItem pop af ld [$cc2b],a jp .loop\@ .notHealthyEnough\@ ; if current HP is less than 1/5 of max HP ld hl,.notHealthyEnoughText\@ call PrintText jp .loop\@ .notHealthyEnoughText\@ TX_FAR _NotHealthyEnoughText db $50 .goBackToMap\@ call $3dbe jp CloseTextDisplay .newBadgeRequired\@ ld hl,.newBadgeRequiredText\@ call PrintText jp .loop\@ .newBadgeRequiredText\@ TX_FAR _NewBadgeRequiredText db $50 ; writes a blank tile to all possible menu cursor positions on the party menu ErasePartyMenuCursors: ; 72ED FuncCoord 0,1 ld hl,Coord ld bc,2 * 20 ; menu cursor positions are 2 rows apart ld a,6 ; 6 menu cursor positions .loop\@ ld [hl],$7f add hl,bc dec a jr nz,.loop\@ ret ItemMenuLoop: ; 72FC call $3709 ; restore saved screen call GoPAL_SET_CF1C StartMenu_Item: ; 7302 ld a,[W_ISLINKBATTLE] dec a jr nz,.notInLinkBattle\@ ld hl,CannotUseItemsHereText call PrintText jr .exitMenu\@ .notInLinkBattle\@ ld bc,W_NUMBAGITEMS ld hl,$cf8b ld a,c ld [hli],a ld [hl],b ; store item bag pointer at $cf8b (for DisplayListMenuID) xor a ld [$cf93],a ld a,ITEMLISTMENU ld [W_LISTMENUID],a ld a,[$cc2c] ld [W_CURMENUITEMID],a call DisplayListMenuID ld a,[W_CURMENUITEMID] ld [$cc2c],a jr nc,.choseItem\@ .exitMenu\@ call $3701 ; restore saved screen call LoadTextBoxTilePatterns call $2429 ; move sprites jp RedisplayStartMenu .choseItem\@ ; erase menu cursor (blank each tile in front of an item name) ld a,$7f ; blank space FuncCoord 5,4 ld [Coord],a FuncCoord 5,6 ld [Coord],a FuncCoord 5,8 ld [Coord],a FuncCoord 5,10 ld [Coord],a call PlaceUnfilledArrowMenuCursor xor a ld [$cc35],a ld a,[$cf91] cp a,BICYCLE jp z,.useOrTossItem\@ .notBicycle1\@ ld a,$06 ; use/toss menu ld [$d125],a call DisplayTextBoxID ld hl,W_TOPMENUITEMY ld a,11 ld [hli],a ; top menu item Y ld a,14 ld [hli],a ; top menu item X xor a ld [hli],a ; current menu item ID inc hl inc a ; a = 1 ld [hli],a ; max menu item ID ld a,%00000011 ; A button, B button ld [hli],a ; menu watched keys xor a ld [hl],a ; old menu item id call HandleMenuInput call PlaceUnfilledArrowMenuCursor bit 1,a ; was the B button pressed? jr z,.useOrTossItem\@ jp ItemMenuLoop .useOrTossItem\@ ; if the player made the choice to use or toss the item ld a,[$cf91] ld [$d11e],a call GetItemName call $3826 ; copy name to $cf4b ld a,[$cf91] cp a,BICYCLE jr nz,.notBicycle2\@ ld a,[$d732] bit 5,a jr z,.useItem_closeMenu\@ ld hl,CannotGetOffHereText call PrintText jp ItemMenuLoop .notBicycle2\@ ld a,[W_CURMENUITEMID] and a jr nz,.tossItem\@ .useItem\@ ld [$d152],a ld a,[$cf91] cp a,HM_01 jr nc,.useItem_partyMenu\@ ld hl,UsableItems_CloseMenu ld de,1 call IsInArray jr c,.useItem_closeMenu\@ ld a,[$cf91] ld hl,UsableItems_PartyMenu ld de,1 call IsInArray jr c,.useItem_partyMenu\@ call UseItem jp ItemMenuLoop .useItem_closeMenu\@ xor a ld [$d152],a call UseItem ld a,[$cd6a] and a jp z,ItemMenuLoop jp CloseStartMenu .useItem_partyMenu\@ ld a,[$cfcb] push af call UseItem ld a,[$cd6a] cp a,$02 jp z,.partyMenuNotDisplayed\@ call GBPalWhiteOutWithDelay3 call $3dbe pop af ld [$cfcb],a jp StartMenu_Item .partyMenuNotDisplayed\@ pop af ld [$cfcb],a jp ItemMenuLoop .tossItem\@ call IsKeyItem ld a,[$d124] and a jr nz,.skipAskingQuantity\@ ld a,[$cf91] call IsItemHM jr c,.skipAskingQuantity\@ call DisplayChooseQuantityMenu inc a jr z,.tossZeroItems\@ .skipAskingQuantity\@ ld hl,W_NUMBAGITEMS call TossItem .tossZeroItems\@ jp ItemMenuLoop CannotUseItemsHereText: ; 742A TX_FAR _CannotUseItemsHereText db $50 CannotGetOffHereText: ; 742F TX_FAR _CannotGetOffHereText db $50 ; items which bring up the party menu when used UsableItems_PartyMenu: ; 7434 db MOON_STONE db ANTIDOTE db BURN_HEAL db ICE_HEAL db AWAKENING db PARLYZ_HEAL db FULL_RESTORE db MAX_POTION db HYPER_POTION db SUPER_POTION db POTION db FIRE_STONE db THUNDER_STONE db WATER_STONE db HP_UP db PROTEIN db IRON db CARBOS db CALCIUM db RARE_CANDY db LEAF_STONE db FULL_HEAL db REVIVE db MAX_REVIVE db FRESH_WATER db SODA_POP db LEMONADE db X_ATTACK db X_DEFEND db X_SPEED db X_SPECIAL db PP_UP db ETHER db MAX_ETHER db ELIXER db MAX_ELIXER db $ff ; items which close the item menu when used UsableItems_CloseMenu: ; 7459 db ESCAPE_ROPE db ITEMFINDER db POKE_FLUTE db OLD_ROD db GOOD_ROD db SUPER_ROD db $ff StartMenu_TrainerInfo: ; 7460 call GBPalWhiteOut call ClearScreen call $2429 ; move sprites ld a,[$ffd7] push af xor a ld [$ffd7],a call DrawTrainerInfo ld a,$2e call Predef ; draw badges ld b,$0d call GoPAL_SET call GBPalNormal call $3865 ; wait for button press call GBPalWhiteOut call LoadFontTilePatterns call $3701 ; restore saved screen call GoPAL_SET_CF1C call ReloadMapData call LoadGBPal pop af ld [$ffd7],a jp RedisplayStartMenu ; loads tile patterns and draws everything except for gym leader faces / badges DrawTrainerInfo: ; 749A ld de,RedPicFront ld bc,$0401 ld a,$3b call Predef call DisableLCD FuncCoord 0,2 ld hl,Coord ld a,$7f ; blank tile ID call TrainerInfo_DrawVerticalLine FuncCoord 1,2 ld hl,Coord call TrainerInfo_DrawVerticalLine ld hl,$9070 ld de,$9000 ld bc,$01c0 call CopyData ld hl,$7b98 ; trainer info text box tile patterns ld de,$9770 ld bc,$0080 push bc call TrainerInfo_FarCopyData ld hl,$7c28 ld de,$9600 ld bc,$0170 call TrainerInfo_FarCopyData pop bc ld hl,$7d98 ; badge number tile patterns ld de,$8d80 call TrainerInfo_FarCopyData ld hl,$6a9e ; gym leader face and badge tile patterns ld de,$9200 ld bc,$0400 ld a,$03 call FarCopyData2 ld hl,$6288 ld de,$00d0 add hl,de ; hl = colon tile pattern ld de,$8d60 ld bc,$0010 ld a,$04 push bc call FarCopyData2 pop bc ld hl,$7c18 ; background tile pattern ld de,$8d70 call TrainerInfo_FarCopyData call EnableLCD ld hl,$cd3d ld a,18 + 1 ld [hli],a dec a ld [hli],a ld [hl],1 FuncCoord 0,0 ld hl,Coord call TrainerInfo_DrawTextBox ld hl,$cd3d ld a,16 + 1 ld [hli],a dec a ld [hli],a ld [hl],3 FuncCoord 1,10 ld hl,Coord call TrainerInfo_DrawTextBox FuncCoord 0,10 ld hl,Coord ld a,$d7 call TrainerInfo_DrawVerticalLine FuncCoord 19,10 ld hl,Coord call TrainerInfo_DrawVerticalLine FuncCoord 6,9 ld hl,Coord ld de,TrainerInfo_BadgesText call PlaceString FuncCoord 2,2 ld hl,Coord ld de,TrainerInfo_NameMoneyTimeText call PlaceString FuncCoord 7,2 ld hl,Coord ld de,W_PLAYERNAME call PlaceString FuncCoord 8,4 ld hl,Coord ld de,W_PLAYERMONEY3 ld c,$e3 call PrintBCDNumber FuncCoord 9,6 ld hl,Coord ld de,$da41 ; hours ld bc,$4103 call PrintNumber ld [hl],$d6 ; colon tile ID inc hl ld de,$da43 ; minutes ld bc,$8102 jp PrintNumber TrainerInfo_FarCopyData: ; 757F ld a,$0b jp FarCopyData2 TrainerInfo_NameMoneyTimeText: ; 7584 db "NAME/",$4E db "MONEY/",$4E db "TIME/@" ; $76 is a circle tile TrainerInfo_BadgesText: ; 7597 db $76,"BADGES",$76,"@" ; draws a text box on the trainer info screen ; height is always 6 ; INPUT: ; hl = destination address ; [$cd3d] = width + 1 ; [$cd3e] = width ; [$cd3f] = distance from the end of a text box row to the start of the next TrainerInfo_DrawTextBox: ; 75A0 ld a,$79 ; upper left corner tile ID ld de,$7a7b ; top edge and upper right corner tile ID's call TrainerInfo_DrawHorizontalEdge ; draw top edge call TrainerInfo_NextTextBoxRow ld a,[$cd3d] ; width of the text box plus one ld e,a ld d,0 ld c,6 ; height of the text box .loop\@ ld [hl],$7c ; left edge tile ID add hl,de ld [hl],$78 ; right edge tile ID call TrainerInfo_NextTextBoxRow dec c jr nz,.loop\@ ld a,$7d ; lower left corner tile ID ld de,$777e ; bottom edge and lower right corner tile ID's TrainerInfo_DrawHorizontalEdge: ; 75C3 ld [hli],a ; place left corner tile ld a,[$cd3e] ; width of the text box ld c,a ld a,d .loop\@ ld [hli],a ; place edge tile dec c jr nz,.loop\@ ld a,e ld [hl],a ; place right corner tile ret TrainerInfo_NextTextBoxRow: ; 75D0 ld a,[$cd3f] ; distance to the start of the next row .loop\@ inc hl dec a jr nz,.loop\@ ret ; draws a vertical line ; INPUT: ; hl = address of top tile in the line ; a = tile ID TrainerInfo_DrawVerticalLine: ; 75D8 ld de,20 ld c,8 .loop\@ ld [hl],a add hl,de dec c jr nz,.loop\@ ret StartMenu_SaveReset: ; 75E3 ld a,[$d72e] bit 6,a ; is the player using the link feature? jp nz,InitGame ld a,$3f call Predef ; save the game call $3701 ; restore saved screen jp HoldTextDisplayOpen StartMenu_Option: ; 75F6 xor a ld [H_AUTOBGTRANSFERENABLED],a call ClearScreen call $2429 ld hl,DisplayOptionMenu ld b,BANK(DisplayOptionMenu) call Bankswitch call $3701 ; restore saved screen call LoadTextBoxTilePatterns call $2429 jp RedisplayStartMenu INCBIN "baserom.gbc",$13613,$7773 - $7613 TechnicalMachines: ; 0x13773 db MEGA_PUNCH db RAZOR_WIND db SWORDS_DANCE db WHIRLWIND db MEGA_KICK db TOXIC db HORN_DRILL db BODY_SLAM db TAKE_DOWN db DOUBLE_EDGE db BUBBLEBEAM db WATER_GUN db ICE_BEAM db BLIZZARD db HYPER_BEAM db PAY_DAY db SUBMISSION db COUNTER db SEISMIC_TOSS db RAGE db MEGA_DRAIN db SOLARBEAM db DRAGON_RAGE db THUNDERBOLT db THUNDER db EARTHQUAKE db FISSURE db DIG db PSYCHIC_M db TELEPORT db MIMIC db DOUBLE_TEAM db REFLECT db BIDE db METRONOME db SELFDESTRUCT db EGG_BOMB db FIRE_BLAST db SWIFT db SKULL_BASH db SOFTBOILED db DREAM_EATER db SKY_ATTACK db REST db THUNDER_WAVE db PSYWAVE db EXPLOSION db ROCK_SLIDE db TRI_ATTACK db SUBSTITUTE db CUT db FLY db SURF db STRENGTH db FLASH INCBIN "baserom.gbc",$137aa,$1386b - $137aa UnnamedText_1386b: ; 0x1386b TX_FAR _UnnamedText_1386b db $50 ; 0x1386b + 5 bytes INCBIN "baserom.gbc",$13870,$1399e - $13870 UnnamedText_1399e: ; 0x1399e TX_FAR _UnnamedText_1399e db $50 ; 0x1399e + 5 bytes INCBIN "baserom.gbc",$139a3,$139cd - $139a3 UnnamedText_139cd: ; 0x139cd TX_FAR _UnnamedText_139cd db $50 ; 0x139cd + 5 bytes INCBIN "baserom.gbc",$139d2,$13a53 - $139d2 UnnamedText_13a53: ; 0x13a53 TX_FAR _UnnamedText_13a53 db $50 ; 0x13a53 + 5 bytes INCBIN "baserom.gbc",$13a58,$37 GenRandom_: ; 7A8F ; generate a random 16-bit integer and store it at $FFD3,$FFD4 ld a,[rDIV] ld b,a ld a,[H_RAND1] adc b ld [H_RAND1],a ld a,[rDIV] ld b,a ld a,[H_RAND2] sbc b ld [H_RAND2],a ret SECTION "bank5",DATA,BANK[$5] INCBIN "baserom.gbc",$14000,$14180 - $14000 RedSprite: ; 0x14180 INCBIN "gfx/sprites/red.2bpp" ; was $14180 BlueSprite: ; 0x14300 INCBIN "gfx/sprites/blue.2bpp" ; was $14300 OakSprite: ; 0x14480 INCBIN "gfx/sprites/oak.2bpp" ; was $14480 BugCatcherSprite: ; 0x14600 INCBIN "gfx/sprites/bug_catcher.2bpp" ; was $14600 SlowbroSprite: ; 0x14780 INCBIN "gfx/sprites/slowbro.2bpp" ; was $14780 LassSprite: ; 0x14900 INCBIN "gfx/sprites/lass.2bpp" ; was $14900 BlackHairBoy1Sprite: ; 0x14a80 INCBIN "gfx/sprites/black_hair_boy_1.2bpp" ; was $14a80 LittleGirlSprite: ; 0x14c00 INCBIN "gfx/sprites/little_girl.2bpp" ; was $14c00 BirdSprite: ; 0x14d80 INCBIN "gfx/sprites/bird.2bpp" ; was $14d80 FatBaldGuySprite: ; 0x14f00 INCBIN "gfx/sprites/fat_bald_guy.2bpp" ; was $14f00 GamblerSprite: ; 0x15080 INCBIN "gfx/sprites/gambler.2bpp" ; was $15080 BlackHairBoy2Sprite: ; 0x15200 INCBIN "gfx/sprites/black_hair_boy_2.2bpp" ; was $15200 GirlSprite: ; 0x15380 INCBIN "gfx/sprites/girl.2bpp" ; was $15380 HikerSprite: ; 0x15500 INCBIN "gfx/sprites/hiker.2bpp" ; was $15500 FoulardWomanSprite: ; 0x15680 INCBIN "gfx/sprites/foulard_woman.2bpp" ; was $15680 GentlemanSprite: ; 0x15800 INCBIN "gfx/sprites/gentleman.2bpp" ; was $15800 DaisySprite: ; 0x15980 INCBIN "gfx/sprites/daisy.2bpp" ; was $15980 BikerSprite: ; 0x15b00 INCBIN "gfx/sprites/biker.2bpp" ; was $15b00 SailorSprite: ; 0x15c80 INCBIN "gfx/sprites/sailor.2bpp" ; was $15c80 CookSprite: ; 0x15e00 INCBIN "gfx/sprites/cook.2bpp" ; was $15e00 BikeShopGuySprite: ; 0x15f80 INCBIN "gfx/sprites/bike_shop_guy.2bpp" ; was $15f80 MrFujiSprite: ; 0x16040 INCBIN "gfx/sprites/mr_fuji.2bpp" ; was $16040 GiovanniSprite: ; 0x161c0 INCBIN "gfx/sprites/giovanni.2bpp" ; was $161c0 RocketSprite: ; 0x16340 INCBIN "gfx/sprites/rocket.2bpp" ; was $16340 MediumSprite: ; 0x164c0 INCBIN "gfx/sprites/medium.2bpp" ; was $164c0 WaiterSprite: ; 0x16640 INCBIN "gfx/sprites/waiter.2bpp" ; was $16640 ErikaSprite: ; 0x167c0 INCBIN "gfx/sprites/erika.2bpp" ; was $167c0 MomGeishaSprite: ; 0x16940 INCBIN "gfx/sprites/mom_geisha.2bpp" ; was $16940 BrunetteGirlSprite: ; 0x16ac0 INCBIN "gfx/sprites/brunette_girl.2bpp" ; was $16ac0 LanceSprite: ; 0x16c40 INCBIN "gfx/sprites/lance.2bpp" ; was $16c40 MomSprite: ; 0x16dc0 INCBIN "gfx/sprites/mom.2bpp" ; was $16dc0 BaldingGuySprite: ; 0x16e80 INCBIN "gfx/sprites/balding_guy.2bpp" ; was $16e80 YoungBoySprite: ; 0x16f40 INCBIN "gfx/sprites/young_boy.2bpp" ; was $16f40 GameboyKidSprite: ; 0x17000 INCBIN "gfx/sprites/gameboy_kid.2bpp" ; was $17000 ClefairySprite: ; 0x170c0 INCBIN "gfx/sprites/clefairy.2bpp" ; was $170c0 AgathaSprite: ; 0x17240 INCBIN "gfx/sprites/agatha.2bpp" ; was $17240 BrunoSprite: ; 0x173c0 INCBIN "gfx/sprites/bruno.2bpp" ; was $173c0 LoreleiSprite: ; 0x17540 INCBIN "gfx/sprites/lorelei.2bpp" ; was $17540 SeelSprite: ; 0x176c0 INCBIN "gfx/sprites/seel.2bpp" ; was $176c0 ; Loads tile patterns for tiles used in the pokedex. LoadPokedexTilePatterns: ; 7840 call LoadHpBarAndStatusTilePatterns ld de,$6488 ld hl,$9600 ld bc,$0412 call CopyVideoData ld de,$697e ld hl,$9720 ld bc,$0e01 jp CopyVideoData ; Loads tile patterns for map's sprites. ; For outside maps, it loads one of several fixed sets of sprites. ; For inside maps, it loads each sprite picture ID used in the map header. ; This is also called after displaying text because loading ; text tile patterns overwrites half of the sprite tile pattern data. ; Note on notation: ; $C1X* and $C2X* are used to denote $C100-$C1FF and $C200-$C2FF sprite slot ; fields, respectively, within loops. The X is the loop index. ; If there is an inner loop, Y is the inner loop index, i.e. $C1Y* and $C2Y* ; denote fields of the sprite slots interated over in the inner loop. InitMapSprites: ; 785B call InitOutsideMapSprites ret c ; return if the map is an outside map (already handled by above call) ; if the map is an inside map (i.e. mapID >= $25) ld hl,$c100 ld de,$c20d ; Loop to copy picture ID's from $C1X0 to $C2XD for LoadMapSpriteTilePatterns. .copyPictureIDLoop\@ ld a,[hl] ; $C1X0 (picture ID) ld [de],a ; $C2XD ld a,$10 add e ld e,a ld a,$10 add l ld l,a jr nz,.copyPictureIDLoop\@ ; This is used for both inside and outside maps, since it is called by ; InitOutsideMapSprites. ; Loads tile pattern data for sprites into VRAM. LoadMapSpriteTilePatterns: ; 7871 ld a,[W_NUMSPRITES] and a ; are there any sprites? jr nz,.spritesExist\@ ret .spritesExist\@ ld c,a ; c = [W_NUMSPRITES] ld b,$10 ; number of sprite slots ld hl,$c20d xor a ld [$ff8e],a ; 4-tile sprite counter .copyPictureIDLoop\@ ; loop to copy picture ID from $C2XD to $C2XE ld a,[hli] ; $C2XD (sprite picture ID) ld [hld],a ; $C2XE ld a,l add a,$10 ld l,a dec b jr nz,.copyPictureIDLoop\@ ld hl,$c21e .loadTilePatternLoop\@ ld de,$c21d ; Check if the current picture ID has already had its tile patterns loaded. ; This done by looping through the previous sprite slots and seeing if any of ; their picture ID's match that of the current sprite slot. .checkIfAlreadyLoadedLoop\@ ld a,e and a,$f0 ld b,a ; b = offset of the $c200 sprite slot being checked against ld a,l and a,$f0 ; a = offset of current $c200 sprite slot cp b ; done checking all previous sprite slots? jr z,.notAlreadyLoaded\@ ld a,[de] ; picture ID of the $c200 sprite slot being checked against cp [hl] ; do the picture ID's match? jp z,.alreadyLoaded\@ ld a,e add a,$10 ld e,a jr .checkIfAlreadyLoadedLoop\@ .notAlreadyLoaded\@ ld de,$c20e ld b,$01 ; loop to find the highest tile pattern VRAM slot (among the first 10 slots) used by a previous sprite slot ; this is done in order to find the first free VRAM slot available .findNextVRAMSlotLoop\@ ld a,e add a,$10 ld e,a ld a,l cp e ; reached current slot? jr z,.foundNextVRAMSlot\@ ld a,[de] ; $C2YE (VRAM slot) cp a,11 ; is it one of the first 10 slots? jr nc,.findNextVRAMSlotLoop\@ cp b ; compare the slot being checked to the current max jr c,.findNextVRAMSlotLoop\@ ; if the slot being checked is less than the current max ; if the slot being checked is greater than or equal to the current max ld b,a ; store new max VRAM slot jr .findNextVRAMSlotLoop\@ .foundNextVRAMSlot\@ inc b ; increment previous max value to get next VRAM tile pattern slot ld a,b ; a = next VRAM tile pattern slot push af ld a,[hl] ; $C2XE (sprite picture ID) ld b,a ; b = current sprite picture ID cp a,SPRITE_BALL ; is it a 4-tile sprite? jr c,.notFourTileSprite\@ pop af ld a,[$ff8e] ; 4-tile sprite counter add a,11 jr .storeVRAMSlot\@ .notFourTileSprite\@ pop af .storeVRAMSlot\@ ld [hl],a ; store VRAM slot at $C2XE ld [$ff8d],a ; used to determine if it's 4-tile sprite later ld a,b ; a = current sprite picture ID dec a add a add a push bc push hl ld hl,SpriteSheetPointerTable jr nc,.noCarry\@ inc h .noCarry\@ add l ld l,a jr nc,.noCarry2\@ inc h .noCarry2\@ push hl call ReadSpriteSheetData push af push de push bc ld hl,$8000 ; VRAM base address ld bc,$c0 ; number of bytes per VRAM slot ld a,[$ff8d] cp a,11 ; is it a 4-tile sprite? jr nc,.fourTileSpriteVRAMAddr\@ ld d,a dec d ; Equivalent to multiplying $C0 (number of bytes in 12 tiles) times the VRAM ; slot and adding the result to $8000 (the VRAM base address). .calculateVRAMAddrLoop\@ add hl,bc dec d jr nz,.calculateVRAMAddrLoop\@ jr .loadStillTilePattern\@ .fourTileSpriteVRAMAddr\@ ld hl,$87c0 ; address for second 4-tile sprite ld a,[$ff8e] ; 4-tile sprite counter and a ; is it the first 4-tile sprite? jr nz,.loadStillTilePattern\@ ; if it's the first 4-tile sprite ld hl,$8780 ; address for first 4-tile sprite inc a ld [$ff8e],a ; 4-tile sprite counter .loadStillTilePattern\@ pop bc pop de pop af push hl push hl ld h,d ld l,e pop de ld b,a ld a,[$cfc4] bit 0,a ; reloading upper half of tile patterns after displaying text? jr nz,.skipFirstLoad\@ ; if so, skip loading data into the lower half ld a,b ld b,0 call FarCopyData2 ; load tile pattern data for sprite when standing still .skipFirstLoad\@ pop de pop hl ld a,[$ff8d] cp a,11 ; is it a 4-tile sprite? jr nc,.skipSecondLoad\@ ; if so, there is no second block push de call ReadSpriteSheetData push af ld a,$c0 add e ld e,a jr nc,.noCarry3\@ inc d .noCarry3\@ ld a,[$cfc4] bit 0,a ; reloading upper half of tile patterns after displaying text? jr nz,.loadWhileLCDOn\@ pop af pop hl set 3,h ; add $800 to hl push hl ld h,d ld l,e pop de call FarCopyData2 ; load tile pattern data for sprite when walking jr .skipSecondLoad\@ ; When reloading the upper half of tile patterns after diplaying text, the LCD ; will be on, so CopyVideoData (which writes to VRAM only during V-blank) must ; be used instead of FarCopyData2. .loadWhileLCDOn\@ pop af pop hl set 3,h ; add $800 to hl ld b,a swap c call CopyVideoData ; load tile pattern data for sprite when walking .skipSecondLoad\@ pop hl pop bc jr .nextSpriteSlot\@ .alreadyLoaded\@ ; if the current picture ID has already had its tile patterns loaded inc de ld a,[de] ; a = VRAM slot for the current picture ID (from $C2YE) ld [hl],a ; store VRAM slot in current $c200 sprite slot (at $C2XE) .nextSpriteSlot\@ ld a,l add a,$10 ld l,a dec c jp nz,.loadTilePatternLoop\@ ld hl,$c20d ld b,$10 ; the pictures ID's stored at $C2XD are no longer needed, so zero them .zeroStoredPictureIDLoop\@ xor a ld [hl],a ; $C2XD ld a,$10 add l ld l,a dec b jr nz,.zeroStoredPictureIDLoop\@ ret ; reads data from SpriteSheetPointerTable ; INPUT: ; hl = address of sprite sheet entry ; OUTPUT: ; de = pointer to sprite sheet ; bc = length in bytes ; a = ROM bank ReadSpriteSheetData: ; 7971 ld a,[hli] ld e,a ld a,[hli] ld d,a ld a,[hli] ld c,a xor a ld b,a ld a,[hli] ret ; Loads sprite set for outside maps (cities and routes) and sets VRAM slots. ; sets carry if the map is a city or route, unsets carry if not InitOutsideMapSprites: ; 797B ld a,[W_CURMAP] cp a,$25 ; is the map a city or a route (map ID less than $25)? ret nc ; if not, return ld hl,MapSpriteSets add l ld l,a jr nc,.noCarry\@ inc h .noCarry\@ ld a,[hl] ; a = spriteSetID cp a,$f0 ; does the map have 2 sprite sets? call nc,GetSplitMapSpriteSetID ; if so, choose the appropriate one ld b,a ; b = spriteSetID ld a,[$cfc4] bit 0,a ; reloading upper half of tile patterns after displaying text? jr nz,.loadSpriteSet\@ ; if so, forcibly reload the sprite set ld a,[W_SPRITESETID] cp b ; has the sprite set ID changed? jr z,.skipLoadingSpriteSet\@ ; if not, don't load it again .loadSpriteSet\@ ld a,b ld [W_SPRITESETID],a dec a ld b,a sla a ld c,a sla a sla a add c add b ; a = (spriteSetID - 1) * 11 ld de,SpriteSets ; add a to de to get offset of sprite set add e ld e,a jr nc,.noCarry2\@ inc d .noCarry2\@ ld hl,$c20d ld a,SPRITE_RED ld [hl],a ld bc,W_SPRITESET ; Load the sprite set into RAM. ; This loop also fills $C2XD (sprite picture ID) where X is from $0 to $A ; with picture ID's. This is done so that LoadMapSpriteTilePatterns will ; load tile patterns for all sprite pictures in the sprite set. .loadSpriteSetLoop\@ ld a,$10 add l ld l,a ld a,[de] ; sprite picture ID from sprite set ld [hl],a ; $C2XD (sprite picture ID) ld [bc],a inc de inc bc ld a,l cp a,$bd ; reached 11th sprite slot? jr nz,.loadSpriteSetLoop\@ ld b,4 ; 4 remaining sprite slots .zeroRemainingSlotsLoop\@ ; loop to zero the picture ID's of the remaining sprite slots ld a,$10 add l ld l,a xor a ld [hl],a ; $C2XD (sprite picture ID) dec b jr nz,.zeroRemainingSlotsLoop\@ ld a,[W_NUMSPRITES] push af ; save number of sprites ld a,11 ; 11 sprites in sprite set ld [W_NUMSPRITES],a call LoadMapSpriteTilePatterns pop af ld [W_NUMSPRITES],a ; restore number of sprites ld hl,$c21e ld b,$0f ; The VRAM tile pattern slots that LoadMapSpriteTilePatterns set are in the ; order of the map's sprite set, not the order of the actual sprites loaded ; for the current map. So, they are not needed and are zeroed by this loop. .zeroVRAMSlotsLoop\@ xor a ld [hl],a ; $C2XE (VRAM slot) ld a,$10 add l ld l,a dec b jr nz,.zeroVRAMSlotsLoop\@ .skipLoadingSpriteSet\@ ld hl,$c110 ; This loop stores the correct VRAM tile pattern slots according the sprite ; data from the map's header. Since the VRAM tile pattern slots are filled in ; the order of the sprite set, in order to find the VRAM tile pattern slot ; for a sprite slot, the picture ID for the sprite is looked up within the ; sprite set. The index of the picture ID within the sprite set plus one ; (since the Red sprite always has the first VRAM tile pattern slot) is the ; VRAM tile pattern slot. .storeVRAMSlotsLoop\@ ld c,0 ld a,[hl] ; $C1X0 (picture ID) (zero if sprite slot is not used) and a ; is the sprite slot used? jr z,.skipGettingPictureIndex\@ ; if the sprite slot is not used ld b,a ; b = picture ID ld de,W_SPRITESET ; Loop to find the index of the sprite's picture ID within the sprite set. .getPictureIndexLoop\@ inc c ld a,[de] inc de cp b ; does the picture ID match? jr nz,.getPictureIndexLoop\@ inc c .skipGettingPictureIndex\@ push hl inc h ld a,$0e add l ld l,a ld a,c ; a = VRAM slot (zero if sprite slot is not used) ld [hl],a ; $C2XE (VRAM slot) pop hl ld a,$10 add l ld l,a and a jr nz,.storeVRAMSlotsLoop\@ scf ret ; Chooses the correct sprite set ID depending on the player's position within ; the map for maps with two sprite sets. GetSplitMapSpriteSetID: ; 7A1A cp a,$f8 jr z,.route20\@ ld hl,SplitMapSpriteSets and a,$0f dec a sla a sla a add l ld l,a jr nc,.noCarry\@ inc h .noCarry\@ ld a,[hli] ; determines whether the map is split East/West or North/South cp a,$01 ld a,[hli] ; position of dividing line ld b,a jr z,.eastWestDivide\@ .northSouthDivide\@ ld a,[W_YCOORD] jr .compareCoord\@ .eastWestDivide\@ ld a,[W_XCOORD] .compareCoord\@ cp b jr c,.loadSpriteSetID\@ ; if in the East side or South side inc hl .loadSpriteSetID\@ ld a,[hl] ret ; Uses sprite set $01 for West side and $0A for East side. ; Route 20 is a special case because the two map sections have a more complex ; shape instead of the map simply being split horizontally or vertically. .route20\@ ld hl,W_XCOORD ld a,[hl] cp a,$2b ld a,$01 ret c ld a,[hl] cp a,$3e ld a,$0a ret nc ld a,[hl] cp a,$37 ld b,$08 jr nc,.next\@ ld b,$0d .next\@ ld a,[W_YCOORD] cp b ld a,$0a ret c ld a,$01 ret MapSpriteSets: ; 7A64 db $01 ; PALLET_TOWN db $01 ; VIRIDIAN_CITY db $02 ; PEWTER_CITY db $02 ; CERULEAN_CITY db $03 ; LAVENDER_TOWN db $04 ; VERMILION_CITY db $05 ; CELADON_CITY db $0a ; FUCHSIA_CITY db $01 ; CINNABAR_ISLAND db $06 ; INDIGO_PLATEAU db $07 ; SAFFRON_CITY db $01 ; unused map ID db $01 ; ROUTE_1 db $f1 ; ROUTE_2 db $02 ; ROUTE_3 db $02 ; ROUTE_4 db $f9 ; ROUTE_5 db $fa ; ROUTE_6 db $fb ; ROUTE_7 db $fc ; ROUTE_8 db $02 ; ROUTE_9 db $f2 ; ROUTE_10 db $f3 ; ROUTE_11 db $f4 ; ROUTE_12 db $08 ; ROUTE_13 db $08 ; ROUTE_14 db $f5 ; ROUTE_15 db $f6 ; ROUTE_16 db $09 ; ROUTE_17 db $f7 ; ROUTE_18 db $0a ; ROUTE_19 db $f8 ; ROUTE_20 db $01 ; ROUTE_21 db $01 ; ROUTE_22 db $06 ; ROUTE_23 db $02 ; ROUTE_24 db $02 ; ROUTE_25 ; Format: ; 00: determines whether the map is split East/West or North/South ; $01 = East/West divide ; $02 = North/South divide ; 01: coordinate of dividing line ; 02: sprite set ID if in the West or North side ; 03: sprite set ID if in the East or South side SplitMapSpriteSets: ; 7A89 db $02,$25,$02,$01 ; $f1 db $02,$32,$02,$03 ; $f2 db $01,$39,$04,$08 ; $f3 db $02,$15,$03,$08 ; $f4 db $01,$08,$0A,$08 ; $f5 db $01,$18,$09,$05 ; $f6 db $01,$22,$09,$0A ; $f7 db $01,$35,$01,$0A ; $f8 db $02,$21,$02,$07 ; $f9 db $02,$02,$07,$04 ; $fa db $01,$11,$05,$07 ; $fb db $01,$03,$07,$03 ; $fc SpriteSets: ; 7AB9 ; sprite set $01 db SPRITE_BLUE db SPRITE_BUG_CATCHER db SPRITE_GIRL db SPRITE_FISHER2 db SPRITE_BLACK_HAIR_BOY_1 db SPRITE_GAMBLER db SPRITE_SEEL db SPRITE_OAK db SPRITE_SWIMMER db SPRITE_BALL db SPRITE_LYING_OLD_MAN ; sprite set $02 db SPRITE_BUG_CATCHER db SPRITE_ROCKET db SPRITE_BLACK_HAIR_BOY_2 db SPRITE_HIKER db SPRITE_SLOWBRO db SPRITE_BLUE db SPRITE_GUARD db SPRITE_LASS db SPRITE_BLACK_HAIR_BOY_1 db SPRITE_BALL db SPRITE_LYING_OLD_MAN_UNUSED_2 ; sprite set $03 db SPRITE_LITTLE_GIRL db SPRITE_GIRL db SPRITE_BLACK_HAIR_BOY_2 db SPRITE_HIKER db SPRITE_GAMBLER db SPRITE_SLOWBRO db SPRITE_LASS db SPRITE_BLACK_HAIR_BOY_1 db SPRITE_GUARD db SPRITE_BALL db SPRITE_LYING_OLD_MAN_UNUSED_2 ; sprite set $04 db SPRITE_FOULARD_WOMAN db SPRITE_BLACK_HAIR_BOY_2 db SPRITE_BUG_CATCHER db SPRITE_GAMBLER db SPRITE_SLOWBRO db SPRITE_GUARD db SPRITE_SAILOR db SPRITE_LASS db SPRITE_BLACK_HAIR_BOY_1 db SPRITE_BALL db SPRITE_LYING_OLD_MAN_UNUSED_2 ; sprite set $05 db SPRITE_LITTLE_GIRL db SPRITE_YOUNG_BOY db SPRITE_GIRL db SPRITE_FISHER2 db SPRITE_FAT_BALD_GUY db SPRITE_OLD_PERSON db SPRITE_SLOWBRO db SPRITE_GUARD db SPRITE_ROCKET db SPRITE_BALL db SPRITE_SNORLAX ; sprite set $06 db SPRITE_BUG_CATCHER db SPRITE_GYM_HELPER db SPRITE_SLOWBRO db SPRITE_BLUE db SPRITE_LASS db SPRITE_BLACK_HAIR_BOY_1 db SPRITE_SWIMMER db SPRITE_GUARD db SPRITE_GAMBLER db SPRITE_BALL db SPRITE_LYING_OLD_MAN_UNUSED_2 ; sprite set $07 db SPRITE_ROCKET db SPRITE_OAK_AIDE db SPRITE_LAPRAS_GIVER db SPRITE_ERIKA db SPRITE_GENTLEMAN db SPRITE_BIRD db SPRITE_ROCKER db SPRITE_BLACK_HAIR_BOY_1 db SPRITE_SLOWBRO db SPRITE_BALL db SPRITE_LYING_OLD_MAN_UNUSED_2 ; sprite set $08 db SPRITE_BIKER db SPRITE_BLACK_HAIR_BOY_2 db SPRITE_FAT_BALD_GUY db SPRITE_LASS db SPRITE_BLACK_HAIR_BOY_1 db SPRITE_FOULARD_WOMAN db SPRITE_FISHER2 db SPRITE_ROCKER db SPRITE_SLOWBRO db SPRITE_BALL db SPRITE_SNORLAX ; sprite set $09 db SPRITE_BIKER db SPRITE_BLACK_HAIR_BOY_1 db SPRITE_LAPRAS_GIVER db SPRITE_FISHER2 db SPRITE_ROCKER db SPRITE_HIKER db SPRITE_GAMBLER db SPRITE_FAT_BALD_GUY db SPRITE_BLACK_HAIR_BOY_2 db SPRITE_BALL db SPRITE_SNORLAX ; sprite set $0a db SPRITE_BIRD db SPRITE_BLACK_HAIR_BOY_1 db SPRITE_CLEFAIRY db SPRITE_FISHER2 db SPRITE_GAMBLER db SPRITE_SLOWBRO db SPRITE_SEEL db SPRITE_SWIMMER db SPRITE_BUG_CATCHER db SPRITE_BALL db SPRITE_OMANYTE SpriteSheetPointerTable: ; 0x17b27 ; SPRITE_RED dw RedSprite db $c0 ; byte count db BANK(RedSprite) ; SPRITE_BLUE dw BlueSprite db $c0 ; byte count db BANK(BlueSprite) ; SPRITE_OAK dw OakSprite db $c0 ; byte count db BANK(OakSprite) ; SPRITE_BUG_CATCHER dw BugCatcherSprite db $c0 ; byte count db BANK(BugCatcherSprite) ; SPRITE_SLOWBRO dw SlowbroSprite db $c0 ; byte count db BANK(SlowbroSprite) ; SPRITE_LASS dw LassSprite db $c0 ; byte count db BANK(LassSprite) ; SPRITE_BLACK_HAIR_BOY_1 dw BlackHairBoy1Sprite db $c0 ; byte count db BANK(BlackHairBoy1Sprite) ; SPRITE_LITTLE_GIRL dw LittleGirlSprite db $c0 ; byte count db BANK(LittleGirlSprite) ; SPRITE_BIRD dw BirdSprite db $c0 ; byte count db BANK(BirdSprite) ; SPRITE_FAT_BALD_GUY dw FatBaldGuySprite db $c0 ; byte count db BANK(FatBaldGuySprite) ; SPRITE_GAMBLER dw GamblerSprite db $c0 ; byte count db BANK(GamblerSprite) ; SPRITE_BLACK_HAIR_BOY_2 dw BlackHairBoy2Sprite db $c0 ; byte count db BANK(BlackHairBoy2Sprite) ; SPRITE_GIRL dw GirlSprite db $c0 ; byte count db BANK(GirlSprite) ; SPRITE_HIKER dw HikerSprite db $c0 ; byte count db BANK(HikerSprite) ; SPRITE_FOULARD_WOMAN dw FoulardWomanSprite db $c0 ; byte count db BANK(FoulardWomanSprite) ; SPRITE_GENTLEMAN dw GentlemanSprite db $c0 ; byte count db BANK(GentlemanSprite) ; SPRITE_DAISY dw DaisySprite db $c0 ; byte count db BANK(DaisySprite) ; SPRITE_BIKER dw BikerSprite db $c0 ; byte count db BANK(BikerSprite) ; SPRITE_SAILOR dw SailorSprite db $c0 ; byte count db BANK(SailorSprite) ; SPRITE_COOK dw CookSprite db $c0 ; byte count db BANK(CookSprite) ; SPRITE_BIKE_SHOP_GUY dw BikeShopGuySprite db $c0 ; byte count db BANK(BikeShopGuySprite) ; SPRITE_MR_FUJI dw MrFujiSprite db $c0 ; byte count db BANK(MrFujiSprite) ; SPRITE_GIOVANNI dw GiovanniSprite db $c0 ; byte count db BANK(GiovanniSprite) ; SPRITE_ROCKET dw RocketSprite db $c0 ; byte count db BANK(RocketSprite) ; SPRITE_MEDIUM dw MediumSprite db $c0 ; byte count db BANK(MediumSprite) ; SPRITE_WAITER dw WaiterSprite db $c0 ; byte count db BANK(WaiterSprite) ; SPRITE_ERIKA dw ErikaSprite db $c0 ; byte count db BANK(ErikaSprite) ; SPRITE_MOM_GEISHA dw MomGeishaSprite db $c0 ; byte count db BANK(MomGeishaSprite) ; SPRITE_BRUNETTE_GIRL dw BrunetteGirlSprite db $c0 ; byte count db BANK(BrunetteGirlSprite) ; SPRITE_LANCE dw LanceSprite db $c0 ; byte count db BANK(LanceSprite) ; SPRITE_OAK_SCIENTIST_AIDE dw OakAideSprite db $c0 ; byte count db BANK(OakAideSprite) ; SPRITE_OAK_AIDE dw OakAideSprite db $c0 ; byte count db BANK(OakAideSprite) ; SPRITE_ROCKER dw RockerSprite db $c0 ; byte count db BANK(RockerSprite) ; SPRITE_SWIMMER dw SwimmerSprite db $c0 ; byte count db BANK(SwimmerSprite) ; SPRITE_WHITE_PLAYER dw WhitePlayerSprite db $c0 ; byte count db BANK(WhitePlayerSprite) ; SPRITE_GYM_HELPER dw GymHelperSprite db $c0 ; byte count db BANK(GymHelperSprite) ; SPRITE_OLD_PERSON dw OldPersonSprite db $c0 ; byte count db BANK(OldPersonSprite) ; SPRITE_MART_GUY dw MartGuySprite db $c0 ; byte count db BANK(MartGuySprite) ; SPRITE_FISHER dw FisherSprite db $c0 ; byte count db BANK(FisherSprite) ; SPRITE_OLD_MEDIUM_WOMAN dw OldMediumWomanSprite db $c0 ; byte count db BANK(OldMediumWomanSprite) ; SPRITE_NURSE dw NurseSprite db $c0 ; byte count db BANK(NurseSprite) ; SPRITE_CABLE_CLUB_WOMAN dw CableClubWomanSprite db $c0 ; byte count db BANK(CableClubWomanSprite) ; SPRITE_MR_MASTERBALL dw MrMasterballSprite db $c0 ; byte count db BANK(MrMasterballSprite) ; SPRITE_LAPRAS_GIVER dw LaprasGiverSprite db $c0 ; byte count db BANK(LaprasGiverSprite) ; SPRITE_WARDEN dw WardenSprite db $c0 ; byte count db BANK(WardenSprite) ; SPRITE_SS_CAPTAIN dw SsCaptainSprite db $c0 ; byte count db BANK(SsCaptainSprite) ; SPRITE_FISHER2 dw Fisher2Sprite db $c0 ; byte count db BANK(Fisher2Sprite) ; SPRITE_BLACKBELT dw BlackbeltSprite db $c0 ; byte count db BANK(BlackbeltSprite) ; SPRITE_GUARD dw GuardSprite db $c0 ; byte count db BANK(GuardSprite) ; $32 dw GuardSprite db $c0 ; byte count db BANK(GuardSprite) ; SPRITE_MOM dw MomSprite db $c0 ; byte count db BANK(MomSprite) ; SPRITE_BALDING_GUY dw BaldingGuySprite db $c0 ; byte count db BANK(BaldingGuySprite) ; SPRITE_YOUNG_BOY dw YoungBoySprite db $c0 ; byte count db BANK(YoungBoySprite) ; SPRITE_GAMEBOY_KID dw GameboyKidSprite db $c0 ; byte count db BANK(GameboyKidSprite) ; SPRITE_GAMEBOY_KID_COPY dw GameboyKidSprite db $c0 ; byte count db BANK(GameboyKidSprite) ; SPRITE_CLEFAIRY dw ClefairySprite db $c0 ; byte count db BANK(ClefairySprite) ; SPRITE_AGATHA dw AgathaSprite db $c0 ; byte count db BANK(AgathaSprite) ; SPRITE_BRUNO dw BrunoSprite db $c0 ; byte count db BANK(BrunoSprite) ; SPRITE_LORELEI dw LoreleiSprite db $c0 ; byte count db BANK(LoreleiSprite) ; SPRITE_SEEL dw SeelSprite db $c0 ; byte count db BANK(SeelSprite) ; SPRITE_BALL dw BallSprite db $40 ; byte count db BANK(BallSprite) ; SPRITE_OMANYTE dw OmanyteSprite db $40 ; byte count db BANK(OmanyteSprite) ; SPRITE_BOULDER dw BoulderSprite db $40 ; byte count db BANK(BoulderSprite) ; SPRITE_PAPER_SHEET dw PaperSheetSprite db $40 ; byte count db BANK(PaperSheetSprite) ; SPRITE_BOOK_MAP_DEX dw BookMapDexSprite db $40 ; byte count db BANK(BookMapDexSprite) ; SPRITE_CLIPBOARD dw ClipboardSprite db $40 ; byte count db BANK(ClipboardSprite) ; SPRITE_SNORLAX dw SnorlaxSprite db $40 ; byte count db BANK(SnorlaxSprite) ; SPRITE_OLD_AMBER_COPY dw OldAmberSprite db $40 ; byte count db BANK(OldAmberSprite) ; SPRITE_OLD_AMBER dw OldAmberSprite db $40 ; byte count db BANK(OldAmberSprite) ; SPRITE_LYING_OLD_MAN_UNUSED_1 dw LyingOldManSprite db $40 ; byte count db BANK(LyingOldManSprite) ; SPRITE_LYING_OLD_MAN_UNUSED_2 dw LyingOldManSprite db $40 ; byte count db BANK(LyingOldManSprite) ; SPRITE_LYING_OLD_MAN dw LyingOldManSprite db $40 ; byte count db BANK(LyingOldManSprite) ; 0x17c47 INCBIN "baserom.gbc",$17c47,$17e1d - $17c47 UnnamedText_17e1d: ; 0x17e1d TX_FAR _UnnamedText_17e1d db $50 ; 0x17e1d + 5 bytes UnnamedText_17e22: ; 0x17e22 TX_FAR _UnnamedText_17e22 db $50 ; 0x17e22 + 5 bytes UnnamedText_17e27: ; 0x17e27 TX_FAR _UnnamedText_17e27 db $50 ; 0x17e27 + 5 bytes INCBIN "baserom.gbc",$17e2c,$17f23 - $17e2c UnnamedText_17f23: ; 0x17f23 TX_FAR _UnnamedText_17f23 db $50 ; 0x17f23 + 5 bytes UnnamedText_17f28: ; 0x17f28 TX_FAR _UnnamedText_17f28 db $50 ; 0x17f28 + 5 bytes UnnamedText_17f2d: ; 0x17f2d TX_FAR _UnnamedText_17f2d db $50 ; 0x17f2d + 5 bytes UnnamedText_17f32: ; 0x17f32 TX_FAR _UnnamedText_17f32 db $50 ; 0x17f32 + 5 bytes INCBIN "baserom.gbc",$17f37,40 SECTION "bank6",DATA,BANK[$6] CeladonCity_h: ; 0x18000 db $00 ; tileset db CELADON_CITY_HEIGHT, CELADON_CITY_WIDTH ; dimensions (y, x) dw CeladonCityBlocks, CeladonCityTexts, CeladonCityScript ; blocks, texts, scripts db WEST | EAST ; connections ; connections data db ROUTE_16 dw $4B95, $C7C1 ; pointers (connected, current) (strip) db $09, $14 ; bigness, width db $F8, $27 ; alignments (y, x) dw $C716 ; window db ROUTE_7 dw $4051, $C7DD ; pointers (connected, current) (strip) db $09, $0A ; bigness, width db $F8, $00 ; alignments (y, x) dw $C6F9 ; window ; end connections data dw CeladonCityObject ; objects CeladonCityObject: ; 0x18022 (size=189) db $f ; border tile db $d ; warps db $d, $8, $0, CELADON_MART_1 db $d, $a, $2, CELADON_MART_1 db $9, $18, $0, CELADON_MANSION_1 db $3, $18, $2, CELADON_MANSION_1 db $3, $19, $2, CELADON_MANSION_1 db $9, $29, $0, CELADON_POKECENTER db $1b, $c, $0, CELADON_GYM db $13, $1c, $0, GAME_CORNER db $13, $27, $0, CELADON_MART_5 db $13, $21, $0, CELADONPRIZE_ROOM db $1b, $1f, $0, CELADON_DINER db $1b, $23, $0, CELADON_HOUSE db $1b, $2b, $0, CELADON_HOTEL db $9 ; signs db $f, $1b, $a ; CeladonCityText10 db $f, $13, $b ; CeladonCityText11 db $9, $2a, $c ; CeladonCityText12 db $1d, $d, $d ; CeladonCityText13 db $9, $15, $e ; CeladonCityText14 db $d, $c, $f ; CeladonCityText15 db $15, $27, $10 ; CeladonCityText16 db $15, $21, $11 ; CeladonCityText17 db $15, $1b, $12 ; CeladonCityText18 db $9 ; people db SPRITE_LITTLE_GIRL, $11 + 4, $8 + 4, $fe, $0, $1 ; person db SPRITE_OLD_PERSON, $1c + 4, $b + 4, $ff, $d1, $2 ; person db SPRITE_GIRL, $13 + 4, $e + 4, $fe, $1, $3 ; person db SPRITE_OLD_PERSON, $16 + 4, $19 + 4, $ff, $d0, $4 ; person db SPRITE_OLD_PERSON, $10 + 4, $16 + 4, $ff, $d0, $5 ; person db SPRITE_FISHER2, $c + 4, $20 + 4, $ff, $d2, $6 ; person db SPRITE_SLOWBRO, $c + 4, $1e + 4, $ff, $d3, $7 ; person db SPRITE_ROCKET, $1d + 4, $20 + 4, $fe, $2, $8 ; person db SPRITE_ROCKET, $e + 4, $2a + 4, $fe, $2, $9 ; person ; warp-to EVENT_DISP $19, $d, $8 ; CELADON_MART_1 EVENT_DISP $19, $d, $a ; CELADON_MART_1 EVENT_DISP $19, $9, $18 ; CELADON_MANSION_1 EVENT_DISP $19, $3, $18 ; CELADON_MANSION_1 EVENT_DISP $19, $3, $19 ; CELADON_MANSION_1 EVENT_DISP $19, $9, $29 ; CELADON_POKECENTER EVENT_DISP $19, $1b, $c ; CELADON_GYM EVENT_DISP $19, $13, $1c ; GAME_CORNER EVENT_DISP $19, $13, $27 ; CELADON_MART_5 EVENT_DISP $19, $13, $21 ; CELADONPRIZE_ROOM EVENT_DISP $19, $1b, $1f ; CELADON_DINER EVENT_DISP $19, $1b, $23 ; CELADON_HOUSE EVENT_DISP $19, $1b, $2b ; CELADON_HOTEL CeladonCityBlocks: ; 0x180df 450 INCBIN "maps/celadoncity.blk" PalletTown_h: ; 0x182a1 db $00 ; tileset db PALLET_TOWN_HEIGHT, PALLET_TOWN_WIDTH ; dimensions dw PalletTownBlocks, PalletTownTexts, PalletTownScript db NORTH | SOUTH ; connections db ROUTE_1 dw Route1Blocks + ((ROUTE_1_WIDTH * 15) + 0) ;y, x Strip Starting Point dw $C6EB + 0 ;Strip X-Offset to current map db ROUTE_1_WIDTH ;"Bigness" (Unsure) ;Something to do with MapData db ROUTE_1_WIDTH ;"Map Width" (Unsure) ;Something to do with TileSet db (ROUTE_1_HEIGHT * 2) - 1 ;Player's new Y-Coordinates db (0 * -2) ;Player's new X-Coordinates dw $C6E9 + ROUTE_1_HEIGHT * (ROUTE_1_WIDTH + 6) ;New UL Block Pos (Window) db ROUTE_21 dw Route21Blocks,$C7AB ; pointers db $0A,$0A ; bigness, width db $00,$00 ; alignments dw $C6F9 ; window dw PalletTownObject PalletTownObject: ; 0x182c3 (size=58) db $b ; border tile db $3 ; warps db $5, $5, $0, REDS_HOUSE_1F db $5, $d, $0, BLUES_HOUSE db $b, $c, $1, OAKS_LAB db $4 ; signs db $d, $d, $4 ; PalletTownText4 db $9, $7, $5 ; PalletTownText5 db $5, $3, $6 ; PalletTownText6 db $5, $b, $7 ; PalletTownText7 db $3 ; people db SPRITE_OAK, $5 + 4, $8 + 4, $ff, $ff, $1 ; person db SPRITE_GIRL, $8 + 4, $3 + 4, $fe, $0, $2 ; person db SPRITE_FISHER2, $e + 4, $b + 4, $fe, $0, $3 ; person ; warp-to EVENT_DISP $a, $5, $5 ; REDS_HOUSE_1F EVENT_DISP $a, $5, $d ; BLUES_HOUSE EVENT_DISP $a, $b, $c ; OAKS_LAB PalletTownBlocks: ; 0x182fd INCBIN "maps/pallettown.blk" ViridianCity_h: ; 0x18357 to 0x18384 (45 bytes) (bank=6) (id=1) db $00 ; tileset db VIRIDIAN_CITY_HEIGHT, VIRIDIAN_CITY_WIDTH ; dimensions (y, x) dw ViridianCityBlocks, ViridianCityTexts, ViridianCityScript ; blocks, texts, scripts db NORTH | SOUTH | WEST ; connections ; connections data db ROUTE_2 dw Route2Blocks + (ROUTE_2_HEIGHT - 3) * ROUTE_2_WIDTH ; connection strip location dw $C6EB + 5 ; current map position db ROUTE_2_WIDTH, ROUTE_2_WIDTH ; bigness, width db (ROUTE_2_HEIGHT * 2) - 1, (5 * -2) ; alignments (y, x) dw $C6E9 + ROUTE_2_HEIGHT * (ROUTE_2_WIDTH + 6) ; window db ROUTE_1 dw Route1Blocks ; connection strip location dw $C6EB + (VIRIDIAN_CITY_HEIGHT + 3) * (VIRIDIAN_CITY_WIDTH + 6) + 5 ; current map position db ROUTE_1_WIDTH, ROUTE_1_WIDTH ; bigness, width db 0, (5 * -2) ; alignments (y, x) dw $C6EF + ROUTE_1_WIDTH ; window db ROUTE_22 dw Route22Blocks - 3 + (ROUTE_22_WIDTH) ; connection strip location dw $C6E8 + (VIRIDIAN_CITY_WIDTH + 6) * (4 + 3) ; current map position db ROUTE_22_HEIGHT, ROUTE_22_WIDTH ; bigness, width db (4 * -2), (ROUTE_22_WIDTH * 2) - 1 ; alignments (y, x) dw $C6EE + 2 * ROUTE_22_WIDTH ; window ; end connections data dw ViridianCityObject ; objects ViridianCityObject: ; 0x18384 (size=104) db $f ; border tile db $5 ; warps db $19, $17, $0, VIRIDIAN_POKECENTER db $13, $1d, $0, VIRIDIAN_MART db $f, $15, $0, VIRIDIAN_SCHOOL db $9, $15, $0, VIRIDIAN_HOUSE db $7, $20, $0, VIRIDIAN_GYM db $6 ; signs db $11, $11, $8 ; ViridianCityText8 db $1, $13, $9 ; ViridianCityText9 db $1d, $15, $a ; ViridianCityText10 db $13, $1e, $b ; ViridianCityText11 db $19, $18, $c ; ViridianCityText12 db $7, $1b, $d ; ViridianCityText13 db $7 ; people db SPRITE_BUG_CATCHER, $14 + 4, $d + 4, $fe, $0, $1 ; person db SPRITE_GAMBLER, $8 + 4, $1e + 4, $ff, $ff, $2 ; person db SPRITE_BUG_CATCHER, $19 + 4, $1e + 4, $fe, $0, $3 ; person db SPRITE_GIRL, $9 + 4, $11 + 4, $ff, $d3, $4 ; person db SPRITE_LYING_OLD_MAN, $9 + 4, $12 + 4, $ff, $ff, $5 ; person db SPRITE_FISHER2, $17 + 4, $6 + 4, $ff, $d0, $6 ; person db SPRITE_GAMBLER, $5 + 4, $11 + 4, $fe, $2, $7 ; person ; warp-to EVENT_DISP $14, $19, $17 ; VIRIDIAN_POKECENTER EVENT_DISP $14, $13, $1d ; VIRIDIAN_MART EVENT_DISP $14, $f, $15 ; VIRIDIAN_SCHOOL EVENT_DISP $14, $9, $15 ; VIRIDIAN_HOUSE EVENT_DISP $14, $7, $20 ; VIRIDIAN_GYM ViridianCityBlocks: ; 0x183ec 360 INCBIN "maps/viridiancity.blk" PewterCity_h: ; 0x18554 to 0x18576 (34 bytes) (bank=6) (id=2) db $00 ; tileset db PEWTER_CITY_HEIGHT, PEWTER_CITY_WIDTH ; dimensions (y, x) dw PewterCityBlocks, PewterCityTexts, PewterCityScript ; blocks, texts, scripts db SOUTH | EAST ; connections ; connections data db ROUTE_2 dw Route2Blocks ; connection strip location dw $C6EB + (PEWTER_CITY_HEIGHT + 3) * (PEWTER_CITY_WIDTH + 6) + 5 ; current map position db ROUTE_2_WIDTH, ROUTE_2_WIDTH ; bigness, width db 0, (5 * -2) ; alignments (y, x) dw $C6EF + ROUTE_2_WIDTH ; window db ROUTE_3 dw Route3Blocks + (ROUTE_3_WIDTH * 0) ; connection strip location dw $C6E5 + (PEWTER_CITY_WIDTH + 6) * (4 + 4) ; current map position db ROUTE_3_HEIGHT, ROUTE_3_WIDTH ; bigness, width db (4 * -2), 0 ; alignments (y, x) dw $C6EF + ROUTE_3_WIDTH ; window ; end connections data dw PewterCityObject ; objects ; 0x18576 db $0 PewterCityObject: ; 0x18577 (size=111) db $a ; border tile db $7 ; warps db $7, $e, $0, MUSEUM_1F db $5, $13, $2, MUSEUM_1F db $11, $10, $0, PEWTER_GYM db $d, $1d, $0, PEWTER_HOUSE_1 db $11, $17, $0, PEWTER_MART db $1d, $7, $0, PEWTER_HOUSE_2 db $19, $d, $0, PEWTER_POKECENTER db $7 ; signs db $1d, $13, $6 ; PewterCityText6 db $13, $21, $7 ; PewterCityText7 db $11, $18, $8 ; PewterCityText8 db $19, $e, $9 ; PewterCityText9 db $9, $f, $a ; PewterCityText10 db $11, $b, $b ; PewterCityText11 db $17, $19, $c ; PewterCityText12 db $5 ; people db SPRITE_LASS, $f + 4, $8 + 4, $ff, $ff, $1 ; person db SPRITE_BLACK_HAIR_BOY_1, $19 + 4, $11 + 4, $ff, $ff, $2 ; person db SPRITE_BLACK_HAIR_BOY_2, $11 + 4, $1b + 4, $ff, $ff, $3 ; person db SPRITE_BLACK_HAIR_BOY_2, $19 + 4, $1a + 4, $fe, $2, $4 ; person db SPRITE_BUG_CATCHER, $10 + 4, $23 + 4, $ff, $d0, $5 ; person ; warp-to EVENT_DISP $14, $7, $e ; MUSEUM_1F EVENT_DISP $14, $5, $13 ; MUSEUM_1F EVENT_DISP $14, $11, $10 ; PEWTER_GYM EVENT_DISP $14, $d, $1d ; PEWTER_HOUSE_1 EVENT_DISP $14, $11, $17 ; PEWTER_MART EVENT_DISP $14, $1d, $7 ; PEWTER_HOUSE_2 EVENT_DISP $14, $19, $d ; PEWTER_POKECENTER PewterCityBlocks: ; 0x185e6 360 INCBIN "maps/pewtercity.blk" CeruleanCity_h: ; 0x1874e to 0x18786 (56 bytes) (bank=6) (id=3) db $00 ; tileset db CERULEAN_CITY_HEIGHT, CERULEAN_CITY_WIDTH ; dimensions (y, x) dw CeruleanCityBlocks, CeruleanCityTexts, CeruleanCityScript ; blocks, texts, scripts db NORTH | SOUTH | WEST | EAST ; connections ; connections data db ROUTE_24 dw Route24Blocks + (ROUTE_24_HEIGHT - 3) * ROUTE_24_WIDTH ; connection strip location dw $C6EB + 5 ; current map position db ROUTE_24_WIDTH, ROUTE_24_WIDTH ; bigness, width db (ROUTE_24_HEIGHT * 2) - 1, (5 * -2) ; alignments (y, x) dw $C6E9 + ROUTE_24_HEIGHT * (ROUTE_24_WIDTH + 6) ; window db ROUTE_5 dw Route5Blocks ; connection strip location dw $C6EB + (CERULEAN_CITY_HEIGHT + 3) * (CERULEAN_CITY_WIDTH + 6) + 5 ; current map position db ROUTE_5_WIDTH, ROUTE_5_WIDTH ; bigness, width db 0, (5 * -2) ; alignments (y, x) dw $C6EF + ROUTE_5_WIDTH ; window db ROUTE_4 dw Route4Blocks - 3 + (ROUTE_4_WIDTH) ; connection strip location dw $C6E8 + (CERULEAN_CITY_WIDTH + 6) * (4 + 3) ; current map position db ROUTE_4_HEIGHT, ROUTE_4_WIDTH ; bigness, width db (4 * -2), (ROUTE_4_WIDTH * 2) - 1 ; alignments (y, x) dw $C6EE + 2 * ROUTE_4_WIDTH ; window db ROUTE_9 dw Route9Blocks + (ROUTE_9_WIDTH * 0) ; connection strip location dw $C6E5 + (CERULEAN_CITY_WIDTH + 6) * (4 + 4) ; current map position db ROUTE_9_HEIGHT, ROUTE_9_WIDTH ; bigness, width db (4 * -2), 0 ; alignments (y, x) dw $C6EF + ROUTE_9_WIDTH ; window ; end connections data dw CeruleanCityObject ; objects CeruleanCityObject: ; 0x18786 (size=170) db $f ; border tile db $a ; warps db $b, $1b, $0, TRASHED_HOUSE db $f, $d, $0, CERULEAN_HOUSE db $11, $13, $0, CERULEAN_POKECENTER db $13, $1e, $0, CERULEAN_GYM db $19, $d, $0, BIKE_SHOP db $19, $19, $0, CERULEAN_MART db $b, $4, $0, UNKNOWN_DUNGEON_1 db $9, $1b, $2, TRASHED_HOUSE db $b, $9, $1, CERULEAN_HOUSE_3 db $9, $9, $0, CERULEAN_HOUSE_3 db $6 ; signs db $13, $17, $c ; CeruleanCityText12 db $1d, $11, $d ; CeruleanCityText13 db $19, $1a, $e ; CeruleanCityText14 db $11, $14, $f ; CeruleanCityText15 db $19, $b, $10 ; CeruleanCityText16 db $15, $1b, $11 ; CeruleanCityText17 db $b ; people db SPRITE_BLUE, $2 + 4, $14 + 4, $ff, $d0, $1 ; person db SPRITE_ROCKET, $8 + 4, $1e + 4, $ff, $ff, $42, ROCKET + $C8, $5 ; trainer db SPRITE_BLACK_HAIR_BOY_1, $14 + 4, $1f + 4, $ff, $d0, $3 ; person db SPRITE_BLACK_HAIR_BOY_2, $12 + 4, $f + 4, $fe, $1, $4 ; person db SPRITE_BLACK_HAIR_BOY_2, $15 + 4, $9 + 4, $fe, $2, $5 ; person db SPRITE_GUARD, $c + 4, $1c + 4, $ff, $d0, $6 ; person db SPRITE_LASS, $1a + 4, $1d + 4, $ff, $d2, $7 ; person db SPRITE_SLOWBRO, $1a + 4, $1c + 4, $ff, $d0, $8 ; person db SPRITE_LASS, $1b + 4, $9 + 4, $fe, $2, $9 ; person db SPRITE_BLACK_HAIR_BOY_2, $c + 4, $4 + 4, $ff, $d0, $a ; person db SPRITE_GUARD, $c + 4, $1b + 4, $ff, $d0, $b ; person ; warp-to EVENT_DISP $14, $b, $1b ; TRASHED_HOUSE EVENT_DISP $14, $f, $d ; CERULEAN_HOUSE EVENT_DISP $14, $11, $13 ; CERULEAN_POKECENTER EVENT_DISP $14, $13, $1e ; CERULEAN_GYM EVENT_DISP $14, $19, $d ; BIKE_SHOP EVENT_DISP $14, $19, $19 ; CERULEAN_MART EVENT_DISP $14, $b, $4 ; UNKNOWN_DUNGEON_1 EVENT_DISP $14, $9, $1b ; TRASHED_HOUSE EVENT_DISP $14, $b, $9 ; CERULEAN_HOUSE_3 EVENT_DISP $14, $9, $9 ; CERULEAN_HOUSE_3 CeruleanCityBlocks: ; 0x18830 360 INCBIN "maps/ceruleancity.blk" VermilionCity_h: ; 0x18998 to 0x189ba (34 bytes) (bank=6) (id=5) db $00 ; tileset db VERMILION_CITY_HEIGHT, VERMILION_CITY_WIDTH ; dimensions (y, x) dw VermilionCityBlocks, VermilionCityTexts, VermilionCityScript ; blocks, texts, scripts db NORTH | EAST ; connections ; connections data db ROUTE_6 dw Route6Blocks + (ROUTE_6_HEIGHT - 3) * ROUTE_6_WIDTH ; connection strip location dw $C6EB + 5 ; current map position db ROUTE_6_WIDTH, ROUTE_6_WIDTH ; bigness, width db (ROUTE_6_HEIGHT * 2) - 1, (5 * -2) ; alignments (y, x) dw $C6E9 + ROUTE_6_HEIGHT * (ROUTE_6_WIDTH + 6) ; window db ROUTE_11 dw Route11Blocks + (ROUTE_11_WIDTH * 0) ; connection strip location dw $C6E5 + (VERMILION_CITY_WIDTH + 6) * (4 + 4) ; current map position db ROUTE_11_HEIGHT, ROUTE_11_WIDTH ; bigness, width db (4 * -2), 0 ; alignments (y, x) dw $C6EF + ROUTE_11_WIDTH ; window ; end connections data dw VermilionCityObject ; objects VermilionCityObject: ; 0x189ba (size=133) db $43 ; border tile db $9 ; warps db $3, $b, $0, VERMILION_POKECENTER db $d, $9, $0, POKEMON_FAN_CLUB db $d, $17, $0, VERMILION_MART db $13, $c, $0, VERMILION_GYM db $13, $17, $0, VERMILION_HOUSE_1 db $1f, $12, $0, VERMILION_DOCK db $1f, $13, $0, VERMILION_DOCK db $d, $f, $0, VERMILION_HOUSE_3 db $3, $7, $0, VERMILION_HOUSE_2 db $7 ; signs db $3, $1b, $7 ; VermilionCityText7 db $d, $25, $8 ; VermilionCityText8 db $d, $18, $9 ; VermilionCityText9 db $3, $c, $a ; VermilionCityText10 db $d, $7, $b ; VermilionCityText11 db $13, $7, $c ; VermilionCityText12 db $f, $1d, $d ; VermilionCityText13 db $6 ; people db SPRITE_FOULARD_WOMAN, $7 + 4, $13 + 4, $fe, $2, $1 ; person db SPRITE_GAMBLER, $6 + 4, $e + 4, $ff, $ff, $2 ; person db SPRITE_SAILOR, $1e + 4, $13 + 4, $ff, $d1, $3 ; person db SPRITE_GAMBLER, $7 + 4, $1e + 4, $ff, $ff, $4 ; person db SPRITE_SLOWBRO, $9 + 4, $1d + 4, $fe, $1, $5 ; person db SPRITE_SAILOR, $1b + 4, $19 + 4, $fe, $2, $6 ; person ; warp-to EVENT_DISP $14, $3, $b ; VERMILION_POKECENTER EVENT_DISP $14, $d, $9 ; POKEMON_FAN_CLUB EVENT_DISP $14, $d, $17 ; VERMILION_MART EVENT_DISP $14, $13, $c ; VERMILION_GYM EVENT_DISP $14, $13, $17 ; VERMILION_HOUSE_1 EVENT_DISP $14, $1f, $12 ; VERMILION_DOCK EVENT_DISP $14, $1f, $13 ; VERMILION_DOCK EVENT_DISP $14, $d, $f ; VERMILION_HOUSE_3 EVENT_DISP $14, $3, $7 ; VERMILION_HOUSE_2 VermilionCityBlocks: ; 0x18a3f 360 INCBIN "maps/vermilioncity.blk" FuchsiaCity_h: ; 0x18ba7 to 0x18bd4 (45 bytes) (bank=6) (id=7) db $00 ; tileset db FUCHSIA_CITY_HEIGHT, FUCHSIA_CITY_WIDTH ; dimensions (y, x) dw FuchsiaCityBlocks, FuchsiaCityTexts, FuchsiaCityScript ; blocks, texts, scripts db SOUTH | WEST | EAST ; connections ; connections data db ROUTE_19 dw Route19Blocks ; connection strip location dw $C6EB + (FUCHSIA_CITY_HEIGHT + 3) * (FUCHSIA_CITY_WIDTH + 6) + 5 ; current map position db ROUTE_19_WIDTH, ROUTE_19_WIDTH ; bigness, width db 0, (5 * -2) ; alignments (y, x) dw $C6EF + ROUTE_19_WIDTH ; window db ROUTE_18 dw Route18Blocks - 3 + (ROUTE_18_WIDTH) ; connection strip location dw $C6E8 + (FUCHSIA_CITY_WIDTH + 6) * (4 + 3) ; current map position db ROUTE_18_HEIGHT, ROUTE_18_WIDTH ; bigness, width db (4 * -2), (ROUTE_18_WIDTH * 2) - 1 ; alignments (y, x) dw $C6EE + 2 * ROUTE_18_WIDTH ; window db ROUTE_15 dw Route15Blocks + (ROUTE_15_WIDTH * 0) ; connection strip location dw $C6E5 + (FUCHSIA_CITY_WIDTH + 6) * (4 + 4) ; current map position db ROUTE_15_HEIGHT, ROUTE_15_WIDTH ; bigness, width db (4 * -2), 0 ; alignments (y, x) dw $C6EF + ROUTE_15_WIDTH ; window ; end connections data dw FuchsiaCityObject ; objects FuchsiaCityObject: ; 0x18bd4 (size=178) db $f ; border tile db $9 ; warps db $d, $5, $0, FUCHSIA_MART db $1b, $b, $0, FUCHSIA_HOUSE_1 db $1b, $13, $0, FUCHSIA_POKECENTER db $1b, $1b, $0, FUCHSIA_HOUSE_2 db $3, $12, $0, SAFARIZONEENTRANCE db $1b, $5, $0, FUCHSIA_GYM db $d, $16, $0, FUCHSIAMEETINGROOM db $1b, $1f, $1, FUCHSIA_HOUSE_3 db $18, $1f, $0, FUCHSIA_HOUSE_3 db $e ; signs db $17, $f, $b ; FuchsiaCityText11 db $f, $19, $c ; FuchsiaCityText12 db $5, $11, $d ; FuchsiaCityText13 db $d, $6, $e ; FuchsiaCityText14 db $1b, $14, $f ; FuchsiaCityText15 db $1d, $1b, $10 ; FuchsiaCityText16 db $f, $15, $11 ; FuchsiaCityText17 db $1d, $5, $12 ; FuchsiaCityText18 db $7, $21, $13 ; FuchsiaCityText19 db $7, $1b, $14 ; FuchsiaCityText20 db $7, $d, $15 ; FuchsiaCityText21 db $d, $1f, $16 ; FuchsiaCityText22 db $f, $d, $17 ; FuchsiaCityText23 db $7, $7, $18 ; FuchsiaCityText24 db $a ; people db SPRITE_BUG_CATCHER, $c + 4, $a + 4, $fe, $2, $1 ; person db SPRITE_GAMBLER, $11 + 4, $1c + 4, $fe, $2, $2 ; person db SPRITE_FISHER2, $e + 4, $1e + 4, $ff, $d0, $3 ; person db SPRITE_BUG_CATCHER, $8 + 4, $18 + 4, $ff, $d1, $4 ; person db SPRITE_CLEFAIRY, $5 + 4, $1f + 4, $fe, $0, $5 ; person db SPRITE_BALL, $6 + 4, $19 + 4, $ff, $ff, $6 ; person db SPRITE_SLOWBRO, $6 + 4, $c + 4, $fe, $2, $7 ; person db SPRITE_SLOWBRO, $c + 4, $1e + 4, $fe, $2, $8 ; person db SPRITE_SEEL, $11 + 4, $8 + 4, $fe, $0, $9 ; person db SPRITE_OMANYTE, $5 + 4, $6 + 4, $ff, $ff, $a ; person ; warp-to EVENT_DISP $14, $d, $5 ; FUCHSIA_MART EVENT_DISP $14, $1b, $b ; FUCHSIA_HOUSE_1 EVENT_DISP $14, $1b, $13 ; FUCHSIA_POKECENTER EVENT_DISP $14, $1b, $1b ; FUCHSIA_HOUSE_2 EVENT_DISP $14, $3, $12 ; SAFARIZONEENTRANCE EVENT_DISP $14, $1b, $5 ; FUCHSIA_GYM EVENT_DISP $14, $d, $16 ; FUCHSIAMEETINGROOM EVENT_DISP $14, $1b, $1f ; FUCHSIA_HOUSE_3 EVENT_DISP $14, $18, $1f ; FUCHSIA_HOUSE_3 FuchsiaCityBlocks: ; 0x18c86 360 INCBIN "maps/fuchsiacity.blk" INCBIN "baserom.gbc",$18dee,$6d PalletTownScript: ld a,[$D74B] bit 4,a jr z,.next\@ ld hl,$D747 set 6,[hl] .next\@ call $3C3C ld hl,PalletTownScriptPointers ld a,[$D5F1] jp $3D97 ; 0x18e73 PalletTownScriptPointers: dw PalletTownScript1,PalletTownScript2,PalletTownScript3,PalletTownScript4,PalletTownScript5,PalletTownScript6,PalletTownScript7 PalletTownScript1: ld a,[$D747] bit 0,a ret nz ld a,[W_YCOORD] cp 1 ; is player near north exit? ret nz xor a ld [$FFB4],a ld a,4 ld [$D528],a ld a,$FF call $23B1 ; stop music ld a,2 ld c,a ; song bank ld a,$DB ; “oak appears” music call $23A1 ; plays music ld a,$FC ld [$CD6B],a ld hl,$D74B set 7,[hl] ; trigger the next script ld a,1 ld [$D5F1],a ret PalletTownScript2: xor a ld [$CF0D],a ld a,1 ld [$FF8C],a call $2920 ld a,$FF ld [$CD6B],a ld a,0 ld [$CC4D],a ld a,$15 call Predef ; trigger the next script ld a,2 ld [$D5F1],a ret PalletTownScript3: ld a,1 ld [$FF8C],a ld a,4 ld [$FF8D],a call $34A6 call Delay3 ld a,1 ld [W_YCOORD],a ld a,1 ld [$FF9B],a ld a,1 swap a ld [$FF95],a ld a,$22 call Predef ld hl,$FF95 dec [hl] ld a,$20 call Predef ; load Oak’s movement into $CC97 ld de,$CC97 ld a,1 ; oak ld [$FF8C],a call MoveSprite ld a,$FF ld [$CD6B],a ; trigger the next script ld a,3 ld [$D5F1],a ret PalletTownScript4: ld a,[$D730] bit 0,a ret nz xor a ld [$C109],a ld a,1 ld [$CF0D],a ld a,$FC ld [$CD6B],a ld a,1 ld [$FF8C],a call $2920 ld a,$FF ld [$CD6B],a ld a,1 ld [$CF13],a xor a ld [$CF10],a ld a,1 ld [$CC57],a ld a,[$FFB8] ld [$CC58],a ; trigger the next script ld a,4 ld [$D5F1],a ret PalletTownScript5: ld a,[$CC57] and a ret nz ; trigger the next script ld a,5 ld [$D5F1],a ret PalletTownScript6: ld a,[$D74A] bit 2,a jr nz,.next\@ and 3 cp 3 jr nz,.next\@ ld hl,$D74A set 2,[hl] ld a,$27 ld [$CC4D],a ld a,$11 call Predef ld a,$28 ld [$CC4D],a ld a,$15 jp Predef .next\@ ld a,[$D74B] bit 4,a ret z ld hl,$D74B set 6,[hl] PalletTownScript7: ret PalletTownTexts: ; 0x18f88 dw PalletTownText1,PalletTownText2,PalletTownText3,PalletTownText4,PalletTownText5,PalletTownText6,PalletTownText7 PalletTownText1: ; 4F96 0x18f96 db 8 ld a,[$CF0D] and a jr nz,.next\@ ld a,1 ld [$CC3C],a ld hl,OakAppearsText jr .done\@ .next\@ ld hl,OakWalksUpText .done\@ call PrintText jp TextScriptEnd OakAppearsText: TX_FAR _OakAppearsText db 8 ld c,10 call DelayFrames xor a ld [$CD4F],a ld [$CD50],a ld a,$4C call Predef ; display ! over head ld a,4 ld [$D528],a jp TextScriptEnd OakWalksUpText: TX_FAR _OakWalksUpText db "@" PalletTownText2: ; 0x18fd3 girl TX_FAR _PalletTownText2 ; dc 42 29 pointing to 0xa42dc db "@" ; 0x18fd8 PalletTownText3: ; 0x18fd8 fat man TX_FAR _PalletTownText3 db "@" ; 0x18fdd PalletTownText4: ; 0x18fdd sign by lab TX_FAR _PalletTownText4 db "@" ; 0x18fe2 PalletTownText5: ; 0x18fe2 sign by fence TX_FAR _PalletTownText5 db "@" ; 0x18fe7 PalletTownText6: ; 0x18fe7 sign by Red’s house TX_FAR _PalletTownText6 db "@" ; 0x18fec PalletTownText7: ; 0x18fec sign by Blue’s house TX_FAR _PalletTownText7 db "@" ViridianCityScript: ; 0x18ff1 call $3c3c ld hl, ViridianCityScripts ld a, [$d5f4] jp $3d97 ; 0x18ffd ViridianCityScripts: ; 0x18ffd dw ViridianCityScript0 INCBIN "baserom.gbc",$18fff,$6 ViridianCityScript0: ; 0x19005 call $500b jp $503d ; 0x1900b INCBIN "baserom.gbc",$1900b,$d9 ViridianCityTexts: ; 0x190e4 dw ViridianCityText1, ViridianCityText2, ViridianCityText3, ViridianCityText4, ViridianCityText5, ViridianCityText6, ViridianCityText7, ViridianCityText8, ViridianCityText9, ViridianCityText10, ViridianCityText11, ViridianCityText12, ViridianCityText13, ViridianCityText14, ViridianCityText15 ViridianCityText1: ; 0x19102 TX_FAR _ViridianCityText1 db $50 ViridianCityText2: ; 0x19107 db $08 ; asm ld a, [$d356] cp $7f ld hl, UnnamedText_19127 jr z, .asm_ae9fe ; 0x19110 ld a, [$d751] bit 1, a jr nz, .asm_ae9fe ; 0x19117 ld hl, UnnamedText_19122 .asm_ae9fe ; 0x1911c call PrintText jp TextScriptEnd UnnamedText_19122: ; 0x19122 TX_FAR _UnnamedText_19122 db $50 ; 0x19122 + 5 bytes UnnamedText_19127: ; 0x19127 TX_FAR _UnnamedText_19127 db $50 ; 0x19127 + 5 bytes ViridianCityText3: ; 0x1912c db $08 ; asm ld hl, UnnamedText_1914d call PrintText call $35ec ld a, [$cc26] and a jr nz, .asm_6dfea ; 0x1913a ld hl, UnnamedText_19157 call PrintText jr .asm_d611f ; 0x19142 .asm_6dfea ; 0x19144 ld hl, UnnamedText_19152 call PrintText .asm_d611f ; 0x1914a jp TextScriptEnd UnnamedText_1914d: ; 0x1914d TX_FAR _UnnamedText_1914d db $50 ; 0x1914d + 5 bytes UnnamedText_19152: ; 0x19152 TX_FAR _UnnamedText_19152 db $50 ; 0x19152 + 5 bytes UnnamedText_19157: ; 0x19157 TX_FAR _UnnamedText_19157 db $50 ; 0x19157 + 5 bytes ViridianCityText4: ; 0x1915c db $08 ; asm ld a, [$d74b] bit 5, a jr nz, .asm_83894 ; 0x19162 ld hl, UnnamedText_19175 call PrintText jr .asm_700a6 ; 0x1916a .asm_83894 ; 0x1916c ld hl, UnnamedText_1917a call PrintText .asm_700a6 ; 0x19172 jp TextScriptEnd UnnamedText_19175: ; 0x19175 TX_FAR _UnnamedText_19175 db $50 ; 0x19175 + 5 bytes UnnamedText_1917a: ; 0x1917a TX_FAR _UnnamedText_1917a db $50 ; 0x1917a + 5 bytes ViridianCityText5: ; 0x1917f db $08 ; asm ld hl, UnnamedText_19191 call PrintText call $50cf ld a, $3 ld [$d5f4], a jp TextScriptEnd UnnamedText_19191: ; 0x19191 TX_FAR _UnnamedText_19191 db $50 ; 0x19191 + 5 bytes ViridianCityText6: ; 0x19196 db $08 ; asm ld a, [$d74c] bit 1, a jr nz, .asm_4e5a0 ; 0x1919c ld hl, UnnamedText_191ca call PrintText ld bc, (TM_42 << 8) | 1 call GiveItem jr nc, .asm_b655e ; 0x191aa ld hl, ReceivedTM42Text call PrintText ld hl, $d74c set 1, [hl] jr .asm_3c73c ; 0x191b7 .asm_b655e ; 0x191b9 ld hl, TM42NoRoomText call PrintText jr .asm_3c73c ; 0x191bf .asm_4e5a0 ; 0x191c1 ld hl, TM42Explanation call PrintText .asm_3c73c ; 0x191c7 jp TextScriptEnd UnnamedText_191ca: ; 0x191ca TX_FAR _UnnamedText_191ca db $50 ; 0x191ca + 5 bytes ReceivedTM42Text: ; 0x191cf TX_FAR _ReceivedTM42Text ; 0xa469a db $10, $50 ; 0x191cf + 6 bytes = 0x191d5 TM42Explanation: ; 0x191d5 TX_FAR _TM42Explanation db $50 ; 0x191d5 + 5 bytes TM42NoRoomText: ; 0x191da TX_FAR _TM42NoRoomText db $50 ; 0x191da + 5 bytes ViridianCityText7: ; 0x191df db $08 ; asm ld hl, UnnamedText_1920a call PrintText ld c, $2 call $3739 call $35ec ld a, [$cc26] and a jr z, .asm_42f68 ; 0x191f2 ld hl, UnnamedText_1920f call PrintText ld a, $1 ld [$d5f4], a jr .asm_2413a ; 0x191ff .asm_42f68 ; 0x19201 ld hl, UnnamedText_19214 call PrintText .asm_2413a ; 0x19207 jp TextScriptEnd UnnamedText_1920a: ; 0x1920a TX_FAR _UnnamedText_1920a db $50 ; 0x1920a + 5 bytes UnnamedText_1920f: ; 0x1920f TX_FAR _UnnamedText_1920f db $50 ; 0x1920f + 5 bytes UnnamedText_19214: ; 0x19214 TX_FAR _UnnamedText_19214 db $50 ; 0x19214 + 5 bytes ViridianCityText15: ; 0x19219 TX_FAR _UnnamedText_19219 db $50 ; 0x19219 + 5 bytes ViridianCityText8: ; 0x1921e TX_FAR _ViridianCityText8 db $50 ViridianCityText9: ; 0x19223 TX_FAR _ViridianCityText9 db $50 ViridianCityText10: ; 0x19228 TX_FAR _ViridianCityText10 db $50 ViridianCityText13: ; 0x1922d TX_FAR _ViridianCityText13 db $50 ViridianCityText14: ; 0x19232 TX_FAR _ViridianCityText14 db $50 ; 0x19232 + 5 bytes PewterCityScript: ; 0x19237 call $3c3c ld hl, PewterCityScripts ld a, [$d5f7] jp $3d97 ; 0x19243 PewterCityScripts: ; 0x19243 dw PewterCityScript0 INCBIN "baserom.gbc",$19245,$c PewterCityScript0: ; 0x19251 xor a ld [$d619], a ld hl, $d754 res 0, [hl] call $525e ret ; 0x1925e INCBIN "baserom.gbc",$1925e,$12d PewterCityTexts: ; 0x1938b dw PewterCityText1, PewterCityText2, PewterCityText3, PewterCityText4, PewterCityText5, PewterCityText6, PewterCityText7, PewterCityText8, PewterCityText9, PewterCityText10, PewterCityText11, PewterCityText12, PewterCityText13, PewterCityText14 PewterCityText1: ; 0x193a7 TX_FAR _PewterCityText1 db $50 PewterCityText2: ; 0x193ac TX_FAR _PewterCityText2 db $50 PewterCityText3: ; 0x193b1 db $08 ; asm ld hl, UnnamedText_193f1 call PrintText call $35ec ld a, [$cc26] and a jr nz, .asm_f46a9 ; 0x193bf ld hl, UnnamedText_193f6 call PrintText jr .asm_ac429 ; 0x193c7 .asm_f46a9 ; 0x193c9 ld hl, UnnamedText_193fb call PrintText xor a ldh [$b3], a ldh [$b4], a ld [$cf10], a ld a, $2 ld [$cc57], a ldh a, [$b8] ld [$cc58], a ld a, $3 ld [$cf13], a call $32f4 ld a, $1 ld [$d5f7], a .asm_ac429 ; 0x193ee jp TextScriptEnd UnnamedText_193f1: ; 0x193f1 TX_FAR _UnnamedText_193f1 db $50 ; 0x193f1 + 5 bytes UnnamedText_193f6: ; 0x193f6 TX_FAR _UnnamedText_193f6 db $50 ; 0x193f6 + 5 bytes UnnamedText_193fb: ; 0x193fb TX_FAR _UnnamedText_193fb db $50 ; 0x193fb + 5 bytes PewterCityText13: UnnamedText_19400: ; 0x19400 TX_FAR _UnnamedText_19400 db $50 ; 0x19400 + 5 bytes PewterCityText4: ; 0x19405 db $8 ld hl, UnnamedText_19427 call PrintText call $35ec ld a, [$cc26] cp $0 jr nz, .asm_e4603 ld hl, UnnamedText_1942c call PrintText jr .asm_e4604 ; 0x1941c $6 .asm_e4603 ld hl, UnnamedText_19431 call PrintText .asm_e4604 ; 0x19424 jp TextScriptEnd ; 0x19427 UnnamedText_19427: ; 0x19427 TX_FAR _UnnamedText_19427 db $50 ; 0x19427 + 5 bytes UnnamedText_1942c: ; 0x1942c TX_FAR _UnnamedText_1942c db $50 ; 0x1942c + 5 bytes UnnamedText_19431: ; 0x19431 TX_FAR _UnnamedText_19431 db $50 ; 0x19431 + 5 bytes PewterCityText5: ; 0x19436 db $08 ; asm ld hl, UnnamedText_1945d call PrintText xor a ldh [$b4], a ld [$cf10], a ld a, $3 ld [$cc57], a ldh a, [$b8] ld [$cc58], a ld a, $5 ld [$cf13], a call $32f4 ld a, $4 ld [$d5f7], a jp TextScriptEnd UnnamedText_1945d: ; 0x1945d TX_FAR _UnnamedText_1945d db $50 ; 0x1945d + 5 bytes PewterCityText14: ; 0x19462 UnnamedText_19462: ; 0x19462 TX_FAR _UnnamedText_19462 db $50 ; 0x19462 + 5 bytes PewterCityText6: ; 0x19467 TX_FAR _PewterCityText6 db $50 PewterCityText7: ; 0x1946c TX_FAR _PewterCityText7 db $50 PewterCityText10: ; 0x19471 TX_FAR _PewterCityText10 db $50 PewterCityText11: ; 0x19476 TX_FAR _PewterCityText11 db $50 PewterCityText12: ; 0x1947b TX_FAR _PewterCityText12 db $50 CeruleanCityScript: ; 0x19480 call $3c3c ld hl, CeruleanCityScripts ld a, [$d60f] jp $3d97 ; 0x1948c CeruleanCity_Unknown1948c: ; 0x1948c xor a ld [$cd6b], a ld [$d60f], a ld a, $5 ld [$cc4d], a ld a, $11 jp Predef ; 0x1949d CeruleanCityScripts: ; 0x1949d dw CeruleanCityScript0, CeruleanCityScript1, CeruleanCityScript2, CeruleanCityScript3 INCBIN "baserom.gbc",$194a5,$23 CeruleanCityScript0: ; 0x194c8 ld a, [$d75b] bit 7, a jr nz, .asm_194f7 ; 0x194cd $28 ld hl, $554f call $34bf jr nc, .asm_194f7 ; 0x194d5 $20 ld a, [$cd3d] cp $1 ld a, $8 ld b, $0 jr nz, .asm_194e6 ; 0x194e0 $4 ld a, $4 ld b, $4 .asm_194e6 ld [$d528], a ld a, b ld [$c129], a call Delay3 ld a, $2 ld [$ff00+$8c], a jp $2920 .asm_194f7 ld a, [$d75a] bit 0, a ret nz ld hl, $5554 call $34bf ret nc ld a, [$d700] and a jr z, .asm_19512 ; 0x19508 $8 ld a, $ff ld [$c0ee], a call $23b1 .asm_19512 ld c, $2 ld a, $de call $23a1 xor a ld [$ff00+$b4], a ld a, $f0 ld [$cd6b], a ld a, [$d362] cp $14 jr z, .asm_19535 ; 0x19526 $d ld a, $1 ld [$ff00+$8c], a ld a, $5 ld [$ff00+$8b], a call $3500 ld [hl], $19 .asm_19535 ld a, $5 ld [$cc4d], a ld a, $15 call Predef ld de, $5559 ld a, $1 ld [$ff00+$8c], a call $363a ld a, $1 ld [$d60f], a ret ; 0x1954f INCBIN "baserom.gbc",$1954f,$19567 - $1954f CeruleanCityScript1: ; 0x19567 ld a, [$d730] bit 0, a ret nz xor a ld [$cd6b], a ld a, $1 ld [$ff00+$8c], a call $2920 ld hl, $d72d set 6, [hl] set 7, [hl] ld hl, UnnamedText_1966d ld de, UnnamedText_19672 call $3354 ld a, $e1 ld [$d059], a ; select which team to use during the encounter ld a, [W_RIVALSTARTER] cp SQUIRTLE jr nz, .NotSquirtle\@ ; 0x19592 $4 ld a, $7 jr .done\@ .NotSquirtle\@ cp BULBASAUR jr nz, .Charmander\@ ; 0x1959a $4 ld a, $8 jr .done\@ .Charmander\@ ld a, $9 .done\@ ld [W_TRAINERNO], a xor a ld [$ff00+$b4], a call $555d ld a, $2 ld [$d60f], a ret ; 0x195b1 CeruleanCityScript2: ; 0x195b1 ld a, [$d057] cp $ff jp z, $548c call $555d ld a, $f0 ld [$cd6b], a ld hl, $d75a set 0, [hl] ld a, $1 ld [$ff00+$8c], a call $2920 ld a, $ff ld [$c0ee], a call $23b1 ld b, $2 ld hl, $5b47 call Bankswitch ld a, $1 ld [$ff00+$8c], a call $3541 ld a, [$d362] cp $14 jr nz, .asm_195f0 ; 0x195e9 $5 ld de, $5608 jr .asm_195f3 ; 0x195ee $3 .asm_195f0 ld de, $5600 .asm_195f3 ld a, $1 ld [$ff00+$8c], a call $363a ld a, $3 ld [$d60f], a ret ; 0x19600 INCBIN "baserom.gbc",$19600,$19610 - $19600 CeruleanCityScript3: ; 0x19610 ld a, [$d730] bit 0, a ret nz ld a, $5 ld [$cc4d], a ld a, $11 call Predef xor a ld [$cd6b], a call $2307 ld a, $0 ld [$d60f], a ret ; 0x1962d CeruleanCityTexts: ; 0x1962d dw CeruleanCityText1, CeruleanCityText2, CeruleanCityText3, CeruleanCityText4, CeruleanCityText5, CeruleanCityText6, CeruleanCityText7, CeruleanCityText8, CeruleanCityText9, CeruleanCityText10, CeruleanCityText11, CeruleanCityText12, CeruleanCityText13, CeruleanCityText14, CeruleanCityText15, CeruleanCityText16, CeruleanCityText17 CeruleanCityText1: ; 0x1964f db $08 ; asm ld a, [$d75a] ; rival battle flag bit 0, a ; do pre-battle text jr z, .PreBattleText ; or talk about bill ld hl, UnnamedText_19677 call PrintText jr .end ; 0x1965d .PreBattleText ; 0x1965f ld hl, UnnamedText_19668 call PrintText .end ; 0x19665 jp TextScriptEnd UnnamedText_19668: ; 0x19668 TX_FAR _UnnamedText_19668 db $50 ; 0x19668 + 5 bytes UnnamedText_1966d: ; 0x1966d TX_FAR _UnnamedText_1966d db $50 ; 0x1966d + 5 bytes UnnamedText_19672: ; 0x19672 TX_FAR _UnnamedText_19672 db $50 ; 0x19672 + 5 bytes UnnamedText_19677: ; 0x19677 TX_FAR _UnnamedText_19677 db $50 ; 0x19677 + 5 bytes CeruleanCityText2: ; 0x1967c db $8 ld a, [$d75b] bit 7, a jr nz, .asm_4ca20 ; 0x19682 $29 ld hl, UnnamedText_196d9 call PrintText ld hl, $d72d set 6, [hl] set 7, [hl] ld hl, UnnamedText_196ee ld de, UnnamedText_196ee call $3354 ld a, [$ff00+$8c] ld [$cf13], a call $336a call $32d7 ld a, $4 ld [$d60f], a jp TextScriptEnd .asm_4ca20 ; 0x196ad ld hl, UnnamedText_196f3 call PrintText ld bc, $e401 call GiveItem jr c, .asm_8bbbd ; 0x196b9 $8 ld hl, TM28NoRoomText call PrintText jr .asm_e4e6f ; 0x196c1 $13 .asm_8bbbd ; 0x196c3 ld a, $1 ld [$cc3c], a ld hl, ReceivedTM28Text call PrintText ld b, BANK(Unnamed_ASM_74872) ld hl, Unnamed_ASM_74872 call Bankswitch .asm_e4e6f ; 0x196d6 jp TextScriptEnd ; 0x196d9 UnnamedText_196d9: ; 0x196d9 TX_FAR _UnnamedText_196d9 db $50 ; 0x196d9 + 5 bytes ReceivedTM28Text: ; 0x196de TX_FAR _ReceivedTM28Text ; 0xa4f82 db $0B TX_FAR _ReceivedTM28Text2 ; 0xa4f96 db $0D, $50 ; 0x196e9 TM28NoRoomText: ; 0x196e9 TX_FAR _TM28NoRoomText db $50 ; 0x196e9 + 5 bytes UnnamedText_196ee: ; 0x196ee TX_FAR _UnnamedText_196ee db $50 ; 0x196ee + 5 bytes UnnamedText_196f3: ; 0x196f3 TX_FAR _UnnamedText_196f3 db $50 ; 0x196f3 + 5 bytes CeruleanCityText3: ; 0x196f8 TX_FAR _CeruleanCityText3 db $50 CeruleanCityText4: ; 0x196fd TX_FAR _CeruleanCityText4 db $50 CeruleanCityText5: ; 0x19702 TX_FAR _CeruleanCityText5 db $50 CeruleanCityText11: CeruleanCityText6: ; 0x19707 TX_FAR _CeruleanCityText6 db $50 CeruleanCityText7: ; 0x1970c db $08 ; asm ldh a, [$d3] cp $b4 jr c, .asm_e9fc9 ; 0x19711 ld hl, UnnamedText_19730 call PrintText jr .asm_d486e ; 0x19719 .asm_e9fc9 ; 0x1971b cp $64 jr c, .asm_df99b ; 0x1971d ld hl, UnnamedText_19735 call PrintText jr .asm_d486e ; 0x19725 .asm_df99b ; 0x19727 ld hl, UnnamedText_1973a call PrintText .asm_d486e ; 0x1972d jp TextScriptEnd UnnamedText_19730: ; 0x19730 TX_FAR _UnnamedText_19730 db $50 ; 0x19730 + 5 bytes UnnamedText_19735: ; 0x19735 TX_FAR _UnnamedText_19735 db $50 ; 0x19735 + 5 bytes UnnamedText_1973a: ; 0x1973a TX_FAR _UnnamedText_1973a db $50 ; 0x1973a + 5 bytes CeruleanCityText8: ; 0x1973f db $08 ; asm ldh a, [$d3] cp $b4 jr c, .asm_e28da ; 0x19744 ld hl, UnnamedText_1976f call PrintText jr .asm_f2f38 ; 0x1974c .asm_e28da ; 0x1974e cp $78 jr c, .asm_15d08 ; 0x19750 ld hl, UnnamedText_19774 call PrintText jr .asm_f2f38 ; 0x19758 .asm_15d08 ; 0x1975a cp $3c jr c, .asm_d7fea ; 0x1975c ld hl, UnnamedText_19779 call PrintText jr .asm_f2f38 ; 0x19764 .asm_d7fea ; 0x19766 ld hl, UnnamedText_1977e call PrintText .asm_f2f38 ; 0x1976c jp TextScriptEnd UnnamedText_1976f: ; 0x1976f TX_FAR _UnnamedText_1976f db $50 ; 0x1976f + 5 bytes UnnamedText_19774: ; 0x19774 TX_FAR _UnnamedText_19774 db $50 ; 0x19774 + 5 bytes UnnamedText_19779: ; 0x19779 TX_FAR _UnnamedText_19779 db $50 ; 0x19779 + 5 bytes UnnamedText_1977e: ; 0x1977e TX_FAR _UnnamedText_1977e db $50 ; 0x1977e + 5 bytes CeruleanCityText9: ; 0x19783 TX_FAR _CeruleanCityText9 db $50 CeruleanCityText10: ; 0x19788 TX_FAR _CeruleanCityText10 db $50 CeruleanCityText12: ; 0x1978d TX_FAR _CeruleanCityText12 db $50 CeruleanCityText13: ; 0x19792 TX_FAR _CeruleanCityText13 db $50 CeruleanCityText16: ; 0x19797 TX_FAR _CeruleanCityText16 db $50 CeruleanCityText17: ; 0x1979c TX_FAR _CeruleanCityText17 db $50 VermilionCityScript: ; 0x197a1 call $3c3c ld hl, $d126 bit 6, [hl] res 6, [hl] push hl call nz, $57cb pop hl bit 5, [hl] res 5, [hl] call nz, VermilionCityScript_Unknown197c0 ld hl, VermilionCityScripts ld a, [$d62a] jp $3d97 ; 0x197c0 VermilionCityScript_Unknown197c0: ; 0x197c0 INCBIN "baserom.gbc",$197c0,$197dc - $197c0 VermilionCityScripts: ; 0x197dc dw VermilionCityScript0, VermilionCityScript1 INCBIN "baserom.gbc",$197e0,$6 VermilionCityScript0: ; 0x197e6 ld a, [$c109] and a ret nz ld hl, $5823 call $34bf ret nc xor a ld [$ff00+$b4], a ld [$cf0d], a ld a, $3 ld [$ff00+$8c], a call $2920 ld a, [$d803] bit 2, a jr nz, .asm_19810 ; 0x19804 $a ld b, $3f ld a, $1c call Predef ld a, b and a ret nz .asm_19810 ld a, $40 ld [$ccd3], a ld a, $1 ld [$cd38], a call $3486 ld a, $1 ld [$d62a], a ret ; 0x19823 INCBIN "baserom.gbc",$19823,$1985f - $19823 VermilionCityScript1: ; 0x1985f ld a, [$cd38] and a ret nz ld c, $a call $3739 ld a, $0 ld [$d62a], a ret ; 0x1986f VermilionCityTexts: ; 0x1986f dw VermilionCityText1, VermilionCityText2, VermilionCityText3, VermilionCityText4, VermilionCityText5, VermilionCityText6, VermilionCityText7, VermilionCityText8, VermilionCityText9, VermilionCityText10, VermilionCityText11, VermilionCityText12, VermilionCityText13 VermilionCityText1: ; 0x19889 TX_FAR _VermilionCityText1 db $50 VermilionCityText2: ; 0x1988e db $08 ; asm ld a, [$d803] bit 2, a jr nz, .asm_359bd ; 0x19894 ld hl, UnnamedText_198a7 call PrintText jr .asm_735d9 ; 0x1989c .asm_359bd ; 0x1989e ld hl, UnnamedText_198ac call PrintText .asm_735d9 ; 0x198a4 jp TextScriptEnd UnnamedText_198a7: ; 0x198a7 TX_FAR _UnnamedText_198a7 db $50 ; 0x198a7 + 5 bytes UnnamedText_198ac: ; 0x198ac TX_FAR _UnnamedText_198ac db $50 ; 0x198ac + 5 bytes VermilionCityText3: ; 0x198b1 db $08 ; asm ld a, [$d803] bit 2, a jr nz, .asm_3e0e9 ; 0x198b7 ld a, [$c109] cp $c jr z, .asm_07af3 ; 0x198be ld hl, $58ff call $34bf jr nc, .asm_57b73 ; 0x198c6 .asm_07af3 ; 0x198c8 ld hl, SSAnneWelcomeText4 call PrintText jr .asm_79bd1 ; 0x198ce .asm_57b73 ; 0x198d0 ld hl, SSAnneWelcomeText9 call PrintText ld b, $3f ld a, $1c call Predef ld a, b and a jr nz, .asm_0419b ; 0x198df ld hl, SSAnneNoTicketText call PrintText jr .asm_79bd1 ; 0x198e7 .asm_0419b ; 0x198e9 ld hl, SSAnneFlashedTicketText call PrintText ld a, $4 ld [$d62a], a jr .asm_79bd1 ; 0x198f4 .asm_3e0e9 ; 0x198f6 ld hl, SSAnneNotHereText call PrintText .asm_79bd1 ; 0x198fc jp TextScriptEnd INCBIN "baserom.gbc",$198ff,$19904 - $198ff SSAnneWelcomeText4: ; 0x19904 TX_FAR _SSAnneWelcomeText4 db $50 ; 0x19904 + 5 bytes SSAnneWelcomeText9: ; 0x19909 TX_FAR _SSAnneWelcomeText9 db $50 ; 0x19909 + 5 bytes SSAnneFlashedTicketText: ; 0x1990e TX_FAR _SSAnneFlashedTicketText db $50 ; 0x1990e + 5 bytes SSAnneNoTicketText: ; 0x19913 TX_FAR _SSAnneNoTicketText db $50 ; 0x19913 + 5 bytes SSAnneNotHereText: ; 0x19918 TX_FAR _SSAnneNotHereText db $50 ; 0x19918 + 5 bytes VermilionCityText4: ; 0x1991d TX_FAR _VermilionCityText4 db $50 VermilionCityText5: ; 0x19922 TX_FAR _VermilionCityText5 db $08 ; asm ld a, $6a call $13d0 call $3748 ld hl, $5933 ret VermilionCityText14: ; 0x19933 TX_FAR _VermilionCityText14 db $50 VermilionCityText6: ; 0x19938 TX_FAR _VermilionCityText6 db $50 VermilionCityText7: ; 0x1993d TX_FAR _VermilionCityText7 db $50 VermilionCityText8: ; 0x19942 TX_FAR _VermilionCityText8 db $50 VermilionCityText11: ; 0x19947 TX_FAR _VermilionCityText11 db $50 VermilionCityText12: ; 0x1994c TX_FAR _VermilionCityText12 db $50 VermilionCityText13: ; 0x19951 TX_FAR _VermilionCityText13 db $50 CeladonCityScript: ; 0x19956 call $3c3c ld hl, $d77e res 0, [hl] res 7, [hl] ld hl, $d816 res 7, [hl] ret ; 0x19966 CeladonCityTexts: ; 0x19966 dw CeladonCityText1, CeladonCityText2, CeladonCityText3, CeladonCityText4, CeladonCityText5, CeladonCityText6, CeladonCityText7, CeladonCityText8, CeladonCityText9, CeladonCityText10, CeladonCityText11, CeladonCityText12, CeladonCityText13, CeladonCityText14, CeladonCityText15, CeladonCityText16, CeladonCityText17, CeladonCityText18 CeladonCityText1: ; 0x1998a TX_FAR _CeladonCityText1 db $50 CeladonCityText2: ; 0x1998f TX_FAR _CeladonCityText2 db $50 CeladonCityText3: ; 0x19994 TX_FAR _CeladonCityText3 db $50 CeladonCityText4: ; 0x19999 TX_FAR _CeladonCityText4 db $50 CeladonCityText5: ; 0x1999e db $08 ; asm ld a, [$d777] bit 0, a jr nz, .asm_7053f ; 0x199a4 ld hl, TM41PreText call PrintText ld bc, (TM_41 << 8) | 1 call GiveItem jr c, .asm_890ec ; 0x199b2 ld hl, TM41NoRoomText call PrintText jr .asm_c765a ; 0x199ba .asm_890ec ; 0x199bc ld hl, ReceivedTM41Text call PrintText ld hl, $d777 set 0, [hl] jr .asm_c765a ; 0x199c7 .asm_7053f ; 0x199c9 ld hl, TM41ExplanationText call PrintText .asm_c765a ; 0x199cf jp TextScriptEnd TM41PreText: ; 0x199d2 TX_FAR _TM41PreText db $50 ; 0x199d2 + 5 bytes ReceivedTM41Text: ; 0x199d7 TX_FAR _ReceivedTM41Text ; 0xa5b5a db $0B, $50 ; 0x199d7 + 6 bytes = 0x199dd TM41ExplanationText: ; 0x199dd TX_FAR _TM41ExplanationText db $50 ; 0x199dd + 5 bytes TM41NoRoomText: ; 0x199e2 TX_FAR _TM41NoRoomText db $50 ; 0x199e2 + 5 bytes CeladonCityText6: ; 0x199e7 TX_FAR _CeladonCityText6 db $50 CeladonCityText7: ; 0x199ec TX_FAR _CeladonCityText7 db $08 ; asm ld a, $6f call $13d0 jp TextScriptEnd CeladonCityText8: ; 0x199f9 TX_FAR _CeladonCityText8 db $50 CeladonCityText9: ; 0x199fe TX_FAR _CeladonCityText9 db $50 CeladonCityText10: ; 0x19a03 TX_FAR _CeladonCityText10 db $50 CeladonCityText11: ; 0x19a08 TX_FAR _CeladonCityText11 db $50 CeladonCityText13: ; 0x19a0d TX_FAR _CeladonCityText13 db $50 CeladonCityText14: ; 0x19a12 TX_FAR _CeladonCityText14 db $50 CeladonCityText15: ; 0x19a17 TX_FAR _CeladonCityText15 db $50 CeladonCityText16: ; 0x19a1c TX_FAR _CeladonCityText16 db $50 CeladonCityText17: ; 0x19a21 TX_FAR _CeladonCityText17 db $50 CeladonCityText18: ; 0x19a26 TX_FAR _CeladonCityText18 db $50 FuchsiaCityScript: ; 0x19a2b jp $3c3c ; 0x19a2e FuchsiaCityTexts: ; 0x19a2e dw FuchsiaCityText1, FuchsiaCityText2, FuchsiaCityText3, FuchsiaCityText4, FuchsiaCityText5, FuchsiaCityText6, FuchsiaCityText7, FuchsiaCityText8, FuchsiaCityText9, FuchsiaCityText10, FuchsiaCityText11, FuchsiaCityText12, FuchsiaCityText13, FuchsiaCityText14, FuchsiaCityText15, FuchsiaCityText16, FuchsiaCityText17, FuchsiaCityText18, FuchsiaCityText19, FuchsiaCityText20, FuchsiaCityText21, FuchsiaCityText22, FuchsiaCityText23, FuchsiaCityText24 FuchsiaCityText1: ; 0x19a5e TX_FAR _FuchsiaCityText1 db $50 FuchsiaCityText2: ; 0x19a63 TX_FAR _FuchsiaCityText2 db $50 FuchsiaCityText3: ; 0x19a68 TX_FAR _FuchsiaCityText3 db $50 FuchsiaCityText4: ; 0x19a6d TX_FAR _FuchsiaCityText4 db $50 FuchsiaCityText5: ; 0x19a72 FuchsiaCityText6: FuchsiaCityText7: FuchsiaCityText8: FuchsiaCityText9: FuchsiaCityText10: ; 0x19a72 TX_FAR _FuchsiaCityText5 db $50 FuchsiaCityText12: FuchsiaCityText11: ; 0x19a77 TX_FAR _FuchsiaCityText11 db $50 FuchsiaCityText13: ; 0x19a7c TX_FAR _FuchsiaCityText13 db $50 FuchsiaCityText16: ; 0x19a81 TX_FAR _FuchsiaCityText16 db $50 FuchsiaCityText17: ; 0x19a86 TX_FAR _FuchsiaCityText17 db $50 FuchsiaCityText18: ; 0x19a8b TX_FAR _FuchsiaCityText18 db $50 FuchsiaCityText19: ; 0x19a90 db $08 ; asm ld hl, FuchsiaCityChanseyText call PrintText ld a, $28 call $349b jp TextScriptEnd FuchsiaCityChanseyText: ; 0x19a9f TX_FAR _FuchsiaCityChanseyText db $50 ; 0x19a9f + 5 bytes FuchsiaCityText20: ; 0x19aa4 db $08 ; asm ld hl, FuchsiaCityVoltorbText call PrintText ld a, $6 call $349b jp TextScriptEnd FuchsiaCityVoltorbText: ; 0x19ab3 TX_FAR _FuchsiaCityVoltorbText db $50 ; 0x19ab3 + 5 bytes FuchsiaCityText21: ; 0x19ab8 db $08 ; asm ld hl, FuchsiaCityKangaskhanText call PrintText ld a, $2 call $349b jp TextScriptEnd FuchsiaCityKangaskhanText: ; 0x19ac7 TX_FAR _FuchsiaCityKangaskhanText db $50 ; 0x19ac7 + 5 bytes FuchsiaCityText22: ; 0x19acc db $08 ; asm ld hl, FuchsiaCitySlowpokeText call PrintText ld a, $25 call $349b jp TextScriptEnd FuchsiaCitySlowpokeText: ; 0x19adb TX_FAR _FuchsiaCitySlowpokeText db $50 ; 0x19adb + 5 bytes FuchsiaCityText23: ; 0x19ae0 db $08 ; asm ld hl, FuchsiaCityLaprasText call PrintText ld a, $13 call $349b jp TextScriptEnd FuchsiaCityLaprasText: ; 0x19aef TX_FAR _FuchsiaCityLaprasText db $50 ; 0x19aef + 5 bytes FuchsiaCityText24: ; 0x19af4 db $08 ; asm ld a, [$d7f6] bit 6, a jr nz, .asm_3b4e8 ; 0x19afa bit 7, a jr nz, .asm_667d5 ; 0x19afe ld hl, UnnamedText_19b2a call PrintText jr .asm_4343f ; 0x19b06 .asm_3b4e8 ; 0x19b08 ld hl, FuchsiaCityOmanyteText call PrintText ld a, $62 jr .asm_81556 ; 0x19b10 .asm_667d5 ; 0x19b12 ld hl, FuchsiaCityKabutoText call PrintText ld a, $5a .asm_81556 ; 0x19b1a call $349b .asm_4343f ; 0x19b1d jp TextScriptEnd FuchsiaCityOmanyteText: ; 0x19b20 TX_FAR _FuchsiaCityOmanyteText db $50 ; 0x19b20 + 5 bytes FuchsiaCityKabutoText: ; 0x19b25 TX_FAR _FuchsiaCityKabutoText db $50 ; 0x19b25 + 5 bytes UnnamedText_19b2a: ; 0x19b2a TX_FAR _UnnamedText_19b2a db $50 ; 0x19b2a + 5 bytes BluesHouse_h: ; 0x19b2f id=39 db $08 ; tileset db BLUES_HOUSE_HEIGHT, BLUES_HOUSE_WIDTH ; dimensions dw BluesHouseBlocks, BluesHouseTexts, BluesHouseScript db 0 dw BluesHouseObject BluesHouseScript: ; 0x19b3b call $3C3C ld hl,BluesHouseScriptPointers ld a,[$D5F3] jp $3D97 BluesHouseScriptPointers: ; 0x19b47 dw BluesHouseScript1,BluesHouseScript2 BluesHouseScript1: ; 0x19b4a ld hl,$D74A set 1,[hl] ; trigger the next script ld a,1 ld [$D5F3],a ret BluesHouseScript2: ; 0x19B56 ret BluesHouseTexts: ; 0x19B57 dw BluesHouseText1,BluesHouseText2,BluesHouseText3 BluesHouseText1: ; 5B5D 0x19B5D db 8 ld a,[$D74A] bit 0,a jr nz,.GotMap\@ ld a,[$D74B] bit 5,a jr nz,.GiveMap\@ ld hl,DaisyInitialText call PrintText jr .done\@ .GiveMap\@ ld hl,DaisyOfferMapText call PrintText ld bc,(TOWN_MAP << 8) | 1 call $3E2E jr nc,.BagFull\@ ld a,$29 ld [$CC4D],a ld a,$11 call Predef ; hide table map object ld hl,GotMapText call PrintText ld hl,$D74A set 0,[hl] jr .done\@ .GotMap\@ ld hl,DaisyUseMapText call PrintText jr .done\@ .BagFull\@ ld hl,DaisyBagFullText call PrintText .done\@ jp TextScriptEnd DaisyInitialText: ; 0x19baa TX_FAR _DaisyInitialText db "@" DaisyOfferMapText: ; 0x19baf TX_FAR _DaisyOfferMapText db "@" GotMapText: ; 0x19bb4 TX_FAR _GotMapText db $11,"@" DaisyBagFullText: ; 0x19bba TX_FAR _DaisyBagFullText db "@" DaisyUseMapText: ; 0x19bbf TX_FAR _DaisyUseMapText db "@" BluesHouseText2: ; 0x19bc4 Daisy, walking around TX_FAR _BluesHouseText2 db "@" BluesHouseText3: ; 0x19bc9 map on table TX_FAR _BluesHouseText3 db "@" BluesHouseObject: ; 0x19bce db $0A ; border tile db 2 ; warps db 7,2,1,$FF db 7,3,1,$FF db 0 ; signs db 3 ; people db $11,4+3,4+2,$FF,$D3,1 ; Daisy, sitting by map db $11,4+4,4+6,$FE,1,ITEM|2,0 ; map on table db $41,4+3,4+3,$FF,$FF,ITEM|3,0 ; Daisy, walking around ; warp-to dw $C712 db 7,2 dw $C712 db 7,3 BluesHouseBlocks: ; 0x19bf6 INCBIN "maps/blueshouse.blk" VermilionHouse3_h: ; 0x19c06 to 0x19c12 (12 bytes) (bank=6) (id=196) db $08 ; tileset db VERMILION_HOUSE_3_HEIGHT, VERMILION_HOUSE_3_WIDTH ; dimensions (y, x) dw VermilionHouse3Blocks, VermilionHouse3Texts, VermilionHouse3Script ; blocks, texts, scripts db $00 ; connections dw VermilionHouse3Object ; objects VermilionHouse3Script: ; 0x19c12 jp $3c3c ; 0x19c15 VermilionHouse3Texts: ; 0x19c15 dw VermilionHouse3Text1 VermilionHouse3Text1: ; 0x19c17 db $08 ; asm ld a, $4 ld [W_WHICHTRADE], a ld a, $54 call Predef jp TextScriptEnd VermilionHouse3Object: ; 0x19c25 (size=26) db $a ; border tile db $2 ; warps db $7, $2, $7, $ff db $7, $3, $7, $ff db $0 ; signs db $1 ; people db SPRITE_LITTLE_GIRL, $5 + 4, $3 + 4, $ff, $d1, $1 ; person ; warp-to EVENT_DISP $4, $7, $2 EVENT_DISP $4, $7, $3 VermilionHouse3Blocks: ; 0x19c3f 16 INCBIN "maps/vermilionhouse3.blk" IndigoPlateauLobby_h: ; 0x19c4f to 0x19c5b (12 bytes) (bank=6) (id=174) db $02 ; tileset db INDIGO_PLATEAU_LOBBY_HEIGHT, INDIGO_PLATEAU_LOBBY_WIDTH ; dimensions (y, x) dw IndigoPlateauLobbyBlocks, IndigoPlateauLobbyTexts, IndigoPlateauLobbyScript ; blocks, texts, scripts db $00 ; connections dw IndigoPlateauLobbyObject ; objects IndigoPlateauLobbyScript: ; 0x19c5b call $22fa call $3c3c ld hl, $d126 bit 6, [hl] res 6, [hl] ret z ld hl, $d869 res 7, [hl] ld hl, $d734 bit 1, [hl] res 1, [hl] ret z ld hl, $d863 xor a ld [hli], a ld [hli], a ld [hli], a ld [hl], a ret ; 0x19c7f IndigoPlateauLobbyTexts: ; 0x19c7f dw IndigoPlateauLobbyText1, IndigoPlateauLobbyText2, IndigoPlateauLobbyText3, IndigoPlateauLobbyText4, IndigoPlateauLobbyText5 IndigoPlateauLobbyText1: ; 0x19c8a db $ff IndigoPlateauLobbyText2: ; 0x19c8b TX_FAR _IndigoPlateauLobbyText1 db $50 INCBIN "baserom.gbc",$19c8f,$19c8f - $19c8f IndigoPlateauLobbyText3: ; 0x19c8f TX_FAR _IndigoPlateauLobbyText3 db $50 IndigoPlateauLobbyText5: ; 0x19c94 db $f6 IndigoPlateauLobbyObject: ; 0x19c95 (size=58) db $0 ; border tile db $3 ; warps db $b, $7, $0, $ff db $b, $8, $1, $ff db $0, $8, $0, LORELEIS_ROOM db $0 ; signs db $5 ; people db SPRITE_NURSE, $5 + 4, $7 + 4, $ff, $d0, $1 ; person db SPRITE_GYM_HELPER, $9 + 4, $4 + 4, $ff, $d3, $2 ; person db SPRITE_LASS, $1 + 4, $5 + 4, $ff, $d0, $3 ; person db SPRITE_MART_GUY, $5 + 4, $0 + 4, $ff, $d3, $4 ; person db SPRITE_CABLE_CLUB_WOMAN, $6 + 4, $d + 4, $ff, $d0, $5 ; person ; warp-to EVENT_DISP $8, $b, $7 EVENT_DISP $8, $b, $8 EVENT_DISP $8, $0, $8 ; LORELEIS_ROOM IndigoPlateauLobbyBlocks: ; 0x19ccf 48 INCBIN "maps/indigoplateaulobby.blk" SilphCo4_h: ; 0x19cff to 0x19d0b (12 bytes) (bank=6) (id=209) db $16 ; tileset db SILPH_CO_4F_HEIGHT, SILPH_CO_4F_WIDTH ; dimensions (y, x) dw SilphCo4Blocks, SilphCo4Texts, SilphCo4Script ; blocks, texts, scripts db $00 ; connections dw SilphCo4Object ; objects SilphCo4Script: ; 0x19d0b call SilphCo4Script_Unknown19d21 call $3c3c ld hl, SilphCo4TrainerHeaders ld de, $5d9a ld a, [$d645] call $3160 ld [$d645], a ret ; 0x19d21 SilphCo4Script_Unknown19d21: ; 0x19d21 INCBIN "baserom.gbc",$19d21,$7f SilphCo4Texts: ; 0x19da0 dw SilphCo4Text1, SilphCo4Text2, SilphCo4Text3, SilphCo4Text4, SilphCo4Text5, SilphCo4Text6, SilphCo4Text7 SilphCo4TrainerHeaders: SilphCo4TrainerHeader0: ; 0x19dae db $2 ; flag's bit db ($4 << 4) ; trainer's view range dw $d829 ; flag's byte dw SilphCo4BattleText2 ; 0x5df4 TextBeforeBattle dw SilphCo4AfterBattleText2 ; 0x5dfe TextAfterBattle dw SilphCo4EndBattleText2 ; 0x5df9 TextEndBattle dw SilphCo4EndBattleText2 ; 0x5df9 TextEndBattle ; 0x19dba SilphCo4TrainerHeader2: ; 0x19dba db $3 ; flag's bit db ($3 << 4) ; trainer's view range dw $d829 ; flag's byte dw SilphCo4BattleText3 ; 0x5e0d TextBeforeBattle dw SilphCo4AfterBattleText3 ; 0x5e17 TextAfterBattle dw SilphCo4EndBattleText3 ; 0x5e12 TextEndBattle dw SilphCo4EndBattleText3 ; 0x5e12 TextEndBattle ; 0x19dc4 SilphCo4TrainerHeader3: ; 0x19dc6 db $4 ; flag's bit db ($4 << 4) ; trainer's view range dw $d829 ; flag's byte dw SilphCo4BattleText4 ; 0x5e26 TextBeforeBattle dw SilphCo4AfterBattleText4 ; 0x5e30 TextAfterBattle dw SilphCo4EndBattleText4 ; 0x5e2b TextEndBattle dw SilphCo4EndBattleText4 ; 0x5e2b TextEndBattle ; 0x19dd2 db $ff SilphCo4Text1: ; 0x19dd3 db $08 ; asm ld hl, $5de0 ld de, $5de5 call $622f jp TextScriptEnd UnnamedText_19de0: ; 0x19de0 TX_FAR _UnnamedText_19de0 db $50 ; 0x19de0 + 5 bytes UnnamedText_19de5: ; 0x19de5 TX_FAR _UnnamedText_19de5 db $50 ; 0x19de5 + 5 bytes SilphCo4Text2: ; 0x19dea db $08 ; asm ld hl, SilphCo4TrainerHeader0 call LoadTrainerHeader jp TextScriptEnd SilphCo4BattleText2: ; 0x19df4 TX_FAR _SilphCo4BattleText2 db $50 ; 0x19df4 + 5 bytes SilphCo4EndBattleText2: ; 0x19df9 TX_FAR _SilphCo4EndBattleText2 db $50 ; 0x19df9 + 5 bytes SilphCo4AfterBattleText2: ; 0x19dfe TX_FAR _SilphCo4AfterBattleText2 db $50 ; 0x19dfe + 5 bytes SilphCo4Text3: ; 0x19e03 db $08 ; asm ld hl, SilphCo4TrainerHeader2 call LoadTrainerHeader jp TextScriptEnd SilphCo4BattleText3: ; 0x19e0d TX_FAR _SilphCo4BattleText3 db $50 ; 0x19e0d + 5 bytes SilphCo4EndBattleText3: ; 0x19e12 TX_FAR _SilphCo4EndBattleText3 db $50 ; 0x19e12 + 5 bytes SilphCo4AfterBattleText3: ; 0x19e17 TX_FAR _SilphCo4AfterBattleText3 db $50 ; 0x19e17 + 5 bytes SilphCo4Text4: ; 0x19e1c db $08 ; asm ld hl, SilphCo4TrainerHeader3 call LoadTrainerHeader jp TextScriptEnd SilphCo4BattleText4: ; 0x19e26 TX_FAR _SilphCo4BattleText4 db $50 ; 0x19e26 + 5 bytes SilphCo4EndBattleText4: ; 0x19e2b TX_FAR _SilphCo4EndBattleText4 db $50 ; 0x19e2b + 5 bytes SilphCo4AfterBattleText4: ; 0x19e30 TX_FAR _SilphCo4AfterBattleText4 db $50 ; 0x19e30 + 5 bytes SilphCo4Object: ; 0x19e35 (size=111) db $2e ; border tile db $7 ; warps db $0, $18, $1, SILPH_CO_3F db $0, $1a, $1, SILPH_CO_5F db $0, $14, $0, SILPH_CO_ELEVATOR db $7, $b, $3, SILPH_CO_10F db $3, $11, $3, SILPH_CO_6F db $f, $3, $4, SILPH_CO_10F db $b, $11, $5, SILPH_CO_10F db $0 ; signs db $7 ; people db SPRITE_LAPRAS_GIVER, $2 + 4, $6 + 4, $ff, $ff, $1 ; person db SPRITE_ROCKET, $e + 4, $9 + 4, $ff, $d3, $42, ROCKET + $C8, $1a ; trainer db SPRITE_OAK_AIDE, $6 + 4, $e + 4, $ff, $d2, $43, SCIENTIST + $C8, $5 ; trainer db SPRITE_ROCKET, $a + 4, $1a + 4, $ff, $d1, $44, ROCKET + $C8, $1b ; trainer db SPRITE_BALL, $9 + 4, $3 + 4, $ff, $ff, $85, FULL_HEAL ; item db SPRITE_BALL, $7 + 4, $4 + 4, $ff, $ff, $86, MAX_REVIVE ; item db SPRITE_BALL, $8 + 4, $5 + 4, $ff, $ff, $87, ESCAPE_ROPE ; item ; warp-to EVENT_DISP $f, $0, $18 ; SILPH_CO_3F EVENT_DISP $f, $0, $1a ; SILPH_CO_5F EVENT_DISP $f, $0, $14 ; SILPH_CO_ELEVATOR EVENT_DISP $f, $7, $b ; SILPH_CO_10F EVENT_DISP $f, $3, $11 ; SILPH_CO_6F EVENT_DISP $f, $f, $3 ; SILPH_CO_10F EVENT_DISP $f, $b, $11 ; SILPH_CO_10F SilphCo4Blocks: ; 0x19ea4 135 INCBIN "maps/silphco4.blk" SilphCo5_h: ; 0x19f2b to 0x19f37 (12 bytes) (bank=6) (id=210) db $16 ; tileset db SILPH_CO_5F_HEIGHT, SILPH_CO_5F_WIDTH ; dimensions (y, x) dw SilphCo5Blocks, SilphCo5Texts, SilphCo5Script ; blocks, texts, scripts db $00 ; connections dw SilphCo5Object ; objects SilphCo5Script: ; 0x19f37 call Unnamed_19f4d call $3c3c ld hl, SilphCo5TrainerHeaders ld de, $5fb6 ld a, [$d646] call $3160 ld [$d646], a ret ; 0x19f4d Unnamed_19f4d: ; 0x19f4d INCBIN "baserom.gbc",$19f4d,$6f SilphCo5Texts: ; 0x19fbc dw SilphCo5Text1, SilphCo5Text2, SilphCo5Text3, SilphCo5Text4, SilphCo5Text5, SilphCo5Text6, SilphCo5Text7, SilphCo5Text8, SilphCo5Text9, SilphCo5Text10, SilphCo5Text11 SilphCo5TrainerHeaders: Silphco5TrainerHeader0: ; 0x19fd2 db $2 ; flag's bit db ($1 << 4) ; trainer's view range dw $d82b ; flag's byte dw SilphCo5BattleText2 ; 0x6024 TextBeforeBattle dw SilphCo5AfterBattleText2 ; 0x602e TextAfterBattle dw SilphCo5EndBattleText2 ; 0x6029 TextEndBattle dw SilphCo5EndBattleText2 ; 0x6029 TextEndBattle ; 0x19fde Silphco5TrainerHeader2: ; 0x19fde db $3 ; flag's bit db ($2 << 4) ; trainer's view range dw $d82b ; flag's byte dw SilphCo5BattleText3 ; 0x603d TextBeforeBattle dw SilphCo5AfterBattleText3 ; 0x6047 TextAfterBattle dw SilphCo5EndBattleText3 ; 0x6042 TextEndBattle dw SilphCo5EndBattleText3 ; 0x6042 TextEndBattle ; 0x19fea Silphco5TrainerHeader3: ; 0x19fea db $4 ; flag's bit db ($4 << 4) ; trainer's view range dw $d82b ; flag's byte dw SilphCo5BattleText4 ; 0x6056 TextBeforeBattle dw SilphCo5AfterBattleText4 ; 0x6060 TextAfterBattle dw SilphCo5EndBattleText4 ; 0x605b TextEndBattle dw SilphCo5EndBattleText4 ; 0x605b TextEndBattle ; 0x19ff4 Silphco5TrainerHeader4: ; 0x19ff6 db $5 ; flag's bit db ($3 << 4) ; trainer's view range dw $d82b ; flag's byte dw SilphCo5BattleText5 ; 0x606f TextBeforeBattle dw SilphCo5AfterBattleText5 ; 0x6079 TextAfterBattle dw SilphCo5EndBattleText5 ; 0x6074 TextEndBattle dw SilphCo5EndBattleText5 ; 0x6074 TextEndBattle ; 0x1a002 db $ff SilphCo5Text1: ; 0x1a003 db $08 ; asm ld hl, $6010 ld de, $6015 call $622f jp TextScriptEnd UnnamedText_1a010: ; 0x1a010 TX_FAR _UnnamedText_1a010 db $50 ; 0x1a010 + 5 bytes UnnamedText_1a015: ; 0x1a015 TX_FAR _UnnamedText_1a015 db $50 ; 0x1a015 + 5 bytes SilphCo5Text2: ; 0x1a01a db $08 ; asm ld hl, Silphco5TrainerHeader0 call LoadTrainerHeader jp TextScriptEnd SilphCo5BattleText2: ; 0x1a024 TX_FAR _SilphCo5BattleText2 db $50 ; 0x1a024 + 5 bytes SilphCo5EndBattleText2: ; 0x1a029 TX_FAR _SilphCo5EndBattleText2 db $50 ; 0x1a029 + 5 bytes SilphCo5AfterBattleText2: ; 0x1a02e TX_FAR _SilphCo5AfterBattleText2 db $50 ; 0x1a02e + 5 bytes SilphCo5Text3: ; 0x1a033 db $08 ; asm ld hl, Silphco5TrainerHeader2 call LoadTrainerHeader jp TextScriptEnd SilphCo5BattleText3: ; 0x1a03d TX_FAR _SilphCo5BattleText3 db $50 ; 0x1a03d + 5 bytes SilphCo5EndBattleText3: ; 0x1a042 TX_FAR _SilphCo5EndBattleText3 db $50 ; 0x1a042 + 5 bytes SilphCo5AfterBattleText3: ; 0x1a047 TX_FAR _SilphCo5AfterBattleText3 db $50 ; 0x1a047 + 5 bytes SilphCo5Text4: ; 0x1a04c db $08 ; asm ld hl, Silphco5TrainerHeader3 call LoadTrainerHeader jp TextScriptEnd SilphCo5BattleText4: ; 0x1a056 TX_FAR _SilphCo5BattleText4 db $50 ; 0x1a056 + 5 bytes SilphCo5EndBattleText4: ; 0x1a05b TX_FAR _SilphCo5EndBattleText4 db $50 ; 0x1a05b + 5 bytes SilphCo5AfterBattleText4: ; 0x1a060 TX_FAR _SilphCo5AfterBattleText4 db $50 ; 0x1a060 + 5 bytes SilphCo5Text5: ; 0x1a065 db $08 ; asm ld hl, Silphco5TrainerHeader4 call LoadTrainerHeader jp TextScriptEnd SilphCo5BattleText5: ; 0x1a06f TX_FAR _SilphCo5BattleText5 db $50 ; 0x1a06f + 5 bytes SilphCo5EndBattleText5: ; 0x1a074 TX_FAR _SilphCo5EndBattleText5 db $50 ; 0x1a074 + 5 bytes SilphCo5AfterBattleText5: ; 0x1a079 TX_FAR _SilphCo5AfterBattleText5 db $50 ; 0x1a079 + 5 bytes SilphCo5Text9: ; 0x1a07e TX_FAR _SilphCo5Text9 db $50 SilphCo5Text10: ; 0x1a083 TX_FAR _SilphCo5Text10 db $50 SilphCo5Text11: ; 0x1a088 TX_FAR _SilphCo5Text11 db $50 SilphCo5Object: ; 0x1a08d (size=137) db $2e ; border tile db $7 ; warps db $0, $18, $1, SILPH_CO_6F db $0, $1a, $1, SILPH_CO_4F db $0, $14, $0, SILPH_CO_ELEVATOR db $3, $1b, $5, SILPH_CO_7F db $f, $9, $4, SILPH_CO_9F db $5, $b, $4, SILPH_CO_3F db $f, $3, $5, SILPH_CO_3F db $0 ; signs db $b ; people db SPRITE_LAPRAS_GIVER, $9 + 4, $d + 4, $ff, $ff, $1 ; person db SPRITE_ROCKET, $10 + 4, $8 + 4, $ff, $d3, $42, ROCKET + $C8, $1c ; trainer db SPRITE_OAK_AIDE, $3 + 4, $8 + 4, $ff, $d3, $43, SCIENTIST + $C8, $6 ; trainer db SPRITE_ROCKER, $a + 4, $12 + 4, $ff, $d1, $44, JUGGLER + $C8, $1 ; trainer db SPRITE_ROCKET, $4 + 4, $1c + 4, $ff, $d1, $45, ROCKET + $C8, $1d ; trainer db SPRITE_BALL, $d + 4, $2 + 4, $ff, $ff, $86, TM_09 ; item db SPRITE_BALL, $6 + 4, $4 + 4, $ff, $ff, $87, PROTEIN ; item db SPRITE_BALL, $10 + 4, $15 + 4, $ff, $ff, $88, CARD_KEY ; item db SPRITE_CLIPBOARD, $c + 4, $16 + 4, $ff, $ff, $9 ; person db SPRITE_CLIPBOARD, $a + 4, $19 + 4, $ff, $ff, $a ; person db SPRITE_CLIPBOARD, $6 + 4, $18 + 4, $ff, $ff, $b ; person ; warp-to EVENT_DISP $f, $0, $18 ; SILPH_CO_6F EVENT_DISP $f, $0, $1a ; SILPH_CO_4F EVENT_DISP $f, $0, $14 ; SILPH_CO_ELEVATOR EVENT_DISP $f, $3, $1b ; SILPH_CO_7F EVENT_DISP $f, $f, $9 ; SILPH_CO_9F EVENT_DISP $f, $5, $b ; SILPH_CO_3F EVENT_DISP $f, $f, $3 ; SILPH_CO_3F SilphCo5Blocks: ; 0x1a116 135 INCBIN "maps/silphco5.blk" SilphCo6_h: ; 0x1a19d to 0x1a1a9 (12 bytes) (bank=6) (id=211) db $16 ; tileset db SILPH_CO_6F_HEIGHT, SILPH_CO_6F_WIDTH ; dimensions (y, x) dw SilphCo6Blocks, SilphCo6Texts, SilphCo6Script ; blocks, texts, scripts db $00 ; connections dw SilphCo6Object ; objects SilphCo6Script: ; 0x1a1a9 call Unnamed_1a1bf call $3c3c ld hl, SilphCo6TrainerHeaders ld de, $61f0 ld a, [$d647] call $3160 ld [$d647], a ret ; 0x1a1bf Unnamed_1a1bf: ; 0x1a1bf INCBIN "baserom.gbc",$1a1bf,$37 SilphCo6Texts: ; 0x1a1f6 dw SilphCo6Text1, SilphCo6Text2, SilphCo6Text3, SilphCo6Text4, SilphCo6Text5, SilphCo6Text6, SilphCo6Text7, SilphCo6Text8, SilphCo6Text9, SilphCo6Text10 SilphCo6TrainerHeaders: SilphCo6TrainerHeader0: ; 0x1a20a db $6 ; flag's bit db ($2 << 4) ; trainer's view range dw $d82d ; flag's byte dw SilphCo6BattleText2 ; 0x62ba TextBeforeBattle dw SilphCo6AfterBattleText2 ; 0x62c4 TextAfterBattle dw SilphCo6EndBattleText2 ; 0x62bf TextEndBattle dw SilphCo6EndBattleText2 ; 0x62bf TextEndBattle ; 0x1a216 SilphCo6TrainerHeader2: ; 0x1a216 db $7 ; flag's bit db ($3 << 4) ; trainer's view range dw $d82d ; flag's byte dw SilphCo6BattleText3 ; 0x62d3 TextBeforeBattle dw SilphCo6AfterBattleText3 ; 0x62dd TextAfterBattle dw SilphCo6EndBattleText3 ; 0x62d8 TextEndBattle dw SilphCo6EndBattleText3 ; 0x62d8 TextEndBattle ; 0x1a222 SilphCo6TrainerHeader3: ; 0x1a222 db $8 ; flag's bit db ($2 << 4) ; trainer's view range dw $d82d ; flag's byte dw SilphCo6BattleText4 ; 0x62ec TextBeforeBattle dw SilphCo6AfterBattleText4 ; 0x62f6 TextAfterBattle dw SilphCo6EndBattleText4 ; 0x62f1 TextEndBattle dw SilphCo6EndBattleText4 ; 0x62f1 TextEndBattle ; 0x1a22e db $ff Unnamed_622f: ; 0x1a22f INCBIN "baserom.gbc",$1a22f,$1a23d - $1a22f SilphCo6Text1: ; 0x1a23d db $08 ; asm ld hl, UnnamedText_1a24a ld de, UnnamedText_1a24f call Unnamed_622f jp TextScriptEnd UnnamedText_1a24a: ; 0x1a24a TX_FAR _UnnamedText_1a24a db $50 ; 0x1a24a + 5 bytes UnnamedText_1a24f: ; 0x1a24f TX_FAR _UnnamedText_1a24f db $50 ; 0x1a24f + 5 bytes SilphCo6Text2: ; 0x1a254 db $08 ; asm ld hl, UnnamedText_1a261 ld de, UnnamedText_1a266 call Unnamed_622f jp TextScriptEnd UnnamedText_1a261: ; 0x1a261 TX_FAR _UnnamedText_1a261 db $50 ; 0x1a261 + 5 bytes UnnamedText_1a266: ; 0x1a266 TX_FAR _UnnamedText_1a266 db $50 ; 0x1a266 + 5 bytes SilphCo6Text3: ; 0x1a26b db $08 ; asm ld hl, UnnamedText_1a278 ld de, UnnamedText_1a27d call Unnamed_622f jp TextScriptEnd UnnamedText_1a278: ; 0x1a278 TX_FAR _UnnamedText_1a278 db $50 ; 0x1a278 + 5 bytes UnnamedText_1a27d: ; 0x1a27d TX_FAR _UnnamedText_1a27d db $50 ; 0x1a27d + 5 bytes SilphCo6Text4: ; 0x1a282 db $08 ; asm ld hl, UnnamedText_1a28f ld de, UnnamedText_1a294 call Unnamed_622f jp TextScriptEnd UnnamedText_1a28f: ; 0x1a28f TX_FAR _UnnamedText_1a28f db $50 ; 0x1a28f + 5 bytes UnnamedText_1a294: ; 0x1a294 TX_FAR _UnnamedText_1a294 db $50 ; 0x1a294 + 5 bytes SilphCo6Text5: ; 0x1a299 db $08 ; asm ld hl, UnnamedText_1a2a6 ld de, UnnamedText_1a2ab call Unnamed_622f jp TextScriptEnd UnnamedText_1a2a6: ; 0x1a2a6 TX_FAR _UnnamedText_1a2a6 db $50 ; 0x1a2a6 + 5 bytes UnnamedText_1a2ab: ; 0x1a2ab TX_FAR _UnnamedText_1a2ab db $50 ; 0x1a2ab + 5 bytes SilphCo6Text6: ; 0x1a2b0 db $08 ; asm ld hl, SilphCo6TrainerHeader0 call LoadTrainerHeader jp TextScriptEnd SilphCo6BattleText2: ; 0x1a2ba TX_FAR _SilphCo6BattleText2 db $50 ; 0x1a2ba + 5 bytes SilphCo6EndBattleText2: ; 0x1a2bf TX_FAR _SilphCo6EndBattleText2 db $50 ; 0x1a2bf + 5 bytes SilphCo6AfterBattleText2: ; 0x1a2c4 TX_FAR _SilphCo6AfterBattleText2 db $50 ; 0x1a2c4 + 5 bytes SilphCo6Text7: ; 0x1a2c9 db $08 ; asm ld hl, SilphCo6TrainerHeader2 call LoadTrainerHeader jp TextScriptEnd SilphCo6BattleText3: ; 0x1a2d3 TX_FAR _SilphCo6BattleText3 db $50 ; 0x1a2d3 + 5 bytes SilphCo6EndBattleText3: ; 0x1a2d8 TX_FAR _SilphCo6EndBattleText3 db $50 ; 0x1a2d8 + 5 bytes SilphCo6AfterBattleText3: ; 0x1a2dd TX_FAR _SilphCo6AfterBattleText3 db $50 ; 0x1a2dd + 5 bytes SilphCo6Text8: ; 0x1a2e2 db $08 ; asm ld hl, SilphCo6TrainerHeader3 call LoadTrainerHeader jp TextScriptEnd SilphCo6BattleText4: ; 0x1a2ec TX_FAR _SilphCo6BattleText4 db $50 ; 0x1a2ec + 5 bytes SilphCo6EndBattleText4: ; 0x1a2f1 TX_FAR _SilphCo6EndBattleText4 db $50 ; 0x1a2f1 + 5 bytes SilphCo6AfterBattleText4: ; 0x1a2f6 TX_FAR _SilphCo6AfterBattleText4 db $50 ; 0x1a2f6 + 5 bytes SilphCo6Object: ; 0x1a2fb (size=112) db $2e ; border tile db $5 ; warps db $0, $10, $1, SILPH_CO_7F db $0, $e, $0, SILPH_CO_5F db $0, $12, $0, SILPH_CO_ELEVATOR db $3, $3, $4, SILPH_CO_4F db $3, $17, $6, SILPH_CO_2F db $0 ; signs db $a ; people db SPRITE_LAPRAS_GIVER, $6 + 4, $a + 4, $ff, $ff, $1 ; person db SPRITE_LAPRAS_GIVER, $6 + 4, $14 + 4, $ff, $ff, $2 ; person db SPRITE_ERIKA, $6 + 4, $15 + 4, $ff, $d0, $3 ; person db SPRITE_ERIKA, $a + 4, $b + 4, $ff, $d3, $4 ; person db SPRITE_LAPRAS_GIVER, $d + 4, $12 + 4, $ff, $d1, $5 ; person db SPRITE_ROCKET, $3 + 4, $11 + 4, $ff, $d3, $46, ROCKET + $C8, $1e ; trainer db SPRITE_OAK_AIDE, $8 + 4, $7 + 4, $ff, $d0, $47, SCIENTIST + $C8, $7 ; trainer db SPRITE_ROCKET, $f + 4, $e + 4, $ff, $d2, $48, ROCKET + $C8, $1f ; trainer db SPRITE_BALL, $c + 4, $3 + 4, $ff, $ff, $89, HP_UP ; item db SPRITE_BALL, $f + 4, $2 + 4, $ff, $ff, $8a, X_ACCURACY ; item ; warp-to EVENT_DISP $d, $0, $10 ; SILPH_CO_7F EVENT_DISP $d, $0, $e ; SILPH_CO_5F EVENT_DISP $d, $0, $12 ; SILPH_CO_ELEVATOR EVENT_DISP $d, $3, $3 ; SILPH_CO_4F EVENT_DISP $d, $3, $17 ; SILPH_CO_2F SilphCo6Blocks: ; 0x1a36b 117 INCBIN "maps/silphco6.blk" INCBIN "baserom.gbc",$1a3e0,6376 SECTION "bank7",DATA,BANK[$7] CinnabarIsland_h: ; 0x1c000 to 0x1c022 (34 bytes) (bank=7) (id=8) db $00 ; tileset db CINNABAR_ISLAND_HEIGHT, CINNABAR_ISLAND_WIDTH ; dimensions (y, x) dw CinnabarIslandBlocks, CinnabarIslandTexts, CinnabarIslandScript ; blocks, texts, scripts db NORTH | EAST ; connections ; connections data db ROUTE_21 dw Route21Blocks + (ROUTE_21_HEIGHT - 3) * ROUTE_21_WIDTH ; connection strip location dw $C6EB + 0 ; current map position db ROUTE_21_WIDTH, ROUTE_21_WIDTH ; bigness, width db (ROUTE_21_HEIGHT * 2) - 1, (0 * -2) ; alignments (y, x) dw $C6E9 + ROUTE_21_HEIGHT * (ROUTE_21_WIDTH + 6) ; window db ROUTE_20 dw Route20Blocks + (ROUTE_20_WIDTH * 0) ; connection strip location dw $C6E5 + (CINNABAR_ISLAND_WIDTH + 6) * (0 + 4) ; current map position db ROUTE_20_HEIGHT, ROUTE_20_WIDTH ; bigness, width db (0 * -2), 0 ; alignments (y, x) dw $C6EF + ROUTE_20_WIDTH ; window ; end connections data dw CinnabarIslandObject ; objects CinnabarIslandObject: ; 0x1c022 (size=71) db $43 ; border tile db $5 ; warps db $3, $6, $1, MANSION_1 db $3, $12, $0, CINNABAR_GYM db $9, $6, $0, CINNABAR_LAB_1 db $b, $b, $0, CINNABAR_POKECENTER db $b, $f, $0, CINNABAR_MART db $5 ; signs db $5, $9, $3 ; CinnabarIslandText3 db $b, $10, $4 ; CinnabarIslandText4 db $b, $c, $5 ; CinnabarIslandText5 db $b, $9, $6 ; CinnabarIslandText6 db $3, $d, $7 ; CinnabarIslandText7 db $2 ; people db SPRITE_GIRL, $5 + 4, $c + 4, $fe, $2, $1 ; person db SPRITE_GAMBLER, $6 + 4, $e + 4, $ff, $ff, $2 ; person ; warp-to EVENT_DISP $a, $3, $6 ; MANSION_1 EVENT_DISP $a, $3, $12 ; CINNABAR_GYM EVENT_DISP $a, $9, $6 ; CINNABAR_LAB_1 EVENT_DISP $a, $b, $b ; CINNABAR_POKECENTER EVENT_DISP $a, $b, $f ; CINNABAR_MART CinnabarIslandBlocks: ; 0x1c069 90 INCBIN "maps/cinnabarisland.blk" Route1_h: ; 0x1c0c3 to 0x1c0e5 (34 bytes) (bank=7) (id=12) db $00 ; tileset db ROUTE_1_HEIGHT, ROUTE_1_WIDTH ; dimensions (y, x) dw Route1Blocks, Route1Texts, Route1Script ; blocks, texts, scripts db NORTH | SOUTH ; connections ; connections data db VIRIDIAN_CITY dw ViridianCityBlocks + (VIRIDIAN_CITY_HEIGHT - 3) * VIRIDIAN_CITY_WIDTH + 2, $c6e8 ; pointers (connected, current) (strip) db $10, $14 ; bigness, width db $23, $0a ; alignments (y, x) dw $c8bd ; window db PALLET_TOWN dw PalletTownBlocks, $c83b ; pointers (connected, current) (strip) db $0a, $0a ; bigness, width db $00, $00 ; alignments (y, x) dw $c6f9 ; window ; end connections data dw Route1Object ; objects Route1Object: ; 0x1c0e5 (size=19) db $b ; border tile db $0 ; warps db $1 ; signs db $1b, $9, $3 ; Route1Text3 db $2 ; people db SPRITE_BUG_CATCHER, $18 + 4, $5 + 4, $fe, $1, $1 ; person db SPRITE_BUG_CATCHER, $d + 4, $f + 4, $fe, $2, $2 ; person ; XXX what is this? Unknown_1c0f8: ; 0x1c0f8 db $12, $c7, $7, $2 Route1Blocks: ; 0x1c0fc 180 INCBIN "maps/route1.blk" UndergroundPathEntranceRoute8Blocks: ; 0x1c1b0 16 INCBIN "maps/undergroundpathentranceroute8.blk" OaksLabBlocks: ; 0x1c1c0 30 INCBIN "maps/oakslab.blk" Route16HouseBlocks: Route2HouseBlocks: SaffronHouse1Blocks: SaffronHouse2Blocks: VermilionHouse1Blocks: NameRaterBlocks: LavenderHouse1Blocks: LavenderHouse2Blocks: CeruleanHouse2Blocks: PewterHouse1Blocks: PewterHouse2Blocks: ViridianHouseBlocks: ; 0x1c1de 41DE size=16 INCBIN "maps/viridianhouse.blk" CeladonMansion5Blocks: SchoolBlocks: ; 0x1c1ee 41EE size=16 INCBIN "maps/school.blk" CeruleanHouseTrashedBlocks: ; 0x1c1fe size=16 INCBIN "maps/ceruleanhousetrashed.blk" DiglettsCaveEntranceRoute11Blocks: DiglettsCaveRoute2Blocks: ; 0x1c20e size=16 INCBIN "maps/diglettscaveroute2.blk" MonsterNames: ; 421E db "RHYDON@@@@" db "KANGASKHAN" db "NIDORAN♂@@" db "CLEFAIRY@@" db "SPEAROW@@@" db "VOLTORB@@@" db "NIDOKING@@" db "SLOWBRO@@@" db "IVYSAUR@@@" db "EXEGGUTOR@" db "LICKITUNG@" db "EXEGGCUTE@" db "GRIMER@@@@" db "GENGAR@@@@" db "NIDORAN♀@@" db "NIDOQUEEN@" db "CUBONE@@@@" db "RHYHORN@@@" db "LAPRAS@@@@" db "ARCANINE@@" db "MEW@@@@@@@" db "GYARADOS@@" db "SHELLDER@@" db "TENTACOOL@" db "GASTLY@@@@" db "SCYTHER@@@" db "STARYU@@@@" db "BLASTOISE@" db "PINSIR@@@@" db "TANGELA@@@" db "MISSINGNO." db "MISSINGNO." db "GROWLITHE@" db "ONIX@@@@@@" db "FEAROW@@@@" db "PIDGEY@@@@" db "SLOWPOKE@@" db "KADABRA@@@" db "GRAVELER@@" db "CHANSEY@@@" db "MACHOKE@@@" db "MR.MIME@@@" db "HITMONLEE@" db "HITMONCHAN" db "ARBOK@@@@@" db "PARASECT@@" db "PSYDUCK@@@" db "DROWZEE@@@" db "GOLEM@@@@@" db "MISSINGNO." db "MAGMAR@@@@" db "MISSINGNO." db "ELECTABUZZ" db "MAGNETON@@" db "KOFFING@@@" db "MISSINGNO." db "MANKEY@@@@" db "SEEL@@@@@@" db "DIGLETT@@@" db "TAUROS@@@@" db "MISSINGNO." db "MISSINGNO." db "MISSINGNO." db "FARFETCH'D" db "VENONAT@@@" db "DRAGONITE@" db "MISSINGNO." db "MISSINGNO." db "MISSINGNO." db "DODUO@@@@@" db "POLIWAG@@@" db "JYNX@@@@@@" db "MOLTRES@@@" db "ARTICUNO@@" db "ZAPDOS@@@@" db "DITTO@@@@@" db "MEOWTH@@@@" db "KRABBY@@@@" db "MISSINGNO." db "MISSINGNO." db "MISSINGNO." db "VULPIX@@@@" db "NINETALES@" db "PIKACHU@@@" db "RAICHU@@@@" db "MISSINGNO." db "MISSINGNO." db "DRATINI@@@" db "DRAGONAIR@" db "KABUTO@@@@" db "KABUTOPS@@" db "HORSEA@@@@" db "SEADRA@@@@" db "MISSINGNO." db "MISSINGNO." db "SANDSHREW@" db "SANDSLASH@" db "OMANYTE@@@" db "OMASTAR@@@" db "JIGGLYPUFF" db "WIGGLYTUFF" db "EEVEE@@@@@" db "FLAREON@@@" db "JOLTEON@@@" db "VAPOREON@@" db "MACHOP@@@@" db "ZUBAT@@@@@" db "EKANS@@@@@" db "PARAS@@@@@" db "POLIWHIRL@" db "POLIWRATH@" db "WEEDLE@@@@" db "KAKUNA@@@@" db "BEEDRILL@@" db "MISSINGNO." db "DODRIO@@@@" db "PRIMEAPE@@" db "DUGTRIO@@@" db "VENOMOTH@@" db "DEWGONG@@@" db "MISSINGNO." db "MISSINGNO." db "CATERPIE@@" db "METAPOD@@@" db "BUTTERFREE" db "MACHAMP@@@" db "MISSINGNO." db "GOLDUCK@@@" db "HYPNO@@@@@" db "GOLBAT@@@@" db "MEWTWO@@@@" db "SNORLAX@@@" db "MAGIKARP@@" db "MISSINGNO." db "MISSINGNO." db "MUK@@@@@@@" db "MISSINGNO." db "KINGLER@@@" db "CLOYSTER@@" db "MISSINGNO." db "ELECTRODE@" db "CLEFABLE@@" db "WEEZING@@@" db "PERSIAN@@@" db "MAROWAK@@@" db "MISSINGNO." db "HAUNTER@@@" db "ABRA@@@@@@" db "ALAKAZAM@@" db "PIDGEOTTO@" db "PIDGEOT@@@" db "STARMIE@@@" db "BULBASAUR@" db "VENUSAUR@@" db "TENTACRUEL" db "MISSINGNO." db "GOLDEEN@@@" db "SEAKING@@@" db "MISSINGNO." db "MISSINGNO." db "MISSINGNO." db "MISSINGNO." db "PONYTA@@@@" db "RAPIDASH@@" db "RATTATA@@@" db "RATICATE@@" db "NIDORINO@@" db "NIDORINA@@" db "GEODUDE@@@" db "PORYGON@@@" db "AERODACTYL" db "MISSINGNO." db "MAGNEMITE@" db "MISSINGNO." db "MISSINGNO." db "CHARMANDER" db "SQUIRTLE@@" db "CHARMELEON" db "WARTORTLE@" db "CHARIZARD@" db "MISSINGNO." db "MISSINGNO." db "MISSINGNO." db "MISSINGNO." db "ODDISH@@@@" db "GLOOM@@@@@" db "VILEPLUME@" db "BELLSPROUT" db "WEEPINBELL" db "VICTREEBEL" INCBIN "baserom.gbc",$1c98a,$1c9c1 - $1c98a UnnamedText_1c9c1: ; 0x1c9c1 TX_FAR _UnnamedText_1c9c1 db $50 ; 0x1c9c1 + 5 bytes INCBIN "baserom.gbc",$1c9c6,$1ca14 - $1c9c6 UnnamedText_1ca14: ; 0x1ca14 TX_FAR _UnnamedText_1ca14 db $50 ; 0x1ca14 + 5 bytes CinnabarIslandScript: ; 0x1ca19 call $3c3c ld hl, $d126 set 5, [hl] ld hl, $d796 res 0, [hl] ld hl, $d7a3 res 1, [hl] ld hl, CinnabarIslandScripts ld a, [$d639] jp $3d97 ; 0x1ca34 CinnabarIslandScripts: ; 0x1ca34 dw CinnabarIslandScript0, CinnabarIslandScript1 CinnabarIslandScript0: ; 0x1ca38 ld b, $2b call $3493 ret nz ld a, [$d361] cp $4 ret nz ld a, [$d362] cp $12 ret nz ld a, $8 ld [$d528], a ld a, $8 ld [$ff00+$8c], a call $2920 xor a ld [$ff00+$b4], a ld a, $1 ld [$cd38], a ld a, $80 ld [$ccd3], a call $3486 xor a ld [$c109], a ld [$cd6b], a ld a, $1 ld [$d639], a ret ; 0x1ca73 CinnabarIslandScript1: ; 0x1ca73 ld a, [$cd38] and a ret nz call Delay3 ld a, $0 ld [$d639], a ret ; 0x1ca81 CinnabarIslandTexts: ; 0x1ca81 dw CinnabarIslandText1, CinnabarIslandText2, CinnabarIslandText3, CinnabarIslandText4, CinnabarIslandText5, CinnabarIslandText6, CinnabarIslandText7, CinnabarIslandText8 CinnabarIslandText8: ; 0x1ca91 TX_FAR _CinnabarIslandText8 db $50 ; 0x1ca91 + 5 bytes CinnabarIslandText1: ; 0x1ca96 TX_FAR _CinnabarIslandText1 db $50 CinnabarIslandText2: ; 0x1ca9b TX_FAR _CinnabarIslandText2 db $50 CinnabarIslandText3: ; 0x1caa0 TX_FAR _CinnabarIslandText3 db $50 CinnabarIslandText6: ; 0x1caa5 TX_FAR _CinnabarIslandText6 db $50 CinnabarIslandText7: ; 0x1caaa TX_FAR _CinnabarIslandText7 db $50 Route1Script: ; 0x1caaf jp $3c3c ; 0x1cab2 Route1Texts: ; 0x1cab2 dw Route1Text1, Route1Text2, Route1Text3 Route1Text1: ; 0x1cab8 db $08 ; asm ld hl, $d7bf bit 0, [hl] set 0, [hl] jr nz, .asm_02840 ; 0x1cac0 ld hl, Route1ViridianMartSampleText call PrintText ld bc, (POTION << 8) | 1 call GiveItem jr nc, .asm_a630e ; 0x1cace ld hl, $4ae8 jr .asm_46d43 ; 0x1cad3 .asm_a630e ; 0x1cad5 ld hl, $4af3 jr .asm_46d43 ; 0x1cad8 .asm_02840 ; 0x1cada ld hl, $4aee .asm_46d43 ; 0x1cadd call PrintText jp TextScriptEnd Route1ViridianMartSampleText: ; 0x1cae3 TX_FAR _Route1ViridianMartSampleText db $50 ; 0x1cae3 + 5 bytes INCBIN "baserom.gbc",$1cae8,$1caee - $1cae8 UnnamedText_1caee: ; 0x1caee TX_FAR _UnnamedText_1caee db $50 ; 0x1caee + 5 bytes UnnamedText_1caf3: ; 0x1caf3 TX_FAR _UnnamedText_1caf3 db $50 ; 0x1caf3 + 5 bytes Route1Text2: ; 0x1caf8 TX_FAR _Route1Text2 db $50 Route1Text3: ; 0x1cafd TX_FAR _Route1Text3 db $50 OaksLab_h: ; 0x1cb02 to 0x1cb0e (12 bytes) (bank=7) (id=40) db $05 ; tileset db OAKS_LAB_HEIGHT, OAKS_LAB_WIDTH ; dimensions (y, x) dw OaksLabBlocks, OaksLabTexts, OaksLabScript ; blocks, texts, scripts db $00 ; connections dw OaksLabObject ; objects OaksLabScript: ; 0x1cb0e ld a, [$d74b] bit 6, a call nz, $5076 ld a, $1 ld [$cf0c], a xor a ld [$cc3c], a ld hl, OaksLabScripts ld a, [W_OAKSLABCURSCRIPT] jp $3d97 ; 0x1cb28 OaksLabScripts: ; 0x1cb28 dw OaksLabScript0, OaksLabScript1, OaksLabScript2, OaksLabScript3, OaksLabScript4, OaksLabScript5, OaksLabScript6, OaksLabScript7, OaksLabScript8, OaksLabScript9, OaksLabScript10, OaksLabScript11, OaksLabScript12, OaksLabScript13, OaksLabScript14, OaksLabScript15, OaksLabScript16, OaksLabScript17, OaksLabScript18 OaksLabScript0: ; 0x1cb4e ld a, [$d74b] bit 7, a ret z ld a, [$cf10] and a ret nz ld a, $31 ld [$cc4d], a ld a, $15 call Predef ld hl, $d72e res 4, [hl] ld a, $1 ld [W_OAKSLABCURSCRIPT], a ret ; 0x1cb6e OaksLabScript1: ; 0x1cb6e ld a, $8 ld [$ff00+$8c], a ld de, OakEntryMovement call MoveSprite ld a, $2 ld [W_OAKSLABCURSCRIPT], a ret ; 0x1cb7e OakEntryMovement: ; 0x1cb7e db $40, $40, $40, $ff OaksLabScript2: ; 0x1cb82 ld a, [$d730] bit 0, a ret nz ld a, $31 ld [$cc4d], a ld a, $11 call Predef ld a, $2e ld [$cc4d], a ld a, $15 call Predef ld a, $3 ld [W_OAKSLABCURSCRIPT], a ret ; 0x1cba2 OaksLabScript3: ; 0x1cba2 call Delay3 ld hl, $ccd3 ld de, PlayerEntryMovementRLE call $350c dec a ld [$cd38], a call $3486 ld a, $1 ld [$ff00+$8c], a xor a ld [$ff00+$8d], a call $34a6 ; face object ld a, $5 ld [$ff00+$8c], a xor a ld [$ff00+$8d], a call $34a6 ; face object ld a, $4 ld [W_OAKSLABCURSCRIPT], a ret ; 0x1cbcf PlayerEntryMovementRLE: ; 0x1cbcf db $40, $8, $ff OaksLabScript4: ; 0x1cbd2 ld a, [$cd38] and a ret nz ld hl, $d747 set 0, [hl] ld hl, $d74b set 0, [hl] ld a, $1 ld [$ff00+$8c], a ld a, $4 ld [$ff00+$8d], a call $34a6 ; face object call $2429 ld hl, $d733 res 1, [hl] call $2307 ld a, $5 ld [W_OAKSLABCURSCRIPT], a ret ; 0x1cbfd OaksLabScript5: ; 0x1cbfd ld a, $fc ld [$cd6b], a ld a, $11 ld [$ff00+$8c], a call $2920 call Delay3 ld a, $12 ld [$ff00+$8c], a call $2920 call Delay3 ld a, $13 ld [$ff00+$8c], a call $2920 call Delay3 ld a, $14 ld [$ff00+$8c], a call $2920 ld hl, $d74b set 1, [hl] xor a ld [$cd6b], a ld a, $6 ld [W_OAKSLABCURSCRIPT], a ret ; 0x1cc36 OaksLabScript6: ; 0x1cc36 ld a, [W_YCOORD] cp $6 ret nz ld a, $5 ld [$ff00+$8c], a xor a ld [$ff00+$8d], a call $34a6 ; face object ld a, $1 ld [$ff00+$8c], a xor a ld [$ff00+$8d], a call $34a6 ; face object call $2429 ld a, $c ld [$ff00+$8c], a call $2920 ld a, $1 ld [$cd38], a ld a, $40 ld [$ccd3], a call $3486 ld a, $8 ld [$d528], a ld a, $7 ld [W_OAKSLABCURSCRIPT], a ret ; 0x1cc72 OaksLabScript7: ; 0x1cc72 ld a, [$cd38] and a ret nz call Delay3 ld a, $6 ld [W_OAKSLABCURSCRIPT], a ret ; 0x1cc80 OaksLabScript8: ; 0x1cc80 ld a, [W_PLAYERSTARTER] cp CHARMANDER jr z, .Charmander\@ ; 0x1cc85 $6 cp SQUIRTLE jr z, .Squirtle\@ ; 0x1cc89 $1d jr .Bulbasaur\@ ; 0x1cc8b $38 .Charmander\@ ld de, .MiddleBallMovement1 ld a, [W_YCOORD] cp $4 ; is the player standing below the table? jr z, .asm_1ccf3 ; 0x1cc95 $5c ld de, .MiddleBallMovement2 jr .asm_1ccf3 ; 0x1cc9a $57 .MiddleBallMovement1 db 0,0,$C0,$C0,$C0,$40,$FF .MiddleBallMovement2 db 0,$C0,$C0,$C0,$FF .Squirtle\@ ld de, .RightBallMovement1 ld a, [W_YCOORD] cp $4 ; is the player standing below the table? jr z, .asm_1ccf3 ; 0x1ccb0 $41 ld de, .RightBallMovement2 jr .asm_1ccf3 ; 0x1ccb5 $3c .RightBallMovement1 db 0,0,$C0,$C0,$C0,$C0,$40,$FF .RightBallMovement2 db 0,$C0,$C0,$C0,$C0,$FF .Bulbasaur\@ ld de, .LeftBallMovement1 ld a, [W_XCOORD] cp $9 ; is the player standing to the right of the table? jr nz, .asm_1ccf3 ; 0x1cccd $24 push hl ld a, $1 ld [$ff00+$8c], a ld a, $4 ld [$ff00+$8b], a call $34fc push hl ld [hl], $4c inc hl inc hl ld [hl], $0 pop hl inc h ld [hl], $8 inc hl ld [hl], $9 ld de, .LeftBallMovement2 ; the rival is not currently onscreen, so account for that pop hl jr .asm_1ccf3 ; 0x1cced $4 .LeftBallMovement1 db 0,$C0 ; not yet terminated! .LeftBallMovement2 db $C0,$FF .asm_1ccf3 ld a, $1 ld [$ff00+$8c], a call MoveSprite ld a, $9 ld [W_OAKSLABCURSCRIPT], a ret ; 0x1cd00 OaksLabScript9: ; 0x1cd00 ld a, [$d730] bit 0, a ret nz ld a, $fc ld [$cd6b], a ld a, $1 ld [$ff00+$8c], a ld a, $4 ld [$ff00+$8d], a call $34a6 ; face object ld a, $d ld [$ff00+$8c], a call $2920 ld a, [$cd3e] cp $2 jr nz, .asm_1cd28 ; 0x1cd22 $4 ld a, $2b jr .asm_1cd32 ; 0x1cd26 $a .asm_1cd28 cp $3 jr nz, .asm_1cd30 ; 0x1cd2a $4 ld a, $2c jr .asm_1cd32 ; 0x1cd2e $2 .asm_1cd30 ld a, $2d .asm_1cd32 ld [$cc4d], a ld a, $11 call Predef call Delay3 ld a, [$cd3d] ld [W_RIVALSTARTER], a ld [$cf91], a ld [$d11e], a call GetMonName ld a, $1 ld [$ff00+$8c], a ld a, $4 ld [$ff00+$8d], a call $34a6 ; face object ld a, $e ld [$ff00+$8c], a call $2920 ld hl, $d74b set 2, [hl] xor a ld [$cd6b], a ld a, $a ld [W_OAKSLABCURSCRIPT], a ret ; 0x1cd6d OaksLabScript10: ; 0x1cd6d ld a, [W_YCOORD] cp $6 ret nz ld a, $1 ld [$ff00+$8c], a xor a ld [$ff00+$8d], a call $34a6 ; face object ld a, $8 ld [$d528], a ld c, $2 ld a, $de call $23a1 ; play music ld a, $f ld [$ff00+$8c], a call $2920 ld a, $1 ld [$ff00+$9b], a ld a, $1 swap a ld [$ff00+$95], a ld a, $22 call Predef ld a, [$ff00+$95] dec a ld [$ff00+$95], a ld a, $20 call Predef ld de, $cc97 ld a, $1 ld [$ff00+$8c], a call MoveSprite ld a, $b ld [W_OAKSLABCURSCRIPT], a ret ; 0x1cdb9 OaksLabScript11: ; 0x1cdb9 ld a, [$d730] bit 0, a ret nz ; define which team rival uses, and fight it ld a, SONY1 + 200 ld [W_CUROPPONENT], a ld a, [W_RIVALSTARTER] cp SQUIRTLE jr nz, .NotSquirtle\@ ; 0x1cdc9 $4 ld a, $1 jr .done\@ ; 0x1cdcd $a .NotSquirtle\@ cp BULBASAUR jr nz, .Charmander\@ ; 0x1cdd1 $4 ld a, $2 jr .done\@ ; 0x1cdd5 $2 .Charmander\@ ld a, $3 .done\@ ld [W_TRAINERNO], a ld a, $1 ld [$cf13], a call $32ef ld hl, UnnamedText_1d3be ld de, UnnamedText_1d3c3 call $3354 ld hl, $d72d set 6, [hl] set 7, [hl] xor a ld [$cd6b], a ld a, $8 ld [$d528], a ld a, $c ld [W_OAKSLABCURSCRIPT], a ret ; 0x1ce03 OaksLabScript12: ; 0x1ce03 ld a, $f0 ld [$cd6b], a ld a, $8 ld [$d528], a call $2429 ld a, $1 ld [$cf13], a call $32f9 ld a, $1 ld [$ff00+$8c], a xor a ld [$ff00+$8d], a call $34a6 ; face object ld a, $7 call Predef ld hl, $d74b set 3, [hl] ld a, $d ld [W_OAKSLABCURSCRIPT], a ret ; 0x1ce32 OaksLabScript13: ; 0x1ce32 ld c, $14 call $3739 ld a, $10 ld [$ff00+$8c], a call $2920 ld b, $2 ld hl, $5b47 call Bankswitch ld a, $1 ld [$ff00+$8c], a ld de, .RivalExitMovement call MoveSprite ld a, [W_XCOORD] cp $4 ; move left or right depending on where the player is standing jr nz, .asm_1ce5b ; 0x1ce55 $4 ld a, $c0 jr .asm_1ce5d ; 0x1ce59 $2 .asm_1ce5b ld a, $80 .asm_1ce5d ld [$cc5b], a ld a, $e ld [W_OAKSLABCURSCRIPT], a ret ; 0x1ce66 .RivalExitMovement db $E0,0,0,0,0,0,$FF OaksLabScript14: ; 0x1ce6d ld a, [$d730] bit 0, a jr nz, .asm_1ce8c ; 0x1ce72 $18 ld a, $2a ld [$cc4d], a ld a, $11 call Predef xor a ld [$cd6b], a call $2307 ; reset to map music ld a, $12 ld [W_OAKSLABCURSCRIPT], a jr .done\@ ; 0x1ce8a $23 .asm_1ce8c ld a, [$cf0f] cp $5 jr nz, .asm_1cea8 ; 0x1ce91 $15 ld a, [$d362] cp $4 jr nz, .asm_1cea1 ; 0x1ce98 $7 ld a, $c ld [$c109], a jr .done\@ ; 0x1ce9f $e .asm_1cea1 ld a, $8 ld [$c109], a jr .done\@ ; 0x1cea6 $7 .asm_1cea8 cp $4 ret nz xor a ld [$c109], a .done\@ ret ; 0x1ceb0 OaksLabScript15: ; 0x1ceb0 xor a ld [$ff00+$b4], a call $3c3c ld a, $ff ld [$c0ee], a call $23b1 ld b, $2 ld hl, $5b47 call Bankswitch ld a, $15 ld [$ff00+$8c], a call $2920 call $502b ld a, $2a ld [$cc4d], a ld a, $15 call Predef ld a, [$cd37] ld [$d157], a ld b, $0 ld c, a ld hl, $cc97 ld a, $40 call $36e0 ld [hl], $ff ld a, $1 ld [$ff00+$8c], a ld de, $cc97 call MoveSprite ld a, $10 ld [W_OAKSLABCURSCRIPT], a ret ; 0x1cefd Function1CEFD ; 0x1cefd ld a, $1 ld [$ff00+$8c], a ld a, $4 ld [$ff00+$8d], a call $34a6 ; face object ld a, $8 ld [$ff00+$8c], a xor a ld [$ff00+$8d], a jp $34a6 ; face object ; 0x1cf12 OaksLabScript16: ; 0x1cf12 ld a, [$d730] bit 0, a ret nz call $3c3c call $2307 ld a, $fc ld [$cd6b], a call Function1CEFD ld a, $16 ld [$ff00+$8c], a call $2920 call DelayFrame call Function1CEFD ld a, $17 ld [$ff00+$8c], a call $2920 call DelayFrame call Function1CEFD ld a, $18 ld [$ff00+$8c], a call $2920 call DelayFrame ld a, $19 ld [$ff00+$8c], a call $2920 call Delay3 ld a, $2f ld [$cc4d], a ld a, $11 call Predef ld a, $30 ld [$cc4d], a ld a, $11 call Predef call Function1CEFD ld a, $1a ld [$ff00+$8c], a call $2920 ld a, $1 ld [$ff00+$8c], a ld a, $c ld [$ff00+$8d], a call $34a6 ; face object call Delay3 ld a, $1b ld [$ff00+$8c], a call $2920 ld hl, $d74b set 5, [hl] ld hl, $d74e set 0, [hl] ld a, $1 ld [$cc4d], a ld a, $11 call Predef ld a, $2 ld [$cc4d], a ld a, $15 call Predef ld a, [$d157] ld b, $0 ld c, a ld hl, $cc97 xor a call $36e0 ld [hl], $ff ld a, $ff ld [$c0ee], a call $23b1 ld b, $2 ld hl, $5b47 call Bankswitch ld a, $1 ld [$ff00+$8c], a ld de, $cc97 call MoveSprite ld a, $11 ld [W_OAKSLABCURSCRIPT], a ret ; 0x1cfd4 OaksLabScript17: ; 0x1cfd4 ld a, [$d730] bit 0, a ret nz call $2307 ld a, $2a ld [$cc4d], a ld a, $11 call Predef ld hl, $d7eb set 0, [hl] res 1, [hl] set 7, [hl] ld a, $22 ld [$cc4d], a ld a, $15 call Predef ld a, $5 ld [$d5f1], a xor a ld [$cd6b], a ld a, $12 ld [W_OAKSLABCURSCRIPT], a ret ; 0x1d009 OaksLabScript18: ; 0x1d009 ret ; 0x1d00a Function1D00A: ; 0x1d00a ld hl, W_BAGITEM01 ld bc, $0000 .asm_1d010 ld a, [hli] cp $ff ret z cp OAKS_PARCEL jr z, .GotParcel ; 0x1d016 $4 inc hl inc c jr .asm_1d010 ; 0x1d01a $f4 .GotParcel ld hl, $d31d ld a, c ld [$cf92], a ld a, $1 ld [$cf96], a jp $2bbb ; 0x1d02b INCBIN "baserom.gbc",$1d02b,$1d082-$1d02b OaksLabTexts: ; 0x1d082 dw OaksLabText1, OaksLabText2, OaksLabText3, OaksLabText4, OaksLabText5, OaksLabText6, OaksLabText7, OaksLabText8, OaksLabText9, OaksLabText10, OaksLabText11, OaksLabText12, OaksLabText13, OaksLabText14, OaksLabText15, OaksLabText16, OaksLabText17, OaksLabText18, OaksLabText19, OaksLabText20, OaksLabText21, OaksLabText22, OaksLabText23, OaksLabText24, OaksLabText25, OaksLabText26, OaksLabText27, OaksLabText28, OaksLabText29, OaksLabText30, OaksLabText31, OaksLabText32, OaksLabText33, OaksLabText34, OaksLabText35, OaksLabText36, OaksLabText37, OaksLabText38 OaksLabText28: OaksLabText1: ; 0x1d0ce db $08 ; asm ld a, [$d74b] bit 0, a jr nz, .asm_1d0de ; 0x1d0d4 ld hl, OaksLabGaryText1 call PrintText jr .asm_1d0f0 ; 0x1d0dc .asm_1d0de ; 0x1d0de bit 2, a jr nz, .asm_1d0ea ; 0x1d0e0 ld hl, OaksLabText40 call PrintText jr .asm_1d0f0 ; 0x1d0e8 .asm_1d0ea ; 0x1d0ea ld hl, OaksLabText41 call PrintText .asm_1d0f0 ; 0x1d0f0 jp TextScriptEnd OaksLabGaryText1: ; 0x1d0f3 TX_FAR _OaksLabGaryText1 db $50 ; 0x1d0f8 OaksLabText40: ; 0x1d0f8 TX_FAR _OaksLabText40 db $50 ; 0x1d0f8 + 5 bytes OaksLabText41: ; 0x1d0fd TX_FAR _OaksLabText41 db $50 ; 0x1d0fd + 5 bytes OaksLabText29: OaksLabText2: ; 0x1d102 db $8 ld a, $b1 ld [$cd3d], a ld a, $3 ld [$cd3e], a ld a, $b0 ld b, $2 jr asm_1d133 ; 0x1d111 $20 OaksLabText30: OaksLabText3: ; 0x1d113 db $8 ld a, $99 ld [$cd3d], a ld a, $4 ld [$cd3e], a ld a, $b1 ld b, $3 jr asm_1d133 ; 0x1d122 $f OaksLabText31: OaksLabText4: ; 0x1d124 db $8 ld a, $b0 ld [$cd3d], a ld a, $2 ld [$cd3e], a ld a, $99 ld b, $4 asm_1d133: ; 0x1d133 ld [$cf91], a ld [$d11e], a ld a, b ld [$cf13], a ld a, [$d74b] bit 2, a jp nz, $522d bit 1, a jr nz, asm_1d157 ; 0x1d147 $e ld hl, OaksLabText39 call PrintText jp TextScriptEnd ; 0x1d152 OaksLabText39: ; 0x1d152 TX_FAR _OaksLabText39 db $50 asm_1d157: ; 0x1d157 ld a, $5 ld [$ff00+$8c], a ld a, $9 ld [$ff00+$8b], a call $34fc ld [hl], $0 ; manually fixed some disassembler issues around here ld a, $1 ld [$FF8c], a ld a, $9 ld [$ff00+$8b], a call $34fc ld [hl], $c ld hl, $d730 set 6, [hl] ld a, $46 call Predef ld hl, $d730 res 6, [hl] call ReloadMapData ld c, $a call $3739 ld a, [$cf13] cp $2 jr z, OaksLabLookAtCharmander cp $3 jr z, OaksLabLookAtSquirtle jr OaksLabLookAtBulbasaur OaksLabLookAtCharmander ; 0x1d195 ld hl, OaksLabCharmanderText jr OaksLabMonChoiceMenu OaksLabCharmanderText: ; 0x1d19a TX_FAR _OaksLabCharmanderText ; 0x94e06 db $50 ; 0x1d19f OaksLabLookAtSquirtle: ; 0x1d19f ld hl, OaksLabSquirtleText jr OaksLabMonChoiceMenu OaksLabSquirtleText: ; 0x1d1a4 TX_FAR _OaksLabSquirtleText ; 0x94e2f db $50 ; 0x1d1a9 OaksLabLookAtBulbasaur: ; 0x1d1a9 ld hl, OaksLabBulbasaurText jr OaksLabMonChoiceMenu OaksLabBulbasaurText: ; 0x1d1ae TX_FAR _OaksLabBulbasaurText ; 0x94e57 db $50 ; 0x1d1b3 OaksLabMonChoiceMenu: ; 0x1d1b3 call PrintText ld a, $1 ld [$cc3c], a call $35ec ; yes/no menu ld a, [$cc26] and a jr nz, OaksLabMonChoiceEnd ld a, [$cf91] ld [$d717], a ld [$d11e], a call GetMonName ld a, [$cf13] cp $2 jr nz, asm_1d1db ; 0x1d1d5 $4 ld a, $2b jr asm_1d1e5 ; 0x1d1d9 $a asm_1d1db: ; 0x1d1db cp $3 jr nz, asm_1d1e3 ; 0x1d1dd $4 ld a, $2c jr asm_1d1e5 ; 0x1d1e1 $2 asm_1d1e3: ; 0x1d1e3 ld a, $2d asm_1d1e5: ; 0x1d1e5 ld [$cc4d], a ld a, $11 call Predef ld a, $1 ld [$cc3c], a ld hl, OaksLabMonEnergeticText call PrintText ld hl, OaksLabReceivedMonText call PrintText xor a ld [$cc49], a ld a, $5 ld [$d127], a ld a, [$cf91] ld [$d11e], a call AddPokemonToParty ld hl, $d72e set 3, [hl] ld a, $fc ld [$cd6b], a ld a, $8 ld [W_OAKSLABCURSCRIPT], a OaksLabMonChoiceEnd: ; 0x1d21f jp TextScriptEnd ; 0x1d222 OaksLabMonEnergeticText: ; 0x1d222 TX_FAR _OaksLabMonEnergeticText db $50 ; 0x1d222 + 5 bytes OaksLabReceivedMonText: ; 0x1d227 TX_FAR _OaksLabReceivedMonText ; 0x94ea0 db $11, $50 ; 0x1d22d INCBIN "baserom.gbc",$1d22d,$1d243 - $1d22d OaksLabLastMonText: ; 0x1d243 TX_FAR _OaksLabLastMonText db $50 ; 0x1d248 OaksLabText32: OaksLabText5: ; 0x1d248 db $08 ; asm ld a, [$d747] bit 6, a jr nz, .asm_50e81 ; 0x1d24e ld hl, $d2f7 ld b, $13 call $2b7f ld a, [$d11e] cp $2 jr c, .asm_b28b0 ; 0x1d25d ld a, [$d74b] bit 5, a jr z, .asm_b28b0 ; 0x1d264 .asm_50e81 ; 0x1d266 ld hl, UnnamedText_1d31d call PrintText ld a, $1 ld [$cc3c], a ld a, $56 call Predef jp $52ed .asm_b28b0 ; 0x1d279 ld b,POKE_BALL call $3493 jr nz, .asm_17c30 ; 0x1d27e ld a, [$d7eb] bit 5, a jr nz, .asm_f1adc ; 0x1d285 ld a, [$d74b] bit 5, a jr nz, .asm_333a2 ; 0x1d28c bit 3, a jr nz, .asm_76269 ; 0x1d290 ld a, [$d72e] bit 3, a jr nz, .asm_4a5e0 ; 0x1d297 ld hl, UnnamedText_1d2f0 call PrintText jr .asm_0f042 ; 0x1d29f .asm_4a5e0 ; 0x1d2a1 ld hl, UnnamedText_1d2f5 call PrintText jr .asm_0f042 ; 0x1d2a7 .asm_76269 ; 0x1d2a9 ld b, OAKS_PARCEL call $3493 jr nz, .asm_a8fcf ; 0x1d2ae ld hl, UnnamedText_1d2fa call PrintText jr .asm_0f042 ; 0x1d2b6 .asm_a8fcf ; 0x1d2b8 ld hl, OaksLabDeliverParcelText call PrintText call $500a ld a, $f ld [W_OAKSLABCURSCRIPT], a jr .asm_0f042 ; 0x1d2c6 .asm_333a2 ; 0x1d2c8 ld hl, OaksLabAroundWorldText call PrintText jr .asm_0f042 ; 0x1d2ce .asm_f1adc ; 0x1d2d0 ld hl, $d74b bit 4, [hl] set 4, [hl] jr nz, .asm_17c30 ; 0x1d2d7 ld bc, (POKE_BALL << 8) | 5 call GiveItem ld hl, OaksLabGivePokeballsText call PrintText jr .asm_0f042 ; 0x1d2e5 .asm_17c30 ; 0x1d2e7 ld hl, OaksLabPleaseVisitText call PrintText .asm_0f042 ; 0x1d2ed jp TextScriptEnd ; 0x1d2f0 UnnamedText_1d2f0: ; 0x1d2f0 TX_FAR _UnnamedText_1d2f0 db $50 ; 0x1d2f5 UnnamedText_1d2f5: ; 0x1d2f5 TX_FAR _UnnamedText_1d2f5 db $50 ; 0x1d2fa UnnamedText_1d2fa: ; 0x1d2fa TX_FAR _UnnamedText_1d2fa db $50 ; 0x1d2ff OaksLabDeliverParcelText: ; 0x1d2ff TX_FAR _OaksLabDeliverParcelText1 ; 0x94f69 db $11 TX_FAR _OaksLabDeliverParcelText2 db $50 ; 0x1d309 OaksLabAroundWorldText: ; 0x1d309 TX_FAR _OaksLabAroundWorldText db $50 ; 0x1d30e OaksLabGivePokeballsText: ; 0x1d30e TX_FAR _OaksLabGivePokeballsText1 ; 0x9506d db $11 TX_FAR _OaksLabGivePokeballsText2 db $50 ; 0x1d318 OaksLabPleaseVisitText: ; 0x1d318 TX_FAR _OaksLabPleaseVisitText db $50 ; 0x1d318 + 5 bytes UnnamedText_1d31d: ; 0x1d31d TX_FAR _UnnamedText_1d31d db $50 ; 0x1d31d + 5 bytes OaksLabText34: OaksLabText33: OaksLabText7: ; 0x1d322 OaksLabText6: ; 0x1d322 db $08 ; asm ld hl, UnnamedText_1d32c call PrintText jp TextScriptEnd UnnamedText_1d32c: ; 0x1d32c TX_FAR _UnnamedText_1d32c db $50 ; 0x1d32c + 5 bytes OaksLabText35: OaksLabText8: ; 0x1d331 TX_FAR _OaksLabText8 db $50 OaksLabText36: OaksLabText9: ; 0x1d336 db $08 ; asm ld hl, UnnamedText_1d340 call PrintText jp TextScriptEnd UnnamedText_1d340: ; 0x1d340 TX_FAR _UnnamedText_1d340 db $50 ; 0x1d340 + 5 bytes OaksLabText17: ; 0x1d345 db $8 ld hl, OaksLabRivalWaitingText call PrintText jp TextScriptEnd ; 0x1d34f OaksLabRivalWaitingText: ; 0x1d34f TX_FAR _OaksLabRivalWaitingText db $50 ; 0x1d34f + 5 bytes OaksLabText18: ; 0x1d354 db $8 ld hl, OaksLabChooseMonText call PrintText jp TextScriptEnd ; 0x1d35e OaksLabChooseMonText: ; 0x1d35e TX_FAR _OaksLabChooseMonText db $50 ; 0x1d35e + 5 bytes OaksLabText19: ; 0x1d363 db $8 ld hl, OaksLabRivalInterjectionText call PrintText jp TextScriptEnd ; 0x1d36d OaksLabRivalInterjectionText: ; 0x1d36d TX_FAR _OaksLabRivalInterjectionText db $50 ; 0x1d36d + 5 bytes OaksLabText20: ; 0x1d372 db $8 ld hl, OaksLabBePatientText call PrintText jp TextScriptEnd ; 0x1d37c OaksLabBePatientText: ; 0x1d37c TX_FAR _OaksLabBePatientText db $50 ; 0x1d37c + 5 bytes OaksLabText12: ; 0x1d381 db $8 ld hl, OaksLabLeavingText call PrintText jp TextScriptEnd ; 0x1d38b OaksLabLeavingText: ; 0x1d38b TX_FAR _OaksLabLeavingText db $50 ; 0x1d38b + 5 bytes OaksLabText13: ; 0x1d390 db $8 ld hl, OaksLabRivalPickingMonText call PrintText jp TextScriptEnd ; 0x1d39a OaksLabRivalPickingMonText: ; 0x1d39a TX_FAR _OaksLabRivalPickingMonText db $50 ; 0x1d39f OaksLabText14: ; 0x1d39f db $8 ld hl, OaksLabRivalReceivedMonText call PrintText jp TextScriptEnd ; 0x1d3a9 OaksLabRivalReceivedMonText: ; 0x1d3a9 TX_FAR _OaksLabRivalReceivedMonText ; 0x95461 db $11, $50 ; 0x1d3af OaksLabText15: ; 0x1d3af db $8 ld hl, OaksLabRivalChallengeText call PrintText jp TextScriptEnd ; 0x1d3b9 OaksLabRivalChallengeText: ; 0x1d3b9 TX_FAR _OaksLabRivalChallengeText db $50 ; 0x1d3be UnnamedText_1d3be: ; 0x1d3be TX_FAR _UnnamedText_1d3be db $50 ; 0x1d3c3 UnnamedText_1d3c3: ; 0x1d3c3 TX_FAR _UnnamedText_1d3c3 db $50 ; 0x1d3c8 OaksLabText16: ; 0x1d3c8 db $8 ld hl, OaksLabRivalToughenUpText call PrintText jp TextScriptEnd ; 0x1d3d2 OaksLabRivalToughenUpText: ; 0x1d3d2 TX_FAR _OaksLabRivalToughenUpText db $50 ; 0x1d3d7 OaksLabText21: ; 0x1d3d7 TX_FAR _OaksLabText21 db $50 ; 0x1d3dc OaksLabText22: ; 0x1d3dc TX_FAR _OaksLabText22 db $50 ; 0x1d3e1 OaksLabText23: ; 0x1d3e1 TX_FAR _OaksLabText23 db $50 ; 0x1d3e6 OaksLabText24: ; 0x1d3e6 TX_FAR _OaksLabText24 db $50 ; 0x1d3eb OaksLabText25: ; 0x1d3eb TX_FAR _OaksLabText25 db $11, $50 ; 0x1d3f1 OaksLabText26: ; 0x1d3f1 TX_FAR _OaksLabText26 db $50 ; 0x1d3f6 OaksLabText27: ; 0x1d3f6 TX_FAR _OaksLabText27 db $50 ; 0x1d3fb OaksLabText38: OaksLabText37: OaksLabText11: OaksLabText10: ; 0x1d3fb db $08 ; asm ld hl, UnnamedText_1d405 call PrintText jp TextScriptEnd UnnamedText_1d405: ; 0x1d405 TX_FAR _UnnamedText_1d405 db $50 ; 0x1d405 + 5 bytes OaksLabObject: ; 0x1d40a (size=88) db $3 ; border tile db $2 ; warps db $b, $4, $2, $ff db $b, $5, $2, $ff db $0 ; signs db $b ; people db SPRITE_BLUE, $3 + 4, $4 + 4, $ff, $ff, $41, SONY1 + $C8, $1 ; trainer db SPRITE_BALL, $3 + 4, $6 + 4, $ff, $ff, $2 ; person db SPRITE_BALL, $3 + 4, $7 + 4, $ff, $ff, $3 ; person db SPRITE_BALL, $3 + 4, $8 + 4, $ff, $ff, $4 ; person db SPRITE_OAK, $2 + 4, $5 + 4, $ff, $d0, $5 ; person db SPRITE_BOOK_MAP_DEX, $1 + 4, $2 + 4, $ff, $ff, $6 ; person db SPRITE_BOOK_MAP_DEX, $1 + 4, $3 + 4, $ff, $ff, $7 ; person db SPRITE_OAK, $a + 4, $5 + 4, $ff, $d1, $8 ; person db SPRITE_GIRL, $9 + 4, $1 + 4, $fe, $1, $9 ; person db SPRITE_OAK_AIDE, $a + 4, $2 + 4, $ff, $ff, $a ; person db SPRITE_OAK_AIDE, $a + 4, $8 + 4, $ff, $ff, $b ; person ; warp-to EVENT_DISP $5, $b, $4 EVENT_DISP $5, $b, $5 ViridianMart_h: ; 0x1d462 to 0x1d46e (12 bytes) (bank=7) (id=42) db $02 ; tileset db VIRIDIAN_MART_HEIGHT, VIRIDIAN_MART_WIDTH ; dimensions (y, x) dw ViridianMartBlocks, ViridianMartTexts, ViridianMartScript ; blocks, texts, scripts db $00 ; connections dw ViridianMartObject ; objects ViridianMartScript: ; 0x1d46e call ViridianMartScript_Unknown1d47d call $3c3c ld hl, $5495 ld a, [$d60d] jp $3d97 ; 0x1d47d ViridianMartScript_Unknown1d47d: ; 0x1d47d INCBIN "baserom.gbc",$1d47d,$1e ViridianMartScript0: ; 0x1d49b call $2429 ld a, $4 ld [$ff00+$8c], a call $2920 ld hl, $ccd3 ld de, $54bb call $350c dec a ld [$cd38], a call $3486 ld a, $1 ld [$d60d], a ret ; 0x1d4bb ; XXX UnnamedText_1d4bb: ; 0x1d4bb db $20 TX_RAM $0240 db $ff ViridianMartScript1: ; 0x1d4c0 ld a, [$cd38] and a ret nz call Delay3 ld a, $5 ld [$ff00+$8c], a call $2920 ld bc, $4601 call GiveItem ld hl, $d74e set 1, [hl] ld a, $2 ld [$d60d], a ret ; 0x1d4e0 ViridianMartTexts: ; 0x1d4e0 dw ViridianMartText1, ViridianMartText2, ViridianMartText3 ;, ViridianMartText4 INCBIN "baserom.gbc",$1d4e6,$a ViridianMartText1: ; 0x1d4f0 TX_FAR _ViridianMartText1 db $50 UnnamedText_1d4f5: ; 0x1d4f5 TX_FAR _UnnamedText_1d4f5 db $50 ; 0x1d4f5 + 5 bytes INCBIN "baserom.gbc",$1d4fa,$6 ViridianMartText2: ; 0x1d500 TX_FAR _ViridianMartText2 db $50 ViridianMartText3: ; 0x1d505 TX_FAR _ViridianMartText3 db $50 ViridianMartObject: ; 0x1d50a (size=38) db $0 ; border tile db $2 ; warps db $7, $3, $1, $ff db $7, $4, $1, $ff db $0 ; signs db $3 ; people db SPRITE_MART_GUY, $5 + 4, $0 + 4, $ff, $d3, $1 ; person db SPRITE_BUG_CATCHER, $5 + 4, $5 + 4, $fe, $1, $2 ; person db SPRITE_BLACK_HAIR_BOY_1, $3 + 4, $3 + 4, $ff, $ff, $3 ; person ; warp-to EVENT_DISP $4, $7, $3 EVENT_DISP $4, $7, $4 ViridianMartBlocks: ; 0x1d530 16 INCBIN "maps/viridianmart.blk" School_h: ; 0x1d540 to 0x1d54c (12 bytes) (bank=7) (id=43) db $08 ; tileset db VIRIDIAN_SCHOOL_HEIGHT, VIRIDIAN_SCHOOL_WIDTH ; dimensions (y, x) dw SchoolBlocks, SchoolTexts, SchoolScript ; blocks, texts, scripts db $00 ; connections dw SchoolObject ; objects SchoolScript: ; 0x1d54c jp $3c3c ; 0x1d54f SchoolTexts: ; 0x1d54f dw SchoolText1, SchoolText2 SchoolText1: ; 0x1d553 TX_FAR _SchoolText1 db $50 SchoolText2: ; 0x1d558 TX_FAR _SchoolText2 db $50 SchoolObject: ; 0x1d55d (size=32) db $a ; border tile db $2 ; warps db $7, $2, $2, $ff db $7, $3, $2, $ff db $0 ; signs db $2 ; people db SPRITE_BRUNETTE_GIRL, $5 + 4, $3 + 4, $ff, $d1, $1 ; person db SPRITE_LASS, $1 + 4, $4 + 4, $ff, $d0, $2 ; person ; warp-to EVENT_DISP $4, $7, $2 EVENT_DISP $4, $7, $3 ViridianHouse_h: ; 0x1d57d to 0x1d589 (12 bytes) (bank=7) (id=44) db $08 ; tileset db VIRIDIAN_HOUSE_HEIGHT, VIRIDIAN_HOUSE_WIDTH ; dimensions (y, x) dw ViridianHouseBlocks, ViridianHouseTexts, ViridianHouseScript ; blocks, texts, scripts db $00 ; connections dw ViridianHouseObject ; objects ; 0x1d589 db $0 ViridianHouseScript: ; 0x1d58a jp $3c3c ; 0x1d58d ViridianHouseTexts: ; 0x1d58d dw ViridianHouseText1, ViridianHouseText2, ViridianHouseText3, ViridianHouseText4 ViridianHouseText1: ; 0x1d595 TX_FAR _ViridianHouseText1 db $50 ViridianHouseText2: ; 0x1d59a TX_FAR _ViridianHouseText2 db $50 ViridianHouseText3: ; 0x1d59f db $08 ; asm ld hl, UnnamedText_1d5b1 call PrintText ld a, SPEAROW call $13d0 call $3748 jp TextScriptEnd UnnamedText_1d5b1: ; 0x1d5b1 TX_FAR _UnnamedText_1d5b1 db $50 ; 0x1d5b1 + 5 bytes ViridianHouseText4: ; 0x1d5b6 TX_FAR _ViridianHouseText4 db $50 ViridianHouseObject: ; 0x1d5bb (size=44) db $a ; border tile db $2 ; warps db $7, $2, $3, $ff db $7, $3, $3, $ff db $0 ; signs db $4 ; people db SPRITE_BALDING_GUY, $3 + 4, $5 + 4, $ff, $ff, $1 ; person db SPRITE_LITTLE_GIRL, $4 + 4, $1 + 4, $fe, $1, $2 ; person db SPRITE_BIRD, $5 + 4, $5 + 4, $fe, $2, $3 ; person db SPRITE_CLIPBOARD, $0 + 4, $4 + 4, $ff, $ff, $4 ; person ; warp-to EVENT_DISP $4, $7, $2 EVENT_DISP $4, $7, $3 PewterHouse1_h: ; 0x1d5e7 to 0x1d5f3 (12 bytes) (bank=7) (id=55) db $08 ; tileset db PEWTER_HOUSE_1_HEIGHT, PEWTER_HOUSE_1_WIDTH ; dimensions (y, x) dw PewterHouse1Blocks, PewterHouse1Texts, PewterHouse1Script ; blocks, texts, scripts db $00 ; connections dw PewterHouse1Object ; objects PewterHouse1Script: ; 0x1d5f3 jp $3c3c ; 0x1d5f6 PewterHouse1Texts: ; 0x1d5f6 dw PewterHouse1Text1, PewterHouse1Text2, PewterHouse1Text3 PewterHouse1Text1: ; 0x1d5fc TX_FAR _PewterHouse1Text1 db $08 ; asm ld a, $3 call $13d0 call $3748 jp TextScriptEnd PewterHouse1Text2: ; 0x1d60c TX_FAR _PewterHouse1Text2 db $50 PewterHouse1Text3: ; 0x1d611 TX_FAR _PewterHouse1Text3 db $50 PewterHouse1Object: ; 0x1d616 (size=38) db $a ; border tile db $2 ; warps db $7, $2, $3, $ff db $7, $3, $3, $ff db $0 ; signs db $3 ; people db SPRITE_SLOWBRO, $5 + 4, $4 + 4, $ff, $d2, $1 ; person db SPRITE_YOUNG_BOY, $5 + 4, $3 + 4, $ff, $d3, $2 ; person db SPRITE_FAT_BALD_GUY, $2 + 4, $1 + 4, $ff, $ff, $3 ; person ; warp-to EVENT_DISP $4, $7, $2 EVENT_DISP $4, $7, $3 PewterHouse2_h: ; 0x1d63c to 0x1d648 (12 bytes) (bank=7) (id=57) db $08 ; tileset db PEWTER_HOUSE_2_HEIGHT, PEWTER_HOUSE_2_WIDTH ; dimensions (y, x) dw PewterHouse2Blocks, PewterHouse2Texts, PewterHouse2Script ; blocks, texts, scripts db $00 ; connections dw PewterHouse2Object ; objects PewterHouse2Script: ; 0x1d648 jp $3c3c ; 0x1d64b PewterHouse2Texts: ; 0x1d64b dw PewterHouse2Text1, PewterHouse2Text2 PewterHouse2Text1: ; 0x1d64f TX_FAR _PewterHouse2Text1 db $50 PewterHouse2Text2: ; 0x1d654 TX_FAR _PewterHouse2Text2 db $50 PewterHouse2Object: ; 0x1d659 (size=32) db $a ; border tile db $2 ; warps db $7, $2, $5, $ff db $7, $3, $5, $ff db $0 ; signs db $2 ; people db SPRITE_GAMBLER, $3 + 4, $2 + 4, $ff, $d3, $1 ; person db SPRITE_BUG_CATCHER, $5 + 4, $4 + 4, $ff, $ff, $2 ; person ; warp-to EVENT_DISP $4, $7, $2 EVENT_DISP $4, $7, $3 CeruleanHouseTrashed_h: ; 0x1d679 to 0x1d685 (12 bytes) (bank=7) (id=62) db $08 ; tileset db TRASHED_HOUSE_HEIGHT, TRASHED_HOUSE_WIDTH ; dimensions (y, x) dw CeruleanHouseTrashedBlocks, CeruleanHouseTrashedTexts, CeruleanHouseTrashedScript ; blocks, texts, scripts db $00 ; connections dw CeruleanHouseTrashedObject ; objects CeruleanHouseTrashedScript: ; 0x1d685 call $3c3c ret ; 0x1d689 CeruleanHouseTrashedTexts: ; 0x1d689 dw CeruleanHouseTrashedText1, CeruleanHouseTrashedText2, CeruleanHouseTrashedText3 CeruleanHouseTrashedText1: ; 0x1d68f db $08 ; asm ld b, $e4 ld a, $1c call Predef and b jr z, .asm_f8734 ; 0x1d698 ld hl, UnnamedText_1d6b0 call PrintText jr .asm_8dfe9 ; 0x1d6a0 .asm_f8734 ; 0x1d6a2 ld hl, UnnamedText_1d6ab call PrintText .asm_8dfe9 ; 0x1d6a8 jp TextScriptEnd UnnamedText_1d6ab: ; 0x1d6ab TX_FAR _UnnamedText_1d6ab db $50 ; 0x1d6ab + 5 bytes UnnamedText_1d6b0: ; 0x1d6b0 TX_FAR _UnnamedText_1d6b0 db $50 ; 0x1d6b0 + 5 bytes CeruleanHouseTrashedText2: ; 0x1d6b5 TX_FAR _CeruleanHouseTrashedText2 db $50 CeruleanHouseTrashedText3: ; 0x1d6ba TX_FAR _CeruleanHouseTrashedText3 db $50 CeruleanHouseTrashedObject: ; 0x1d6bf (size=43) db $a ; border tile db $3 ; warps db $7, $2, $0, $ff db $7, $3, $0, $ff db $0, $3, $7, $ff db $1 ; signs db $0, $3, $3 ; CeruleanHouseTrashedText3 db $2 ; people db SPRITE_FISHER, $1 + 4, $2 + 4, $ff, $d0, $1 ; person db SPRITE_GIRL, $6 + 4, $5 + 4, $fe, $2, $2 ; person ; warp-to EVENT_DISP $4, $7, $2 EVENT_DISP $4, $7, $3 EVENT_DISP $4, $0, $3 CeruleanHouse2_h: ; 0x1d6ea to 0x1d6f6 (12 bytes) (bank=7) (id=63) db $08 ; tileset db CERULEAN_HOUSE_HEIGHT, CERULEAN_HOUSE_WIDTH ; dimensions (y, x) dw CeruleanHouse2Blocks, CeruleanHouse2Texts, CeruleanHouse2Script ; blocks, texts, scripts db $00 ; connections dw CeruleanHouse2Object ; objects CeruleanHouse2Script: ; 0x1d6f6 jp $3c3c ; 0x1d6f9 CeruleanHouse2Texts: ; 0x1d6f9 dw CeruleanHouse2Text1, CeruleanHouse2Text2 CeruleanHouse2Text1: ; 0x1d6fd TX_FAR _CeruleanHouse2Text1 db $50 CeruleanHouse2Text2: ; 0x1d702 db $08 ; asm ld a, $6 ld [W_WHICHTRADE], a ld a, $54 call Predef jp TextScriptEnd CeruleanHouse2Object: ; 0x1d710 (size=32) db $a ; border tile db $2 ; warps db $7, $2, $1, $ff db $7, $3, $1, $ff db $0 ; signs db $2 ; people db SPRITE_OLD_MEDIUM_WOMAN, $4 + 4, $5 + 4, $ff, $d2, $1 ; person db SPRITE_GAMBLER, $2 + 4, $1 + 4, $ff, $ff, $2 ; person ; warp-to EVENT_DISP $4, $7, $2 EVENT_DISP $4, $7, $3 BikeShop_h: ; 0x1d730 to 0x1d73c (12 bytes) (bank=7) (id=66) db $15 ; tileset db BIKE_SHOP_HEIGHT, BIKE_SHOP_WIDTH ; dimensions (y, x) dw BikeShopBlocks, BikeShopTexts, BikeShopScript ; blocks, texts, scripts db $00 ; connections dw BikeShopObject ; objects BikeShopScript: ; 0x1d73c jp $3c3c ; 0x1d73f BikeShopTexts: ; 0x1d73f dw BikeShopText1, BikeShopText2, BikeShopText3 BikeShopText1: ; 0x1d745 db $08 ; asm ld a, [$d75f] bit 0, a jr z, .asm_260d4 ; 0x1d74b ld hl, UnnamedText_1d82f call PrintText jp $57f5 .asm_260d4 ; 0x1d756 ld b, BIKE_VOUCHER call $3493 jr z, .asm_41190 ; 0x1d75b ld hl, UnnamedText_1d81f call PrintText ld bc, (BICYCLE << 8) | 1 call GiveItem jr nc, .asm_d0d90 ; 0x1d769 ld a, $2d ldh [$db], a ld b, $5 ; BANK(MyFunction) ld hl, $7f37 ; MyFunction call Bankswitch ld hl, $d75f set 0, [hl] ld hl, UnnamedText_1d824 call PrintText jr .asm_99ef2 ; 0x1d782 .asm_d0d90 ; 0x1d784 ld hl, UnnamedText_1d834 call PrintText jr .asm_99ef2 ; 0x1d78a .asm_41190 ; 0x1d78c ld hl, UnnamedText_1d810 call PrintText xor a ld [$cc26], a ld [$cc2a], a ld a, $3 ld [$cc29], a ld a, $1 ld [$cc28], a ld a, $2 ld [$cc24], a ld a, $1 ld [$cc25], a ld hl, $d730 set 6, [hl] ld hl, $c3a0 ld b, $4 ld c, $f call $1922 call $2429 ld hl, $c3ca ld de, $57f8 call $1955 ld hl, $c3e4 ld de, $5807 call $1955 ld hl, UnnamedText_1d815 call PrintText call $3abe bit 1, a jr nz, .asm_b7579 ; 0x1d7dc ld hl, $d730 res 6, [hl] ld a, [$cc26] and a jr nz, .asm_b7579 ; 0x1d7e7 ld hl, UnnamedText_1d81a call PrintText .asm_b7579 ; 0x1d7ef ld hl, UnnamedText_1d82a call PrintText .asm_99ef2 ; 0x1d7f5 jp TextScriptEnd INCBIN "baserom.gbc",$1d7f8,$1d810 - $1d7f8 UnnamedText_1d810: ; 0x1d810 TX_FAR _UnnamedText_1d810 db $50 ; 0x1d810 + 5 bytes UnnamedText_1d815: ; 0x1d815 TX_FAR _UnnamedText_1d815 db $50 ; 0x1d815 + 5 bytes UnnamedText_1d81a: ; 0x1d81a TX_FAR _UnnamedText_1d81a db $50 ; 0x1d81a + 5 bytes UnnamedText_1d81f: ; 0x1d81f TX_FAR _UnnamedText_1d81f db $50 ; 0x1d81f + 5 bytes UnnamedText_1d824: ; 0x1d824 TX_FAR _UnnamedText_1d824 ; 0x98eb2 db $11, $50 UnnamedText_1d82a: ; 0x1d82a TX_FAR _UnnamedText_1d82a db $50 ; 0x1d82a + 5 bytes UnnamedText_1d82f: ; 0x1d82f TX_FAR _UnnamedText_1d82f db $50 ; 0x1d82f + 5 bytes UnnamedText_1d834: ; 0x1d834 TX_FAR _UnnamedText_1d834 db $50 ; 0x1d834 + 5 bytes BikeShopText2: ; 0x1d839 db $08 ; asm ld hl, UnnamedText_1d843 call PrintText jp TextScriptEnd UnnamedText_1d843: ; 0x1d843 TX_FAR _UnnamedText_1d843 db $50 ; 0x1d843 + 5 bytes BikeShopText3: ; 0x1d848 db $08 ; asm ld a, [$d75f] bit 0, a ld hl, UnnamedText_1d861 jr nz, .asm_34d2d ; 0x1d851 ld hl, UnnamedText_1d85c .asm_34d2d ; 0x1d856 call PrintText jp TextScriptEnd UnnamedText_1d85c: ; 0x1d85c TX_FAR _UnnamedText_1d85c db $50 ; 0x1d85c + 5 bytes UnnamedText_1d861: ; 0x1d861 TX_FAR _UnnamedText_1d861 db $50 ; 0x1d861 + 5 bytes BikeShopObject: ; 0x1d866 (size=38) db $e ; border tile db $2 ; warps db $7, $2, $4, $ff db $7, $3, $4, $ff db $0 ; signs db $3 ; people db SPRITE_BIKE_SHOP_GUY, $2 + 4, $6 + 4, $ff, $ff, $1 ; person db SPRITE_MOM_GEISHA, $6 + 4, $5 + 4, $fe, $1, $2 ; person db SPRITE_BUG_CATCHER, $3 + 4, $1 + 4, $ff, $d1, $3 ; person ; warp-to EVENT_DISP $4, $7, $2 EVENT_DISP $4, $7, $3 BikeShopBlocks: ; 0x1d88c 16 INCBIN "maps/bikeshop.blk" LavenderHouse1_h: ; 0x1d89c to 0x1d8a8 (12 bytes) (bank=7) (id=149) db $08 ; tileset db LAVENDER_HOUSE_1_HEIGHT, LAVENDER_HOUSE_1_WIDTH ; dimensions (y, x) dw LavenderHouse1Blocks, LavenderHouse1Texts, LavenderHouse1Script ; blocks, texts, scripts db $00 ; connections dw LavenderHouse1Object ; objects LavenderHouse1Script: ; 0x1d8a8 call $3c3c ret ; 0x1d8ac LavenderHouse1Texts: ; 0x1d8ac dw LavenderHouse1Text1, LavenderHouse1Text2, LavenderHouse1Text3, LavenderHouse1Text4, LavenderHouse1Text5, LavenderHouse1Text6 LavenderHouse1Text1: ; 0x1d8b8 db $08 ; asm ld a, [$d7e0] bit 7, a jr nz, .asm_72e5d ; 0x1d8be ld hl, UnnamedText_1d8d1 call PrintText jr .asm_6957f ; 0x1d8c6 .asm_72e5d ; 0x1d8c8 ld hl, UnnamedText_1d8d6 call PrintText .asm_6957f ; 0x1d8ce jp TextScriptEnd UnnamedText_1d8d1: ; 0x1d8d1 TX_FAR _UnnamedText_1d8d1 db $50 ; 0x1d8d1 + 5 bytes UnnamedText_1d8d6: ; 0x1d8d6 TX_FAR _UnnamedText_1d8d6 db $50 ; 0x1d8d6 + 5 bytes LavenderHouse1Text2: ; 0x1d8db db $08 ; asm ld a, [$d7e0] bit 7, a jr nz, .asm_06470 ; 0x1d8e1 ld hl, UnnamedText_1d8f4 call PrintText jr .asm_3d208 ; 0x1d8e9 .asm_06470 ; 0x1d8eb ld hl, UnnamedText_1d8f9 call PrintText .asm_3d208 ; 0x1d8f1 jp TextScriptEnd UnnamedText_1d8f4: ; 0x1d8f4 TX_FAR _UnnamedText_1d8f4 db $50 ; 0x1d8f4 + 5 bytes UnnamedText_1d8f9: ; 0x1d8f9 TX_FAR _UnnamedText_1d8f9 db $50 ; 0x1d8f9 + 5 bytes LavenderHouse1Text3: ; 0x1d8fe TX_FAR _LavenderHouse1Text3 db $8 ld a, $2f call $13d0 jp TextScriptEnd LavenderHouse1Text4: ; 0x1d90b TX_FAR _LavenderHouse1Text4 db $8 ld a, $a7 call $13d0 jp TextScriptEnd ; 0x1d918 LavenderHouse1Text5: ; 0x1d918 db $08 ; asm ld a, [$d76c] bit 0, a jr nz, .asm_15ac2 ; 0x1d91e ld hl, UnnamedText_1d94c call PrintText ld bc, (POKE_FLUTE << 8) | 1 call GiveItem jr nc, .asm_5ce36 ; 0x1d92c ld hl, ReceivedFluteText call PrintText ld hl, $d76c set 0, [hl] jr .asm_da749 ; 0x1d939 .asm_5ce36 ; 0x1d93b ld hl, FluteNoRoomText call PrintText jr .asm_da749 ; 0x1d941 .asm_15ac2 ; 0x1d943 ld hl, MrFujiAfterFluteText call PrintText .asm_da749 ; 0x1d949 jp TextScriptEnd UnnamedText_1d94c: ; 0x1d94c TX_FAR _UnnamedText_1d94c db $50 ; 0x1d94c + 5 bytes ReceivedFluteText: ; 0x1d951 TX_FAR _ReceivedFluteText ; 0x99ffb db $11 TX_FAR _FluteExplanationText ; 0x9a011 db $50 ; 0x1d95b FluteNoRoomText: ; 0x1d95b TX_FAR _FluteNoRoomText db $50 ; 0x1d95b + 5 bytes MrFujiAfterFluteText: ; 0x1d960 TX_FAR _MrFujiAfterFluteText db $50 ; 0x1d960 + 5 bytes LavenderHouse1Text6: ; 0x1d965 TX_FAR _LavenderHouse1Text6 db $50 LavenderHouse1Object: ; 0x1d96a (size=56) db $a ; border tile db $2 ; warps db $7, $2, $2, $ff db $7, $3, $2, $ff db $0 ; signs db $6 ; people db SPRITE_BLACK_HAIR_BOY_2, $5 + 4, $3 + 4, $ff, $ff, $1 ; person db SPRITE_LITTLE_GIRL, $3 + 4, $6 + 4, $ff, $d0, $2 ; person db SPRITE_SLOWBRO, $4 + 4, $6 + 4, $ff, $d1, $3 ; person db SPRITE_SLOWBRO, $3 + 4, $1 + 4, $ff, $ff, $4 ; person db SPRITE_MR_FUJI, $1 + 4, $3 + 4, $ff, $ff, $5 ; person db SPRITE_BOOK_MAP_DEX, $3 + 4, $3 + 4, $ff, $ff, $6 ; person ; warp-to EVENT_DISP $4, $7, $2 EVENT_DISP $4, $7, $3 LavenderHouse2_h: ; 0x1d9a2 to 0x1d9ae (12 bytes) (bank=7) (id=151) db $08 ; tileset db LAVENDER_HOUSE_2_HEIGHT, LAVENDER_HOUSE_2_WIDTH ; dimensions (y, x) dw LavenderHouse2Blocks, LavenderHouse2Texts, LavenderHouse2Script ; blocks, texts, scripts db $00 ; connections dw LavenderHouse2Object ; objects LavenderHouse2Script: ; 0x1d9ae call $3c3c ret ; 0x1d9b2 LavenderHouse2Texts: ; 0x1d9b2 dw LavenderHouse2Text1, LavenderHouse2Text2 LavenderHouse2Text1: ; 0x1d9b6 TX_FAR _LavenderHouse2Text1 db $8 ld a, $11 call $13d0 jp TextScriptEnd ; 0x1d9c3 LavenderHouse2Text2: ; 0x1d9c3 db $08 ; asm ld a, [$d7e0] bit 7, a jr nz, .asm_65711 ; 0x1d9c9 ld hl, UnnamedText_1d9dc call PrintText jr .asm_64be1 ; 0x1d9d1 .asm_65711 ; 0x1d9d3 ld hl, UnnamedText_1d9e1 call PrintText .asm_64be1 ; 0x1d9d9 jp TextScriptEnd UnnamedText_1d9dc: ; 0x1d9dc TX_FAR _UnnamedText_1d9dc db $50 ; 0x1d9dc + 5 bytes UnnamedText_1d9e1: ; 0x1d9e1 TX_FAR _UnnamedText_1d9e1 db $50 ; 0x1d9e1 + 5 bytes LavenderHouse2Object: ; 0x1d9e6 (size=32) db $a ; border tile db $2 ; warps db $7, $2, $4, $ff db $7, $3, $4, $ff db $0 ; signs db $2 ; people db SPRITE_SLOWBRO, $5 + 4, $3 + 4, $ff, $d1, $1 ; person db SPRITE_BRUNETTE_GIRL, $4 + 4, $2 + 4, $ff, $d3, $2 ; person ; warp-to EVENT_DISP $4, $7, $2 EVENT_DISP $4, $7, $3 NameRater_h: ; 0x1da06 to 0x1da12 (12 bytes) (bank=7) (id=229) db $08 ; tileset db NAME_RATERS_HOUSE_HEIGHT, NAME_RATERS_HOUSE_WIDTH ; dimensions (y, x) dw NameRaterBlocks, $5a54, NameRaterScript ; blocks, texts, scripts db $00 ; connections dw NameRaterObject ; objects NameRaterScript: ; 0x1da12 jp $3c3c ; 0x1da15 INCBIN "baserom.gbc",$1da15,$41 NameRaterText1: ; 0x1da56 db $8 call $36f4 ld hl, UnnamedText_1dab3 call $5a15 jr nz, .asm_1daae ; 0x1da60 $4c ld hl, UnnamedText_1dab8 call PrintText xor a ld [$d07d], a ld [$cfcb], a ld [$cc35], a call $13fc push af call $3dd4 call $3dbe call $20ba pop af jr c, .asm_1daae ; 0x1da80 $2c call $15b4 call $5a20 ld hl, UnnamedText_1dad1 jr c, .asm_1daa8 ; 0x1da8b $1b ld hl, UnnamedText_1dabd call $5a15 jr nz, .asm_1daae ; 0x1da93 $19 ld hl, UnnamedText_1dac2 call PrintText ld b, $1 ld hl, $655c call Bankswitch jr c, .asm_1daae ; 0x1daa3 $9 ld hl, UnnamedText_1dac7 .asm_1daa8 call PrintText jp TextScriptEnd .asm_1daae ld hl, UnnamedText_1dacc jr .asm_1daa8 ; 0x1dab1 $f5 ; 0x1dab3 UnnamedText_1dab3: ; 0x1dab3 TX_FAR _UnnamedText_1dab3 db $50 ; 0x1dab3 + 5 bytes UnnamedText_1dab8: ; 0x1dab8 TX_FAR _UnnamedText_1dab8 db $50 ; 0x1dab8 + 5 bytes UnnamedText_1dabd: ; 0x1dabd TX_FAR _UnnamedText_1dabd db $50 ; 0x1dabd + 5 bytes UnnamedText_1dac2: ; 0x1dac2 TX_FAR _UnnamedText_1dac2 db $50 ; 0x1dac2 + 5 bytes UnnamedText_1dac7: ; 0x1dac7 TX_FAR _UnnamedText_1dac7 db $50 ; 0x1dac7 + 5 bytes UnnamedText_1dacc: ; 0x1dacc TX_FAR _UnnamedText_1dacc db $50 ; 0x1dacc + 5 bytes UnnamedText_1dad1: ; 0x1dad1 TX_FAR _UnnamedText_1dad1 db $50 ; 0x1dad1 + 5 bytes NameRaterObject: ; 0x1dad6 (size=26) db $a ; border tile db $2 ; warps db $7, $2, $5, $ff db $7, $3, $5, $ff db $0 ; signs db $1 ; people db SPRITE_MR_MASTERBALL, $3 + 4, $5 + 4, $ff, $d2, $1 ; person ; warp-to EVENT_DISP $4, $7, $2 EVENT_DISP $4, $7, $3 VermilionHouse1_h: ; 0x1daf0 to 0x1dafc (12 bytes) (bank=7) (id=93) db $08 ; tileset db VERMILION_HOUSE_1_HEIGHT, VERMILION_HOUSE_1_WIDTH ; dimensions (y, x) dw VermilionHouse1Blocks, VermilionHouse1Texts, VermilionHouse1Script ; blocks, texts, scripts db $00 ; connections dw VermilionHouse1Object ; objects VermilionHouse1Script: ; 0x1dafc call $3c3c ret ; 0x1db00 VermilionHouse1Texts: ; 0x1db00 dw VermilionHouse1Text1, VermilionHouse1Text2, VermilionHouse1Text3 VermilionHouse1Text1: ; 0x1db06 TX_FAR _VermilionHouse1Text1 db $50 VermilionHouse1Text2: ; 0x1db0b TX_FAR _VermilionHouse1Text2 db $08 ; asm ld a, $24 call $13d0 call $3748 jp TextScriptEnd VermilionHouse1Text3: ; 0x1db1b TX_FAR _VermilionHouse1Text3 db $50 INCBIN "baserom.gbc", $1db1b + 5, $1db20 - ($1db1b + 5) VermilionHouse1Object: ; 0x1db20 (size=38) db $a ; border tile db $2 ; warps db $7, $2, $4, $ff db $7, $3, $4, $ff db $0 ; signs db $3 ; people db SPRITE_BUG_CATCHER, $3 + 4, $5 + 4, $ff, $d2, $1 ; person db SPRITE_BIRD, $5 + 4, $3 + 4, $fe, $2, $2 ; person db SPRITE_PAPER_SHEET, $3 + 4, $4 + 4, $ff, $ff, $3 ; person ; warp-to EVENT_DISP $4, $7, $2 EVENT_DISP $4, $7, $3 VermilionDock_h: ; 0x1db46 to 0x1db52 (12 bytes) (bank=7) (id=94) db $0e ; tileset db VERMILION_DOCK_HEIGHT, VERMILION_DOCK_WIDTH ; dimensions (y, x) dw VermilionDockBlocks, VermilionDockTexts, VermilionDockScript ; blocks, texts, scripts db $00 ; connections dw VermilionDockObject ; objects VermilionDockScript: ; 0x1db52 call $3c3c ld hl, $d803 bit 4, [hl] jr nz, .asm_1db8d ; 0x1db5a $31 bit 0, [hl] ret z ld a, [$d42f] cp $1 ret nz bit 2, [hl] jp z, $5b9b set 4, [hl] call Delay3 ld hl, $d730 set 7, [hl] ld hl, $ccd3 ld a, $40 ld [hli], a ld [hli], a ld [hl], a ld a, $3 ld [$cd38], a xor a ld [$c206], a ld [$cd3b], a dec a ld [$cd6b], a ret .asm_1db8d bit 5, [hl] ret nz ld a, [$cd38] and a ret nz ld [$cd6b], a set 5, [hl] ret ; 0x1db9b INCBIN "baserom.gbc",$1db9b,$1dcbf - $1db9b VermilionDockTexts: ; 0x1dcbf db $c1, $5c UnnamedText_1dcc1: ; 0x1dcc1 TX_FAR _UnnamedText_1dcc1 db $50 ; 0x1dcc1 + 5 bytes VermilionDockObject: ; 0x1dcc6 (size=20) db $f ; border tile db $2 ; warps db $0, $e, $5, $ff db $2, $e, $1, SS_ANNE_1 db $0 ; signs db $0 ; people ; warp-to EVENT_DISP $e, $0, $e EVENT_DISP $e, $2, $e ; SS_ANNE_1 VermilionDockBlocks: ; 0x1dcda 84 INCBIN "maps/vermiliondock.blk" CeladonMansion5_h: ; 0x1dd2e to 0x1dd3a (12 bytes) (bank=7) (id=132) db $08 ; tileset db CELADON_MANSION_5_HEIGHT, CELADON_MANSION_5_WIDTH ; dimensions (y, x) dw CeladonMansion5Blocks, CeladonMansion5Texts, CeladonMansion5Script ; blocks, texts, scripts db $00 ; connections dw CeladonMansion5Object ; objects CeladonMansion5Script: ; 0x1dd3a jp $3c3c ; 0x1dd3d CeladonMansion5Texts: ; 0x1dd3d dw CeladonMansion5Text1, CeladonMansion5Text2 CeladonMansion5Text1: ; 0x1dd41 TX_FAR _CeladonMansion5Text1 db $50 CeladonMansion5Text2: ; 0x1dd46 db $08 ; asm ld bc,(EEVEE << 8) | 25 call GivePokemon jr nc, .asm_24365 ; 0x1dd4d ld a, $45 ld [$cc4d], a ld a, $11 call Predef .asm_24365 ; 0x1dd59 jp TextScriptEnd CeladonMansion5Object: ; 0x1dd5c (size=32) db $a ; border tile db $2 ; warps db $7, $2, $2, CELADON_MANSION_4 db $7, $3, $2, CELADON_MANSION_4 db $0 ; signs db $2 ; people db SPRITE_HIKER, $2 + 4, $2 + 4, $ff, $d0, $1 ; person db SPRITE_BALL, $3 + 4, $4 + 4, $ff, $ff, $2 ; person ; warp-to EVENT_DISP $4, $7, $2 ; CELADON_MANSION_4 EVENT_DISP $4, $7, $3 ; CELADON_MANSION_4 FuchsiaMart_h: ; 0x1dd7c to 0x1dd88 (12 bytes) (bank=7) (id=152) db $02 ; tileset db FUCHSIA_MART_HEIGHT, FUCHSIA_MART_WIDTH ; dimensions (y, x) dw FuchsiaMartBlocks, FuchsiaMartTexts, FuchsiaMartScript ; blocks, texts, scripts db $00 ; connections dw FuchsiaMartObject ; objects FuchsiaMartScript: ; 0x1dd88 jp $3c3c ; 0x1dd8b FuchsiaMartTexts: ; 0x1dd8b dw FuchsiaMartText1, FuchsiaMartText2, FuchsiaMartText3 FuchsiaMartText2: ; 0x1dd91 TX_FAR _FuchsiaMartText2 db $50 FuchsiaMartText3: ; 0x1dd96 TX_FAR _FuchsiaMartText3 db $50 FuchsiaMartObject: ; 0x1dd9b (size=38) db $0 ; border tile db $2 ; warps db $7, $3, $0, $ff db $7, $4, $0, $ff db $0 ; signs db $3 ; people db SPRITE_MART_GUY, $5 + 4, $0 + 4, $ff, $d3, $1 ; person db SPRITE_FAT_BALD_GUY, $2 + 4, $4 + 4, $ff, $ff, $2 ; person db SPRITE_LASS, $5 + 4, $6 + 4, $fe, $1, $3 ; person ; warp-to EVENT_DISP $4, $7, $3 EVENT_DISP $4, $7, $4 FuchsiaMartBlocks: ; 0x1ddc1 16 INCBIN "maps/fuchsiamart.blk" SaffronHouse1_h: ; 0x1ddd1 to 0x1dddd (12 bytes) (bank=7) (id=179) db $08 ; tileset db SAFFRON_HOUSE_1_HEIGHT, SAFFRON_HOUSE_1_WIDTH ; dimensions (y, x) dw SaffronHouse1Blocks, SaffronHouse1Texts, SaffronHouse1Script ; blocks, texts, scripts db $00 ; connections dw SaffronHouse1Object ; objects SaffronHouse1Script: ; 0x1dddd jp $3c3c ; 0x1dde0 SaffronHouse1Texts: ; 0x1dde0 dw SaffronHouse1Text1, SaffronHouse1Text2, SaffronHouse1Text3, SaffronHouse1Text4 SaffronHouse1Text1: ; 0x1dde8 TX_FAR _SaffronHouse1Text1 db $50 SaffronHouse1Text2: ; 0x1dded TX_FAR _SaffronHouse1Text2 db $8 ld a, $24 call $13d0 jp TextScriptEnd ; 0x1ddfa SaffronHouse1Text3: ; 0x1ddfa TX_FAR _SaffronHouse1Text3 db $50 SaffronHouse1Text4: ; 0x1ddff TX_FAR _SaffronHouse1Text4 db $50 SaffronHouse1Object: ; 0x1de04 (size=44) db $a ; border tile db $2 ; warps db $7, $2, $3, $ff db $7, $3, $3, $ff db $0 ; signs db $4 ; people db SPRITE_BRUNETTE_GIRL, $3 + 4, $2 + 4, $ff, $d3, $1 ; person db SPRITE_BIRD, $4 + 4, $0 + 4, $fe, $1, $2 ; person db SPRITE_BUG_CATCHER, $1 + 4, $4 + 4, $ff, $d0, $3 ; person db SPRITE_PAPER_SHEET, $3 + 4, $3 + 4, $ff, $ff, $4 ; person ; warp-to EVENT_DISP $4, $7, $2 EVENT_DISP $4, $7, $3 SaffronHouse2_h: ; 0x1de30 to 0x1de3c (12 bytes) (bank=7) (id=183) db $08 ; tileset db SAFFRON_HOUSE_2_HEIGHT, SAFFRON_HOUSE_2_WIDTH ; dimensions (y, x) dw SaffronHouse2Blocks, SaffronHouse2Texts, SaffronHouse2Script ; blocks, texts, scripts db $00 ; connections dw SaffronHouse2Object ; objects SaffronHouse2Script: ; 0x1de3c jp $3c3c ; 0x1de3f SaffronHouse2Texts: ; 0x1de3f dw SaffronHouse2Text1 SaffronHouse2Text1: ; 0x1de41 db $08 ; asm ld a, [$d7bd] bit 0, a jr nz, .asm_9e72b ; 0x1de47 ld hl, TM29PreReceiveText call PrintText ld bc,(TM_29 << 8) | 1 call GiveItem jr nc, .asm_4b1da ; 0x1de55 ld hl, ReceivedTM29Text call PrintText ld hl, $d7bd set 0, [hl] jr .asm_fe4e1 ; 0x1de62 .asm_4b1da ; 0x1de64 ld hl, TM29NoRoomText call PrintText jr .asm_fe4e1 ; 0x1de6a .asm_9e72b ; 0x1de6c ld hl, TM29ExplanationText call PrintText .asm_fe4e1 ; 0x1de72 jp TextScriptEnd TM29PreReceiveText: ; 0x1de75 TX_FAR _TM29PreReceiveText db $50 ; 0x1de75 + 5 bytes ReceivedTM29Text: ; 0x1de7a TX_FAR _ReceivedTM29Text ; 0xa252a db $0B, $50 ; 0x1de80 TM29ExplanationText: ; 0x1de80 TX_FAR _TM29ExplanationText db $50 ; 0x1de80 + 5 bytes TM29NoRoomText: ; 0x1de85 TX_FAR _TM29NoRoomText db $50 ; 0x1de85 + 5 bytes SaffronHouse2Object: ; 0x1de8a (size=26) db $a ; border tile db $2 ; warps db $7, $2, $7, $ff db $7, $3, $7, $ff db $0 ; signs db $1 ; people db SPRITE_FISHER, $3 + 4, $5 + 4, $ff, $d2, $1 ; person ; warp-to EVENT_DISP $4, $7, $2 EVENT_DISP $4, $7, $3 DiglettsCaveRoute2_h: ; 0x1dea4 to 0x1deb0 (12 bytes) (bank=7) (id=46) db $11 ; tileset db DIGLETTS_CAVE_EXIT_HEIGHT, DIGLETTS_CAVE_EXIT_WIDTH ; dimensions (y, x) dw DiglettsCaveRoute2Blocks, DiglettsCaveRoute2Texts, DiglettsCaveRoute2Script ; blocks, texts, scripts db $00 ; connections dw DiglettsCaveRoute2Object ; objects DiglettsCaveRoute2Script: ; 0x1deb0 ld a, $d ld [$d365], a jp $3c3c ; 0x1deb8 DiglettsCaveRoute2Texts: ; 0x1deb8 dw DiglettsCaveRoute2Text1 DiglettsCaveRoute2Text1: ; 0x1deba TX_FAR _DiglettsCaveRoute2Text1 db $50 DiglettsCaveRoute2Object: ; 0x1debf (size=34) db $7d ; border tile db $3 ; warps db $7, $2, $0, $ff db $7, $3, $0, $ff db $4, $4, $0, DIGLETTS_CAVE db $0 ; signs db $1 ; people db SPRITE_FISHER, $3 + 4, $3 + 4, $ff, $ff, $1 ; person ; warp-to EVENT_DISP $4, $7, $2 EVENT_DISP $4, $7, $3 EVENT_DISP $4, $4, $4 ; DIGLETTS_CAVE Route2House_h: ; 0x1dee1 to 0x1deed (12 bytes) (bank=7) (id=48) db $08 ; tileset db ROUTE_2_HOUSE_HEIGHT, ROUTE_2_HOUSE_WIDTH ; dimensions (y, x) dw Route2HouseBlocks, Route2HouseTexts, Route2HouseScript ; blocks, texts, scripts db $00 ; connections dw Route2HouseObject ; objects Route2HouseScript: ; 0x1deed jp $3c3c ; 0x1def0 Route2HouseTexts: ; 0x1def0 dw Route2HouseText1, Route2HouseText2 Route2HouseText1: ; 0x1def4 TX_FAR _Route2HouseText1 db $50 Route2HouseText2: ; 0x1def9 db $08 ; asm ld a, $1 ld [W_WHICHTRADE], a ld a, $54 call Predef jp TextScriptEnd Route2HouseObject: ; 0x1df07 (size=32) db $a ; border tile db $2 ; warps db $7, $2, $2, $ff db $7, $3, $2, $ff db $0 ; signs db $2 ; people db SPRITE_OAK_AIDE, $4 + 4, $2 + 4, $ff, $d3, $1 ; person db SPRITE_GAMEBOY_KID_COPY, $1 + 4, $4 + 4, $ff, $d0, $2 ; person ; warp-to EVENT_DISP $4, $7, $2 EVENT_DISP $4, $7, $3 Route5Gate_h: ; 0x1df27 to 0x1df33 (12 bytes) (bank=7) (id=70) db $0c ; tileset db ROUTE_5_GATE_HEIGHT, ROUTE_5_GATE_WIDTH ; dimensions (y, x) dw Route5GateBlocks, Route5GateTexts, Route5GateScript ; blocks, texts, scripts db $00 ; connections dw Route5GateObject ; objects Route5GateScript: ; 0x1df33 call $3c3c ld a, [$d662] ld hl, Route5GateScripts jp $3d97 ; 0x1df3f Route5GateScripts: ; 0x1df3f dw Route5GateScript0 INCBIN "baserom.gbc",$1df41,$f Route5GateScript0: ; 0x1df50 ld a, [$d728] bit 6, a ret nz ld hl, $5f8f call $34bf ret nc ld a, $2 ld [$d528], a xor a ld [$ff00+$b4], a ld b, $16 ld hl, $659f call Bankswitch ld a, [$ff00+$db] and a jr nz, .asm_1df82 ; 0x1df70 $10 ld a, $2 ld [$ff00+$8c], a call $2920 call $5f43 ld a, $1 ld [$d662], a ret .asm_1df82 ld a, $3 ld [$ff00+$8c], a call $2920 ld hl, $d728 set 6, [hl] ret ; 0x1df8f INCBIN "baserom.gbc",$1df8f,$15 Route5GateTexts: ; 0x1dfa4 dw Route5GateText1, Route5GateText2, Route5GateText3 Route8GateText1: Route7GateText1: Route6GateText1: Route5GateText1: ; 0x1dfaa db $8 ld a, [$d728] bit 6, a jr nz, .asm_88856 ; 0x1dfb0 $2c ld b, $16 ld hl, $659f call Bankswitch ld a, [$ff00+$db] and a jr nz, .asm_768a2 ; 0x1dfbd $11 ld hl, UnnamedText_1dfe7 call PrintText call $5f43 ld a, $1 ld [$d662], a jp TextScriptEnd .asm_768a2 ; 0x1dfd0 ld hl, UnnamedText_1dfec call PrintText ld hl, $d728 set 6, [hl] jp TextScriptEnd .asm_88856 ; 0x1dfde ld hl, UnnamedText_1dff6 call PrintText jp TextScriptEnd ; 0x1dfe7 Route8GateText2: Route7GateText2: Route6GateText2: Route5GateText2: ; 0x1dfe7 UnnamedText_1dfe7: ; 0x1dfe7 TX_FAR _UnnamedText_1dfe7 db $50 ; 0x1dfe7 + 5 bytes Route8GateText3: Route7GateText3: Route6GateText3: Route5GateText3: ; 0x1dfec UnnamedText_1dfec: ; 0x1dfec TX_FAR _UnnamedText_8aaa9 ; 0x8aaa9 db $11 TX_FAR _UnnamedText_1dff1 ; 0x8aaef db $50 ; 0x1dff6 UnnamedText_1dff6: ; 0x1dff6 TX_FAR _UnnamedText_1dff6 db $50 ; 0x1dff6 + 5 bytes Route5GateObject: ; 0x1dffb (size=42) db $a ; border tile db $4 ; warps db $5, $3, $2, $ff db $5, $4, $2, $ff db $0, $3, $1, $ff db $0, $4, $0, $ff db $0 ; signs db $1 ; people db SPRITE_GUARD, $3 + 4, $1 + 4, $ff, $d3, $1 ; person ; warp-to EVENT_DISP $4, $5, $3 EVENT_DISP $4, $5, $4 EVENT_DISP $4, $0, $3 EVENT_DISP $4, $0, $4 Route5GateBlocks: ; 0x1e025 12 INCBIN "maps/route5gate.blk" Route6Gate_h: ; 0x1e031 to 0x1e03d (12 bytes) (bank=7) (id=73) db $0c ; tileset db ROUTE_6_GATE_HEIGHT, ROUTE_6_GATE_WIDTH ; dimensions (y, x) dw Route6GateBlocks, Route6GateTexts, Route6GateScript ; blocks, texts, scripts db $00 ; connections dw Route6GateObject ; objects Route6GateScript: ; 0x1e03d call $3c3c ld hl, Route6GateScripts ld a, [$d636] call $3d97 ret ; 0x1e04a Route6GateScripts: ; 0x1e04a dw Route6GateScript0, Route6GateScript1 Route6GateScript0: ; 0x1e04e ld a, [$d728] bit 6, a ret nz ld hl, Unknown_1e08c call $34bf ret nc ld a, $1 ld [$d528], a xor a ld [$ff00+$b4], a ld b, $16 ld hl, $659f call Bankswitch ld a, [$ff00+$db] and a jr nz, .asm_1e080 ; 0x1e06e $10 ld a, $2 ld [$ff00+$8c], a call $2920 call Unknown_1e0a1 ld a, $1 ld [$d636], a ret .asm_1e080 ld hl, $d728 set 6, [hl] ld a, $3 ld [$ff00+$8c], a jp $2920 ; 0x1e08c Unknown_1e08c: ; 0x1e08c ld [bc], a inc bc ld [bc], a inc b rst $38 Route6GateScript1: ; 0x1e091 ld a, [$cd38] and a ret nz call Delay3 xor a ld [$cd6b], a ld [$d636], a ret ; 0x1e0a1 Unknown_1e0a1: ; 0x1e0a1 ld hl, $d730 set 7, [hl] ld a, $80 ld [$ccd3], a ld a, $1 ld [$cd38], a xor a ld [$c206], a ld [$cd3b], a ret ; 0x1e0b8 Route6GateTexts: ; 0x1e0b8 dw Route6GateText1, Route6GateText2, Route6GateText3 Route6GateObject: ; 0x1e0be (size=42) db $a ; border tile db $4 ; warps db $5, $3, $2, $ff db $5, $4, $2, $ff db $0, $3, $1, $ff db $0, $4, $1, $ff db $0 ; signs db $1 ; people db SPRITE_GUARD, $2 + 4, $6 + 4, $ff, $d2, $1 ; person ; warp-to EVENT_DISP $4, $5, $3 EVENT_DISP $4, $5, $4 EVENT_DISP $4, $0, $3 EVENT_DISP $4, $0, $4 Route6GateBlocks: ; 0x1e0e8 12 INCBIN "maps/route6gate.blk" Route7Gate_h: ; 0x1e0f4 to 0x1e100 (12 bytes) (bank=7) (id=76) db $0c ; tileset db ROUTE_7_GATE_HEIGHT, ROUTE_7_GATE_WIDTH ; dimensions (y, x) dw Route7GateBlocks, Route7GateTexts, Route7GateScript ; blocks, texts, scripts db $00 ; connections dw Route7GateObject ; objects Route7GateScript: ; 0x1e100 call $3c3c ld a, [$d663] ld hl, Route7GateScripts call $3d97 ret ; 0x1e10d Route7GateScripts: ; 0x1e10d dw Route7GateScript0 INCBIN "baserom.gbc",$1e10f,$19 Route7GateScript0: ; 0x1e128 ld a, [$d728] bit 6, a ret nz ld hl, $6167 call $34bf ret nc ld a, $8 ld [$d528], a xor a ld [$ff00+$b4], a ld b, $16 ld hl, $659f call Bankswitch ld a, [$ff00+$db] and a jr nz, .asm_1e15a ; 0x1e148 $10 ld a, $2 ld [$ff00+$8c], a call $2920 call $6111 ld a, $1 ld [$d663], a ret .asm_1e15a ld a, $3 ld [$ff00+$8c], a call $2920 ld hl, $d728 set 6, [hl] ret ; 0x1e167 INCBIN "baserom.gbc",$1e167,$18 Route7GateTexts: ; 0x1e17f dw Route7GateText1, Route7GateText2, Route7GateText3 Route7GateObject: ; 0x1e185 (size=42) db $a ; border tile db $4 ; warps db $3, $0, $3, $ff db $4, $0, $3, $ff db $3, $5, $0, $ff db $4, $5, $1, $ff db $0 ; signs db $1 ; people db SPRITE_GUARD, $1 + 4, $3 + 4, $ff, $d0, $1 ; person ; warp-to EVENT_DISP $3, $3, $0 EVENT_DISP $3, $4, $0 EVENT_DISP $3, $3, $5 EVENT_DISP $3, $4, $5 Route7GateBlocks: ; 0x1e1af 12 INCBIN "maps/route7gate.blk" Route8Gate_h: ; 0x1e1bb to 0x1e1c7 (12 bytes) (bank=7) (id=79) db $0c ; tileset db ROUTE_8_GATE_HEIGHT, ROUTE_8_GATE_WIDTH ; dimensions (y, x) dw Route8GateBlocks, Route8GateTexts, Route8GateScript ; blocks, texts, scripts db $00 ; connections dw Route8GateObject ; objects Route8GateScript: ; 0x1e1c7 call $3c3c ld hl, Route8GateScripts ld a, [$d637] jp $3d97 ; 0x1e1d3 Route8GateScripts: ; 0x1e1d3 dw Route8GateScript0 INCBIN "baserom.gbc",$1e1d5,$19 Route8GateScript0: ; 0x1e1ee ld a, [$d728] bit 6, a ret nz ld hl, $622c call $34bf ret nc ld a, $2 ld [$d528], a xor a ld [$ff00+$b4], a ld b, $16 ld hl, $659f call Bankswitch ld a, [$ff00+$db] and a jr nz, .asm_1e220 ; 0x1e20e $10 ld a, $2 ld [$ff00+$8c], a call $2920 call $61d7 ld a, $1 ld [$d637], a ret .asm_1e220 ld hl, $d728 set 6, [hl] ld a, $3 ld [$ff00+$8c], a jp $2920 ; 0x1e22c INCBIN "baserom.gbc",$1e22c,$15 Route8GateTexts: ; 0x1e241 dw Route8GateText1, Route8GateText2, Route8GateText3 Route8GateObject: ; 0x1e247 (size=42) db $a ; border tile db $4 ; warps db $3, $0, $0, $ff db $4, $0, $1, $ff db $3, $5, $2, $ff db $4, $5, $3, $ff db $0 ; signs db $1 ; people db SPRITE_GUARD, $1 + 4, $2 + 4, $ff, $d0, $1 ; person ; warp-to EVENT_DISP $3, $3, $0 EVENT_DISP $3, $4, $0 EVENT_DISP $3, $3, $5 EVENT_DISP $3, $4, $5 Route8GateBlocks: ; 0x1e271 12 INCBIN "maps/route8gate.blk" UndergroundPathEntranceRoute8_h: ; 0x1e27d to 0x1e289 (12 bytes) (bank=7) (id=80) db $0c ; tileset db PATH_ENTRANCE_ROUTE_8_HEIGHT, PATH_ENTRANCE_ROUTE_8_WIDTH ; dimensions (y, x) dw UndergroundPathEntranceRoute8Blocks, UndergroundPathEntranceRoute8Texts, UndergroundPathEntranceRoute8Script ; blocks, texts, scripts db $00 ; connections dw UndergroundPathEntranceRoute8Object ; objects UndergroundPathEntranceRoute8Script: ; 0x1e289 ld a, $13 ld [$d365], a jp $3c3c ; 0x1e291 UndergroundPathEntranceRoute8Texts: ; 0x1e291 dw UndergroundPathEntranceRoute8Text1 ;XXX wtf? syntax error UndergroundPathEntranceRoute8Text1: ; 0x1e293 db $17, $8d, $42, $23 ;TX_FAR _UndergroundPathEntranceRoute8Text1 db $50 UndergroundPathEntranceRoute8Object: ; 0x1e298 (size=34) db $a ; border tile db $3 ; warps db $7, $3, $4, $ff db $7, $4, $4, $ff db $4, $4, $1, UNDERGROUND_PATH_WE db $0 ; signs db $1 ; people db SPRITE_GIRL, $4 + 4, $3 + 4, $ff, $ff, $1 ; person ; warp-to EVENT_DISP $4, $7, $3 EVENT_DISP $4, $7, $4 EVENT_DISP $4, $4, $4 ; UNDERGROUND_PATH_WE PowerPlant_h: ; 0x1e2ba to 0x1e2c6 (12 bytes) (bank=7) (id=83) db $16 ; tileset db POWER_PLANT_HEIGHT, POWER_PLANT_WIDTH ; dimensions (y, x) dw PowerPlantBlocks, PowerPlantTexts, PowerPlantScript ; blocks, texts, scripts db $00 ; connections dw PowerPlantObject ; objects PowerPlantScript: ; 0x1e2c6 call $3c3c ld hl, $62fb ld de, PowerPlantScript_Unknown1e2d9 ld a, [$d663] call $3160 ld [$d663], a ret ; 0x1e2d9 PowerPlantScript_Unknown1e2d9: ; 0x1e2d9 INCBIN "baserom.gbc",$1e2d9,$6 PowerPlantTexts: ; 0x1e2df dw PowerPlantText1, PowerPlantText2, PowerPlantText3, PowerPlantText4, PowerPlantText5, PowerPlantText6, PowerPlantText7, PowerPlantText8, PowerPlantText9, PowerPlantText10, PowerPlantText11, PowerPlantText12, PowerPlantText13, PowerPlantText14 INCBIN "baserom.gbc",$1e2fb,$6d asm_234cc: call $31cc ld a, [$da39] ld [$d663], a jp TextScriptEnd ; 0x1e374 PowerPlantText1: ; 0x1e374 db $8 ; asm ld hl, $62fb jr asm_234cc ; 0x1e378 $ee PowerPlantText2: ; 0x1e37a db $8 ; asm ld hl, $6307 jr asm_234cc ; 0x1e37e $e8 PowerPlantText3: ; 0x1e380 db $8 ; asm ld hl, $6313 jr asm_234cc ; 0x1e384 $e2 PowerPlantText4: ; 0x1e386 db $8 ; asm ld hl, $631f jr asm_234cc ; 0x1e38a $dc PowerPlantText5: db $8 ; asm ld hl, $632b jr asm_234cc ; 0x1e390 $d6 PowerPlantText6: ; 0x1e392 db $8 ; asm ld hl, $6337 jr asm_234cc ; 0x1e396 $d0 PowerPlantText7: ; 0x1e398 db $8 ; asm ld hl, $6343 jr asm_234cc ; 0x1e39c $ca PowerPlantText8: ; 0x1e39e db $8 ; asm ld hl, $634f jr asm_234cc ; 0x1e3a2 $c4 PowerPlantText9: ; 0x1e3a4 db $8 ; asm ld hl, $635b jr asm_234cc ; 0x1e3a8 $be ; 0x1e3aa UnnamedText_1e3aa: ; 0x1e3aa TX_FAR _UnnamedText_1e3aa ; 0x8c5e2 db $50 ; 0x1e3af UnnamedText_1e3af: ; 0x1e3af TX_FAR _UnnamedText_1e3af ; 0x8c5ea db $8 ld a, $4b call $13d0 call $3748 jp TextScriptEnd ; 0x1e3bf PowerPlantObject: ; 0x1e3bf (size=135) db $2e ; border tile db $3 ; warps db $23, $4, $3, $ff db $23, $5, $3, $ff db $b, $0, $3, $ff db $0 ; signs db $e ; people db SPRITE_BALL, $14 + 4, $9 + 4, $ff, $ff, $41, VOLTORB, $28 ; trainer db SPRITE_BALL, $12 + 4, $20 + 4, $ff, $ff, $42, VOLTORB, $28 ; trainer db SPRITE_BALL, $19 + 4, $15 + 4, $ff, $ff, $43, VOLTORB, $28 ; trainer db SPRITE_BALL, $12 + 4, $19 + 4, $ff, $ff, $44, ELECTRODE, $2b ; trainer db SPRITE_BALL, $22 + 4, $17 + 4, $ff, $ff, $45, VOLTORB, $28 ; trainer db SPRITE_BALL, $1c + 4, $1a + 4, $ff, $ff, $46, VOLTORB, $28 ; trainer db SPRITE_BALL, $e + 4, $15 + 4, $ff, $ff, $47, ELECTRODE, $2b ; trainer db SPRITE_BALL, $20 + 4, $25 + 4, $ff, $ff, $48, VOLTORB, $28 ; trainer db SPRITE_BIRD, $9 + 4, $4 + 4, $ff, $d1, $49, ZAPDOS, $32 ; trainer db SPRITE_BALL, $19 + 4, $7 + 4, $ff, $ff, $8a, CARBOS ; item db SPRITE_BALL, $3 + 4, $1c + 4, $ff, $ff, $8b, HP_UP ; item db SPRITE_BALL, $3 + 4, $22 + 4, $ff, $ff, $8c, RARE_CANDY ; item db SPRITE_BALL, $20 + 4, $1a + 4, $ff, $ff, $8d, TM_25 ; item db SPRITE_BALL, $20 + 4, $14 + 4, $ff, $ff, $8e, TM_33 ; item ; warp-to EVENT_DISP $14, $23, $4 EVENT_DISP $14, $23, $5 EVENT_DISP $14, $b, $0 PowerPlantBlocks: ; 0x1e446 360 INCBIN "maps/powerplant.blk" DiglettsCaveEntranceRoute11_h: ; 0x1e5ae to 0x1e5ba (12 bytes) (bank=7) (id=85) db $11 ; tileset db DIGLETTS_CAVE_ENTRANCE_HEIGHT, DIGLETTS_CAVE_ENTRANCE_WIDTH ; dimensions (y, x) dw DiglettsCaveEntranceRoute11Blocks, DiglettsCaveEntranceRoute11Texts, DiglettsCaveEntranceRoute11Script ; blocks, texts, scripts db $00 ; connections dw DiglettsCaveEntranceRoute11Object ; objects DiglettsCaveEntranceRoute11Script: ; 0x1e5ba call $3c3c ld a, $16 ld [$d365], a ret ; 0x1e5c3 DiglettsCaveEntranceRoute11Texts: ; 0x1e5c3 dw DiglettsCaveEntranceRoute11Text1 ; XXX wtf? syntax error DiglettsCaveEntranceRoute11Text1: ; 0x1e5c5 db $17, $f9, $47, $23 ;TX_FAR _DiglettsCaveEntranceRoute11Text1 db $50 DiglettsCaveEntranceRoute11Object: ; 0x1e5ca (size=34) db $7d ; border tile db $3 ; warps db $7, $2, $4, $ff db $7, $3, $4, $ff db $4, $4, $1, DIGLETTS_CAVE db $0 ; signs db $1 ; people db SPRITE_GAMBLER, $3 + 4, $2 + 4, $ff, $ff, $1 ; person ; warp-to EVENT_DISP $4, $7, $2 EVENT_DISP $4, $7, $3 EVENT_DISP $4, $4, $4 ; DIGLETTS_CAVE Route16House_h: ; 0x1e5ec to 0x1e5f8 (12 bytes) (bank=7) (id=188) db $08 ; tileset db ROUTE_16_HOUSE_HEIGHT, ROUTE_16_HOUSE_WIDTH ; dimensions (y, x) dw Route16HouseBlocks, Route16HouseTexts, Route16HouseScript ; blocks, texts, scripts db $00 ; connections dw Route16HouseObject ; objects Route16HouseScript: ; 0x1e5f8 jp $3c3c ; 0x1e5fb Route16HouseTexts: ; 0x1e5fb dw Route16HouseText1, Route16HouseText2 Route16HouseText1: ; 0x1e5ff db $08 ; asm ld a, [$d7e0] bit 6, a ld hl, HM02ExplanationText jr nz, .asm_13616 ; 0x1e608 ld hl, Route16HouseText3 call PrintText ld bc, (HM_02 << 8) | 1 call GiveItem jr nc, .asm_d3ee3 ; 0x1e616 ld hl, $d7e0 set 6, [hl] ld hl, ReceivedHM02Text jr .asm_13616 ; 0x1e620 .asm_d3ee3 ; 0x1e622 ld hl, HM02NoRoomText .asm_13616 ; 0x1e625 call PrintText jp TextScriptEnd Route16HouseText3: ; 0x1e62b TX_FAR _Route16HouseText3 db $50 ; 0x1e62b + 5 bytes ReceivedHM02Text: ; 0x1e630 TX_FAR _ReceivedHM02Text ; 0x8ce66 db $11, $50 HM02ExplanationText: ; 0x1e636 TX_FAR _HM02ExplanationText db $50 ; 0x1e636 + 5 bytes HM02NoRoomText: ; 0x1e63b TX_FAR _HM02NoRoomText db $50 ; 0x1e63b + 5 bytes Route16HouseText2: ; 0x1e640 db $08 ; asm ld hl, UnnamedText_1e652 call PrintText ld a, FEAROW call $13d0 call $3748 jp TextScriptEnd UnnamedText_1e652: ; 0x1e652 TX_FAR _UnnamedText_1e652 db $50 ; 0x1e652 + 5 bytes Route16HouseObject: ; 0x1e657 (size=32) db $a ; border tile db $2 ; warps db $7, $2, $8, $ff db $7, $3, $8, $ff db $0 ; signs db $2 ; people db SPRITE_BRUNETTE_GIRL, $3 + 4, $2 + 4, $ff, $d3, $1 ; person db SPRITE_BIRD, $4 + 4, $6 + 4, $fe, $0, $2 ; person ; warp-to EVENT_DISP $4, $7, $2 EVENT_DISP $4, $7, $3 Route22Gate_h: ; 0x1e677 to 0x1e683 (12 bytes) (bank=7) (id=193) db $0c ; tileset db ROUTE_22_GATE_HEIGHT, ROUTE_22_GATE_WIDTH ; dimensions (y, x) dw Route22GateBlocks, Route22GateTexts, Route22GateScript ; blocks, texts, scripts db $00 ; connections dw Route22GateObject ; objects Route22GateScript: ; 0x1e683 call $3c3c ld hl, Route22GateScripts ld a, [$d60e] call $3d97 ld a, [$d361] cp $4 ld a, $22 jr c, .asm_1e69a ; 0x1e696 $2 ld a, $21 .asm_1e69a ld [$d365], a ret ; 0x1e69e Route22GateScripts: ; 0x1e69e dw Route22GateScript0, Route22GateScript1, Route22GateScript2 Route22GateScript0: ; 0x1e6a4 ld hl, Route22GateScript3 call $34bf ret nc xor a ld [$ff00+$b4], a ld a, $1 ld [$ff00+$8c], a jp $2920 ; 0x1e6b5 Route22GateScript3: ; 0x1e6b5 ld [bc], a inc b ld [bc], a dec b rst $38 ld a, $1 ld [$cd38], a ld a, $80 ld [$ccd3], a ld [$c109], a ld [$cd6b], a jp $3486 ; 0x1e6cd Route22GateScript1: ; 0x1e6cd ld a, [$cd38] and a ret nz xor a ld [$cd6b], a call Delay3 ld a, $0 ld [$d60e], a Route22GateScript2: ; 0x1e6de ret ; 0x1e6df Route22GateTexts: ; 0x1e6df dw Route22GateText1 Route22GateText1: ; 0x1e6e1 db $8 ld a, [$d356] bit 0, a jr nz, .asm_8a809 ; 0x1e6e7 $d ld hl, UnnamedText_1e704 call PrintText call $66ba ld a, $1 jr .asm_20f7e ; 0x1e6f4 $8 .asm_8a809 ; 0x1e6f6 ld hl, UnnamedText_1e71a call PrintText ld a, $2 .asm_20f7e ; 0x1e6fe ld [$d60e], a jp TextScriptEnd ; 0x1e704 UnnamedText_1e704: ; 0x1e704 TX_FAR _UnnamedText_1e704 ; 0x8cfbb db $8 ld a, $a5 call $3740 call $3748 ld hl, $6715 ret ; 0x1e715 UnnamedText_1e715: ; 0x1e715 TX_FAR _UnnamedText_1e715 db $50 ; 0x1e71a UnnamedText_1e71a: ; 0x1e71a TX_FAR _UnnamedText_1e71a ; 0x8d03e db $0B, $50 ; 0x1e720 Route22GateObject: ; 0x1e720 (size=42) db $a ; border tile db $4 ; warps db $7, $4, $0, $ff db $7, $5, $0, $ff db $0, $4, $0, $ff db $0, $5, $1, $ff db $0 ; signs db $1 ; people db SPRITE_GUARD, $2 + 4, $6 + 4, $ff, $d2, $1 ; person ; warp-to EVENT_DISP $5, $7, $4 EVENT_DISP $5, $7, $5 EVENT_DISP $5, $0, $4 EVENT_DISP $5, $0, $5 Route22GateBlocks: ; 0x1e74a 20 INCBIN "maps/route22gate.blk" BillsHouse_h: ; 0x1e75e to 0x1e76a (12 bytes) (bank=7) (id=88) db $10 ; tileset db BILLS_HOUSE_HEIGHT, BILLS_HOUSE_WIDTH ; dimensions (y, x) dw BillsHouseBlocks, BillsHouseTexts, BillsHouseScript ; blocks, texts, scripts db $00 ; connections dw BillsHouseObject ; objects BillsHouseScript: ; 0x1e76a call $3c3c ld a, [$d661] ld hl, BillsHouseScripts jp $3d97 ; 0x1e776 BillsHouseScripts: ; 0x1e776 dw BillsHouseScript0 INCBIN "baserom.gbc",$1e778,$a BillsHouseScript0: ; 0x1e782 ret ; 0x1e783 INCBIN "baserom.gbc",$1e783,$b1 BillsHouseTexts: ; 0x1e834 dw BillsHouseText1, BillsHouseText2, BillsHouseText3, BillsHouseText4 BillsHouseText4: ; 0x1e83c db $fd BillsHouseText1: ; 0x1e83d db $8 ld hl, UnnamedText_1e865 call PrintText call $35ec ld a, [$cc26] and a jr nz, asm_6b196 ; 0x1e84b $d asm_4d03c: ld hl, UnnamedText_1e86a call PrintText ld a, $1 ld [$d661], a jr asm_fd4e2 ; 0x1e858 $8 asm_6b196: ; 0x1e85a ld hl, UnnamedText_1e86f call PrintText jr asm_4d03c ; 0x1e860 $eb asm_fd4e2 ; 0x1e862 jp TextScriptEnd UnnamedText_1e865: ; 0x1e865 TX_FAR _UnnamedText_1e865 ; 0x8d267 db $50 ; 0x1e86a UnnamedText_1e86a: ; 0x1e86a TX_FAR _UnnamedText_1e86a ; 0x8d345 db $50 ; 0x1e86f UnnamedText_1e86f: ; 0x1e86f TX_FAR _UnnamedText_1e86f ; 0x8d391 db $50 ; 0x1e874 BillsHouseText2: ; 0x1e874 db $08 ; asm ld a, [$d7f2] bit 4, a jr nz, .asm_5491f ; 0x1e87a ld hl, BillThankYouText call PrintText ld bc, (S_S__TICKET << 8) | 1 call GiveItem jr nc, .asm_18a67 ; 0x1e888 ld hl, SSTicketReceivedText call PrintText ld hl, $d7f2 set 4, [hl] ld a, $7 ld [$cc4d], a ld a, $15 call Predef ld a, $9 ld [$cc4d], a ld a, $11 call Predef .asm_5491f ; 0x1e8a9 ld hl, UnnamedText_1e8cb call PrintText jr .asm_bd408 ; 0x1e8af .asm_18a67 ; 0x1e8b1 ld hl, SSTicketNoRoomText call PrintText .asm_bd408 ; 0x1e8b7 jp TextScriptEnd BillThankYouText: ; 0x1e8ba TX_FAR _BillThankYouText db $50 ; 0x1e8ba + 5 bytes SSTicketReceivedText: ; 0x1e8bf TX_FAR _SSTicketReceivedText ; 0x8d499 db $11, $6, $50 SSTicketNoRoomText: ; 0x1e8c6 TX_FAR _SSTicketNoRoomText db $50 ; 0x1e8c6 + 5 bytes UnnamedText_1e8cb: ; 0x1e8cb TX_FAR _UnnamedText_1e8cb db $50 ; 0x1e8cb + 5 bytes BillsHouseText3: ; 0x1e8d0 db $08 ; asm ld hl, UnnamedText_1e8da call PrintText jp TextScriptEnd ; 0x1e8da UnnamedText_1e8da: ; 0x1e8da TX_FAR _UnnamedText_1e8da db $50 ; 0x1e8da + 5 bytes BillsHouseObject: ; 0x1e8df (size=38) db $d ; border tile db $2 ; warps db $7, $2, $0, $ff db $7, $3, $0, $ff db $0 ; signs db $3 ; people db SPRITE_SLOWBRO, $5 + 4, $6 + 4, $ff, $ff, $1 ; person db SPRITE_BLACK_HAIR_BOY_2, $4 + 4, $4 + 4, $ff, $ff, $2 ; person db SPRITE_BLACK_HAIR_BOY_2, $5 + 4, $6 + 4, $ff, $ff, $3 ; person ; warp-to EVENT_DISP $4, $7, $2 EVENT_DISP $4, $7, $3 BillsHouseBlocks: ; 0x1e905 INCBIN "maps/billshouse.blk" INCBIN "baserom.gbc",$1e915,$1e93b - $1e915 UnnamedText_1e93b: ; 0x1e93b TX_FAR _UnnamedText_1e93b db $50 ; 0x1e93b + 5 bytes INCBIN "baserom.gbc",$1e940,$1e946 - $1e940 UnnamedText_1e946: ; 0x1e946 TX_FAR _UnnamedText_1e946 db $50 ; 0x1e946 + 5 bytes INCBIN "baserom.gbc",$1e94b,$1e953 - $1e94b UnnamedText_1e953: ; 0x1e953 TX_FAR _UnnamedText_1e953 db $50 ; 0x1e953 + 5 bytes INCBIN "baserom.gbc",$1e958,$1e960 - $1e958 UnnamedText_1e960: ; 0x1e960 TX_FAR _UnnamedText_1e960 db $50 ; 0x1e960 + 5 bytes INCBIN "baserom.gbc",$1e965,$1e97e - $1e965 UnnamedText_1e97e: ; 0x1e97e TX_FAR _UnnamedText_1e97e db $50 ; 0x1e97e + 5 bytes UnnamedText_1e983: ; 0x1e983 TX_FAR _UnnamedText_1e983 db $50 ; 0x1e983 + 5 bytes INCBIN "baserom.gbc",$1e988,$1ea0d - $1e988 UnnamedText_1ea0d: ; 0x1ea0d TX_FAR _UnnamedText_1ea0d db $50 ; 0x1ea0d + 5 bytes UnnamedText_1ea12: ; 0x1ea12 TX_FAR _UnnamedText_1ea12 db $50 ; 0x1ea12 + 5 bytes INCBIN "baserom.gbc",$1ea17,$1ea5b - $1ea17 UnnamedText_1ea5b: ; 0x1ea5b TX_FAR _UnnamedText_1ea5b db $50 ; 0x1ea5b + 5 bytes INCBIN "baserom.gbc",$1ea60,$1ea6c - $1ea60 UnnamedText_1ea6c: ; 0x1ea6c TX_FAR _UnnamedText_1ea6c db $50 ; 0x1ea6c + 5 bytes UnnamedText_1ea71: ; 0x1ea71 TX_FAR _UnnamedText_1ea71 db $50 ; 0x1ea71 + 5 bytes UnnamedText_1ea76: ; 0x1ea76 TX_FAR _UnnamedText_1ea76 db $50 ; 0x1ea76 + 5 bytes UnnamedText_1ea7b: ; 0x1ea7b TX_FAR _UnnamedText_1ea7b db $50 ; 0x1ea7b + 5 bytes UnnamedText_1ea80: ; 0x1ea80 TX_FAR _UnnamedText_1ea80 db $50 ; 0x1ea80 + 5 bytes UnnamedText_1ea85: ; 0x1ea85 TX_FAR _UnnamedText_1ea85 db $50 ; 0x1ea85 + 5 bytes INCBIN "baserom.gbc",$1ea8a,$1eb05 - $1ea8a UnnamedText_1eb05: ; 0x1eb05 TX_FAR _UnnamedText_1eb05 db $50 ; 0x1eb05 + 5 bytes INCBIN "baserom.gbc",$1eb0a,$1eb69 - $1eb0a UnnamedText_1eb69: ; 0x1eb69 TX_FAR _UnnamedText_1eb69 db $50 ; 0x1eb69 + 5 bytes INCBIN "baserom.gbc",$1eb6e,$1ebdd - $1eb6e UnnamedText_1ebdd: ; 0x1ebdd TX_FAR _UnnamedText_1ebdd db $50 ; 0x1ebdd + 5 bytes INCBIN "baserom.gbc",$1ebe2,$1ec7f - $1ebe2 UnnamedText_1ec7f: ; 0x1ec7f TX_FAR _UnnamedText_1ec7f db $50 ; 0x1ec7f + 5 bytes INCBIN "baserom.gbc",$1ec84,$1ecaa - $1ec84 UnnamedText_1ecaa: ; 0x1ecaa TX_FAR _UnnamedText_1ecaa db $50 ; 0x1ecaa + 5 bytes INCBIN "baserom.gbc",$1ecaf,$1ecbd - $1ecaf UnnamedText_1ecbd: ; 0x1ecbd TX_FAR _UnnamedText_1ecbd db $50 ; 0x1ecbd + 5 bytes SECTION "bank8",DATA,BANK[$8] INCBIN "baserom.gbc",$20000,$217e9 - $20000 UnnamedText_217e9: ; 0x217e9 TX_FAR _UnnamedText_217e9 db $50 ; 0x217e9 + 5 bytes UnnamedText_217ee: ; 0x217ee TX_FAR _UnnamedText_217ee db $50 ; 0x217ee + 5 bytes UnnamedText_217f3: ; 0x217f3 TX_FAR _UnnamedText_217f3 db $50 ; 0x217f3 + 5 bytes UnnamedText_217f8: ; 0x217f8 TX_FAR _UnnamedText_217f8 db $50 ; 0x217f8 + 5 bytes UnnamedText_217fd: ; 0x217fd TX_FAR _UnnamedText_217fd db $50 ; 0x217fd + 5 bytes UnnamedText_21802: ; 0x21802 TX_FAR _UnnamedText_21802 db $50 ; 0x21802 + 5 bytes UnnamedText_21807: ; 0x21807 TX_FAR _UnnamedText_21807 db $50 ; 0x21807 + 5 bytes UnnamedText_2180c: ; 0x2180c TX_FAR _UnnamedText_2180c db $50 ; 0x2180c + 5 bytes UnnamedText_21811: ; 0x21811 TX_FAR _UnnamedText_21811 db $50 ; 0x21811 + 5 bytes UnnamedText_21816: ; 0x21816 TX_FAR _UnnamedText_21816 db $50 ; 0x21816 + 5 bytes UnnamedText_2181b: ; 0x2181b TX_FAR _UnnamedText_2181b db $50 ; 0x2181b + 5 bytes UnnamedText_21820: ; 0x21820 TX_FAR _UnnamedText_21820 db $50 ; 0x21820 + 5 bytes INCBIN "baserom.gbc",$21825,$21865 - $21825 UnnamedText_21865: ; 0x21865 TX_FAR _UnnamedText_21865 db $50 ; 0x21865 + 5 bytes INCBIN "baserom.gbc",$2186a,$23f52 - $2186a SECTION "bank9",DATA,BANK[$9] RhydonPicFront: INCBIN "pic/bmon/rhydon.pic" RhydonPicBack: INCBIN "pic/monback/rhydonb.pic" KangaskhanPicFront: INCBIN "pic/bmon/kangaskhan.pic" KangaskhanPicBack: INCBIN "pic/monback/kangaskhanb.pic" NidoranMPicFront: INCBIN "pic/bmon/nidoranm.pic" NidoranMPicBack: INCBIN "pic/monback/nidoranmb.pic" ClefairyPicFront: INCBIN "pic/bmon/clefairy.pic" ClefairyPicBack: INCBIN "pic/monback/clefairyb.pic" SpearowPicFront: INCBIN "pic/bmon/spearow.pic" SpearowPicBack: INCBIN "pic/monback/spearowb.pic" VoltorbPicFront: INCBIN "pic/bmon/voltorb.pic" VoltorbPicBack: INCBIN "pic/monback/voltorbb.pic" NidokingPicFront: INCBIN "pic/bmon/nidoking.pic" NidokingPicBack: INCBIN "pic/monback/nidokingb.pic" SlowbroPicFront: INCBIN "pic/bmon/slowbro.pic" SlowbroPicBack: INCBIN "pic/monback/slowbrob.pic" IvysaurPicFront: INCBIN "pic/bmon/ivysaur.pic" IvysaurPicBack: INCBIN "pic/monback/ivysaurb.pic" ExeggutorPicFront: INCBIN "pic/bmon/exeggutor.pic" ExeggutorPicBack: INCBIN "pic/monback/exeggutorb.pic" LickitungPicFront: INCBIN "pic/bmon/lickitung.pic" LickitungPicBack: INCBIN "pic/monback/lickitungb.pic" ExeggcutePicFront: INCBIN "pic/bmon/exeggcute.pic" ExeggcutePicBack: INCBIN "pic/monback/exeggcuteb.pic" GrimerPicFront: INCBIN "pic/bmon/grimer.pic" GrimerPicBack: INCBIN "pic/monback/grimerb.pic" GengarPicFront: INCBIN "pic/bmon/gengar.pic" GengarPicBack: INCBIN "pic/monback/gengarb.pic" NidoranFPicFront: INCBIN "pic/bmon/nidoranf.pic" NidoranFPicBack: INCBIN "pic/monback/nidoranfb.pic" NidoqueenPicFront: INCBIN "pic/bmon/nidoqueen.pic" NidoqueenPicBack: INCBIN "pic/monback/nidoqueenb.pic" CubonePicFront: INCBIN "pic/bmon/cubone.pic" CubonePicBack: INCBIN "pic/monback/cuboneb.pic" RhyhornPicFront: INCBIN "pic/bmon/rhyhorn.pic" RhyhornPicBack: INCBIN "pic/monback/rhyhornb.pic" LaprasPicFront: INCBIN "pic/bmon/lapras.pic" LaprasPicBack: INCBIN "pic/monback/laprasb.pic" ArcaninePicFront: INCBIN "pic/bmon/arcanine.pic" ArcaninePicBack: INCBIN "pic/monback/arcanineb.pic" GyaradosPicFront: INCBIN "pic/bmon/gyarados.pic" GyaradosPicBack: INCBIN "pic/monback/gyaradosb.pic" ShellderPicFront: INCBIN "pic/bmon/shellder.pic" ShellderPicBack: INCBIN "pic/monback/shellderb.pic" TentacoolPicFront: INCBIN "pic/bmon/tentacool.pic" TentacoolPicBack: INCBIN "pic/monback/tentacoolb.pic" GastlyPicFront: INCBIN "pic/bmon/gastly.pic" GastlyPicBack: INCBIN "pic/monback/gastlyb.pic" ScytherPicFront: INCBIN "pic/bmon/scyther.pic" ScytherPicBack: INCBIN "pic/monback/scytherb.pic" StaryuPicFront: INCBIN "pic/bmon/staryu.pic" StaryuPicBack: INCBIN "pic/monback/staryub.pic" BlastoisePicFront: INCBIN "pic/bmon/blastoise.pic" BlastoisePicBack: INCBIN "pic/monback/blastoiseb.pic" PinsirPicFront: INCBIN "pic/bmon/pinsir.pic" PinsirPicBack: ; 0x27aaa INCBIN "pic/monback/pinsirb.pic" TangelaPicFront: ; 0x27b39 INCBIN "pic/bmon/tangela.pic" TangelaPicBack: ; 0x27ce7 INCBIN "pic/monback/tangelab.pic" INCBIN "baserom.gbc",$27d6b,$27DAE - $27d6b TypeNamePointers: ; 7DAE dw Type00Name dw Type01Name dw Type02Name dw Type03Name dw Type04Name dw Type05Name dw Type06Name dw Type07Name dw Type08Name dw Type00Name dw Type00Name dw Type00Name dw Type00Name dw Type00Name dw Type00Name dw Type00Name dw Type00Name dw Type00Name dw Type00Name dw Type00Name dw Type14Name dw Type15Name dw Type16Name dw Type17Name dw Type18Name dw Type19Name dw Type1AName Type00Name: db "NORMAL@" Type01Name: db "FIGHTING@" Type02Name: db "FLYING@" Type03Name: db "POISON@" Type14Name: db "FIRE@" Type15Name: db "WATER@" Type16Name: db "GRASS@" Type17Name: db "ELECTRIC@" Type18Name: db "PSYCHIC@" Type19Name: db "ICE@" Type04Name: db "GROUND@" Type05Name: db "ROCK@" Type06Name: db "BIRD@" Type07Name: db "BUG@" Type08Name: db "GHOST@" Type1AName: db "DRAGON@" SaveTrainerName: ; 7E4A ld hl,TrainerNamePointers ld a,[W_TRAINERCLASS] dec a ld c,a ld b,0 add hl,bc add hl,bc ld a,[hli] ld h,[hl] ld l,a ld de,$CD6D .CopyCharacter\@ ld a,[hli] ld [de],a inc de cp "@" jr nz,.CopyCharacter\@ ret TrainerNamePointers: ; 0x27e64 ; what is the point of these? dw YoungsterName dw BugCatcherName dw LassName dw $D04A dw JrTrainerMName dw JrTrainerFName dw PokemaniacName dw SuperNerdName dw $D04A dw $D04A dw BurglarName dw EngineerName dw JugglerXName dw $D04A dw SwimmerName dw $D04A dw $D04A dw BeautyName dw $D04A dw RockerName dw JugglerName dw $D04A dw $D04A dw BlackbeltName dw $D04A dw ProfOakName dw ChiefName dw ScientistName dw $D04A dw RocketName dw CooltrainerMName dw CooltrainerFName dw $D04A dw $D04A dw $D04A dw $D04A dw $D04A dw $D04A dw $D04A dw $D04A dw $D04A dw $D04A dw $D04A dw $D04A dw $D04A dw $D04A dw $D04A YoungsterName: db "YOUNGSTER@" BugCatcherName: db "BUG CATCHER@" LassName: db "LASS@" JrTrainerMName: db "JR.TRAINER♂@" JrTrainerFName: db "JR.TRAINER♀@" PokemaniacName: db "POKéMANIAC@" SuperNerdName: db "SUPER NERD@" BurglarName: db "BURGLAR@" EngineerName: db "ENGINEER@" JugglerXName: db "JUGGLER@" SwimmerName: db "SWIMMER@" BeautyName: db "BEAUTY@" RockerName: db "ROCKER@" JugglerName: db "JUGGLER@" BlackbeltName: db "BLACKBELT@" ProfOakName: db "PROF.OAK@" ChiefName: db "CHIEF@" ScientistName: db "SCIENTIST@" RocketName: db "ROCKET@" CooltrainerMName: db "COOLTRAINER♂@" CooltrainerFName: db "COOLTRAINER♀@" INCBIN "baserom.gbc",$27f86,$27fb3 - $27f86 UnnamedText_27fb3: ; 0x27fb3 TX_FAR _UnnamedText_27fb3 db $50 ; 0x27fb3 + 5 bytes SECTION "bankA",DATA,BANK[$A] GrowlithePicFront: INCBIN "pic/bmon/growlithe.pic" GrowlithePicBack: INCBIN "pic/monback/growlitheb.pic" OnixPicFront: INCBIN "pic/bmon/onix.pic" OnixPicBack: INCBIN "pic/monback/onixb.pic" FearowPicFront: INCBIN "pic/bmon/fearow.pic" FearowPicBack: INCBIN "pic/monback/fearowb.pic" PidgeyPicFront: INCBIN "pic/bmon/pidgey.pic" PidgeyPicBack: INCBIN "pic/monback/pidgeyb.pic" SlowpokePicFront: INCBIN "pic/bmon/slowpoke.pic" SlowpokePicBack: INCBIN "pic/monback/slowpokeb.pic" KadabraPicFront: INCBIN "pic/bmon/kadabra.pic" KadabraPicBack: INCBIN "pic/monback/kadabrab.pic" GravelerPicFront: INCBIN "pic/bmon/graveler.pic" GravelerPicBack: INCBIN "pic/monback/gravelerb.pic" ChanseyPicFront: INCBIN "pic/bmon/chansey.pic" ChanseyPicBack: INCBIN "pic/monback/chanseyb.pic" MachokePicFront: INCBIN "pic/bmon/machoke.pic" MachokePicBack: INCBIN "pic/monback/machokeb.pic" MrMimePicFront: INCBIN "pic/bmon/mr.mime.pic" MrMimePicBack: INCBIN "pic/monback/mr.mimeb.pic" HitmonleePicFront: INCBIN "pic/bmon/hitmonlee.pic" HitmonleePicBack: INCBIN "pic/monback/hitmonleeb.pic" HitmonchanPicFront: INCBIN "pic/bmon/hitmonchan.pic" HitmonchanPicBack: INCBIN "pic/monback/hitmonchanb.pic" ArbokPicFront: INCBIN "pic/bmon/arbok.pic" ArbokPicBack: INCBIN "pic/monback/arbokb.pic" ParasectPicFront: INCBIN "pic/bmon/parasect.pic" ParasectPicBack: INCBIN "pic/monback/parasectb.pic" PsyduckPicFront: INCBIN "pic/bmon/psyduck.pic" PsyduckPicBack: INCBIN "pic/monback/psyduckb.pic" DrowzeePicFront: INCBIN "pic/bmon/drowzee.pic" DrowzeePicBack: INCBIN "pic/monback/drowzeeb.pic" GolemPicFront: INCBIN "pic/bmon/golem.pic" GolemPicBack: INCBIN "pic/monback/golemb.pic" MagmarPicFront: INCBIN "pic/bmon/magmar.pic" MagmarPicBack: INCBIN "pic/monback/magmarb.pic" ElectabuzzPicFront: INCBIN "pic/bmon/electabuzz.pic" ElectabuzzPicBack: INCBIN "pic/monback/electabuzzb.pic" MagnetonPicFront: INCBIN "pic/bmon/magneton.pic" MagnetonPicBack: INCBIN "pic/monback/magnetonb.pic" KoffingPicFront: INCBIN "pic/bmon/koffing.pic" KoffingPicBack: INCBIN "pic/monback/koffingb.pic" MankeyPicFront: INCBIN "pic/bmon/mankey.pic" MankeyPicBack: INCBIN "pic/monback/mankeyb.pic" SeelPicFront: INCBIN "pic/bmon/seel.pic" SeelPicBack: INCBIN "pic/monback/seelb.pic" DiglettPicFront: INCBIN "pic/bmon/diglett.pic" DiglettPicBack: INCBIN "pic/monback/diglettb.pic" TaurosPicFront: INCBIN "pic/bmon/tauros.pic" TaurosPicBack: INCBIN "pic/monback/taurosb.pic" FarfetchdPicFront: INCBIN "pic/bmon/farfetchd.pic" FarfetchdPicBack: INCBIN "pic/monback/farfetchdb.pic" VenonatPicFront: INCBIN "pic/bmon/venonat.pic" VenonatPicBack: INCBIN "pic/monback/venonatb.pic" DragonitePicFront: INCBIN "pic/bmon/dragonite.pic" DragonitePicBack: INCBIN "pic/monback/dragoniteb.pic" DoduoPicFront: INCBIN "pic/bmon/doduo.pic" DoduoPicBack: INCBIN "pic/monback/doduob.pic" PoliwagPicFront: INCBIN "pic/bmon/poliwag.pic" PoliwagPicBack: INCBIN "pic/monback/poliwagb.pic" JynxPicFront: INCBIN "pic/bmon/jynx.pic" JynxPicBack: INCBIN "pic/monback/jynxb.pic" MoltresPicFront: INCBIN "pic/bmon/moltres.pic" MoltresPicBack: INCBIN "pic/monback/moltresb.pic" INCBIN "baserom.gbc",$2bea9,$2bef2 - $2bea9 UnnamedText_2bef2: ; 0x2bef2 TX_FAR _UnnamedText_2bef2 db $50 ; 0x2bef2 + 5 bytes UnnamedText_2bef7: ; 0x2bef7 TX_FAR _UnnamedText_2bef7 db $50 ; 0x2bef7 + 5 bytes SECTION "bankB",DATA,BANK[$B] ArticunoPicFront: INCBIN "pic/bmon/articuno.pic" ArticunoPicBack: INCBIN "pic/monback/articunob.pic" ZapdosPicFront: INCBIN "pic/bmon/zapdos.pic" ZapdosPicBack: INCBIN "pic/monback/zapdosb.pic" DittoPicFront: INCBIN "pic/bmon/ditto.pic" DittoPicBack: INCBIN "pic/monback/dittob.pic" MeowthPicFront: INCBIN "pic/bmon/meowth.pic" MeowthPicBack: INCBIN "pic/monback/meowthb.pic" KrabbyPicFront: INCBIN "pic/bmon/krabby.pic" KrabbyPicBack: INCBIN "pic/monback/krabbyb.pic" VulpixPicFront: INCBIN "pic/bmon/vulpix.pic" VulpixPicBack: INCBIN "pic/monback/vulpixb.pic" NinetalesPicFront: INCBIN "pic/bmon/ninetales.pic" NinetalesPicBack: INCBIN "pic/monback/ninetalesb.pic" PikachuPicFront: INCBIN "pic/bmon/pikachu.pic" PikachuPicBack: INCBIN "pic/monback/pikachub.pic" RaichuPicFront: INCBIN "pic/bmon/raichu.pic" RaichuPicBack: INCBIN "pic/monback/raichub.pic" DratiniPicFront: INCBIN "pic/bmon/dratini.pic" DratiniPicBack: INCBIN "pic/monback/dratinib.pic" DragonairPicFront: INCBIN "pic/bmon/dragonair.pic" DragonairPicBack: INCBIN "pic/monback/dragonairb.pic" KabutoPicFront: INCBIN "pic/bmon/kabuto.pic" KabutoPicBack: INCBIN "pic/monback/kabutob.pic" KabutopsPicFront: INCBIN "pic/bmon/kabutops.pic" KabutopsPicBack: INCBIN "pic/monback/kabutopsb.pic" HorseaPicFront: INCBIN "pic/bmon/horsea.pic" HorseaPicBack: INCBIN "pic/monback/horseab.pic" SeadraPicFront: INCBIN "pic/bmon/seadra.pic" SeadraPicBack: INCBIN "pic/monback/seadrab.pic" SandshrewPicFront: INCBIN "pic/bmon/sandshrew.pic" SandshrewPicBack: INCBIN "pic/monback/sandshrewb.pic" SandslashPicFront: INCBIN "pic/bmon/sandslash.pic" SandslashPicBack: INCBIN "pic/monback/sandslashb.pic" OmanytePicFront: INCBIN "pic/bmon/omanyte.pic" OmanytePicBack: INCBIN "pic/monback/omanyteb.pic" OmastarPicFront: INCBIN "pic/bmon/omastar.pic" OmastarPicBack: INCBIN "pic/monback/omastarb.pic" JigglypuffPicFront: INCBIN "pic/bmon/jigglypuff.pic" JigglypuffPicBack: INCBIN "pic/monback/jigglypuffb.pic" WigglytuffPicFront: INCBIN "pic/bmon/wigglytuff.pic" WigglytuffPicBack: INCBIN "pic/monback/wigglytuffb.pic" EeveePicFront: INCBIN "pic/bmon/eevee.pic" EeveePicBack: INCBIN "pic/monback/eeveeb.pic" FlareonPicFront: INCBIN "pic/bmon/flareon.pic" FlareonPicBack: INCBIN "pic/monback/flareonb.pic" JolteonPicFront: INCBIN "pic/bmon/jolteon.pic" JolteonPicBack: INCBIN "pic/monback/jolteonb.pic" VaporeonPicFront: INCBIN "pic/bmon/vaporeon.pic" VaporeonPicBack: INCBIN "pic/monback/vaporeonb.pic" MachopPicFront: INCBIN "pic/bmon/machop.pic" MachopPicBack: INCBIN "pic/monback/machopb.pic" ZubatPicFront: INCBIN "pic/bmon/zubat.pic" ZubatPicBack: INCBIN "pic/monback/zubatb.pic" EkansPicFront: INCBIN "pic/bmon/ekans.pic" EkansPicBack: INCBIN "pic/monback/ekansb.pic" ParasPicFront: INCBIN "pic/bmon/paras.pic" ParasPicBack: INCBIN "pic/monback/parasb.pic" PoliwhirlPicFront: INCBIN "pic/bmon/poliwhirl.pic" PoliwhirlPicBack: INCBIN "pic/monback/poliwhirlb.pic" PoliwrathPicFront: INCBIN "pic/bmon/poliwrath.pic" PoliwrathPicBack: INCBIN "pic/monback/poliwrathb.pic" WeedlePicFront: INCBIN "pic/bmon/weedle.pic" WeedlePicBack: INCBIN "pic/monback/weedleb.pic" KakunaPicFront: INCBIN "pic/bmon/kakuna.pic" KakunaPicBack: INCBIN "pic/monback/kakunab.pic" BeedrillPicFront: INCBIN "pic/bmon/beedrill.pic" BeedrillPicBack: INCBIN "pic/monback/beedrillb.pic" FossilKabutopsPic: INCBIN "pic/bmon/fossilkabutops.pic" INCBIN "baserom.gbc",$2fb7b,$2fb8e - $2fb7b UnnamedText_2fb8e: ; 0x2fb8e TX_FAR _UnnamedText_2fb8e db $50 ; 0x2fb8e + 5 bytes UnnamedText_2fb93: ; 0x2fb93 TX_FAR _UnnamedText_2fb93 db $50 ; 0x2fb93 + 5 bytes INCBIN "baserom.gbc",$2fb98,$2fe3b - $2fb98 UnnamedText_2fe3b: ; 0x2fe3b TX_FAR _UnnamedText_2fe3b db $50 ; 0x2fe3b + 5 bytes INCBIN "baserom.gbc",$2fe40,$2ff04 - $2fe40 UnnamedText_2ff04: ; 0x2ff04 TX_FAR _UnnamedText_2ff04 db $50 ; 0x2ff04 + 5 bytes INCBIN "baserom.gbc",$2ff09,$2ff32 - $2ff09 UnnamedText_2ff32: ; 0x2ff32 TX_FAR _UnnamedText_2ff32 db $50 ; 0x2ff32 + 5 bytes UnnamedText_2ff37: ; 0x2ff37 TX_FAR _UnnamedText_2ff37 db $50 ; 0x2ff37 + 5 bytes SECTION "bankC",DATA,BANK[$C] DodrioPicFront: INCBIN "pic/bmon/dodrio.pic" DodrioPicBack: INCBIN "pic/monback/dodriob.pic" PrimeapePicFront: INCBIN "pic/bmon/primeape.pic" PrimeapePicBack: INCBIN "pic/monback/primeapeb.pic" DugtrioPicFront: INCBIN "pic/bmon/dugtrio.pic" DugtrioPicBack: INCBIN "pic/monback/dugtriob.pic" VenomothPicFront: INCBIN "pic/bmon/venomoth.pic" VenomothPicBack: INCBIN "pic/monback/venomothb.pic" DewgongPicFront: INCBIN "pic/bmon/dewgong.pic" DewgongPicBack: INCBIN "pic/monback/dewgongb.pic" CaterpiePicFront: INCBIN "pic/bmon/caterpie.pic" CaterpiePicBack: INCBIN "pic/monback/caterpieb.pic" MetapodPicFront: INCBIN "pic/bmon/metapod.pic" MetapodPicBack: INCBIN "pic/monback/metapodb.pic" ButterfreePicFront: INCBIN "pic/bmon/butterfree.pic" ButterfreePicBack: INCBIN "pic/monback/butterfreeb.pic" MachampPicFront: INCBIN "pic/bmon/machamp.pic" MachampPicBack: INCBIN "pic/monback/machampb.pic" GolduckPicFront: INCBIN "pic/bmon/golduck.pic" GolduckPicBack: INCBIN "pic/monback/golduckb.pic" HypnoPicFront: INCBIN "pic/bmon/hypno.pic" HypnoPicBack: INCBIN "pic/monback/hypnob.pic" GolbatPicFront: INCBIN "pic/bmon/golbat.pic" GolbatPicBack: INCBIN "pic/monback/golbatb.pic" MewtwoPicFront: INCBIN "pic/bmon/mewtwo.pic" MewtwoPicBack: INCBIN "pic/monback/mewtwob.pic" SnorlaxPicFront: INCBIN "pic/bmon/snorlax.pic" SnorlaxPicBack: INCBIN "pic/monback/snorlaxb.pic" MagikarpPicFront: INCBIN "pic/bmon/magikarp.pic" MagikarpPicBack: INCBIN "pic/monback/magikarpb.pic" MukPicFront: INCBIN "pic/bmon/muk.pic" MukPicBack: INCBIN "pic/monback/mukb.pic" KinglerPicFront: INCBIN "pic/bmon/kingler.pic" KinglerPicBack: INCBIN "pic/monback/kinglerb.pic" CloysterPicFront: INCBIN "pic/bmon/cloyster.pic" CloysterPicBack: INCBIN "pic/monback/cloysterb.pic" ElectrodePicFront: INCBIN "pic/bmon/electrode.pic" ElectrodePicBack: INCBIN "pic/monback/electrodeb.pic" ClefablePicFront: INCBIN "pic/bmon/clefable.pic" ClefablePicBack: INCBIN "pic/monback/clefableb.pic" WeezingPicFront: INCBIN "pic/bmon/weezing.pic" WeezingPicBack: INCBIN "pic/monback/weezingb.pic" PersianPicFront: INCBIN "pic/bmon/persian.pic" PersianPicBack: INCBIN "pic/monback/persianb.pic" MarowakPicFront: INCBIN "pic/bmon/marowak.pic" MarowakPicBack: INCBIN "pic/monback/marowakb.pic" HaunterPicFront: INCBIN "pic/bmon/haunter.pic" HaunterPicBack: INCBIN "pic/monback/haunterb.pic" AbraPicFront: INCBIN "pic/bmon/abra.pic" AbraPicBack: INCBIN "pic/monback/abrab.pic" AlakazamPicFront: INCBIN "pic/bmon/alakazam.pic" AlakazamPicBack: INCBIN "pic/monback/alakazamb.pic" PidgeottoPicFront: INCBIN "pic/bmon/pidgeotto.pic" PidgeottoPicBack: INCBIN "pic/monback/pidgeottob.pic" PidgeotPicFront: INCBIN "pic/bmon/pidgeot.pic" PidgeotPicBack: INCBIN "pic/monback/pidgeotb.pic" StarmiePicFront: INCBIN "pic/bmon/starmie.pic" StarmiePicBack: INCBIN "pic/monback/starmieb.pic" RedPicBack: INCBIN "pic/trainer/redb.pic" OldManPic: INCBIN "pic/trainer/oldman.pic" INCBIN "baserom.gbc",$33f2b,$33f52 - $33f2b UnnamedText_33f52: ; 0x33f52 TX_FAR _UnnamedText_33f52 db $50 ; 0x33f52 + 5 bytes INCBIN "baserom.gbc",$33f57,$39 SECTION "bankD",DATA,BANK[$D] BulbasaurPicFront: INCBIN "pic/bmon/bulbasaur.pic" BulbasaurPicBack: INCBIN "pic/monback/bulbasaurb.pic" VenusaurPicFront: INCBIN "pic/bmon/venusaur.pic" VenusaurPicBack: INCBIN "pic/monback/venusaurb.pic" TentacruelPicFront: INCBIN "pic/bmon/tentacruel.pic" TentacruelPicBack: INCBIN "pic/monback/tentacruelb.pic" GoldeenPicFront: INCBIN "pic/bmon/goldeen.pic" GoldeenPicBack: INCBIN "pic/monback/goldeenb.pic" SeakingPicFront: INCBIN "pic/bmon/seaking.pic" SeakingPicBack: INCBIN "pic/monback/seakingb.pic" PonytaPicFront: INCBIN "pic/bmon/ponyta.pic" RapidashPicFront: INCBIN "pic/bmon/rapidash.pic" PonytaPicBack: INCBIN "pic/monback/ponytab.pic" RapidashPicBack: INCBIN "pic/monback/rapidashb.pic" RattataPicFront: INCBIN "pic/bmon/rattata.pic" RattataPicBack: INCBIN "pic/monback/rattatab.pic" RaticatePicFront: INCBIN "pic/bmon/raticate.pic" RaticatePicBack: INCBIN "pic/monback/raticateb.pic" NidorinoPicFront: INCBIN "pic/bmon/nidorino.pic" NidorinoPicBack: INCBIN "pic/monback/nidorinob.pic" NidorinaPicFront: INCBIN "pic/bmon/nidorina.pic" NidorinaPicBack: INCBIN "pic/monback/nidorinab.pic" GeodudePicFront: INCBIN "pic/bmon/geodude.pic" GeodudePicBack: INCBIN "pic/monback/geodudeb.pic" PorygonPicFront: INCBIN "pic/bmon/porygon.pic" PorygonPicBack: INCBIN "pic/monback/porygonb.pic" AerodactylPicFront: INCBIN "pic/bmon/aerodactyl.pic" AerodactylPicBack: INCBIN "pic/monback/aerodactylb.pic" MagnemitePicFront: INCBIN "pic/bmon/magnemite.pic" MagnemitePicBack: INCBIN "pic/monback/magnemiteb.pic" CharmanderPicFront: INCBIN "pic/bmon/charmander.pic" CharmanderPicBack: INCBIN "pic/monback/charmanderb.pic" SquirtlePicFront: INCBIN "pic/bmon/squirtle.pic" SquirtlePicBack: INCBIN "pic/monback/squirtleb.pic" CharmeleonPicFront: INCBIN "pic/bmon/charmeleon.pic" CharmeleonPicBack: INCBIN "pic/monback/charmeleonb.pic" WartortlePicFront: INCBIN "pic/bmon/wartortle.pic" WartortlePicBack: INCBIN "pic/monback/wartortleb.pic" CharizardPicFront: INCBIN "pic/bmon/charizard.pic" CharizardPicBack: INCBIN "pic/monback/charizardb.pic" FossilAerodactylPic: INCBIN "pic/bmon/fossilaerodactyl.pic" GhostPic: INCBIN "pic/other/ghost.pic" OddishPicFront: INCBIN "pic/bmon/oddish.pic" OddishPicBack: INCBIN "pic/monback/oddishb.pic" GloomPicFront: INCBIN "pic/bmon/gloom.pic" GloomPicBack: INCBIN "pic/monback/gloomb.pic" VileplumePicFront: INCBIN "pic/bmon/vileplume.pic" VileplumePicBack: INCBIN "pic/monback/vileplumeb.pic" BellsproutPicFront: INCBIN "pic/bmon/bellsprout.pic" BellsproutPicBack: INCBIN "pic/monback/bellsproutb.pic" WeepinbellPicFront: INCBIN "pic/bmon/weepinbell.pic" WeepinbellPicBack: INCBIN "pic/monback/weepinbellb.pic" VictreebelPicFront: INCBIN "pic/bmon/victreebel.pic" VictreebelPicBack: INCBIN "pic/monback/victreebelb.pic" INCBIN "baserom.gbc",$37244,$37390 - $37244 UnnamedText_37390: ; 0x37390 TX_FAR _UnnamedText_37390 db $50 ; 0x37390 + 5 bytes INCBIN "baserom.gbc",$37395,$37467 - $37395 UnnamedText_37467: ; 0x37467 TX_FAR _UnnamedText_37467 db $50 ; 0x37467 + 5 bytes UnnamedText_3746c: ; 0x3746c TX_FAR _UnnamedText_3746c db $50 ; 0x3746c + 5 bytes UnnamedText_37471: ; 0x37471 TX_FAR _UnnamedText_37471 db $50 ; 0x37471 + 5 bytes UnnamedText_37476: ; 0x37476 TX_FAR _UnnamedText_37476 db $50 ; 0x37476 + 5 bytes UnnamedText_3747b: ; 0x3747b TX_FAR _UnnamedText_3747b db $50 ; 0x3747b + 5 bytes INCBIN "baserom.gbc",$37480,$37673 - $37480 UnnamedText_37673: ; 0x37673 TX_FAR _UnnamedText_37673 db $50 ; 0x37673 + 5 bytes INCBIN "baserom.gbc",$37678,$3769d - $37678 UnnamedText_3769d: ; 0x3769d TX_FAR _UnnamedText_3769d db $50 ; 0x3769d + 5 bytes INCBIN "baserom.gbc",$376a2,$378f5 - $376a2 SlotMachineMap: ; 0x378f5 INCBIN "gfx/tilemaps/slotmachine.map" INCBIN "baserom.gbc",$379e5,$37af1 - $379e5 ; 0x37af1 IF _RED INCBIN "gfx/red/slotmachine1.2bpp" ENDC IF _BLUE INCBIN "gfx/blue/slotmachine1.2bpp" ENDC INCBIN "baserom.gbc",$37ca1,$37e79 - $37ca1 UnnamedText_37e79: ; 0x37e79 TX_FAR _UnnamedText_37e79 db $50 ; 0x37e79 + 5 bytes UnnamedText_37e7e: ; 0x37e7e TX_FAR _UnnamedText_37e7e db $50 ; 0x37e7e + 5 bytes UnnamedText_37e83: ; 0x37e83 TX_FAR _UnnamedText_37e83 db $50 ; 0x37e83 + 5 bytes SECTION "bankE",DATA,BANK[$E] Moves: ; 4000 ; characteristics of each move ; animation, effect, power, type, accuracy, PP db POUND ,$00,$28,NORMAL,$FF,35 db KARATE_CHOP ,$00,$32,NORMAL,$FF,25 db DOUBLESLAP ,$1D,$0F,NORMAL,$D8,10 db COMET_PUNCH ,$1D,$12,NORMAL,$D8,15 db MEGA_PUNCH ,$00,$50,NORMAL,$D8,20 db PAY_DAY ,$10,$28,NORMAL,$FF,20 db FIRE_PUNCH ,$04,$4B,FIRE,$FF,15 db ICE_PUNCH ,$05,$4B,ICE,$FF,15 db THUNDERPUNCH,$06,$4B,ELECTRIC,$FF,15 db SCRATCH ,$00,$28,NORMAL,$FF,35 db VICEGRIP ,$00,$37,NORMAL,$FF,30 db GUILLOTINE ,$26,$01,NORMAL,$4C,5 db RAZOR_WIND ,$27,$50,NORMAL,$BF,10 db SWORDS_DANCE,$32,$00,NORMAL,$FF,30 db CUT ,$00,$32,NORMAL,$F2,30 db GUST ,$00,$28,NORMAL,$FF,35 db WING_ATTACK ,$00,$23,FLYING,$FF,35 db WHIRLWIND ,$1C,$00,NORMAL,$D8,20 db FLY ,$2B,$46,FLYING,$F2,15 db BIND ,$2A,$0F,NORMAL,$BF,20 db SLAM ,$00,$50,NORMAL,$BF,20 db VINE_WHIP ,$00,$23,GRASS,$FF,10 db STOMP ,$25,$41,NORMAL,$FF,20 db DOUBLE_KICK ,$2C,$1E,FIGHTING,$FF,30 db MEGA_KICK ,$00,$78,NORMAL,$BF,5 db JUMP_KICK ,$2D,$46,FIGHTING,$F2,25 db ROLLING_KICK,$25,$3C,FIGHTING,$D8,15 db SAND_ATTACK ,$16,$00,NORMAL,$FF,15 db HEADBUTT ,$25,$46,NORMAL,$FF,15 db HORN_ATTACK ,$00,$41,NORMAL,$FF,25 db FURY_ATTACK ,$1D,$0F,NORMAL,$D8,20 db HORN_DRILL ,$26,$01,NORMAL,$4C,5 db TACKLE ,$00,$23,NORMAL,$F2,35 db BODY_SLAM ,$24,$55,NORMAL,$FF,15 db WRAP ,$2A,$0F,NORMAL,$D8,20 db TAKE_DOWN ,$30,$5A,NORMAL,$D8,20 db THRASH ,$1B,$5A,NORMAL,$FF,20 db DOUBLE_EDGE ,$30,$64,NORMAL,$FF,15 db TAIL_WHIP ,$13,$00,NORMAL,$FF,30 db POISON_STING,$02,$0F,POISON,$FF,35 db TWINEEDLE ,$4D,$19,BUG,$FF,20 db PIN_MISSILE ,$1D,$0E,BUG,$D8,20 db LEER ,$13,$00,NORMAL,$FF,30 db BITE ,$1F,$3C,NORMAL,$FF,25 db GROWL ,$12,$00,NORMAL,$FF,40 db ROAR ,$1C,$00,NORMAL,$FF,20 db SING ,$20,$00,NORMAL,$8C,15 db SUPERSONIC ,$31,$00,NORMAL,$8C,20 db SONICBOOM ,$29,$01,NORMAL,$E5,20 db DISABLE ,$56,$00,NORMAL,$8C,20 db ACID ,$45,$28,POISON,$FF,30 db EMBER ,$04,$28,FIRE,$FF,25 db FLAMETHROWER,$04,$5F,FIRE,$FF,15 db MIST ,$2E,$00,ICE,$FF,30 db WATER_GUN ,$00,$28,WATER,$FF,25 db HYDRO_PUMP ,$00,$78,WATER,$CC,5 db SURF ,$00,$5F,WATER,$FF,15 db ICE_BEAM ,$05,$5F,ICE,$FF,10 db BLIZZARD ,$05,$78,ICE,$E5,5 db PSYBEAM ,$4C,$41,PSYCHIC,$FF,20 db BUBBLEBEAM ,$46,$41,WATER,$FF,20 db AURORA_BEAM ,$44,$41,ICE,$FF,20 db HYPER_BEAM ,$50,$96,NORMAL,$E5,5 db PECK ,$00,$23,FLYING,$FF,35 db DRILL_PECK ,$00,$50,FLYING,$FF,20 db SUBMISSION ,$30,$50,FIGHTING,$CC,25 db LOW_KICK ,$25,$32,FIGHTING,$E5,20 db COUNTER ,$00,$01,FIGHTING,$FF,20 db SEISMIC_TOSS,$29,$01,FIGHTING,$FF,20 db STRENGTH ,$00,$50,NORMAL,$FF,15 db ABSORB ,$03,$14,GRASS,$FF,20 db MEGA_DRAIN ,$03,$28,GRASS,$FF,10 db LEECH_SEED ,$54,$00,GRASS,$E5,10 db GROWTH ,$0D,$00,NORMAL,$FF,40 db RAZOR_LEAF ,$00,$37,GRASS,$F2,25 db SOLARBEAM ,$27,$78,GRASS,$FF,10 db POISONPOWDER,$42,$00,POISON,$BF,35 db STUN_SPORE ,$43,$00,GRASS,$BF,30 db SLEEP_POWDER,$20,$00,GRASS,$BF,15 db PETAL_DANCE ,$1B,$46,GRASS,$FF,20 db STRING_SHOT ,$14,$00,BUG,$F2,40 db DRAGON_RAGE ,$29,$01,DRAGON,$FF,10 db FIRE_SPIN ,$2A,$0F,FIRE,$B2,15 db THUNDERSHOCK,$06,$28,ELECTRIC,$FF,30 db THUNDERBOLT ,$06,$5F,ELECTRIC,$FF,15 db THUNDER_WAVE,$43,$00,ELECTRIC,$FF,20 db THUNDER ,$06,$78,ELECTRIC,$B2,10 db ROCK_THROW ,$00,$32,ROCK,$A5,15 db EARTHQUAKE ,$00,$64,GROUND,$FF,10 db FISSURE ,$26,$01,GROUND,$4C,5 db DIG ,$27,$64,GROUND,$FF,10 db TOXIC ,$42,$00,POISON,$D8,10 db CONFUSION ,$4C,$32,PSYCHIC,$FF,25 db PSYCHIC_M ,$47,$5A,PSYCHIC,$FF,10 db HYPNOSIS ,$20,$00,PSYCHIC,$99,20 db MEDITATE ,$0A,$00,PSYCHIC,$FF,40 db AGILITY ,$34,$00,PSYCHIC,$FF,30 db QUICK_ATTACK,$00,$28,NORMAL,$FF,30 db RAGE ,$51,$14,NORMAL,$FF,20 db TELEPORT ,$1C,$00,PSYCHIC,$FF,20 db NIGHT_SHADE ,$29,$00,GHOST,$FF,15 db MIMIC ,$52,$00,NORMAL,$FF,10 db SCREECH ,$3B,$00,NORMAL,$D8,40 db DOUBLE_TEAM ,$0F,$00,NORMAL,$FF,15 db RECOVER ,$38,$00,NORMAL,$FF,20 db HARDEN ,$0B,$00,NORMAL,$FF,30 db MINIMIZE ,$0F,$00,NORMAL,$FF,20 db SMOKESCREEN ,$16,$00,NORMAL,$FF,20 db CONFUSE_RAY ,$31,$00,GHOST,$FF,10 db WITHDRAW ,$0B,$00,WATER,$FF,40 db DEFENSE_CURL,$0B,$00,NORMAL,$FF,40 db BARRIER ,$33,$00,PSYCHIC,$FF,30 db LIGHT_SCREEN,$40,$00,PSYCHIC,$FF,30 db HAZE ,$19,$00,ICE,$FF,30 db REFLECT ,$41,$00,PSYCHIC,$FF,20 db FOCUS_ENERGY,$2F,$00,NORMAL,$FF,30 db BIDE ,$1A,$00,NORMAL,$FF,10 db METRONOME ,$53,$00,NORMAL,$FF,10 db MIRROR_MOVE ,$09,$00,FLYING,$FF,20 db SELFDESTRUCT,$07,$82,NORMAL,$FF,5 db EGG_BOMB ,$00,$64,NORMAL,$BF,10 db LICK ,$24,$14,GHOST,$FF,30 db SMOG ,$21,$14,POISON,$B2,20 db SLUDGE ,$21,$41,POISON,$FF,20 db BONE_CLUB ,$1F,$41,GROUND,$D8,20 db FIRE_BLAST ,$22,$78,FIRE,$D8,5 db WATERFALL ,$00,$50,WATER,$FF,15 db CLAMP ,$2A,$23,WATER,$BF,10 db SWIFT ,$11,$3C,NORMAL,$FF,20 db SKULL_BASH ,$27,$64,NORMAL,$FF,15 db SPIKE_CANNON,$1D,$14,NORMAL,$FF,15 db CONSTRICT ,$46,$0A,NORMAL,$FF,35 db AMNESIA ,$35,$00,PSYCHIC,$FF,20 db KINESIS ,$16,$00,PSYCHIC,$CC,15 db SOFTBOILED ,$38,$00,NORMAL,$FF,10 db HI_JUMP_KICK,$2D,$55,FIGHTING,$E5,20 db GLARE ,$43,$00,NORMAL,$BF,30 db DREAM_EATER ,$08,$64,PSYCHIC,$FF,15 db POISON_GAS ,$42,$00,POISON,$8C,40 db BARRAGE ,$1D,$0F,NORMAL,$D8,20 db LEECH_LIFE ,$03,$14,BUG,$FF,15 db LOVELY_KISS ,$20,$00,NORMAL,$BF,10 db SKY_ATTACK ,$27,$8C,FLYING,$E5,5 db TRANSFORM ,$39,$00,NORMAL,$FF,10 db BUBBLE ,$46,$14,WATER,$FF,30 db DIZZY_PUNCH ,$00,$46,NORMAL,$FF,10 db SPORE ,$20,$00,GRASS,$FF,15 db FLASH ,$16,$00,NORMAL,$B2,20 db PSYWAVE ,$29,$01,PSYCHIC,$CC,15 db SPLASH ,$55,$00,NORMAL,$FF,40 db ACID_ARMOR ,$33,$00,POISON,$FF,40 db CRABHAMMER ,$00,$5A,WATER,$D8,10 db EXPLOSION ,$07,$AA,NORMAL,$FF,5 db FURY_SWIPES ,$1D,$12,NORMAL,$CC,15 db BONEMERANG ,$2C,$32,GROUND,$E5,10 db REST ,$38,$00,PSYCHIC,$FF,10 db ROCK_SLIDE ,$00,$4B,ROCK,$E5,10 db HYPER_FANG ,$1F,$50,NORMAL,$E5,15 db SHARPEN ,$0A,$00,NORMAL,$FF,30 db CONVERSION ,$18,$00,NORMAL,$FF,30 db TRI_ATTACK ,$00,$50,NORMAL,$FF,10 db SUPER_FANG ,$28,$01,NORMAL,$E5,10 db SLASH ,$00,$46,NORMAL,$FF,20 db SUBSTITUTE ,$4F,$00,NORMAL,$FF,10 db STRUGGLE ,$30,$32,NORMAL,$FF,10 BulbasaurBaseStats: ; 0x383de db DEX_BULBASAUR ; pokedex id db 45 ; base hp db 49 ; base attack db 49 ; base defense db 45 ; base speed db 65 ; base special db GRASS ; species type 1 db POISON ; species type 2 db 45 ; catch rate db 64 ; base exp yield db $55 ; sprite dimensions dw BulbasaurPicFront dw BulbasaurPicBack ; attacks known at lvl 0 db TACKLE db GROWL db 0 db 0 db 3 ; growth rate ; learnset db %10100100 db %00000011 db %00111000 db %11000000 db %00000011 db %00001000 db %00000110 db 0 ; padding IvysaurBaseStats: ; 0x383fa db DEX_IVYSAUR ; pokedex id db 60 ; base hp db 62 ; base attack db 63 ; base defense db 60 ; base speed db 80 ; base special db GRASS ; species type 1 db POISON ; species type 2 db 45 ; catch rate db 141 ; base exp yield db $66 ; sprite dimensions dw IvysaurPicFront dw IvysaurPicBack ; attacks known at lvl 0 db TACKLE db GROWL db LEECH_SEED db 0 db 3 ; growth rate ; learnset db %10100100 db %00000011 db %00111000 db %11000000 db %00000011 db %00001000 db %00000110 db 0 ; padding VenusaurBaseStats: ; 0x38416 db DEX_VENUSAUR ; pokedex id db 80 ; base hp db 82 ; base attack db 83 ; base defense db 80 ; base speed db 100 ; base special db GRASS ; species type 1 db POISON ; species type 2 db 45 ; catch rate db 208 ; base exp yield db $77 ; sprite dimensions dw VenusaurPicFront dw VenusaurPicBack ; attacks known at lvl 0 db TACKLE db GROWL db LEECH_SEED db VINE_WHIP db 3 ; growth rate ; learnset db %10100100 db %01000011 db %00111000 db %11000000 db %00000011 db %00001000 db %00000110 db 0 ; padding CharmanderBaseStats: ; 0x38432 db DEX_CHARMANDER ; pokedex id db 39 ; base hp db 52 ; base attack db 43 ; base defense db 65 ; base speed db 50 ; base special db FIRE ; species type 1 db FIRE ; species type 2 db 45 ; catch rate db 65 ; base exp yield db $55 ; sprite dimensions dw CharmanderPicFront dw CharmanderPicBack ; attacks known at lvl 0 db SCRATCH db GROWL db 0 db 0 db 3 ; growth rate ; learnset db %10110101 db %00000011 db %01001111 db %11001000 db %11100011 db %00001000 db %00100110 db 0 ; padding CharmeleonBaseStats: ; 0x3844e db DEX_CHARMELEON ; pokedex id db 58 ; base hp db 64 ; base attack db 58 ; base defense db 80 ; base speed db 65 ; base special db FIRE ; species type 1 db FIRE ; species type 2 db 45 ; catch rate db 142 ; base exp yield db $66 ; sprite dimensions dw CharmeleonPicFront dw CharmeleonPicBack ; attacks known at lvl 0 db SCRATCH db GROWL db EMBER db 0 db 3 ; growth rate ; learnset db %10110101 db %00000011 db %01001111 db %11001000 db %11100011 db %00001000 db %00100110 db 0 ; padding CharizardBaseStats: ; 0x3846a db DEX_CHARIZARD ; pokedex id db 78 ; base hp db 84 ; base attack db 78 ; base defense db 100 ; base speed db 85 ; base special db FIRE ; species type 1 db FLYING ; species type 2 db 45 ; catch rate db 209 ; base exp yield db $77 ; sprite dimensions dw CharizardPicFront dw CharizardPicBack ; attacks known at lvl 0 db SCRATCH db GROWL db EMBER db LEER db 3 ; growth rate ; learnset db %10110101 db %01000011 db %01001111 db %11001110 db %11100011 db %00001000 db %00100110 db 0 ; padding SquirtleBaseStats: ; 0x38486 db DEX_SQUIRTLE ; pokedex id db 44 ; base hp db 48 ; base attack db 65 ; base defense db 43 ; base speed db 50 ; base special db WATER ; species type 1 db WATER ; species type 2 db 45 ; catch rate db 66 ; base exp yield db $55 ; sprite dimensions dw SquirtlePicFront dw SquirtlePicBack ; attacks known at lvl 0 db TACKLE db TAIL_WHIP db 0 db 0 db 3 ; growth rate ; learnset db %10110001 db %00111111 db %00001111 db %11001000 db %10000011 db %00001000 db %00110010 db 0 ; padding WartortleBaseStats: ; 0x384a2 db DEX_WARTORTLE ; pokedex id db 59 ; base hp db 63 ; base attack db 80 ; base defense db 58 ; base speed db 65 ; base special db WATER ; species type 1 db WATER ; species type 2 db 45 ; catch rate db 143 ; base exp yield db $66 ; sprite dimensions dw WartortlePicFront dw WartortlePicBack ; attacks known at lvl 0 db TACKLE db TAIL_WHIP db BUBBLE db 0 db 3 ; growth rate ; learnset db %10110001 db %00111111 db %00001111 db %11001000 db %10000011 db %00001000 db %00110010 db 0 ; padding BlastoiseBaseStats: ; 0x384be db DEX_BLASTOISE ; pokedex id db 79 ; base hp db 83 ; base attack db 100 ; base defense db 78 ; base speed db 85 ; base special db WATER ; species type 1 db WATER ; species type 2 db 45 ; catch rate db 210 ; base exp yield db $77 ; sprite dimensions dw BlastoisePicFront dw BlastoisePicBack ; attacks known at lvl 0 db TACKLE db TAIL_WHIP db BUBBLE db WATER_GUN db 3 ; growth rate ; learnset db %10110001 db %01111111 db %00001111 db %11001110 db %10000011 db %00001000 db %00110010 db 0 ; padding CaterpieBaseStats: ; 0x384da db DEX_CATERPIE ; pokedex id db 45 ; base hp db 30 ; base attack db 35 ; base defense db 45 ; base speed db 20 ; base special db BUG ; species type 1 db BUG ; species type 2 db 255 ; catch rate db 53 ; base exp yield db $55 ; sprite dimensions dw CaterpiePicFront dw CaterpiePicBack ; attacks known at lvl 0 db TACKLE db STRING_SHOT db 0 db 0 db 0 ; growth rate ; learnset db %00000000 db %00000000 db %00000000 db %00000000 db %00000000 db %00000000 db %00000000 db 0 ; padding MetapodBaseStats: ; 0x384f6 db DEX_METAPOD ; pokedex id db 50 ; base hp db 20 ; base attack db 55 ; base defense db 30 ; base speed db 25 ; base special db BUG ; species type 1 db BUG ; species type 2 db 120 ; catch rate db 72 ; base exp yield db $55 ; sprite dimensions dw MetapodPicFront dw MetapodPicBack ; attacks known at lvl 0 db HARDEN db 0 db 0 db 0 db 0 ; growth rate ; learnset db %00000000 db %00000000 db %00000000 db %00000000 db %00000000 db %00000000 db %00000000 db 0 ; padding ButterfreeBaseStats: ; 0x38512 db DEX_BUTTERFREE ; pokedex id db 60 ; base hp db 45 ; base attack db 50 ; base defense db 70 ; base speed db 80 ; base special db BUG ; species type 1 db FLYING ; species type 2 db 45 ; catch rate db 160 ; base exp yield db $77 ; sprite dimensions dw ButterfreePicFront dw ButterfreePicBack ; attacks known at lvl 0 db CONFUSION db 0 db 0 db 0 db 0 ; growth rate ; learnset db %00101010 db %01000011 db %00111000 db %11110000 db %01000011 db %00101000 db %00000010 db 0 ; padding WeedleBaseStats: ; 0x3852e db DEX_WEEDLE ; pokedex id db 40 ; base hp db 35 ; base attack db 30 ; base defense db 50 ; base speed db 20 ; base special db BUG ; species type 1 db POISON ; species type 2 db 255 ; catch rate db 52 ; base exp yield db $55 ; sprite dimensions dw WeedlePicFront dw WeedlePicBack ; attacks known at lvl 0 db POISON_STING db STRING_SHOT db 0 db 0 db 0 ; growth rate ; learnset db %00000000 db %00000000 db %00000000 db %00000000 db %00000000 db %00000000 db %00000000 db 0 ; padding KakunaBaseStats: ; 0x3854a db DEX_KAKUNA ; pokedex id db 45 ; base hp db 25 ; base attack db 50 ; base defense db 35 ; base speed db 25 ; base special db BUG ; species type 1 db POISON ; species type 2 db 120 ; catch rate db 71 ; base exp yield db $55 ; sprite dimensions dw KakunaPicFront dw KakunaPicBack ; attacks known at lvl 0 db HARDEN db 0 db 0 db 0 db 0 ; growth rate ; learnset db %00000000 db %00000000 db %00000000 db %00000000 db %00000000 db %00000000 db %00000000 db 0 ; padding BeedrillBaseStats: ; 0x38566 db DEX_BEEDRILL ; pokedex id db 65 ; base hp db 80 ; base attack db 40 ; base defense db 75 ; base speed db 45 ; base special db BUG ; species type 1 db POISON ; species type 2 db 45 ; catch rate db 159 ; base exp yield db $77 ; sprite dimensions dw BeedrillPicFront dw BeedrillPicBack ; attacks known at lvl 0 db FURY_ATTACK db 0 db 0 db 0 db 0 ; growth rate ; learnset db %00100100 db %01000011 db %00011000 db %11000000 db %11000011 db %00001000 db %00000110 db 0 ; padding PidgeyBaseStats: ; 0x38582 db DEX_PIDGEY ; pokedex id db 40 ; base hp db 45 ; base attack db 40 ; base defense db 56 ; base speed db 35 ; base special db NORMAL ; species type 1 db FLYING ; species type 2 db 255 ; catch rate db 55 ; base exp yield db $55 ; sprite dimensions dw PidgeyPicFront dw PidgeyPicBack ; attacks known at lvl 0 db GUST db 0 db 0 db 0 db 3 ; growth rate ; learnset db %00101010 db %00000011 db %00001000 db %11000000 db %01000011 db %00001100 db %00001010 db 0 ; padding PidgeottoBaseStats: ; 0x3859e db DEX_PIDGEOTTO ; pokedex id db 63 ; base hp db 60 ; base attack db 55 ; base defense db 71 ; base speed db 50 ; base special db NORMAL ; species type 1 db FLYING ; species type 2 db 120 ; catch rate db 113 ; base exp yield db $66 ; sprite dimensions dw PidgeottoPicFront dw PidgeottoPicBack ; attacks known at lvl 0 db GUST db SAND_ATTACK db 0 db 0 db 3 ; growth rate ; learnset db %00101010 db %00000011 db %00001000 db %11000000 db %01000011 db %00001100 db %00001010 db 0 ; padding PidgeotBaseStats: ; 0x385ba db DEX_PIDGEOT ; pokedex id db 83 ; base hp db 80 ; base attack db 75 ; base defense db 91 ; base speed db 70 ; base special db NORMAL ; species type 1 db FLYING ; species type 2 db 45 ; catch rate db 172 ; base exp yield db $77 ; sprite dimensions dw PidgeotPicFront dw PidgeotPicBack ; attacks known at lvl 0 db GUST db SAND_ATTACK db QUICK_ATTACK db 0 db 3 ; growth rate ; learnset db %00101010 db %01000011 db %00001000 db %11000000 db %01000011 db %00001100 db %00001010 db 0 ; padding RattataBaseStats: ; 0x385d6 db DEX_RATTATA ; pokedex id db 30 ; base hp db 56 ; base attack db 35 ; base defense db 72 ; base speed db 25 ; base special db NORMAL ; species type 1 db NORMAL ; species type 2 db 255 ; catch rate db 57 ; base exp yield db $55 ; sprite dimensions dw RattataPicFront dw RattataPicBack ; attacks known at lvl 0 db TACKLE db TAIL_WHIP db 0 db 0 db 0 ; growth rate ; learnset db %10100000 db %00101111 db %10001000 db %11001001 db %11000010 db %00001000 db %00000010 db 0 ; padding RaticateBaseStats: ; 0x385f2 db DEX_RATICATE ; pokedex id db 55 ; base hp db 81 ; base attack db 60 ; base defense db 97 ; base speed db 50 ; base special db NORMAL ; species type 1 db NORMAL ; species type 2 db 90 ; catch rate db 116 ; base exp yield db $66 ; sprite dimensions dw RaticatePicFront dw RaticatePicBack ; attacks known at lvl 0 db TACKLE db TAIL_WHIP db QUICK_ATTACK db 0 db 0 ; growth rate ; learnset db %10100000 db %01111111 db %10001000 db %11001001 db %11000010 db %00001000 db %00000010 db 0 ; padding SpearowBaseStats: ; 0x3860e db DEX_SPEAROW ; pokedex id db 40 ; base hp db 60 ; base attack db 30 ; base defense db 70 ; base speed db 31 ; base special db NORMAL ; species type 1 db FLYING ; species type 2 db 255 ; catch rate db 58 ; base exp yield db $55 ; sprite dimensions dw SpearowPicFront dw SpearowPicBack ; attacks known at lvl 0 db PECK db GROWL db 0 db 0 db 0 ; growth rate ; learnset db %00101010 db %00000011 db %00001000 db %11000000 db %01000010 db %00001100 db %00001010 db 0 ; padding FearowBaseStats: ; 0x3862a db DEX_FEAROW ; pokedex id db 65 ; base hp db 90 ; base attack db 65 ; base defense db 100 ; base speed db 61 ; base special db NORMAL ; species type 1 db FLYING ; species type 2 db 90 ; catch rate db 162 ; base exp yield db $77 ; sprite dimensions dw FearowPicFront dw FearowPicBack ; attacks known at lvl 0 db PECK db GROWL db LEER db 0 db 0 ; growth rate ; learnset db %00101010 db %01000011 db %00001000 db %11000000 db %01000010 db %00001100 db %00001010 db 0 ; padding EkansBaseStats: ; 0x38646 db DEX_EKANS ; pokedex id db 35 ; base hp db 60 ; base attack db 44 ; base defense db 55 ; base speed db 40 ; base special db POISON ; species type 1 db POISON ; species type 2 db 255 ; catch rate db 62 ; base exp yield db $55 ; sprite dimensions dw EkansPicFront dw EkansPicBack ; attacks known at lvl 0 db WRAP db LEER db 0 db 0 db 0 ; growth rate ; learnset db %10100000 db %00000011 db %00011000 db %11001110 db %10000010 db %10001000 db %00100010 db 0 ; padding ArbokBaseStats: ; 0x38662 db DEX_ARBOK ; pokedex id db 60 ; base hp db 85 ; base attack db 69 ; base defense db 80 ; base speed db 65 ; base special db POISON ; species type 1 db POISON ; species type 2 db 90 ; catch rate db 147 ; base exp yield db $77 ; sprite dimensions dw ArbokPicFront dw ArbokPicBack ; attacks known at lvl 0 db WRAP db LEER db POISON_STING db 0 db 0 ; growth rate ; learnset db %10100000 db %01000011 db %00011000 db %11001110 db %10000010 db %10001000 db %00100010 db 0 ; padding PikachuBaseStats: ; 0x3867e db DEX_PIKACHU ; pokedex id db 35 ; base hp db 55 ; base attack db 30 ; base defense db 90 ; base speed db 50 ; base special db ELECTRIC ; species type 1 db ELECTRIC ; species type 2 db 190 ; catch rate db 82 ; base exp yield db $55 ; sprite dimensions dw PikachuPicFront dw PikachuPicBack ; attacks known at lvl 0 db THUNDERSHOCK db GROWL db 0 db 0 db 0 ; growth rate ; learnset db %10110001 db %10000011 db %10001101 db %11000001 db %11000011 db %00011000 db %01000010 db 0 ; padding RaichuBaseStats: ; 0x3869a db DEX_RAICHU ; pokedex id db 60 ; base hp db 90 ; base attack db 55 ; base defense db 100 ; base speed db 90 ; base special db ELECTRIC ; species type 1 db ELECTRIC ; species type 2 db 75 ; catch rate db 122 ; base exp yield db $77 ; sprite dimensions dw RaichuPicFront dw RaichuPicBack ; attacks known at lvl 0 db THUNDERSHOCK db GROWL db THUNDER_WAVE db 0 db 0 ; growth rate ; learnset db %10110001 db %11000011 db %10001101 db %11000001 db %11000011 db %00011000 db %01000010 db 0 ; padding SandshrewBaseStats: ; 0x386b6 db DEX_SANDSHREW ; pokedex id db 50 ; base hp db 75 ; base attack db 85 ; base defense db 40 ; base speed db 30 ; base special db GROUND ; species type 1 db GROUND ; species type 2 db 255 ; catch rate db 93 ; base exp yield db $55 ; sprite dimensions dw SandshrewPicFront dw SandshrewPicBack ; attacks known at lvl 0 db SCRATCH db 0 db 0 db 0 db 0 ; growth rate ; learnset db %10100100 db %00000011 db %00001101 db %11001110 db %11000010 db %10001000 db %00100110 db 0 ; padding SandslashBaseStats: ; 0x386d2 db DEX_SANDSLASH ; pokedex id db 75 ; base hp db 100 ; base attack db 110 ; base defense db 65 ; base speed db 55 ; base special db GROUND ; species type 1 db GROUND ; species type 2 db 90 ; catch rate db 163 ; base exp yield db $66 ; sprite dimensions dw SandslashPicFront dw SandslashPicBack ; attacks known at lvl 0 db SCRATCH db SAND_ATTACK db 0 db 0 db 0 ; growth rate ; learnset db %10100100 db %01000011 db %00001101 db %11001110 db %11000010 db %10001000 db %00100110 db 0 ; padding NidoranFBaseStats: ; 0x386ee db DEX_NIDORAN_F ; pokedex id db 55 ; base hp db 47 ; base attack db 52 ; base defense db 41 ; base speed db 40 ; base special db POISON ; species type 1 db POISON ; species type 2 db 235 ; catch rate db 59 ; base exp yield db $55 ; sprite dimensions dw NidoranFPicFront dw NidoranFPicBack ; attacks known at lvl 0 db GROWL db TACKLE db 0 db 0 db 3 ; growth rate ; learnset db %10100000 db %00100011 db %10001000 db %11000001 db %10000011 db %00001000 db %00000010 db 0 ; padding NidorinaBaseStats: ; 0x3870a db DEX_NIDORINA ; pokedex id db 70 ; base hp db 62 ; base attack db 67 ; base defense db 56 ; base speed db 55 ; base special db POISON ; species type 1 db POISON ; species type 2 db 120 ; catch rate db 117 ; base exp yield db $66 ; sprite dimensions dw NidorinaPicFront dw NidorinaPicBack ; attacks known at lvl 0 db GROWL db TACKLE db SCRATCH db 0 db 3 ; growth rate ; learnset db %11100000 db %00111111 db %10001000 db %11000001 db %10000011 db %00001000 db %00000010 db 0 ; padding NidoqueenBaseStats: ; 0x38726 db DEX_NIDOQUEEN ; pokedex id db 90 ; base hp db 82 ; base attack db 87 ; base defense db 76 ; base speed db 75 ; base special db POISON ; species type 1 db GROUND ; species type 2 db 45 ; catch rate db 194 ; base exp yield db $77 ; sprite dimensions dw NidoqueenPicFront dw NidoqueenPicBack ; attacks known at lvl 0 db TACKLE db SCRATCH db TAIL_WHIP db BODY_SLAM db 3 ; growth rate ; learnset db %11110001 db %11111111 db %10001111 db %11000111 db %10100011 db %10001000 db %00110010 db 0 ; padding NidoranMBaseStats: ; 0x38742 db DEX_NIDORAN_M ; pokedex id db 46 ; base hp db 57 ; base attack db 40 ; base defense db 50 ; base speed db 40 ; base special db POISON ; species type 1 db POISON ; species type 2 db 235 ; catch rate db 60 ; base exp yield db $55 ; sprite dimensions dw NidoranMPicFront dw NidoranMPicBack ; attacks known at lvl 0 db LEER db TACKLE db 0 db 0 db 3 ; growth rate ; learnset db %11100000 db %00100011 db %10001000 db %11000001 db %10000011 db %00001000 db %00000010 db 0 ; padding NidorinoBaseStats: ; 0x3875e db DEX_NIDORINO ; pokedex id db 61 ; base hp db 72 ; base attack db 57 ; base defense db 65 ; base speed db 55 ; base special db POISON ; species type 1 db POISON ; species type 2 db 120 ; catch rate db 118 ; base exp yield db $66 ; sprite dimensions dw NidorinoPicFront dw NidorinoPicBack ; attacks known at lvl 0 db LEER db TACKLE db HORN_ATTACK db 0 db 3 ; growth rate ; learnset db %11100000 db %00111111 db %10001000 db %11000001 db %10000011 db %00001000 db %00000010 db 0 ; padding NidokingBaseStats: ; 0x3877a db DEX_NIDOKING ; pokedex id db 81 ; base hp db 92 ; base attack db 77 ; base defense db 85 ; base speed db 75 ; base special db POISON ; species type 1 db GROUND ; species type 2 db 45 ; catch rate db 195 ; base exp yield db $77 ; sprite dimensions dw NidokingPicFront dw NidokingPicBack ; attacks known at lvl 0 db TACKLE db HORN_ATTACK db POISON_STING db THRASH db 3 ; growth rate ; learnset db %11110001 db %11111111 db %10001111 db %11000111 db %10100011 db %10001000 db %00110010 db 0 ; padding ClefairyBaseStats: ; 0x38796 db DEX_CLEFAIRY ; pokedex id db 70 ; base hp db 45 ; base attack db 48 ; base defense db 35 ; base speed db 60 ; base special db NORMAL ; species type 1 db NORMAL ; species type 2 db 150 ; catch rate db 68 ; base exp yield db $55 ; sprite dimensions dw ClefairyPicFront dw ClefairyPicBack ; attacks known at lvl 0 db POUND db GROWL db 0 db 0 db 4 ; growth rate ; learnset db %10110001 db %00111111 db %10101111 db %11110001 db %10100111 db %00111000 db %01100011 db 0 ; padding ClefableBaseStats: ; 0x387b2 db DEX_CLEFABLE ; pokedex id db 95 ; base hp db 70 ; base attack db 73 ; base defense db 60 ; base speed db 85 ; base special db NORMAL ; species type 1 db NORMAL ; species type 2 db 25 ; catch rate db 129 ; base exp yield db $66 ; sprite dimensions dw ClefablePicFront dw ClefablePicBack ; attacks known at lvl 0 db SING db DOUBLESLAP db MINIMIZE db METRONOME db 4 ; growth rate ; learnset db %10110001 db %01111111 db %10101111 db %11110001 db %10100111 db %00111000 db %01100011 db 0 ; padding VulpixBaseStats: ; 0x387ce db DEX_VULPIX ; pokedex id db 38 ; base hp db 41 ; base attack db 40 ; base defense db 65 ; base speed db 65 ; base special db FIRE ; species type 1 db FIRE ; species type 2 db 190 ; catch rate db 63 ; base exp yield db $66 ; sprite dimensions dw VulpixPicFront dw VulpixPicBack ; attacks known at lvl 0 db EMBER db TAIL_WHIP db 0 db 0 db 0 ; growth rate ; learnset db %10100000 db %00000011 db %00001000 db %11001000 db %11100011 db %00001000 db %00000010 db 0 ; padding NinetalesBaseStats: ; 0x387ea db DEX_NINETALES ; pokedex id db 73 ; base hp db 76 ; base attack db 75 ; base defense db 100 ; base speed db 100 ; base special db FIRE ; species type 1 db FIRE ; species type 2 db 75 ; catch rate db 178 ; base exp yield db $77 ; sprite dimensions dw NinetalesPicFront dw NinetalesPicBack ; attacks known at lvl 0 db EMBER db TAIL_WHIP db QUICK_ATTACK db ROAR db 0 ; growth rate ; learnset db %10100000 db %01000011 db %00001000 db %11001000 db %11100011 db %00001000 db %00000010 db 0 ; padding JigglypuffBaseStats: ; 0x38806 db DEX_JIGGLYPUFF ; pokedex id db 115 ; base hp db 45 ; base attack db 20 ; base defense db 20 ; base speed db 25 ; base special db NORMAL ; species type 1 db NORMAL ; species type 2 db 170 ; catch rate db 76 ; base exp yield db $55 ; sprite dimensions dw JigglypuffPicFront dw JigglypuffPicBack ; attacks known at lvl 0 db SING db 0 db 0 db 0 db 4 ; growth rate ; learnset db %10110001 db %00111111 db %10101111 db %11110001 db %10100011 db %00111000 db %01100011 db 0 ; padding WigglytuffBaseStats: ; 0x38822 db DEX_WIGGLYTUFF ; pokedex id db 140 ; base hp db 70 ; base attack db 45 ; base defense db 45 ; base speed db 50 ; base special db NORMAL ; species type 1 db NORMAL ; species type 2 db 50 ; catch rate db 109 ; base exp yield db $66 ; sprite dimensions dw WigglytuffPicFront dw WigglytuffPicBack ; attacks known at lvl 0 db SING db DISABLE db DEFENSE_CURL db DOUBLESLAP db 4 ; growth rate ; learnset db %10110001 db %01111111 db %10101111 db %11110001 db %10100011 db %00111000 db %01100011 db 0 ; padding ZubatBaseStats: ; 0x3883e db DEX_ZUBAT ; pokedex id db 40 ; base hp db 45 ; base attack db 35 ; base defense db 55 ; base speed db 40 ; base special db POISON ; species type 1 db FLYING ; species type 2 db 255 ; catch rate db 54 ; base exp yield db $55 ; sprite dimensions dw ZubatPicFront dw ZubatPicBack ; attacks known at lvl 0 db LEECH_LIFE db 0 db 0 db 0 db 0 ; growth rate ; learnset db %00101010 db %00000011 db %00011000 db %11000000 db %01000010 db %00001000 db %00000010 db 0 ; padding GolbatBaseStats: ; 0x3885a db DEX_GOLBAT ; pokedex id db 75 ; base hp db 80 ; base attack db 70 ; base defense db 90 ; base speed db 75 ; base special db POISON ; species type 1 db FLYING ; species type 2 db 90 ; catch rate db 171 ; base exp yield db $77 ; sprite dimensions dw GolbatPicFront dw GolbatPicBack ; attacks known at lvl 0 db LEECH_LIFE db SCREECH db BITE db 0 db 0 ; growth rate ; learnset db %00101010 db %01000011 db %00011000 db %11000000 db %01000010 db %00001000 db %00000010 db 0 ; padding OddishBaseStats: ; 0x38876 db DEX_ODDISH ; pokedex id db 45 ; base hp db 50 ; base attack db 55 ; base defense db 30 ; base speed db 75 ; base special db GRASS ; species type 1 db POISON ; species type 2 db 255 ; catch rate db 78 ; base exp yield db $55 ; sprite dimensions dw OddishPicFront dw OddishPicBack ; attacks known at lvl 0 db ABSORB db 0 db 0 db 0 db 3 ; growth rate ; learnset db %00100100 db %00000011 db %00111000 db %11000000 db %00000011 db %00001000 db %00000110 db 0 ; padding GloomBaseStats: ; 0x38892 db DEX_GLOOM ; pokedex id db 60 ; base hp db 65 ; base attack db 70 ; base defense db 40 ; base speed db 85 ; base special db GRASS ; species type 1 db POISON ; species type 2 db 120 ; catch rate db 132 ; base exp yield db $66 ; sprite dimensions dw GloomPicFront dw GloomPicBack ; attacks known at lvl 0 db ABSORB db POISONPOWDER db STUN_SPORE db 0 db 3 ; growth rate ; learnset db %00100100 db %00000011 db %00111000 db %11000000 db %00000011 db %00001000 db %00000110 db 0 ; padding VileplumeBaseStats: ; 0x388ae db DEX_VILEPLUME ; pokedex id db 75 ; base hp db 80 ; base attack db 85 ; base defense db 50 ; base speed db 100 ; base special db GRASS ; species type 1 db POISON ; species type 2 db 45 ; catch rate db 184 ; base exp yield db $77 ; sprite dimensions dw VileplumePicFront dw VileplumePicBack ; attacks known at lvl 0 db STUN_SPORE db SLEEP_POWDER db ACID db PETAL_DANCE db 3 ; growth rate ; learnset db %10100100 db %01000011 db %00111000 db %11000000 db %00000011 db %00001000 db %00000110 db 0 ; padding ParasBaseStats: ; 0x388ca db DEX_PARAS ; pokedex id db 35 ; base hp db 70 ; base attack db 55 ; base defense db 25 ; base speed db 55 ; base special db BUG ; species type 1 db GRASS ; species type 2 db 190 ; catch rate db 70 ; base exp yield db $55 ; sprite dimensions dw ParasPicFront dw ParasPicBack ; attacks known at lvl 0 db SCRATCH db 0 db 0 db 0 db 0 ; growth rate ; learnset db %10100100 db %00000011 db %00111000 db %11001000 db %10000011 db %00001000 db %00000110 db 0 ; padding ParasectBaseStats: ; 0x388e6 db DEX_PARASECT ; pokedex id db 60 ; base hp db 95 ; base attack db 80 ; base defense db 30 ; base speed db 80 ; base special db BUG ; species type 1 db GRASS ; species type 2 db 75 ; catch rate db 128 ; base exp yield db $77 ; sprite dimensions dw ParasectPicFront dw ParasectPicBack ; attacks known at lvl 0 db SCRATCH db STUN_SPORE db LEECH_LIFE db 0 db 0 ; growth rate ; learnset db %10100100 db %01000011 db %00111000 db %11001000 db %10000011 db %00001000 db %00000110 db 0 ; padding VenonatBaseStats: ; 0x38902 db DEX_VENONAT ; pokedex id db 60 ; base hp db 55 ; base attack db 50 ; base defense db 45 ; base speed db 40 ; base special db BUG ; species type 1 db POISON ; species type 2 db 190 ; catch rate db 75 ; base exp yield db $55 ; sprite dimensions dw VenonatPicFront dw VenonatPicBack ; attacks known at lvl 0 db TACKLE db DISABLE db 0 db 0 db 0 ; growth rate ; learnset db %00100000 db %00000011 db %00111000 db %11010000 db %00000011 db %00101000 db %00000010 db 0 ; padding VenomothBaseStats: ; 0x3891e db DEX_VENOMOTH ; pokedex id db 70 ; base hp db 65 ; base attack db 60 ; base defense db 90 ; base speed db 90 ; base special db BUG ; species type 1 db POISON ; species type 2 db 75 ; catch rate db 138 ; base exp yield db $77 ; sprite dimensions dw VenomothPicFront dw VenomothPicBack ; attacks known at lvl 0 db TACKLE db DISABLE db POISONPOWDER db LEECH_LIFE db 0 ; growth rate ; learnset db %00101010 db %01000011 db %00111000 db %11110000 db %01000011 db %00101000 db %00000010 db 0 ; padding DiglettBaseStats: ; 0x3893a db DEX_DIGLETT ; pokedex id db 10 ; base hp db 55 ; base attack db 25 ; base defense db 95 ; base speed db 45 ; base special db GROUND ; species type 1 db GROUND ; species type 2 db 255 ; catch rate db 81 ; base exp yield db $55 ; sprite dimensions dw DiglettPicFront dw DiglettPicBack ; attacks known at lvl 0 db SCRATCH db 0 db 0 db 0 db 0 ; growth rate ; learnset db %10100000 db %00000011 db %00001000 db %11001110 db %00000010 db %10001000 db %00000010 db 0 ; padding DugtrioBaseStats: ; 0x38956 db DEX_DUGTRIO ; pokedex id db 35 ; base hp db 80 ; base attack db 50 ; base defense db 120 ; base speed db 70 ; base special db GROUND ; species type 1 db GROUND ; species type 2 db 50 ; catch rate db 153 ; base exp yield db $66 ; sprite dimensions dw DugtrioPicFront dw DugtrioPicBack ; attacks known at lvl 0 db SCRATCH db GROWL db DIG db 0 db 0 ; growth rate ; learnset db %10100000 db %01000011 db %00001000 db %11001110 db %00000010 db %10001000 db %00000010 db 0 ; padding MeowthBaseStats: ; 0x38972 db DEX_MEOWTH ; pokedex id db 40 ; base hp db 45 ; base attack db 35 ; base defense db 90 ; base speed db 40 ; base special db NORMAL ; species type 1 db NORMAL ; species type 2 db 255 ; catch rate db 69 ; base exp yield db $55 ; sprite dimensions dw MeowthPicFront dw MeowthPicBack ; attacks known at lvl 0 db SCRATCH db GROWL db 0 db 0 db 0 ; growth rate ; learnset db %10100000 db %10001111 db %10001000 db %11000001 db %11000010 db %00001000 db %00000010 db 0 ; padding PersianBaseStats: ; 0x3898e db DEX_PERSIAN ; pokedex id db 65 ; base hp db 70 ; base attack db 60 ; base defense db 115 ; base speed db 65 ; base special db NORMAL ; species type 1 db NORMAL ; species type 2 db 90 ; catch rate db 148 ; base exp yield db $77 ; sprite dimensions dw PersianPicFront dw PersianPicBack ; attacks known at lvl 0 db SCRATCH db GROWL db BITE db SCREECH db 0 ; growth rate ; learnset db %10100000 db %11001111 db %10001000 db %11000001 db %11000010 db %00001000 db %00000010 db 0 ; padding PsyduckBaseStats: ; 0x389aa db DEX_PSYDUCK ; pokedex id db 50 ; base hp db 52 ; base attack db 48 ; base defense db 55 ; base speed db 50 ; base special db WATER ; species type 1 db WATER ; species type 2 db 190 ; catch rate db 80 ; base exp yield db $55 ; sprite dimensions dw PsyduckPicFront dw PsyduckPicBack ; attacks known at lvl 0 db SCRATCH db 0 db 0 db 0 db 0 ; growth rate ; learnset db %10110001 db %10111111 db %00001111 db %11001000 db %11000010 db %00001000 db %00110010 db 0 ; padding GolduckBaseStats: ; 0x389c6 db DEX_GOLDUCK ; pokedex id db 80 ; base hp db 82 ; base attack db 78 ; base defense db 85 ; base speed db 80 ; base special db WATER ; species type 1 db WATER ; species type 2 db 75 ; catch rate db 174 ; base exp yield db $77 ; sprite dimensions dw GolduckPicFront dw GolduckPicBack ; attacks known at lvl 0 db SCRATCH db TAIL_WHIP db DISABLE db 0 db 0 ; growth rate ; learnset db %10110001 db %11111111 db %00001111 db %11001000 db %11000010 db %00001000 db %00110010 db 0 ; padding MankeyBaseStats: ; 0x389e2 db DEX_MANKEY ; pokedex id db 40 ; base hp db 80 ; base attack db 35 ; base defense db 70 ; base speed db 35 ; base special db FIGHTING ; species type 1 db FIGHTING ; species type 2 db 190 ; catch rate db 74 ; base exp yield db $55 ; sprite dimensions dw MankeyPicFront dw MankeyPicBack ; attacks known at lvl 0 db SCRATCH db LEER db 0 db 0 db 0 ; growth rate ; learnset db %10110001 db %10000011 db %10001111 db %11001001 db %11000110 db %10001000 db %00100010 db 0 ; padding PrimeapeBaseStats: ; 0x389fe db DEX_PRIMEAPE ; pokedex id db 65 ; base hp db 105 ; base attack db 60 ; base defense db 95 ; base speed db 60 ; base special db FIGHTING ; species type 1 db FIGHTING ; species type 2 db 75 ; catch rate db 149 ; base exp yield db $77 ; sprite dimensions dw PrimeapePicFront dw PrimeapePicBack ; attacks known at lvl 0 db SCRATCH db LEER db KARATE_CHOP db FURY_SWIPES db 0 ; growth rate ; learnset db %10110001 db %11000011 db %10001111 db %11001001 db %11000110 db %10001000 db %00100010 db 0 ; padding GrowlitheBaseStats: ; 0x38a1a db DEX_GROWLITHE ; pokedex id db 55 ; base hp db 70 ; base attack db 45 ; base defense db 60 ; base speed db 50 ; base special db FIRE ; species type 1 db FIRE ; species type 2 db 190 ; catch rate db 91 ; base exp yield db $55 ; sprite dimensions dw GrowlithePicFront dw GrowlithePicBack ; attacks known at lvl 0 db BITE db ROAR db 0 db 0 db 5 ; growth rate ; learnset db %10100000 db %00000011 db %01001000 db %11001000 db %11100011 db %00001000 db %00000010 db 0 ; padding ArcanineBaseStats: ; 0x38a36 db DEX_ARCANINE ; pokedex id db 90 ; base hp db 110 ; base attack db 80 ; base defense db 95 ; base speed db 80 ; base special db FIRE ; species type 1 db FIRE ; species type 2 db 75 ; catch rate db 213 ; base exp yield db $77 ; sprite dimensions dw ArcaninePicFront dw ArcaninePicBack ; attacks known at lvl 0 db ROAR db EMBER db LEER db TAKE_DOWN db 5 ; growth rate ; learnset db %10100000 db %01000011 db %01001000 db %11101000 db %11100011 db %00001000 db %00000010 db 0 ; padding PoliwagBaseStats: ; 0x38a52 db DEX_POLIWAG ; pokedex id db 40 ; base hp db 50 ; base attack db 40 ; base defense db 90 ; base speed db 40 ; base special db WATER ; species type 1 db WATER ; species type 2 db 255 ; catch rate db 77 ; base exp yield db $55 ; sprite dimensions dw PoliwagPicFront dw PoliwagPicBack ; attacks known at lvl 0 db BUBBLE db 0 db 0 db 0 db 3 ; growth rate ; learnset db %10100000 db %00111111 db %00001000 db %11010000 db %10000010 db %00101000 db %00010010 db 0 ; padding PoliwhirlBaseStats: ; 0x38a6e db DEX_POLIWHIRL ; pokedex id db 65 ; base hp db 65 ; base attack db 65 ; base defense db 90 ; base speed db 50 ; base special db WATER ; species type 1 db WATER ; species type 2 db 120 ; catch rate db 131 ; base exp yield db $66 ; sprite dimensions dw PoliwhirlPicFront dw PoliwhirlPicBack ; attacks known at lvl 0 db BUBBLE db HYPNOSIS db WATER_GUN db 0 db 3 ; growth rate ; learnset db %10110001 db %00111111 db %00001111 db %11010110 db %10000110 db %00101000 db %00110010 db 0 ; padding PoliwrathBaseStats: ; 0x38a8a db DEX_POLIWRATH ; pokedex id db 90 ; base hp db 85 ; base attack db 95 ; base defense db 70 ; base speed db 70 ; base special db WATER ; species type 1 db FIGHTING ; species type 2 db 45 ; catch rate db 185 ; base exp yield db $77 ; sprite dimensions dw PoliwrathPicFront dw PoliwrathPicBack ; attacks known at lvl 0 db HYPNOSIS db WATER_GUN db DOUBLESLAP db BODY_SLAM db 3 ; growth rate ; learnset db %10110001 db %01111111 db %00001111 db %11010110 db %10000110 db %00101000 db %00110010 db 0 ; padding AbraBaseStats: ; 0x38aa6 db DEX_ABRA ; pokedex id db 25 ; base hp db 20 ; base attack db 15 ; base defense db 90 ; base speed db 105 ; base special db PSYCHIC ; species type 1 db PSYCHIC ; species type 2 db 200 ; catch rate db 73 ; base exp yield db $55 ; sprite dimensions dw AbraPicFront dw AbraPicBack ; attacks known at lvl 0 db TELEPORT db 0 db 0 db 0 db 3 ; growth rate ; learnset db %10110001 db %00000011 db %00001111 db %11110000 db %10000111 db %00111000 db %01000011 db 0 ; padding KadabraBaseStats: ; 0x38ac2 db DEX_KADABRA ; pokedex id db 40 ; base hp db 35 ; base attack db 30 ; base defense db 105 ; base speed db 120 ; base special db PSYCHIC ; species type 1 db PSYCHIC ; species type 2 db 100 ; catch rate db 145 ; base exp yield db $66 ; sprite dimensions dw KadabraPicFront dw KadabraPicBack ; attacks known at lvl 0 db TELEPORT db CONFUSION db DISABLE db 0 db 3 ; growth rate ; learnset db %10110001 db %00000011 db %00001111 db %11111000 db %10000111 db %00111000 db %01000011 db 0 ; padding AlakazamBaseStats: ; 0x38ade db DEX_ALAKAZAM ; pokedex id db 55 ; base hp db 50 ; base attack db 45 ; base defense db 120 ; base speed db 135 ; base special db PSYCHIC ; species type 1 db PSYCHIC ; species type 2 db 50 ; catch rate db 186 ; base exp yield db $77 ; sprite dimensions dw AlakazamPicFront dw AlakazamPicBack ; attacks known at lvl 0 db TELEPORT db CONFUSION db DISABLE db 0 db 3 ; growth rate ; learnset db %10110001 db %01000011 db %00001111 db %11111000 db %10000111 db %00111000 db %01000011 db 0 ; padding MachopBaseStats: ; 0x38afa db DEX_MACHOP ; pokedex id db 70 ; base hp db 80 ; base attack db 50 ; base defense db 35 ; base speed db 35 ; base special db FIGHTING ; species type 1 db FIGHTING ; species type 2 db 180 ; catch rate db 88 ; base exp yield db $55 ; sprite dimensions dw MachopPicFront dw MachopPicBack ; attacks known at lvl 0 db KARATE_CHOP db 0 db 0 db 0 db 3 ; growth rate ; learnset db %10110001 db %00000011 db %00001111 db %11001110 db %10100110 db %10001000 db %00100010 db 0 ; padding MachokeBaseStats: ; 0x38b16 db DEX_MACHOKE ; pokedex id db 80 ; base hp db 100 ; base attack db 70 ; base defense db 45 ; base speed db 50 ; base special db FIGHTING ; species type 1 db FIGHTING ; species type 2 db 90 ; catch rate db 146 ; base exp yield db $77 ; sprite dimensions dw MachokePicFront dw MachokePicBack ; attacks known at lvl 0 db KARATE_CHOP db LOW_KICK db LEER db 0 db 3 ; growth rate ; learnset db %10110001 db %00000011 db %00001111 db %11001110 db %10100110 db %10001000 db %00100010 db 0 ; padding MachampBaseStats: ; 0x38b32 db DEX_MACHAMP ; pokedex id db 90 ; base hp db 130 ; base attack db 80 ; base defense db 55 ; base speed db 65 ; base special db FIGHTING ; species type 1 db FIGHTING ; species type 2 db 45 ; catch rate db 193 ; base exp yield db $77 ; sprite dimensions dw MachampPicFront dw MachampPicBack ; attacks known at lvl 0 db KARATE_CHOP db LOW_KICK db LEER db 0 db 3 ; growth rate ; learnset db %10110001 db %01000011 db %00001111 db %11001110 db %10100110 db %10001000 db %00100010 db 0 ; padding BellsproutBaseStats: ; 0x38b4e db DEX_BELLSPROUT ; pokedex id db 50 ; base hp db 75 ; base attack db 35 ; base defense db 40 ; base speed db 70 ; base special db GRASS ; species type 1 db POISON ; species type 2 db 255 ; catch rate db 84 ; base exp yield db $55 ; sprite dimensions dw BellsproutPicFront dw BellsproutPicBack ; attacks known at lvl 0 db VINE_WHIP db GROWTH db 0 db 0 db 3 ; growth rate ; learnset db %00100100 db %00000011 db %00111000 db %11000000 db %00000011 db %00001000 db %00000110 db 0 ; padding WeepinbellBaseStats: ; 0x38b6a db DEX_WEEPINBELL ; pokedex id db 65 ; base hp db 90 ; base attack db 50 ; base defense db 55 ; base speed db 85 ; base special db GRASS ; species type 1 db POISON ; species type 2 db 120 ; catch rate db 151 ; base exp yield db $66 ; sprite dimensions dw WeepinbellPicFront dw WeepinbellPicBack ; attacks known at lvl 0 db VINE_WHIP db GROWTH db WRAP db 0 db 3 ; growth rate ; learnset db %00100100 db %00000011 db %00111000 db %11000000 db %00000011 db %00001000 db %00000110 db 0 ; padding VictreebelBaseStats: ; 0x38b86 db DEX_VICTREEBEL ; pokedex id db 80 ; base hp db 105 ; base attack db 65 ; base defense db 70 ; base speed db 100 ; base special db GRASS ; species type 1 db POISON ; species type 2 db 45 ; catch rate db 191 ; base exp yield db $77 ; sprite dimensions dw VictreebelPicFront dw VictreebelPicBack ; attacks known at lvl 0 db SLEEP_POWDER db STUN_SPORE db ACID db RAZOR_LEAF db 3 ; growth rate ; learnset db %10100100 db %01000011 db %00111000 db %11000000 db %00000011 db %00001000 db %00000110 db 0 ; padding TentacoolBaseStats: ; 0x38ba2 db DEX_TENTACOOL ; pokedex id db 40 ; base hp db 40 ; base attack db 35 ; base defense db 70 ; base speed db 100 ; base special db WATER ; species type 1 db POISON ; species type 2 db 190 ; catch rate db 105 ; base exp yield db $55 ; sprite dimensions dw TentacoolPicFront dw TentacoolPicBack ; attacks known at lvl 0 db ACID db 0 db 0 db 0 db 5 ; growth rate ; learnset db %00100100 db %00111111 db %00011000 db %11000000 db %10000011 db %00001000 db %00010110 db 0 ; padding TentacruelBaseStats: ; 0x38bbe db DEX_TENTACRUEL ; pokedex id db 80 ; base hp db 70 ; base attack db 65 ; base defense db 100 ; base speed db 120 ; base special db WATER ; species type 1 db POISON ; species type 2 db 60 ; catch rate db 205 ; base exp yield db $66 ; sprite dimensions dw TentacruelPicFront dw TentacruelPicBack ; attacks known at lvl 0 db ACID db SUPERSONIC db WRAP db 0 db 5 ; growth rate ; learnset db %00100100 db %01111111 db %00011000 db %11000000 db %10000011 db %00001000 db %00010110 db 0 ; padding GeodudeBaseStats: ; 0x38bda db DEX_GEODUDE ; pokedex id db 40 ; base hp db 80 ; base attack db 100 ; base defense db 20 ; base speed db 30 ; base special db ROCK ; species type 1 db GROUND ; species type 2 db 255 ; catch rate db 86 ; base exp yield db $55 ; sprite dimensions dw GeodudePicFront dw GeodudePicBack ; attacks known at lvl 0 db TACKLE db 0 db 0 db 0 db 3 ; growth rate ; learnset db %10100001 db %00000011 db %00001111 db %11001110 db %00101110 db %11001000 db %00100010 db 0 ; padding GravelerBaseStats: ; 0x38bf6 db DEX_GRAVELER ; pokedex id db 55 ; base hp db 95 ; base attack db 115 ; base defense db 35 ; base speed db 45 ; base special db ROCK ; species type 1 db GROUND ; species type 2 db 120 ; catch rate db 134 ; base exp yield db $66 ; sprite dimensions dw GravelerPicFront dw GravelerPicBack ; attacks known at lvl 0 db TACKLE db DEFENSE_CURL db 0 db 0 db 3 ; growth rate ; learnset db %10100001 db %00000011 db %00001111 db %11001110 db %00101110 db %11001000 db %00100010 db 0 ; padding GolemBaseStats: ; 0x38c12 db DEX_GOLEM ; pokedex id db 80 ; base hp db 110 ; base attack db 130 ; base defense db 45 ; base speed db 55 ; base special db ROCK ; species type 1 db GROUND ; species type 2 db 45 ; catch rate db 177 ; base exp yield db $66 ; sprite dimensions dw GolemPicFront dw GolemPicBack ; attacks known at lvl 0 db TACKLE db DEFENSE_CURL db 0 db 0 db 3 ; growth rate ; learnset db %10110001 db %01000011 db %00001111 db %11001110 db %00101110 db %11001000 db %00100010 db 0 ; padding PonytaBaseStats: ; 0x38c2e db DEX_PONYTA ; pokedex id db 50 ; base hp db 85 ; base attack db 55 ; base defense db 90 ; base speed db 65 ; base special db FIRE ; species type 1 db FIRE ; species type 2 db 190 ; catch rate db 152 ; base exp yield db $66 ; sprite dimensions dw PonytaPicFront dw PonytaPicBack ; attacks known at lvl 0 db EMBER db 0 db 0 db 0 db 0 ; growth rate ; learnset db %11100000 db %00000011 db %00001000 db %11000000 db %11100011 db %00001000 db %00000010 db 0 ; padding RapidashBaseStats: ; 0x38c4a db DEX_RAPIDASH ; pokedex id db 65 ; base hp db 100 ; base attack db 70 ; base defense db 105 ; base speed db 80 ; base special db FIRE ; species type 1 db FIRE ; species type 2 db 60 ; catch rate db 192 ; base exp yield db $77 ; sprite dimensions dw RapidashPicFront dw RapidashPicBack ; attacks known at lvl 0 db EMBER db TAIL_WHIP db STOMP db GROWL db 0 ; growth rate ; learnset db %11100000 db %01000011 db %00001000 db %11000000 db %11100011 db %00001000 db %00000010 db 0 ; padding SlowpokeBaseStats: ; 0x38c66 db DEX_SLOWPOKE ; pokedex id db 90 ; base hp db 65 ; base attack db 65 ; base defense db 15 ; base speed db 40 ; base special db WATER ; species type 1 db PSYCHIC ; species type 2 db 190 ; catch rate db 99 ; base exp yield db $55 ; sprite dimensions dw SlowpokePicFront dw SlowpokePicBack ; attacks known at lvl 0 db CONFUSION db 0 db 0 db 0 db 0 ; growth rate ; learnset db %10100000 db %10111111 db %00001000 db %11111110 db %11100011 db %00111000 db %01110011 db 0 ; padding SlowbroBaseStats: ; 0x38c82 db DEX_SLOWBRO ; pokedex id db 95 ; base hp db 75 ; base attack db 110 ; base defense db 30 ; base speed db 80 ; base special db WATER ; species type 1 db PSYCHIC ; species type 2 db 75 ; catch rate db 164 ; base exp yield db $77 ; sprite dimensions dw SlowbroPicFront dw SlowbroPicBack ; attacks known at lvl 0 db CONFUSION db DISABLE db HEADBUTT db 0 db 0 ; growth rate ; learnset db %10110001 db %11111111 db %00001111 db %11111110 db %11100011 db %00111000 db %01110011 db 0 ; padding MagnemiteBaseStats: ; 0x38c9e db DEX_MAGNEMITE ; pokedex id db 25 ; base hp db 35 ; base attack db 70 ; base defense db 45 ; base speed db 95 ; base special db ELECTRIC ; species type 1 db ELECTRIC ; species type 2 db 190 ; catch rate db 89 ; base exp yield db $55 ; sprite dimensions dw MagnemitePicFront dw MagnemitePicBack ; attacks known at lvl 0 db TACKLE db 0 db 0 db 0 db 0 ; growth rate ; learnset db %00100000 db %00000011 db %10001000 db %11100001 db %01000011 db %00011000 db %01000010 db 0 ; padding MagnetonBaseStats: ; 0x38cba db DEX_MAGNETON ; pokedex id db 50 ; base hp db 60 ; base attack db 95 ; base defense db 70 ; base speed db 120 ; base special db ELECTRIC ; species type 1 db ELECTRIC ; species type 2 db 60 ; catch rate db 161 ; base exp yield db $66 ; sprite dimensions dw MagnetonPicFront dw MagnetonPicBack ; attacks known at lvl 0 db TACKLE db SONICBOOM db THUNDERSHOCK db 0 db 0 ; growth rate ; learnset db %00100000 db %01000011 db %10001000 db %11100001 db %01000011 db %00011000 db %01000010 db 0 ; padding FarfetchdBaseStats: ; 0x38cd6 db DEX_FARFETCH_D ; pokedex id db 52 ; base hp db 65 ; base attack db 55 ; base defense db 60 ; base speed db 58 ; base special db NORMAL ; species type 1 db FLYING ; species type 2 db 45 ; catch rate db 94 ; base exp yield db $66 ; sprite dimensions dw FarfetchdPicFront dw FarfetchdPicBack ; attacks known at lvl 0 db PECK db SAND_ATTACK db 0 db 0 db 0 ; growth rate ; learnset db %10101110 db %00000011 db %00001000 db %11000000 db %11000011 db %00001000 db %00001110 db 0 ; padding DoduoBaseStats: ; 0x38cf2 db DEX_DODUO ; pokedex id db 35 ; base hp db 85 ; base attack db 45 ; base defense db 75 ; base speed db 35 ; base special db NORMAL ; species type 1 db FLYING ; species type 2 db 190 ; catch rate db 96 ; base exp yield db $55 ; sprite dimensions dw DoduoPicFront dw DoduoPicBack ; attacks known at lvl 0 db PECK db 0 db 0 db 0 db 0 ; growth rate ; learnset db %10101000 db %00000011 db %00001000 db %11000000 db %10000011 db %00001100 db %00001011 db 0 ; padding DodrioBaseStats: ; 0x38d0e db DEX_DODRIO ; pokedex id db 60 ; base hp db 110 ; base attack db 70 ; base defense db 100 ; base speed db 60 ; base special db NORMAL ; species type 1 db FLYING ; species type 2 db 45 ; catch rate db 158 ; base exp yield db $77 ; sprite dimensions dw DodrioPicFront dw DodrioPicBack ; attacks known at lvl 0 db PECK db GROWL db FURY_ATTACK db 0 db 0 ; growth rate ; learnset db %10101000 db %01000011 db %00001000 db %11000000 db %10000011 db %00001100 db %00001011 db 0 ; padding SeelBaseStats: ; 0x38d2a db DEX_SEEL ; pokedex id db 65 ; base hp db 45 ; base attack db 55 ; base defense db 45 ; base speed db 70 ; base special db WATER ; species type 1 db WATER ; species type 2 db 190 ; catch rate db 100 ; base exp yield db $66 ; sprite dimensions dw SeelPicFront dw SeelPicBack ; attacks known at lvl 0 db HEADBUTT db 0 db 0 db 0 db 0 ; growth rate ; learnset db %11100000 db %10111111 db %00001000 db %11000000 db %10000010 db %00001000 db %00110010 db 0 ; padding DewgongBaseStats: ; 0x38d46 db DEX_DEWGONG ; pokedex id db 90 ; base hp db 70 ; base attack db 80 ; base defense db 70 ; base speed db 95 ; base special db WATER ; species type 1 db ICE ; species type 2 db 75 ; catch rate db 176 ; base exp yield db $66 ; sprite dimensions dw DewgongPicFront dw DewgongPicBack ; attacks known at lvl 0 db HEADBUTT db GROWL db AURORA_BEAM db 0 db 0 ; growth rate ; learnset db %11100000 db %11111111 db %00001000 db %11000000 db %10000010 db %00001000 db %00110010 db 0 ; padding GrimerBaseStats: ; 0x38d62 db DEX_GRIMER ; pokedex id db 80 ; base hp db 80 ; base attack db 50 ; base defense db 25 ; base speed db 40 ; base special db POISON ; species type 1 db POISON ; species type 2 db 190 ; catch rate db 90 ; base exp yield db $55 ; sprite dimensions dw GrimerPicFront dw GrimerPicBack ; attacks known at lvl 0 db POUND db DISABLE db 0 db 0 db 0 ; growth rate ; learnset db %10100000 db %00000000 db %10011000 db %11000001 db %00101010 db %01001000 db %00000010 db 0 ; padding MukBaseStats: ; 0x38d7e db DEX_MUK ; pokedex id db 105 ; base hp db 105 ; base attack db 75 ; base defense db 50 ; base speed db 65 ; base special db POISON ; species type 1 db POISON ; species type 2 db 75 ; catch rate db 157 ; base exp yield db $77 ; sprite dimensions dw MukPicFront dw MukPicBack ; attacks known at lvl 0 db POUND db DISABLE db POISON_GAS db 0 db 0 ; growth rate ; learnset db %10100000 db %01000000 db %10011000 db %11000001 db %00101010 db %01001000 db %00000010 db 0 ; padding ShellderBaseStats: ; 0x38d9a db DEX_SHELLDER ; pokedex id db 30 ; base hp db 65 ; base attack db 100 ; base defense db 40 ; base speed db 45 ; base special db WATER ; species type 1 db WATER ; species type 2 db 190 ; catch rate db 97 ; base exp yield db $55 ; sprite dimensions dw ShellderPicFront dw ShellderPicBack ; attacks known at lvl 0 db TACKLE db WITHDRAW db 0 db 0 db 5 ; growth rate ; learnset db %00100000 db %00111111 db %00001000 db %11100000 db %01001011 db %01001000 db %00010011 db 0 ; padding CloysterBaseStats: ; 0x38db6 db DEX_CLOYSTER ; pokedex id db 50 ; base hp db 95 ; base attack db 180 ; base defense db 70 ; base speed db 85 ; base special db WATER ; species type 1 db ICE ; species type 2 db 60 ; catch rate db 203 ; base exp yield db $77 ; sprite dimensions dw CloysterPicFront dw CloysterPicBack ; attacks known at lvl 0 db WITHDRAW db SUPERSONIC db CLAMP db AURORA_BEAM db 5 ; growth rate ; learnset db %00100000 db %01111111 db %00001000 db %11100000 db %01001011 db %01001000 db %00010011 db 0 ; padding GastlyBaseStats: ; 0x38dd2 db DEX_GASTLY ; pokedex id db 30 ; base hp db 35 ; base attack db 30 ; base defense db 80 ; base speed db 100 ; base special db GHOST ; species type 1 db POISON ; species type 2 db 190 ; catch rate db 95 ; base exp yield db $77 ; sprite dimensions dw GastlyPicFront dw GastlyPicBack ; attacks known at lvl 0 db LICK db CONFUSE_RAY db NIGHT_SHADE db 0 db 3 ; growth rate ; learnset db %00100000 db %00000000 db %10011000 db %11010001 db %00001010 db %01101010 db %00000010 db 0 ; padding HaunterBaseStats: ; 0x38dee db DEX_HAUNTER ; pokedex id db 45 ; base hp db 50 ; base attack db 45 ; base defense db 95 ; base speed db 115 ; base special db GHOST ; species type 1 db POISON ; species type 2 db 90 ; catch rate db 126 ; base exp yield db $66 ; sprite dimensions dw HaunterPicFront dw HaunterPicBack ; attacks known at lvl 0 db LICK db CONFUSE_RAY db NIGHT_SHADE db 0 db 3 ; growth rate ; learnset db %00100000 db %00000000 db %10011000 db %11010001 db %00001010 db %01101010 db %00000010 db 0 ; padding GengarBaseStats: ; 0x38e0a db DEX_GENGAR ; pokedex id db 60 ; base hp db 65 ; base attack db 60 ; base defense db 110 ; base speed db 130 ; base special db GHOST ; species type 1 db POISON ; species type 2 db 45 ; catch rate db 190 ; base exp yield db $66 ; sprite dimensions dw GengarPicFront dw GengarPicBack ; attacks known at lvl 0 db LICK db CONFUSE_RAY db NIGHT_SHADE db 0 db 3 ; growth rate ; learnset db %10110001 db %01000011 db %10011111 db %11010001 db %10001110 db %01101010 db %00100010 db 0 ; padding OnixBaseStats: ; 0x38e26 db DEX_ONIX ; pokedex id db 35 ; base hp db 45 ; base attack db 160 ; base defense db 70 ; base speed db 30 ; base special db ROCK ; species type 1 db GROUND ; species type 2 db 45 ; catch rate db 108 ; base exp yield db $77 ; sprite dimensions dw OnixPicFront dw OnixPicBack ; attacks known at lvl 0 db TACKLE db SCREECH db 0 db 0 db 0 ; growth rate ; learnset db %10100000 db %00000011 db %00001000 db %11001110 db %10001010 db %11001000 db %00100010 db 0 ; padding DrowzeeBaseStats: ; 0x38e42 db DEX_DROWZEE ; pokedex id db 60 ; base hp db 48 ; base attack db 45 ; base defense db 42 ; base speed db 90 ; base special db PSYCHIC ; species type 1 db PSYCHIC ; species type 2 db 190 ; catch rate db 102 ; base exp yield db $66 ; sprite dimensions dw DrowzeePicFront dw DrowzeePicBack ; attacks known at lvl 0 db POUND db HYPNOSIS db 0 db 0 db 0 ; growth rate ; learnset db %10110001 db %00000011 db %00001111 db %11110000 db %10000111 db %00111010 db %01000011 db 0 ; padding HypnoBaseStats: ; 0x38e5e db DEX_HYPNO ; pokedex id db 85 ; base hp db 73 ; base attack db 70 ; base defense db 67 ; base speed db 115 ; base special db PSYCHIC ; species type 1 db PSYCHIC ; species type 2 db 75 ; catch rate db 165 ; base exp yield db $77 ; sprite dimensions dw HypnoPicFront dw HypnoPicBack ; attacks known at lvl 0 db POUND db HYPNOSIS db DISABLE db CONFUSION db 0 ; growth rate ; learnset db %10110001 db %01000011 db %00001111 db %11110000 db %10000111 db %00111010 db %01000011 db 0 ; padding KrabbyBaseStats: ; 0x38e7a db DEX_KRABBY ; pokedex id db 30 ; base hp db 105 ; base attack db 90 ; base defense db 50 ; base speed db 25 ; base special db WATER ; species type 1 db WATER ; species type 2 db 225 ; catch rate db 115 ; base exp yield db $55 ; sprite dimensions dw KrabbyPicFront dw KrabbyPicBack ; attacks known at lvl 0 db BUBBLE db LEER db 0 db 0 db 0 ; growth rate ; learnset db %10100100 db %00111111 db %00001000 db %11000000 db %00000010 db %00001000 db %00110110 db 0 ; padding KinglerBaseStats: ; 0x38e96 db DEX_KINGLER ; pokedex id db 55 ; base hp db 130 ; base attack db 115 ; base defense db 75 ; base speed db 50 ; base special db WATER ; species type 1 db WATER ; species type 2 db 60 ; catch rate db 206 ; base exp yield db $77 ; sprite dimensions dw KinglerPicFront dw KinglerPicBack ; attacks known at lvl 0 db BUBBLE db LEER db VICEGRIP db 0 db 0 ; growth rate ; learnset db %10100100 db %01111111 db %00001000 db %11000000 db %00000010 db %00001000 db %00110110 db 0 ; padding VoltorbBaseStats: ; 0x38eb2 db DEX_VOLTORB ; pokedex id db 40 ; base hp db 30 ; base attack db 50 ; base defense db 100 ; base speed db 55 ; base special db ELECTRIC ; species type 1 db ELECTRIC ; species type 2 db 190 ; catch rate db 103 ; base exp yield db $55 ; sprite dimensions dw VoltorbPicFront dw VoltorbPicBack ; attacks known at lvl 0 db TACKLE db SCREECH db 0 db 0 db 0 ; growth rate ; learnset db %00100000 db %00000001 db %10001000 db %11100001 db %01001011 db %01011000 db %01000010 db 0 ; padding ElectrodeBaseStats: ; 0x38ece db DEX_ELECTRODE ; pokedex id db 60 ; base hp db 50 ; base attack db 70 ; base defense db 140 ; base speed db 80 ; base special db ELECTRIC ; species type 1 db ELECTRIC ; species type 2 db 60 ; catch rate db 150 ; base exp yield db $55 ; sprite dimensions dw ElectrodePicFront dw ElectrodePicBack ; attacks known at lvl 0 db TACKLE db SCREECH db SONICBOOM db 0 db 0 ; growth rate ; learnset db %00100000 db %01000001 db %10001000 db %11100001 db %11001011 db %01011000 db %01000010 db 0 ; padding ExeggcuteBaseStats: ; 0x38eea db DEX_EXEGGCUTE ; pokedex id db 60 ; base hp db 40 ; base attack db 80 ; base defense db 40 ; base speed db 60 ; base special db GRASS ; species type 1 db PSYCHIC ; species type 2 db 90 ; catch rate db 98 ; base exp yield db $77 ; sprite dimensions dw ExeggcutePicFront dw ExeggcutePicBack ; attacks known at lvl 0 db BARRAGE db HYPNOSIS db 0 db 0 db 5 ; growth rate ; learnset db %00100000 db %00000011 db %00001000 db %11110000 db %00011011 db %01101000 db %00000010 db 0 ; padding ExeggutorBaseStats: ; 0x38f06 db DEX_EXEGGUTOR ; pokedex id db 95 ; base hp db 95 ; base attack db 85 ; base defense db 55 ; base speed db 125 ; base special db GRASS ; species type 1 db PSYCHIC ; species type 2 db 45 ; catch rate db 212 ; base exp yield db $77 ; sprite dimensions dw ExeggutorPicFront dw ExeggutorPicBack ; attacks known at lvl 0 db BARRAGE db HYPNOSIS db 0 db 0 db 5 ; growth rate ; learnset db %00100000 db %01000011 db %00111000 db %11110000 db %00011011 db %01101000 db %00100010 db 0 ; padding CuboneBaseStats: ; 0x38f22 db DEX_CUBONE ; pokedex id db 50 ; base hp db 50 ; base attack db 95 ; base defense db 35 ; base speed db 40 ; base special db GROUND ; species type 1 db GROUND ; species type 2 db 190 ; catch rate db 87 ; base exp yield db $55 ; sprite dimensions dw CubonePicFront dw CubonePicBack ; attacks known at lvl 0 db BONE_CLUB db GROWL db 0 db 0 db 0 ; growth rate ; learnset db %10110001 db %00111111 db %00001111 db %11001110 db %10100010 db %00001000 db %00100010 db 0 ; padding MarowakBaseStats: ; 0x38f3e db DEX_MAROWAK ; pokedex id db 60 ; base hp db 80 ; base attack db 110 ; base defense db 45 ; base speed db 50 ; base special db GROUND ; species type 1 db GROUND ; species type 2 db 75 ; catch rate db 124 ; base exp yield db $66 ; sprite dimensions dw MarowakPicFront dw MarowakPicBack ; attacks known at lvl 0 db BONE_CLUB db GROWL db LEER db FOCUS_ENERGY db 0 ; growth rate ; learnset db %10110001 db %01111111 db %00001111 db %11001110 db %10100010 db %00001000 db %00100010 db 0 ; padding HitmonleeBaseStats: ; 0x38f5a db DEX_HITMONLEE ; pokedex id db 50 ; base hp db 120 ; base attack db 53 ; base defense db 87 ; base speed db 35 ; base special db FIGHTING ; species type 1 db FIGHTING ; species type 2 db 45 ; catch rate db 139 ; base exp yield db $77 ; sprite dimensions dw HitmonleePicFront dw HitmonleePicBack ; attacks known at lvl 0 db DOUBLE_KICK db MEDITATE db 0 db 0 db 0 ; growth rate ; learnset db %10110001 db %00000011 db %00001111 db %11000000 db %11000110 db %00001000 db %00100010 db 0 ; padding HitmonchanBaseStats: ; 0x38f76 db DEX_HITMONCHAN ; pokedex id db 50 ; base hp db 105 ; base attack db 79 ; base defense db 76 ; base speed db 35 ; base special db FIGHTING ; species type 1 db FIGHTING ; species type 2 db 45 ; catch rate db 140 ; base exp yield db $66 ; sprite dimensions dw HitmonchanPicFront dw HitmonchanPicBack ; attacks known at lvl 0 db COMET_PUNCH db AGILITY db 0 db 0 db 0 ; growth rate ; learnset db %10110001 db %00000011 db %00001111 db %11000000 db %11000110 db %00001000 db %00100010 db 0 ; padding LickitungBaseStats: ; 0x38f92 db DEX_LICKITUNG ; pokedex id db 90 ; base hp db 55 ; base attack db 75 ; base defense db 30 ; base speed db 60 ; base special db NORMAL ; species type 1 db NORMAL ; species type 2 db 45 ; catch rate db 127 ; base exp yield db $77 ; sprite dimensions dw LickitungPicFront dw LickitungPicBack ; attacks known at lvl 0 db WRAP db SUPERSONIC db 0 db 0 db 0 ; growth rate ; learnset db %10110101 db %01111111 db %10001111 db %11000111 db %10100010 db %00001000 db %00110110 db 0 ; padding KoffingBaseStats: ; 0x38fae db DEX_KOFFING ; pokedex id db 40 ; base hp db 65 ; base attack db 95 ; base defense db 35 ; base speed db 60 ; base special db POISON ; species type 1 db POISON ; species type 2 db 190 ; catch rate db 114 ; base exp yield db $66 ; sprite dimensions dw KoffingPicFront dw KoffingPicBack ; attacks known at lvl 0 db TACKLE db SMOG db 0 db 0 db 0 ; growth rate ; learnset db %00100000 db %00000000 db %10001000 db %11000001 db %00101010 db %01001000 db %00000010 db 0 ; padding WeezingBaseStats: ; 0x38fca db DEX_WEEZING ; pokedex id db 65 ; base hp db 90 ; base attack db 120 ; base defense db 60 ; base speed db 85 ; base special db POISON ; species type 1 db POISON ; species type 2 db 60 ; catch rate db 173 ; base exp yield db $77 ; sprite dimensions dw WeezingPicFront dw WeezingPicBack ; attacks known at lvl 0 db TACKLE db SMOG db SLUDGE db 0 db 0 ; growth rate ; learnset db %00100000 db %01000000 db %10001000 db %11000001 db %00101010 db %01001000 db %00000010 db 0 ; padding RhyhornBaseStats: ; 0x38fe6 db DEX_RHYHORN ; pokedex id db 80 ; base hp db 85 ; base attack db 95 ; base defense db 25 ; base speed db 30 ; base special db GROUND ; species type 1 db ROCK ; species type 2 db 120 ; catch rate db 135 ; base exp yield db $77 ; sprite dimensions dw RhyhornPicFront dw RhyhornPicBack ; attacks known at lvl 0 db HORN_ATTACK db 0 db 0 db 0 db 5 ; growth rate ; learnset db %11100000 db %00000011 db %10001000 db %11001111 db %10100010 db %10001000 db %00100010 db 0 ; padding RhydonBaseStats: ; 0x39002 db DEX_RHYDON ; pokedex id db 105 ; base hp db 130 ; base attack db 120 ; base defense db 40 ; base speed db 45 ; base special db GROUND ; species type 1 db ROCK ; species type 2 db 60 ; catch rate db 204 ; base exp yield db $77 ; sprite dimensions dw RhydonPicFront dw RhydonPicBack ; attacks known at lvl 0 db HORN_ATTACK db STOMP db TAIL_WHIP db FURY_ATTACK db 5 ; growth rate ; learnset db %11110001 db %11111111 db %10001111 db %11001111 db %10100010 db %10001000 db %00110010 db 0 ; padding ChanseyBaseStats: ; 0x3901e db DEX_CHANSEY ; pokedex id db 250 ; base hp db 5 ; base attack db 5 ; base defense db 50 ; base speed db 105 ; base special db NORMAL ; species type 1 db NORMAL ; species type 2 db 30 ; catch rate db 255 ; base exp yield db $66 ; sprite dimensions dw ChanseyPicFront dw ChanseyPicBack ; attacks known at lvl 0 db POUND db DOUBLESLAP db 0 db 0 db 4 ; growth rate ; learnset db %10110001 db %01111111 db %10101111 db %11110001 db %10110111 db %00111001 db %01100011 db 0 ; padding TangelaBaseStats: ; 0x3903a db DEX_TANGELA ; pokedex id db 65 ; base hp db 55 ; base attack db 115 ; base defense db 60 ; base speed db 100 ; base special db GRASS ; species type 1 db GRASS ; species type 2 db 45 ; catch rate db 166 ; base exp yield db $66 ; sprite dimensions dw TangelaPicFront dw TangelaPicBack ; attacks known at lvl 0 db CONSTRICT db BIND db 0 db 0 db 0 ; growth rate ; learnset db %10100100 db %01000011 db %00111000 db %11000000 db %10000010 db %00001000 db %00000110 db 0 ; padding KangaskhanBaseStats: ; 0x39056 db DEX_KANGASKHAN ; pokedex id db 105 ; base hp db 95 ; base attack db 80 ; base defense db 90 ; base speed db 40 ; base special db NORMAL ; species type 1 db NORMAL ; species type 2 db 45 ; catch rate db 175 ; base exp yield db $77 ; sprite dimensions dw KangaskhanPicFront dw KangaskhanPicBack ; attacks known at lvl 0 db COMET_PUNCH db RAGE db 0 db 0 db 0 ; growth rate ; learnset db %10110001 db %01111111 db %10001111 db %11000111 db %10100010 db %10001000 db %00110010 db 0 ; padding HorseaBaseStats: ; 0x39072 db DEX_HORSEA ; pokedex id db 30 ; base hp db 40 ; base attack db 70 ; base defense db 60 ; base speed db 70 ; base special db WATER ; species type 1 db WATER ; species type 2 db 225 ; catch rate db 83 ; base exp yield db $55 ; sprite dimensions dw HorseaPicFront dw HorseaPicBack ; attacks known at lvl 0 db BUBBLE db 0 db 0 db 0 db 0 ; growth rate ; learnset db %00100000 db %00111111 db %00001000 db %11000000 db %11000010 db %00001000 db %00010010 db 0 ; padding SeadraBaseStats: ; 0x3908e db DEX_SEADRA ; pokedex id db 55 ; base hp db 65 ; base attack db 95 ; base defense db 85 ; base speed db 95 ; base special db WATER ; species type 1 db WATER ; species type 2 db 75 ; catch rate db 155 ; base exp yield db $66 ; sprite dimensions dw SeadraPicFront dw SeadraPicBack ; attacks known at lvl 0 db BUBBLE db SMOKESCREEN db 0 db 0 db 0 ; growth rate ; learnset db %00100000 db %01111111 db %00001000 db %11000000 db %11000010 db %00001000 db %00010010 db 0 ; padding GoldeenBaseStats: ; 0x390aa db DEX_GOLDEEN ; pokedex id db 45 ; base hp db 67 ; base attack db 60 ; base defense db 63 ; base speed db 50 ; base special db WATER ; species type 1 db WATER ; species type 2 db 225 ; catch rate db 111 ; base exp yield db $66 ; sprite dimensions dw GoldeenPicFront dw GoldeenPicBack ; attacks known at lvl 0 db PECK db TAIL_WHIP db 0 db 0 db 0 ; growth rate ; learnset db %01100000 db %00111111 db %00001000 db %11000000 db %11000010 db %00001000 db %00010010 db 0 ; padding SeakingBaseStats: ; 0x390c6 db DEX_SEAKING ; pokedex id db 80 ; base hp db 92 ; base attack db 65 ; base defense db 68 ; base speed db 80 ; base special db WATER ; species type 1 db WATER ; species type 2 db 60 ; catch rate db 170 ; base exp yield db $77 ; sprite dimensions dw SeakingPicFront dw SeakingPicBack ; attacks known at lvl 0 db PECK db TAIL_WHIP db SUPERSONIC db 0 db 0 ; growth rate ; learnset db %01100000 db %01111111 db %00001000 db %11000000 db %11000010 db %00001000 db %00010010 db 0 ; padding StaryuBaseStats: ; 0x390e2 db DEX_STARYU ; pokedex id db 30 ; base hp db 45 ; base attack db 55 ; base defense db 85 ; base speed db 70 ; base special db WATER ; species type 1 db WATER ; species type 2 db 225 ; catch rate db 106 ; base exp yield db $66 ; sprite dimensions dw StaryuPicFront dw StaryuPicBack ; attacks known at lvl 0 db TACKLE db 0 db 0 db 0 db 5 ; growth rate ; learnset db %00100000 db %00111111 db %10001000 db %11110001 db %11000011 db %00111000 db %01010011 db 0 ; padding StarmieBaseStats: ; 0x390fe db DEX_STARMIE ; pokedex id db 60 ; base hp db 75 ; base attack db 85 ; base defense db 115 ; base speed db 100 ; base special db WATER ; species type 1 db PSYCHIC ; species type 2 db 60 ; catch rate db 207 ; base exp yield db $66 ; sprite dimensions dw StarmiePicFront dw StarmiePicBack ; attacks known at lvl 0 db TACKLE db WATER_GUN db HARDEN db 0 db 5 ; growth rate ; learnset db %00100000 db %01111111 db %10001000 db %11110001 db %11000011 db %00111000 db %01010011 db 0 ; padding MrMimeBaseStats: ; 0x3911a db DEX_MR_MIME ; pokedex id db 40 ; base hp db 45 ; base attack db 65 ; base defense db 90 ; base speed db 100 ; base special db PSYCHIC ; species type 1 db PSYCHIC ; species type 2 db 45 ; catch rate db 136 ; base exp yield db $66 ; sprite dimensions dw MrMimePicFront dw MrMimePicBack ; attacks known at lvl 0 db CONFUSION db BARRIER db 0 db 0 db 0 ; growth rate ; learnset db %10110001 db %01000011 db %10101111 db %11110001 db %10000111 db %00111000 db %01000010 db 0 ; padding ScytherBaseStats: ; 0x39136 db DEX_SCYTHER ; pokedex id db 70 ; base hp db 110 ; base attack db 80 ; base defense db 105 ; base speed db 55 ; base special db BUG ; species type 1 db FLYING ; species type 2 db 45 ; catch rate db 187 ; base exp yield db $77 ; sprite dimensions dw ScytherPicFront dw ScytherPicBack ; attacks known at lvl 0 db QUICK_ATTACK db 0 db 0 db 0 db 0 ; growth rate ; learnset db %00100100 db %01000011 db %00001000 db %11000000 db %11000010 db %00001000 db %00000110 db 0 ; padding JynxBaseStats: ; 0x39152 db DEX_JYNX ; pokedex id db 65 ; base hp db 50 ; base attack db 35 ; base defense db 95 ; base speed db 95 ; base special db ICE ; species type 1 db PSYCHIC ; species type 2 db 45 ; catch rate db 137 ; base exp yield db $66 ; sprite dimensions dw JynxPicFront dw JynxPicBack ; attacks known at lvl 0 db POUND db LOVELY_KISS db 0 db 0 db 0 ; growth rate ; learnset db %10110001 db %01111111 db %00001111 db %11110000 db %10000111 db %00101000 db %00000010 db 0 ; padding ElectabuzzBaseStats: ; 0x3916e db DEX_ELECTABUZZ ; pokedex id db 65 ; base hp db 83 ; base attack db 57 ; base defense db 105 ; base speed db 85 ; base special db ELECTRIC ; species type 1 db ELECTRIC ; species type 2 db 45 ; catch rate db 156 ; base exp yield db $66 ; sprite dimensions dw ElectabuzzPicFront dw ElectabuzzPicBack ; attacks known at lvl 0 db QUICK_ATTACK db LEER db 0 db 0 db 0 ; growth rate ; learnset db %10110001 db %01000011 db %10001111 db %11110001 db %11000111 db %00111000 db %01100010 db 0 ; padding MagmarBaseStats: ; 0x3918a db DEX_MAGMAR ; pokedex id db 65 ; base hp db 95 ; base attack db 57 ; base defense db 93 ; base speed db 85 ; base special db FIRE ; species type 1 db FIRE ; species type 2 db 45 ; catch rate db 167 ; base exp yield db $66 ; sprite dimensions dw MagmarPicFront dw MagmarPicBack ; attacks known at lvl 0 db EMBER db 0 db 0 db 0 db 0 ; growth rate ; learnset db %10110001 db %01000011 db %00001111 db %11110000 db %10100110 db %00101000 db %00100010 db 0 ; padding PinsirBaseStats: ; 0x391a6 db DEX_PINSIR ; pokedex id db 65 ; base hp db 125 ; base attack db 100 ; base defense db 85 ; base speed db 55 ; base special db BUG ; species type 1 db BUG ; species type 2 db 45 ; catch rate db 200 ; base exp yield db $77 ; sprite dimensions dw PinsirPicFront dw PinsirPicBack ; attacks known at lvl 0 db VICEGRIP db 0 db 0 db 0 db 5 ; growth rate ; learnset db %10100100 db %01000011 db %00001101 db %11000000 db %00000010 db %00001000 db %00100110 db 0 ; padding TaurosBaseStats: ; 0x391c2 db DEX_TAUROS ; pokedex id db 75 ; base hp db 100 ; base attack db 95 ; base defense db 110 ; base speed db 70 ; base special db NORMAL ; species type 1 db NORMAL ; species type 2 db 45 ; catch rate db 211 ; base exp yield db $77 ; sprite dimensions dw TaurosPicFront dw TaurosPicBack ; attacks known at lvl 0 db TACKLE db 0 db 0 db 0 db 5 ; growth rate ; learnset db %11100000 db %01110011 db %10001000 db %11000111 db %10100010 db %00001000 db %00100010 db 0 ; padding MagikarpBaseStats: ; 0x391de db DEX_MAGIKARP ; pokedex id db 20 ; base hp db 10 ; base attack db 55 ; base defense db 80 ; base speed db 20 ; base special db WATER ; species type 1 db WATER ; species type 2 db 255 ; catch rate db 20 ; base exp yield db $66 ; sprite dimensions dw MagikarpPicFront dw MagikarpPicBack ; attacks known at lvl 0 db SPLASH db 0 db 0 db 0 db 5 ; growth rate ; learnset db %00000000 db %00000000 db %00000000 db %00000000 db %00000000 db %00000000 db %00000000 db 0 ; padding GyaradosBaseStats: ; 0x391fa db DEX_GYARADOS ; pokedex id db 95 ; base hp db 125 ; base attack db 79 ; base defense db 81 ; base speed db 100 ; base special db WATER ; species type 1 db FLYING ; species type 2 db 45 ; catch rate db 214 ; base exp yield db $77 ; sprite dimensions dw GyaradosPicFront dw GyaradosPicBack ; attacks known at lvl 0 db BITE db DRAGON_RAGE db LEER db HYDRO_PUMP db 5 ; growth rate ; learnset db %10100000 db %01111111 db %11001000 db %11000001 db %10100011 db %00001000 db %00110010 db 0 ; padding LaprasBaseStats: ; 0x39216 db DEX_LAPRAS ; pokedex id db 130 ; base hp db 85 ; base attack db 80 ; base defense db 60 ; base speed db 95 ; base special db WATER ; species type 1 db ICE ; species type 2 db 45 ; catch rate db 219 ; base exp yield db $77 ; sprite dimensions dw LaprasPicFront dw LaprasPicBack ; attacks known at lvl 0 db WATER_GUN db GROWL db 0 db 0 db 5 ; growth rate ; learnset db %11100000 db %01111111 db %11101000 db %11010001 db %10000011 db %00101000 db %00110010 db 0 ; padding DittoBaseStats: ; 0x39232 db DEX_DITTO ; pokedex id db 48 ; base hp db 48 ; base attack db 48 ; base defense db 48 ; base speed db 48 ; base special db NORMAL ; species type 1 db NORMAL ; species type 2 db 35 ; catch rate db 61 ; base exp yield db $55 ; sprite dimensions dw DittoPicFront dw DittoPicBack ; attacks known at lvl 0 db TRANSFORM db 0 db 0 db 0 db 0 ; growth rate ; learnset db %00000000 db %00000000 db %00000000 db %00000000 db %00000000 db %00000000 db %00000000 db 0 ; padding EeveeBaseStats: ; 0x3924e db DEX_EEVEE ; pokedex id db 55 ; base hp db 55 ; base attack db 50 ; base defense db 55 ; base speed db 65 ; base special db NORMAL ; species type 1 db NORMAL ; species type 2 db 45 ; catch rate db 92 ; base exp yield db $55 ; sprite dimensions dw EeveePicFront dw EeveePicBack ; attacks known at lvl 0 db TACKLE db SAND_ATTACK db 0 db 0 db 0 ; growth rate ; learnset db %10100000 db %00000011 db %00001000 db %11000000 db %11000011 db %00001000 db %00000010 db 0 ; padding VaporeonBaseStats: ; 0x3926a db DEX_VAPOREON ; pokedex id db 130 ; base hp db 65 ; base attack db 60 ; base defense db 65 ; base speed db 110 ; base special db WATER ; species type 1 db WATER ; species type 2 db 45 ; catch rate db 196 ; base exp yield db $66 ; sprite dimensions dw VaporeonPicFront dw VaporeonPicBack ; attacks known at lvl 0 db TACKLE db SAND_ATTACK db QUICK_ATTACK db WATER_GUN db 0 ; growth rate ; learnset db %10100000 db %01111111 db %00001000 db %11000000 db %11000011 db %00001000 db %00010010 db 0 ; padding JolteonBaseStats: ; 0x39286 db DEX_JOLTEON ; pokedex id db 65 ; base hp db 65 ; base attack db 60 ; base defense db 130 ; base speed db 110 ; base special db ELECTRIC ; species type 1 db ELECTRIC ; species type 2 db 45 ; catch rate db 197 ; base exp yield db $66 ; sprite dimensions dw JolteonPicFront dw JolteonPicBack ; attacks known at lvl 0 db TACKLE db SAND_ATTACK db QUICK_ATTACK db THUNDERSHOCK db 0 ; growth rate ; learnset db %10100000 db %01000011 db %10001000 db %11000001 db %11000011 db %00011000 db %01000010 db 0 ; padding FlareonBaseStats: ; 0x392a2 db DEX_FLAREON ; pokedex id db 65 ; base hp db 130 ; base attack db 60 ; base defense db 65 ; base speed db 110 ; base special db FIRE ; species type 1 db FIRE ; species type 2 db 45 ; catch rate db 198 ; base exp yield db $66 ; sprite dimensions dw FlareonPicFront dw FlareonPicBack ; attacks known at lvl 0 db TACKLE db SAND_ATTACK db QUICK_ATTACK db EMBER db 0 ; growth rate ; learnset db %10100000 db %01000011 db %00001000 db %11000000 db %11100011 db %00001000 db %00000010 db 0 ; padding PorygonBaseStats: ; 0x392be db DEX_PORYGON ; pokedex id db 65 ; base hp db 60 ; base attack db 70 ; base defense db 40 ; base speed db 75 ; base special db NORMAL ; species type 1 db NORMAL ; species type 2 db 45 ; catch rate db 130 ; base exp yield db $66 ; sprite dimensions dw PorygonPicFront dw PorygonPicBack ; attacks known at lvl 0 db TACKLE db SHARPEN db CONVERSION db 0 db 0 ; growth rate ; learnset db %00100000 db %01110011 db %10001000 db %11110001 db %11000011 db %00111000 db %01000011 db 0 ; padding OmanyteBaseStats: ; 0x392da db DEX_OMANYTE ; pokedex id db 35 ; base hp db 40 ; base attack db 100 ; base defense db 35 ; base speed db 90 ; base special db ROCK ; species type 1 db WATER ; species type 2 db 45 ; catch rate db 120 ; base exp yield db $55 ; sprite dimensions dw OmanytePicFront dw OmanytePicBack ; attacks known at lvl 0 db WATER_GUN db WITHDRAW db 0 db 0 db 0 ; growth rate ; learnset db %10100000 db %00111111 db %00001000 db %11000000 db %00000011 db %00001000 db %00010010 db 0 ; padding OmastarBaseStats: ; 0x392f6 db DEX_OMASTAR ; pokedex id db 70 ; base hp db 60 ; base attack db 125 ; base defense db 55 ; base speed db 115 ; base special db ROCK ; species type 1 db WATER ; species type 2 db 45 ; catch rate db 199 ; base exp yield db $66 ; sprite dimensions dw OmastarPicFront dw OmastarPicBack ; attacks known at lvl 0 db WATER_GUN db WITHDRAW db HORN_ATTACK db 0 db 0 ; growth rate ; learnset db %11100000 db %01111111 db %00001101 db %11000000 db %10000011 db %00001000 db %00010010 db 0 ; padding KabutoBaseStats: ; 0x39312 db DEX_KABUTO ; pokedex id db 30 ; base hp db 80 ; base attack db 90 ; base defense db 55 ; base speed db 45 ; base special db ROCK ; species type 1 db WATER ; species type 2 db 45 ; catch rate db 119 ; base exp yield db $55 ; sprite dimensions dw KabutoPicFront dw KabutoPicBack ; attacks known at lvl 0 db SCRATCH db HARDEN db 0 db 0 db 0 ; growth rate ; learnset db %10100000 db %00111111 db %00001000 db %11000000 db %00000011 db %00001000 db %00010010 db 0 ; padding KabutopsBaseStats: ; 0x3932e db DEX_KABUTOPS ; pokedex id db 60 ; base hp db 115 ; base attack db 105 ; base defense db 80 ; base speed db 70 ; base special db ROCK ; species type 1 db WATER ; species type 2 db 45 ; catch rate db 201 ; base exp yield db $66 ; sprite dimensions dw KabutopsPicFront dw KabutopsPicBack ; attacks known at lvl 0 db SCRATCH db HARDEN db ABSORB db 0 db 0 ; growth rate ; learnset db %10110110 db %01111111 db %00001101 db %11000000 db %10000011 db %00001000 db %00010010 db 0 ; padding AerodactylBaseStats: ; 0x3934a db DEX_AERODACTYL ; pokedex id db 80 ; base hp db 105 ; base attack db 65 ; base defense db 130 ; base speed db 60 ; base special db ROCK ; species type 1 db FLYING ; species type 2 db 45 ; catch rate db 202 ; base exp yield db $77 ; sprite dimensions dw AerodactylPicFront dw AerodactylPicBack ; attacks known at lvl 0 db WING_ATTACK db AGILITY db 0 db 0 db 5 ; growth rate ; learnset db %00101010 db %01000011 db %01001000 db %11000000 db %01100011 db %00001100 db %00001010 db 0 ; padding SnorlaxBaseStats: ; 0x39366 db DEX_SNORLAX ; pokedex id db 160 ; base hp db 110 ; base attack db 65 ; base defense db 30 ; base speed db 65 ; base special db NORMAL ; species type 1 db NORMAL ; species type 2 db 25 ; catch rate db 154 ; base exp yield db $77 ; sprite dimensions dw SnorlaxPicFront dw SnorlaxPicBack ; attacks known at lvl 0 db HEADBUTT db AMNESIA db REST db 0 db 5 ; growth rate ; learnset db %10110001 db %11111111 db %10101111 db %11010111 db %10101111 db %10101000 db %00110010 db 0 ; padding ArticunoBaseStats: ; 0x39382 db DEX_ARTICUNO ; pokedex id db 90 ; base hp db 85 ; base attack db 100 ; base defense db 85 ; base speed db 125 ; base special db ICE ; species type 1 db FLYING ; species type 2 db 3 ; catch rate db 215 ; base exp yield db $77 ; sprite dimensions dw ArticunoPicFront dw ArticunoPicBack ; attacks known at lvl 0 db PECK db ICE_BEAM db 0 db 0 db 5 ; growth rate ; learnset db %00101010 db %01111111 db %00001000 db %11000000 db %01000011 db %00001100 db %00001010 db 0 ; padding ZapdosBaseStats: ; 0x3939e db DEX_ZAPDOS ; pokedex id db 90 ; base hp db 90 ; base attack db 85 ; base defense db 100 ; base speed db 125 ; base special db ELECTRIC ; species type 1 db FLYING ; species type 2 db 3 ; catch rate db 216 ; base exp yield db $77 ; sprite dimensions dw ZapdosPicFront dw ZapdosPicBack ; attacks known at lvl 0 db THUNDERSHOCK db DRILL_PECK db 0 db 0 db 5 ; growth rate ; learnset db %00101010 db %01000011 db %10001000 db %11000001 db %01000011 db %00011100 db %01001010 db 0 ; padding MoltresBaseStats: ; 0x393ba db DEX_MOLTRES ; pokedex id db 90 ; base hp db 100 ; base attack db 90 ; base defense db 90 ; base speed db 125 ; base special db FIRE ; species type 1 db FLYING ; species type 2 db 3 ; catch rate db 217 ; base exp yield db $77 ; sprite dimensions dw MoltresPicFront dw MoltresPicBack ; attacks known at lvl 0 db PECK db FIRE_SPIN db 0 db 0 db 5 ; growth rate ; learnset db %00101010 db %01000011 db %00001000 db %11000000 db %01100011 db %00001100 db %00001010 db 0 ; padding DratiniBaseStats: ; 0x393d6 db DEX_DRATINI ; pokedex id db 41 ; base hp db 64 ; base attack db 45 ; base defense db 50 ; base speed db 50 ; base special db DRAGON ; species type 1 db DRAGON ; species type 2 db 45 ; catch rate db 67 ; base exp yield db $55 ; sprite dimensions dw DratiniPicFront dw DratiniPicBack ; attacks known at lvl 0 db WRAP db LEER db 0 db 0 db 5 ; growth rate ; learnset db %10100000 db %00111111 db %11001000 db %11000001 db %11100011 db %00011000 db %00010010 db 0 ; padding DragonairBaseStats: ; 0x393f2 db DEX_DRAGONAIR ; pokedex id db 61 ; base hp db 84 ; base attack db 65 ; base defense db 70 ; base speed db 70 ; base special db DRAGON ; species type 1 db DRAGON ; species type 2 db 45 ; catch rate db 144 ; base exp yield db $66 ; sprite dimensions dw DragonairPicFront dw DragonairPicBack ; attacks known at lvl 0 db WRAP db LEER db THUNDER_WAVE db 0 db 5 ; growth rate ; learnset db %11100000 db %00111111 db %11001000 db %11000001 db %11100011 db %00011000 db %00010010 db 0 ; padding DragoniteBaseStats: ; 0x3940e db DEX_DRAGONITE ; pokedex id db 91 ; base hp db 134 ; base attack db 95 ; base defense db 80 ; base speed db 100 ; base special db DRAGON ; species type 1 db FLYING ; species type 2 db 45 ; catch rate db 218 ; base exp yield db $77 ; sprite dimensions dw DragonitePicFront dw DragonitePicBack ; attacks known at lvl 0 db WRAP db LEER db THUNDER_WAVE db AGILITY db 5 ; growth rate ; learnset db %11100010 db %01111111 db %11001000 db %11000001 db %11100011 db %00011000 db %00110010 db 0 ; padding MewtwoBaseStats: ; 0x3942a db DEX_MEWTWO ; pokedex id db 106 ; base hp db 110 ; base attack db 90 ; base defense db 130 ; base speed db 154 ; base special db PSYCHIC ; species type 1 db PSYCHIC ; species type 2 db 3 ; catch rate db 220 ; base exp yield db $77 ; sprite dimensions dw MewtwoPicFront dw MewtwoPicBack ; attacks known at lvl 0 db CONFUSION db DISABLE db SWIFT db PSYCHIC_M db 5 ; growth rate ; learnset db %10110001 db %11111111 db %10101111 db %11110001 db %10101111 db %00111000 db %01100011 db 0 ; padding INCBIN "baserom.gbc",$39446,$39884 - $39446 ReadMove: ; 5884 push hl push de push bc dec a ld hl,Moves ld bc,6 call AddNTimes ld de,$CFCC call CopyData pop bc pop de pop hl ret ; trainer data: from 5C53 to 652E INCBIN "baserom.gbc",$3989B,$39914 - $3989B ; trainer pic pointers and base money. dw YoungsterPic db 0,$15,0 dw BugCatcherPic db 0,$10,0 dw LassPic db 0,$15,0 dw SailorPic db 0,$30,0 dw JrTrainerMPic db 0,$20,0 dw JrTrainerFPic db 0,$20,0 dw PokemaniacPic db 0,$50,0 dw SuperNerdPic db 0,$25,0 dw HikerPic db 0,$35,0 dw BikerPic db 0,$20,0 dw BurglarPic db 0,$90,0 dw EngineerPic db 0,$50,0 dw JugglerPic db 0,$35,0 dw FisherPic db 0,$35,0 dw SwimmerPic db 0,$05,0 dw CueBallPic db 0,$25,0 dw GamblerPic db 0,$70,0 dw BeautyPic db 0,$70,0 dw PsychicPic db 0,$10,0 dw RockerPic db 0,$25,0 dw JugglerPic db 0,$35,0 dw TamerPic db 0,$40,0 dw BirdKeeperPic db 0,$25,0 dw BlackbeltPic db 0,$25,0 dw Rival1Pic db 0,$35,0 dw ProfOakPic db 0,$99,0 dw ChiefPic db 0,$30,0 dw ScientistPic db 0,$50,0 dw GiovanniPic db 0,$99,0 dw RocketPic db 0,$30,0 dw CooltrainerMPic db 0,$35,0 dw CooltrainerFPic db 0,$35,0 dw BrunoPic db 0,$99,0 dw BrockPic db 0,$99,0 dw MistyPic db 0,$99,0 dw LtSurgePic db 0,$99,0 dw ErikaPic db 0,$99,0 dw KogaPic db 0,$99,0 dw BlainePic db 0,$99,0 dw SabrinaPic db 0,$99,0 dw GentlemanPic db 0,$70,0 dw Rival2Pic db 0,$65,0 dw Rival3Pic db 0,$99,0 dw LoreleiPic db 0,$99,0 dw ChannelerPic db 0,$30,0 dw AgathaPic db 0,$99,0 dw LancePic db 0,$99,0 TrainerNames: ; 59FF db "YOUNGSTER@" db "BUG CATCHER@" db "LASS@" db "SAILOR@" db "JR.TRAINER♂@" db "JR.TRAINER♀@" db "POKéMANIAC@" db "SUPER NERD@" db "HIKER@" db "BIKER@" db "BURGLAR@" db "ENGINEER@" db "JUGGLER@" db "FISHERMAN@" db "SWIMMER@" db "CUE BALL@" db "GAMBLER@" db "BEAUTY@" db "PSYCHIC@" db "ROCKER@" db "JUGGLER@" db "TAMER@" db "BIRD KEEPER@" db "BLACKBELT@" db "RIVAL1@" db "PROF.OAK@" db "CHIEF@" db "SCIENTIST@" db "GIOVANNI@" db "ROCKET@" db "COOLTRAINER♂@" db "COOLTRAINER♀@" db "BRUNO@" db "BROCK@" db "MISTY@" db "LT.SURGE@" db "ERIKA@" db "KOGA@" db "BLAINE@" db "SABRINA@" db "GENTLEMAN@" db "RIVAL2@" db "RIVAL3@" db "LORELEI@" db "CHANNELER@" db "AGATHA@" db "LANCE@" INCBIN "baserom.gbc",$39B87,$39C53 - $39B87 ReadTrainer: ; 5C53 ; don't change any moves in a link battle ld a,[W_ISLINKBATTLE] and a ret nz ; set [W_ENEMYMONCOUNT] to 0, [$D89D] to FF ; XXX first is total enemy pokemon? ; XXX second is species of first pokemon? ld hl,W_ENEMYMONCOUNT xor a ld [hli],a dec a ld [hl],a ; get the pointer to trainer data for this class ld a,[W_CUROPPONENT] sub $C9 ; convert value from pokemon to trainer add a,a ld hl,TrainerDataPointers ld c,a ld b,0 add hl,bc ; hl points to trainer class ld a,[hli] ld h,[hl] ld l,a ld a,[W_TRAINERNO] ld b,a ; At this point b contains the trainer number, ; and hl points to the trainer class. ; Our next task is to iterate through the trainers, ; decrementing b each time, until we get to the right one. .outer\@ dec b jr z,.IterateTrainer .inner\@ ld a,[hli] and a jr nz,.inner\@ jr .outer\@ ; if the first byte of trainer data is FF, ; - each pokemon has a specific level ; (as opposed to the whole team being of the same level) ; - if [W_LONEATTACKNO] != 0, one pokemon on the team has a special move ; else the first byte is the level of every pokemon on the team .IterateTrainer ld a,[hli] cp $FF ; is the trainer special? jr z,.SpecialTrainer\@ ; if so, check for special moves ld [W_CURENEMYLVL],a .LoopTrainerData\@ ld a,[hli] and a ; have we reached the end of the trainer data? jr z,.FinishUp\@ ld [$CF91],a ; write species somewhere (XXX why?) ld a,1 ld [$CC49],a push hl call AddPokemonToParty pop hl jr .LoopTrainerData\@ .SpecialTrainer\@ ; if this code is being run: ; - each pokemon has a specific level ; (as opposed to the whole team being of the same level) ; - if [W_LONEATTACKNO] != 0, one pokemon on the team has a special move ld a,[hli] and a ; have we reached the end of the trainer data? jr z,.AddLoneMove\@ ld [W_CURENEMYLVL],a ld a,[hli] ld [$CF91],a ld a,1 ld [$CC49],a push hl call AddPokemonToParty pop hl jr .SpecialTrainer\@ .AddLoneMove\@ ; does the trainer have a single monster with a different move ld a,[W_LONEATTACKNO] ; Brock is 01, Misty is 02, Erika is 04, etc and a jr z,.AddTeamMove\@ dec a add a,a ld c,a ld b,0 ld hl,LoneMoves add hl,bc ld a,[hli] ld d,[hl] ld hl,W_ENEMYMON1MOVE3 ld bc,W_ENEMYMON2MOVE3 - W_ENEMYMON1MOVE3 call AddNTimes ld [hl],d jr .FinishUp\@ .AddTeamMove\@ ; check if our trainer's team has special moves ; get trainer class number ld a,[$D059] sub $C8 ld b,a ld hl,TeamMoves ; iterate through entries in TeamMoves, checking each for our trainer class .IterateTeamMoves\@ ld a,[hli] cp b jr z,.GiveTeamMoves\@ ; is there a match? inc hl ; if not, go to the next entry inc a jr nz,.IterateTeamMoves\@ ; no matches found. is this trainer champion rival? ld a,b cp SONY3 jr z,.ChampionRival\@ jr .FinishUp\@ ; nope .GiveTeamMoves\@ ld a,[hl] ld [$D95E],a jr .FinishUp\@ .ChampionRival\@ ; give moves to his team ; pidgeot ld a,SKY_ATTACK ld [W_ENEMYMON1MOVE3],a ; starter ld a,[W_RIVALSTARTER] cp BULBASAUR ld b,MEGA_DRAIN jr z,.GiveStarterMove\@ cp CHARMANDER ld b,FIRE_BLAST jr z,.GiveStarterMove\@ ld b,BLIZZARD ; must be squirtle .GiveStarterMove\@ ld a,b ld [W_ENEMYMON6MOVE3],a .FinishUp\@ ; XXX this needs documenting xor a ; clear D079-D07B ld de,$D079 ld [de],a inc de ld [de],a inc de ld [de],a ld a,[W_CURENEMYLVL] ld b,a .LastLoop\@ ld hl,$D047 ld c,2 push bc ld a,$B call Predef pop bc inc de inc de dec b jr nz,.LastLoop\@ ret LoneMoves: ; 5D22 ; these are used for gym leaders. ; this is not automatic! you have to write the number you want to W_LONEATTACKNO ; first. e.g., erika's script writes 4 to W_LONEATTACKNO to get mega drain, ; the fourth entry in the list. ; first byte: pokemon in the trainer's party that gets the move ; second byte: move ; unterminated db 1,BIDE db 1,BUBBLEBEAM db 2,THUNDERBOLT db 2,MEGA_DRAIN db 3,TOXIC db 3,PSYWAVE db 3,FIRE_BLAST db 4,FISSURE TeamMoves: ; 5D32 ; these are used for elite four. ; this is automatic, based on trainer class. ; don't be confused by LoneMoves above, the two data structures are ; _completely_ unrelated. ; first byte: trainer (all trainers in this class have this move) ; second byte: move ; ff-terminated db LORELEI,BLIZZARD db BRUNO,FISSURE db AGATHA,TOXIC db LANCE,BARRIER db $FF TrainerDataPointers: ; 5D3B dw YoungsterData,BugCatcherData,LassData,SailorData,JrTrainerMData dw JrTrainerFData,PokemaniacData,SuperNerdData,HikerData,BikerData dw BurglarData,EngineerData,Juggler1Data,FisherData,SwimmerData dw CueBallData,GamblerData,BeautyData,PsychicData,RockerData dw JugglerData,TamerData,BirdKeeperData,BlackbeltData,Green1Data dw ProfOakData,ChiefData,ScientistData,GiovanniData,RocketData dw CooltrainerMData,CooltrainerFData,BrunoData,BrockData,MistyData dw LtSurgeData,ErikaData,KogaData,BlaineData,SabrinaData dw GentlemanData,Green2Data,Green3Data,LoreleiData,ChannelerData dw AgathaData,LanceData ; if first byte != FF, then ; first byte is level (of all pokemon on this team) ; all the next bytes are pokemon species ; null-terminated ; if first byte == FF, then ; first byte is FF (obviously) ; every next two bytes are a level and species ; null-terminated YoungsterData: db 11,RATTATA,EKANS,0 db 14,SPEAROW,0 db 10,RATTATA,RATTATA,ZUBAT,0 db 14,RATTATA,EKANS,ZUBAT,0 db 15,RATTATA,SPEAROW,0 db 17,SLOWPOKE,0 db 14,EKANS,SANDSHREW,0 db 21,NIDORAN_M,0 db 21,EKANS,0 db 19,SANDSHREW,ZUBAT,0 db 17,RATTATA,RATTATA,RATICATE,0 db 18,NIDORAN_M,NIDORINO,0 db 17,SPEAROW,RATTATA,RATTATA,SPEAROW,0 BugCatcherData: db 6,WEEDLE,CATERPIE,0 db 7,WEEDLE,KAKUNA,WEEDLE,0 db 9,WEEDLE,0 db 10,CATERPIE,WEEDLE,CATERPIE,0 db 9,WEEDLE,KAKUNA,CATERPIE,METAPOD,0 db 11,CATERPIE,METAPOD,0 db 11,WEEDLE,KAKUNA,0 db 10,CATERPIE,METAPOD,CATERPIE,0 db 14,CATERPIE,WEEDLE,0 db 16,WEEDLE,CATERPIE,WEEDLE,0 db 20,BUTTERFREE,0 db 18,METAPOD,CATERPIE,VENONAT,0 db 19,BEEDRILL,BEEDRILL,0 db 20,CATERPIE,WEEDLE,VENONAT,0 LassData: db 9,PIDGEY,PIDGEY,0 db 10,RATTATA,NIDORAN_M,0 db 14,JIGGLYPUFF,0 db 31,PARAS,PARAS,PARASECT,0 db 11,ODDISH,BELLSPROUT,0 db 14,CLEFAIRY,0 db 16,PIDGEY,NIDORAN_F,0 db 14,PIDGEY,NIDORAN_F,0 db 15,NIDORAN_M,NIDORAN_F,0 db 13,ODDISH,PIDGEY,ODDISH,0 db 18,PIDGEY,NIDORAN_F,0 db 18,RATTATA,PIKACHU,0 db 23,NIDORAN_F,NIDORINA,0 db 24,MEOWTH,MEOWTH,MEOWTH,0 db 19,PIDGEY,RATTATA,NIDORAN_M,MEOWTH,PIKACHU,0 db 22,CLEFAIRY,CLEFAIRY,0 db 23,BELLSPROUT,WEEPINBELL,0 db 23,ODDISH,GLOOM,0 SailorData: db 18,MACHOP,SHELLDER,0 db 17,MACHOP,TENTACOOL,0 db 21,SHELLDER,0 db 17,HORSEA,SHELLDER,TENTACOOL,0 db 18,TENTACOOL,STARYU,0 db 17,HORSEA,HORSEA,HORSEA,0 db 20,MACHOP,0 db 21,PIKACHU,PIKACHU,0 JrTrainerMData: db 11,DIGLETT,SANDSHREW,0 db 14,RATTATA,EKANS,0 db 18,MANKEY,0 db 20,SQUIRTLE,0 db 16,SPEAROW,RATICATE,0 db 18,DIGLETT,DIGLETT,SANDSHREW,0 db 21,GROWLITHE,CHARMANDER,0 db 19,RATTATA,DIGLETT,EKANS,SANDSHREW,0 db 29,NIDORAN_M,NIDORINO,0 JrTrainerFData: db 19,GOLDEEN,0 db 16,RATTATA,PIKACHU,0 db 16,PIDGEY,PIDGEY,PIDGEY,0 db 22,BULBASAUR,0 db 18,ODDISH,BELLSPROUT,ODDISH,BELLSPROUT,0 db 23,MEOWTH,0 db 20,PIKACHU,CLEFAIRY,0 db 21,PIDGEY,PIDGEOTTO,0 db 21,JIGGLYPUFF,PIDGEY,MEOWTH,0 db 22,ODDISH,BULBASAUR,0 db 24,BULBASAUR,IVYSAUR,0 db 24,PIDGEY,MEOWTH,RATTATA,PIKACHU,MEOWTH,0 db 30,POLIWAG,POLIWAG,0 db 27,PIDGEY,MEOWTH,PIDGEY,PIDGEOTTO,0 db 28,GOLDEEN,POLIWAG,HORSEA,0 db 31,GOLDEEN,SEAKING,0 db 22,BELLSPROUT,CLEFAIRY,0 db 20,MEOWTH,ODDISH,PIDGEY,0 db 19,PIDGEY,RATTATA,RATTATA,BELLSPROUT,0 db 28,GLOOM,ODDISH,ODDISH,0 db 29,PIKACHU,RAICHU,0 db 33,CLEFAIRY,0 db 29,BELLSPROUT,ODDISH,TANGELA,0 db 30,TENTACOOL,HORSEA,SEEL,0 PokemaniacData: db 30,RHYHORN,LICKITUNG,0 db 20,CUBONE,SLOWPOKE,0 db 20,SLOWPOKE,SLOWPOKE,SLOWPOKE,0 db 22,CHARMANDER,CUBONE,0 db 25,SLOWPOKE,0 db 40,CHARMELEON,LAPRAS,LICKITUNG,0 db 23,CUBONE,SLOWPOKE,0 SuperNerdData: db 11,MAGNEMITE,VOLTORB,0 db 12,GRIMER,VOLTORB,KOFFING,0 db 20,VOLTORB,KOFFING,VOLTORB,MAGNEMITE,0 db 22,GRIMER,MUK,GRIMER,0 db 26,KOFFING,0 db 22,KOFFING,MAGNEMITE,WEEZING,0 db 20,MAGNEMITE,MAGNEMITE,KOFFING,MAGNEMITE,0 db 24,MAGNEMITE,VOLTORB,0 db 36,VULPIX,VULPIX,NINETALES,0 db 34,PONYTA,CHARMANDER,VULPIX,GROWLITHE,0 db 41,RAPIDASH,0 db 37,GROWLITHE,VULPIX,0 HikerData: db 10,GEODUDE,GEODUDE,ONIX,0 db 15,MACHOP,GEODUDE,0 db 13,GEODUDE,GEODUDE,MACHOP,GEODUDE,0 db 17,ONIX,0 db 21,GEODUDE,ONIX,0 db 20,GEODUDE,MACHOP,GEODUDE,0 db 21,GEODUDE,ONIX,0 db 19,ONIX,GRAVELER,0 db 21,GEODUDE,GEODUDE,GRAVELER,0 db 25,GEODUDE,0 db 20,MACHOP,ONIX,0 db 19,GEODUDE,MACHOP,GEODUDE,GEODUDE,0 db 20,ONIX,ONIX,GEODUDE,0 db 21,GEODUDE,GRAVELER,0 BikerData: db 28,KOFFING,KOFFING,KOFFING,0 db 29,KOFFING,GRIMER,0 db 25,KOFFING,KOFFING,WEEZING,KOFFING,GRIMER,0 db 28,KOFFING,GRIMER,WEEZING,0 db 29,GRIMER,KOFFING,0 db 33,WEEZING,0 db 26,GRIMER,GRIMER,GRIMER,GRIMER,0 db 28,WEEZING,KOFFING,WEEZING,0 db 33,MUK,0 db 29,VOLTORB,VOLTORB,0 db 29,WEEZING,MUK,0 db 25,KOFFING,WEEZING,KOFFING,KOFFING,WEEZING,0 db 26,KOFFING,KOFFING,GRIMER,KOFFING,0 db 28,GRIMER,GRIMER,KOFFING,0 db 29,KOFFING,MUK,0 BurglarData: db 29,GROWLITHE,VULPIX,0 db 33,GROWLITHE,0 db 28,VULPIX,CHARMANDER,PONYTA,0 db 36,GROWLITHE,VULPIX,NINETALES,0 db 41,PONYTA,0 db 37,VULPIX,GROWLITHE,0 db 34,CHARMANDER,CHARMELEON,0 db 38,NINETALES,0 db 34,GROWLITHE,PONYTA,0 EngineerData: db 21,VOLTORB,MAGNEMITE,0 db 21,MAGNEMITE,0 db 18,MAGNEMITE,MAGNEMITE,MAGNETON,0 Juggler1Data: ; none FisherData: db 17,GOLDEEN,TENTACOOL,GOLDEEN,0 db 17,TENTACOOL,STARYU,SHELLDER,0 db 22,GOLDEEN,POLIWAG,GOLDEEN,0 db 24,TENTACOOL,GOLDEEN,0 db 27,GOLDEEN,0 db 21,POLIWAG,SHELLDER,GOLDEEN,HORSEA,0 db 28,SEAKING,GOLDEEN,SEAKING,SEAKING,0 db 31,SHELLDER,CLOYSTER,0 db 27,MAGIKARP,MAGIKARP,MAGIKARP,MAGIKARP,MAGIKARP,MAGIKARP,0 db 33,SEAKING,GOLDEEN,0 db 24,MAGIKARP,MAGIKARP,0 SwimmerData: db 16,HORSEA,SHELLDER,0 db 30,TENTACOOL,SHELLDER,0 db 29,GOLDEEN,HORSEA,STARYU,0 db 30,POLIWAG,POLIWHIRL,0 db 27,HORSEA,TENTACOOL,TENTACOOL,GOLDEEN,0 db 29,GOLDEEN,SHELLDER,SEAKING,0 db 30,HORSEA,HORSEA,0 db 27,TENTACOOL,TENTACOOL,STARYU,HORSEA,TENTACRUEL,0 db 31,SHELLDER,CLOYSTER,0 db 35,STARYU,0 db 28,HORSEA,HORSEA,SEADRA,HORSEA,0 db 33,SEADRA,TENTACRUEL,0 db 37,STARMIE,0 db 33,STARYU,WARTORTLE,0 db 32,POLIWHIRL,TENTACOOL,SEADRA,0 CueBallData: db 28,MACHOP,MANKEY,MACHOP,0 db 29,MANKEY,MACHOP,0 db 33,MACHOP,0 db 29,MANKEY,PRIMEAPE,0 db 29,MACHOP,MACHOKE,0 db 33,MACHOKE,0 db 26,MANKEY,MANKEY,MACHOKE,MACHOP,0 db 29,PRIMEAPE,MACHOKE,0 db 31,TENTACOOL,TENTACOOL,TENTACRUEL,0 GamblerData: db 18,POLIWAG,HORSEA,0 db 18,BELLSPROUT,ODDISH,0 db 18,VOLTORB,MAGNEMITE,0 db 18,GROWLITHE,VULPIX,0 db 22,POLIWAG,POLIWAG,POLIWHIRL,0 db 22,ONIX,GEODUDE,GRAVELER,0 db 24,GROWLITHE,VULPIX,0 BeautyData: db 21,ODDISH,BELLSPROUT,ODDISH,BELLSPROUT,0 db 24,BELLSPROUT,BELLSPROUT,0 db 26,EXEGGCUTE,0 db 27,RATTATA,PIKACHU,RATTATA,0 db 29,CLEFAIRY,MEOWTH,0 db 35,SEAKING,0 db 30,SHELLDER,SHELLDER,CLOYSTER,0 db 31,POLIWAG,SEAKING,0 db 29,PIDGEOTTO,WIGGLYTUFF,0 db 29,BULBASAUR,IVYSAUR,0 db 33,WEEPINBELL,BELLSPROUT,WEEPINBELL,0 db 27,POLIWAG,GOLDEEN,SEAKING,GOLDEEN,POLIWAG,0 db 30,GOLDEEN,SEAKING,0 db 29,STARYU,STARYU,STARYU,0 db 30,SEADRA,HORSEA,SEADRA,0 PsychicData: db 31,KADABRA,SLOWPOKE,MR_MIME,KADABRA,0 db 34,MR_MIME,KADABRA,0 db 33,SLOWPOKE,SLOWPOKE,SLOWBRO,0 db 38,SLOWBRO,0 RockerData: db 20,VOLTORB,MAGNEMITE,VOLTORB,0 db 29,VOLTORB,ELECTRODE,0 JugglerData: db 29,KADABRA,MR_MIME,0 db 41,DROWZEE,HYPNO,KADABRA,KADABRA,0 db 31,DROWZEE,DROWZEE,KADABRA,DROWZEE,0 db 34,DROWZEE,HYPNO,0 db 48,MR_MIME,0 db 33,HYPNO,0 db 38,HYPNO,0 db 34,DROWZEE,KADABRA,0 TamerData: db 34,SANDSLASH,ARBOK,0 db 33,ARBOK,SANDSLASH,ARBOK,0 db 43,RHYHORN,0 db 39,ARBOK,TAUROS,0 db 44,PERSIAN,GOLDUCK,0 db 42,RHYHORN,PRIMEAPE,ARBOK,TAUROS,0 BirdKeeperData: db 29,PIDGEY,PIDGEOTTO,0 db 25,SPEAROW,PIDGEY,PIDGEY,SPEAROW,SPEAROW,0 db 26,PIDGEY,PIDGEOTTO,SPEAROW,FEAROW,0 db 33,FARFETCH_D,0 db 29,SPEAROW,FEAROW,0 db 26,PIDGEOTTO,FARFETCH_D,DODUO,PIDGEY,0 db 28,DODRIO,DODUO,DODUO,0 db 29,SPEAROW,FEAROW,0 db 34,DODRIO,0 db 26,SPEAROW,SPEAROW,FEAROW,SPEAROW,0 db 30,FEAROW,FEAROW,PIDGEOTTO,0 db 39,PIDGEOTTO,PIDGEOTTO,PIDGEY,PIDGEOTTO,0 db 42,FARFETCH_D,FEAROW,0 db 28,PIDGEY,DODUO,PIDGEOTTO,0 db 26,PIDGEY,SPEAROW,PIDGEY,FEAROW,0 db 29,PIDGEOTTO,FEAROW,0 db 28,SPEAROW,DODUO,FEAROW,0 BlackbeltData: db 37,HITMONLEE,HITMONCHAN,0 db 31,MANKEY,MANKEY,PRIMEAPE,0 db 32,MACHOP,MACHOKE,0 db 36,PRIMEAPE,0 db 31,MACHOP,MANKEY,PRIMEAPE,0 db 40,MACHOP,MACHOKE,0 db 43,MACHOKE,0 db 38,MACHOKE,MACHOP,MACHOKE,0 db 43,MACHOKE,MACHOP,MACHOKE,0 Green1Data: db 5,SQUIRTLE,0 db 5,BULBASAUR,0 db 5,CHARMANDER,0 db $FF,9,PIDGEY,8,SQUIRTLE,0 db $FF,9,PIDGEY,8,BULBASAUR,0 db $FF,9,PIDGEY,8,CHARMANDER,0 db $FF,18,PIDGEOTTO,15,ABRA,15,RATTATA,17,SQUIRTLE,0 db $FF,18,PIDGEOTTO,15,ABRA,15,RATTATA,17,BULBASAUR,0 db $FF,18,PIDGEOTTO,15,ABRA,15,RATTATA,17,CHARMANDER,0 ProfOakData: db $FF,66,TAUROS,67,EXEGGUTOR,68,ARCANINE,69,BLASTOISE,70,GYARADOS,0 db $FF,66,TAUROS,67,EXEGGUTOR,68,ARCANINE,69,VENUSAUR,70,GYARADOS,0 db $FF,66,TAUROS,67,EXEGGUTOR,68,ARCANINE,69,CHARIZARD,70,GYARADOS,0 ChiefData: ; none ScientistData: db 34,KOFFING,VOLTORB,0 db 26,GRIMER,WEEZING,KOFFING,WEEZING,0 db 28,MAGNEMITE,VOLTORB,MAGNETON,0 db 29,ELECTRODE,WEEZING,0 db 33,ELECTRODE,0 db 26,MAGNETON,KOFFING,WEEZING,MAGNEMITE,0 db 25,VOLTORB,KOFFING,MAGNETON,MAGNEMITE,KOFFING,0 db 29,ELECTRODE,MUK,0 db 29,GRIMER,ELECTRODE,0 db 28,VOLTORB,KOFFING,MAGNETON,0 db 29,MAGNEMITE,KOFFING,0 db 33,MAGNEMITE,MAGNETON,VOLTORB,0 db 34,MAGNEMITE,ELECTRODE,0 GiovanniData: db $FF,25,ONIX,24,RHYHORN,29,KANGASKHAN,0 db $FF,37,NIDORINO,35,KANGASKHAN,37,RHYHORN,41,NIDOQUEEN,0 db $FF,45,RHYHORN,42,DUGTRIO,44,NIDOQUEEN,45,NIDOKING,50,RHYDON,0 RocketData: db 13,RATTATA,ZUBAT,0 db 11,SANDSHREW,RATTATA,ZUBAT,0 db 12,ZUBAT,EKANS,0 db 16,RATICATE,0 db 17,MACHOP,DROWZEE,0 db 15,EKANS,ZUBAT,0 db 20,RATICATE,ZUBAT,0 db 21,DROWZEE,MACHOP,0 db 21,RATICATE,RATICATE,0 db 20,GRIMER,KOFFING,KOFFING,0 db 19,RATTATA,RATICATE,RATICATE,RATTATA,0 db 22,GRIMER,KOFFING,0 db 17,ZUBAT,KOFFING,GRIMER,ZUBAT,RATICATE,0 db 20,RATTATA,RATICATE,DROWZEE,0 db 21,MACHOP,MACHOP,0 db 23,SANDSHREW,EKANS,SANDSLASH,0 db 23,EKANS,SANDSHREW,ARBOK,0 db 21,KOFFING,ZUBAT,0 db 25,ZUBAT,ZUBAT,GOLBAT,0 db 26,KOFFING,DROWZEE,0 db 23,ZUBAT,RATTATA,RATICATE,ZUBAT,0 db 26,DROWZEE,KOFFING,0 db 29,CUBONE,ZUBAT,0 db 25,GOLBAT,ZUBAT,ZUBAT,RATICATE,ZUBAT,0 db 28,RATICATE,HYPNO,RATICATE,0 db 29,MACHOP,DROWZEE,0 db 28,EKANS,ZUBAT,CUBONE,0 db 33,ARBOK,0 db 33,HYPNO,0 db 29,MACHOP,MACHOKE,0 db 28,ZUBAT,ZUBAT,GOLBAT,0 db 26,RATICATE,ARBOK,KOFFING,GOLBAT,0 db 29,CUBONE,CUBONE,0 db 29,SANDSHREW,SANDSLASH,0 db 26,RATICATE,ZUBAT,GOLBAT,RATTATA,0 db 28,WEEZING,GOLBAT,KOFFING,0 db 28,DROWZEE,GRIMER,MACHOP,0 db 28,GOLBAT,DROWZEE,HYPNO,0 db 33,MACHOKE,0 db 25,RATTATA,RATTATA,ZUBAT,RATTATA,EKANS,0 db 32,CUBONE,DROWZEE,MAROWAK,0 CooltrainerMData: db 39,NIDORINO,NIDOKING,0 db 43,EXEGGUTOR,CLOYSTER,ARCANINE,0 db 43,KINGLER,TENTACRUEL,BLASTOISE,0 db 45,KINGLER,STARMIE,0 db 42,IVYSAUR,WARTORTLE,CHARMELEON,CHARIZARD,0 db 44,IVYSAUR,WARTORTLE,CHARMELEON,0 db 49,NIDOKING,0 db 44,KINGLER,CLOYSTER,0 db 39,SANDSLASH,DUGTRIO,0 db 43,RHYHORN,0 CooltrainerFData: db 24,WEEPINBELL,GLOOM,IVYSAUR,0 db 43,BELLSPROUT,WEEPINBELL,VICTREEBEL,0 db 43,PARASECT,DEWGONG,CHANSEY,0 db 46,VILEPLUME,BUTTERFREE,0 db 44,PERSIAN,NINETALES,0 db 45,IVYSAUR,VENUSAUR,0 db 45,NIDORINA,NIDOQUEEN,0 db 43,PERSIAN,NINETALES,RAICHU,0 BrunoData: db $FF,53,ONIX,55,HITMONCHAN,55,HITMONLEE,56,ONIX,58,MACHAMP,0 BrockData: db $FF,12,GEODUDE,14,ONIX,0 MistyData: db $FF,18,STARYU,21,STARMIE,0 LtSurgeData: db $FF,21,VOLTORB,18,PIKACHU,24,RAICHU,0 ErikaData: db $FF,29,VICTREEBEL,24,TANGELA,29,VILEPLUME,0 KogaData: db $FF,37,KOFFING,39,MUK,37,KOFFING,43,WEEZING,0 BlaineData: db $FF,42,GROWLITHE,40,PONYTA,42,RAPIDASH,47,ARCANINE,0 SabrinaData: db $FF,38,KADABRA,37,MR_MIME,38,VENOMOTH,43,ALAKAZAM,0 GentlemanData: db 18,GROWLITHE,GROWLITHE,0 db 19,NIDORAN_M,NIDORAN_F,0 db 23,PIKACHU,0 db 48,PRIMEAPE,0 db 17,GROWLITHE,PONYTA,0 Green2Data: db $FF,19,PIDGEOTTO,16,RATICATE,18,KADABRA,20,WARTORTLE,0 db $FF,19,PIDGEOTTO,16,RATICATE,18,KADABRA,20,IVYSAUR,0 db $FF,19,PIDGEOTTO,16,RATICATE,18,KADABRA,20,CHARMELEON,0 db $FF,25,PIDGEOTTO,23,GROWLITHE,22,EXEGGCUTE,20,KADABRA,25,WARTORTLE,0 db $FF,25,PIDGEOTTO,23,GYARADOS,22,GROWLITHE,20,KADABRA,25,IVYSAUR,0 db $FF,25,PIDGEOTTO,23,EXEGGCUTE,22,GYARADOS,20,KADABRA,25,CHARMELEON,0 db $FF,37,PIDGEOT,38,GROWLITHE,35,EXEGGCUTE,35,ALAKAZAM,40,BLASTOISE,0 db $FF,37,PIDGEOT,38,GYARADOS,35,GROWLITHE,35,ALAKAZAM,40,VENUSAUR,0 db $FF,37,PIDGEOT,38,EXEGGCUTE,35,GYARADOS,35,ALAKAZAM,40,CHARIZARD,0 db $FF,47,PIDGEOT,45,RHYHORN,45,GROWLITHE,47,EXEGGCUTE,50,ALAKAZAM,53,BLASTOISE,0 db $FF,47,PIDGEOT,45,RHYHORN,45,GYARADOS,47,GROWLITHE,50,ALAKAZAM,53,VENUSAUR,0 db $FF,47,PIDGEOT,45,RHYHORN,45,EXEGGCUTE,47,GYARADOS,50,ALAKAZAM,53,CHARIZARD,0 Green3Data: db $FF,61,PIDGEOT,59,ALAKAZAM,61,RHYDON,61,ARCANINE,63,EXEGGUTOR,65,BLASTOISE,0 db $FF,61,PIDGEOT,59,ALAKAZAM,61,RHYDON,61,GYARADOS,63,ARCANINE,65,VENUSAUR,0 db $FF,61,PIDGEOT,59,ALAKAZAM,61,RHYDON,61,EXEGGUTOR,63,GYARADOS,65,CHARIZARD,0 LoreleiData: db $FF,54,DEWGONG,53,CLOYSTER,54,SLOWBRO,56,JYNX,56,LAPRAS,0 ChannelerData: db 22,GASTLY,0 db 24,GASTLY,0 db 23,GASTLY,GASTLY,0 db 24,GASTLY,0 db 23,GASTLY,0 db 24,GASTLY,0 db 24,HAUNTER,0 db 22,GASTLY,0 db 24,GASTLY,0 db 23,GASTLY,GASTLY,0 db 24,GASTLY,0 db 22,GASTLY,0 db 24,GASTLY,0 db 23,HAUNTER,0 db 24,GASTLY,0 db 22,GASTLY,0 db 24,GASTLY,0 db 22,HAUNTER,0 db 22,GASTLY,GASTLY,GASTLY,0 db 24,GASTLY,0 db 24,GASTLY,0 db 34,GASTLY,HAUNTER,0 db 38,HAUNTER,0 db 33,GASTLY,GASTLY,HAUNTER,0 AgathaData: db $FF,56,GENGAR,56,GOLBAT,55,HAUNTER,58,ARBOK,60,GENGAR,0 LanceData: db $FF,58,GYARADOS,56,DRAGONAIR,56,DRAGONAIR,60,AERODACTYL,62,DRAGONITE,0 TrainerAI: ; 652E ;XXX called at 34964, 3c342, 3c398 and a ld a,[W_ISINBATTLE] dec a ret z ; if not a trainer, we're done here ld a,[W_ISLINKBATTLE] cp 4 ret z ld a,[W_TRAINERCLASS] ; what trainer class is this? dec a ld c,a ld b,0 ld hl,TrainerAIPointers add hl,bc add hl,bc add hl,bc ld a,[W_AICOUNT] and a ret z ; if no AI uses left, we're done here inc hl inc a jr nz,.getpointer\@ dec hl ld a,[hli] ld [W_AICOUNT],a .getpointer\@ ld a,[hli] ld h,[hl] ld l,a call GenRandom jp [hl] TrainerAIPointers: ; 655C ; one entry per trainer class ; first byte, number of times (per Pokémon) it can occur ; next two bytes, pointer to AI subroutine for trainer class dbw 3,GenericAI dbw 3,GenericAI dbw 3,GenericAI dbw 3,GenericAI dbw 3,GenericAI dbw 3,GenericAI dbw 3,GenericAI dbw 3,GenericAI dbw 3,GenericAI dbw 3,GenericAI dbw 3,GenericAI dbw 3,GenericAI dbw 3,JugglerAI ; juggler_x dbw 3,GenericAI dbw 3,GenericAI dbw 3,GenericAI dbw 3,GenericAI dbw 3,GenericAI dbw 3,GenericAI dbw 3,GenericAI dbw 3,JugglerAI ; juggler dbw 3,GenericAI dbw 3,GenericAI dbw 2,BlackbeltAI ; blackbelt dbw 3,GenericAI dbw 3,GenericAI dbw 1,GenericAI ; chief dbw 3,GenericAI dbw 1,GiovanniAI ; giovanni dbw 3,GenericAI dbw 2,CooltrainerMAI ; cooltrainerm dbw 1,CooltrainerFAI ; cooltrainerf dbw 2,BrunoAI ; bruno dbw 5,BrockAI ; brock dbw 1,MistyAI ; misty dbw 1,LtSurgeAI ; surge dbw 1,ErikaAI ; erika dbw 2,KogaAI ; koga dbw 2,BlaineAI ; blaine dbw 1,SabrinaAI ; sabrina dbw 3,GenericAI dbw 1,Sony2AI ; sony2 dbw 1,Sony3AI ; sony3 dbw 2,LoreleiAI ; lorelei dbw 3,GenericAI dbw 2,AgathaAI ; agatha dbw 1,LanceAI ; lance JugglerAI: cp $40 ret nc jp $672A BlackbeltAI: cp $20 ret nc jp AIUseXAttack GiovanniAI: cp $40 ret nc jp AIUseGuardSpec CooltrainerMAI: cp $40 ret nc jp AIUseXAttack CooltrainerFAI: cp $40 ld a,$A call $67CF jp c,AIUseHyperPotion ld a,5 call $67CF ret nc jp $672A BrockAI: ; if his active monster has a status condition, use a full heal ld a,[W_ENEMYMONSTATUS] and a ret z jp AIUseFullHeal MistyAI: cp $40 ret nc jp AIUseXDefend LtSurgeAI: cp $40 ret nc jp AIUseXSpeed ErikaAI: cp $80 ret nc ld a,$A call $67CF ret nc jp AIUseSuperPotion KogaAI: cp $40 ret nc jp AIUseXAttack BlaineAI: cp $40 ret nc jp AIUseSuperPotion SabrinaAI: cp $40 ret nc ld a,$A call $67CF ret nc jp AIUseHyperPotion Sony2AI: cp $20 ret nc ld a,5 call $67CF ret nc jp AIUsePotion Sony3AI: cp $20 ret nc ld a,5 call $67CF ret nc jp AIUseFullRestore LoreleiAI: cp $80 ret nc ld a,5 call $67CF ret nc jp AIUseSuperPotion BrunoAI: cp $40 ret nc jp AIUseXDefend AgathaAI: cp $14 jp c,$672A cp $80 ret nc ld a,4 call $67CF ret nc jp AIUseSuperPotion LanceAI: cp $80 ret nc ld a,5 call $67CF ret nc jp AIUseHyperPotion GenericAI: and a ; clear carry ret ; end of individual trainer AI routines DecrementAICount: ; 6695 ld hl,W_AICOUNT dec [hl] scf ret Function669B: ; 669B ; XXX what does this do ld a,$8E jp $3740 AIUseFullRestore: ; 0x3a6a0 call AICureStatus ld a,FULL_RESTORE ld [$CF05],a ld de,$CEEB ld hl,$CFE7 ld a,[hld] ld [de],a inc de ld a,[hl] ld [de],a inc de ld hl,$CFF5 ld a,[hld] ld [de],a inc de ld [$CEE9],a ld [$CFE7],a ld a,[hl] ld [de],a ld [$CEEA],a ld [W_ENEMYMONCURHP],a jr Function6718 ; 0x3a6ca AIUsePotion: ; 0x3a6ca ; enemy trainer heals his monster with a potion ld a,POTION ld b,20 jr AIRecoverHP AIUseSuperPotion: ; 0x3a6d0 ; enemy trainer heals his monster with a super potion ld a,SUPER_POTION ld b,50 jr AIRecoverHP AIUseHyperPotion: ; 0x3a6d6 ; enemy trainer heals his monster with a hyper potion ld a,HYPER_POTION ld b,200 ; fallthrough AIRecoverHP: ; 66DA ; heal b HP and print "trainer used $(a) on pokemon!" ld [$CF05],a ld hl,$CFE7 ld a,[hl] ld [$CEEB],a add b ld [hld],a ld [$CEED],a ld a,[hl] ld [$CEEC],a ld [$CEEE],a jr nc,.next\@ inc a ld [hl],a ld [$CEEE],a .next\@ inc hl ld a,[hld] ld b,a ld de,$CFF5 ld a,[de] dec de ld [$CEE9],a sub b ld a,[hli] ld b,a ld a,[de] ld [$CEEA],a sbc b jr nc,Function6718 inc de ld a,[de] dec de ld [hld],a ld [$CEED],a ld a,[de] ld [hl],a ld [$CEEE],a ; fallthrough Function6718: ; 6718 call AIPrintItemUse_ ld hl,$C3CA xor a ld [$CF94],a ld a,$48 call Predef jp DecrementAICount Function672A: ; 672A ld a,[W_ENEMYMONCOUNT] ld c,a ld hl,W_ENEMYMON1HP ld d,0 ; keep count of unfainted monsters ; count how many monsters haven't fainted yet .loop\@ ld a,[hli] ld b,a ld a,[hld] or b jr z,.Fainted\@ ; has monster fainted? inc d .Fainted\@ push bc ld bc,$2C add hl,bc pop bc dec c jr nz,.loop\@ ld a,d ; how many available monsters are there? cp 2 ; don't bother if only 1 or 2 jp nc,Function674B ; XXX check, does this jump when a = 2? and a ret Function674B: ; 674B ; prepare to withdraw the active monster: copy hp, number, and status to roster ld a,[W_ENEMYMONNUMBER] ld hl,W_ENEMYMON1HP ld bc,$2C call AddNTimes ld d,h ld e,l ld hl,W_ENEMYMONCURHP ld bc,4 call CopyData ld hl, AIBattleWithdrawText call PrintText ld a,1 ld [$D11D],a ld hl,EnemySendOut ld b,BANK(EnemySendOut) call Bankswitch xor a ld [$D11D],a ld a,[W_ISLINKBATTLE] cp 4 ret z scf ret AIBattleWithdrawText: ; 0x3a781 TX_FAR _AIBattleWithdrawText db "@" AIUseFullHeal: ; 0x3a786 call $669B call AICureStatus ld a,FULL_HEAL jp AIPrintItemUse AICureStatus: ; 0x3a791 ; cures the status of enemy's active pokemon ld a,[W_ENEMYMONNUMBER] ld hl,$D8A8 ld bc,$2C call AddNTimes xor a ld [hl],a ; clear status in enemy team roster ld [W_ENEMYMONSTATUS],a ; clear status of active enemy ld hl,$D069 res 0,[hl] ret AIUseXAccuracy: ; 0x3a7a8 unused call $669B ld hl,$D068 set 0,[hl] ld a,X_ACCURACY jp AIPrintItemUse AIUseGuardSpec: ; 0x3a7b5 call $669B ld hl,$D068 set 1,[hl] ld a,GUARD_SPEC_ jp AIPrintItemUse AIUseDireHit: ; 0x3a7c2 unused call $669B ld hl,$D068 set 2,[hl] ld a,DIRE_HIT jp AIPrintItemUse Function67CF: ; 0x3a7cf 67CF ld [H_DIVISOR],a ld hl,$CFF4 ld a,[hli] ld [H_DIVIDEND],a ld a,[hl] ld [H_DIVIDEND + 1],a ld b,2 call Divide ld a,[H_QUOTIENT + 3] ld c,a ld a,[H_QUOTIENT + 2] ld b,a ld hl,$CFE7 ld a,[hld] ld e,a ld a,[hl] ld d,a ld a,d sub b ret nz ld a,e sub c ret AIUseXAttack: ; 0x3a7f2 ld b,$A ld a,X_ATTACK jr AIIncreaseStat AIUseXDefend: ; 0x3a7f8 ld b,$B ld a,X_DEFEND jr AIIncreaseStat AIUseXSpeed: ; 0x3a7fe ld b,$C ld a,X_SPEED jr AIIncreaseStat AIUseXSpecial: ; 0x3a804 ld b,$D ld a,X_SPECIAL ; fallthrough AIIncreaseStat: ; 0x3a808 ld [$CF05],a push bc call AIPrintItemUse_ pop bc ld hl,$CFCD ld a,[hld] push af ld a,[hl] push af push hl ld a,$AF ld [hli],a ld [hl],b ld hl,$7428 ld b,$F call Bankswitch pop hl pop af ld [hli],a pop af ld [hl],a jp DecrementAICount AIPrintItemUse: ; 0x3a82c ld [$CF05],a call AIPrintItemUse_ jp DecrementAICount AIPrintItemUse_: ; 0x3a835 ; print "x used [$CF05] on z!" ld a,[$CF05] ld [$D11E],a call GetItemName ld hl, AIBattleUseItemText jp PrintText AIBattleUseItemText: ; 0x3a844 TX_FAR _AIBattleUseItemText db "@" INCBIN "baserom.gbc",$3a849,$3af3e - $3a849 UnnamedText_3af3e: ; 0x3af3e TX_FAR _UnnamedText_3af3e db $50 ; 0x3af3e + 5 bytes UnnamedText_3af43: ; 0x3af43 TX_FAR _UnnamedText_3af43 db $50 ; 0x3af43 + 5 bytes UnnamedText_3af48: ; 0x3af48 TX_FAR _UnnamedText_3af48 db $50 ; 0x3af48 + 5 bytes UnnamedText_3af4d: ; 0x3af4d TX_FAR _UnnamedText_3af4d db $50 ; 0x3af4d + 5 bytes INCBIN "baserom.gbc",$3af52,$10a EvosMovesPointerTable: ; 705C dw Mon112_EvosMoves dw Mon115_EvosMoves dw Mon032_EvosMoves dw Mon035_EvosMoves dw Mon021_EvosMoves dw Mon100_EvosMoves dw Mon034_EvosMoves dw Mon080_EvosMoves dw Mon002_EvosMoves dw Mon103_EvosMoves dw Mon108_EvosMoves dw Mon102_EvosMoves dw Mon088_EvosMoves dw Mon094_EvosMoves dw Mon029_EvosMoves dw Mon031_EvosMoves dw Mon104_EvosMoves dw Mon111_EvosMoves dw Mon131_EvosMoves dw Mon059_EvosMoves dw Mon151_EvosMoves dw Mon130_EvosMoves dw Mon090_EvosMoves dw Mon072_EvosMoves dw Mon092_EvosMoves dw Mon123_EvosMoves dw Mon120_EvosMoves dw Mon009_EvosMoves dw Mon127_EvosMoves dw Mon114_EvosMoves dw Mon152_EvosMoves ;MissingNo dw Mon153_EvosMoves ;MissingNo dw Mon058_EvosMoves dw Mon095_EvosMoves dw Mon022_EvosMoves dw Mon016_EvosMoves dw Mon079_EvosMoves dw Mon064_EvosMoves dw Mon075_EvosMoves dw Mon113_EvosMoves dw Mon067_EvosMoves dw Mon122_EvosMoves dw Mon106_EvosMoves dw Mon107_EvosMoves dw Mon024_EvosMoves dw Mon047_EvosMoves dw Mon054_EvosMoves dw Mon096_EvosMoves dw Mon076_EvosMoves dw Mon154_EvosMoves ;MissingNo dw Mon126_EvosMoves dw Mon155_EvosMoves ;MissingNo dw Mon125_EvosMoves dw Mon082_EvosMoves dw Mon109_EvosMoves dw Mon156_EvosMoves ;MissingNo dw Mon056_EvosMoves dw Mon086_EvosMoves dw Mon050_EvosMoves dw Mon128_EvosMoves dw Mon157_EvosMoves ;MissingNo dw Mon158_EvosMoves ;MissingNo dw Mon159_EvosMoves ;MissingNo dw Mon083_EvosMoves dw Mon048_EvosMoves dw Mon149_EvosMoves dw Mon160_EvosMoves ;MissingNo dw Mon161_EvosMoves ;MissingNo dw Mon162_EvosMoves ;MissingNo dw Mon084_EvosMoves dw Mon060_EvosMoves dw Mon124_EvosMoves dw Mon146_EvosMoves dw Mon144_EvosMoves dw Mon145_EvosMoves dw Mon132_EvosMoves dw Mon052_EvosMoves dw Mon098_EvosMoves dw Mon163_EvosMoves ;MissingNo dw Mon164_EvosMoves ;MissingNo dw Mon165_EvosMoves ;MissingNo dw Mon037_EvosMoves dw Mon038_EvosMoves dw Mon025_EvosMoves dw Mon026_EvosMoves dw Mon166_EvosMoves ;MissingNo dw Mon167_EvosMoves ;MissingNo dw Mon147_EvosMoves dw Mon148_EvosMoves dw Mon140_EvosMoves dw Mon141_EvosMoves dw Mon116_EvosMoves dw Mon117_EvosMoves dw Mon168_EvosMoves ;MissingNo dw Mon169_EvosMoves ;MissingNo dw Mon027_EvosMoves dw Mon028_EvosMoves dw Mon138_EvosMoves dw Mon139_EvosMoves dw Mon039_EvosMoves dw Mon040_EvosMoves dw Mon133_EvosMoves dw Mon136_EvosMoves dw Mon135_EvosMoves dw Mon134_EvosMoves dw Mon066_EvosMoves dw Mon041_EvosMoves dw Mon023_EvosMoves dw Mon046_EvosMoves dw Mon061_EvosMoves dw Mon062_EvosMoves dw Mon013_EvosMoves dw Mon014_EvosMoves dw Mon015_EvosMoves dw Mon170_EvosMoves ;MissingNo dw Mon085_EvosMoves dw Mon057_EvosMoves dw Mon051_EvosMoves dw Mon049_EvosMoves dw Mon087_EvosMoves dw Mon171_EvosMoves ;MissingNo dw Mon172_EvosMoves ;MissingNo dw Mon010_EvosMoves dw Mon011_EvosMoves dw Mon012_EvosMoves dw Mon068_EvosMoves dw Mon173_EvosMoves ;MissingNo dw Mon055_EvosMoves dw Mon097_EvosMoves dw Mon042_EvosMoves dw Mon150_EvosMoves dw Mon143_EvosMoves dw Mon129_EvosMoves dw Mon174_EvosMoves ;MissingNo dw Mon175_EvosMoves ;MissingNo dw Mon089_EvosMoves dw Mon176_EvosMoves ;MissingNo dw Mon099_EvosMoves dw Mon091_EvosMoves dw Mon177_EvosMoves ;MissingNo dw Mon101_EvosMoves dw Mon036_EvosMoves dw Mon110_EvosMoves dw Mon053_EvosMoves dw Mon105_EvosMoves dw Mon178_EvosMoves ;MissingNo dw Mon093_EvosMoves dw Mon063_EvosMoves dw Mon065_EvosMoves dw Mon017_EvosMoves dw Mon018_EvosMoves dw Mon121_EvosMoves dw Mon001_EvosMoves dw Mon003_EvosMoves dw Mon073_EvosMoves dw Mon179_EvosMoves ;MissingNo dw Mon118_EvosMoves dw Mon119_EvosMoves dw Mon180_EvosMoves ;MissingNo dw Mon181_EvosMoves ;MissingNo dw Mon182_EvosMoves ;MissingNo dw Mon183_EvosMoves ;MissingNo dw Mon077_EvosMoves dw Mon078_EvosMoves dw Mon019_EvosMoves dw Mon020_EvosMoves dw Mon033_EvosMoves dw Mon030_EvosMoves dw Mon074_EvosMoves dw Mon137_EvosMoves dw Mon142_EvosMoves dw Mon184_EvosMoves ;MissingNo dw Mon081_EvosMoves dw Mon185_EvosMoves ;MissingNo dw Mon186_EvosMoves ;MissingNo dw Mon004_EvosMoves dw Mon007_EvosMoves dw Mon005_EvosMoves dw Mon008_EvosMoves dw Mon006_EvosMoves dw Mon187_EvosMoves ;MissingNo dw Mon188_EvosMoves ;MissingNo dw Mon189_EvosMoves ;MissingNo dw Mon190_EvosMoves ;MissingNo dw Mon043_EvosMoves dw Mon044_EvosMoves dw Mon045_EvosMoves dw Mon069_EvosMoves dw Mon070_EvosMoves dw Mon071_EvosMoves Mon112_EvosMoves: ;RHYDON ;Evolutions db 0 ;Learnset db 30,STOMP db 35,TAIL_WHIP db 40,FURY_ATTACK db 48,HORN_DRILL db 55,LEER db 64,TAKE_DOWN db 0 Mon115_EvosMoves: ;KANGASKHAN ;Evolutions db 0 ;Learnset db 26,BITE db 31,TAIL_WHIP db 36,MEGA_PUNCH db 41,LEER db 46,DIZZY_PUNCH db 0 Mon032_EvosMoves: ;NIDORAN_M ;Evolutions db EV_LEVEL,16,NIDORINO db 0 ;Learnset db 8,HORN_ATTACK db 14,POISON_STING db 21,FOCUS_ENERGY db 29,FURY_ATTACK db 36,HORN_DRILL db 43,DOUBLE_KICK db 0 Mon035_EvosMoves: ;CLEFAIRY ;Evolutions db EV_ITEM,MOON_STONE,1,CLEFABLE db 0 ;Learnset db 13,SING db 18,DOUBLESLAP db 24,MINIMIZE db 31,METRONOME db 39,DEFENSE_CURL db 48,LIGHT_SCREEN db 0 Mon021_EvosMoves: ;SPEAROW ;Evolutions db EV_LEVEL,20,FEAROW db 0 ;Learnset db 9,LEER db 15,FURY_ATTACK db 22,MIRROR_MOVE db 29,DRILL_PECK db 36,AGILITY db 0 Mon100_EvosMoves: ;VOLTORB ;Evolutions db EV_LEVEL,30,ELECTRODE db 0 ;Learnset db 17,SONICBOOM db 22,SELFDESTRUCT db 29,LIGHT_SCREEN db 36,SWIFT db 43,EXPLOSION db 0 Mon034_EvosMoves: ;NIDOKING ;Evolutions db 0 ;Learnset db 8,HORN_ATTACK db 14,POISON_STING db 23,THRASH db 0 Mon080_EvosMoves: ;SLOWBRO ;Evolutions db 0 ;Learnset db 18,DISABLE db 22,HEADBUTT db 27,GROWL db 33,WATER_GUN db 37,WITHDRAW db 44,AMNESIA db 55,PSYCHIC_M db 0 Mon002_EvosMoves: ;IVYSAUR ;Evolutions db EV_LEVEL,32,VENUSAUR db 0 ;Learnset db 7,LEECH_SEED db 13,VINE_WHIP db 22,POISONPOWDER db 30,RAZOR_LEAF db 38,GROWTH db 46,SLEEP_POWDER db 54,SOLARBEAM db 0 Mon103_EvosMoves: ;EXEGGUTOR ;Evolutions db 0 ;Learnset db 28,STOMP db 0 Mon108_EvosMoves: ;LICKITUNG ;Evolutions db 0 ;Learnset db 7,STOMP db 15,DISABLE db 23,DEFENSE_CURL db 31,SLAM db 39,SCREECH db 0 Mon102_EvosMoves: ;EXEGGCUTE ;Evolutions db EV_ITEM,LEAF_STONE ,1,EXEGGUTOR db 0 ;Learnset db 25,REFLECT db 28,LEECH_SEED db 32,STUN_SPORE db 37,POISONPOWDER db 42,SOLARBEAM db 48,SLEEP_POWDER db 0 Mon088_EvosMoves: ;GRIMER ;Evolutions db EV_LEVEL,38,MUK db 0 ;Learnset db 30,POISON_GAS db 33,MINIMIZE db 37,SLUDGE db 42,HARDEN db 48,SCREECH db 55,ACID_ARMOR db 0 Mon094_EvosMoves: ;GENGAR ;Evolutions db 0 ;Learnset db 29,HYPNOSIS db 38,DREAM_EATER db 0 Mon029_EvosMoves: ;NIDORAN_F ;Evolutions db EV_LEVEL,16,NIDORINA db 0 ;Learnset db 8,SCRATCH db 14,POISON_STING db 21,TAIL_WHIP db 29,BITE db 36,FURY_SWIPES db 43,DOUBLE_KICK db 0 Mon031_EvosMoves: ;NIDOQUEEN ;Evolutions db 0 ;Learnset db 8,SCRATCH db 14,POISON_STING db 23,BODY_SLAM db 0 Mon104_EvosMoves: ;CUBONE ;Evolutions db EV_LEVEL,28,MAROWAK db 0 ;Learnset db 25,LEER db 31,FOCUS_ENERGY db 38,THRASH db 43,BONEMERANG db 46,RAGE db 0 Mon111_EvosMoves: ;RHYHORN ;Evolutions db EV_LEVEL,42,RHYDON db 0 ;Learnset db 30,STOMP db 35,TAIL_WHIP db 40,FURY_ATTACK db 45,HORN_DRILL db 50,LEER db 55,TAKE_DOWN db 0 Mon131_EvosMoves: ;LAPRAS ;Evolutions db 0 ;Learnset db 16,SING db 20,MIST db 25,BODY_SLAM db 31,CONFUSE_RAY db 38,ICE_BEAM db 46,HYDRO_PUMP db 0 Mon059_EvosMoves: ;ARCANINE ;Evolutions db 0 ;Learnset db 0 Mon151_EvosMoves: ;MEW ;Evolutions db 0 ;Learnset db 10,TRANSFORM db 20,MEGA_PUNCH db 30,METRONOME db 40,PSYCHIC_M db 0 Mon130_EvosMoves: ;GYARADOS ;Evolutions db 0 ;Learnset db 20,BITE db 25,DRAGON_RAGE db 32,LEER db 41,HYDRO_PUMP db 52,HYPER_BEAM db 0 Mon090_EvosMoves: ;SHELLDER ;Evolutions db EV_ITEM,WATER_STONE ,1,CLOYSTER db 0 ;Learnset db 18,SUPERSONIC db 23,CLAMP db 30,AURORA_BEAM db 39,LEER db 50,ICE_BEAM db 0 Mon072_EvosMoves: ;TENTACOOL ;Evolutions db EV_LEVEL,30,TENTACRUEL db 0 ;Learnset db 7,SUPERSONIC db 13,WRAP db 18,POISON_STING db 22,WATER_GUN db 27,CONSTRICT db 33,BARRIER db 40,SCREECH db 48,HYDRO_PUMP db 0 Mon092_EvosMoves: ;GASTLY ;Evolutions db EV_LEVEL,25,HAUNTER db 0 ;Learnset db 27,HYPNOSIS db 35,DREAM_EATER db 0 Mon123_EvosMoves: ;SCYTHER ;Evolutions db 0 ;Learnset db 17,LEER db 20,FOCUS_ENERGY db 24,DOUBLE_TEAM db 29,SLASH db 35,SWORDS_DANCE db 42,AGILITY db 0 Mon120_EvosMoves: ;STARYU ;Evolutions db EV_ITEM,WATER_STONE ,1,STARMIE db 0 ;Learnset db 17,WATER_GUN db 22,HARDEN db 27,RECOVER db 32,SWIFT db 37,MINIMIZE db 42,LIGHT_SCREEN db 47,HYDRO_PUMP db 0 Mon009_EvosMoves: ;BLASTOISE ;Evolutions db 0 ;Learnset db 8,BUBBLE db 15,WATER_GUN db 24,BITE db 31,WITHDRAW db 42,SKULL_BASH db 52,HYDRO_PUMP db 0 Mon127_EvosMoves: ;PINSIR ;Evolutions db 0 ;Learnset db 25,SEISMIC_TOSS db 30,GUILLOTINE db 36,FOCUS_ENERGY db 43,HARDEN db 49,SLASH db 54,SWORDS_DANCE db 0 Mon114_EvosMoves: ;TANGELA ;Evolutions db 0 ;Learnset db 29,ABSORB db 32,POISONPOWDER db 36,STUN_SPORE db 39,SLEEP_POWDER db 45,SLAM db 49,GROWTH db 0 Mon152_EvosMoves: ;MISSINGNO ;Evolutions db 0 ;Learnset db 0 Mon153_EvosMoves: ;MISSINGNO ;Evolutions db 0 ;Learnset db 0 Mon058_EvosMoves: ;GROWLITHE ;Evolutions db EV_ITEM,FIRE_STONE,1,ARCANINE db 0 ;Learnset db 18,EMBER db 23,LEER db 30,TAKE_DOWN db 39,AGILITY db 50,FLAMETHROWER db 0 Mon095_EvosMoves: ;ONIX ;Evolutions db 0 ;Learnset db 15,BIND db 19,ROCK_THROW db 25,RAGE db 33,SLAM db 43,HARDEN db 0 Mon022_EvosMoves: ;FEAROW ;Evolutions db 0 ;Learnset db 9,LEER db 15,FURY_ATTACK db 25,MIRROR_MOVE db 34,DRILL_PECK db 43,AGILITY db 0 Mon016_EvosMoves: ;PIDGEY ;Evolutions db EV_LEVEL,18,PIDGEOTTO db 0 ;Learnset db 5,SAND_ATTACK db 12,QUICK_ATTACK db 19,WHIRLWIND db 28,WING_ATTACK db 36,AGILITY db 44,MIRROR_MOVE db 0 Mon079_EvosMoves: ;SLOWPOKE ;Evolutions db EV_LEVEL,37,SLOWBRO db 0 ;Learnset db 18,DISABLE db 22,HEADBUTT db 27,GROWL db 33,WATER_GUN db 40,AMNESIA db 48,PSYCHIC_M db 0 Mon064_EvosMoves: ;KADABRA ;Evolutions db EV_TRADE,1,ALAKAZAM db 0 ;Learnset db 16,CONFUSION db 20,DISABLE db 27,PSYBEAM db 31,RECOVER db 38,PSYCHIC_M db 42,REFLECT db 0 Mon075_EvosMoves: ;GRAVELER ;Evolutions db EV_TRADE,1,GOLEM db 0 ;Learnset db 11,DEFENSE_CURL db 16,ROCK_THROW db 21,SELFDESTRUCT db 29,HARDEN db 36,EARTHQUAKE db 43,EXPLOSION db 0 Mon113_EvosMoves: ;CHANSEY ;Evolutions db 0 ;Learnset db 24,SING db 30,GROWL db 38,MINIMIZE db 44,DEFENSE_CURL db 48,LIGHT_SCREEN db 54,DOUBLE_EDGE db 0 Mon067_EvosMoves: ;MACHOKE ;Evolutions db EV_TRADE,1,MACHAMP db 0 ;Learnset db 20,LOW_KICK db 25,LEER db 36,FOCUS_ENERGY db 44,SEISMIC_TOSS db 52,SUBMISSION db 0 Mon122_EvosMoves: ;MR_MIME ;Evolutions db 0 ;Learnset db 15,CONFUSION db 23,LIGHT_SCREEN db 31,DOUBLESLAP db 39,MEDITATE db 47,SUBSTITUTE db 0 Mon106_EvosMoves: ;HITMONLEE ;Evolutions db 0 ;Learnset db 33,ROLLING_KICK db 38,JUMP_KICK db 43,FOCUS_ENERGY db 48,HI_JUMP_KICK db 53,MEGA_KICK db 0 Mon107_EvosMoves: ;HITMONCHAN ;Evolutions db 0 ;Learnset db 33,FIRE_PUNCH db 38,ICE_PUNCH db 43,THUNDERPUNCH db 48,MEGA_PUNCH db 53,COUNTER db 0 Mon024_EvosMoves: ;ARBOK ;Evolutions db 0 ;Learnset db 10,POISON_STING db 17,BITE db 27,GLARE db 36,SCREECH db 47,ACID db 0 Mon047_EvosMoves: ;PARASECT ;Evolutions db 0 ;Learnset db 13,STUN_SPORE db 20,LEECH_LIFE db 30,SPORE db 39,SLASH db 48,GROWTH db 0 Mon054_EvosMoves: ;PSYDUCK ;Evolutions db EV_LEVEL,33,GOLDUCK db 0 ;Learnset db 28,TAIL_WHIP db 31,DISABLE db 36,CONFUSION db 43,FURY_SWIPES db 52,HYDRO_PUMP db 0 Mon096_EvosMoves: ;DROWZEE ;Evolutions db EV_LEVEL,26,HYPNO db 0 ;Learnset db 12,DISABLE db 17,CONFUSION db 24,HEADBUTT db 29,POISON_GAS db 32,PSYCHIC_M db 37,MEDITATE db 0 Mon076_EvosMoves: ;GOLEM ;Evolutions db 0 ;Learnset db 11,DEFENSE_CURL db 16,ROCK_THROW db 21,SELFDESTRUCT db 29,HARDEN db 36,EARTHQUAKE db 43,EXPLOSION db 0 Mon154_EvosMoves: ;MISSINGNO ;Evolutions db 0 ;Learnset db 0 Mon126_EvosMoves: ;MAGMAR ;Evolutions db 0 ;Learnset db 36,LEER db 39,CONFUSE_RAY db 43,FIRE_PUNCH db 48,SMOKESCREEN db 52,SMOG db 55,FLAMETHROWER db 0 Mon155_EvosMoves: ;MISSINGNO ;Evolutions db 0 ;Learnset db 0 Mon125_EvosMoves: ;ELECTABUZZ ;Evolutions db 0 ;Learnset db 34,THUNDERSHOCK db 37,SCREECH db 42,THUNDERPUNCH db 49,LIGHT_SCREEN db 54,THUNDER db 0 Mon082_EvosMoves: ;MAGNETON ;Evolutions db 0 ;Learnset db 21,SONICBOOM db 25,THUNDERSHOCK db 29,SUPERSONIC db 38,THUNDER_WAVE db 46,SWIFT db 54,SCREECH db 0 Mon109_EvosMoves: ;KOFFING ;Evolutions db EV_LEVEL,35,WEEZING db 0 ;Learnset db 32,SLUDGE db 37,SMOKESCREEN db 40,SELFDESTRUCT db 45,HAZE db 48,EXPLOSION db 0 Mon156_EvosMoves: ;MISSINGNO ;Evolutions db 0 ;Learnset db 0 Mon056_EvosMoves: ;MANKEY ;Evolutions db EV_LEVEL,28,PRIMEAPE db 0 ;Learnset db 15,KARATE_CHOP db 21,FURY_SWIPES db 27,FOCUS_ENERGY db 33,SEISMIC_TOSS db 39,THRASH db 0 Mon086_EvosMoves: ;SEEL ;Evolutions db EV_LEVEL,34,DEWGONG db 0 ;Learnset db 30,GROWL db 35,AURORA_BEAM db 40,REST db 45,TAKE_DOWN db 50,ICE_BEAM db 0 Mon050_EvosMoves: ;DIGLETT ;Evolutions db EV_LEVEL,26,DUGTRIO db 0 ;Learnset db 15,GROWL db 19,DIG db 24,SAND_ATTACK db 31,SLASH db 40,EARTHQUAKE db 0 Mon128_EvosMoves: ;TAUROS ;Evolutions db 0 ;Learnset db 21,STOMP db 28,TAIL_WHIP db 35,LEER db 44,RAGE db 51,TAKE_DOWN db 0 Mon157_EvosMoves: ;MISSINGNO ;Evolutions db 0 ;Learnset db 0 Mon158_EvosMoves: ;MISSINGNO ;Evolutions db 0 ;Learnset db 0 Mon159_EvosMoves: ;MISSINGNO ;Evolutions db 0 ;Learnset db 0 Mon083_EvosMoves: ;FARFETCH_D ;Evolutions db 0 ;Learnset db 7,LEER db 15,FURY_ATTACK db 23,SWORDS_DANCE db 31,AGILITY db 39,SLASH db 0 Mon048_EvosMoves: ;VENONAT ;Evolutions db EV_LEVEL,31,VENOMOTH db 0 ;Learnset db 24,POISONPOWDER db 27,LEECH_LIFE db 30,STUN_SPORE db 35,PSYBEAM db 38,SLEEP_POWDER db 43,PSYCHIC_M db 0 Mon149_EvosMoves: ;DRAGONITE ;Evolutions db 0 ;Learnset db 10,THUNDER_WAVE db 20,AGILITY db 35,SLAM db 45,DRAGON_RAGE db 60,HYPER_BEAM db 0 Mon160_EvosMoves: ;MISSINGNO ;Evolutions db 0 ;Learnset db 0 Mon161_EvosMoves: ;MISSINGNO ;Evolutions db 0 ;Learnset db 0 Mon162_EvosMoves: ;MISSINGNO ;Evolutions db 0 ;Learnset db 0 Mon084_EvosMoves: ;DODUO ;Evolutions db EV_LEVEL,31,DODRIO db 0 ;Learnset db 20,GROWL db 24,FURY_ATTACK db 30,DRILL_PECK db 36,RAGE db 40,TRI_ATTACK db 44,AGILITY db 0 Mon060_EvosMoves: ;POLIWAG ;Evolutions db EV_LEVEL,25,POLIWHIRL db 0 ;Learnset db 16,HYPNOSIS db 19,WATER_GUN db 25,DOUBLESLAP db 31,BODY_SLAM db 38,AMNESIA db 45,HYDRO_PUMP db 0 Mon124_EvosMoves: ;JYNX ;Evolutions db 0 ;Learnset db 18,LICK db 23,DOUBLESLAP db 31,ICE_PUNCH db 39,BODY_SLAM db 47,THRASH db 58,BLIZZARD db 0 Mon146_EvosMoves: ;MOLTRES ;Evolutions db 0 ;Learnset db 51,LEER db 55,AGILITY db 60,SKY_ATTACK db 0 Mon144_EvosMoves: ;ARTICUNO ;Evolutions db 0 ;Learnset db 51,BLIZZARD db 55,AGILITY db 60,MIST db 0 Mon145_EvosMoves: ;ZAPDOS ;Evolutions db 0 ;Learnset db 51,THUNDER db 55,AGILITY db 60,LIGHT_SCREEN db 0 Mon132_EvosMoves: ;DITTO ;Evolutions db 0 ;Learnset db 0 Mon052_EvosMoves: ;MEOWTH ;Evolutions db EV_LEVEL,28,PERSIAN db 0 ;Learnset db 12,BITE db 17,PAY_DAY db 24,SCREECH db 33,FURY_SWIPES db 44,SLASH db 0 Mon098_EvosMoves: ;KRABBY ;Evolutions db EV_LEVEL,28,KINGLER db 0 ;Learnset db 20,VICEGRIP db 25,GUILLOTINE db 30,STOMP db 35,CRABHAMMER db 40,HARDEN db 0 Mon163_EvosMoves: ;MISSINGNO ;Evolutions db 0 ;Learnset db 0 Mon164_EvosMoves: ;MISSINGNO ;Evolutions db 0 ;Learnset db 0 Mon165_EvosMoves: ;MISSINGNO ;Evolutions db 0 ;Learnset db 0 Mon037_EvosMoves: ;VULPIX ;Evolutions db EV_ITEM,FIRE_STONE,1,NINETALES db 0 ;Learnset db 16,QUICK_ATTACK db 21,ROAR db 28,CONFUSE_RAY db 35,FLAMETHROWER db 42,FIRE_SPIN db 0 Mon038_EvosMoves: ;NINETALES ;Evolutions db 0 ;Learnset db 0 Mon025_EvosMoves: ;PIKACHU ;Evolutions db EV_ITEM,THUNDER_STONE ,1,RAICHU db 0 ;Learnset db 9,THUNDER_WAVE db 16,QUICK_ATTACK db 26,SWIFT db 33,AGILITY db 43,THUNDER db 0 Mon026_EvosMoves: ;RAICHU ;Evolutions db 0 ;Learnset db 0 Mon166_EvosMoves: ;MISSINGNO ;Evolutions db 0 ;Learnset db 0 Mon167_EvosMoves: ;MISSINGNO ;Evolutions db 0 ;Learnset db 0 Mon147_EvosMoves: ;DRATINI ;Evolutions db EV_LEVEL,30,DRAGONAIR db 0 ;Learnset db 10,THUNDER_WAVE db 20,AGILITY db 30,SLAM db 40,DRAGON_RAGE db 50,HYPER_BEAM db 0 Mon148_EvosMoves: ;DRAGONAIR ;Evolutions db EV_LEVEL,55,DRAGONITE db 0 ;Learnset db 10,THUNDER_WAVE db 20,AGILITY db 35,SLAM db 45,DRAGON_RAGE db 55,HYPER_BEAM db 0 Mon140_EvosMoves: ;KABUTO ;Evolutions db EV_LEVEL,40,KABUTOPS db 0 ;Learnset db 34,ABSORB db 39,SLASH db 44,LEER db 49,HYDRO_PUMP db 0 Mon141_EvosMoves: ;KABUTOPS ;Evolutions db 0 ;Learnset db 34,ABSORB db 39,SLASH db 46,LEER db 53,HYDRO_PUMP db 0 Mon116_EvosMoves: ;HORSEA ;Evolutions db EV_LEVEL,32,SEADRA db 0 ;Learnset db 19,SMOKESCREEN db 24,LEER db 30,WATER_GUN db 37,AGILITY db 45,HYDRO_PUMP db 0 Mon117_EvosMoves: ;SEADRA ;Evolutions db 0 ;Learnset db 19,SMOKESCREEN db 24,LEER db 30,WATER_GUN db 41,AGILITY db 52,HYDRO_PUMP db 0 Mon168_EvosMoves: ;MISSINGNO ;Evolutions db 0 ;Learnset db 0 Mon169_EvosMoves: ;MISSINGNO ;Evolutions db 0 ;Learnset db 0 Mon027_EvosMoves: ;SANDSHREW ;Evolutions db EV_LEVEL,22,SANDSLASH db 0 ;Learnset db 10,SAND_ATTACK db 17,SLASH db 24,POISON_STING db 31,SWIFT db 38,FURY_SWIPES db 0 Mon028_EvosMoves: ;SANDSLASH ;Evolutions db 0 ;Learnset db 10,SAND_ATTACK db 17,SLASH db 27,POISON_STING db 36,SWIFT db 47,FURY_SWIPES db 0 Mon138_EvosMoves: ;OMANYTE ;Evolutions db EV_LEVEL,40,OMASTAR db 0 ;Learnset db 34,HORN_ATTACK db 39,LEER db 46,SPIKE_CANNON db 53,HYDRO_PUMP db 0 Mon139_EvosMoves: ;OMASTAR ;Evolutions db 0 ;Learnset db 34,HORN_ATTACK db 39,LEER db 44,SPIKE_CANNON db 49,HYDRO_PUMP db 0 Mon039_EvosMoves: ;JIGGLYPUFF ;Evolutions db EV_ITEM,MOON_STONE,1,WIGGLYTUFF db 0 ;Learnset db 9,POUND db 14,DISABLE db 19,DEFENSE_CURL db 24,DOUBLESLAP db 29,REST db 34,BODY_SLAM db 39,DOUBLE_EDGE db 0 Mon040_EvosMoves: ;WIGGLYTUFF ;Evolutions db 0 ;Learnset db 0 Mon133_EvosMoves: ;EEVEE ;Evolutions db EV_ITEM,FIRE_STONE,1,FLAREON db EV_ITEM,THUNDER_STONE ,1,JOLTEON db EV_ITEM,WATER_STONE ,1,VAPOREON db 0 ;Learnset db 27,QUICK_ATTACK db 31,TAIL_WHIP db 37,BITE db 45,TAKE_DOWN db 0 Mon136_EvosMoves: ;FLAREON ;Evolutions db 0 ;Learnset db 27,QUICK_ATTACK db 31,EMBER db 37,TAIL_WHIP db 40,BITE db 42,LEER db 44,FIRE_SPIN db 48,RAGE db 54,FLAMETHROWER db 0 Mon135_EvosMoves: ;JOLTEON ;Evolutions db 0 ;Learnset db 27,QUICK_ATTACK db 31,THUNDERSHOCK db 37,TAIL_WHIP db 40,THUNDER_WAVE db 42,DOUBLE_KICK db 44,AGILITY db 48,PIN_MISSILE db 54,THUNDER db 0 Mon134_EvosMoves: ;VAPOREON ;Evolutions db 0 ;Learnset db 27,QUICK_ATTACK db 31,WATER_GUN db 37,TAIL_WHIP db 40,BITE db 42,ACID_ARMOR db 44,HAZE db 48,MIST db 54,HYDRO_PUMP db 0 Mon066_EvosMoves: ;MACHOP ;Evolutions db EV_LEVEL,28,MACHOKE db 0 ;Learnset db 20,LOW_KICK db 25,LEER db 32,FOCUS_ENERGY db 39,SEISMIC_TOSS db 46,SUBMISSION db 0 Mon041_EvosMoves: ;ZUBAT ;Evolutions db EV_LEVEL,22,GOLBAT db 0 ;Learnset db 10,SUPERSONIC db 15,BITE db 21,CONFUSE_RAY db 28,WING_ATTACK db 36,HAZE db 0 Mon023_EvosMoves: ;EKANS ;Evolutions db EV_LEVEL,22,ARBOK db 0 ;Learnset db 10,POISON_STING db 17,BITE db 24,GLARE db 31,SCREECH db 38,ACID db 0 Mon046_EvosMoves: ;PARAS ;Evolutions db EV_LEVEL,24,PARASECT db 0 ;Learnset db 13,STUN_SPORE db 20,LEECH_LIFE db 27,SPORE db 34,SLASH db 41,GROWTH db 0 Mon061_EvosMoves: ;POLIWHIRL ;Evolutions db EV_ITEM,WATER_STONE ,1,POLIWRATH db 0 ;Learnset db 16,HYPNOSIS db 19,WATER_GUN db 26,DOUBLESLAP db 33,BODY_SLAM db 41,AMNESIA db 49,HYDRO_PUMP db 0 Mon062_EvosMoves: ;POLIWRATH ;Evolutions db 0 ;Learnset db 16,HYPNOSIS db 19,WATER_GUN db 0 Mon013_EvosMoves: ;WEEDLE ;Evolutions db EV_LEVEL,7,KAKUNA db 0 ;Learnset db 0 Mon014_EvosMoves: ;KAKUNA ;Evolutions db EV_LEVEL,10,BEEDRILL db 0 ;Learnset db 0 Mon015_EvosMoves: ;BEEDRILL ;Evolutions db 0 ;Learnset db 12,FURY_ATTACK db 16,FOCUS_ENERGY db 20,TWINEEDLE db 25,RAGE db 30,PIN_MISSILE db 35,AGILITY db 0 Mon170_EvosMoves: ;MISSINGNO ;Evolutions db 0 ;Learnset db 0 Mon085_EvosMoves: ;DODRIO ;Evolutions db 0 ;Learnset db 20,GROWL db 24,FURY_ATTACK db 30,DRILL_PECK db 39,RAGE db 45,TRI_ATTACK db 51,AGILITY db 0 Mon057_EvosMoves: ;PRIMEAPE ;Evolutions db 0 ;Learnset db 15,KARATE_CHOP db 21,FURY_SWIPES db 27,FOCUS_ENERGY db 37,SEISMIC_TOSS db 46,THRASH db 0 Mon051_EvosMoves: ;DUGTRIO ;Evolutions db 0 ;Learnset db 15,GROWL db 19,DIG db 24,SAND_ATTACK db 35,SLASH db 47,EARTHQUAKE db 0 Mon049_EvosMoves: ;VENOMOTH ;Evolutions db 0 ;Learnset db 24,POISONPOWDER db 27,LEECH_LIFE db 30,STUN_SPORE db 38,PSYBEAM db 43,SLEEP_POWDER db 50,PSYCHIC_M db 0 Mon087_EvosMoves: ;DEWGONG ;Evolutions db 0 ;Learnset db 30,GROWL db 35,AURORA_BEAM db 44,REST db 50,TAKE_DOWN db 56,ICE_BEAM db 0 Mon171_EvosMoves: ;MISSINGNO ;Evolutions db 0 ;Learnset db 0 Mon172_EvosMoves: ;MISSINGNO ;Evolutions db 0 ;Learnset db 0 Mon010_EvosMoves: ;CATERPIE ;Evolutions db EV_LEVEL,7,METAPOD db 0 ;Learnset db 0 Mon011_EvosMoves: ;METAPOD ;Evolutions db EV_LEVEL,10,BUTTERFREE db 0 ;Learnset db 0 Mon012_EvosMoves: ;BUTTERFREE ;Evolutions db 0 ;Learnset db 12,CONFUSION db 15,POISONPOWDER db 16,STUN_SPORE db 17,SLEEP_POWDER db 21,SUPERSONIC db 26,WHIRLWIND db 32,PSYBEAM db 0 Mon068_EvosMoves: ;MACHAMP ;Evolutions db 0 ;Learnset db 20,LOW_KICK db 25,LEER db 36,FOCUS_ENERGY db 44,SEISMIC_TOSS db 52,SUBMISSION db 0 Mon173_EvosMoves: ;MISSINGNO ;Evolutions db 0 ;Learnset db 0 Mon055_EvosMoves: ;GOLDUCK ;Evolutions db 0 ;Learnset db 28,TAIL_WHIP db 31,DISABLE db 39,CONFUSION db 48,FURY_SWIPES db 59,HYDRO_PUMP db 0 Mon097_EvosMoves: ;HYPNO ;Evolutions db 0 ;Learnset db 12,DISABLE db 17,CONFUSION db 24,HEADBUTT db 33,POISON_GAS db 37,PSYCHIC_M db 43,MEDITATE db 0 Mon042_EvosMoves: ;GOLBAT ;Evolutions db 0 ;Learnset db 10,SUPERSONIC db 15,BITE db 21,CONFUSE_RAY db 32,WING_ATTACK db 43,HAZE db 0 Mon150_EvosMoves: ;MEWTWO ;Evolutions db 0 ;Learnset db 63,BARRIER db 66,PSYCHIC_M db 70,RECOVER db 75,MIST db 81,AMNESIA db 0 Mon143_EvosMoves: ;SNORLAX ;Evolutions db 0 ;Learnset db 35,BODY_SLAM db 41,HARDEN db 48,DOUBLE_EDGE db 56,HYPER_BEAM db 0 Mon129_EvosMoves: ;MAGIKARP ;Evolutions db EV_LEVEL,20,GYARADOS db 0 ;Learnset db 15,TACKLE db 0 Mon174_EvosMoves: ;MISSINGNO ;Evolutions db 0 ;Learnset db 0 Mon175_EvosMoves: ;MISSINGNO ;Evolutions db 0 ;Learnset db 0 Mon089_EvosMoves: ;MUK ;Evolutions db 0 ;Learnset db 30,POISON_GAS db 33,MINIMIZE db 37,SLUDGE db 45,HARDEN db 53,SCREECH db 60,ACID_ARMOR db 0 Mon176_EvosMoves: ;MISSINGNO ;Evolutions db 0 ;Learnset db 0 Mon099_EvosMoves: ;KINGLER ;Evolutions db 0 ;Learnset db 20,VICEGRIP db 25,GUILLOTINE db 34,STOMP db 42,CRABHAMMER db 49,HARDEN db 0 Mon091_EvosMoves: ;CLOYSTER ;Evolutions db 0 ;Learnset db 50,SPIKE_CANNON db 0 Mon177_EvosMoves: ;MISSINGNO ;Evolutions db 0 ;Learnset db 0 Mon101_EvosMoves: ;ELECTRODE ;Evolutions db 0 ;Learnset db 17,SONICBOOM db 22,SELFDESTRUCT db 29,LIGHT_SCREEN db 40,SWIFT db 50,EXPLOSION db 0 Mon036_EvosMoves: ;CLEFABLE ;Evolutions db 0 ;Learnset db 0 Mon110_EvosMoves: ;WEEZING ;Evolutions db 0 ;Learnset db 32,SLUDGE db 39,SMOKESCREEN db 43,SELFDESTRUCT db 49,HAZE db 53,EXPLOSION db 0 Mon053_EvosMoves: ;PERSIAN ;Evolutions db 0 ;Learnset db 12,BITE db 17,PAY_DAY db 24,SCREECH db 37,FURY_SWIPES db 51,SLASH db 0 Mon105_EvosMoves: ;MAROWAK ;Evolutions db 0 ;Learnset db 25,LEER db 33,FOCUS_ENERGY db 41,THRASH db 48,BONEMERANG db 55,RAGE db 0 Mon178_EvosMoves: ;MISSINGNO ;Evolutions db 0 ;Learnset db 0 Mon093_EvosMoves: ;HAUNTER ;Evolutions db EV_TRADE,1,GENGAR db 0 ;Learnset db 29,HYPNOSIS db 38,DREAM_EATER db 0 Mon063_EvosMoves: ;ABRA ;Evolutions db EV_LEVEL,16,KADABRA db 0 ;Learnset db 0 Mon065_EvosMoves: ;ALAKAZAM ;Evolutions db 0 ;Learnset db 16,CONFUSION db 20,DISABLE db 27,PSYBEAM db 31,RECOVER db 38,PSYCHIC_M db 42,REFLECT db 0 Mon017_EvosMoves: ;PIDGEOTTO ;Evolutions db EV_LEVEL,36,PIDGEOT db 0 ;Learnset db 5,SAND_ATTACK db 12,QUICK_ATTACK db 21,WHIRLWIND db 31,WING_ATTACK db 40,AGILITY db 49,MIRROR_MOVE db 0 Mon018_EvosMoves: ;PIDGEOT ;Evolutions db 0 ;Learnset db 5,SAND_ATTACK db 12,QUICK_ATTACK db 21,WHIRLWIND db 31,WING_ATTACK db 44,AGILITY db 54,MIRROR_MOVE db 0 Mon121_EvosMoves: ;STARMIE ;Evolutions db 0 ;Learnset db 0 Mon001_EvosMoves: ;BULBASAUR ;Evolutions db EV_LEVEL,16,IVYSAUR db 0 ;Learnset db 7,LEECH_SEED db 13,VINE_WHIP db 20,POISONPOWDER db 27,RAZOR_LEAF db 34,GROWTH db 41,SLEEP_POWDER db 48,SOLARBEAM db 0 Mon003_EvosMoves: ;VENUSAUR ;Evolutions db 0 ;Learnset db 7,LEECH_SEED db 13,VINE_WHIP db 22,POISONPOWDER db 30,RAZOR_LEAF db 43,GROWTH db 55,SLEEP_POWDER db 65,SOLARBEAM db 0 Mon073_EvosMoves: ;TENTACRUEL ;Evolutions db 0 ;Learnset db 7,SUPERSONIC db 13,WRAP db 18,POISON_STING db 22,WATER_GUN db 27,CONSTRICT db 35,BARRIER db 43,SCREECH db 50,HYDRO_PUMP db 0 Mon179_EvosMoves: ;MISSINGNO ;Evolutions db 0 ;Learnset db 0 Mon118_EvosMoves: ;GOLDEEN ;Evolutions db EV_LEVEL,33,SEAKING db 0 ;Learnset db 19,SUPERSONIC db 24,HORN_ATTACK db 30,FURY_ATTACK db 37,WATERFALL db 45,HORN_DRILL db 54,AGILITY db 0 Mon119_EvosMoves: ;SEAKING ;Evolutions db 0 ;Learnset db 19,SUPERSONIC db 24,HORN_ATTACK db 30,FURY_ATTACK db 39,WATERFALL db 48,HORN_DRILL db 54,AGILITY db 0 Mon180_EvosMoves: ;MISSINGNO ;Evolutions db 0 ;Learnset db 0 Mon181_EvosMoves: ;MISSINGNO ;Evolutions db 0 ;Learnset db 0 Mon182_EvosMoves: ;MISSINGNO ;Evolutions db 0 ;Learnset db 0 Mon183_EvosMoves: ;MISSINGNO ;Evolutions db 0 ;Learnset db 0 Mon077_EvosMoves: ;PONYTA ;Evolutions db EV_LEVEL,40,RAPIDASH db 0 ;Learnset db 30,TAIL_WHIP db 32,STOMP db 35,GROWL db 39,FIRE_SPIN db 43,TAKE_DOWN db 48,AGILITY db 0 Mon078_EvosMoves: ;RAPIDASH ;Evolutions db 0 ;Learnset db 30,TAIL_WHIP db 32,STOMP db 35,GROWL db 39,FIRE_SPIN db 47,TAKE_DOWN db 55,AGILITY db 0 Mon019_EvosMoves: ;RATTATA ;Evolutions db EV_LEVEL,20,RATICATE db 0 ;Learnset db 7,QUICK_ATTACK db 14,HYPER_FANG db 23,FOCUS_ENERGY db 34,SUPER_FANG db 0 Mon020_EvosMoves: ;RATICATE ;Evolutions db 0 ;Learnset db 7,QUICK_ATTACK db 14,HYPER_FANG db 27,FOCUS_ENERGY db 41,SUPER_FANG db 0 Mon033_EvosMoves: ;NIDORINO ;Evolutions db EV_ITEM,MOON_STONE,1,NIDOKING db 0 ;Learnset db 8,HORN_ATTACK db 14,POISON_STING db 23,FOCUS_ENERGY db 32,FURY_ATTACK db 41,HORN_DRILL db 50,DOUBLE_KICK db 0 Mon030_EvosMoves: ;NIDORINA ;Evolutions db EV_ITEM,MOON_STONE,1,NIDOQUEEN db 0 ;Learnset db 8,SCRATCH db 14,POISON_STING db 23,TAIL_WHIP db 32,BITE db 41,FURY_SWIPES db 50,DOUBLE_KICK db 0 Mon074_EvosMoves: ;GEODUDE ;Evolutions db EV_LEVEL,25,GRAVELER db 0 ;Learnset db 11,DEFENSE_CURL db 16,ROCK_THROW db 21,SELFDESTRUCT db 26,HARDEN db 31,EARTHQUAKE db 36,EXPLOSION db 0 Mon137_EvosMoves: ;PORYGON ;Evolutions db 0 ;Learnset db 23,PSYBEAM db 28,RECOVER db 35,AGILITY db 42,TRI_ATTACK db 0 Mon142_EvosMoves: ;AERODACTYL ;Evolutions db 0 ;Learnset db 33,SUPERSONIC db 38,BITE db 45,TAKE_DOWN db 54,HYPER_BEAM db 0 Mon184_EvosMoves: ;MISSINGNO ;Evolutions db 0 ;Learnset db 0 Mon081_EvosMoves: ;MAGNEMITE ;Evolutions db EV_LEVEL,30,MAGNETON db 0 ;Learnset db 21,SONICBOOM db 25,THUNDERSHOCK db 29,SUPERSONIC db 35,THUNDER_WAVE db 41,SWIFT db 47,SCREECH db 0 Mon185_EvosMoves: ;MISSINGNO ;Evolutions db 0 ;Learnset db 0 Mon186_EvosMoves: ;MISSINGNO ;Evolutions db 0 ;Learnset db 0 Mon004_EvosMoves: ;CHARMANDER ;Evolutions db EV_LEVEL,16,CHARMELEON db 0 ;Learnset db 9,EMBER db 15,LEER db 22,RAGE db 30,SLASH db 38,FLAMETHROWER db 46,FIRE_SPIN db 0 Mon007_EvosMoves: ;SQUIRTLE ;Evolutions db EV_LEVEL,16,WARTORTLE db 0 ;Learnset db 8,BUBBLE db 15,WATER_GUN db 22,BITE db 28,WITHDRAW db 35,SKULL_BASH db 42,HYDRO_PUMP db 0 Mon005_EvosMoves: ;CHARMELEON ;Evolutions db EV_LEVEL,36,CHARIZARD db 0 ;Learnset db 9,EMBER db 15,LEER db 24,RAGE db 33,SLASH db 42,FLAMETHROWER db 56,FIRE_SPIN db 0 Mon008_EvosMoves: ;WARTORTLE ;Evolutions db EV_LEVEL,36,BLASTOISE db 0 ;Learnset db 8,BUBBLE db 15,WATER_GUN db 24,BITE db 31,WITHDRAW db 39,SKULL_BASH db 47,HYDRO_PUMP db 0 Mon006_EvosMoves: ;CHARIZARD ;Evolutions db 0 ;Learnset db 9,EMBER db 15,LEER db 24,RAGE db 36,SLASH db 46,FLAMETHROWER db 55,FIRE_SPIN db 0 Mon187_EvosMoves: ;MISSINGNO ;Evolutions db 0 ;Learnset db 0 Mon188_EvosMoves: ;MISSINGNO ;Evolutions db 0 ;Learnset db 0 Mon189_EvosMoves: ;MISSINGNO ;Evolutions db 0 ;Learnset db 0 Mon190_EvosMoves: ;MISSINGNO ;Evolutions db 0 ;Learnset db 0 Mon043_EvosMoves: ;ODDISH ;Evolutions db EV_LEVEL,21,GLOOM db 0 ;Learnset db 15,POISONPOWDER db 17,STUN_SPORE db 19,SLEEP_POWDER db 24,ACID db 33,PETAL_DANCE db 46,SOLARBEAM db 0 Mon044_EvosMoves: ;GLOOM ;Evolutions db EV_ITEM,LEAF_STONE ,1,VILEPLUME db 0 ;Learnset db 15,POISONPOWDER db 17,STUN_SPORE db 19,SLEEP_POWDER db 28,ACID db 38,PETAL_DANCE db 52,SOLARBEAM db 0 Mon045_EvosMoves: ;VILEPLUME ;Evolutions db 0 ;Learnset db 15,POISONPOWDER db 17,STUN_SPORE db 19,SLEEP_POWDER db 0 Mon069_EvosMoves: ;BELLSPROUT ;Evolutions db EV_LEVEL,21,WEEPINBELL db 0 ;Learnset db 13,WRAP db 15,POISONPOWDER db 18,SLEEP_POWDER db 21,STUN_SPORE db 26,ACID db 33,RAZOR_LEAF db 42,SLAM db 0 Mon070_EvosMoves: ;WEEPINBELL ;Evolutions db EV_ITEM,LEAF_STONE ,1,VICTREEBEL db 0 ;Learnset db 13,WRAP db 15,POISONPOWDER db 18,SLEEP_POWDER db 23,STUN_SPORE db 29,ACID db 38,RAZOR_LEAF db 49,SLAM db 0 Mon071_EvosMoves: ;VICTREEBEL ;Evolutions db 0 ;Learnset db 13,WRAP db 15,POISONPOWDER db 18,SLEEP_POWDER db 0 INCBIN "baserom.gbc",$3b9ec,$3baa2 - $3b9ec UnnamedText_3baa2: ; 0x3baa2 TX_FAR _UnnamedText_3baa2 db $50 ; 0x3baa2 + 5 bytes UnnamedText_3baa7: ; 0x3baa7 TX_FAR _UnnamedText_3baa7 db $50 ; 0x3baa7 + 5 bytes UnnamedText_3baac: ; 0x3baac TX_FAR _UnnamedText_3baac db $50 ; 0x3baac + 5 bytes INCBIN "baserom.gbc",$3bab1,$3bb92 - $3bab1 UnnamedText_3bb92: ; 0x3bb92 TX_FAR _UnnamedText_3bb92 db $50 ; 0x3bb92 + 5 bytes INCBIN "baserom.gbc",$3bb97,$3bbd7 - $3bb97 UnnamedText_3bbd7: ; 0x3bbd7 TX_FAR _UnnamedText_3bbd7 db $50 ; 0x3bbd7 + 5 bytes UnnamedText_3bbdc: ; 0x3bbdc TX_FAR _UnnamedText_3bbdc db $50 ; 0x3bbdc + 5 bytes Unnamed_3bbe1: ; 0x3bbe1 db $6, $f, $c3, $d6, $35 SECTION "bankF",DATA,BANK[$F] ; These are move effects (second value from the Moves table in bank $E). EffectsArray1: ; 4000 db $18,$19,$1C,$2E,$2F,$31,$38,$39,$40,$41,$42,$43,$4F,$52,$54,$55,$FF EffectsArray2: ; 4011 ; moves that do damage but not through normal calculations ; e.g., Super Fang, Psywave db $28,$29,$FF EffectsArray3: ; 4014 ; non-damaging, stat‐affecting or status‐causing moves? ; e.g., Meditate, Bide, Hypnosis db $01,$0A,$0B,$0C,$0D,$0E,$0F,$12,$13,$14,$15,$16,$17,$1A,$20,$32,$33,$34,$35,$36,$37,$3A,$3B,$3C,$3D,$3E,$3F,$FF EffectsArray4: ; 4030 db $03,$07,$08,$10,$1D,$1E,$2C,$30,$4D,$51,$FF EffectsArray5: ; 403B db $03,$07,$08,$10,$11,$1D,$1E,$27,$28,$29,$2B,$2C,$2D,$30 ; fallthru EffectsArray5B: ; 4049 ; moves that prevent the player from switching moves? db $1B,$2A,$FF INCBIN "baserom.gbc",$3c04c,$3c1a8 - $3c04c UnnamedText_3c1a8: ; 0x3c1a8 TX_FAR _UnnamedText_3c1a8 db $50 ; 0x3c1a8 + 5 bytes INCBIN "baserom.gbc",$3c1ad,$3c229 - $3c1ad UnnamedText_3c229: ; 0x3c229 TX_FAR _UnnamedText_3c229 db $50 ; 0x3c229 + 5 bytes UnnamedText_3c22e: ; 0x3c22e TX_FAR _UnnamedText_3c22e db $50 ; 0x3c22e + 5 bytes INCBIN "baserom.gbc",$3c233,$3c42e - $3c233 UnnamedText_3c42e: ; 0x3c42e TX_FAR _UnnamedText_3c42e db $50 ; 0x3c42e + 5 bytes UnnamedText_3c433: ; 0x3c433 TX_FAR _UnnamedText_3c433 db $50 ; 0x3c433 + 5 bytes UnnamedText_3c438: ; 0x3c438 TX_FAR _UnnamedText_3c438 db $50 ; 0x3c438 + 5 bytes INCBIN "baserom.gbc",$3c43d,$3c63e - $3c43d UnnamedText_3c63e: ; 0x3c63e TX_FAR _UnnamedText_3c63e db $50 ; 0x3c63e + 5 bytes INCBIN "baserom.gbc",$3c643,$3c6e4 - $3c643 UnnamedText_3c6e4: ; 0x3c6e4 TX_FAR _UnnamedText_3c6e4 db $50 ; 0x3c6e4 + 5 bytes UnnamedText_3c6e9: ; 0x3c6e9 TX_FAR _UnnamedText_3c6e9 db $50 ; 0x3c6e9 + 5 bytes INCBIN "baserom.gbc",$3c6ee,$3c796 - $3c6ee UnnamedText_3c796: ; 0x3c796 TX_FAR _UnnamedText_3c796 db $50 ; 0x3c796 + 5 bytes INCBIN "baserom.gbc",$3c79b,$3c7d3 - $3c79b UnnamedText_3c7d3: ; 0x3c7d3 TX_FAR _UnnamedText_3c7d3 db $50 ; 0x3c7d3 + 5 bytes INCBIN "baserom.gbc",$3c7d8,$3c884 - $3c7d8 UnnamedText_3c884: ; 0x3c884 TX_FAR _UnnamedText_3c884 db $50 ; 0x3c884 + 5 bytes UnnamedText_3c889: ; 0x3c889 TX_FAR _UnnamedText_3c889 db $50 ; 0x3c889 + 5 bytes UnnamedText_3c88e: ; 0x3c88e TX_FAR _UnnamedText_3c88e db $50 ; 0x3c88e + 5 bytes INCBIN "baserom.gbc",$3c893,$7b ; XXX this needs cleaning up. it's what runs when a juggler switches pokemon EnemySendOut: ; 490E ld hl,$D058 xor a ld [hl],a ld a,[$CC2F] ld c,a ld b,1 push bc ld a,$10 call Predef ld hl,$CCF5 xor a ld [hl],a pop bc ld a,$10 call Predef xor a ld hl,$D065 ld [hli],a ld [hli],a ld [hli],a ld [hli],a ld [hl],a ld [$D072],a ld [$CCEF],a ld [$CCF3],a ld hl,$CCF1 ld [hli],a ld [hl],a dec a ld [W_AICOUNT],a ld hl,W_PLAYERBATTSTATUS1 res 5,[hl] ld hl,$C3B2 ld a,8 call $48DF call $6E94 call $3719 ld a,[$D12B] cp 4 jr nz,.next\@ ld a,[$CC3E] sub 4 ld [$CF92],a jr .next3\@ .next\@ ld b,$FF .next2\@ inc b ld a,[$CFE8] cp b jr z,.next2\@ ld hl,$D8A4 ld a,b ld [$CF92],a push bc ld bc,$2C call AddNTimes pop bc inc hl ld a,[hli] ld c,a ld a,[hl] or c jr z,.next2\@ .next3\@ ld a,[$CF92] ld hl,$D8C5 ld bc,$2C call AddNTimes ld a,[hl] ld [$D127],a ld a,[$CF92] inc a ld hl,$D89C ld c,a ld b,0 add hl,bc ld a,[hl] ld [$CFD8],a ld [$CF91],a call $6B01 ld hl,$CFE6 ld a,[hli] ld [$CCE3],a ld a,[hl] ld [$CCE4],a ld a,1 ld [$CC26],a ld a,[$D11D] dec a jr z,.next4\@ ld a,[W_NUMINPARTY] dec a jr z,.next4\@ ld a,[$D12B] cp 4 jr z,.next4\@ ld a,[$D355] bit 6,a jr nz,.next4\@ ld hl, TrainerAboutToUseText call PrintText ld hl,$C42C ld bc,$0801 ld a,$14 ld [$D125],a call DisplayTextBoxID ld a,[$CC26] and a jr nz,.next4\@ ld a,2 ld [$D07D],a call $13FC .next9\@ ld a,1 ld [$CC26],a jr c,.next7\@ ld hl,$CC2F ld a,[$CF92] cp [hl] jr nz,.next6\@ ld hl,$51F5 call PrintText .next8\@ call $1411 jr .next9\@ .next6\@ call $4A97 jr z,.next8\@ xor a ld [$CC26],a .next7\@ call $3DE5 call $6E5B call $3725 .next4\@ call $0082 ld hl,$C3A0 ld bc,$040B call ClearScreenArea ld b,1 call GoPAL_SET call GBPalNormal ld hl,TrainerSentOutText call PrintText ld a,[$CFD8] ld [$CF91],a ld [$D0B5],a call $1537 ld de,$9000 call $1665 ld a,$CF ld [$FFE1],a ld hl,$C427 ld a,2 call Predef ld a,[$CFD8] call $13D0 call $4DEC ld a,[$CC26] and a ret nz xor a ld [$D058],a ld [$CCF5],a call $3719 jp $51BA TrainerAboutToUseText: ; 0x3ca79 TX_FAR _TrainerAboutToUseText db "@" TrainerSentOutText: ; 0x3ca7e TX_FAR _TrainerSentOutText db "@" INCBIN "baserom.gbc",$3ca83,$3cab4 - $3ca83 UnnamedText_3cab4: ; 0x3cab4 TX_FAR _UnnamedText_3cab4 db $50 ; 0x3cab4 + 5 bytes INCBIN "baserom.gbc",$3cab9,$3cb97 - $3cab9 UnnamedText_3cb97: ; 0x3cb97 TX_FAR _UnnamedText_3cb97 db $50 ; 0x3cb97 + 5 bytes UnnamedText_3cb9c: ; 0x3cb9c TX_FAR _UnnamedText_3cb9c db $50 ; 0x3cb9c + 5 bytes UnnamedText_3cba1: ; 0x3cba1 TX_FAR _UnnamedText_3cba1 db $50 ; 0x3cba1 + 5 bytes INCBIN "baserom.gbc",$3cba6,$3d0c5 - $3cba6 UnnamedText_3d0c5: ; 0x3d0c5 TX_FAR _UnnamedText_3d0c5 db $50 ; 0x3d0c5 + 5 bytes INCBIN "baserom.gbc",$3d0ca,$3d1f5 - $3d0ca UnnamedText_3d1f5: ; 0x3d1f5 TX_FAR _UnnamedText_3d1f5 db $50 ; 0x3d1f5 + 5 bytes INCBIN "baserom.gbc",$3d1fa,$3d3ae - $3d1fa UnnamedText_3d3ae: ; 0x3d3ae TX_FAR _UnnamedText_3d3ae db $50 ; 0x3d3ae + 5 bytes UnnamedText_3d3b3: ; 0x3d3b3 TX_FAR _UnnamedText_3d3b3 db $50 ; 0x3d3b3 + 5 bytes INCBIN "baserom.gbc",$3d3b8,$3d430 - $3d3b8 UnnamedText_3d430: ; 0x3d430 TX_FAR _UnnamedText_3d430 db $50 ; 0x3d430 + 5 bytes INCBIN "baserom.gbc",$3d435,$274 ; in-battle stuff ld hl,W_PLAYERBATTSTATUS1 res 4,[hl] res 6,[hl] call $5AF5 ld hl,DecrementPP ld de,$CCDC ; pointer to the move just used ld b,BANK(DecrementPP) call Bankswitch ld a,[W_PLAYERMOVEEFFECT] ; effect of the move just used ld hl,EffectsArray1 ld de,1 call IsInArray jp c,$7132 ld a,[W_PLAYERMOVEEFFECT] ld hl,EffectsArray5B ld de,1 call IsInArray call c,$7132 ld a,[W_PLAYERMOVEEFFECT] ld hl,EffectsArray2 ld de,1 call IsInArray jp c,$5702 call $6023 call $6093 jr z,.next11\@ call $5DCF call $5F65 jp z,$574B call $63A5 call $6687 call $656B .next11\@ ld a,[W_MOVEMISSED] and a jr z,.next\@ ld a,[W_PLAYERMOVEEFFECT] sub a,7 jr z,.next2\@ jr .next3\@ ; 574B .next\@ ld a,[W_PLAYERMOVEEFFECT] and a ld a,4 jr z,.next2\@ ld a,5 .next2\@ push af ld a,[W_PLAYERBATTSTATUS2] bit 4,a ld hl,$5747 ld b,$1E call nz,Bankswitch pop af ld [$CC5B],a ld a,[W_PLAYERMOVENUM] call $6F07 call $6ED3 call $4D60 ld a,[W_PLAYERBATTSTATUS2] bit 4,a ld hl,$5771 ld b,$1E call nz,Bankswitch jr .next4\@ .next3\@ ld c,$1E call $3739 ld a,[W_PLAYERMOVEEFFECT] cp a,$2B jr z,.next5\@ cp a,$27 ; XXX SLP | FRZ ? jr z,.next5\@ jr .next4\@ .next5\@ xor a ld [$CC5B],a ld a,$A7 call $6F07 .next4\@ ld a,[W_PLAYERMOVEEFFECT] cp a,9 jr nz,.next6\@ ; 577A call $62FD jp z,Function580A xor a ld [$CCED],a jp $569A .next6\@ cp a,$53 jr nz,.next7\@ ; 5784 call $6348 jp $569A .next7\@ ld a,[W_PLAYERMOVEEFFECT] ld hl,EffectsArray3 ld de,1 call IsInArray jp c,$7132 ld a,[W_MOVEMISSED] and a jr z,.next8\@ ; 57A6 call $5BE2 ld a,[W_PLAYERMOVEEFFECT] cp a,7 jr z,.next9\@ ; 57B9 jp Function580A .next8\@ call $60DF call $5C5C ld hl,$7B7B ; MyFunction ld b,$B ; BANK(MyFunction) call Bankswitch ld a,1 ld [$CCF4],a .next9\@ ld a,[W_PLAYERMOVEEFFECT] ld hl,EffectsArray4 ld de,1 call IsInArray call c,$7132 ld hl,$CFE6 ld a,[hli] ld b,[hl] or b ret z call $62B6 ld hl,W_PLAYERBATTSTATUS1 bit 2,[hl] jr z,.next10\@ ; 57EF ld a,[$D06A] dec a ld [$D06A],a jp nz,$5714 res 2,[hl] ld hl,MultiHitText call PrintText xor a ld [W_NUMHITS],a ; reset .next10\@ ld a,[W_PLAYERMOVEEFFECT] and a jp z,Function580A ld hl,EffectsArray5 ld de,1 call IsInArray call nc,$7132 jp Function580A MultiHitText: ; 0x3d805 TX_FAR _MultiHitText db "@" Function580A: ; 0x3d80a 580A xor a ld [$CD6A],a ld b,1 ret Function5811: ; 0x3d811 5811 ; print the ghost battle messages call $583A ret nz ld a,[H_WHOSETURN] and a jr nz,.Ghost\@ ld a,[W_PLAYERMONSTATUS] ; player’s turn and a,SLP | FRZ ret nz ld hl,ScaredText call PrintText xor a ret .Ghost\@ ; ghost’s turn ld hl,GetOutText call PrintText xor a ret ScaredText: ; 0x3d830 TX_FAR _ScaredText db "@" GetOutText: ; 0x3d835 TX_FAR _GetOutText db "@" Function583A: ; 0x3d83a 583A ld a,[W_ISINBATTLE] dec a ret nz ld a,[W_CURMAP] cp a,$8E ; Lavender Town jr c,.next\@ cp a,$95 ; Pokémon Tower jr nc,.next\@ ld b,SILPH_SCOPE call IsItemInBag ; $3493 ret z .next\@ ld a,1 and a ret Function5854: ; 5854 ld hl,W_PLAYERMONSTATUS ld a,[hl] and a,SLP jr z,.FrozenCheck\@ ; to 5884 dec a ld [W_PLAYERMONSTATUS],a ; decrement sleep count and a jr z,.WakeUp\@ ; to 5874 xor a ld [$CC5B],a ld a,SLP_ANIM - 1 call $6F07 ld hl,FastAsleepText call PrintText jr .sleepDone\@ .WakeUp\@ ld hl,WokeUpText call PrintText .sleepDone\@ xor a ld [$CCF1],a ld hl,Function580A jp $5A37 .FrozenCheck\@ bit 5,[hl] ; frozen? jr z,.HeldInPlaceCheck\@ ; to 5898 ld hl,FrozenText call PrintText xor a ld [$CCF1],a ld hl,Function580A jp $5A37 .HeldInPlaceCheck\@ ld a,[W_ENEMYBATTSTATUS1] bit 5,a jp z,FlinchedCheck ld hl,CantMoveText call PrintText ld hl,Function580A jp $5A37 FlinchedCheck: ; 58AC ld hl,W_PLAYERBATTSTATUS1 bit 3,[hl] jp z,HyperBeamCheck res 3,[hl] ld hl,FlinchedText call PrintText ld hl,Function580A jp $5A37 HyperBeamCheck: ; 58C2 ld hl,W_PLAYERBATTSTATUS2 bit 5,[hl] jr z,.next\@ ; 58D7 res 5,[hl] ld hl,MustRechargeText call PrintText ld hl,$580A jp $5A37 .next\@ ld hl,$D06D ld a,[hl] and a jr z,.next2\@ ; 58EE dec a ld [hl],a and a,$F jr nz,.next2\@ ld [hl],a ld [$CCEE],a ld hl,DisabledNoMoreText call PrintText .next2\@ ld a,[W_PLAYERBATTSTATUS1] add a jr nc,.next3\@ ; 5929 ld hl,$D06B dec [hl] jr nz,.next4\@ ; 5907 ld hl,W_PLAYERBATTSTATUS1 res 7,[hl] ld hl,ConfusedNoMoreText call PrintText jr .next3\@ .next4\@ ld hl,IsConfusedText call PrintText xor a ld [$CC5B],a ld a,CONF_ANIM - 1 call $6F07 call $6E9B cp a,$80 jr c,.next3\@ ld hl,W_PLAYERBATTSTATUS1 ld a,[hl] and a,$80 ld [hl],a call $5AAD jr .next5\@ ; 5952 .next3\@ ld a,[$CCEE] and a jr z,.ParalysisCheck\@ ; 593E ld hl,$CCDC cp [hl] jr nz,.ParalysisCheck\@ call $5A88 ld hl,$580A jp $5A37 .ParalysisCheck\@ ld hl,W_PLAYERMONSTATUS bit 6,[hl] jr z,.next7\@ ; 5975 call $6E9B ; random number? cp a,$3F jr nc,.next7\@ ld hl,FullyParalyzedText call PrintText .next5\@ ld hl,W_PLAYERBATTSTATUS1 ld a,[hl] and a,$CC ld [hl],a ld a,[W_PLAYERMOVEEFFECT] cp a,$2B jr z,.next8\@ ; 5966 cp a,$27 jr z,.next8\@ jr .next9\@ ; 596F .next8\@ xor a ld [$CC5B],a ld a,$A7 call $6F07 .next9\@ ld hl,$580A jp $5A37 .next7\@ ld hl,W_PLAYERBATTSTATUS1 bit 0,[hl] jr z,.next10\@ ; 59D0 xor a ld [W_PLAYERMOVENUM],a ld hl,$D0D7 ld a,[hli] ld b,a ld c,[hl] ld hl,$D075 ld a,[hl] add c ld [hld],a ld a,[hl] adc b ld [hl],a ld hl,$D06A dec [hl] jr z,.next11\@ ; 599B ld hl,$580A jp $5A37 .next11\@ ld hl,W_PLAYERBATTSTATUS1 res 0,[hl] ld hl,UnleashedEnergyText call PrintText ld a,1 ld [$CFD4],a ld hl,$D075 ld a,[hld] add a ld b,a ld [$D0D8],a ld a,[hl] rl a ld [$D0D7],a or b jr nz,.next12\@ ; 59C2 ld a,1 ld [W_MOVEMISSED],a .next12\@ xor a ld [hli],a ld [hl],a ld a,$75 ld [W_PLAYERMOVENUM],a ld hl,$5705 jp $5A37 .next10\@ bit 1,[hl] jr z,.next13\@ ; 59FF ld a,$25 ld [W_PLAYERMOVENUM],a ld hl,ThrashingAboutText call PrintText ld hl,$D06A dec [hl] ld hl,$56DC jp nz,$5A37 push hl ld hl,W_PLAYERBATTSTATUS1 res 1,[hl] set 7,[hl] call $6E9B ; random number? and a,3 inc a inc a ld [$D06B],a pop hl jp $5A37 .next13\@ bit 5,[hl] jp z,$5A1A ld hl,AttackContinuesText call PrintText ld a,[$D06A] dec a ld [$D06A],a ld hl,$5714 jp nz,$5A37 jp $5A37 INCBIN "baserom.gbc",$3DA1A,$3DA3D - $3DA1A FastAsleepText: TX_FAR _FastAsleepText db "@" WokeUpText: TX_FAR _WokeUpText db "@" FrozenText: TX_FAR _FrozenText db "@" FullyParalyzedText: TX_FAR _FullyParalyzedText db "@" FlinchedText: TX_FAR _FlinchedText db "@" MustRechargeText: TX_FAR _MustRechargeText db "@" DisabledNoMoreText: TX_FAR _DisabledNoMoreText db "@" IsConfusedText: TX_FAR _IsConfusedText db "@" HurtItselfText: TX_FAR _HurtItselfText db "@" ConfusedNoMoreText: TX_FAR _ConfusedNoMoreText db "@" SavingEnergyText: TX_FAR _SavingEnergyText db "@" UnleashedEnergyText: TX_FAR _UnleashedEnergyText db "@" ThrashingAboutText: TX_FAR _ThrashingAboutText db "@" AttackContinuesText: TX_FAR _AttackContinuesText db "@" CantMoveText: TX_FAR _CantMoveText db "@" INCBIN "baserom.gbc",$3da88,$3daa8 - $3da88 UnnamedText_3daa8: ; 0x3daa8 TX_FAR _UnnamedText_3daa8 db $50 ; 0x3daa8 + 5 bytes INCBIN "baserom.gbc",$3daad,$3db6c - $3daad UnnamedText_3db6c: ; 0x3db6c TX_FAR _UnnamedText_3db6c db $50 ; 0x3db6c + 5 bytes UnnamedText_3db71: ; 0x3db71 TX_FAR _UnnamedText_3db71 db $50 ; 0x3db71 + 5 bytes UnnamedText_3db76: ; 0x3db76 TX_FAR _UnnamedText_3db76 db $50 ; 0x3db76 + 5 bytes UnnamedText_3db7b: ; 0x3db7b TX_FAR _UnnamedText_3db7b db $50 ; 0x3db7b + 5 bytes UnnamedText_3db80: ; 0x3db80 TX_FAR _UnnamedText_3db80 db $50 ; 0x3db80 + 5 bytes INCBIN "baserom.gbc",$3db85,$3dc42 - $3db85 UnnamedText_3dc42: ; 0x3dc42 TX_FAR _UnnamedText_3dc42 db $50 ; 0x3dc42 + 5 bytes UnnamedText_3dc47: ; 0x3dc47 TX_FAR _UnnamedText_3dc47 db $50 ; 0x3dc47 + 5 bytes UnnamedText_3dc4c: ; 0x3dc4c TX_FAR _UnnamedText_3dc4c db $50 ; 0x3dc4c + 5 bytes INCBIN "baserom.gbc",$3dc51,$3dc57 - $3dc51 UnnamedText_3dc57: ; 0x3dc57 TX_FAR _UnnamedText_3dc57 db $50 ; 0x3dc57 + 5 bytes INCBIN "baserom.gbc",$3dc5c,$3dc7e - $3dc5c UnnamedText_3dc7e: ; 0x3dc7e TX_FAR _UnnamedText_3dc7e db $50 ; 0x3dc7e + 5 bytes UnnamedText_3dc83: ; 0x3dc83 TX_FAR _UnnamedText_3dc83 db $50 ; 0x3dc83 + 5 bytes INCBIN "baserom.gbc",$3dc88,$3ddb6 - $3dc88 UnnamedText_3ddb6: ; 0x3ddb6 TX_FAR _UnnamedText_3ddb6 db $50 ; 0x3ddb6 + 5 bytes UnnamedText_3ddbb: ; 0x3ddbb TX_FAR _UnnamedText_3ddbb db $50 ; 0x3ddbb + 5 bytes UnnamedText_3ddc0: ; 0x3ddc0 TX_FAR _UnnamedText_3ddc0 db $50 ; 0x3ddc0 + 5 bytes UnnamedText_3ddc5: ; 0x3ddc5 TX_FAR _UnnamedText_3ddc5 db $50 ; 0x3ddc5 + 5 bytes UnnamedText_3ddca: ; 0x3ddca TX_FAR _UnnamedText_3ddca db $50 ; 0x3ddca + 5 bytes INCBIN "baserom.gbc",$3ddcf,$3e04f - $3ddcf ; azure heights claims "the fastest pokémon (who are,not coincidentally, ; among the most popular) tend to CH about 20 to 25% of the time." CriticalHitProbability: ; 0x3e04f ld a, [hld] ; read base power from RAM and a ret z ; do nothing if zero dec hl ld c, [hl] ; read move id ld a, [de] bit 2, a jr nz, .asm_3e061 sla b jr nc, .asm_3e063 ld b, $ff jr .asm_3e063 .asm_3e061 srl b .asm_3e063 ld hl, HighCriticalMoves ; table of high critical hit moves .Loop ld a, [hli] ; read move from move table cp c ; does it match the move about to be used? jr z, .HighCritical ; if so, the move about to be used is a high critical hit ratio move inc a ; move on to the next move, FF terminates loop jr nz, .Loop ; check the next move in HighCriticalMoves srl b ; /2 for regular move (effective 1/512?) jr .SkipHighCritical ; continue as a normal move .HighCritical sla b ; *2 for high critical hit moves jr nc, .asm_3e077 ld b, $ff ; set to FF (max) on overflow .asm_3e077 sla b ; *4 for high critical move (effective 1/64?) jr nc, .SkipHighCritical ld b, $ff .SkipHighCritical call $6e9b ; probably generates a random value, in "a" rlc a rlc a rlc a cp b ; check a against $ff ret nc ; no critical hit if no borrow ld a, $1 ld [$d05e], a ; set critical hit flag ret ; 0x3e08e ; high critical hit moves HighCriticalMoves: ; 0x3e08e db KARATE_CHOP db RAZOR_LEAF db CRABHAMMER db SLASH db $FF ; 0x3e093 ; function to determine if Counter hits and if so, how much damage it does HandleCounterMove: ; 6093 ld a,[H_WHOSETURN] ; whose turn and a ; player's turn ld hl,W_ENEMYSELECTEDMOVE ld de,W_ENEMYMOVEPOWER ld a,[W_PLAYERSELECTEDMOVE] jr z,.next\@ ; enemy's turn ld hl,W_PLAYERSELECTEDMOVE ld de,W_PLAYERMOVEPOWER ld a,[W_ENEMYSELECTEDMOVE] .next\@ cp a,COUNTER ret nz ; return if not using Counter ld a,$01 ld [W_MOVEMISSED],a ; initialize the move missed variable to true (it is set to false below if the move hits) ld a,[hl] cp a,COUNTER ret z ; if the target also used Counter, miss ld a,[de] and a ret z ; if the move the target used has 0 power, miss ; check if the move the target used was Normal or Fighting type inc de ld a,[de] and a ; normal type jr z,.counterableType\@ cp a,FIGHTING jr z,.counterableType\@ ; if the move wasn't Normal or Fighting type, miss xor a ret .counterableType\@ ld hl,W_DAMAGE ld a,[hli] or [hl] ret z ; Counter misses if the target did no damage to the Counter user ; double the damage that the target did to the Counter user ld a,[hl] add a ldd [hl],a ld a,[hl] adc a ld [hl],a jr nc,.noCarry\@ ; damage is capped at 0xFFFF ld a,$ff ld [hli],a ld [hl],a .noCarry\@ xor a ld [W_MOVEMISSED],a call MoveHitTest ; do the normal move hit test in addition to Counter's special rules xor a ret ApplyDamageToEnemyPokemon: ; 60DF ld a,[W_PLAYERMOVEEFFECT] cp a,OHKO_EFFECT jr z,.applyDamage\@ cp a,SUPER_FANG_EFFECT jr z,.superFangEffect\@ cp a,SPECIAL_DAMAGE_EFFECT jr z,.specialDamage\@ ld a,[W_PLAYERMOVEPOWER] and a jp z,.done\@ jr .applyDamage\@ .superFangEffect\@ ; set the damage to half the target's HP ld hl,W_ENEMYMONCURHP ld de,W_DAMAGE ld a,[hli] srl a ld [de],a inc de ld b,a ld a,[hl] rr a ld [de],a or b jr nz,.applyDamage\@ ; make sure Super Fang's damage is always at least 1 ld a,$01 ld [de],a jr .applyDamage\@ .specialDamage\@ ld hl,W_PLAYERMONLEVEL ld a,[hl] ld b,a ld a,[W_PLAYERMOVENUM] cp a,SEISMIC_TOSS jr z,.storeDamage\@ cp a,NIGHT_SHADE jr z,.storeDamage\@ ld b,SONICBOOM_DAMAGE cp a,SONICBOOM jr z,.storeDamage\@ ld b,DRAGON_RAGE_DAMAGE cp a,DRAGON_RAGE jr z,.storeDamage\@ ; Psywave ld a,[hl] ld b,a srl a add b ld b,a ; b = level * 1.5 ; loop until a random number in the range [1, b) is found .loop\@ call $6e9b ; random number and a jr z,.loop\@ cp b jr nc,.loop\@ ld b,a .storeDamage\@ ld hl,W_DAMAGE xor a ld [hli],a ld a,b ld [hl],a .applyDamage\@ ld hl,W_DAMAGE ld a,[hli] ld b,a ld a,[hl] or b jr z,.done\@ ; we're done if damage is 0 ld a,[W_ENEMYBATTSTATUS2] bit 4,a ; does the enemy have a substitute? jp nz,AttackSubstitute ; subtract the damage from the pokemon's current HP ; also, save the current HP at $CEEB ld a,[hld] ld b,a ld a,[W_ENEMYMONCURHP + 1] ld [$ceeb],a sub b ld [W_ENEMYMONCURHP + 1],a ld a,[hl] ld b,a ld a,[W_ENEMYMONCURHP] ld [$ceec],a sbc b ld [W_ENEMYMONCURHP],a jr nc,.animateHpBar\@ ; if more damage was done than the current HP, zero the HP and set the damage ; equal to how much HP the pokemon had before the attack ld a,[$ceec] ld [hli],a ld a,[$ceeb] ld [hl],a xor a ld hl,W_ENEMYMONCURHP ld [hli],a ld [hl],a .animateHpBar\@ ld hl,W_ENEMYMONMAXHP ld a,[hli] ld [$ceea],a ld a,[hl] ld [$cee9],a ld hl,W_ENEMYMONCURHP ld a,[hli] ld [$ceee],a ld a,[hl] ld [$ceed],a ld hl,$c3ca xor a ld [$cf94],a ld a,$48 call Predef ; animate the HP bar shortening .done\@ jp $4d5a ; redraw pokemon names and HP bars ApplyDamageToPlayerPokemon: ; 61A0 ld a,[W_ENEMYMOVEEFFECT] cp a,OHKO_EFFECT jr z,.applyDamage\@ cp a,SUPER_FANG_EFFECT jr z,.superFangEffect\@ cp a,SPECIAL_DAMAGE_EFFECT jr z,.specialDamage\@ ld a,[W_ENEMYMOVEPOWER] and a jp z,.done\@ jr .applyDamage\@ .superFangEffect\@ ; set the damage to half the target's HP ld hl,W_PLAYERMONCURHP ld de,W_DAMAGE ld a,[hli] srl a ld [de],a inc de ld b,a ld a,[hl] rr a ld [de],a or b jr nz,.applyDamage\@ ; make sure Super Fang's damage is always at least 1 ld a,$01 ld [de],a jr .applyDamage\@ .specialDamage\@ ld hl,W_ENEMYMONLEVEL ld a,[hl] ld b,a ld a,[W_ENEMYMOVENUM] cp a,SEISMIC_TOSS jr z,.storeDamage\@ cp a,NIGHT_SHADE jr z,.storeDamage\@ ld b,SONICBOOM_DAMAGE cp a,SONICBOOM jr z,.storeDamage\@ ld b,DRAGON_RAGE_DAMAGE cp a,DRAGON_RAGE jr z,.storeDamage\@ ; Psywave ld a,[hl] ld b,a srl a add b ld b,a ; b = attacker's level * 1.5 ; loop until a random number in the range [0, b) is found ; this differs from the range when the player attacks, which is [1, b) ; it's possible for the enemy to do 0 damage with Psywave, but the player always does at least 1 damage .loop\@ call $6e9b ; random number cp b jr nc,.loop\@ ld b,a .storeDamage\@ ld hl,W_DAMAGE xor a ld [hli],a ld a,b ld [hl],a .applyDamage\@ ld hl,W_DAMAGE ld a,[hli] ld b,a ld a,[hl] or b jr z,.done\@ ; we're done if damage is 0 ld a,[W_PLAYERBATTSTATUS2] bit 4,a ; does the player have a substitute? jp nz,AttackSubstitute ; subtract the damage from the pokemon's current HP ; also, save the current HP at $CEEB and the new HP at $CEED ld a,[hld] ld b,a ld a,[W_PLAYERMONCURHP + 1] ld [$ceeb],a sub b ld [W_PLAYERMONCURHP + 1],a ld [$ceed],a ld b,[hl] ld a,[W_PLAYERMONCURHP] ld [$ceec],a sbc b ld [W_PLAYERMONCURHP],a ld [$ceee],a jr nc,.animateHpBar\@ ; if more damage was done than the current HP, zero the HP and set the damage ; equal to how much HP the pokemon had before the attack ld a,[$ceec] ld [hli],a ld a,[$ceeb] ld [hl],a xor a ld hl,W_PLAYERMONCURHP ld [hli],a ld [hl],a ld hl,$ceed ld [hli],a ld [hl],a .animateHpBar\@ ld hl,W_PLAYERMONMAXHP ld a,[hli] ld [$ceea],a ld a,[hl] ld [$cee9],a ld hl,$c45e ld a,$01 ld [$cf94],a ld a,$48 call Predef ; animate the HP bar shortening .done\@ jp $4d5a ; redraw pokemon names and HP bars AttackSubstitute: ; 625E ld hl,SubstituteTookDamageText call PrintText ; values for player turn ld de,W_ENEMYSUBSITUTEHP ld bc,W_ENEMYBATTSTATUS2 ld a,[H_WHOSETURN] and a jr z,.applyDamageToSubstitute\@ ; values for enemy turn ld de,W_PLAYERSUBSITUTEHP ld bc,W_PLAYERBATTSTATUS2 .applyDamageToSubstitute\@ ld hl,W_DAMAGE ld a,[hli] and a jr nz,.substituteBroke\@ ; damage > 0xFF always breaks substitutes ; subtract damage from HP of substitute ld a,[de] sub [hl] ld [de],a ret nc .substituteBroke\@ ld h,b ld l,c res 4,[hl] ; unset the substitute bit ld hl,SubstituteBrokeText call PrintText ; flip whose turn it is for the next function call ld a,[H_WHOSETURN] xor a,$01 ld [H_WHOSETURN],a ld hl,$5747 ld b,$1e ; animate the substitute breaking call Bankswitch ; substitute ; flip the turn back to the way it was ld a,[H_WHOSETURN] xor a,$01 ld [H_WHOSETURN],a ld hl,W_PLAYERMOVEEFFECT ; value for player's turn and a jr z,.nullifyEffect\@ ld hl,W_ENEMYMOVEEFFECT ; value for enemy's turn .nullifyEffect\@ xor a ld [hl],a ; zero the effect of the attacker's move jp $4d5a ; redraw pokemon names and HP bars SubstituteTookDamageText: ; 0x3e2ac TX_FAR _SubstituteTookDamageText db $50 ; 0x3e2ac + 5 bytes SubstituteBrokeText: ; 0x3e2b1 TX_FAR _SubstituteBrokeText db $50 ; 0x3e2b1 + 5 bytes ; this function raises the attack modifier of a pokemon using Rage when that pokemon is attacked HandleBuildingRage: ; 62B6 ; values for the player turn ld hl,W_ENEMYBATTSTATUS2 ld de,W_ENEMYMONATTACKMOD ld bc,W_ENEMYMOVENUM ld a,[H_WHOSETURN] and a jr z,.next\@ ; values for the enemy turn ld hl,W_PLAYERBATTSTATUS2 ld de,W_PLAYERMONATTACKMOD ld bc,W_PLAYERMOVENUM .next\@ bit 6,[hl] ; is the pokemon being attacked under the effect of Rage? ret z ; return if not ld a,[de] cp a,$0d ; maximum stat modifier value ret z ; return if attack modifier is already maxed ld a,[H_WHOSETURN] xor a,$01 ; flip turn for the stat modifier raising function ld [H_WHOSETURN],a ; change the target pokemon's move to $00 and the effect to the one ; that causes the attack modifier to go up one stage ld h,b ld l,c ld [hl],$00 ; null move number inc hl ld [hl],ATTACK_UP1_EFFECT push hl ld hl,BuildingRageText call PrintText call $7428 ; stat modifier raising function pop hl xor a ldd [hl],a ; null move effect ld a,RAGE ld [hl],a ; restore the target pokemon's move number to Rage ld a,[H_WHOSETURN] xor a,$01 ; flip turn back to the way it was ld [H_WHOSETURN],a ret BuildingRageText: ; 0x3e2f8 TX_FAR _BuildingRageText db $50 ; 0x3e2f8 + 5 bytes ; copy last move for Mirror Move ; sets zero flag on failure and unsets zero flag on success MirrorMoveCopyMove: ; 62FD ld a,[H_WHOSETURN] and a ; values for player turn ld a,[$ccf2] ld hl,W_PLAYERSELECTEDMOVE ld de,W_PLAYERMOVENUM jr z,.next\@ ; values for enemy turn ld a,[$ccf1] ld de,W_ENEMYMOVENUM ld hl,W_ENEMYSELECTEDMOVE .next\@ ld [hl],a cp a,MIRROR_MOVE ; did the target pokemon also use Mirror Move? jr z,.mirrorMoveFailed\@ and a ; null move? jr nz,ReloadMoveData .mirrorMoveFailed\@ ; Mirror Move fails on itself and null moves ld hl,MirrorMoveFailedText call PrintText xor a ret MirrorMoveFailedText: ; 0x3e324 TX_FAR _MirrorMoveFailedText db $50 ; 0x3e324 + 5 bytes ; function used to reload move data for moves like Mirror Move and Metronome ReloadMoveData: ; 6329 ld [$d11e],a dec a ld hl,Moves ld bc,$0006 call AddNTimes ld a,BANK(Moves) call FarCopyData ; copy the move's stats call IncrementMovePP ; the follow two function calls are used to reload the move name call $3058 call $3826 ld a,$01 and a ret ; function that picks a random move for metronome MetronomePickMove: ; 6348 xor a ld [$cc5b],a ld a,METRONOME call PlayMoveAnimation ; play Metronome's animation ; values for player turn ld de,W_PLAYERMOVENUM ld hl,W_PLAYERSELECTEDMOVE ld a,[H_WHOSETURN] and a jr z,.pickMoveLoop\@ ; values for enemy turn ld de,W_ENEMYMOVENUM ld hl,W_ENEMYSELECTEDMOVE ; loop to pick a random number in the range [1, $a5) to be the move used by Metronome .pickMoveLoop\@ call $6e9b ; random number and a jr z,.pickMoveLoop\@ cp a,$a5 ; max normal move number + 1 (this is Struggle's move number) jr nc,.pickMoveLoop\@ cp a,METRONOME jr z,.pickMoveLoop\@ ld [hl],a jr ReloadMoveData ; this function increments the current move's PP ; it's used to prevent moves that run another move within the same turn ; (like Mirror Move and Metronome) from losing 2 PP IncrementMovePP: ; 6373 ld a,[H_WHOSETURN] and a ; values for player turn ld hl,W_PLAYERMONPP ld de,W_PARTYMON1_MOVE1PP ld a,[W_PLAYERMOVELISTINDEX] jr z,.next\@ ; values for enemy turn ld hl,W_ENEMYMONPP ld de,$d8c1 ; enemy party pokemon 1 PP ld a,[W_ENEMYMOVELISTINDEX] .next\@ ld b,$00 ld c,a add hl,bc inc [hl] ; increment PP in the currently battling pokemon memory location ld h,d ld l,e add hl,bc ld a,[H_WHOSETURN] and a ld a,[W_PLAYERMONNUMBER] ; value for player turn jr z,.next2\@ ld a,[W_ENEMYMONNUMBER] ; value for enemy turn .next2\@ ld bc,$002c call AddNTimes inc [hl] ; increment PP in the party memory location ret ; function to adjust the base damage of an attack to account for type effectiveness AdjustDamageForMoveType: ; 63A5 ; values for player turn ld hl,W_PLAYERMONTYPES ld a,[hli] ld b,a ; b = type 1 of attacker ld c,[hl] ; c = type 2 of attacker ld hl,W_ENEMYMONTYPES ld a,[hli] ld d,a ; d = type 1 of defender ld e,[hl] ; e = type 2 of defender ld a,[W_PLAYERMOVETYPE] ld [$d11e],a ld a,[H_WHOSETURN] and a jr z,.next\@ ; values for enemy turn ld hl,W_ENEMYMONTYPES ld a,[hli] ld b,a ; b = type 1 of attacker ld c,[hl] ; c = type 2 of attacker ld hl,W_PLAYERMONTYPES ld a,[hli] ld d,a ; d = type 1 of defender ld e,[hl] ; e = type 2 of defender ld a,[W_ENEMYMOVETYPE] ld [$d11e],a .next\@ ld a,[$d11e] ; move type cp b ; does the move type match type 1 of the attacker? jr z,.sameTypeAttackBonus\@ cp c ; does the move type match type 2 of the attacker? jr z,.sameTypeAttackBonus\@ jr .skipSameTypeAttackBonus\@ .sameTypeAttackBonus\@ ; if the move type matches one of the attacker's types ld hl,W_DAMAGE + 1 ld a,[hld] ld h,[hl] ld l,a ; hl = damage ld b,h ld c,l ; bc = damage srl b rr c ; bc = floor(0.5 * damage) add hl,bc ; hl = floor(1.5 * damage) ; store damage ld a,h ld [W_DAMAGE],a ld a,l ld [W_DAMAGE + 1],a ld hl,$d05b set 7,[hl] .skipSameTypeAttackBonus\@ ld a,[$d11e] ld b,a ; b = move type ld hl,TypeEffects .loop\@ ld a,[hli] ; a = "attacking type" of the current type pair cp a,$ff jr z,.done\@ cp b ; does move type match "attacking type"? jr nz,.nextTypePair\@ ld a,[hl] ; a = "defending type" of the current type pair cp d ; does type 1 of defender match "defending type"? jr z,.matchingPairFound\@ cp e ; does type 2 of defender match "defending type"? jr z,.matchingPairFound\@ jr .nextTypePair\@ .matchingPairFound\@ ; if the move type matches the "attacking type" and one of the defender's types matches the "defending type" push hl push bc inc hl ld a,[$d05b] and a,$80 ld b,a ld a,[hl] ; a = damage multiplier ld [H_MULTIPLIER],a add b ld [$d05b],a xor a ld [H_MULTIPLICAND],a ld hl,W_DAMAGE ld a,[hli] ld [H_MULTIPLICAND + 1],a ld a,[hld] ld [H_MULTIPLICAND + 2],a call Multiply ld a,10 ld [H_DIVISOR],a ld b,$04 call Divide ld a,[H_QUOTIENT + 2] ld [hli],a ld b,a ld a,[H_QUOTIENT + 3] ld [hl],a or b ; is damage 0? jr nz,.skipTypeImmunity\@ .typeImmunity\@ ; if damage is 0, make the move miss inc a ld [W_MOVEMISSED],a .skipTypeImmunity\@ pop bc pop hl .nextTypePair\@ inc hl inc hl jp .loop\@ .done\@ ret ; function to tell how effective the type of an enemy attack is on the player's current pokemon ; this doesn't take into account the effects that dual types can have ; (e.g. 4x weakness / resistance, weaknesses and resistances canceling) ; the result is stored in [$D11E] ; ($05 is not very effective, $10 is neutral, $14 is super effective) ; as far is can tell, this is only used once in some AI code to help decide which move to use AIGetTypeEffectiveness: ; 6449 ld a,[W_ENEMYMOVETYPE] ld d,a ; d = type of enemy move ld hl,W_PLAYERMONTYPES ld b,[hl] ; b = type 1 of player's pokemon inc hl ld c,[hl] ; c = type 2 of player's pokemon ld a,$10 ld [$d11e],a ; initialize [$D11E] to neutral effectiveness ld hl,TypeEffects .loop\@ ld a,[hli] cp a,$ff ret z cp d ; match the type of the move jr nz,.nextTypePair1\@ ld a,[hli] cp b ; match with type 1 of pokemon jr z,.done\@ cp c ; or match with type 2 of pokemon jr z,.done\@ jr .nextTypePair2\@ .nextTypePair1\@ inc hl .nextTypePair2\@ inc hl jr .loop\@ .done\@ ld a,[hl] ld [$d11e],a ; store damage multiplier ret TypeEffects: ; 6474 ; format: attacking type, defending type, damage multiplier ; the multiplier is a (decimal) fixed-point number: ; 20 is ×2.0 ; 05 is ×0.5 ; 00 is ×0 db WATER,FIRE,20 db FIRE,GRASS,20 db FIRE,ICE,20 db GRASS,WATER,20 db ELECTRIC,WATER,20 db WATER,ROCK,20 db GROUND,FLYING,00 db WATER,WATER,05 db FIRE,FIRE,05 db ELECTRIC,ELECTRIC,05 db ICE,ICE,05 db GRASS,GRASS,05 db PSYCHIC,PSYCHIC,05 db FIRE,WATER,05 db GRASS,FIRE,05 db WATER,GRASS,05 db ELECTRIC,GRASS,05 db NORMAL,ROCK,05 db NORMAL,GHOST,00 db GHOST,GHOST,20 db FIRE,BUG,20 db FIRE,ROCK,05 db WATER,GROUND,20 db ELECTRIC,GROUND,00 db ELECTRIC,FLYING,20 db GRASS,GROUND,20 db GRASS,BUG,05 db GRASS,POISON,05 db GRASS,ROCK,20 db GRASS,FLYING,05 db ICE,WATER,05 db ICE,GRASS,20 db ICE,GROUND,20 db ICE,FLYING,20 db FIGHTING,NORMAL,20 db FIGHTING,POISON,05 db FIGHTING,FLYING,05 db FIGHTING,PSYCHIC,05 db FIGHTING,BUG,05 db FIGHTING,ROCK,20 db FIGHTING,ICE,20 db FIGHTING,GHOST,00 db POISON,GRASS,20 db POISON,POISON,05 db POISON,GROUND,05 db POISON,BUG,20 db POISON,ROCK,05 db POISON,GHOST,05 db GROUND,FIRE,20 db GROUND,ELECTRIC,20 db GROUND,GRASS,05 db GROUND,BUG,05 db GROUND,ROCK,20 db GROUND,POISON,20 db FLYING,ELECTRIC,05 db FLYING,FIGHTING,20 db FLYING,BUG,20 db FLYING,GRASS,20 db FLYING,ROCK,05 db PSYCHIC,FIGHTING,20 db PSYCHIC,POISON,20 db BUG,FIRE,05 db BUG,GRASS,20 db BUG,FIGHTING,05 db BUG,FLYING,05 db BUG,PSYCHIC,20 db BUG,GHOST,05 db BUG,POISON,20 db ROCK,FIRE,20 db ROCK,FIGHTING,05 db ROCK,GROUND,05 db ROCK,FLYING,20 db ROCK,BUG,20 db ROCK,ICE,20 db GHOST,NORMAL,00 db GHOST,PSYCHIC,00 db FIRE,DRAGON,05 db WATER,DRAGON,05 db ELECTRIC,DRAGON,05 db GRASS,DRAGON,05 db ICE,DRAGON,20 db DRAGON,DRAGON,20 db $FF ; some tests that need to pass for a move to hit MoveHitTest: ; 656B ; player's turn ld hl,W_ENEMYBATTSTATUS1 ld de,W_PLAYERMOVEEFFECT ld bc,W_ENEMYMONSTATUS ld a,[H_WHOSETURN] and a jr z,.dreamEaterCheck\@ ; enemy's turn ld hl,W_PLAYERBATTSTATUS1 ld de,W_ENEMYMOVEEFFECT ld bc,W_PLAYERMONSTATUS .dreamEaterCheck\@ ld a,[de] cp a,DREAM_EATER_EFFECT jr nz,.swiftCheck\@ ld a,[bc] and a,$07 ; is the target pokemon sleeping? jp z,.moveMissed\@ .swiftCheck\@ ld a,[de] cp a,SWIFT_EFFECT ret z ; Swift never misses (interestingly, Azure Heights lists this is a myth, but it appears to be true) call $7b79 ; substitute check (note that this overwrites a) jr z,.checkForDigOrFlyStatus\@ ; this code is buggy. it's supposed to prevent HP draining moves from working on substitutes. ; since $7b79 overwrites a with either $00 or $01, it never works. cp a,DRAIN_HP_EFFECT ; $03 jp z,.moveMissed\@ cp a,DREAM_EATER_EFFECT ; $08 jp z,.moveMissed\@ .checkForDigOrFlyStatus\@ bit 6,[hl] jp nz,.moveMissed\@ ld a,[H_WHOSETURN] and a jr nz,.enemyTurn\@ .playerTurn\@ ; this checks if the move effect is disallowed by mist ld a,[W_PLAYERMOVEEFFECT] cp a,$12 jr c,.skipEnemyMistCheck\@ cp a,$1a jr c,.enemyMistCheck\@ cp a,$3a jr c,.skipEnemyMistCheck\@ cp a,$42 jr c,.enemyMistCheck\@ jr .skipEnemyMistCheck\@ .enemyMistCheck\@ ; if move effect is from $12 to $19 inclusive or $3a to $41 inclusive ; i.e. the following moves ; GROWL, TAIL WHIP, LEER, STRING SHOT, SAND-ATTACK, SMOKESCREEN, KINESIS, ; FLASH, CONVERSION, HAZE*, SCREECH, LIGHT SCREEN*, REFLECT* ; the moves that are marked with an asterisk are not affected since this ; function is not called when those moves are used ; XXX are there are any others like those three? ld a,[W_ENEMYBATTSTATUS2] bit 1,a jp nz,.moveMissed\@ .skipEnemyMistCheck\@ ld a,[W_PLAYERBATTSTATUS2] bit 0,a ; is the player using X Accuracy? ret nz ; if so, always hit regardless of accuracy/evasion jr .calcHitChance\@ .enemyTurn\@ ld a,[W_ENEMYMOVEEFFECT] cp a,$12 jr c,.skipPlayerMistCheck\@ cp a,$1a jr c,.playerMistCheck\@ cp a,$3a jr c,.skipPlayerMistCheck\@ cp a,$42 jr c,.playerMistCheck\@ jr .skipPlayerMistCheck\@ .playerMistCheck\@ ; similar to enemy mist check ld a,[W_PLAYERBATTSTATUS2] bit 1,a jp nz,.moveMissed\@ .skipPlayerMistCheck\@ ld a,[W_ENEMYBATTSTATUS2] bit 0,a ; is the enemy using X Accuracy? ret nz ; if so, always hit regardless of accuracy/evasion .calcHitChance\@ call CalcHitChance ; scale the move accuracy according to attacker's accuracy and target's evasion ld a,[W_PLAYERMOVEACCURACY] ld b,a ld a,[H_WHOSETURN] and a jr z,.doAccuracyCheck\@ ld a,[W_ENEMYMOVEACCURACY] ld b,a .doAccuracyCheck\@ ; if the random number generated is greater than or equal to the scaled accuracy, the move misses ; note that this means that even the highest accuracy is still just a 255/256 chance, not 100% call $6e9b ; random number cp b jr nc,.moveMissed\@ ret .moveMissed\@ xor a ld hl,W_DAMAGE ; zero the damage ld [hli],a ld [hl],a inc a ld [W_MOVEMISSED],a ld a,[H_WHOSETURN] and a jr z,.playerTurn2\@ .enemyTurn2\@ ld hl,W_ENEMYBATTSTATUS1 res 5,[hl] ; end multi-turn attack e.g. wrap ret .playerTurn2\@ ld hl,W_PLAYERBATTSTATUS1 res 5,[hl] ; end multi-turn attack e.g. wrap ret ; values for player turn CalcHitChance: ; 6624 ld hl,W_PLAYERMOVEACCURACY ld a,[H_WHOSETURN] and a ld a,[W_PLAYERMONACCURACYMOD] ld b,a ld a,[W_ENEMYMONEVASIONMOD] ld c,a jr z,.next\@ ; values for enemy turn ld hl,W_ENEMYMOVEACCURACY ld a,[W_ENEMYMONACCURACYMOD] ld b,a ld a,[W_PLAYERMONEVASIONMOD] ld c,a .next\@ ld a,$0e sub c ld c,a ; c = 14 - EVASIONMOD (this "reflects" the value over 7, so that an increase in the target's evasion decreases the hit chance instead of increasing the hit chance) ; zero the high bytes of the multiplicand xor a ld [H_MULTIPLICAND],a ld [H_MULTIPLICAND + 1],a ld a,[hl] ld [H_MULTIPLICAND + 2],a ; set multiplicand to move accuracy push hl ld d,$02 ; loop has two iterations ; loop to do the calculations, the first iteration multiplies by the accuracy ratio and the second iteration multiplies by the evasion ratio .loop\@ push bc ld hl,$76cb ; stat modifier ratios dec b sla b ld c,b ld b,$00 add hl,bc ; hl = address of stat modifier ratio pop bc ld a,[hli] ld [H_MULTIPLIER],a ; set multiplier to the numerator of the ratio call Multiply ld a,[hl] ld [H_DIVISOR],a ; set divisor to the the denominator of the ratio (the dividend is the product of the previous multiplication) ld b,$04 ; number of bytes in the dividend call Divide ld a,[H_QUOTIENT + 3] ld b,a ld a,[H_QUOTIENT + 2] or b jp nz,.nextCalculation\@ ; make sure the result is always at least one ld [H_QUOTIENT + 2],a ld a,$01 ld [H_QUOTIENT + 3],a .nextCalculation\@ ld b,c dec d jr nz,.loop\@ ld a,[H_QUOTIENT + 2] and a ; is the calculated hit chance over 0xFF? ld a,[H_QUOTIENT + 3] jr z,.storeAccuracy\@ ; if calculated hit chance over 0xFF ld a,$ff ; set the hit chance to 0xFF .storeAccuracy\@ pop hl ld [hl],a ; store the hit chance in the move accuracy variable ret INCBIN "baserom.gbc",$3e687,$3e887 - $3e687 UnnamedText_3e887: ; 0x3e887 TX_FAR _UnnamedText_3e887 db $50 ; 0x3e887 + 5 bytes INCBIN "baserom.gbc",$3e88c,$67b PlayMoveAnimation: ; 6F07 ld [$D07C],a call Delay3 ld a,8 jp Predef INCBIN "baserom.gbc",$3ef12,$3f245 - $3ef12 UnnamedText_3f245: ; 0x3f245 TX_FAR _UnnamedText_3f245 db $50 ; 0x3f245 + 5 bytes UnnamedText_3f24a: ; 0x3f24a TX_FAR _UnnamedText_3f24a db $50 ; 0x3f24a + 5 bytes INCBIN "baserom.gbc",$3f24f,$3f2df - $3f24f UnnamedText_3f2df: ; 0x3f2df TX_FAR _UnnamedText_3f2df db $50 ; 0x3f2df + 5 bytes UnnamedText_3f2e4: ; 0x3f2e4 TX_FAR _UnnamedText_3f2e4 db $50 ; 0x3f2e4 + 5 bytes INCBIN "baserom.gbc",$3f2e9,$3f3d8 - $3f2e9 UnnamedText_3f3d8: ; 0x3f3d8 TX_FAR _UnnamedText_3f3d8 db $50 ; 0x3f3d8 + 5 bytes UnnamedText_3f3dd: ; 0x3f3dd TX_FAR _UnnamedText_3f3dd db $50 ; 0x3f3dd + 5 bytes INCBIN "baserom.gbc",$3f3e2,$3f423 - $3f3e2 UnnamedText_3f423: ; 0x3f423 TX_FAR _UnnamedText_3f423 db $50 ; 0x3f423 + 5 bytes INCBIN "baserom.gbc",$3f428,$3f547 - $3f428 UnnamedText_3f547: ; 0x3f547 TX_FAR _UnnamedText_3f547 db $50 ; 0x3f547 + 5 bytes INCBIN "baserom.gbc",$3f54c,$3f683 - $3f54c UnnamedText_3f683: ; 0x3f683 TX_FAR _UnnamedText_3f683 db $50 ; 0x3f683 + 5 bytes INCBIN "baserom.gbc",$3f688,$3f802 - $3f688 UnnamedText_3f802: ; 0x3f802 TX_FAR _UnnamedText_3f802 db $50 ; 0x3f802 + 5 bytes UnnamedText_3f807: ; 0x3f807 TX_FAR _UnnamedText_3f807 db $50 ; 0x3f807 + 5 bytes UnnamedText_3f80c: ; 0x3f80c TX_FAR _UnnamedText_3f80c db $50 ; 0x3f80c + 5 bytes INCBIN "baserom.gbc",$3f811,$3f8f9 - $3f811 UnnamedText_3f8f9: ; 0x3f8f9 TX_FAR _UnnamedText_3f8f9 db $50 ; 0x3f8f9 + 5 bytes UnnamedText_3f8fe: ; 0x3f8fe TX_FAR _UnnamedText_3f8fe db $50 ; 0x3f8fe + 5 bytes UnnamedText_3f903: ; 0x3f903 TX_FAR _UnnamedText_3f903 db $50 ; 0x3f903 + 5 bytes UnnamedText_3f908: ; 0x3f908 TX_FAR _UnnamedText_3f908 db $50 ; 0x3f908 + 5 bytes UnnamedText_3f90d: ; 0x3f90d TX_FAR _UnnamedText_3f90d db $50 ; 0x3f90d + 5 bytes UnnamedText_3f912: ; 0x3f912 TX_FAR _UnnamedText_3f912 db $50 ; 0x3f912 + 5 bytes INCBIN "baserom.gbc",$3f917,$3f9a1 - $3f917 UnnamedText_3f9a1: ; 0x3f9a1 TX_FAR _UnnamedText_3f9a1 db $50 ; 0x3f9a1 + 5 bytes INCBIN "baserom.gbc",$3f9a6,$3fa77 - $3f9a6 UnnamedText_3fa77: ; 0x3fa77 TX_FAR _UnnamedText_3fa77 db $50 ; 0x3fa77 + 5 bytes INCBIN "baserom.gbc",$3fa7c,$3fb09 - $3fa7c UnnamedText_3fb09: ; 0x3fb09 TX_FAR _UnnamedText_3fb09 db $50 ; 0x3fb09 + 5 bytes INCBIN "baserom.gbc",$3fb0e,$3fb3e - $3fb0e UnnamedText_3fb3e: ; 0x3fb3e TX_FAR _UnnamedText_3fb3e db $50 ; 0x3fb3e + 5 bytes INCBIN "baserom.gbc",$3fb43,$3fb49 - $3fb43 UnnamedText_3fb49: ; 0x3fb49 TX_FAR _UnnamedText_3fb49 db $50 ; 0x3fb49 + 5 bytes INCBIN "baserom.gbc",$3fb4e,$3fb59 - $3fb4e UnnamedText_3fb59: ; 0x3fb59 TX_FAR _UnnamedText_3fb59 db $50 ; 0x3fb59 + 5 bytes INCBIN "baserom.gbc",$3fb5e,$3fb64 - $3fb5e UnnamedText_3fb64: ; 0x3fb64 TX_FAR _UnnamedText_3fb64 db $50 ; 0x3fb64 + 5 bytes UnnamedText_3fb69: ; 0x3fb69 TX_FAR _UnnamedText_3fb69 db $50 ; 0x3fb69 + 5 bytes INCBIN "baserom.gbc",$3fb6e,$3fb74 - $3fb6e UnnamedText_3fb74: ; 0x3fb74 TX_FAR _UnnamedText_3fb74 db $50 ; 0x3fb74 + 5 bytes INCBIN "baserom.gbc",$3fb79,$3fbc8 - $3fb79 SECTION "bank10",DATA,BANK[$10] DisplayPokedexMenu_: ; 4000 call GBPalWhiteOut call ClearScreen call $2429 ; move sprites ld a,[W_LISTSCROLLOFFSET] push af xor a ld [W_CURMENUITEMID],a ld [W_LISTSCROLLOFFSET],a ld [W_OLDMENUITEMID],a inc a ld [$d11e],a ld [$ffb7],a .setUpGraphics\@ ld b,$08 call GoPAL_SET ld hl,LoadPokedexTilePatterns ld b,BANK(LoadPokedexTilePatterns) call Bankswitch .doPokemonListMenu\@ ld hl,W_TOPMENUITEMY ld a,3 ld [hli],a ; top menu item Y xor a ld [hli],a ; top menu item X inc a ld [$cc37],a inc hl inc hl ld a,6 ld [hli],a ; max menu item ID ld [hl],%00110011 ; menu watched keys (Left, Right, B button, A button) call HandlePokedexListMenu jr c,.goToSideMenu\@ ; if the player chose a pokemon from the list .exitPokedex\@ xor a ld [$cc37],a ld [W_CURMENUITEMID],a ld [W_OLDMENUITEMID],a ld [$ffb7],a ld [$cd3a],a ld [$cd3b],a pop af ld [W_LISTSCROLLOFFSET],a call GBPalWhiteOutWithDelay3 call GoPAL_SET_CF1C jp ReloadMapData .goToSideMenu\@ call HandlePokedexSideMenu dec b jr z,.exitPokedex\@ ; if the player chose Quit dec b jr z,.doPokemonListMenu\@ ; if pokemon not seen or player pressed B button jp .setUpGraphics\@ ; if pokemon data or area was shown ; handles the menu on the lower right in the pokedex screen ; OUTPUT: ; b = reason for exiting menu ; 00: showed pokemon data or area ; 01: the player chose Quit ; 02: the pokemon has not been seen yet or the player pressed the B button HandlePokedexSideMenu: ; 406D call PlaceUnfilledArrowMenuCursor ld a,[W_CURMENUITEMID] push af ld b,a ld a,[W_OLDMENUITEMID] push af ld a,[W_LISTSCROLLOFFSET] push af add b inc a ld [$d11e],a ld a,[$d11e] push af ld a,[$cd3d] push af ld hl,W_SEENPOKEMON call IsPokemonBitSet ld b,2 jr z,.exitSideMenu\@ call PokedexToIndex ld hl,W_TOPMENUITEMY ld a,10 ld [hli],a ; top menu item Y ld a,15 ld [hli],a ; top menu item X xor a ld [hli],a ; current menu item ID inc hl ld a,3 ld [hli],a ; max menu item ID ld [hli],a ; menu watched keys (A button and B button) xor a ld [hli],a ; old menu item ID ld [$cc37],a .handleMenuInput\@ call HandleMenuInput bit 1,a ; was the B button pressed? ld b,2 jr nz,.buttonBPressed\@ ld a,[W_CURMENUITEMID] and a jr z,.choseData\@ dec a jr z,.choseCry\@ dec a jr z,.choseArea\@ .choseQuit\@ ld b,1 .exitSideMenu\@ pop af ld [$cd3d],a pop af ld [$d11e],a pop af ld [W_LISTSCROLLOFFSET],a pop af ld [W_OLDMENUITEMID],a pop af ld [W_CURMENUITEMID],a push bc FuncCoord 0,3 ld hl,Coord ld de,20 ld bc,$7f0d ; 13 blank tiles call DrawTileLine ; cover up the menu cursor in the pokemon list pop bc ret .buttonBPressed\@ push bc FuncCoord 15,10 ld hl,Coord ld de,20 ld bc,$7f07 ; 7 blank tiles call DrawTileLine ; cover up the menu cursor in the side menu pop bc jr .exitSideMenu\@ .choseData\@ call ShowPokedexDataInternal ld b,0 jr .exitSideMenu\@ ; play pokemon cry .choseCry\@ ld a,[$d11e] call $13d9 ; get cry data call $23b1 ; play sound jr .handleMenuInput\@ .choseArea\@ ld a,$4a call Predef ; display pokemon areas ld b,0 jr .exitSideMenu\@ ; handles the list of pokemon on the left of the pokedex screen ; sets carry flag if player presses A, unsets carry flag if player presses B HandlePokedexListMenu: ; 4111 xor a ld [H_AUTOBGTRANSFERENABLED],a ; draw the horizontal line separating the seen and owned amounts from the menu FuncCoord 15,8 ld hl,Coord ld a,$7a ; horizontal line tile ld [hli],a ld [hli],a ld [hli],a ld [hli],a ld [hli],a FuncCoord 14,0 ld hl,Coord ld [hl],$71 ; vertical line tile FuncCoord 14,1 ld hl,Coord call DrawPokedexVerticalLine FuncCoord 14,9 ld hl,Coord call DrawPokedexVerticalLine ld hl,W_SEENPOKEMON ld b,19 call CountSetBits ld de,$d11e FuncCoord 16,3 ld hl,Coord ld bc,$0103 call PrintNumber ; print number of seen pokemon ld hl,W_OWNEDPOKEMON ld b,19 call CountSetBits ld de,$d11e FuncCoord 16,6 ld hl,Coord ld bc,$0103 call PrintNumber ; print number of owned pokemon FuncCoord 16,2 ld hl,Coord ld de,PokedexSeenText call PlaceString FuncCoord 16,5 ld hl,Coord ld de,PokedexOwnText call PlaceString FuncCoord 1,1 ld hl,Coord ld de,PokedexContentsText call PlaceString FuncCoord 16,10 ld hl,Coord ld de,PokedexMenuItemsText call PlaceString ; find the highest pokedex number among the pokemon the player has seen ld hl,W_SEENPOKEMON + 18 ld b,153 .maxSeenPokemonLoop\@ ld a,[hld] ld c,8 .maxSeenPokemonInnerLoop\@ dec b sla a jr c,.storeMaxSeenPokemon\@ dec c jr nz,.maxSeenPokemonInnerLoop\@ jr .maxSeenPokemonLoop\@ .storeMaxSeenPokemon\@ ld a,b ld [$cd3d],a ; max seen pokemon .loop\@ xor a ld [H_AUTOBGTRANSFERENABLED],a FuncCoord 4,2 ld hl,Coord ld bc,$0e0a call ClearScreenArea FuncCoord 1,3 ld hl,Coord ld a,[W_LISTSCROLLOFFSET] ld [$d11e],a ld d,7 ld a,[$cd3d] cp a,7 jr nc,.printPokemonLoop\@ ld d,a dec a ld [W_MAXMENUITEMID],a ; loop to print pokemon pokedex numbers and names ; if the player has owned the pokemon, it puts a pokeball beside the name .printPokemonLoop\@ ld a,[$d11e] inc a ld [$d11e],a push af push de push hl ld de,-20 add hl,de ld de,$d11e ld bc,$8103 call PrintNumber ; print the pokedex number ld de,20 add hl,de dec hl push hl ld hl,W_OWNEDPOKEMON call IsPokemonBitSet pop hl ld a,$7f ; blank tile jr z,.writeTile\@ ld a,$72 ; pokeball tile .writeTile\@ ld [hl],a ; put a pokeball next to pokemon that the player has owned push hl ld hl,W_SEENPOKEMON call IsPokemonBitSet jr nz,.getPokemonName\@ ; if the player has seen the pokemon ld de,.dashedLine\@ ; print a dashed line in place of the name if the player hasn't seen the pokemon jr .skipGettingName\@ .dashedLine\@ ; for unseen pokemon in the list db "----------@" .getPokemonName\@ call PokedexToIndex call GetMonName .skipGettingName\@ pop hl inc hl call PlaceString pop hl ld bc,2 * 20 add hl,bc pop de pop af ld [$d11e],a dec d jr nz,.printPokemonLoop\@ ld a,01 ld [H_AUTOBGTRANSFERENABLED],a call Delay3 call GBPalNormal call HandleMenuInput bit 1,a ; was the B button pressed? jp nz,.buttonBPressed\@ .checkIfUpPressed\@ bit 6,a ; was Up pressed? jr z,.checkIfDownPressed\@ .upPressed\@ ; scroll up one row ld a,[W_LISTSCROLLOFFSET] and a jp z,.loop\@ dec a ld [W_LISTSCROLLOFFSET],a jp .loop\@ .checkIfDownPressed\@ bit 7,a ; was Down pressed? jr z,.checkIfRightPressed\@ .downPressed\@ ; scroll down one row ld a,[$cd3d] cp a,7 jp c,.loop\@ sub a,7 ld b,a ld a,[W_LISTSCROLLOFFSET] cp b jp z,.loop\@ inc a ld [W_LISTSCROLLOFFSET],a jp .loop\@ .checkIfRightPressed\@ bit 4,a ; was Right pressed? jr z,.checkIfLeftPressed\@ .rightPressed\@ ; scroll down 7 rows ld a,[$cd3d] cp a,7 jp c,.loop\@ sub a,6 ld b,a ld a,[W_LISTSCROLLOFFSET] add a,7 ld [W_LISTSCROLLOFFSET],a cp b jp c,.loop\@ dec b ld a,b ld [W_LISTSCROLLOFFSET],a jp .loop\@ .checkIfLeftPressed\@ ; scroll up 7 rows bit 5,a ; was Left pressed? jr z,.buttonAPressed\@ .leftPressed\@ ld a,[W_LISTSCROLLOFFSET] sub a,7 ld [W_LISTSCROLLOFFSET],a jp nc,.loop\@ xor a ld [W_LISTSCROLLOFFSET],a jp .loop\@ .buttonAPressed\@ scf ret .buttonBPressed\@ and a ret DrawPokedexVerticalLine: ; 428E ld c,9 ; height of line ld de,20 ; width of screen ld a,$71 ; vertical line tile .loop\@ ld [hl],a add hl,de xor a,1 ; toggle between vertical line tile and box tile dec c jr nz,.loop\@ ret PokedexSeenText: ; 429D db "SEEN@" PokedexOwnText: ; 42A2 db "OWN@" PokedexContentsText: ; 42A6 db "CONTENTS@" PokedexMenuItemsText: ; 42AF db "DATA",$4E db "CRY",$4E db "AREA",$4E db "QUIT@" ; tests if a pokemon's bit is set in the seen or owned pokemon bit fields ; INPUT: ; [$d11e] = pokedex number ; hl = address of bit field IsPokemonBitSet: ; 42C2 ld a,[$d11e] dec a ld c,a ld b,2 ld a,$10 call Predef ld a,c and a ret ; function to display pokedex data from outside the pokedex ShowPokedexData: ; 42D1 call GBPalWhiteOutWithDelay3 call ClearScreen call $2429 ld hl,$7840 ld b,$05 call Bankswitch ; load pokedex tiles ; function to display pokedex data from inside the pokedex ShowPokedexDataInternal: ; 42E2 ld hl,$d72c set 1,[hl] ld a,$33 ; 3/7 volume ld [$ff24],a call GBPalWhiteOut ; zero all palettes call ClearScreen ld a,[$d11e] ; pokemon ID ld [$cf91],a push af ld b,04 call GoPAL_SET pop af ld [$d11e],a ld a,[$ffd7] push af xor a ld [$ffd7],a FuncCoord 0,0 ld hl,Coord ld de,1 ld bc,$6414 call DrawTileLine ; draw top border FuncCoord 0,17 ld hl,Coord ld b,$6f call DrawTileLine ; draw bottom border FuncCoord 0,1 ld hl,Coord ld de,20 ld bc,$6610 call DrawTileLine ; draw left border FuncCoord 19,1 ld hl,Coord ld b,$67 call DrawTileLine ; draw right border FuncCoord 0,0 ld a,$63 ; upper left corner tile ld [Coord],a FuncCoord 19,0 ld a,$65 ; upper right corner tile ld [Coord],a FuncCoord 0,17 ld a,$6c ; lower left corner tile ld [Coord],a FuncCoord 19,17 ld a,$6e ; lower right corner tile ld [Coord],a FuncCoord 0,9 ld hl,Coord ld de,PokedexDataDividerLine call PlaceString ; draw horizontal divider line FuncCoord 9,6 ld hl,Coord ld de,HeightWeightText call PlaceString call GetMonName FuncCoord 9,2 ld hl,Coord call PlaceString ld hl,PokedexEntryPointers ld a,[$d11e] dec a ld e,a ld d,0 add hl,de add hl,de ld a,[hli] ld e,a ld d,[hl] ; de = address of pokedex entry FuncCoord 9,4 ld hl,Coord call PlaceString ; print species name ld h,b ld l,c push de ld a,[$d11e] push af call IndexToPokedex FuncCoord 2,8 ld hl,Coord ld a,$74 ld [hli],a ld a,$f2 ld [hli],a ld de,$d11e ld bc,$8103 call PrintNumber ; print pokedex number ld hl,W_OWNEDPOKEMON call IsPokemonBitSet pop af ld [$d11e],a ld a,[$cf91] ld [$d0b5],a pop de push af push bc push de push hl call Delay3 call GBPalNormal call $1537 ; load pokemon picture location FuncCoord 1,1 ld hl,Coord call $1384 ; draw pokemon picture ld a,[$cf91] call $13d0 ; play pokemon cry pop hl pop de pop bc pop af ld a,c and a jp z,.waitForButtonPress\@ ; if the pokemon has not been owned, don't print the height, weight, or description inc de ; de = address of feet (height) ld a,[de] ; reads feet, but a is overwritten without being used FuncCoord 12,6 ld hl,Coord ld bc,$0102 call PrintNumber ; print feet (height) ld a,$60 ; feet symbol tile (one tick) ld [hl],a inc de inc de ; de = address of inches (height) FuncCoord 15,6 ld hl,Coord ld bc,$8102 call PrintNumber ; print inches (height) ld a,$61 ; inches symbol tile (two ticks) ld [hl],a ; now print the weight (note that weight is stored in tenths of pounds internally) inc de inc de inc de ; de = address of upper byte of weight push de ; put weight in big-endian order at $ff8b ld hl,$ff8b ld a,[hl] ; save existing value of [$ff8b] push af ld a,[de] ; a = upper byte of weight ld [hli],a ; store upper byte of weight in [$ff8b] ld a,[hl] ; save existing value of [$ff8c] push af dec de ld a,[de] ; a = lower byte of weight ld [hl],a ; store lower byte of weight in [$ff8c] FuncCoord 11,8 ld de,$ff8b ld hl,Coord ld bc,$0205 ; no leading zeroes, right-aligned, 2 bytes, 5 digits call PrintNumber ; print weight FuncCoord 14,8 ld hl,Coord ld a,[$ff8c] sub a,10 ld a,[$ff8b] sbc a,0 jr nc,.next\@ ld [hl],"0" ; if the weight is less than 10, put a 0 before the decimal point .next\@ inc hl ld a,[hli] ld [hld],a ; make space for the decimal point by moving the last digit forward one tile ld [hl],$f2 ; decimal point tile pop af ld [$ff8c],a ; restore original value of [$ff8c] pop af ld [$ff8b],a ; restore original value of [$ff8b] pop hl inc hl ; hl = address of pokedex description text FuncCoord 1,11 ld bc,Coord ld a,2 ld [$fff4],a call TextCommandProcessor ; print pokedex description text xor a ld [$fff4],a .waitForButtonPress\@ call GetJoypadStateLowSensitivity ld a,[$ffb5] and a,%00000011 ; A button and B button jr z,.waitForButtonPress\@ pop af ld [$ffd7],a call GBPalWhiteOut call ClearScreen call GoPAL_SET_CF1C call LoadTextBoxTilePatterns call GBPalNormal ld hl,$d72c res 1,[hl] ld a,$77 ; max volume ld [$ff24],a ret HeightWeightText: ; 4448 db "HT ?",$60,"??",$61,$4E,"WT ???lb@" ; XXX does anything point to this? Unknown4445D: ; 445D db $54,$50 ; horizontal line that divides the pokedex text description from the rest of the data PokedexDataDividerLine: ; 445F db $68,$69,$6B,$69,$6B db $69,$6B,$69,$6B,$6B db $6B,$6B,$69,$6B,$69 db $6B,$69,$6B,$69,$6A db $50 ; draws a line of tiles ; INPUT: ; b = tile ID ; c = number of tile ID's to write ; de = amount to destination address after each tile (1 for horizontal, 20 for vertical) ; hl = destination address DrawTileLine: ; 4474 push bc push de .loop\@ ld [hl],b add hl,de dec c jr nz,.loop\@ pop de pop bc ret PokedexEntryPointers: ; 447E dw RhydonDexEntry dw KangaskhanDexEntry dw NidoranMDexEntry dw ClefairyDexEntry dw SpearowDexEntry dw VoltorbDexEntry dw NidokingDexEntry dw SlowbroDexEntry dw IvysaurDexEntry dw ExeggutorDexEntry dw LickitungDexEntry dw ExeggcuteDexEntry dw GrimerDexEntry dw GengarDexEntry dw NidoranFDexEntry dw NidoqueenDexEntry dw CuboneDexEntry dw RhyhornDexEntry dw LaprasDexEntry dw ArcanineDexEntry dw MewDexEntry dw GyaradosDexEntry dw ShellderDexEntry dw TentacoolDexEntry dw GastlyDexEntry dw ScytherDexEntry dw StaryuDexEntry dw BlastoiseDexEntry dw PinsirDexEntry dw TangelaDexEntry dw MissingNoDexEntry dw MissingNoDexEntry dw GrowlitheDexEntry dw OnixDexEntry dw FearowDexEntry dw PidgeyDexEntry dw SlowpokeDexEntry dw KadabraDexEntry dw GravelerDexEntry dw ChanseyDexEntry dw MachokeDexEntry dw MrMimeDexEntry dw HitmonleeDexEntry dw HitmonchanDexEntry dw ArbokDexEntry dw ParasectDexEntry dw PsyduckDexEntry dw DrowzeeDexEntry dw GolemDexEntry dw MissingNoDexEntry dw MagmarDexEntry dw MissingNoDexEntry dw ElectabuzzDexEntry dw MagnetonDexEntry dw KoffingDexEntry dw MissingNoDexEntry dw MankeyDexEntry dw SeelDexEntry dw DiglettDexEntry dw TaurosDexEntry dw MissingNoDexEntry dw MissingNoDexEntry dw MissingNoDexEntry dw FarfetchdDexEntry dw VenonatDexEntry dw DragoniteDexEntry dw MissingNoDexEntry dw MissingNoDexEntry dw MissingNoDexEntry dw DoduoDexEntry dw PoliwagDexEntry dw JynxDexEntry dw MoltresDexEntry dw ArticunoDexEntry dw ZapdosDexEntry dw DittoDexEntry dw MeowthDexEntry dw KrabbyDexEntry dw MissingNoDexEntry dw MissingNoDexEntry dw MissingNoDexEntry dw VulpixDexEntry dw NinetalesDexEntry dw PikachuDexEntry dw RaichuDexEntry dw MissingNoDexEntry dw MissingNoDexEntry dw DratiniDexEntry dw DragonairDexEntry dw KabutoDexEntry dw KabutopsDexEntry dw HorseaDexEntry dw SeadraDexEntry dw MissingNoDexEntry dw MissingNoDexEntry dw SandshrewDexEntry dw SandslashDexEntry dw OmanyteDexEntry dw OmastarDexEntry dw JigglypuffDexEntry dw WigglytuffDexEntry dw EeveeDexEntry dw FlareonDexEntry dw JolteonDexEntry dw VaporeonDexEntry dw MachopDexEntry dw ZubatDexEntry dw EkansDexEntry dw ParasDexEntry dw PoliwhirlDexEntry dw PoliwrathDexEntry dw WeedleDexEntry dw KakunaDexEntry dw BeedrillDexEntry dw MissingNoDexEntry dw DodrioDexEntry dw PrimeapeDexEntry dw DugtrioDexEntry dw VenomothDexEntry dw DewgongDexEntry dw MissingNoDexEntry dw MissingNoDexEntry dw CaterpieDexEntry dw MetapodDexEntry dw ButterfreeDexEntry dw MachampDexEntry dw MissingNoDexEntry dw GolduckDexEntry dw HypnoDexEntry dw GolbatDexEntry dw MewtwoDexEntry dw SnorlaxDexEntry dw MagikarpDexEntry dw MissingNoDexEntry dw MissingNoDexEntry dw MukDexEntry dw MissingNoDexEntry dw KinglerDexEntry dw CloysterDexEntry dw MissingNoDexEntry dw ElectrodeDexEntry dw ClefableDexEntry dw WeezingDexEntry dw PersianDexEntry dw MarowakDexEntry dw MissingNoDexEntry dw HaunterDexEntry dw AbraDexEntry dw AlakazamDexEntry dw PidgeottoDexEntry dw PidgeotDexEntry dw StarmieDexEntry dw BulbasaurDexEntry dw VenusaurDexEntry dw TentacruelDexEntry dw MissingNoDexEntry dw GoldeenDexEntry dw SeakingDexEntry dw MissingNoDexEntry dw MissingNoDexEntry dw MissingNoDexEntry dw MissingNoDexEntry dw PonytaDexEntry dw RapidashDexEntry dw RattataDexEntry dw RaticateDexEntry dw NidorinoDexEntry dw NidorinaDexEntry dw GeodudeDexEntry dw PorygonDexEntry dw AerodactylDexEntry dw MissingNoDexEntry dw MagnemiteDexEntry dw MissingNoDexEntry dw MissingNoDexEntry dw CharmanderDexEntry dw SquirtleDexEntry dw CharmeleonDexEntry dw WartortleDexEntry dw CharizardDexEntry dw MissingNoDexEntry dw MissingNoDexEntry dw MissingNoDexEntry dw MissingNoDexEntry dw OddishDexEntry dw GloomDexEntry dw VileplumeDexEntry dw BellsproutDexEntry dw WeepinbellDexEntry dw VictreebelDexEntry ; string: species name ; height in feet, inches ; weight in pounds ; text entry RhydonDexEntry: db "DRILL@" db 6,3 dw 2650 TX_FAR _RhydonDexEntry db "@" KangaskhanDexEntry: db "PARENT@" db 7,3 dw 1760 TX_FAR _KangaskhanDexEntry db "@" NidoranMDexEntry: db "POISON PIN@" db 1,8 dw 200 TX_FAR _NidoranMDexEntry db "@" ClefairyDexEntry: db "FAIRY@" db 2,0 dw 170 TX_FAR _ClefairyDexEntry db "@" SpearowDexEntry: db "TINY BIRD@" db 1,0 dw 40 TX_FAR _SpearowDexEntry db "@" VoltorbDexEntry: db "BALL@" db 1,8 dw 230 TX_FAR _VoltorbDexEntry db "@" NidokingDexEntry: db "DRILL@" db 4,7 dw 1370 TX_FAR _NidokingDexEntry db "@" SlowbroDexEntry: db "HERMITCRAB@" db 5,3 dw 1730 TX_FAR _SlowbroDexEntry db "@" IvysaurDexEntry: db "SEED@" db 3,3 dw 290 TX_FAR _IvysaurDexEntry db "@" ExeggutorDexEntry: db "COCONUT@" db 6,7 dw 2650 TX_FAR _ExeggutorDexEntry db "@" LickitungDexEntry: db "LICKING@" db 3,11 dw 1440 TX_FAR _LickitungDexEntry db "@" ExeggcuteDexEntry: db "EGG@" db 1,4 dw 60 TX_FAR _ExeggcuteDexEntry db "@" GrimerDexEntry: db "SLUDGE@" db 2,11 dw 660 TX_FAR _GrimerDexEntry db "@" GengarDexEntry: db "SHADOW@" db 4,11 dw 890 TX_FAR _GengarDexEntry db "@" NidoranFDexEntry: db "POISON PIN@" db 1,4 dw 150 TX_FAR _NidoranFDexEntry db "@" NidoqueenDexEntry: db "DRILL@" db 4,3 dw 1320 TX_FAR _NidoqueenDexEntry db "@" CuboneDexEntry: db "LONELY@" db 1,4 dw 140 TX_FAR _CuboneDexEntry db "@" RhyhornDexEntry: db "SPIKES@" db 3,3 dw 2540 TX_FAR _RhyhornDexEntry db "@" LaprasDexEntry: db "TRANSPORT@" db 8,2 dw 4850 TX_FAR _LaprasDexEntry db "@" ArcanineDexEntry: db "LEGENDARY@" db 6,3 dw 3420 TX_FAR _ArcanineDexEntry db "@" MewDexEntry: db "NEW SPECIE@" db 1,4 dw 90 TX_FAR _MewDexEntry db "@" GyaradosDexEntry: db "ATROCIOUS@" db 21,4 dw 5180 TX_FAR _GyaradosDexEntry db "@" ShellderDexEntry: db "BIVALVE@" db 1,0 dw 90 TX_FAR _ShellderDexEntry db "@" TentacoolDexEntry: db "JELLYFISH@" db 2,11 dw 1000 TX_FAR _TentacoolDexEntry db "@" GastlyDexEntry: db "GAS@" db 4,3 dw 2 TX_FAR _GastlyDexEntry db "@" ScytherDexEntry: db "MANTIS@" db 4,11 dw 1230 TX_FAR _ScytherDexEntry db "@" StaryuDexEntry: db "STARSHAPE@" db 2,7 dw 760 TX_FAR _StaryuDexEntry db "@" BlastoiseDexEntry: db "SHELLFISH@" db 5,3 dw 1890 TX_FAR _BlastoiseDexEntry db "@" PinsirDexEntry: db "STAGBEETLE@" db 4,11 dw 1210 TX_FAR _PinsirDexEntry db "@" TangelaDexEntry: db "VINE@" db 3,3 dw 770 TX_FAR _TangelaDexEntry db "@" GrowlitheDexEntry: db "PUPPY@" db 2,4 dw 420 TX_FAR _GrowlitheDexEntry db "@" OnixDexEntry: db "ROCK SNAKE@" db 28,10 dw 4630 TX_FAR _OnixDexEntry db "@" FearowDexEntry: db "BEAK@" db 3,11 dw 840 TX_FAR _FearowDexEntry db "@" PidgeyDexEntry: db "TINY BIRD@" db 1,0 dw 40 TX_FAR _PidgeyDexEntry db "@" SlowpokeDexEntry: db "DOPEY@" db 3,11 dw 790 TX_FAR _SlowpokeDexEntry db "@" KadabraDexEntry: db "PSI@" db 4,3 dw 1250 TX_FAR _KadabraDexEntry db "@" GravelerDexEntry: db "ROCK@" db 3,3 dw 2320 TX_FAR _GravelerDexEntry db "@" ChanseyDexEntry: db "EGG@" db 3,7 dw 760 TX_FAR _ChanseyDexEntry db "@" MachokeDexEntry: db "SUPERPOWER@" db 4,11 dw 1550 TX_FAR _MachokeDexEntry db "@" MrMimeDexEntry: db "BARRIER@" db 4,3 dw 1200 TX_FAR _MrMimeDexEntry db "@" HitmonleeDexEntry: db "KICKING@" db 4,11 dw 1100 TX_FAR _HitmonleeDexEntry db "@" HitmonchanDexEntry: db "PUNCHING@" db 4,7 dw 1110 TX_FAR _HitmonchanDexEntry db "@" ArbokDexEntry: db "COBRA@" db 11,6 dw 1430 TX_FAR _ArbokDexEntry db "@" ParasectDexEntry: db "MUSHROOM@" db 3,3 dw 650 TX_FAR _ParasectDexEntry db "@" PsyduckDexEntry: db "DUCK@" db 2,7 dw 430 TX_FAR _PsyduckDexEntry db "@" DrowzeeDexEntry: db "HYPNOSIS@" db 3,3 dw 710 TX_FAR _DrowzeeDexEntry db "@" GolemDexEntry: db "MEGATON@" db 4,7 dw 6620 TX_FAR _GolemDexEntry db "@" MagmarDexEntry: db "SPITFIRE@" db 4,3 dw 980 TX_FAR _MagmarDexEntry db "@" ElectabuzzDexEntry: db "ELECTRIC@" db 3,7 dw 660 TX_FAR _ElectabuzzDexEntry db "@" MagnetonDexEntry: db "MAGNET@" db 3,3 dw 1320 TX_FAR _MagnetonDexEntry db "@" KoffingDexEntry: db "POISON GAS@" db 2,0 dw 20 TX_FAR _KoffingDexEntry db "@" MankeyDexEntry: db "PIG MONKEY@" db 1,8 dw 620 TX_FAR _MankeyDexEntry db "@" SeelDexEntry: db "SEA LION@" db 3,7 dw 1980 TX_FAR _SeelDexEntry db "@" DiglettDexEntry: db "MOLE@" db 0,8 dw 20 TX_FAR _DiglettDexEntry db "@" TaurosDexEntry: db "WILD BULL@" db 4,7 dw 1950 TX_FAR _TaurosDexEntry db "@" FarfetchdDexEntry: db "WILD DUCK@" db 2,7 dw 330 TX_FAR _FarfetchdDexEntry db "@" VenonatDexEntry: db "INSECT@" db 3,3 dw 660 TX_FAR _VenonatDexEntry db "@" DragoniteDexEntry: db "DRAGON@" db 7,3 dw 4630 TX_FAR _DragoniteDexEntry db "@" DoduoDexEntry: db "TWIN BIRD@" db 4,7 dw 860 TX_FAR _DoduoDexEntry db "@" PoliwagDexEntry: db "TADPOLE@" db 2,0 dw 270 TX_FAR _PoliwagDexEntry db "@" JynxDexEntry: db "HUMANSHAPE@" db 4,7 dw 900 TX_FAR _JynxDexEntry db "@" MoltresDexEntry: db "FLAME@" db 6,7 dw 1320 TX_FAR _MoltresDexEntry db "@" ArticunoDexEntry: db "FREEZE@" db 5,7 dw 1220 TX_FAR _ArticunoDexEntry db "@" ZapdosDexEntry: db "ELECTRIC@" db 5,3 dw 1160 TX_FAR _ZapdosDexEntry db "@" DittoDexEntry: db "TRANSFORM@" db 1,0 dw 90 TX_FAR _DittoDexEntry db "@" MeowthDexEntry: db "SCRATCHCAT@" db 1,4 dw 90 TX_FAR _MeowthDexEntry db "@" KrabbyDexEntry: db "RIVER CRAB@" db 1,4 dw 140 TX_FAR _KrabbyDexEntry db "@" VulpixDexEntry: db "FOX@" db 2,0 dw 220 TX_FAR _VulpixDexEntry db "@" NinetalesDexEntry: db "FOX@" db 3,7 dw 440 TX_FAR _NinetalesDexEntry db "@" PikachuDexEntry: db "MOUSE@" db 1,4 dw 130 TX_FAR _PikachuDexEntry db "@" RaichuDexEntry: db "MOUSE@" db 2,7 dw 660 TX_FAR _RaichuDexEntry db "@" DratiniDexEntry: db "DRAGON@" db 5,11 dw 70 TX_FAR _DratiniDexEntry db "@" DragonairDexEntry: db "DRAGON@" db 13,1 dw 360 TX_FAR _DragonairDexEntry db "@" KabutoDexEntry: db "SHELLFISH@" db 1,8 dw 250 TX_FAR _KabutoDexEntry db "@" KabutopsDexEntry: db "SHELLFISH@" db 4,3 dw 890 TX_FAR _KabutopsDexEntry db "@" HorseaDexEntry: db "DRAGON@" db 1,4 dw 180 TX_FAR _HorseaDexEntry db "@" SeadraDexEntry: db "DRAGON@" db 3,11 dw 550 TX_FAR _SeadraDexEntry db "@" SandshrewDexEntry: db "MOUSE@" db 2,0 dw 260 TX_FAR _SandshrewDexEntry db "@" SandslashDexEntry: db "MOUSE@" db 3,3 dw 650 TX_FAR _SandslashDexEntry db "@" OmanyteDexEntry: db "SPIRAL@" db 1,4 dw 170 TX_FAR _OmanyteDexEntry db "@" OmastarDexEntry: db "SPIRAL@" db 3,3 dw 770 TX_FAR _OmastarDexEntry db "@" JigglypuffDexEntry: db "BALLOON@" db 1,8 dw 120 TX_FAR _JigglypuffDexEntry db "@" WigglytuffDexEntry: db "BALLOON@" db 3,3 dw 260 TX_FAR _WigglytuffDexEntry db "@" EeveeDexEntry: db "EVOLUTION@" db 1,0 dw 140 TX_FAR _EeveeDexEntry db "@" FlareonDexEntry: db "FLAME@" db 2,11 dw 550 TX_FAR _FlareonDexEntry db "@" JolteonDexEntry: db "LIGHTNING@" db 2,7 dw 540 TX_FAR _JolteonDexEntry db "@" VaporeonDexEntry: db "BUBBLE JET@" db 3,3 dw 640 TX_FAR _VaporeonDexEntry db "@" MachopDexEntry: db "SUPERPOWER@" db 2,7 dw 430 TX_FAR _MachopDexEntry db "@" ZubatDexEntry: db "BAT@" db 2,7 dw 170 TX_FAR _ZubatDexEntry db "@" EkansDexEntry: db "SNAKE@" db 6,7 dw 150 TX_FAR _EkansDexEntry db "@" ParasDexEntry: db "MUSHROOM@" db 1,0 dw 120 TX_FAR _ParasDexEntry db "@" PoliwhirlDexEntry: db "TADPOLE@" db 3,3 dw 440 TX_FAR _PoliwhirlDexEntry db "@" PoliwrathDexEntry: db "TADPOLE@" db 4,3 dw 1190 TX_FAR _PoliwrathDexEntry db "@" WeedleDexEntry: db "HAIRY BUG@" db 1,0 dw 70 TX_FAR _WeedleDexEntry db "@" KakunaDexEntry: db "COCOON@" db 2,0 dw 220 TX_FAR _KakunaDexEntry db "@" BeedrillDexEntry: db "POISON BEE@" db 3,3 dw 650 TX_FAR _BeedrillDexEntry db "@" DodrioDexEntry: db "TRIPLEBIRD@" db 5,11 dw 1880 TX_FAR _DodrioDexEntry db "@" PrimeapeDexEntry: db "PIG MONKEY@" db 3,3 dw 710 TX_FAR _PrimeapeDexEntry db "@" DugtrioDexEntry: db "MOLE@" db 2,4 dw 730 TX_FAR _DugtrioDexEntry db "@" VenomothDexEntry: db "POISONMOTH@" db 4,11 dw 280 TX_FAR _VenomothDexEntry db "@" DewgongDexEntry: db "SEA LION@" db 5,7 dw 2650 TX_FAR _DewgongDexEntry db "@" CaterpieDexEntry: db "WORM@" db 1,0 dw 60 TX_FAR _CaterpieDexEntry db "@" MetapodDexEntry: db "COCOON@" db 2,4 dw 220 TX_FAR _MetapodDexEntry db "@" ButterfreeDexEntry: db "BUTTERFLY@" db 3,7 dw 710 TX_FAR _ButterfreeDexEntry db "@" MachampDexEntry: db "SUPERPOWER@" db 5,3 dw 2870 TX_FAR _MachampDexEntry db "@" GolduckDexEntry: db "DUCK@" db 5,7 dw 1690 TX_FAR _GolduckDexEntry db "@" HypnoDexEntry: db "HYPNOSIS@" db 5,3 dw 1670 TX_FAR _HypnoDexEntry db "@" GolbatDexEntry: db "BAT@" db 5,3 dw 1210 TX_FAR _GolbatDexEntry db "@" MewtwoDexEntry: db "GENETIC@" db 6,7 dw 2690 TX_FAR _MewtwoDexEntry db "@" SnorlaxDexEntry: db "SLEEPING@" db 6,11 dw 10140 TX_FAR _SnorlaxDexEntry db "@" MagikarpDexEntry: db "FISH@" db 2,11 dw 220 TX_FAR _MagikarpDexEntry db "@" MukDexEntry: db "SLUDGE@" db 3,11 dw 660 TX_FAR _MukDexEntry db "@" KinglerDexEntry: db "PINCER@" db 4,3 dw 1320 TX_FAR _KinglerDexEntry db "@" CloysterDexEntry: db "BIVALVE@" db 4,11 dw 2920 TX_FAR _CloysterDexEntry db "@" ElectrodeDexEntry: db "BALL@" db 3,11 dw 1470 TX_FAR _ElectrodeDexEntry db "@" ClefableDexEntry: db "FAIRY@" db 4,3 dw 880 TX_FAR _ClefableDexEntry db "@" WeezingDexEntry: db "POISON GAS@" db 3,11 dw 210 TX_FAR _WeezingDexEntry db "@" PersianDexEntry: db "CLASSY CAT@" db 3,3 dw 710 TX_FAR _PersianDexEntry db "@" MarowakDexEntry: db "BONEKEEPER@" db 3,3 dw 990 TX_FAR _MarowakDexEntry db "@" HaunterDexEntry: db "GAS@" db 5,3 dw 2 TX_FAR _HaunterDexEntry db "@" AbraDexEntry: db "PSI@" db 2,11 dw 430 TX_FAR _AbraDexEntry db "@" AlakazamDexEntry: db "PSI@" db 4,11 dw 1060 TX_FAR _AlakazamDexEntry db "@" PidgeottoDexEntry: db "BIRD@" db 3,7 dw 660 TX_FAR _PidgeottoDexEntry db "@" PidgeotDexEntry: db "BIRD@" db 4,11 dw 870 TX_FAR _PidgeotDexEntry db "@" StarmieDexEntry: db "MYSTERIOUS@" db 3,7 dw 1760 TX_FAR _StarmieDexEntry db "@" BulbasaurDexEntry: db "SEED@" db 2,4 dw 150 TX_FAR _BulbasaurDexEntry db "@" VenusaurDexEntry: db "SEED@" db 6,7 dw 2210 TX_FAR _VenusaurDexEntry db "@" TentacruelDexEntry: db "JELLYFISH@" db 5,3 dw 1210 TX_FAR _TentacruelDexEntry db "@" GoldeenDexEntry: db "GOLDFISH@" db 2,0 dw 330 TX_FAR _GoldeenDexEntry db "@" SeakingDexEntry: db "GOLDFISH@" db 4,3 dw 860 TX_FAR _SeakingDexEntry db "@" PonytaDexEntry: db "FIRE HORSE@" db 3,3 dw 660 TX_FAR _PonytaDexEntry db "@" RapidashDexEntry: db "FIRE HORSE@" db 5,7 dw 2090 TX_FAR _RapidashDexEntry db "@" RattataDexEntry: db "RAT@" db 1,0 dw 80 TX_FAR _RattataDexEntry db "@" RaticateDexEntry: db "RAT@" db 2,4 dw 410 TX_FAR _RaticateDexEntry db "@" NidorinoDexEntry: db "POISON PIN@" db 2,11 dw 430 TX_FAR _NidorinoDexEntry db "@" NidorinaDexEntry: db "POISON PIN@" db 2,7 dw 440 TX_FAR _NidorinaDexEntry db "@" GeodudeDexEntry: db "ROCK@" db 1,4 dw 440 TX_FAR _GeodudeDexEntry db "@" PorygonDexEntry: db "VIRTUAL@" db 2,7 dw 800 TX_FAR _PorygonDexEntry db "@" AerodactylDexEntry: db "FOSSIL@" db 5,11 dw 1300 TX_FAR _AerodactylDexEntry db "@" MagnemiteDexEntry: db "MAGNET@" db 1,0 dw 130 TX_FAR _MagnemiteDexEntry db "@" CharmanderDexEntry: db "LIZARD@" db 2,0 dw 190 TX_FAR _CharmanderDexEntry db "@" SquirtleDexEntry: db "TINYTURTLE@" db 1,8 dw 200 TX_FAR _SquirtleDexEntry db "@" CharmeleonDexEntry: db "FLAME@" db 3,7 dw 420 TX_FAR _CharmeleonDexEntry db "@" WartortleDexEntry: db "TURTLE@" db 3,3 dw 500 TX_FAR _WartortleDexEntry db "@" CharizardDexEntry: db "FLAME@" db 5,7 dw 2000 TX_FAR _CharizardDexEntry db "@" OddishDexEntry: db "WEED@" db 1,8 dw 120 TX_FAR _OddishDexEntry db "@" GloomDexEntry: db "WEED@" db 2,7 dw 190 TX_FAR _GloomDexEntry db "@" VileplumeDexEntry: db "FLOWER@" db 3,11 dw 410 TX_FAR _VileplumeDexEntry db "@" BellsproutDexEntry: db "FLOWER@" db 2,4 dw 90 TX_FAR _BellsproutDexEntry db "@" WeepinbellDexEntry: db "FLYCATCHER@" db 3,3 dw 140 TX_FAR _WeepinbellDexEntry db "@" VictreebelDexEntry: db "FLYCATCHER@" db 5,7 dw 340 TX_FAR _VictreebelDexEntry db "@" MissingNoDexEntry: db "???@" db 10 ; 1.0 m db 100 ; 10.0 kg db 0,"コメント さくせいちゅう@" ; コメント作成中 (Comment to be written) PokedexToIndex: ; 4FF9 ; converts the Pokédex number at $D11E to an index push bc push hl ld a,[$D11E] ld b,a ld c,0 ld hl,PokedexOrder .loop\@ ; go through the list until we find an entry with a matching dex number inc c ld a,[hli] cp b jr nz,.loop\@ ld a,c ld [$D11E],a pop hl pop bc ret IndexToPokedex: ; 5010 ; converts the indexédex number at $D11E to a Pokédex number push bc push hl ld a,[$D11E] dec a ld hl,PokedexOrder ld b,0 ld c,a add hl,bc ld a,[hl] ld [$D11E],a pop hl pop bc ret PokedexOrder: ; 5024 db DEX_RHYDON db DEX_KANGASKHAN db DEX_NIDORAN_M db DEX_CLEFAIRY db DEX_SPEAROW db DEX_VOLTORB db DEX_NIDOKING db DEX_SLOWBRO db DEX_IVYSAUR db DEX_EXEGGUTOR db DEX_LICKITUNG db DEX_EXEGGCUTE db DEX_GRIMER db DEX_GENGAR db DEX_NIDORAN_F db DEX_NIDOQUEEN db DEX_CUBONE db DEX_RHYHORN db DEX_LAPRAS db DEX_ARCANINE db DEX_MEW db DEX_GYARADOS db DEX_SHELLDER db DEX_TENTACOOL db DEX_GASTLY db DEX_SCYTHER db DEX_STARYU db DEX_BLASTOISE db DEX_PINSIR db DEX_TANGELA db 0 ; MISSINGNO. db 0 ; MISSINGNO. db DEX_GROWLITHE db DEX_ONIX db DEX_FEAROW db DEX_PIDGEY db DEX_SLOWPOKE db DEX_KADABRA db DEX_GRAVELER db DEX_CHANSEY db DEX_MACHOKE db DEX_MR_MIME db DEX_HITMONLEE db DEX_HITMONCHAN db DEX_ARBOK db DEX_PARASECT db DEX_PSYDUCK db DEX_DROWZEE db DEX_GOLEM db 0 ; MISSINGNO. db DEX_MAGMAR db 0 ; MISSINGNO. db DEX_ELECTABUZZ db DEX_MAGNETON db DEX_KOFFING db 0 ; MISSINGNO. db DEX_MANKEY db DEX_SEEL db DEX_DIGLETT db DEX_TAUROS db 0 ; MISSINGNO. db 0 ; MISSINGNO. db 0 ; MISSINGNO. db DEX_FARFETCH_D db DEX_VENONAT db DEX_DRAGONITE db 0 ; MISSINGNO. db 0 ; MISSINGNO. db 0 ; MISSINGNO. db DEX_DODUO db DEX_POLIWAG db DEX_JYNX db DEX_MOLTRES db DEX_ARTICUNO db DEX_ZAPDOS db DEX_DITTO db DEX_MEOWTH db DEX_KRABBY db 0 ; MISSINGNO. db 0 ; MISSINGNO. db 0 ; MISSINGNO. db DEX_VULPIX db DEX_NINETALES db DEX_PIKACHU db DEX_RAICHU db 0 ; MISSINGNO. db 0 ; MISSINGNO. db DEX_DRATINI db DEX_DRAGONAIR db DEX_KABUTO db DEX_KABUTOPS db DEX_HORSEA db DEX_SEADRA db 0 ; MISSINGNO. db 0 ; MISSINGNO. db DEX_SANDSHREW db DEX_SANDSLASH db DEX_OMANYTE db DEX_OMASTAR db DEX_JIGGLYPUFF db DEX_WIGGLYTUFF db DEX_EEVEE db DEX_FLAREON db DEX_JOLTEON db DEX_VAPOREON db DEX_MACHOP db DEX_ZUBAT db DEX_EKANS db DEX_PARAS db DEX_POLIWHIRL db DEX_POLIWRATH db DEX_WEEDLE db DEX_KAKUNA db DEX_BEEDRILL db 0 ; MISSINGNO. db DEX_DODRIO db DEX_PRIMEAPE db DEX_DUGTRIO db DEX_VENOMOTH db DEX_DEWGONG db 0 ; MISSINGNO. db 0 ; MISSINGNO. db DEX_CATERPIE db DEX_METAPOD db DEX_BUTTERFREE db DEX_MACHAMP db 0 ; MISSINGNO. db DEX_GOLDUCK db DEX_HYPNO db DEX_GOLBAT db DEX_MEWTWO db DEX_SNORLAX db DEX_MAGIKARP db 0 ; MISSINGNO. db 0 ; MISSINGNO. db DEX_MUK db 0 ; MISSINGNO. db DEX_KINGLER db DEX_CLOYSTER db 0 ; MISSINGNO. db DEX_ELECTRODE db DEX_CLEFABLE db DEX_WEEZING db DEX_PERSIAN db DEX_MAROWAK db 0 ; MISSINGNO. db DEX_HAUNTER db DEX_ABRA db DEX_ALAKAZAM db DEX_PIDGEOTTO db DEX_PIDGEOT db DEX_STARMIE db DEX_BULBASAUR db DEX_VENUSAUR db DEX_TENTACRUEL db 0 ; MISSINGNO. db DEX_GOLDEEN db DEX_SEAKING db 0 ; MISSINGNO. db 0 ; MISSINGNO. db 0 ; MISSINGNO. db 0 ; MISSINGNO. db DEX_PONYTA db DEX_RAPIDASH db DEX_RATTATA db DEX_RATICATE db DEX_NIDORINO db DEX_NIDORINA db DEX_GEODUDE db DEX_PORYGON db DEX_AERODACTYL db 0 ; MISSINGNO. db DEX_MAGNEMITE db 0 ; MISSINGNO. db 0 ; MISSINGNO. db DEX_CHARMANDER db DEX_SQUIRTLE db DEX_CHARMELEON db DEX_WARTORTLE db DEX_CHARIZARD db 0 ; MISSINGNO. db 0 ; MISSINGNO. db 0 ; MISSINGNO. db 0 ; MISSINGNO. db DEX_ODDISH db DEX_GLOOM db DEX_VILEPLUME db DEX_BELLSPROUT db DEX_WEEPINBELL db DEX_VICTREEBEL INCBIN "baserom.gbc",$410e2,$4160c - $410e2 UnnamedText_4160c: ; 0x4160c TX_FAR _UnnamedText_4160c db $50 ; 0x4160c + 5 bytes INCBIN "baserom.gbc",$41611,$41623 - $41611 UnnamedText_41623: ; 0x41623 TX_FAR _UnnamedText_41623 db $50 ; 0x41623 + 5 bytes UnnamedText_41628: ; 0x41628 TX_FAR _UnnamedText_41628 db $50 ; 0x41628 + 5 bytes INCBIN "baserom.gbc",$4162d,$41642 - $4162d UnnamedText_41642: ; 0x41642 TX_FAR _UnnamedText_41642 db $50 ; 0x41642 + 5 bytes UnnamedText_41647: ; 0x41647 TX_FAR _UnnamedText_41647 db $50 ; 0x41647 + 5 bytes INCBIN "baserom.gbc",$4164c,$41655 - $4164c UnnamedText_41655: ; 0x41655 TX_FAR _UnnamedText_41655 db $50 ; 0x41655 + 5 bytes INCBIN "baserom.gbc",$4165a,$4166c - $4165a UnnamedText_4166c: ; 0x4166c TX_FAR _UnnamedText_4166c db $50 ; 0x4166c + 5 bytes UnnamedText_41671: ; 0x41671 TX_FAR _UnnamedText_41671 db $50 ; 0x41671 + 5 bytes INCBIN "baserom.gbc",$41676,$a63 IF _RED INCBIN "gfx/red/introfight.2bpp" ENDC IF _BLUE INCBIN "gfx/blue/introfight.2bpp" ENDC ; XXX what do these do FuncCoord 5,0 ld hl,Coord ld de,OTString67E5 call PlaceString ld a,[$CD3D] ld [$D11E],a ld a,$3A call Predef ld hl,$C3A9 ld de,$D11E ld bc,$8103 call PrintNumber FuncCoord 5,2 ld hl,Coord ld de,$CF4B call PlaceString FuncCoord 8,4 ld hl,Coord ld de,$CD41 call PlaceString ld hl,$C420 ld de,$CD4C ld bc,$8205 jp PrintNumber FuncCoord 5,10 ld hl,Coord ld de,OTString67E5 call PlaceString ld a,[$CD3E] ld [$D11E],a ld a,$3A call Predef ld hl,$C471 ld de,$D11E ld bc,$8103 call PrintNumber FuncCoord 5,12 ld hl,Coord ld de,$CD6D call PlaceString FuncCoord 8,14 ld hl,Coord ld de,$CD4E call PlaceString ld hl,$C4E8 ld de,$CD59 ld bc,$8205 jp PrintNumber OTString67E5: ; 67E5 db "──",$74,$F2,$4E db $4E db "OT/",$4E db $73,"№",$F2,"@" SECTION "bank11",DATA,BANK[$11] LavenderTown_h: ; 0x44000 to 0x4402d (45 bytes) (bank=11) (id=4) db $00 ; tileset db LAVENDER_TOWN_HEIGHT, LAVENDER_TOWN_WIDTH ; dimensions (y, x) dw LavenderTownBlocks, LavenderTownTexts, LavenderTownScript ; blocks, texts, scripts db NORTH | SOUTH | WEST ; connections ; connections data db ROUTE_10 dw Route10Blocks + (ROUTE_10_HEIGHT - 3) * ROUTE_10_WIDTH ; connection strip location dw $C6EB + 0 ; current map position db ROUTE_10_WIDTH, ROUTE_10_WIDTH ; bigness, width db (ROUTE_10_HEIGHT * 2) - 1, (0 * -2) ; alignments (y, x) dw $C6E9 + ROUTE_10_HEIGHT * (ROUTE_10_WIDTH + 6) ; window db ROUTE_12 dw Route12Blocks ; connection strip location dw $C6EB + (LAVENDER_TOWN_HEIGHT + 3) * (LAVENDER_TOWN_WIDTH + 6) + 0 ; current map position db ROUTE_12_WIDTH, ROUTE_12_WIDTH ; bigness, width db 0, (0 * -2) ; alignments (y, x) dw $C6EF + ROUTE_12_WIDTH ; window db ROUTE_8 dw Route8Blocks - 3 + (ROUTE_8_WIDTH) ; connection strip location dw $C6E8 + (LAVENDER_TOWN_WIDTH + 6) * (0 + 3) ; current map position db ROUTE_8_HEIGHT, ROUTE_8_WIDTH ; bigness, width db (0 * -2), (ROUTE_8_WIDTH * 2) - 1 ; alignments (y, x) dw $C6EE + 2 * ROUTE_8_WIDTH ; window ; end connections data dw LavenderTownObject ; objects LavenderTownObject: ; 0x4402d (size=88) db $2c ; border tile db $6 ; warps db $5, $3, $0, LAVENDER_POKECENTER db $5, $e, $0, POKEMONTOWER_1 db $9, $7, $0, LAVENDER_HOUSE_1 db $d, $f, $0, LAVENDER_MART db $d, $3, $0, LAVENDER_HOUSE_2 db $d, $7, $0, NAME_RATERS_HOUSE db $6 ; signs db $9, $b, $4 ; LavenderTownText4 db $3, $9, $5 ; LavenderTownText5 db $d, $10, $6 ; LavenderTownText6 db $5, $4, $7 ; LavenderTownText7 db $9, $5, $8 ; LavenderTownText8 db $7, $11, $9 ; LavenderTownText9 db $3 ; people db SPRITE_LITTLE_GIRL, $9 + 4, $f + 4, $fe, $0, $1 ; person db SPRITE_BLACK_HAIR_BOY_1, $a + 4, $9 + 4, $ff, $ff, $2 ; person db SPRITE_BLACK_HAIR_BOY_2, $7 + 4, $8 + 4, $fe, $2, $3 ; person ; warp-to EVENT_DISP $a, $5, $3 ; LAVENDER_POKECENTER EVENT_DISP $a, $5, $e ; POKEMONTOWER_1 EVENT_DISP $a, $9, $7 ; LAVENDER_HOUSE_1 EVENT_DISP $a, $d, $f ; LAVENDER_MART EVENT_DISP $a, $d, $3 ; LAVENDER_HOUSE_2 EVENT_DISP $a, $d, $7 ; NAME_RATERS_HOUSE LavenderTownBlocks: ; 0x44085 90 INCBIN "maps/lavendertown.blk" ViridianPokecenterBlocks: ; 0x440df 28 INCBIN "maps/viridianpokecenter.blk" SafariZoneRestHouse1Blocks: ; 0x440fb 16 INCBIN "maps/safarizoneresthouse1.blk" LavenderTownScript: ; 0x4410b jp $3c3c ; 0x4410e LavenderTownTexts: ; 0x4410e dw LavenderTownText1, LavenderTownText2, LavenderTownText3, LavenderTownText4, LavenderTownText5, LavenderTownText6, LavenderTownText7, LavenderTownText8, LavenderTownText9 LavenderTownText1: ; 0x44120 db $08 ; asm ld hl, UnnamedText_4413c call PrintText call $35ec ld a, [$cc26] and a ld hl, UnnamedText_44146 jr nz, .asm_40831 ; 0x44131 ld hl, UnnamedText_44141 .asm_40831 ; 0x44136 call PrintText jp TextScriptEnd UnnamedText_4413c: ; 0x4413c TX_FAR _UnnamedText_4413c db $50 ; 0x4413c + 5 bytes UnnamedText_44141: ; 0x44141 TX_FAR _UnnamedText_44141 db $50 ; 0x44141 + 5 bytes UnnamedText_44146: ; 0x44146 TX_FAR _UnnamedText_44146 db $50 ; 0x44146 + 5 bytes LavenderTownText2: ; 0x4414b TX_FAR _LavenderTownText2 db $50 LavenderTownText3: ; 0x44150 TX_FAR _LavenderTownText3 db $50 LavenderTownText4: ; 0x44155 TX_FAR _LavenderTownText4 db $50 LavenderTownText5: ; 0x4415a TX_FAR _LavenderTownText5 db $50 LavenderTownText8: ; 0x4415f TX_FAR _LavenderTownText8 db $50 LavenderTownText9: ; 0x44164 TX_FAR _LavenderTownText9 db $50 INCBIN "baserom.gbc",$44169,$441cc - $44169 UnnamedText_441cc: ; 0x441cc TX_FAR _UnnamedText_441cc db $50 ; 0x441cc + 5 bytes INCBIN "baserom.gbc",$441d1,$44201 - $441d1 UnnamedText_44201: ; 0x44201 TX_FAR _UnnamedText_44201 db $50 ; 0x44201 + 5 bytes UnnamedText_44206: ; 0x44206 TX_FAR _UnnamedText_44206 db $50 ; 0x44206 + 5 bytes UnnamedText_4420b: ; 0x4420b TX_FAR _UnnamedText_4420b db $50 ; 0x4420b + 5 bytes UnnamedText_44210: ; 0x44210 TX_FAR _UnnamedText_44210 db $50 ; 0x44210 + 5 bytes UnnamedText_44215: ; 0x44215 TX_FAR _UnnamedText_44215 db $50 ; 0x44215 + 5 bytes UnnamedText_4421a: ; 0x4421a TX_FAR _UnnamedText_4421a db $50 ; 0x4421a + 5 bytes UnnamedText_4421f: ; 0x4421f TX_FAR _UnnamedText_4421f db $50 ; 0x4421f + 5 bytes UnnamedText_44224: ; 0x44224 TX_FAR _UnnamedText_44224 db $50 ; 0x44224 + 5 bytes UnnamedText_44229: ; 0x44229 TX_FAR _UnnamedText_44229 db $50 ; 0x44229 + 5 bytes UnnamedText_4422e: ; 0x4422e TX_FAR _UnnamedText_4422e db $50 ; 0x4422e + 5 bytes UnnamedText_44233: ; 0x44233 TX_FAR _UnnamedText_44233 db $50 ; 0x44233 + 5 bytes UnnamedText_44238: ; 0x44238 TX_FAR _UnnamedText_44238 db $50 ; 0x44238 + 5 bytes UnnamedText_4423d: ; 0x4423d TX_FAR _UnnamedText_4423d db $50 ; 0x4423d + 5 bytes UnnamedText_44242: ; 0x44242 TX_FAR _UnnamedText_44242 db $50 ; 0x44242 + 5 bytes UnnamedText_44247: ; 0x44247 TX_FAR _UnnamedText_44247 db $50 ; 0x44247 + 5 bytes UnnamedText_4424c: ; 0x4424c TX_FAR _UnnamedText_4424c db $50 ; 0x4424c + 5 bytes ViridianPokecenter_h: ; 0x44251 to 0x4425d (12 bytes) (bank=11) (id=41) db $06 ; tileset db $04, $07 ; dimensions (y, x) dw ViridianPokecenterBlocks, ViridianPokecenterTexts, ViridianPokeCenterScript ; blocks, texts, scripts db $00 ; connections dw ViridianPokecenterObject ; objects ViridianPokeCenterScript: ; 0x4425d call $22fa jp $3c3c ; 0x44263 ViridianPokecenterTexts: ; 0x44263 dw ViridianPokeCenterText1, ViridianPokeCenterText2, ViridianPokeCenterText3, ViridianPokeCenterText4 ViridianPokeCenterText1: ; 0x4426b db $ff ViridianPokeCenterText2: ; 0x4426c TX_FAR _ViridianPokeCenterText1 db $50 INCBIN "baserom.gbc",$44271,$44271 - $44271 ViridianPokeCenterText3: ; 0x44271 TX_FAR _ViridianPokeCenterText3 db $50 ViridianPokeCenterText4: db $f6 ViridianPokecenterObject: ; 0x44277 (size=44) db $0 ; border tile db $2 ; warps db $7, $3, $0, $ff db $7, $4, $0, $ff db $0 ; signs db $4 ; people db SPRITE_NURSE, $1 + 4, $3 + 4, $ff, $d0, $1 ; person db SPRITE_GENTLEMAN, $5 + 4, $a + 4, $fe, $1, $2 ; person db SPRITE_BLACK_HAIR_BOY_1, $3 + 4, $4 + 4, $ff, $ff, $3 ; person db SPRITE_CABLE_CLUB_WOMAN, $2 + 4, $b + 4, $ff, $d0, $4 ; person ; warp-to EVENT_DISP $7, $7, $3 EVENT_DISP $7, $7, $4 Mansion1_h: ; 0x442a3 to 0x442af (12 bytes) (bank=11) (id=165) db $16 ; tileset db MANSION_1_HEIGHT, MANSION_1_WIDTH ; dimensions (y, x) dw Mansion1Blocks, Mansion1Texts, Mansion1Script ; blocks, texts, scripts db $00 ; connections dw Mansion1Object ; objects Mansion1Script: call Mansion1Subscript1 call $3c3c ld hl, Mansion1TrainerHeaders ld de, $4326 ld a, [$d63a] call $3160 ld [$d63a], a ret ; 0x442c5 Mansion1Subscript1: ; 0x442c5 ld hl, $d126 bit 5, [hl] res 5, [hl] ret z ld a, [$d796] bit 0, a jr nz, .asm_442ec ; 0x442d2 $18 ld bc, $060c call $430b ld bc, $0308 call $4304 ld bc, $080a call $4304 ld bc, $0d0d jp $4304 .asm_442ec ld bc, $060c call $4304 ld bc, $0308 call $430b ld bc, $080a call $430b ld bc, $0d0d jp $430b ; 0x44304 INCBIN "baserom.gbc",$44304,$4432c - $44304 Mansion1Texts: ; 0x4432c dw Mansion1Text1, Mansion1Text2, Mansion1Text3, Mansion1Text4 Mansion1TrainerHeaders: Mansion1TrainerHeader0: ; 0x44334 db $1 ; flag's bit db ($3 << 4) ; trainer's view range dw $d798 ; flag's byte dw Mansion1BattleText2 ; 0x434b TextBeforeBattle dw Mansion1AfterBattleText2 ; 0x4355 TextAfterBattle dw Mansion1EndBattleText2 ; 0x4350 TextEndBattle dw Mansion1EndBattleText2 ; 0x4350 TextEndBattle ; 0x44340 db $ff Mansion1Text1: ; 0x44341 db $08 ; asm ld hl, Mansion1TrainerHeader0 call LoadTrainerHeader jp TextScriptEnd Mansion1BattleText2: ; 0x4434b TX_FAR _Mansion1BattleText2 db $50 ; 0x4434b + 5 bytes Mansion1EndBattleText2: ; 0x44350 TX_FAR _Mansion1EndBattleText2 db $50 ; 0x44350 + 5 bytes Mansion1AfterBattleText2: ; 0x44355 TX_FAR _Mansion1AfterBattleText2 db $50 ; 0x44355 + 5 bytes Mansion1Text4: ; 0x4435a db $8 ld hl, UnnamedText_44395 call PrintText call $35ec ld a, [$cc26] and a jr nz, .asm_4438c ; 0x44368 $22 ld a, $1 ld [$cc3c], a ld hl, $d126 set 5, [hl] ld hl, UnnamedText_4439a call PrintText ld a, $ad call $23b1 ld hl, $d796 bit 0, [hl] set 0, [hl] jr z, .asm_44392 ; 0x44386 $a res 0, [hl] jr .asm_44392 ; 0x4438a $6 .asm_4438c ld hl, UnnamedText_4439f call PrintText .asm_44392 jp TextScriptEnd ; 0x44395 UnnamedText_44395: ; 0x44395 TX_FAR _UnnamedText_44395 db $50 ; 0x44395 + 5 bytes UnnamedText_4439a: ; 0x4439a TX_FAR _UnnamedText_4439a db $50 ; 0x4439a + 5 bytes UnnamedText_4439f: ; 0x4439f TX_FAR _UnnamedText_4439f db $50 ; 0x4439f + 5 bytes Mansion1Object: ; 0x443a4 (size=90) db $2e ; border tile db $8 ; warps db $1b, $4, $0, $ff db $1b, $5, $0, $ff db $1b, $6, $0, $ff db $1b, $7, $0, $ff db $a, $5, $0, MANSION_2 db $17, $15, $0, MANSION_4 db $1b, $1a, $0, $ff db $1b, $1b, $0, $ff db $0 ; signs db $3 ; people db SPRITE_OAK_AIDE, $11 + 4, $11 + 4, $ff, $d2, $41, SCIENTIST + $C8, $4 ; trainer db SPRITE_BALL, $3 + 4, $e + 4, $ff, $ff, $82, ESCAPE_ROPE ; item db SPRITE_BALL, $15 + 4, $12 + 4, $ff, $ff, $83, CARBOS ; item ; warp-to EVENT_DISP $f, $1b, $4 EVENT_DISP $f, $1b, $5 EVENT_DISP $f, $1b, $6 EVENT_DISP $f, $1b, $7 EVENT_DISP $f, $a, $5 ; MANSION_2 EVENT_DISP $f, $17, $15 ; MANSION_4 EVENT_DISP $f, $1b, $1a EVENT_DISP $f, $1b, $1b Mansion1Blocks: ; 0x44405 203 INCBIN "maps/mansion1.blk" RockTunnel1_h: ; 0x444d0 to 0x444dc (12 bytes) (bank=11) (id=82) db $11 ; tileset db ROCK_TUNNEL_1_HEIGHT, ROCK_TUNNEL_1_WIDTH ; dimensions (y, x) dw RockTunnel1Blocks, RockTunnel1Texts, RockTunnel1Script ; blocks, texts, scripts db $00 ; connections dw RockTunnel1Object ; objects RockTunnel1Script: ; 0x444dc call $3c3c ld hl, Unnamed_44505 ; $4505 ld de, Unnamed_444ef ; $44ef ld a, [$d621] call $3160 ld [$d621], a ret ; 0x444ef Unnamed_444ef: INCBIN "baserom.gbc",$444ef,$6 RockTunnel1Texts: ; 0x444f5 dw RockTunnel1Text1, RockTunnel1Text2, RockTunnel1Text3, RockTunnel1Text4, RockTunnel1Text5, RockTunnel1Text6, RockTunnel1Text7, RockTunnel1Text8 Unnamed_44505: INCBIN "baserom.gbc",$44505,$55 RockTunnel1Text1: ; 0x4455a db $8 ld hl, $4505 jr asm_0c916 ; 0x4455e $22 RockTunnel1Text2: db $8 ld hl, $4511 jr asm_0c916 ; 0x44564 $1c RockTunnel1Text3: db $8 ld hl, $451d jr asm_0c916 ; 0x4456a $16 RockTunnel1Text4: db $8 ld hl, $4529 jr asm_0c916 ; 0x44570 $10 RockTunnel1Text5: db $8 ld hl, $4535 jr asm_0c916 ; 0x44576 $a RockTunnel1Text6: db $8 ld hl, $4541 jr asm_0c916 ; 0x4457c $4 RockTunnel1Text7: db $8 ld hl, $454d asm_0c916: ; 0x44582 call $31cc jp TextScriptEnd UnnamedText_44588: ; 0x44588 TX_FAR _UnnamedText_44588 db $50 ; 0x44588 + 5 bytes UnnamedText_4458d: ; 0x4458d TX_FAR _UnnamedText_4458d db $50 ; 0x4458d + 5 bytes UnnamedText_44592: ; 0x44592 TX_FAR _UnnamedText_44592 db $50 ; 0x44592 + 5 bytes UnnamedText_44597: ; 0x44597 TX_FAR _UnnamedText_44597 db $50 ; 0x44597 + 5 bytes UnnamedText_4459c: ; 0x4459c TX_FAR _UnnamedText_4459c db $50 ; 0x4459c + 5 bytes UnnamedText_445a1: ; 0x445a1 TX_FAR _UnnamedText_445a1 db $50 ; 0x445a1 + 5 bytes UnnamedText_445a6: ; 0x445a6 TX_FAR _UnnamedText_445a6 db $50 ; 0x445a6 + 5 bytes UnnamedText_445ab: ; 0x445ab TX_FAR _UnnamedText_445ab db $50 ; 0x445ab + 5 bytes UnnamedText_445b0: ; 0x445b0 TX_FAR _UnnamedText_445b0 db $50 ; 0x445b0 + 5 bytes UnnamedText_445b5: ; 0x445b5 TX_FAR _UnnamedText_445b5 db $50 ; 0x445b5 + 5 bytes UnnamedText_445ba: ; 0x445ba TX_FAR _UnnamedText_445ba db $50 ; 0x445ba + 5 bytes UnnamedText_445bf: ; 0x445bf TX_FAR _UnnamedText_445bf db $50 ; 0x445bf + 5 bytes UnnamedText_445c4: ; 0x445c4 TX_FAR _UnnamedText_445c4 db $50 ; 0x445c4 + 5 bytes UnnamedText_445c9: ; 0x445c9 TX_FAR _UnnamedText_445c9 db $50 ; 0x445c9 + 5 bytes UnnamedText_445ce: ; 0x445ce TX_FAR _UnnamedText_445ce db $50 ; 0x445ce + 5 bytes UnnamedText_445d3: ; 0x445d3 TX_FAR _UnnamedText_445d3 db $50 ; 0x445d3 + 5 bytes UnnamedText_445d8: ; 0x445d8 TX_FAR _UnnamedText_445d8 db $50 ; 0x445d8 + 5 bytes UnnamedText_445dd: ; 0x445dd TX_FAR _UnnamedText_445dd db $50 ; 0x445dd + 5 bytes UnnamedText_445e2: ; 0x445e2 TX_FAR _UnnamedText_445e2 db $50 ; 0x445e2 + 5 bytes UnnamedText_445e7: ; 0x445e7 TX_FAR _UnnamedText_445e7 db $50 ; 0x445e7 + 5 bytes UnnamedText_445ec: ; 0x445ec TX_FAR _UnnamedText_445ec db $50 ; 0x445ec + 5 bytes RockTunnel1Text8: ; 0x445f1 TX_FAR _RockTunnel1Text8 db $50 RockTunnel1Object: ; 0x445f6 (size=127) db $3 ; border tile db $8 ; warps db $3, $f, $1, $ff db $0, $f, $1, $ff db $21, $f, $2, $ff db $23, $f, $2, $ff db $3, $25, $0, ROCK_TUNNEL_2 db $3, $5, $1, ROCK_TUNNEL_2 db $b, $11, $2, ROCK_TUNNEL_2 db $11, $25, $3, ROCK_TUNNEL_2 db $1 ; signs db $1d, $b, $8 ; RockTunnel1Text8 db $7 ; people db SPRITE_HIKER, $5 + 4, $7 + 4, $ff, $d0, $41, HIKER + $C8, $c ; trainer db SPRITE_HIKER, $10 + 4, $5 + 4, $ff, $d0, $42, HIKER + $C8, $d ; trainer db SPRITE_HIKER, $f + 4, $11 + 4, $ff, $d2, $43, HIKER + $C8, $e ; trainer db SPRITE_BLACK_HAIR_BOY_2, $8 + 4, $17 + 4, $ff, $d2, $44, POKEMANIAC + $C8, $7 ; trainer db SPRITE_LASS, $15 + 4, $25 + 4, $ff, $d2, $45, JR__TRAINER_F + $C8, $11 ; trainer db SPRITE_LASS, $18 + 4, $16 + 4, $ff, $d0, $46, JR__TRAINER_F + $C8, $12 ; trainer db SPRITE_LASS, $18 + 4, $20 + 4, $ff, $d3, $47, JR__TRAINER_F + $C8, $13 ; trainer ; warp-to EVENT_DISP $14, $3, $f EVENT_DISP $14, $0, $f EVENT_DISP $14, $21, $f EVENT_DISP $14, $23, $f EVENT_DISP $14, $3, $25 ; ROCK_TUNNEL_2 EVENT_DISP $14, $3, $5 ; ROCK_TUNNEL_2 EVENT_DISP $14, $b, $11 ; ROCK_TUNNEL_2 EVENT_DISP $14, $11, $25 ; ROCK_TUNNEL_2 RockTunnel1Blocks: ; 0x44675 360 INCBIN "maps/rocktunnel1.blk" SeafoamIslands1_h: ; 0x447dd to 0x447e9 (12 bytes) (bank=11) (id=192) db $11 ; tileset db SEAFOAM_ISLANDS_1_HEIGHT, SEAFOAM_ISLANDS_1_WIDTH ; dimensions (y, x) dw SeafoamIslands1Blocks, SeafoamIslands1Texts, SeafoamIslands1Script ; blocks, texts, scripts db $00 ; connections dw SeafoamIslands1Object ; objects SeafoamIslands1Script: ; 0x447e9 call $3c3c ld hl, $d7e7 set 0, [hl] ld hl, $cd60 bit 7, [hl] res 7, [hl] jr z, .asm_4483b ; 0x447f8 $41 ld hl, SeafoamIslands1Script_Unknown44846 call $34e4 ret nc ld hl, $d7e8 ld a, [$cd3d] cp $1 jr nz, .asm_44819 ; 0x44809 $e set 6, [hl] ld a, $d7 ld [$d079], a ld a, $d9 ld [$d07a], a jr .asm_44825 ; 0x44817 $c .asm_44819 set 7, [hl] ld a, $d8 ld [$d079], a ld a, $da ld [$d07a], a .asm_44825 ld a, [$d079] ld [$cc4d], a ld a, $11 call Predef ld a, [$d07a] ld [$cc4d], a ld a, $15 jp $3e6d .asm_4483b ld a, $9f ld [$d71d], a ld hl, SeafoamIslands1Script_Unknown44846 jp $6981 ; 0x44846 SeafoamIslands1Script_Unknown44846: ; 0x44846 INCBIN "baserom.gbc",$44846,$5 SeafoamIslands1Texts: ; 0x4484b dw SeafoamIslands1Text1, SeafoamIslands1Text2 SeafoamIslands1Object: ; 0x4484f (size=72) db $7d ; border tile db $7 ; warps db $11, $4, $0, $ff db $11, $5, $0, $ff db $11, $1a, $1, $ff db $11, $1b, $1, $ff db $5, $7, $1, SEAFOAM_ISLANDS_2 db $3, $19, $6, SEAFOAM_ISLANDS_2 db $f, $17, $4, SEAFOAM_ISLANDS_2 db $0 ; signs db $2 ; people db SPRITE_BOULDER, $a + 4, $12 + 4, $ff, $10, $1 ; person db SPRITE_BOULDER, $7 + 4, $1a + 4, $ff, $10, $2 ; person ; warp-to EVENT_DISP $f, $11, $4 EVENT_DISP $f, $11, $5 EVENT_DISP $f, $11, $1a EVENT_DISP $f, $11, $1b EVENT_DISP $f, $5, $7 ; SEAFOAM_ISLANDS_2 EVENT_DISP $f, $3, $19 ; SEAFOAM_ISLANDS_2 EVENT_DISP $f, $f, $17 ; SEAFOAM_ISLANDS_2 INCBIN "baserom.gbc",$44897,$8 SeafoamIslands1Blocks: ; 0x4489f 135 INCBIN "maps/seafoamislands1.blk" SSAnne3_h: ; 0x44926 to 0x44932 (12 bytes) (bank=11) (id=97) db $0d ; tileset db SS_ANNE_3_HEIGHT, SS_ANNE_3_WIDTH ; dimensions (y, x) dw SSAnne3Blocks, SSAnne3Texts, SSAnne3Script ; blocks, texts, scripts db $00 ; connections dw SSAnne3Object ; objects SSAnne3Script: ; 0x44932 jp $3c3c ; 0x44935 SSAnne3Texts: ; 0x44935 dw SSAnne3Text1 SSAnne3Text1: ; 0x44937 TX_FAR _SSAnne3Text1 db $50 SSAnne3Object: ; 0x4493c (size=26) db $c ; border tile db $2 ; warps db $3, $0, $0, SS_ANNE_5 db $3, $13, $7, SS_ANNE_2 db $0 ; signs db $1 ; people db SPRITE_SAILOR, $3 + 4, $9 + 4, $fe, $2, $1 ; person ; warp-to EVENT_DISP $a, $3, $0 ; SS_ANNE_5 EVENT_DISP $a, $3, $13 ; SS_ANNE_2 SSAnne3Blocks: ; 0x44956 30 INCBIN "maps/ssanne3.blk" VictoryRoad3_h: ; 0x44974 to 0x44980 (12 bytes) (bank=11) (id=198) db $11 ; tileset db VICTORY_ROAD_3_HEIGHT, VICTORY_ROAD_3_WIDTH ; dimensions (y, x) dw VictoryRoad3Blocks, VictoryRoad3Texts, VictoryRoad3Script ; blocks, texts, scripts db $00 ; connections dw VictoryRoad3Object ; objects VictoryRoad3Script: ; 0x44980 call VictoryRoad3Script_Unknown44996 call $3c3c ld hl, VictoryRoad3TrainerHeaders ld de, $49b1 ld a, [$d640] call $3160 ld [$d640], a ret ; 0x44996 VictoryRoad3Script_Unknown44996: ; 0x44996 INCBIN "baserom.gbc",$44996,$8e VictoryRoad3Texts: ; 0x44a24 dw VictoryRoad3Text1, VictoryRoad3Text2, VictoryRoad3Text3, VictoryRoad3Text4, VictoryRoad3Text5, VictoryRoad3Text6, VictoryRoad3Text7, VictoryRoad3Text8, VictoryRoad3Text9, VictoryRoad3Text10 VictoryRoad3TrainerHeaders: VictoryRoad3TrainerHeader0: ; 0x44a38 db $1 ; flag's bit db ($1 << 4) ; trainer's view range dw $d813 ; flag's byte dw VictoryRoad3BattleText2 ; 0x4a91 TextBeforeBattle dw VictoryRoad3AfterBattleText2 ; 0x4a9b TextAfterBattle dw VictoryRoad3EndBattleText2 ; 0x4a96 TextEndBattle dw VictoryRoad3EndBattleText2 ; 0x4a96 TextEndBattle ; 0x44a44 VictoryRoad3TrainerHeader2: ; 0x44a44 db $2 ; flag's bit db ($4 << 4) ; trainer's view range dw $d813 ; flag's byte dw VictoryRoad3BattleText3 ; 0x4aa0 TextBeforeBattle dw VictoryRoad3AfterBattleText3 ; 0x4aaa TextAfterBattle dw VictoryRoad3EndBattleText3 ; 0x4aa5 TextEndBattle dw VictoryRoad3EndBattleText3 ; 0x4aa5 TextEndBattle ; 0x44a50 VictoryRoad3TrainerHeader3: ; 0x44a50 db $3 ; flag's bit db ($4 << 4) ; trainer's view range dw $d813 ; flag's byte dw VictoryRoad3BattleText4 ; 0x4aaf TextBeforeBattle dw VictoryRoad3AfterBattleText4 ; 0x4ab9 TextAfterBattle dw VictoryRoad3EndBattleText4 ; 0x4ab4 TextEndBattle dw VictoryRoad3EndBattleText4 ; 0x4ab4 TextEndBattle ; 0x44a5c VictoryRoad3TrainerHeader4: ; 0x44a5c db $4 ; flag's bit db ($4 << 4) ; trainer's view range dw $d813 ; flag's byte dw VictoryRoad3BattleText5 ; 0x4abe TextBeforeBattle dw VictoryRoad3AfterBattleText5 ; 0x4ac8 TextAfterBattle dw VictoryRoad3EndBattleText5 ; 0x4ac3 TextEndBattle dw VictoryRoad3EndBattleText5 ; 0x4ac3 TextEndBattle ; 0x44a68 db $ff VictoryRoad3Text1: ; 0x44a69 db $08 ; asm ld hl, VictoryRoad3TrainerHeader0 call LoadTrainerHeader jp TextScriptEnd VictoryRoad3Text2: ; 0x44a73 db $08 ; asm ld hl, VictoryRoad3TrainerHeader2 call LoadTrainerHeader jp TextScriptEnd VictoryRoad3Text3: ; 0x44a7d db $08 ; asm ld hl, VictoryRoad3TrainerHeader3 call LoadTrainerHeader jp TextScriptEnd VictoryRoad3Text4: ; 0x44a87 db $08 ; asm ld hl, VictoryRoad3TrainerHeader4 call LoadTrainerHeader jp TextScriptEnd VictoryRoad3BattleText2: ; 0x44a91 TX_FAR _VictoryRoad3BattleText2 db $50 ; 0x44a91 + 5 bytes VictoryRoad3EndBattleText2: ; 0x44a96 TX_FAR _VictoryRoad3EndBattleText2 db $50 ; 0x44a96 + 5 bytes VictoryRoad3AfterBattleText2: ; 0x44a9b TX_FAR _VictoryRoad3AfterBattleText2 db $50 ; 0x44a9b + 5 bytes VictoryRoad3BattleText3: ; 0x44aa0 TX_FAR _VictoryRoad3BattleText3 db $50 ; 0x44aa0 + 5 bytes VictoryRoad3EndBattleText3: ; 0x44aa5 TX_FAR _VictoryRoad3EndBattleText3 db $50 ; 0x44aa5 + 5 bytes VictoryRoad3AfterBattleText3: ; 0x44aaa TX_FAR _VictoryRoad3AfterBattleText3 db $50 ; 0x44aaa + 5 bytes VictoryRoad3BattleText4: ; 0x44aaf TX_FAR _VictoryRoad3BattleText4 db $50 ; 0x44aaf + 5 bytes VictoryRoad3EndBattleText4: ; 0x44ab4 TX_FAR _VictoryRoad3EndBattleText4 db $50 ; 0x44ab4 + 5 bytes VictoryRoad3AfterBattleText4: ; 0x44ab9 TX_FAR _VictoryRoad3AfterBattleText4 db $50 ; 0x44ab9 + 5 bytes VictoryRoad3BattleText5: ; 0x44abe TX_FAR _VictoryRoad3BattleText5 db $50 ; 0x44abe + 5 bytes VictoryRoad3EndBattleText5: ; 0x44ac3 TX_FAR _VictoryRoad3EndBattleText5 db $50 ; 0x44ac3 + 5 bytes VictoryRoad3AfterBattleText5: ; 0x44ac8 TX_FAR _VictoryRoad3AfterBattleText5 db $50 ; 0x44ac8 + 5 bytes VictoryRoad3Object: ; 0x44acd (size=106) db $7d ; border tile db $4 ; warps db $7, $17, $3, VICTORY_ROAD_2 db $8, $1a, $5, VICTORY_ROAD_2 db $f, $1b, $4, VICTORY_ROAD_2 db $0, $2, $6, VICTORY_ROAD_2 db $0 ; signs db $a ; people db SPRITE_BLACK_HAIR_BOY_1, $5 + 4, $1c + 4, $ff, $d2, $41, COOLTRAINER_M + $C8, $2 ; trainer db SPRITE_LASS, $d + 4, $7 + 4, $ff, $d3, $42, COOLTRAINER_F + $C8, $2 ; trainer db SPRITE_BLACK_HAIR_BOY_1, $e + 4, $6 + 4, $ff, $d2, $43, COOLTRAINER_M + $C8, $3 ; trainer db SPRITE_LASS, $3 + 4, $d + 4, $ff, $d3, $44, COOLTRAINER_F + $C8, $3 ; trainer db SPRITE_BALL, $5 + 4, $1a + 4, $ff, $ff, $85, MAX_REVIVE ; item db SPRITE_BALL, $7 + 4, $7 + 4, $ff, $ff, $86, TM_47 ; item db SPRITE_BOULDER, $3 + 4, $16 + 4, $ff, $10, $7 ; person db SPRITE_BOULDER, $c + 4, $d + 4, $ff, $10, $8 ; person db SPRITE_BOULDER, $a + 4, $18 + 4, $ff, $10, $9 ; person db SPRITE_BOULDER, $f + 4, $16 + 4, $ff, $10, $a ; person ; warp-to EVENT_DISP $f, $7, $17 ; VICTORY_ROAD_2 EVENT_DISP $f, $8, $1a ; VICTORY_ROAD_2 EVENT_DISP $f, $f, $1b ; VICTORY_ROAD_2 EVENT_DISP $f, $0, $2 ; VICTORY_ROAD_2 VictoryRoad3Blocks: ; 0x44b37 135 INCBIN "maps/victoryroad3.blk" RocketHideout1_h: ; 0x44bbe to 0x44bca (12 bytes) (bank=11) (id=199) db $16 ; tileset db ROCKET_HIDEOUT_1_HEIGHT, ROCKET_HIDEOUT_1_WIDTH ; dimensions (y, x) dw RocketHideout1Blocks, RocketHideout1Texts, RocketHideout1Script ; blocks, texts, scripts db $00 ; connections dw RocketHideout1Object ; objects RocketHideout1Script: ; 0x44bca call Unknown_44be0 call $3c3c ld hl, RocketHideout1TrainerHeaders ld de, $4c0e ld a, [$d631] call $3160 ld [$d631], a ret ; 0x44be0 Unknown_44be0: ; 0x44be0 INCBIN "baserom.gbc",$44be0,$34 RocketHideout1Texts: ; 0x44c14 dw RocketHideout1Text1, RocketHideout1Text2, RocketHideout1Text3, RocketHideout1Text4, RocketHideout1Text5, RocketHideout1Text6, RocketHideout1Text7 RocketHideout1TrainerHeaders: RocketHideout1TrainerHeader0: ; 0x44c22 db $1 ; flag's bit db ($3 << 4) ; trainer's view range dw $d815 ; flag's byte dw RocketHideout1BattleText2 ; 0x4ca1 TextBeforeBattle dw RocketHideout1AfterBattleTxt2 ; 0x4cab TextAfterBattle dw RocketHideout1EndBattleText2 ; 0x4ca6 TextEndBattle dw RocketHideout1EndBattleText2 ; 0x4ca6 TextEndBattle ; 0x44c2e RocketHideout1TrainerHeader2: ; 0x44c2e db $2 ; flag's bit db ($2 << 4) ; trainer's view range dw $d815 ; flag's byte dw RocketHideout1BattleText3 ; 0x4cb0 TextBeforeBattle dw RocketHideout1AfterBattleTxt3 ; 0x4cba TextAfterBattle dw RocketHideout1EndBattleText3 ; 0x4cb5 TextEndBattle dw RocketHideout1EndBattleText3 ; 0x4cb5 TextEndBattle ; 0x44c3a RocketHideout1TrainerHeader3: ; 0x44c3a db $3 ; flag's bit db ($2 << 4) ; trainer's view range dw $d815 ; flag's byte dw RocketHideout1BattleText4 ; 0x4cbf TextBeforeBattle dw RocketHideout1AfterBattleTxt4 ; 0x4cc9 TextAfterBattle dw RocketHideout1EndBattleText4 ; 0x4cc4 TextEndBattle dw RocketHideout1EndBattleText4 ; 0x4cc4 TextEndBattle ; 0x44c46 RocketHideout1TrainerHeader4: ; 0x44c46 db $4 ; flag's bit db ($3 << 4) ; trainer's view range dw $d815 ; flag's byte dw RocketHideout1BattleText5 ; 0x4cce TextBeforeBattle dw RocketHideout1AfterBattleTxt5 ; 0x4cd8 TextAfterBattle dw RocketHideout1EndBattleText5 ; 0x4cd3 TextEndBattle dw RocketHideout1EndBattleText5 ; 0x4cd3 TextEndBattle ; 0x44c52 RocketHideout1TrainerHeader5: ; 0x44c52 db $5 ; flag's bit db ($3 << 4) ; trainer's view range dw $d815 ; flag's byte dw RocketHideout1BattleText6 ; 0x4cdd TextBeforeBattle dw RocketHideout1AfterBattleTxt6 ; 0x4ce2 TextAfterBattle dw RocketHideout1EndBattleText6 ; 0x4c91 TextEndBattle dw RocketHideout1EndBattleText6 ; 0x4c91 TextEndBattle ; 0x44c5e db $ff RocketHideout1Text1: ; 0x44c5f db $08 ; asm ld hl, RocketHideout1TrainerHeader0 call LoadTrainerHeader jp TextScriptEnd RocketHideout1Text2: ; 0x44c69 db $08 ; asm ld hl, RocketHideout1TrainerHeader2 call LoadTrainerHeader jp TextScriptEnd RocketHideout1Text3: ; 0x44c73 db $08 ; asm ld hl, RocketHideout1TrainerHeader3 call LoadTrainerHeader jp TextScriptEnd RocketHideout1Text4: ; 0x44c7d db $08 ; asm ld hl, RocketHideout1TrainerHeader4 call LoadTrainerHeader jp TextScriptEnd RocketHideout1Text5: ; 0x44c87 db $08 ; asm ld hl, RocketHideout1TrainerHeader5 call LoadTrainerHeader jp TextScriptEnd RocketHideout1EndBattleText6: ; 0x44c91 TX_FAR _RocketHideout1EndBattleText6 ; 0x81f2a db $8 ld hl, $d815 set 5, [hl] ld hl, UnnamedText_44c9f ret ; 0x44c9f UnnamedText_44c9f: ; 0x44c9f db $6, $50 ; 0x44ca1 RocketHideout1BattleText2: ; 0x44ca1 TX_FAR _RocketHideout1BattleText2 db $50 ; 0x44ca1 + 5 bytes RocketHideout1EndBattleText2: ; 0x44ca6 TX_FAR _RocketHideout1EndBattleText2 db $50 ; 0x44ca6 + 5 bytes RocketHideout1AfterBattleTxt2: ; 0x44cab TX_FAR _RocketHideout1AfterBattleTxt2 db $50 ; 0x44cab + 5 bytes RocketHideout1BattleText3: ; 0x44cb0 TX_FAR _RocketHideout1BattleText3 db $50 ; 0x44cb0 + 5 bytes RocketHideout1EndBattleText3: ; 0x44cb5 TX_FAR _RocketHideout1EndBattleText3 db $50 ; 0x44cb5 + 5 bytes RocketHideout1AfterBattleTxt3: ; 0x44cba TX_FAR _RocketHideout1AfterBattleTxt3 db $50 ; 0x44cba + 5 bytes RocketHideout1BattleText4: ; 0x44cbf TX_FAR _RocketHideout1BattleText4 db $50 ; 0x44cbf + 5 bytes RocketHideout1EndBattleText4: ; 0x44cc4 TX_FAR _RocketHideout1EndBattleText4 db $50 ; 0x44cc4 + 5 bytes RocketHideout1AfterBattleTxt4: ; 0x44cc9 TX_FAR _RocketHideout1AfterBattleTxt4 db $50 ; 0x44cc9 + 5 bytes RocketHideout1BattleText5: ; 0x44cce TX_FAR _RocketHideout1BattleText5 db $50 ; 0x44cce + 5 bytes RocketHideout1EndBattleText5: ; 0x44cd3 TX_FAR _RocketHideout1EndBattleText5 db $50 ; 0x44cd3 + 5 bytes RocketHideout1AfterBattleTxt5: ; 0x44cd8 TX_FAR _RocketHideout1AfterBattleTxt5 db $50 ; 0x44cd8 + 5 bytes RocketHideout1BattleText6: ; 0x44cdd TX_FAR _RocketHideout1BattleText6 db $50 ; 0x44cdd + 5 bytes RocketHideout1AfterBattleTxt6: ; 0x44ce2 TX_FAR _RocketHideout1AfterBattleTxt6 db $50 ; 0x44ce2 + 5 bytes RocketHideout1Object: ; 0x44ce7 (size=98) db $2e ; border tile db $5 ; warps db $2, $17, $0, ROCKET_HIDEOUT_2 db $2, $15, $2, GAME_CORNER db $13, $18, $0, ROCKET_HIDEOUT_ELEVATOR db $18, $15, $3, ROCKET_HIDEOUT_2 db $13, $19, $1, ROCKET_HIDEOUT_ELEVATOR db $0 ; signs db $7 ; people db SPRITE_ROCKET, $8 + 4, $1a + 4, $ff, $d2, $41, ROCKET + $C8, $8 ; trainer db SPRITE_ROCKET, $6 + 4, $c + 4, $ff, $d3, $42, ROCKET + $C8, $9 ; trainer db SPRITE_ROCKET, $11 + 4, $12 + 4, $ff, $d0, $43, ROCKET + $C8, $a ; trainer db SPRITE_ROCKET, $19 + 4, $f + 4, $ff, $d3, $44, ROCKET + $C8, $b ; trainer db SPRITE_ROCKET, $12 + 4, $1c + 4, $ff, $d2, $45, ROCKET + $C8, $c ; trainer db SPRITE_BALL, $e + 4, $b + 4, $ff, $ff, $86, ESCAPE_ROPE ; item db SPRITE_BALL, $11 + 4, $9 + 4, $ff, $ff, $87, HYPER_POTION ; item ; warp-to EVENT_DISP $f, $2, $17 ; ROCKET_HIDEOUT_2 EVENT_DISP $f, $2, $15 ; GAME_CORNER EVENT_DISP $f, $13, $18 ; ROCKET_HIDEOUT_ELEVATOR EVENT_DISP $f, $18, $15 ; ROCKET_HIDEOUT_2 EVENT_DISP $f, $13, $19 ; ROCKET_HIDEOUT_ELEVATOR RocketHideout1Blocks: ; 0x44d49 210 INCBIN "maps/rockethideout1.blk" RocketHideout2_h: ; 0x44e1b to 0x44e27 (12 bytes) (bank=11) (id=200) db $16 ; tileset db ROCKET_HIDEOUT_2_HEIGHT, ROCKET_HIDEOUT_2_WIDTH ; dimensions (y, x) dw RocketHideout2Blocks, RocketHideout2Texts, RocketHideout2Script ; blocks, texts, scripts db $00 ; connections dw RocketHideout2Object ; objects RocketHideout2Script: ; 0x44e27 call $3c3c ld hl, RocketHideout2TrainerHeaders ld de, RocketHideout2_Unknown44e3a ld a, [$d632] call $3160 ld [$d632], a ret ; 0x44e3a RocketHideout2_Unknown44e3a: ; 0x44ea INCBIN "baserom.gbc",$44e3a,$28d RocketHideout2Texts: ; 0x450c7 dw RocketHideout2Text1, RocketHideout2Text2, RocketHideout2Text3, RocketHideout2Text4, RocketHideout2Text5 RocketHideout2TrainerHeaders: RocketHideout2TrainerHeader0: ; 0x450d1 db $1 ; flag's bit db ($4 << 4) ; trainer's view range dw $d817 ; flag's byte dw RocketHideout2BattleText2 ; 0x50e8 TextBeforeBattle dw RocketHideout2AfterBattleTxt2 ; 0x50f2 TextAfterBattle dw RocketHideout2EndBattleText2 ; 0x50ed TextEndBattle dw RocketHideout2EndBattleText2 ; 0x50ed TextEndBattle ; 0x450dd db $ff RocketHideout2Text1: ; 0x450de db $08 ; asm ld hl, RocketHideout2TrainerHeader0 call LoadTrainerHeader jp TextScriptEnd RocketHideout2BattleText2: ; 0x450e8 TX_FAR _RocketHideout2BattleText2 db $50 ; 0x450e8 + 5 bytes RocketHideout2EndBattleText2: ; 0x450ed TX_FAR _RocketHideout2EndBattleText2 db $50 ; 0x450ed + 5 bytes RocketHideout2AfterBattleTxt2: ; 0x450f2 TX_FAR _RocketHideout2AfterBattleTxt2 db $50 ; 0x450f2 + 5 bytes RocketHideout2Object: ; 0x450f7 (size=80) db $2e ; border tile db $5 ; warps db $8, $1b, $0, ROCKET_HIDEOUT_1 db $8, $15, $0, ROCKET_HIDEOUT_3 db $13, $18, $0, ROCKET_HIDEOUT_ELEVATOR db $16, $15, $3, ROCKET_HIDEOUT_1 db $13, $19, $1, ROCKET_HIDEOUT_ELEVATOR db $0 ; signs db $5 ; people db SPRITE_ROCKET, $c + 4, $14 + 4, $ff, $d0, $41, ROCKET + $C8, $d ; trainer db SPRITE_BALL, $b + 4, $1 + 4, $ff, $ff, $82, MOON_STONE ; item db SPRITE_BALL, $8 + 4, $10 + 4, $ff, $ff, $83, NUGGET ; item db SPRITE_BALL, $c + 4, $6 + 4, $ff, $ff, $84, TM_07 ; item db SPRITE_BALL, $15 + 4, $3 + 4, $ff, $ff, $85, SUPER_POTION ; item ; warp-to EVENT_DISP $f, $8, $1b ; ROCKET_HIDEOUT_1 EVENT_DISP $f, $8, $15 ; ROCKET_HIDEOUT_3 EVENT_DISP $f, $13, $18 ; ROCKET_HIDEOUT_ELEVATOR EVENT_DISP $f, $16, $15 ; ROCKET_HIDEOUT_1 EVENT_DISP $f, $13, $19 ; ROCKET_HIDEOUT_ELEVATOR RocketHideout2Blocks: ; 0x45147 210 INCBIN "maps/rockethideout2.blk" RocketHideout3_h: ; 0x45219 to 0x45225 (12 bytes) (bank=11) (id=201) db $16 ; tileset db ROCKET_HIDEOUT_3_HEIGHT, ROCKET_HIDEOUT_3_WIDTH ; dimensions (y, x) dw RocketHideout3Blocks, RocketHideout3Texts, RocketHideout3Script ; blocks, texts, scripts db $00 ; connections dw RocketHideout3Object ; objects RocketHideout3Script: ; 0x45225 call $3c3c ld hl, RocketHideout3TrainerHeaders ld de, RocketHideout3Script_Unknown45238 ld a, [$d633] call $3160 ld [$d633], a ret ; 0x45238 RocketHideout3Script_Unknown45238: ; 0x45238 INCBIN "baserom.gbc",$45238,$c2 RocketHideout3Texts: ; 0x452fa dw RocketHideout3Text1, RocketHideout3Text2, RocketHideout3Text3, RocketHideout3Text4 RocketHideout3TrainerHeaders: RocketHideout3TrainerHeader0: ; 0x45302 db $1 ; flag's bit db ($2 << 4) ; trainer's view range dw $d819 ; flag's byte dw RocketHideout3BattleText2 ; 0x5325 TextBeforeBattle dw RocketHideout3AfterBattleTxt2 ; 0x532f TextAfterBattle dw RocketHideout3EndBattleText2 ; 0x532a TextEndBattle dw RocketHideout3EndBattleText2 ; 0x532a TextEndBattle ; 0x4530e RocketHideout3TrainerHeader2: ; 0x4530e db $2 ; flag's bit db ($4 << 4) ; trainer's view range dw $d819 ; flag's byte dw RocketHideout3BattleTxt ; 0x533e TextBeforeBattle dw RocketHideout3AfterBattleText3 ; 0x5348 TextAfterBattle dw RocketHideout3EndBattleText3 ; 0x5343 TextEndBattle dw RocketHideout3EndBattleText3 ; 0x5343 TextEndBattle ; 0x4531a db $ff RocketHideout3Text1: ; 0x4531b db $08 ; asm ld hl, RocketHideout3TrainerHeader0 call LoadTrainerHeader jp TextScriptEnd RocketHideout3BattleText2: ; 0x45325 TX_FAR _RocketHideout3BattleText2 db $50 ; 0x45325 + 5 bytes RocketHideout3EndBattleText2: ; 0x4532a TX_FAR _RocketHideout3EndBattleText2 db $50 ; 0x4532a + 5 bytes RocketHideout3AfterBattleTxt2: ; 0x4532f TX_FAR _RocketHideout3AfterBattleTxt2 db $50 ; 0x4532f + 5 bytes RocketHideout3Text2: ; 0x45334 db $08 ; asm ld hl, RocketHideout3TrainerHeader2 call LoadTrainerHeader jp TextScriptEnd RocketHideout3BattleTxt: ; 0x4533e TX_FAR _RocketHideout3BattleTxt db $50 ; 0x4533e + 5 bytes RocketHideout3EndBattleText3: ; 0x45343 TX_FAR _RocketHideout3EndBattleText3 db $50 ; 0x45343 + 5 bytes RocketHideout3AfterBattleText3: ; 0x45348 ;TX_FAR _RocketHideout3AfterBattleText3 db $17 dw _RocketHideout3AfterBattleText3 db BANK(_RocketHideout3AfterBattleText3) db $50 ; 0x45348 + 5 bytes RocketHideout3Object: ; 0x4534d (size=50) db $2e ; border tile db $2 ; warps db $6, $19, $1, ROCKET_HIDEOUT_2 db $12, $13, $0, ROCKET_HIDEOUT_4 db $0 ; signs db $4 ; people db SPRITE_ROCKET, $16 + 4, $a + 4, $ff, $d3, $41, ROCKET + $C8, $e ; trainer db SPRITE_ROCKET, $c + 4, $1a + 4, $ff, $d1, $42, ROCKET + $C8, $f ; trainer db SPRITE_BALL, $11 + 4, $1a + 4, $ff, $ff, $83, TM_10 ; item db SPRITE_BALL, $e + 4, $14 + 4, $ff, $ff, $84, RARE_CANDY ; item ; warp-to EVENT_DISP $f, $6, $19 ; ROCKET_HIDEOUT_2 EVENT_DISP $f, $12, $13 ; ROCKET_HIDEOUT_4 RocketHideout3Blocks: ; 0x4537f 210 INCBIN "maps/rockethideout3.blk" RocketHideout4_h: ; 0x45451 to 0x4545d (12 bytes) (bank=11) (id=202) db $16 ; tileset db ROCKET_HIDEOUT_4_HEIGHT, ROCKET_HIDEOUT_4_WIDTH ; dimensions (y, x) dw RocketHideout4Blocks, RocketHideout4Texts, RocketHideout4Script ; blocks, texts, scripts db $00 ; connections dw RocketHideout4Object ; objects RocketHideout4Script: ; 0x4545d call Unnamed_45473 call $3c3c ld hl, RocketHideout4TrainerHeader0 ld de, $54ae ld a, [$d634] call $3160 ld [$d634], a ret ; 0x45473 Unnamed_45473: ; 0x45473 INCBIN "baserom.gbc",$45473,$8e RocketHideout4Texts: ; 0x45501 dw RocketHideout4Text1, RocketHideout4Text2, RocketHideout4Text3, RocketHideout4Text4, RocketHideout4Text5, RocketHideout4Text6, RocketHideout4Text7, RocketHideout4Text8, RocketHideout4Text9, RocketHideout4Text10 RocketHideout4TrainerHeaders: RocketHideout4TrainerHeader0: ; 0x45515 db $2 ; flag's bit db ($0 << 4) ; trainer's view range dw $d81b ; flag's byte dw RocketHideout4BattleText2 ; 0x5593 TextBeforeBattle dw RocketHideout4AfterBattleText2 ; 0x559d TextAfterBattle dw RocketHideout4EndBattleText2 ; 0x5598 TextEndBattle dw RocketHideout4EndBattleText2 ; 0x5598 TextEndBattle ; 0x45521 RocketHideout4TrainerHeader2: ; 0x45521 db $3 ; flag's bit db ($0 << 4) ; trainer's view range dw $d81b ; flag's byte dw RocketHideout4BattleText3 ; 0x55ac TextBeforeBattle dw RocketHideout4AfterBattleText3 ; 0x55b6 TextAfterBattle dw RocketHideout4EndBattleText3 ; 0x55b1 TextEndBattle dw RocketHideout4EndBattleText3 ; 0x55b1 TextEndBattle ; 0x4552d RocketHideout4TrainerHeader3: ; 0x4552d db $4 ; flag's bit db ($1 << 4) ; trainer's view range dw $d81b ; flag's byte dw RocketHideout4BattleText4 ; 0x55c5 TextBeforeBattle dw RocketHideout4AfterBattleText4 ; 0x55cf TextAfterBattle dw RocketHideout4EndBattleText4 ; 0x55ca TextEndBattle dw RocketHideout4EndBattleText4 ; 0x55ca TextEndBattle ; 0x45539 db $ff RocketHideout4Text1: ; 0x4553a db $08 ; asm ld a, [$d81b] bit 7, a jp nz, .asm_545571 ld hl, UnnamedText_4557a call PrintText ld hl, $d72d set 6, [hl] set 7, [hl] ld hl, UnnamedText_4557f ld de, UnnamedText_4557f call $3354 ldh a, [$8c] ld [$cf13], a call $336a call $32d7 xor a ldh [$b4], a ld a, $3 ld [$d634], a ld [$da39], a jr .asm_209f0 ; 0x4556f .asm_545571 ld hl, RocketHideout4Text10 call PrintText .asm_209f0 ; 0x45577 jp TextScriptEnd UnnamedText_4557a: ; 0x4557a TX_FAR _UnnamedText_4557a db $50 ; 0x4557a + 5 bytes UnnamedText_4557f: ; 0x4557f TX_FAR _UnnamedText_4557f db $50 ; 0x4557f + 5 bytes RocketHideout4Text10: ; 0x45584 TX_FAR _UnnamedText_45584 db $50 ; 0x45584 + 5 bytes RocketHideout4Text2: ; 0x45589 db $08 ; asm ld hl, RocketHideout4TrainerHeader0 call LoadTrainerHeader jp TextScriptEnd RocketHideout4BattleText2: ; 0x45593 TX_FAR _RocketHideout4BattleText2 db $50 ; 0x45593 + 5 bytes RocketHideout4EndBattleText2: ; 0x45598 TX_FAR _RocketHideout4EndBattleText2 db $50 ; 0x45598 + 5 bytes RocketHideout4AfterBattleText2: ; 0x4559d ;TX_FAR _RocketHideout4AfterBattleText2 db $17 dw _RocketHideout4AfterBattleText2 db BANK(_RocketHideout4AfterBattleText2) db $50 ; 0x4559d + 5 bytes RocketHideout4Text3: ; 0x455a2 db $08 ; asm ld hl, RocketHideout4TrainerHeader2 call LoadTrainerHeader jp TextScriptEnd RocketHideout4BattleText3: ; 0x455ac TX_FAR _RocketHideout4BattleText3 db $50 ; 0x455ac + 5 bytes RocketHideout4EndBattleText3: ; 0x455b1 TX_FAR _RocketHideout4EndBattleText3 db $50 ; 0x455b1 + 5 bytes RocketHideout4AfterBattleText3: ; 0x455b6 ;TX_FAR _RocketHideout4AfterBattleText3 db $17 dw _RocketHideout4AfterBattleText3 db BANK(_RocketHideout4AfterBattleText3) db $50 ; 0x455b6 + 5 bytes RocketHideout4Text4: ; 0x455bb db $08 ; asm ld hl, RocketHideout4TrainerHeader3 call LoadTrainerHeader jp TextScriptEnd RocketHideout4BattleText4: ; 0x455c5 TX_FAR _RocketHideout4BattleText4 db $50 ; 0x455c5 + 5 bytes RocketHideout4EndBattleText4: ; 0x455ca TX_FAR _RocketHideout4EndBattleText4 db $50 ; 0x455ca + 5 bytes RocketHideout4AfterBattleText4: ; 0x455cf db $8 ld hl, $55ec call PrintText ld hl, $d81b bit 6, [hl] set 6, [hl] jr nz, .asm_455e9 ; 0x455dd $a ld a, $88 ld [$cc4d], a ld a, $15 call Predef .asm_455e9 jp TextScriptEnd ; 0x455ec UnnamedText_455ec: ; 0x455ec TX_FAR _UnnamedText_455ec db $50 ; 0x455ec + 5 bytes RocketHideout4Object: ; 0x455f1 (size=95) db $2e ; border tile db $3 ; warps db $a, $13, $1, ROCKET_HIDEOUT_3 db $f, $18, $0, ROCKET_HIDEOUT_ELEVATOR db $f, $19, $1, ROCKET_HIDEOUT_ELEVATOR db $0 ; signs db $9 ; people db SPRITE_GIOVANNI, $3 + 4, $19 + 4, $ff, $d0, $41, GIOVANNI + $C8, $1 ; trainer db SPRITE_ROCKET, $c + 4, $17 + 4, $ff, $d0, $42, ROCKET + $C8, $10 ; trainer db SPRITE_ROCKET, $c + 4, $1a + 4, $ff, $d0, $43, ROCKET + $C8, $11 ; trainer db SPRITE_ROCKET, $2 + 4, $b + 4, $ff, $d0, $44, ROCKET + $C8, $12 ; trainer db SPRITE_BALL, $c + 4, $a + 4, $ff, $ff, $85, HP_UP ; item db SPRITE_BALL, $4 + 4, $9 + 4, $ff, $ff, $86, TM_02 ; item db SPRITE_BALL, $14 + 4, $c + 4, $ff, $ff, $87, IRON ; item db SPRITE_BALL, $2 + 4, $19 + 4, $ff, $ff, $88, SILPH_SCOPE ; item db SPRITE_BALL, $2 + 4, $a + 4, $ff, $ff, $89, LIFT_KEY ; item ; warp-to EVENT_DISP $f, $a, $13 ; ROCKET_HIDEOUT_3 EVENT_DISP $f, $f, $18 ; ROCKET_HIDEOUT_ELEVATOR EVENT_DISP $f, $f, $19 ; ROCKET_HIDEOUT_ELEVATOR RocketHideout4Blocks: ; 0x45650 180 INCBIN "maps/rockethideout4.blk" RocketHideoutElevator_h: ; 0x45704 to 0x45710 (12 bytes) (bank=11) (id=203) db $12 ; tileset db ROCKET_HIDEOUT_ELEVATOR_HEIGHT, ROCKET_HIDEOUT_ELEVATOR_WIDTH ; dimensions (y, x) dw RocketHideoutElevatorBlocks, RocketHideoutElevatorTexts, RocketHideoutElevatorScript ; blocks, texts, scripts db $00 ; connections dw RocketHideoutElevatorObject ; objects RocketHideoutElevatorScript: ; 0x45710 ld hl, $d126 bit 5, [hl] res 5, [hl] push hl call nz, RocketHideoutElevatorScript_Unknown4572c pop hl bit 7, [hl] res 7, [hl] call nz, $575f xor a ld [$cf0c], a inc a ld [$cc3c], a ret ; 0x4572c RocketHideoutElevatorScript_Unknown4572c: ; 0x4572c INCBIN "baserom.gbc",$4572c,$3f RocketHideoutElevatorTexts: ; 0x4576b dw RocketHideoutElevatorText1 RocketHideoutElevatorText1: ; 0x4576d db $08 ; asm ld b, LIFT_KEY call $3493 jr z, .asm_8d8f0 ; 0x45773 call $5741 ld hl, $5759 ld a, $61 call Predef jr .asm_46c43 ; 0x45780 .asm_8d8f0 ; 0x45782 ld hl, UnnamedText_4578b call PrintText .asm_46c43 ; 0x45788 jp TextScriptEnd UnnamedText_4578b: ; 0x4578b TX_FAR _UnnamedText_4578b ; 0x82438 db $d, $50 RocketHideoutElevatorObject: ; 0x45791 (size=23) db $f ; border tile db $2 ; warps db $1, $2, $2, ROCKET_HIDEOUT_1 db $1, $3, $4, ROCKET_HIDEOUT_1 db $1 ; signs db $1, $1, $1 ; RocketHideoutElevatorText1 db $0 ; people ; warp-to EVENT_DISP $3, $1, $2 ; ROCKET_HIDEOUT_1 EVENT_DISP $3, $1, $3 ; ROCKET_HIDEOUT_1 RocketHideoutElevatorBlocks: ; 0x457a8 12 INCBIN "maps/rockethideoutelevator.blk" SilphCoElevator_h: ; 0x457b4 to 0x457c0 (12 bytes) (bank=11) (id=236) db $12 ; tileset db SILPH_CO_ELEVATOR_HEIGHT, SILPH_CO_ELEVATOR_WIDTH ; dimensions (y, x) dw SilphCoElevatorBlocks, SilphCoElevatorTexts, SilphCoElevatorScript ; blocks, texts, scripts db $00 ; connections dw SilphCoElevatorObject ; objects SilphCoElevatorScript: ; 0x457c0 ld hl, $d126 bit 5, [hl] res 5, [hl] push hl call nz, SilphCoElevatorScript_Unknown457dc pop hl bit 7, [hl] res 7, [hl] call nz, $5827 xor a ld [$cf0c], a inc a ld [$cc3c], a ret ; 0x457dc SilphCoElevatorScript_Unknown457dc: ; 0x457dc INCBIN "baserom.gbc",$457dc,$57 SilphCoElevatorTexts: ; 0x45833 dw SilphCoElevatorText1 SilphCoElevatorText1: ; 0x45835 db $08 ; asm call $57f1 ld hl, $5811 ld a, $61 call Predef jp TextScriptEnd SilphCoElevatorObject: ; 0x45844 (size=23) db $f ; border tile db $2 ; warps db $3, $1, $0, $ed db $3, $2, $0, $ed db $1 ; signs db $0, $3, $1 ; SilphCoElevatorText1 db $0 ; people ; warp-to EVENT_DISP $2, $3, $1 EVENT_DISP $2, $3, $2 SilphCoElevatorBlocks: ; 0x4585b 4 INCBIN "maps/silphcoelevator.blk" SafariZoneEast_h: ; 0x4585f to 0x4586b (12 bytes) (bank=11) (id=217) db $03 ; tileset db SAFARI_ZONE_EAST_HEIGHT, SAFARI_ZONE_EAST_WIDTH ; dimensions (y, x) dw SafariZoneEastBlocks, SafariZoneEastTexts, SafariZoneEastScript ; blocks, texts, scripts db $00 ; connections dw SafariZoneEastObject ; objects SafariZoneEastScript: ; 0x4586b jp $3c3c ; 0x4586e SafariZoneEastTexts: ; 0x4586e dw SafariZoneEastText1, SafariZoneEastText2, SafariZoneEastText3, SafariZoneEastText4, SafariZoneEastText5, SafariZoneEastText6, SafariZoneEastText7 SafariZoneEastText5: ; 0x4587c TX_FAR _SafariZoneEastText5 db $50 SafariZoneEastText6: ; 0x45881 TX_FAR _SafariZoneEastText6 db $50 SafariZoneEastText7: ; 0x45886 TX_FAR _SafariZoneEastText7 db $50 SafariZoneEastObject: ; 0x4588b (size=81) db $0 ; border tile db $5 ; warps db $4, $0, $6, SAFARI_ZONE_NORTH db $5, $0, $7, SAFARI_ZONE_NORTH db $16, $0, $6, SAFARI_ZONE_CENTER db $17, $0, $6, SAFARI_ZONE_CENTER db $9, $19, $0, SAFARI_ZONE_REST_HOUSE_3 db $3 ; signs db $a, $1a, $5 ; SafariZoneEastText5 db $4, $6, $6 ; SafariZoneEastText6 db $17, $5, $7 ; SafariZoneEastText7 db $4 ; people db SPRITE_BALL, $a + 4, $15 + 4, $ff, $ff, $81, FULL_RESTORE ; item db SPRITE_BALL, $7 + 4, $3 + 4, $ff, $ff, $82, MAX_POTION ; item db SPRITE_BALL, $d + 4, $14 + 4, $ff, $ff, $83, CARBOS ; item db SPRITE_BALL, $c + 4, $f + 4, $ff, $ff, $84, TM_37 ; item ; warp-to EVENT_DISP $f, $4, $0 ; SAFARI_ZONE_NORTH EVENT_DISP $f, $5, $0 ; SAFARI_ZONE_NORTH EVENT_DISP $f, $16, $0 ; SAFARI_ZONE_CENTER EVENT_DISP $f, $17, $0 ; SAFARI_ZONE_CENTER EVENT_DISP $f, $9, $19 ; SAFARI_ZONE_REST_HOUSE_3 SafariZoneEastBlocks: ; 0x458dc 195 INCBIN "maps/safarizoneeast.blk" SafariZoneNorth_h: ; 0x4599f to 0x459ab (12 bytes) (bank=11) (id=218) db $03 ; tileset db SAFARI_ZONE_NORTH_HEIGHT, SAFARI_ZONE_NORTH_WIDTH ; dimensions (y, x) dw SafariZoneNorthBlocks, SafariZoneNorthTexts, SafariZoneNorthScript ; blocks, texts, scripts db $00 ; connections dw SafariZoneNorthObject ; objects SafariZoneNorthScript: ; 0x459ab jp $3c3c ; 0x459ae SafariZoneNorthTexts: ; 0x459ae dw SafariZoneNorthText1, SafariZoneNorthText2, SafariZoneNorthText3, SafariZoneNorthText4, SafariZoneNorthText5, SafariZoneNorthText6, SafariZoneNorthText7 SafariZoneNorthText3: ; 0x459bc TX_FAR _SafariZoneNorthText3 db $50 SafariZoneNorthText4: ; 0x459c1 TX_FAR _SafariZoneNorthText4 db $50 SafariZoneNorthText5: ; 0x459c6 TX_FAR _SafariZoneNorthText5 db $50 SafariZoneNorthText6: ; 0x459cb TX_FAR _SafariZoneNorthText6 db $50 SafariZoneNorthText7: ; 0x459d0 TX_FAR _SafariZoneNorthText7 db $50 SafariZoneNorthObject: ; 0x459d5 (size=105) db $0 ; border tile db $9 ; warps db $23, $2, $0, SAFARI_ZONE_WEST db $23, $3, $1, SAFARI_ZONE_WEST db $23, $8, $2, SAFARI_ZONE_WEST db $23, $9, $3, SAFARI_ZONE_WEST db $23, $14, $4, SAFARI_ZONE_CENTER db $23, $15, $5, SAFARI_ZONE_CENTER db $1e, $27, $0, SAFARI_ZONE_EAST db $1f, $27, $1, SAFARI_ZONE_EAST db $3, $23, $0, SAFARI_ZONE_REST_HOUSE_4 db $5 ; signs db $4, $24, $3 ; SafariZoneNorthText3 db $19, $4, $4 ; SafariZoneNorthText4 db $1f, $d, $5 ; SafariZoneNorthText5 db $21, $13, $6 ; SafariZoneNorthText6 db $1c, $1a, $7 ; SafariZoneNorthText7 db $2 ; people db SPRITE_BALL, $1 + 4, $19 + 4, $ff, $ff, $81, PROTEIN ; item db SPRITE_BALL, $7 + 4, $13 + 4, $ff, $ff, $82, TM_40 ; item ; warp-to EVENT_DISP $14, $23, $2 ; SAFARI_ZONE_WEST EVENT_DISP $14, $23, $3 ; SAFARI_ZONE_WEST EVENT_DISP $14, $23, $8 ; SAFARI_ZONE_WEST EVENT_DISP $14, $23, $9 ; SAFARI_ZONE_WEST EVENT_DISP $14, $23, $14 ; SAFARI_ZONE_CENTER EVENT_DISP $14, $23, $15 ; SAFARI_ZONE_CENTER EVENT_DISP $14, $1e, $27 ; SAFARI_ZONE_EAST EVENT_DISP $14, $1f, $27 ; SAFARI_ZONE_EAST EVENT_DISP $14, $3, $23 ; SAFARI_ZONE_REST_HOUSE_4 SafariZoneNorthBlocks: ; 0x45a3e 360 INCBIN "maps/safarizonenorth.blk" SafariZoneCenter_h: ; 0x45ba6 to 0x45bb2 (12 bytes) (bank=11) (id=220) db $03 ; tileset db SAFARI_ZONE_CENTER_HEIGHT, SAFARI_ZONE_CENTER_WIDTH ; dimensions (y, x) dw SafariZoneCenterBlocks, SafariZoneCenterTexts, SafariZoneCenterScript ; blocks, texts, scripts db $00 ; connections dw SafariZoneCenterObject ; objects SafariZoneCenterScript: ; 0x45bb2 jp $3c3c ; 0x45bb5 SafariZoneCenterTexts: ; 0x45bb5 dw SafariZoneCenterText1, SafariZoneCenterText2, SafariZoneCenterText3 SafariZoneCenterText2: ; 0x45bbb TX_FAR _SafariZoneCenterText2 db $50 SafariZoneCenterText3: ; 0x45bc0 TX_FAR _SafariZoneCenterText3 db $50 SafariZoneCenterObject: ; 0x45bc5 (size=89) db $0 ; border tile db $9 ; warps db $19, $e, $2, SAFARIZONEENTRANCE db $19, $f, $3, SAFARIZONEENTRANCE db $a, $0, $4, SAFARI_ZONE_WEST db $b, $0, $5, SAFARI_ZONE_WEST db $0, $e, $4, SAFARI_ZONE_NORTH db $0, $f, $5, SAFARI_ZONE_NORTH db $a, $1d, $2, SAFARI_ZONE_EAST db $b, $1d, $3, SAFARI_ZONE_EAST db $13, $11, $0, SAFARI_ZONE_REST_HOUSE_1 db $2 ; signs db $14, $12, $2 ; SafariZoneCenterText2 db $16, $e, $3 ; SafariZoneCenterText3 db $1 ; people db SPRITE_BALL, $a + 4, $e + 4, $ff, $ff, $81, NUGGET ; item ; warp-to EVENT_DISP $f, $19, $e ; SAFARIZONEENTRANCE EVENT_DISP $f, $19, $f ; SAFARIZONEENTRANCE EVENT_DISP $f, $a, $0 ; SAFARI_ZONE_WEST EVENT_DISP $f, $b, $0 ; SAFARI_ZONE_WEST EVENT_DISP $f, $0, $e ; SAFARI_ZONE_NORTH EVENT_DISP $f, $0, $f ; SAFARI_ZONE_NORTH EVENT_DISP $f, $a, $1d ; SAFARI_ZONE_EAST EVENT_DISP $f, $b, $1d ; SAFARI_ZONE_EAST EVENT_DISP $f, $13, $11 ; SAFARI_ZONE_REST_HOUSE_1 SafariZoneCenterBlocks: ; 0x45c1e 195 INCBIN "maps/safarizonecenter.blk" SafariZoneRestHouse1_h: ; 0x45ce1 to 0x45ced (12 bytes) (bank=11) (id=221) db $0c ; tileset db SAFARI_ZONE_REST_HOUSE_1_HEIGHT, SAFARI_ZONE_REST_HOUSE_1_WIDTH ; dimensions (y, x) dw SafariZoneRestHouse1Blocks, SafariZoneRestHouse1Texts, SafariZoneRestHouse1Script ; blocks, texts, scripts db $00 ; connections dw SafariZoneRestHouse1Object ; objects SafariZoneRestHouse1Script: ; 0x45ced jp $3c3c ; 0x45cf0 SafariZoneRestHouse1Texts: ; 0x45cf0 dw SafariZoneRestHouse1Text1, SafariZoneRestHouse1Text2 SafariZoneRestHouse1Text1: ; 0x45cf4 TX_FAR _SafariZoneRestHouse1Text1 db $50 SafariZoneRestHouse1Text2: ; 0x45cf9 TX_FAR _SafariZoneRestHouse1Text2 db $50 SafariZoneRestHouse1Object: ; 0x45cfe (size=32) db $a ; border tile db $2 ; warps db $7, $2, $8, SAFARI_ZONE_CENTER db $7, $3, $8, SAFARI_ZONE_CENTER db $0 ; signs db $2 ; people db SPRITE_GIRL, $2 + 4, $3 + 4, $ff, $d0, $1 ; person db SPRITE_OAK_AIDE, $4 + 4, $1 + 4, $fe, $1, $2 ; person ; warp-to EVENT_DISP $4, $7, $2 ; SAFARI_ZONE_CENTER EVENT_DISP $4, $7, $3 ; SAFARI_ZONE_CENTER SafariZoneRestHouse2_h: ; 0x45d1e to 0x45d2a (12 bytes) (bank=11) (id=223) db $0c ; tileset db SAFARI_ZONE_REST_HOUSE_2_HEIGHT, SAFARI_ZONE_REST_HOUSE_2_WIDTH ; dimensions (y, x) dw $40fb, SafariZoneRestHouse2Texts, SafariZoneRestHouse2Script ; blocks, texts, scripts db $00 ; connections dw SafariZoneRestHouse2Object ; objects SafariZoneRestHouse2Script: ; 0x45d2a call $3c3c ret ; 0x45d2e SafariZoneRestHouse2Texts: ; 0x45d2e dw SafariZoneRestHouse2Text1, SafariZoneRestHouse2Text2, SafariZoneRestHouse2Text3 SafariZoneRestHouse2Text1: ; 0x45d34 TX_FAR _SafariZoneRestHouse2Text1 db $50 SafariZoneRestHouse2Text2: ; 0x45d39 TX_FAR _SafariZoneRestHouse2Text2 db $50 SafariZoneRestHouse2Text3: ; 0x45d3e TX_FAR _SafariZoneRestHouse2Text3 db $50 SafariZoneRestHouse2Object: ; 0x45d43 (size=38) db $a ; border tile db $2 ; warps db $7, $2, $7, SAFARI_ZONE_WEST db $7, $3, $7, SAFARI_ZONE_WEST db $0 ; signs db $3 ; people db SPRITE_OAK_AIDE, $4 + 4, $4 + 4, $fe, $0, $1 ; person db SPRITE_BLACK_HAIR_BOY_1, $2 + 4, $0 + 4, $ff, $d3, $2 ; person db SPRITE_ERIKA, $2 + 4, $6 + 4, $ff, $d0, $3 ; person ; warp-to EVENT_DISP $4, $7, $2 ; SAFARI_ZONE_WEST EVENT_DISP $4, $7, $3 ; SAFARI_ZONE_WEST SafariZoneRestHouse3_h: ; 0x45d69 to 0x45d75 (12 bytes) (bank=11) (id=224) db $0c ; tileset db SAFARI_ZONE_REST_HOUSE_3_HEIGHT, SAFARI_ZONE_REST_HOUSE_3_WIDTH ; dimensions (y, x) dw $40fb, SafariZoneRestHouse3Texts, SafariZoneRestHouse3Script ; blocks, texts, scripts db $00 ; connections dw SafariZoneRestHouse3Object ; objects SafariZoneRestHouse3Script: ; 0x45d75 call $3c3c ret ; 0x45d79 SafariZoneRestHouse3Texts: ; 0x45d79 dw SafariZoneRestHouse3Text1, SafariZoneRestHouse3Text2, SafariZoneRestHouse3Text3 SafariZoneRestHouse3Text1: ; 0x45d7f TX_FAR _SafariZoneRestHouse3Text1 db $50 SafariZoneRestHouse3Text2: ; 0x45d84 TX_FAR _SafariZoneRestHouse3Text2 db $50 SafariZoneRestHouse3Text3: ; 0x45d89 TX_FAR _SafariZoneRestHouse3Text3 db $50 SafariZoneRestHouse3Object: ; 0x45d8e (size=38) db $a ; border tile db $2 ; warps db $7, $2, $4, SAFARI_ZONE_EAST db $7, $3, $4, SAFARI_ZONE_EAST db $0 ; signs db $3 ; people db SPRITE_OAK_AIDE, $3 + 4, $1 + 4, $fe, $1, $1 ; person db SPRITE_ROCKER, $2 + 4, $4 + 4, $ff, $ff, $2 ; person db SPRITE_LAPRAS_GIVER, $2 + 4, $5 + 4, $ff, $ff, $3 ; person ; warp-to EVENT_DISP $4, $7, $2 ; SAFARI_ZONE_EAST EVENT_DISP $4, $7, $3 ; SAFARI_ZONE_EAST SafariZoneRestHouse4_h: ; 0x45db4 to 0x45dc0 (12 bytes) (bank=11) (id=225) db $0c ; tileset db SAFARI_ZONE_REST_HOUSE_4_HEIGHT, SAFARI_ZONE_REST_HOUSE_4_WIDTH ; dimensions (y, x) dw $40fb, SafariZoneRestHouse4Texts, SafariZoneRestHouse4Script ; blocks, texts, scripts db $00 ; connections dw SafariZoneRestHouse4Object ; objects SafariZoneRestHouse4Script: ; 0x45dc0 call $3c3c ret ; 0x45dc4 SafariZoneRestHouse4Texts: ; 0x45dc4 dw SafariZoneRestHouse4Text1, SafariZoneRestHouse4Text2, SafariZoneRestHouse4Text3 SafariZoneRestHouse4Text1: ; 0x45dca TX_FAR _SafariZoneRestHouse4Text1 db $50 SafariZoneRestHouse4Text2: ; 0x45dcf TX_FAR _SafariZoneRestHouse4Text2 db $50 SafariZoneRestHouse4Text3: ; 0x45dd4 TX_FAR _SafariZoneRestHouse4Text3 db $50 SafariZoneRestHouse4Object: ; 0x45dd9 (size=38) db $a ; border tile db $2 ; warps db $7, $2, $8, SAFARI_ZONE_NORTH db $7, $3, $8, SAFARI_ZONE_NORTH db $0 ; signs db $3 ; people db SPRITE_OAK_AIDE, $3 + 4, $6 + 4, $fe, $2, $1 ; person db SPRITE_WHITE_PLAYER, $4 + 4, $3 + 4, $ff, $ff, $2 ; person db SPRITE_GENTLEMAN, $5 + 4, $1 + 4, $fe, $1, $3 ; person ; warp-to EVENT_DISP $4, $7, $2 ; SAFARI_ZONE_NORTH EVENT_DISP $4, $7, $3 ; SAFARI_ZONE_NORTH UnknownDungeon2_h: ; 0x45dff to 0x45e0b (12 bytes) (bank=11) (id=226) db $11 ; tileset db UNKNOWN_DUNGEON_2_HEIGHT, UNKNOWN_DUNGEON_2_WIDTH ; dimensions (y, x) dw UnknownDungeon2Blocks, UnknownDungeon2Texts, UnknownDungeon2Script ; blocks, texts, scripts db $00 ; connections dw UnknownDungeon2Object ; objects UnknownDungeon2Script: ; 0x45e0b jp $3c3c ; 0x45e0e UnknownDungeon2Texts: ; 0x45e0e dw UnknownDungeon2Text1, UnknownDungeon2Text2, UnknownDungeon2Text3 UnknownDungeon2Object: ; 0x45e14 (size=73) db $7d ; border tile db $6 ; warps db $1, $1d, $2, UNKNOWN_DUNGEON_1 db $6, $16, $3, UNKNOWN_DUNGEON_1 db $7, $13, $4, UNKNOWN_DUNGEON_1 db $1, $9, $5, UNKNOWN_DUNGEON_1 db $3, $1, $6, UNKNOWN_DUNGEON_1 db $b, $3, $7, UNKNOWN_DUNGEON_1 db $0 ; signs db $3 ; people db SPRITE_BALL, $9 + 4, $1d + 4, $ff, $ff, $81, PP_UP ; item db SPRITE_BALL, $f + 4, $4 + 4, $ff, $ff, $82, ULTRA_BALL ; item db SPRITE_BALL, $6 + 4, $d + 4, $ff, $ff, $83, FULL_RESTORE ; item ; warp-to EVENT_DISP $f, $1, $1d ; UNKNOWN_DUNGEON_1 EVENT_DISP $f, $6, $16 ; UNKNOWN_DUNGEON_1 EVENT_DISP $f, $7, $13 ; UNKNOWN_DUNGEON_1 EVENT_DISP $f, $1, $9 ; UNKNOWN_DUNGEON_1 EVENT_DISP $f, $3, $1 ; UNKNOWN_DUNGEON_1 EVENT_DISP $f, $b, $3 ; UNKNOWN_DUNGEON_1 UnknownDungeon2Blocks: ; 0x45e5d 135 INCBIN "maps/unknowndungeon2.blk" UnknownDungeon3_h: ; 0x45ee4 to 0x45ef0 (12 bytes) (bank=11) (id=227) db $11 ; tileset db UNKNOWN_DUNGEON_3_HEIGHT, UNKNOWN_DUNGEON_3_WIDTH ; dimensions (y, x) dw UnknownDungeon3Blocks, UnknownDungeon3Texts, UnknownDungeon3Script ; blocks, texts, scripts db $00 ; connections dw UnknownDungeon3Object ; objects UnknownDungeon3Script: ; 0x45ef0 call $3c3c ld hl, UnknownDungeon3TrainerHeaders ld de, UnknownDungeon3Script_Unknown45f03 ld a, [$d650] call $3160 ld [$d650], a ret ; 0x45f03 UnknownDungeon3Script_Unknown45f03: ; 0x45f03 INCBIN "baserom.gbc",$45f03,$6 UnknownDungeon3Texts: ; 0x45f09 dw UnknownDungeon3Text1, UnknownDungeon3Text2, UnknownDungeon3Text3 UnknownDungeon3TrainerHeaders: UnknownDungeon3TrainerHeader0: ; 0x45f0f db $1 ; flag's bit db ($0 << 4) ; trainer's view range dw $d85f ; flag's byte dw UnknownDungeon3MewtwoText ; 0x5f26 TextBeforeBattle dw UnknownDungeon3MewtwoText ; 0x5f26 TextAfterBattle dw UnknownDungeon3MewtwoText ; 0x5f26 TextEndBattle dw UnknownDungeon3MewtwoText ; 0x5f26 TextEndBattle ; 0x45f1b db $ff UnknownDungeon3Text1: ; 0x45f1c db $08 ; asm ld hl, UnknownDungeon3TrainerHeader0 call LoadTrainerHeader jp TextScriptEnd UnknownDungeon3MewtwoText: ; 0x45f26 TX_FAR _UnknownDungeon3MewtwoText ; 0x85c72 db $8 ld a, $83 call $13d0 call $3748 jp TextScriptEnd ; 0x45f36 UnknownDungeon3Object: ; 0x45f36 (size=34) db $7d ; border tile db $1 ; warps db $6, $3, $8, UNKNOWN_DUNGEON_1 db $0 ; signs db $3 ; people db SPRITE_SLOWBRO, $d + 4, $1b + 4, $ff, $d0, $41, MEWTWO, $46 ; trainer db SPRITE_BALL, $9 + 4, $10 + 4, $ff, $ff, $82, ULTRA_BALL ; item db SPRITE_BALL, $1 + 4, $12 + 4, $ff, $ff, $83, MAX_REVIVE ; item ; warp-to EVENT_DISP $f, $6, $3 ; UNKNOWN_DUNGEON_1 UnknownDungeon3Blocks: ; 0x45f58 135 INCBIN "maps/unknowndungeon3.blk" RockTunnel2_h: ; 0x45fdf to 0x45feb (12 bytes) (bank=11) (id=232) db $11 ; tileset db ROCK_TUNNEL_2_HEIGHT, ROCK_TUNNEL_2_WIDTH ; dimensions (y, x) dw RockTunnel2Blocks, RockTunnel2Texts, RockTunnel2Script ; blocks, texts, scripts db $00 ; connections dw RockTunnel2Object ; objects RockTunnel2Script: ; 0x45feb call $3c3c ld hl, RockTunnel2TrainerHeaders ld de, RockTunnel2Script_Unknown45ffe ld a, [$d620] call $3160 ld [$d620], a ret ; 0x45ffe RockTunnel2Script_Unknown45ffe: ; 0x45ffe INCBIN "baserom.gbc",$45ffe,$6 RockTunnel2Texts: ; 0x46004 dw RockTunnel2Text1, RockTunnel2Text2, RockTunnel2Text3, RockTunnel2Text4, RockTunnel2Text5, RockTunnel2Text6, RockTunnel2Text7, RockTunnel2Text8 RockTunnel2TrainerHeaders: RockTunnel2TrainerHeader0: ; 0x46014 db $1 ; flag's bit db ($4 << 4) ; trainer's view range dw $d87d ; flag's byte dw RockTunnel2BattleText2 ; 0x60c5 TextBeforeBattle dw RockTunnel2AfterBattleText2 ; 0x60cf TextAfterBattle dw RockTunnel2EndBattleText2 ; 0x60ca TextEndBattle dw RockTunnel2EndBattleText2 ; 0x60ca TextEndBattle ; 0x46020 RockTunnel2TrainerHeader2: ; 0x46020 db $2 ; flag's bit db ($3 << 4) ; trainer's view range dw $d87d ; flag's byte dw RockTunnel2BattleText3 ; 0x60d4 TextBeforeBattle dw RockTunnel2AfterBattleText3 ; 0x60de TextAfterBattle dw RockTunnel2EndBattleText3 ; 0x60d9 TextEndBattle dw RockTunnel2EndBattleText3 ; 0x60d9 TextEndBattle ; 0x4602c RockTunnel2TrainerHeader3: ; 0x4602c db $3 ; flag's bit db ($3 << 4) ; trainer's view range dw $d87d ; flag's byte dw RockTunnel2BattleText4 ; 0x60e3 TextBeforeBattle dw RockTunnel2AfterBattleText4 ; 0x60ed TextAfterBattle dw RockTunnel2EndBattleText4 ; 0x60e8 TextEndBattle dw RockTunnel2EndBattleText4 ; 0x60e8 TextEndBattle ; 0x46038 RockTunnel2TrainerHeader4: ; 0x46038 db $4 ; flag's bit db ($4 << 4) ; trainer's view range dw $d87d ; flag's byte dw RockTunnel2BattleText5 ; 0x60f2 TextBeforeBattle dw RockTunnel2AfterBattleText5 ; 0x60fc TextAfterBattle dw RockTunnel2EndBattleText5 ; 0x60f7 TextEndBattle dw RockTunnel2EndBattleText5 ; 0x60f7 TextEndBattle ; 0x46044 RockTunnel2TrainerHeader5: ; 0x46044 db $5 ; flag's bit db ($3 << 4) ; trainer's view range dw $d87d ; flag's byte dw RockTunnel2BattleText6 ; 0x6101 TextBeforeBattle dw RockTunnel2AfterBattleText6 ; 0x610b TextAfterBattle dw RockTunnel2EndBattleText6 ; 0x6106 TextEndBattle dw RockTunnel2EndBattleText6 ; 0x6106 TextEndBattle ; 0x46050 RockTunnel2TrainerHeader6: ; 0x46050 db $6 ; flag's bit db ($4 << 4) ; trainer's view range dw $d87d ; flag's byte dw RockTunnel2BattleText7 ; 0x6110 TextBeforeBattle dw RockTunnel2AfterBattleText7 ; 0x611a TextAfterBattle dw RockTunnel2EndBattleText7 ; 0x6115 TextEndBattle dw RockTunnel2EndBattleText7 ; 0x6115 TextEndBattle ; 0x4605c RockTunnel2TrainerHeader7: ; 0x4605c db $7 ; flag's bit db ($3 << 4) ; trainer's view range dw $d87d ; flag's byte dw RockTunnel2BattleText8 ; 0x611f TextBeforeBattle dw RockTunnel2AfterBattleText8 ; 0x6129 TextAfterBattle dw RockTunnel2EndBattleText8 ; 0x6124 TextEndBattle dw RockTunnel2EndBattleText8 ; 0x6124 TextEndBattle ; 0x46068 RockTunnel2TrainerHeader8: ; 0x46068 db $8 ; flag's bit db ($3 << 4) ; trainer's view range dw $d87d ; flag's byte dw RockTunnel2BattleText9 ; 0x612e TextBeforeBattle dw RockTunnel2AfterBattleText9 ; 0x6138 TextAfterBattle dw RockTunnel2EndBattleText9 ; 0x6133 TextEndBattle dw RockTunnel2EndBattleText9 ; 0x6133 TextEndBattle ; 0x46074 db $ff RockTunnel2Text1: ; 0x46075 db $08 ; asm ld hl, RockTunnel2TrainerHeader0 call LoadTrainerHeader jp TextScriptEnd RockTunnel2Text2: ; 0x4607f db $08 ; asm ld hl, RockTunnel2TrainerHeader2 call LoadTrainerHeader jp TextScriptEnd RockTunnel2Text3: ; 0x46089 db $08 ; asm ld hl, RockTunnel2TrainerHeader3 call LoadTrainerHeader jp TextScriptEnd RockTunnel2Text4: ; 0x46093 db $08 ; asm ld hl, RockTunnel2TrainerHeader4 call LoadTrainerHeader jp TextScriptEnd RockTunnel2Text5: ; 0x4609d db $08 ; asm ld hl, RockTunnel2TrainerHeader5 call LoadTrainerHeader jp TextScriptEnd RockTunnel2Text6: ; 0x460a7 db $08 ; asm ld hl, RockTunnel2TrainerHeader6 call LoadTrainerHeader jp TextScriptEnd RockTunnel2Text7: ; 0x460b1 db $08 ; asm ld hl, RockTunnel2TrainerHeader7 call LoadTrainerHeader jp TextScriptEnd RockTunnel2Text8: ; 0x460bb db $08 ; asm ld hl, RockTunnel2TrainerHeader8 call LoadTrainerHeader jp TextScriptEnd RockTunnel2BattleText2: ; 0x460c5 TX_FAR _RockTunnel2BattleText2 db $50 ; 0x460c5 + 5 bytes RockTunnel2EndBattleText2: ; 0x460ca TX_FAR _RockTunnel2EndBattleText2 db $50 ; 0x460ca + 5 bytes RockTunnel2AfterBattleText2: ; 0x460cf TX_FAR _RockTunnel2AfterBattleText2 db $50 ; 0x460cf + 5 bytes RockTunnel2BattleText3: ; 0x460d4 TX_FAR _RockTunnel2BattleText3 db $50 ; 0x460d4 + 5 bytes RockTunnel2EndBattleText3: ; 0x460d9 TX_FAR _RockTunnel2EndBattleText3 db $50 ; 0x460d9 + 5 bytes RockTunnel2AfterBattleText3: ; 0x460de TX_FAR _RockTunnel2AfterBattleText3 db $50 ; 0x460de + 5 bytes RockTunnel2BattleText4: ; 0x460e3 TX_FAR _RockTunnel2BattleText4 db $50 ; 0x460e3 + 5 bytes RockTunnel2EndBattleText4: ; 0x460e8 TX_FAR _RockTunnel2EndBattleText4 db $50 ; 0x460e8 + 5 bytes RockTunnel2AfterBattleText4: ; 0x460ed TX_FAR _RockTunnel2AfterBattleText4 db $50 ; 0x460ed + 5 bytes RockTunnel2BattleText5: ; 0x460f2 TX_FAR _RockTunnel2BattleText5 db $50 ; 0x460f2 + 5 bytes RockTunnel2EndBattleText5: ; 0x460f7 TX_FAR _RockTunnel2EndBattleText5 db $50 ; 0x460f7 + 5 bytes RockTunnel2AfterBattleText5: ; 0x460fc TX_FAR _RockTunnel2AfterBattleText5 db $50 ; 0x460fc + 5 bytes RockTunnel2BattleText6: ; 0x46101 TX_FAR _RockTunnel2BattleText6 db $50 ; 0x46101 + 5 bytes RockTunnel2EndBattleText6: ; 0x46106 TX_FAR _RockTunnel2EndBattleText6 db $50 ; 0x46106 + 5 bytes RockTunnel2AfterBattleText6: ; 0x4610b TX_FAR _RockTunnel2AfterBattleText6 db $50 ; 0x4610b + 5 bytes RockTunnel2BattleText7: ; 0x46110 TX_FAR _RockTunnel2BattleText7 db $50 ; 0x46110 + 5 bytes RockTunnel2EndBattleText7: ; 0x46115 TX_FAR _RockTunnel2EndBattleText7 db $50 ; 0x46115 + 5 bytes RockTunnel2AfterBattleText7: ; 0x4611a TX_FAR _RockTunnel2AfterBattleText7 db $50 ; 0x4611a + 5 bytes RockTunnel2BattleText8: ; 0x4611f TX_FAR _RockTunnel2BattleText8 db $50 ; 0x4611f + 5 bytes RockTunnel2EndBattleText8: ; 0x46124 TX_FAR _RockTunnel2EndBattleText8 db $50 ; 0x46124 + 5 bytes RockTunnel2AfterBattleText8: ; 0x46129 TX_FAR _RockTunnel2AfterBattleText8 db $50 ; 0x46129 + 5 bytes RockTunnel2BattleText9: ; 0x4612e TX_FAR _RockTunnel2BattleText9 db $50 ; 0x4612e + 5 bytes RockTunnel2EndBattleText9: ; 0x46133 TX_FAR _RockTunnel2EndBattleText9 db $50 ; 0x46133 + 5 bytes RockTunnel2AfterBattleText9: ; 0x46138 TX_FAR _RockTunnel2AfterBattleText9 db $50 ; 0x46138 + 5 bytes RockTunnel2Object: ; 0x4613d (size=100) db $3 ; border tile db $4 ; warps db $19, $21, $4, ROCK_TUNNEL_1 db $3, $1b, $5, ROCK_TUNNEL_1 db $b, $17, $6, ROCK_TUNNEL_1 db $3, $3, $7, ROCK_TUNNEL_1 db $0 ; signs db $8 ; people db SPRITE_LASS, $d + 4, $b + 4, $ff, $d0, $41, JR__TRAINER_F + $C8, $9 ; trainer db SPRITE_HIKER, $a + 4, $6 + 4, $ff, $d0, $42, HIKER + $C8, $9 ; trainer db SPRITE_BLACK_HAIR_BOY_2, $5 + 4, $3 + 4, $ff, $d0, $43, POKEMANIAC + $C8, $3 ; trainer db SPRITE_BLACK_HAIR_BOY_2, $15 + 4, $14 + 4, $ff, $d3, $44, POKEMANIAC + $C8, $4 ; trainer db SPRITE_HIKER, $a + 4, $1e + 4, $ff, $d0, $45, HIKER + $C8, $a ; trainer db SPRITE_LASS, $1c + 4, $e + 4, $ff, $d3, $46, JR__TRAINER_F + $C8, $a ; trainer db SPRITE_HIKER, $5 + 4, $21 + 4, $ff, $d3, $47, HIKER + $C8, $b ; trainer db SPRITE_BLACK_HAIR_BOY_2, $1e + 4, $1a + 4, $ff, $d0, $48, POKEMANIAC + $C8, $5 ; trainer ; warp-to EVENT_DISP $14, $19, $21 ; ROCK_TUNNEL_1 EVENT_DISP $14, $3, $1b ; ROCK_TUNNEL_1 EVENT_DISP $14, $b, $17 ; ROCK_TUNNEL_1 EVENT_DISP $14, $3, $3 ; ROCK_TUNNEL_1 RockTunnel2Blocks: ; 0x461a1 360 INCBIN "maps/rocktunnel2.blk" SeafoamIslands2_h: ; 0x46309 to 0x46315 (12 bytes) (bank=11) (id=159) db $11 ; tileset db SEAFOAM_ISLANDS_2_HEIGHT, SEAFOAM_ISLANDS_2_WIDTH ; dimensions (y, x) dw SeafoamIslands2Blocks, SeafoamIslands2Texts, SeafoamIslands2Script ; blocks, texts, scripts db $00 ; connections dw SeafoamIslands2Object ; objects SeafoamIslands2Script: ; 0x46315 call $3c3c ld hl, $cd60 bit 7, [hl] res 7, [hl] jr z, .asm_46362 ; 0x4631f $41 ld hl, SeafoamIslands2Script_Unknown4636d call $34e4 ret nc ld hl, $d87f ld a, [$cd3d] cp $1 jr nz, .asm_46340 ; 0x46330 $e set 0, [hl] ld a, $d9 ld [$d079], a ld a, $db ld [$d07a], a jr .asm_4634c ; 0x4633e $c .asm_46340 set 1, [hl] ld a, $da ld [$d079], a ld a, $dc ld [$d07a], a .asm_4634c ld a, [$d079] ld [$cc4d], a ld a, $11 call Predef ld a, [$d07a] ld [$cc4d], a ld a, $15 jp $3e6d .asm_46362 ld a, $a0 ld [$d71d], a ld hl, SeafoamIslands2Script_Unknown4636d jp $6981 ; 0x4636d SeafoamIslands2Script_Unknown4636d: ; 0x4636d INCBIN "baserom.gbc",$4636d,$5 SeafoamIslands2Texts: ; 0x46372 dw SeafoamIslands2Text1, SeafoamIslands2Text2 SeafoamIslands2Object: ; 0x46376 (size=72) db $7d ; border tile db $7 ; warps db $2, $4, $0, SEAFOAM_ISLANDS_3 db $5, $7, $4, SEAFOAM_ISLANDS_1 db $7, $d, $2, SEAFOAM_ISLANDS_3 db $f, $13, $3, SEAFOAM_ISLANDS_3 db $f, $17, $6, SEAFOAM_ISLANDS_1 db $b, $19, $5, SEAFOAM_ISLANDS_3 db $3, $19, $5, SEAFOAM_ISLANDS_1 db $0 ; signs db $2 ; people db SPRITE_BOULDER, $6 + 4, $11 + 4, $ff, $10, $1 ; person db SPRITE_BOULDER, $6 + 4, $16 + 4, $ff, $10, $2 ; person ; warp-to EVENT_DISP $f, $2, $4 ; SEAFOAM_ISLANDS_3 EVENT_DISP $f, $5, $7 ; SEAFOAM_ISLANDS_1 EVENT_DISP $f, $7, $d ; SEAFOAM_ISLANDS_3 EVENT_DISP $f, $f, $13 ; SEAFOAM_ISLANDS_3 EVENT_DISP $f, $f, $17 ; SEAFOAM_ISLANDS_1 EVENT_DISP $f, $b, $19 ; SEAFOAM_ISLANDS_3 EVENT_DISP $f, $3, $19 ; SEAFOAM_ISLANDS_1 SeafoamIslands2Blocks: ; 0x463be 135 INCBIN "maps/seafoamislands2.blk" SeafoamIslands3_h: ; 0x46445 to 0x46451 (12 bytes) (bank=11) (id=160) db $11 ; tileset db SEAFOAM_ISLANDS_3_HEIGHT, SEAFOAM_ISLANDS_3_WIDTH ; dimensions (y, x) dw SeafoamIslands3Blocks, SeafoamIslands3Texts, SeafoamIslands3Script ; blocks, texts, scripts db $00 ; connections dw SeafoamIslands3Object ; objects SeafoamIslands3Script: ; 0x46451 call $3c3c ld hl, $cd60 bit 7, [hl] res 7, [hl] jr z, .asm_4649e ; 0x4645b $41 ld hl, SeafoamIslands3Script_Unknown464a9 call $34e4 ret nc ld hl, $d880 ld a, [$cd3d] cp $1 jr nz, .asm_4647c ; 0x4646c $e set 0, [hl] ld a, $db ld [$d079], a ld a, $df ld [$d07a], a jr .asm_46488 ; 0x4647a $c .asm_4647c set 1, [hl] ld a, $dc ld [$d079], a ld a, $e0 ld [$d07a], a .asm_46488 ld a, [$d079] ld [$cc4d], a ld a, $11 call Predef ld a, [$d07a] ld [$cc4d], a ld a, $15 jp $3e6d .asm_4649e ld a, $a1 ld [$d71d], a ld hl, SeafoamIslands3Script_Unknown464a9 jp $6981 ; 0x464a9 SeafoamIslands3Script_Unknown464a9: ; 0x464a9 INCBIN "baserom.gbc",$464a9,$5 SeafoamIslands3Texts: ; 0x464ae dw SeafoamIslands3Text1, SeafoamIslands3Text2 SeafoamIslands3Object: ; 0x464b2 (size=72) db $7d ; border tile db $7 ; warps db $3, $5, $0, SEAFOAM_ISLANDS_2 db $d, $5, $0, SEAFOAM_ISLANDS_4 db $7, $d, $2, SEAFOAM_ISLANDS_2 db $f, $13, $3, SEAFOAM_ISLANDS_2 db $3, $19, $3, SEAFOAM_ISLANDS_4 db $b, $19, $5, SEAFOAM_ISLANDS_2 db $e, $19, $4, SEAFOAM_ISLANDS_4 db $0 ; signs db $2 ; people db SPRITE_BOULDER, $6 + 4, $12 + 4, $ff, $10, $1 ; person db SPRITE_BOULDER, $6 + 4, $17 + 4, $ff, $10, $2 ; person ; warp-to EVENT_DISP $f, $3, $5 ; SEAFOAM_ISLANDS_2 EVENT_DISP $f, $d, $5 ; SEAFOAM_ISLANDS_4 EVENT_DISP $f, $7, $d ; SEAFOAM_ISLANDS_2 EVENT_DISP $f, $f, $13 ; SEAFOAM_ISLANDS_2 EVENT_DISP $f, $3, $19 ; SEAFOAM_ISLANDS_4 EVENT_DISP $f, $b, $19 ; SEAFOAM_ISLANDS_2 EVENT_DISP $f, $e, $19 ; SEAFOAM_ISLANDS_4 SeafoamIslands3Blocks: ; 0x464fa 135 INCBIN "maps/seafoamislands3.blk" SeafoamIslands4_h: ; 0x46581 to 0x4658d (12 bytes) (bank=11) (id=161) db $11 ; tileset db SEAFOAM_ISLANDS_4_HEIGHT, SEAFOAM_ISLANDS_4_WIDTH ; dimensions (y, x) dw SeafoamIslands4Blocks, SeafoamIslands4Texts, SeafoamIslands4Script ; blocks, texts, scripts db $00 ; connections dw SeafoamIslands4Object ; objects SeafoamIslands4Script: ; 0x4658d call $3c3c ld hl, $cd60 bit 7, [hl] res 7, [hl] jr z, .asm_465dc ; 0x46597 $43 ld hl, SeafoamIslands4Script_Unknown465f6 call $34e4 ret nc ld hl, $d881 ld a, [$cd3d] cp $1 jr nz, .asm_465b8 ; 0x465a8 $e set 0, [hl] ld a, $dd ld [$d079], a ld a, $e1 ld [$d07a], a jr .asm_465c4 ; 0x465b6 $c .asm_465b8 set 1, [hl] ld a, $de ld [$d079], a ld a, $e2 ld [$d07a], a .asm_465c4 ld a, [$d079] ld [$cc4d], a ld a, $11 call Predef ld a, [$d07a] ld [$cc4d], a ld a, $15 call Predef jr .asm_465ed ; 0x465da $11 .asm_465dc ld a, $a2 ld [$d71d], a ld hl, SeafoamIslands4Script_Unknown465f6 call $6981 ld a, [$d732] bit 4, a ret nz .asm_465ed ld hl, SeafoamIslands4Scripts ld a, [$d666] jp $3d97 ; 0x465f6 SeafoamIslands4Script_Unknown465f6: ; 0x465f6 INCBIN "baserom.gbc",$465f6,$465fb - $465f6 SeafoamIslands4Scripts: ; 0x465fb dw SeafoamIslands4Script0, SeafoamIslands4Script1, SeafoamIslands4Script2, SeafoamIslands4Script3 SeafoamIslands4Script0: ; 0x46603 ld a, [$d880] and $3 cp $3 ret z ld a, [$d361] cp $8 ret nz ld a, [$d362] cp $f ret nz ld hl, $ccd3 ld de, SeafoamIslands4Script0_Unknown46632 call $350c dec a ld [$cd38], a call $3486 ld hl, $d733 set 2, [hl] ld a, $1 ld [$d666], a ret ; 0x46632 SeafoamIslands4Script0_Unknown46632: ; 0x46632 INCBIN "baserom.gbc",$46632,$46639 - $46632 SeafoamIslands4Script1: ; 0x46639 ld a, [$cd38] and a ret nz ld a, $0 ld [$d666], a ret ; 0x46644 SeafoamIslands4Script2: ; 0x46644 INCBIN "baserom.gbc",$46644,$4668f - $46644 SeafoamIslands4Script3: ; 0x4668f ld a, [$cd38] and a ret nz ld a, $0 ld [$d666], a ret ; 0x4669a SeafoamIslands4Texts: ; 0x4669a dw SeafoamIslands4Text1, SeafoamIslands4Text2, SeafoamIslands4Text3, SeafoamIslands4Text4, SeafoamIslands4Text5, SeafoamIslands4Text6 SeafoamIslands4Object: ; 0x466a6 (size=96) db $7d ; border tile db $7 ; warps db $c, $5, $1, SEAFOAM_ISLANDS_3 db $6, $8, $2, SEAFOAM_ISLANDS_5 db $4, $19, $3, SEAFOAM_ISLANDS_5 db $3, $19, $4, SEAFOAM_ISLANDS_3 db $e, $19, $6, SEAFOAM_ISLANDS_3 db $11, $14, $0, SEAFOAM_ISLANDS_5 db $11, $15, $1, SEAFOAM_ISLANDS_5 db $0 ; signs db $6 ; people db SPRITE_BOULDER, $e + 4, $5 + 4, $ff, $10, $1 ; person db SPRITE_BOULDER, $f + 4, $3 + 4, $ff, $10, $2 ; person db SPRITE_BOULDER, $e + 4, $8 + 4, $ff, $10, $3 ; person db SPRITE_BOULDER, $e + 4, $9 + 4, $ff, $10, $4 ; person db SPRITE_BOULDER, $6 + 4, $12 + 4, $ff, $ff, $5 ; person db SPRITE_BOULDER, $6 + 4, $13 + 4, $ff, $ff, $6 ; person ; warp-to EVENT_DISP $f, $c, $5 ; SEAFOAM_ISLANDS_3 EVENT_DISP $f, $6, $8 ; SEAFOAM_ISLANDS_5 EVENT_DISP $f, $4, $19 ; SEAFOAM_ISLANDS_5 EVENT_DISP $f, $3, $19 ; SEAFOAM_ISLANDS_3 EVENT_DISP $f, $e, $19 ; SEAFOAM_ISLANDS_3 EVENT_DISP $f, $11, $14 ; SEAFOAM_ISLANDS_5 EVENT_DISP $f, $11, $15 ; SEAFOAM_ISLANDS_5 SeafoamIslands4Blocks: ; 0x46706 135 INCBIN "maps/seafoamislands4.blk" SeafoamIslands5_h: ; 0x4678d to 0x46799 (12 bytes) (bank=11) (id=162) db $11 ; tileset db SEAFOAM_ISLANDS_5_HEIGHT, SEAFOAM_ISLANDS_5_WIDTH ; dimensions (y, x) dw SeafoamIslands5Blocks, SeafoamIslands5Texts, SeafoamIslands5Script ; blocks, texts, scripts db $00 ; connections dw SeafoamIslands5Object ; objects SeafoamIslands5Script: ; 0x46799 call $3c3c ld a, [$d668] ld hl, SeafoamIslands5Scripts jp $3d97 ; 0x467a5 INCBIN "baserom.gbc",$467a5,$467ad - $467a5 SeafoamIslands5Scripts: ; 0x467ad dw SeafoamIslands5Script0, SeafoamIslands5Script1 INCBIN "baserom.gbc",$467b1,$16 SeafoamIslands5Script0: ; 0x467c7 ld a, [$d880] and $3 cp $3 ret z ld hl, $67fe call $34bf ret nc ld a, [$cd3d] cp $3 jr nc, .asm_467e6 ; 0x467db $9 ld a, $40 ld [$ccd4], a ld a, $2 jr .asm_467e8 ; 0x467e4 $2 .asm_467e6 ld a, $1 .asm_467e8 ld [$cd38], a ld a, $40 ld [$ccd3], a call $3486 ld hl, $d733 res 2, [hl] ld a, $1 ld [$d668], a ret ; 0x467fe INCBIN "baserom.gbc",$467fe,$46807 - $467fe SeafoamIslands5Script1: ; 0x46807 ld a, [$cd38] and a ret nz xor a ld [$cd6b], a ld a, $0 ld [$d668], a ret ; 0x46816 INCBIN "baserom.gbc",$46816,$66 SeafoamIslands5Texts: ; 0x4687c dw SeafoamIslands5Text1, SeafoamIslands5Text2, SeafoamIslands5Text3, SeafoamIslands5Text4, SeafoamIslands5Text5 SeafoamIslands5TrainerHeaders: SeafoamIslands5TrainerHeader0: ; 0x46886 db $2 ; flag's bit db ($0 << 4) ; trainer's view range dw $d882 ; flag's byte dw SeafoamIslands5BattleText2 ; 0x68a2 TextBeforeBattle dw SeafoamIslands5BattleText2 ; 0x68a2 TextAfterBattle dw SeafoamIslands5BattleText2 ; 0x68a2 TextEndBattle dw SeafoamIslands5BattleText2 ; 0x68a2 TextEndBattle ; 0x46892 db $ff SeafoamIslands5Text3: ; 0x46893 db $08 ; asm ld hl, SeafoamIslands5TrainerHeader0 call LoadTrainerHeader ld a, $4 ld [$d668], a jp TextScriptEnd SeafoamIslands5BattleText2: ; 0x468a2 TX_FAR _SeafoamIslands5BattleText2 ; 0x88075 db $8 ld a, $4a call $13d0 call $3748 jp TextScriptEnd ; 0x468b2 SeafoamIslands5Text4: ; 0x468b2 TX_FAR _SeafoamIslands5Text4 db $50 SeafoamIslands5Text5: ; 0x468b7 TX_FAR _SeafoamIslands5Text5 db $50 SeafoamIslands5Object: ; 0x468bc (size=62) db $7d ; border tile db $4 ; warps db $11, $14, $5, SEAFOAM_ISLANDS_4 db $11, $15, $6, SEAFOAM_ISLANDS_4 db $7, $b, $1, SEAFOAM_ISLANDS_4 db $4, $19, $2, SEAFOAM_ISLANDS_4 db $2 ; signs db $f, $9, $4 ; SeafoamIslands5Text4 db $1, $17, $5 ; SeafoamIslands5Text5 db $3 ; people db SPRITE_BOULDER, $f + 4, $4 + 4, $ff, $ff, $1 ; person db SPRITE_BOULDER, $f + 4, $5 + 4, $ff, $ff, $2 ; person db SPRITE_BIRD, $1 + 4, $6 + 4, $ff, $d0, $43, ARTICUNO, $32 ; trainer ; warp-to EVENT_DISP $f, $11, $14 ; SEAFOAM_ISLANDS_4 EVENT_DISP $f, $11, $15 ; SEAFOAM_ISLANDS_4 EVENT_DISP $f, $7, $b ; SEAFOAM_ISLANDS_4 EVENT_DISP $f, $4, $19 ; SEAFOAM_ISLANDS_4 SeafoamIslands5Blocks: ; 0x468fa 135 INCBIN "maps/seafoamislands5.blk" INCBIN "baserom.gbc",$46981,2262 SECTION "bank12",DATA,BANK[$12] Route7_h: ; 0x48000 to 0x48022 (34 bytes) (bank=12) (id=18) db $00 ; tileset db ROUTE_7_HEIGHT, ROUTE_7_WIDTH ; dimensions (y, x) dw Route7Blocks, $4155, Route7Script ; blocks, texts, scripts db WEST | EAST ; connections ; connections data db CELADON_CITY dw CeladonCityBlocks - 3 + (CELADON_CITY_WIDTH * 2) ; connection strip location dw $C6E8 + (ROUTE_7_WIDTH + 6) * (-3 + 3) ; current map position db $f, CELADON_CITY_WIDTH ; bigness, width db (-4 * -2), (CELADON_CITY_WIDTH * 2) - 1 ; alignments (y, x) dw $C6EE + 2 * CELADON_CITY_WIDTH ; window db SAFFRON_CITY dw SaffronCityBlocks + (SAFFRON_CITY_WIDTH) ; connection strip location dw $C6E5 + (ROUTE_7_WIDTH + 6) * (-3 + 4) ; current map position db $f, SAFFRON_CITY_WIDTH ; bigness, width db (-4 * -2), 0 ; alignments (y, x) dw $C6EF + SAFFRON_CITY_WIDTH ; window ; end connections data dw Route7Object ; objects Route7Object: ; 0x48022 (size=47) db $f ; border tile db $5 ; warps db $9, $12, $2, ROUTE_7_GATE db $a, $12, $3, ROUTE_7_GATE db $9, $b, $0, ROUTE_7_GATE db $a, $b, $1, ROUTE_7_GATE db $d, $5, $0, PATH_ENTRANCE_ROUTE_7 db $1 ; signs db $d, $3, $1 ; Route7Text1 db $0 ; people ; warp-to EVENT_DISP $a, $9, $12 ; ROUTE_7_GATE EVENT_DISP $a, $a, $12 ; ROUTE_7_GATE EVENT_DISP $a, $9, $b ; ROUTE_7_GATE EVENT_DISP $a, $a, $b ; ROUTE_7_GATE EVENT_DISP $a, $d, $5 ; PATH_ENTRANCE_ROUTE_7 Route7Blocks: ; 4051 90 INCBIN "maps/route7.blk" CeladonPokecenterBlocks: RockTunnelPokecenterBlocks: MtMoonPokecenterBlocks: ; 40ab 28 INCBIN "maps/mtmoonpokecenter.blk" Route18GateBlocks: Route15GateBlocks: Route11GateBlocks: ; 40c7 20 INCBIN "maps/route11gate.blk" Route18GateHeaderBlocks: Route16GateUpstairsBlocks: Route12GateUpstairsBlocks: Route11GateUpstairsBlocks: ; 40db 16 INCBIN "maps/route11gateupstairs.blk" INCBIN "baserom.gbc",$480eb,$48152 - $480eb Route7Script: ; 0x48152 jp $3c3c ; 0x48155 ; XXX db $57, $41 Route7Text1: ; 0x48157 TX_FAR _Route7Text1 db $50 RedsHouse1F_h: ; 415C db $01 ; tileset db $04,$04 ; dimensions dw RedsHouse1FBlocks, RedsHouse1FTexts, RedsHouse1FScript db 0 ; no connections dw RedsHouse1FObject RedsHouse1FScript: ; 4168 jp $3C3C RedsHouse1FTexts: ; 416B dw RedsHouse1FText1,RedsHouse1FText2 RedsHouse1FText1: ; 416F Mom db 8 ld a, [$D72E] bit 3, a jr nz, .heal\@ ; if player has received a Pokémon from Oak, heal team ld hl, MomWakeUpText call PrintText jr .done\@ .heal\@ call MomHealPokemon .done\@ jp TextScriptEnd MomWakeUpText: ; 0x48185 TX_FAR _MomWakeUpText db "@" MomHealPokemon: ; 0x4818a ld hl, MomHealText1 call PrintText call GBFadeOut2 call ReloadMapData ld a, 7 call Predef ld a, $E8 ld [$C0EE], a call $23B1 ; play sound? .next\@ ld a, [$C026] cp $E8 jr z, .next\@ ld a, [$D35B] ld [$C0EE], a call $23B1 call GBFadeIn2 ld hl, MomHealText2 jp PrintText MomHealText1: ; 0x481bc TX_FAR _MomHealText1 db "@" MomHealText2: ; 0x481c1 TX_FAR _MomHealText2 db "@" RedsHouse1FText2: ; 0x481c6 TV db 8 ld a,[$C109] cp 4 ld hl,TVWrongSideText jr nz,.done\@ ; if player is not facing up ld hl,StandByMeText .done\@ call PrintText jp TextScriptEnd StandByMeText: ; 0x481da TX_FAR _StandByMeText db "@" TVWrongSideText: ; 0x481df TX_FAR _TVWrongSideText db "@" RedsHouse1FObject: ; 0x481e4 db $0A ; border tile db 3 ; warps db 7,2,0,$FF ; exit1 db 7,3,0,$FF ; exit2 db 1,7,0,$26 ; staircase db 1 ; signs db 1,3,2 ; TV db 1 ; people db $33,4+4,5+4,$FF,$D2,1 ; Mom ; warp-to dw $C6EF + 4 + (4 + 6) * (3) + 1 db 7,2 dw $C6EF + 4 + (4 + 6) * (3) + 1 db 7,3 dw $C6EF + 4 + (4 + 6) * (0) + 3 db 1,7 RedsHouse1FBlocks: INCBIN "maps/redshouse1f.blk" CeladonMart3_h: ; 0x48219 to 0x48225 (12 bytes) (bank=12) (id=124) db $12 ; tileset db CELADON_MART_3_HEIGHT, CELADON_MART_3_WIDTH ; dimensions (y, x) dw CeladonMart3Blocks, CeladonMart3Texts, CeladonMart3Script ; blocks, texts, scripts db $00 ; connections dw CeladonMart3Object ; objects CeladonMart3Script: ; 0x48225 jp $3c3c ; 0x48228 CeladonMart3Texts: ; 0x48228 dw CeladonMart3Text1, CeladonMart3Text2, CeladonMart3Text3, CeladonMart3Text4, CeladonMart3Text5, CeladonMart3Text6, CeladonMart3Text7, CeladonMart3Text8, CeladonMart3Text9, CeladonMart3Text10, CeladonMart3Text11, CeladonMart3Text12, CeladonMart3Text13, CeladonMart3Text14, CeladonMart3Text15, CeladonMart3Text16, CeladonMart3Text17 CeladonMart3Text1: ; 0x4824a db $08 ; asm ld a, [$d778] bit 7, a jr nz, .asm_a5463 ; 0x48250 ld hl, TM18PreReceiveText call PrintText ld bc, (TM_18 << 8) | 1 call GiveItem jr nc, .asm_95f37 ; 0x4825e ld hl, $d778 set 7, [hl] ld hl, ReceivedTM18Text jr .asm_81359 ; 0x48268 .asm_95f37 ; 0x4826a ld hl, TM18NoRoomText jr .asm_81359 ; 0x4826d .asm_a5463 ; 0x4826f ld hl, TM18ExplanationText .asm_81359 ; 0x48272 call PrintText jp TextScriptEnd TM18PreReceiveText: ; 0x48278 TX_FAR _TM18PreReceiveText db $50 ; 0x48278 + 5 bytes ReceivedTM18Text: ; 0x4827d TX_FAR _ReceivedTM18Text ; 0x9c85a db $0B, $50 ; 0x48283 TM18ExplanationText: ; 0x48283 TX_FAR _TM18ExplanationText db $50 ; 0x48283 + 5 bytes TM18NoRoomText: ; 0x48288 TX_FAR _TM18NoRoomText db $50 ; 0x48288 + 5 bytes CeladonMart3Text2: ; 0x4828d TX_FAR _CeladonMart3Text2 db $50 CeladonMart3Text3: ; 0x48292 TX_FAR _CeladonMart3Text3 db $50 CeladonMart3Text4: ; 0x48297 TX_FAR _CeladonMart3Text4 db $50 CeladonMart3Text5: ; 0x4829c TX_FAR _CeladonMart3Text5 db $50 CeladonMart3Text12 CeladonMart3Text10: CeladonMart3Text8: CeladonMart3Text6: ; 0x482a1 TX_FAR _CeladonMart3Text6 db $50 CeladonMart3Text7: ; 0x482a6 TX_FAR _CeladonMart3Text7 db $50 CeladonMart3Text9: ; 0x482ab TX_FAR _CeladonMart3Text9 db $50 CeladonMart3Text11: ; 0x482b0 TX_FAR _CeladonMart3Text11 db $50 CeladonMart3Text13: ; 0x482b5 TX_FAR _CeladonMart3Text13 db $50 CeladonMart3Text14: ; 0x482ba TX_FAR _CeladonMart3Text14 db $50 CeladonMart3Text17: CeladonMart3Text16: CeladonMart3Text15: ; 0x482bf TX_FAR _CeladonMart3Text15 db $50 CeladonMart3Object: ; 0x482c4 (size=94) db $f ; border tile db $3 ; warps db $1, $c, $0, CELADON_MART_4 db $1, $10, $1, CELADON_MART_2 db $1, $1, $0, CELADON_MART_ELEVATOR db $c ; signs db $4, $2, $6 ; CeladonMart3Text6 db $4, $3, $7 ; CeladonMart3Text7 db $4, $5, $8 ; CeladonMart3Text8 db $4, $6, $9 ; CeladonMart3Text9 db $6, $2, $a ; CeladonMart3Text10 db $6, $3, $b ; CeladonMart3Text11 db $6, $5, $c ; CeladonMart3Text12 db $6, $6, $d ; CeladonMart3Text13 db $1, $e, $e ; CeladonMart3Text14 db $1, $4, $f ; CeladonMart3Text15 db $1, $6, $10 ; CeladonMart3Text16 db $1, $a, $11 ; CeladonMart3Text17 db $5 ; people db SPRITE_MART_GUY, $5 + 4, $10 + 4, $ff, $ff, $1 ; person db SPRITE_GAMEBOY_KID_COPY, $6 + 4, $b + 4, $ff, $d3, $2 ; person db SPRITE_GAMEBOY_KID_COPY, $2 + 4, $7 + 4, $ff, $d0, $3 ; person db SPRITE_GAMEBOY_KID_COPY, $2 + 4, $8 + 4, $ff, $d0, $4 ; person db SPRITE_YOUNG_BOY, $5 + 4, $2 + 4, $ff, $d1, $5 ; person ; warp-to EVENT_DISP $a, $1, $c ; CELADON_MART_4 EVENT_DISP $a, $1, $10 ; CELADON_MART_2 EVENT_DISP $a, $1, $1 ; CELADON_MART_ELEVATOR CeladonMart3Blocks: ; 0x48322 40 INCBIN "maps/celadonmart3.blk" CeladonMart4_h: ; 0x4834a to 0x48356 (12 bytes) (bank=12) (id=125) db $12 ; tileset db CELADON_MART_4_HEIGHT, CELADON_MART_4_WIDTH ; dimensions (y, x) dw CeladonMart4Blocks, CeladonMart4Texts, CeladonMart4Script ; blocks, texts, scripts db $00 ; connections dw CeladonMart4Object ; objects CeladonMart4Script: ; 0x48356 jp $3c3c ; 0x48359 CeladonMart4Texts: ; 0x48359 dw CeladonMart4Text1, CeladonMart4Text2, CeladonMart4Text3, CeladonMart4Text4 CeladonMart4Text2: ; 0x48361 TX_FAR _CeladonMart4Text2 db $50 CeladonMart4Text3: ; 0x48366 TX_FAR _CeladonMart4Text3 db $50 CeladonMart4Text4: ; 0x4836b TX_FAR _CeladonMart4Text4 db $50 CeladonMart4Object: ; 0x48370 (size=49) db $f ; border tile db $3 ; warps db $1, $c, $0, CELADON_MART_3 db $1, $10, $1, CELADON_MART_5 db $1, $1, $0, CELADON_MART_ELEVATOR db $1 ; signs db $1, $e, $4 ; CeladonMart4Text4 db $3 ; people db SPRITE_MART_GUY, $7 + 4, $5 + 4, $ff, $ff, $1 ; person db SPRITE_BLACK_HAIR_BOY_2, $5 + 4, $f + 4, $fe, $2, $2 ; person db SPRITE_BUG_CATCHER, $2 + 4, $5 + 4, $fe, $2, $3 ; person ; warp-to EVENT_DISP $a, $1, $c ; CELADON_MART_3 EVENT_DISP $a, $1, $10 ; CELADON_MART_5 EVENT_DISP $a, $1, $1 ; CELADON_MART_ELEVATOR CeladonMart4Blocks: ; 0x483a1 40 INCBIN "maps/celadonmart4.blk" CeladonMartRoof_h: ; 0x483c9 to 0x483d5 (12 bytes) (bank=12) (id=126) db $12 ; tileset db CELADON_MART_5_HEIGHT, CELADON_MART_5_WIDTH ; dimensions (y, x) dw CeladonMartRoofBlocks, CeladonMartRoofTexts, CeladonMartRoofScript ; blocks, texts, scripts db $00 ; connections dw CeladonMartRoofObject ; objects CeladonMartRoofScript: ; 0x483d5 jp $3c3c ; 0x483d8 INCBIN "baserom.gbc",$483d8,$484ee - $483d8 UnnamedText_484ee: ; 0x484ee TX_FAR _UnnamedText_484ee db $50 ; 0x484ee + 5 bytes INCBIN "baserom.gbc",$484f3,$68 CeladonMartRoofTexts: ; 0x4855b dw CeladonMartRoofText1, CeladonMartRoofText2, CeladonMartRoofText5, CeladonMartRoofText5, CeladonMartRoofText5, CeladonMartRoofText6 CeladonMartRoofText1: ; 0x48567 TX_FAR _CeladonMartRoofText1 db $50 CeladonMartRoofText2: ; 0x4856c db $08 ; asm call $43d8 ld a, [$cd37] and a jr z, .asm_914b9 ; 0x48574 ld a, $1 ld [$cc3c], a ld hl, CeladonMartRoofText4 call PrintText call $35ec ld a, [$cc26] and a jr nz, .asm_05aa4 ; 0x48588 call $440c jr .asm_05aa4 ; 0x4858d .asm_914b9 ; 0x4858f ld hl, CeladonMartRoofText3 call PrintText .asm_05aa4 ; 0x48595 jp TextScriptEnd CeladonMartRoofText3: ; 0x48598 TX_FAR _UnnamedText_48598 db $50 ; 0x48598 + 5 bytes CeladonMartRoofText4: UnnamedText_4859d: ; 0x4859d TX_FAR _UnnamedText_4859d db $50 ; 0x4859d + 5 bytes CeladonMartRoofText5: ; 0x485a2 db $f5 CeladonMartRoofText6: ; 0x485a3 TX_FAR _CeladonMartRoofText6 db $50 CeladonMartRoofObject: ; 0x485a8 (size=36) db $42 ; border tile db $1 ; warps db $2, $f, $0, CELADON_MART_5 db $4 ; signs db $1, $a, $3 ; CeladonMartRoofText3 db $1, $b, $4 ; CeladonMartRoofText4 db $2, $c, $5 ; CeladonMartRoofText5 db $2, $d, $6 ; CeladonMartRoofText6 db $2 ; people db SPRITE_BLACK_HAIR_BOY_2, $4 + 4, $a + 4, $ff, $d2, $1 ; person db SPRITE_LITTLE_GIRL, $5 + 4, $5 + 4, $fe, $0, $2 ; person ; warp-to EVENT_DISP $a, $2, $f ; CELADON_MART_5 CeladonMartRoofBlocks: ; 0x485cc 40 INCBIN "maps/celadonmart5.blk" CeladonMartElevator_h: ; 0x485f4 to 0x48600 (12 bytes) (bank=12) (id=127) db $12 ; tileset db CELADON_MART_6_HEIGHT, CELADON_MART_6_WIDTH ; dimensions (y, x) dw CeladonMartElevatorBlocks, CeladonMartElevatorTexts, CeladonMartElevatorScript ; blocks, texts, scripts db $00 ; connections dw CeladonMartElevatorObject ; objects CeladonMartElevatorScript: ; 0x48600 ld hl, $d126 bit 5, [hl] res 5, [hl] push hl call nz, CeladonMartElevatorScript_Unknown4861c pop hl bit 7, [hl] res 7, [hl] call nz, $4654 xor a ld [$cf0c], a inc a ld [$cc3c], a ret ; 0x4861c CeladonMartElevatorScript_Unknown4861c: ; 0x4861c INCBIN "baserom.gbc",$4861c,$40 CeladonMartElevatorTexts: ; 0x4865c dw CeladonMartElevatorText1 CeladonMartElevatorText1: ; 0x4865e db $08 ; asm call $4631 ld hl, $464a ld a, $61 call Predef jp TextScriptEnd CeladonMartElevatorObject: ; 0x4866d (size=23) db $f ; border tile db $2 ; warps db $3, $1, $5, CELADON_MART_1 db $3, $2, $5, CELADON_MART_1 db $1 ; signs db $0, $3, $1 ; CeladonMartElevatorText1 db $0 ; people ; warp-to EVENT_DISP $2, $3, $1 ; CELADON_MART_1 EVENT_DISP $2, $3, $2 ; CELADON_MART_1 CeladonMartElevatorBlocks: ; 0x48684 4 INCBIN "maps/celadonmart6.blk" CeladonMansion1_h: ; 0x48688 to 0x48694 (12 bytes) (bank=12) (id=128) db $13 ; tileset db CELADON_MANSION_1_HEIGHT, CELADON_MANSION_1_WIDTH ; dimensions (y, x) dw CeladonMansion1Blocks, CeladonMansion1Texts, CeladonMansion1Script ; blocks, texts, scripts db $00 ; connections dw CeladonMansion1Object ; objects CeladonMansion1Script: ; 0x48694 jp $3c3c ; 0x48697 CeladonMansion1Texts: ; 0x48697 dw CeladonMansion1Text1, CeladonMansion1Text2, CeladonMansion1Text3, CeladonMansion1Text4, CeladonMansion1Text5 ;0x486a1 call $13d0 jp TextScriptEnd ; 0x486a7 CeladonMansion1Text1: ; 0x486a7 TX_FAR _CeladonMansion1Text1 db $08 ; asm ld a, $4d jp $46a1 CeladonMansion1Text2: ; 0x486b1 TX_FAR _CeladonMansion1Text2 db $50 CeladonMansion1Text3: ; 0x486b6 TX_FAR _CeladonMansion1Text3 db $8 ld a, $4 jp $46a1 ; 0x486c0 CeladonMansion1Text4: ; 0x486c0 TX_FAR _CeladonMansion1Text4 db $8 ld a, $f jp $46a1 ; 0x486ca CeladonMansion1Text5: ; 0x486ca TX_FAR _CeladonMansion1Text5 db $50 CeladonMansion1Object: ; 0x486cf (size=71) db $f ; border tile db $5 ; warps db $b, $4, $2, $ff db $b, $5, $2, $ff db $0, $4, $4, $ff db $1, $7, $1, CELADON_MANSION_2 db $1, $2, $2, CELADON_MANSION_2 db $1 ; signs db $9, $4, $5 ; CeladonMansion1Text5 db $4 ; people db SPRITE_SLOWBRO, $5 + 4, $0 + 4, $ff, $d3, $1 ; person db SPRITE_OLD_MEDIUM_WOMAN, $5 + 4, $1 + 4, $ff, $d0, $2 ; person db SPRITE_CLEFAIRY, $8 + 4, $1 + 4, $fe, $2, $3 ; person db SPRITE_SLOWBRO, $4 + 4, $4 + 4, $fe, $1, $4 ; person ; warp-to EVENT_DISP $4, $b, $4 EVENT_DISP $4, $b, $5 EVENT_DISP $4, $0, $4 EVENT_DISP $4, $1, $7 ; CELADON_MANSION_2 EVENT_DISP $4, $1, $2 ; CELADON_MANSION_2 CeladonMansion1Blocks: ; 0x48716 24 INCBIN "maps/celadonmansion1.blk" CeladonMansion2_h: ; 0x4872e to 0x4873a (12 bytes) (bank=12) (id=129) db $13 ; tileset db CELADON_MANSION_2_HEIGHT, CELADON_MANSION_2_WIDTH ; dimensions (y, x) dw CeladonMansion2Blocks, CeladonMansion2Texts, CeladonMansion2Script ; blocks, texts, scripts db $00 ; connections dw CeladonMansion2Object ; objects CeladonMansion2Script: ; 0x4873a call $3c3c ret ; 0x4873e CeladonMansion2Texts: ; 0x4873e dw CeladonMansion2Text1 CeladonMansion2Text1: ; 0x48740 TX_FAR _CeladonMansion2Text1 db $50 CeladonMansion2Object: ; 0x48745 (size=39) db $f ; border tile db $4 ; warps db $1, $6, $0, CELADON_MANSION_3 db $1, $7, $3, CELADON_MANSION_1 db $1, $2, $4, CELADON_MANSION_1 db $1, $4, $3, CELADON_MANSION_3 db $1 ; signs db $9, $4, $1 ; CeladonMansion2Text1 db $0 ; people ; warp-to EVENT_DISP $4, $1, $6 ; CELADON_MANSION_3 EVENT_DISP $4, $1, $7 ; CELADON_MANSION_1 EVENT_DISP $4, $1, $2 ; CELADON_MANSION_1 EVENT_DISP $4, $1, $4 ; CELADON_MANSION_3 CeladonMansion2Blocks: ; 0x4876c 24 INCBIN "maps/celadonmansion2.blk" CeladonMansion3_h: ; 0x48784 to 0x48790 (12 bytes) (bank=12) (id=130) db $13 ; tileset db CELADON_MANSION_3_HEIGHT, CELADON_MANSION_3_WIDTH ; dimensions (y, x) dw CeladonMansion3Blocks, CeladonMansion3Texts, CeladonMansion3Script ; blocks, texts, scripts db $00 ; connections dw CeladonMansion3Object ; objects CeladonMansion3Script: ; 0x48790 jp $3c3c ; 0x48793 CeladonMansion3Texts: ; 0x48793 dw CeladonMansion3Text1, CeladonMansion3Text2, CeladonMansion3Text3, CeladonMansion3Text4, CeladonMansion3Text5, CeladonMansion3Text6, CeladonMansion3Text7, CeladonMansion3Text8 CeladonMansion3Text1: ; 0x487a3 TX_FAR _CeladonMansion3Text1 db $50 CeladonMansion3Text2: ; 0x487a8 TX_FAR _CeladonMansion3Text2 db $50 CeladonMansion3Text3: ; 0x487ad TX_FAR _CeladonMansion3Text3 db $50 CeladonMansion3Text4: ; 0x487b2 db $08 ; asm ld hl, $d2f7 ld b, $13 call $2b7f ld a, [$d11e] cp $96 jr nc, .asm_f03d0 ; 0x487c0 ld hl, UnnamedText_487d0 jr .asm_c13f0 ; 0x487c5 .asm_f03d0 ; 0x487c7 ld hl, UnnamedText_487d5 .asm_c13f0 ; 0x487ca call PrintText jp TextScriptEnd UnnamedText_487d0: ; 0x487d0 TX_FAR _UnnamedText_487d0 db $50 ; 0x487d5 UnnamedText_487d5: ; 0x487d5 TX_FAR _UnnamedText_487d5 ; 0x9d0ad db $6 db $8 ld hl, $66e2 ld b, $15 call Bankswitch ld a, $1 ld [$cc3c], a jp TextScriptEnd ; 0x487eb CeladonMansion3Text5: ; 0x487eb TX_FAR _CeladonMansion3Text5 db $50 CeladonMansion3Text6: ; 0x487f0 TX_FAR _CeladonMansion3Text6 db $50 CeladonMansion3Text7: ; 0x487f5 TX_FAR _CeladonMansion3Text7 db $50 CeladonMansion3Text8: ; 0x487fa TX_FAR _CeladonMansion3Text8 db $50 CeladonMansion3Object: ; 0x487ff (size=72) db $f ; border tile db $4 ; warps db $1, $6, $0, CELADON_MANSION_2 db $1, $7, $0, CELADON_MANSION_4 db $1, $2, $1, CELADON_MANSION_4 db $1, $4, $3, CELADON_MANSION_2 db $4 ; signs db $3, $1, $5 ; CeladonMansion3Text5 db $3, $4, $6 ; CeladonMansion3Text6 db $6, $1, $7 ; CeladonMansion3Text7 db $9, $4, $8 ; CeladonMansion3Text8 db $4 ; people db SPRITE_BIKE_SHOP_GUY, $4 + 4, $0 + 4, $ff, $d1, $1 ; person db SPRITE_MART_GUY, $4 + 4, $3 + 4, $ff, $d1, $2 ; person db SPRITE_BLACK_HAIR_BOY_2, $7 + 4, $0 + 4, $ff, $d1, $3 ; person db SPRITE_LAPRAS_GIVER, $3 + 4, $2 + 4, $ff, $ff, $4 ; person ; warp-to EVENT_DISP $4, $1, $6 ; CELADON_MANSION_2 EVENT_DISP $4, $1, $7 ; CELADON_MANSION_4 EVENT_DISP $4, $1, $2 ; CELADON_MANSION_4 EVENT_DISP $4, $1, $4 ; CELADON_MANSION_2 CeladonMansion3Blocks: ; 0x48847 24 INCBIN "maps/celadonmansion3.blk" CeladonMansion4_h: ; 0x4885f to 0x4886b (12 bytes) (bank=12) (id=131) db $13 ; tileset db CELADON_MANSION_4_HEIGHT, CELADON_MANSION_4_WIDTH ; dimensions (y, x) dw CeladonMansion4Blocks, CeladonMansion4Texts, CeladonMansion4Script ; blocks, texts, scripts db $00 ; connections dw CeladonMansion4Object ; objects CeladonMansion4Script: ; 0x4886b jp $3c3c ; 0x4886e CeladonMansion4Texts: ; 0x4886e dw CeladonMansion4Text1 CeladonMansion4Text1: ; 0x48870 TX_FAR _CeladonMansion4Text1 db $50 CeladonMansion4Object: ; 0x48875 (size=31) db $9 ; border tile db $3 ; warps db $1, $6, $1, CELADON_MANSION_3 db $1, $2, $2, CELADON_MANSION_3 db $7, $2, $0, CELADON_MANSION_5 db $1 ; signs db $7, $3, $1 ; CeladonMansion4Text1 db $0 ; people ; warp-to EVENT_DISP $4, $1, $6 ; CELADON_MANSION_3 EVENT_DISP $4, $1, $2 ; CELADON_MANSION_3 EVENT_DISP $4, $7, $2 ; CELADON_MANSION_5 CeladonMansion4Blocks: ; 0x48894 24 INCBIN "maps/celadonmansion4.blk" CeladonPokecenter_h: ; 0x488ac to 0x488b8 (12 bytes) (bank=12) (id=133) db $06 ; tileset db CELADON_POKECENTER_HEIGHT, CELADON_POKECENTER_WIDTH ; dimensions (y, x) dw CeladonPokecenterBlocks, CeladonPokecenterTexts, CeladonPokecenterScript ; blocks, texts, scripts db $00 ; connections dw CeladonPokecenterObject ; objects CeladonPokecenterScript: ; 0x488b8 call $22fa jp $3c3c ; 0x488be CeladonPokecenterTexts: dw CeladonPokecenterText1, CeladonPokecenterText2, CeladonPokecenterText3, CeladonPokecenterText4 CeladonPokecenterText4: db $f6 CeladonPokecenterText1: db $ff CeladonPokecenterText2: ; 0x488c8 TX_FAR _CeladonPokecenterText2 db $50 CeladonPokecenterText3: ; 0x488cd TX_FAR _CeladonPokecenterText3 db $50 CeladonPokecenterObject: ; 0x488d2 (size=44) db $0 ; border tile db $2 ; warps db $7, $3, $5, $ff db $7, $4, $5, $ff db $0 ; signs db $4 ; people db SPRITE_NURSE, $1 + 4, $3 + 4, $ff, $d0, $1 ; person db SPRITE_GENTLEMAN, $3 + 4, $7 + 4, $fe, $2, $2 ; person db SPRITE_FOULARD_WOMAN, $5 + 4, $a + 4, $fe, $0, $3 ; person db SPRITE_CABLE_CLUB_WOMAN, $2 + 4, $b + 4, $ff, $d0, $4 ; person ; warp-to EVENT_DISP $7, $7, $3 EVENT_DISP $7, $7, $4 CeladonGym_h: ; 0x488fe to 0x4890a (12 bytes) (bank=12) (id=134) db $07 ; tileset db CELADON_GYM_HEIGHT, CELADON_GYM_WIDTH ; dimensions (y, x) dw CeladonGymBlocks, CeladonGymTexts, CeladonGymScript ; blocks, texts, scripts db $00 ; connections dw CeladonGymObject ; objects CeladonGymScript: ; 0x4890a ld hl, $d126 bit 6, [hl] res 6, [hl] call nz, CeladonGymScript_Unknown48927 call $3c3c ld hl, CeladonGymTrainerHeaders ld de, $494e ld a, [$d5ff] call $3160 ld [$d5ff], a ret ; 0x48927 CeladonGymScript_Unknown48927: ; 0x48927 INCBIN "baserom.gbc",$48927,$7f CeladonGymTexts: ; 0x489a6 dw CeladonGymText1, CeladonGymText2, CeladonGymText3, CeladonGymText4, CeladonGymText5, CeladonGymText6, CeladonGymText7, CeladonGymText8, CeladonGymText9, TM21Text, TM21NoRoomText CeladonGymTrainerHeaders: CeladonGymTrainerHeader0: ; 0x489bc db $2 ; flag's bit db ($2 << 4) ; trainer's view range dw $d77c ; flag's byte dw CeladonGymBattleText2 ; 0x4a8b TextBeforeBattle dw CeladonGymAfterBattleText2 ; 0x4a95 TextAfterBattle dw CeladonGymEndBattleText2 ; 0x4a90 TextEndBattle dw CeladonGymEndBattleText2 ; 0x4a90 TextEndBattle ; 0x489c8 CeladonGymTrainerHeader2: ; 0x489c8 db $3 ; flag's bit db ($2 << 4) ; trainer's view range dw $d77c ; flag's byte dw CeladonGymBattleText3 ; 0x4aa4 TextBeforeBattle dw CeladonGymAfterBattleText3 ; 0x4aae TextAfterBattle dw CeladonGymEndBattleText3 ; 0x4aa9 TextEndBattle dw CeladonGymEndBattleText3 ; 0x4aa9 TextEndBattle ; 0x489d4 CeladonGymTrainerHeader3: ; 0x489d4 db $4 ; flag's bit db ($4 << 4) ; trainer's view range dw $d77c ; flag's byte dw CeladonGymBattleText4 ; 0x4abd TextBeforeBattle dw CeladonGymAfterBattleText4 ; 0x4ac7 TextAfterBattle dw CeladonGymEndBattleText4 ; 0x4ac2 TextEndBattle dw CeladonGymEndBattleText4 ; 0x4ac2 TextEndBattle ; 0x489e0 CeladonGymTrainerHeader4: ; 0x489e0 db $5 ; flag's bit db ($4 << 4) ; trainer's view range dw $d77c ; flag's byte dw CeladonGymBattleText5 ; 0x4ad6 TextBeforeBattle dw CeladonGymAfterBattleText5 ; 0x4ae0 TextAfterBattle dw CeladonGymEndBattleText5 ; 0x4adb TextEndBattle dw CeladonGymEndBattleText5 ; 0x4adb TextEndBattle ; 0x489ec CeladonGymTrainerHeader5: ; 0x489ec db $6 ; flag's bit db ($2 << 4) ; trainer's view range dw $d77c ; flag's byte dw CeladonGymBattleText6 ; 0x4aef TextBeforeBattle dw CeladonGymAfterBattleText6 ; 0x4af9 TextAfterBattle dw CeladonGymEndBattleText6 ; 0x4af4 TextEndBattle dw CeladonGymEndBattleText6 ; 0x4af4 TextEndBattle ; 0x489f8 CeladonGymTrainerHeader6: ; 0x489f8 db $7 ; flag's bit db ($2 << 4) ; trainer's view range dw $d77c ; flag's byte dw CeladonGymBattleText7 ; 0x4b08 TextBeforeBattle dw CeladonGymAfterBattleText7 ; 0x4b12 TextAfterBattle dw CeladonGymEndBattleText7 ; 0x4b0d TextEndBattle dw CeladonGymEndBattleText7 ; 0x4b0d TextEndBattle ; 0x48a04 CeladonGymTrainerHeader7: ; 0x48a04 db $8 ; flag's bit db ($3 << 4) ; trainer's view range dw $d77c ; flag's byte dw CeladonGymBattleText8 ; 0x4b21 TextBeforeBattle dw CeladonGymAfterBattleText8 ; 0x4b2b TextAfterBattle dw CeladonGymEndBattleText8 ; 0x4b26 TextEndBattle dw CeladonGymEndBattleText8 ; 0x4b26 TextEndBattle ; 0x48a10 db $ff CeladonGymText1: ; 0x48a11 db $08 ; asm ld a, [$d77c] bit 1, a jr z, .asm_16064 ; 0x48a17 bit 0, a jr nz, .asm_3b22c ; 0x48a1b call z, $4963 call DisableWaitingAfterTextDisplay jr .asm_96252 ; 0x48a23 .asm_3b22c ; 0x48a25 ld hl, UnnamedText_48a68 call PrintText jr .asm_96252 ; 0x48a2b .asm_16064 ; 0x48a2d ld hl, UnnamedText_48a5e call PrintText ld hl, $d72d set 6, [hl] set 7, [hl] ld hl, UnnamedText_48a63 ld de, UnnamedText_48a63 call $3354 ldh a, [$8c] ld [$cf13], a call $336a call $32d7 ld a, $4 ld [$d05c], a ld a, $3 ld [$d5ff], a ld [$da39], a .asm_96252 ; 0x48a5b jp TextScriptEnd UnnamedText_48a5e: ; 0x48a5e TX_FAR _UnnamedText_48a5e db $50 ; 0x48a5e + 5 bytes UnnamedText_48a63: ; 0x48a63 TX_FAR _UnnamedText_48a63 db $50 ; 0x48a63 + 5 bytes UnnamedText_48a68: ; 0x48a68 TX_FAR _UnnamedText_48a68 db $50 ; 0x48a68 + 5 bytes CeladonGymText9: ; 0x48a6d UnnamedText_48a6d: ; 0x48a6d TX_FAR _UnnamedText_48a6d db $50 ; 0x48a6d + 5 bytes TM21Text: ; 0x48a72 TX_FAR _ReceivedTM21Text ; 0x9d50c db $0B TX_FAR _TM21ExplanationText ; 0x9d520 db $50 ; 0x48a7c TM21NoRoomText: ; 0x48a7c TX_FAR _TM21NoRoomText db $50 ; 0x48a7c + 5 bytes CeladonGymText2: ; 0x48a81 db $08 ; asm ld hl, CeladonGymTrainerHeader0 call LoadTrainerHeader jp TextScriptEnd CeladonGymBattleText2: ; 0x48a8b TX_FAR _CeladonGymBattleText2 db $50 ; 0x48a8b + 5 bytes CeladonGymEndBattleText2: ; 0x48a90 TX_FAR _CeladonGymEndBattleText2 db $50 ; 0x48a90 + 5 bytes CeladonGymAfterBattleText2: ; 0x48a95 TX_FAR _CeladonGymAfterBattleText2 db $50 ; 0x48a95 + 5 bytes CeladonGymText3: ; 0x48a9a db $08 ; asm ld hl, CeladonGymTrainerHeader2 call LoadTrainerHeader jp TextScriptEnd CeladonGymBattleText3: ; 0x48aa4 TX_FAR _CeladonGymBattleText3 db $50 ; 0x48aa4 + 5 bytes CeladonGymEndBattleText3: ; 0x48aa9 TX_FAR _CeladonGymEndBattleText3 db $50 ; 0x48aa9 + 5 bytes CeladonGymAfterBattleText3: ; 0x48aae TX_FAR _CeladonGymAfterBattleText3 db $50 ; 0x48aae + 5 bytes CeladonGymText4: ; 0x48ab3 db $08 ; asm ld hl, CeladonGymTrainerHeader3 call LoadTrainerHeader jp TextScriptEnd CeladonGymBattleText4: ; 0x48abd TX_FAR _CeladonGymBattleText4 db $50 ; 0x48abd + 5 bytes CeladonGymEndBattleText4: ; 0x48ac2 TX_FAR _CeladonGymEndBattleText4 db $50 ; 0x48ac2 + 5 bytes CeladonGymAfterBattleText4: ; 0x48ac7 TX_FAR _CeladonGymAfterBattleText4 db $50 ; 0x48ac7 + 5 bytes CeladonGymText5: ; 0x48acc db $08 ; asm ld hl, CeladonGymTrainerHeader4 call LoadTrainerHeader jp TextScriptEnd CeladonGymBattleText5: ; 0x48ad6 TX_FAR _CeladonGymBattleText5 db $50 ; 0x48ad6 + 5 bytes CeladonGymEndBattleText5: ; 0x48adb TX_FAR _CeladonGymEndBattleText5 db $50 ; 0x48adb + 5 bytes CeladonGymAfterBattleText5: ; 0x48ae0 TX_FAR _CeladonGymAfterBattleText5 db $50 ; 0x48ae0 + 5 bytes CeladonGymText6: ; 0x48ae5 db $08 ; asm ld hl, CeladonGymTrainerHeader5 call LoadTrainerHeader jp TextScriptEnd CeladonGymBattleText6: ; 0x48aef TX_FAR _CeladonGymBattleText6 db $50 ; 0x48aef + 5 bytes CeladonGymEndBattleText6: ; 0x48af4 TX_FAR _CeladonGymEndBattleText6 db $50 ; 0x48af4 + 5 bytes CeladonGymAfterBattleText6: ; 0x48af9 TX_FAR _CeladonGymAfterBattleText6 db $50 ; 0x48af9 + 5 bytes CeladonGymText7: ; 0x48afe db $08 ; asm ld hl, CeladonGymTrainerHeader6 call LoadTrainerHeader jp TextScriptEnd CeladonGymBattleText7: ; 0x48b08 TX_FAR _CeladonGymBattleText7 db $50 ; 0x48b08 + 5 bytes CeladonGymEndBattleText7: ; 0x48b0d TX_FAR _CeladonGymEndBattleText7 db $50 ; 0x48b0d + 5 bytes CeladonGymAfterBattleText7: ; 0x48b12 TX_FAR _CeladonGymAfterBattleText7 db $50 ; 0x48b12 + 5 bytes CeladonGymText8: ; 0x48b17 db $08 ; asm ld hl, CeladonGymTrainerHeader7 call LoadTrainerHeader jp TextScriptEnd CeladonGymBattleText8: ; 0x48b21 TX_FAR _CeladonGymBattleText8 db $50 ; 0x48b21 + 5 bytes CeladonGymEndBattleText8: ; 0x48b26 TX_FAR _CeladonGymEndBattleText8 db $50 ; 0x48b26 + 5 bytes CeladonGymAfterBattleText8: ; 0x48b2b TX_FAR _CeladonGymAfterBattleText8 db $50 ; 0x48b2b + 5 bytes CeladonGymObject: ; 0x48b30 (size=84) db $3 ; border tile db $2 ; warps db $11, $4, $6, $ff db $11, $5, $6, $ff db $0 ; signs db $8 ; people db SPRITE_ERIKA, $3 + 4, $4 + 4, $ff, $d0, $41, ERIKA + $C8, $1 ; trainer db SPRITE_LASS, $b + 4, $2 + 4, $ff, $d3, $42, LASS + $C8, $11 ; trainer db SPRITE_FOULARD_WOMAN, $a + 4, $7 + 4, $ff, $d2, $43, BEAUTY + $C8, $1 ; trainer db SPRITE_LASS, $5 + 4, $9 + 4, $ff, $d0, $44, JR__TRAINER_F + $C8, $b ; trainer db SPRITE_FOULARD_WOMAN, $5 + 4, $1 + 4, $ff, $d0, $45, BEAUTY + $C8, $2 ; trainer db SPRITE_LASS, $3 + 4, $6 + 4, $ff, $d0, $46, LASS + $C8, $12 ; trainer db SPRITE_FOULARD_WOMAN, $3 + 4, $3 + 4, $ff, $d0, $47, BEAUTY + $C8, $3 ; trainer db SPRITE_LASS, $3 + 4, $5 + 4, $ff, $d0, $48, COOLTRAINER_F + $C8, $1 ; trainer ; warp-to EVENT_DISP $5, $11, $4 EVENT_DISP $5, $11, $5 CeladonGymBlocks: ; 0x48b84 45 INCBIN "maps/celadongym.blk" CeladonGameCorner_h: ; 0x48bb1 to 0x48bbd (12 bytes) (bank=12) (id=135) db $12 ; tileset db GAME_CORNER_HEIGHT, GAME_CORNER_WIDTH ; dimensions (y, x) dw CeladonGameCornerBlocks, CeladonGameCornerTexts, CeladonGameCornerScript ; blocks, texts, scripts db $00 ; connections dw CeladonGameCornerObject ; objects CeladonGameCornerScript: ; 0x48bbd call Unknown_48bcf call $4bec call $3c3c ld hl, CeladonGameCornerScripts ld a, [$d65f] jp $3d97 ; 0x48bcf Unknown_48bcf: ; 0x48bcf INCBIN "baserom.gbc",$48bcf,$48c12 - $48bcf CeladonGameCornerScripts: ; 0x48c12 dw CeladonGameCornerScript0, CeladonGameCornerScript1, CeladonGameCornerScript2 CeladonGameCornerScript0: ; 0x48c18 ret ; 0x48c19 CeladonGameCornerScript1: ; 0x48c19 INCBIN "baserom.gbc",$48c19,$48c5a - $48c19 ; 0x48c5a INCBIN "baserom.gbc",$48c5a,$48c69 - $48c5a CeladonGameCornerScript2: ; 0x48c69 INCBIN "baserom.gbc",$48c69,$48c8a - $48c69 CeladonGameCornerTexts: ; 0x48c8a dw CeladonGameCornerText1, CeladonGameCornerText2, CeladonGameCornerText3, CeladonGameCornerText4, CeladonGameCornerText5, CeladonGameCornerText6, CeladonGameCornerText7, CeladonGameCornerText8, CeladonGameCornerText9, CeladonGameCornerText10, CeladonGameCornerText11, CeladonGameCornerText12, CeladonGameCornerText13 CeladonGameCornerText1: ; 0x48ca4 TX_FAR _CeladonGameCornerText1 db $50 CeladonGameCornerText2: ; 0x48ca9 db $08 ; asm call $4f1e ld hl, UnnamedText_48d22 call PrintText call $35ec ld a, [$cc26] and a jr nz, .asm_c650b ; 0x48cba ld b,COIN_CASE call $3493 jr z, .asm_ed086 ; 0x48cc1 call $4f95 jr nc, .asm_31338 ; 0x48cc6 xor a ldh [$9f], a ldh [$a1], a ld a, $10 ldh [$a0], a call $35a6 jr nc, .asm_b6ef0 ; 0x48cd4 ld hl, $4d31 jr .asm_e2afd ; 0x48cd9 .asm_b6ef0 ; 0x48cdb xor a ldh [$9f], a ldh [$a1], a ld a, $10 ldh [$a0], a ld hl, $ffa1 ld de, $d349 ld c, $3 ld a, $c call Predef xor a ldh [$9f], a ldh [$a0], a ld a, $50 ldh [$a1], a ld de, $d5a5 ld hl, $ffa1 ld c, $2 ld a, $b call Predef call $4f1e ld hl, UnnamedText_48d27 jr .asm_e2afd ; 0x48d0d .asm_c650b ; 0x48d0f ld hl, UnnamedText_48d2c jr .asm_e2afd ; 0x48d12 .asm_31338 ; 0x48d14 ld hl, UnnamedText_48d36 jr .asm_e2afd ; 0x48d17 .asm_ed086 ; 0x48d19 ld hl, UnnamedText_48d3b .asm_e2afd ; 0x48d1c call PrintText jp TextScriptEnd UnnamedText_48d22: ; 0x48d22 TX_FAR _UnnamedText_48d22 db $50 ; 0x48d27 UnnamedText_48d27: ; 0x48d27 TX_FAR _UnnamedText_48d27 db $50 ; 0x48d2c UnnamedText_48d2c: ; 0x48d2c TX_FAR _UnnamedText_48d2c db $50 ; 0x48d31 UnnamedText_48d31: ; 0x48d31 TX_FAR _UnnamedText_48d31 db $50 ; 0x48d36 UnnamedText_48d36: ; 0x48d36 TX_FAR _UnnamedText_48d36 db $50 ; 0x48d3b UnnamedText_48d3b: ; 0x48d3b TX_FAR _UnnamedText_48d3b db $50 ; 0x48d40 CeladonGameCornerText3: ; 0x48d40 TX_FAR _CeladonGameCornerText3 db $50 CeladonGameCornerText4: ; 0x48d45 TX_FAR _CeladonGameCornerText4 db $50 CeladonGameCornerText5: ; 0x48d4a db $08 ; asm ld a, [$d77e] bit 2, a jr nz, .asm_d0957 ; 0x48d50 ld hl, UnnamedText_48d9c call PrintText ld b, COIN_CASE call $3493 jr z, .asm_5aef9 ; 0x48d5d call $4f95 jr nc, .asm_98546 ; 0x48d62 xor a ldh [$9f], a ldh [$a0], a ld a, $10 ldh [$a1], a ld de, $d5a5 ld hl, $ffa1 ld c, $2 ld a, $b call Predef ld hl, $d77e set 2, [hl] ld a, $1 ld [$cc3c], a ld hl, Received10CoinsText jr .asm_c7d1a ; 0x48d87 .asm_d0957 ; 0x48d89 ld hl, UnnamedText_48dac jr .asm_c7d1a ; 0x48d8c .asm_98546 ; 0x48d8e ld hl, UnnamedText_48da7 jr .asm_c7d1a ; 0x48d91 .asm_5aef9 ; 0x48d93 ld hl, UnnamedText_48f19 .asm_c7d1a ; 0x48d96 call PrintText jp TextScriptEnd UnnamedText_48d9c: ; 0x48d9c TX_FAR _UnnamedText_48d9c db $50 ; 0x48d9c + 5 bytes Received10CoinsText: ; 0x48da1 TX_FAR _Received10CoinsText ; 0x9daa9 db $0B, $50 UnnamedText_48da7: ; 0x48da7 TX_FAR _UnnamedText_48da7 db $50 ; 0x48da7 + 5 bytes UnnamedText_48dac: ; 0x48dac TX_FAR _UnnamedText_48dac db $50 ; 0x48dac + 5 bytes CeladonGameCornerText6: ; 0x48db1 TX_FAR _CeladonGameCornerText6 db $50 CeladonGameCornerText7: ; 0x48db6 db $08 ; asm ld a, [$d77c] bit 1, a ld hl, $4dca jr z, .asm_be3fd ; 0x48dbf ld hl, $4dcf .asm_be3fd ; 0x48dc4 call PrintText jp TextScriptEnd UnnamedText_48dca: ; 0x48dca TX_FAR _UnnamedText_48dca db $50 ; 0x48dca + 5 bytes UnnamedText_48dcf: ; 0x48dcf TX_FAR _UnnamedText_48dcf db $50 ; 0x48dcf + 5 bytes CeladonGameCornerText8: ; 0x48dd4 TX_FAR _CeladonGameCornerText8 db $50 CeladonGameCornerText9: ; 0x48dd9 db $08 ; asm ld a, [$d77e] bit 4, a jr nz, .asm_ed8bc ; 0x48ddf ld hl, UnnamedText_48e26 call PrintText ld b, COIN_CASE call $3493 jr z, .asm_df794 ; 0x48dec call $4f95 jr nc, .asm_f17c3 ; 0x48df1 xor a ldh [$9f], a ldh [$a0], a ld a, $20 ldh [$a1], a ld de, $d5a5 ld hl, $ffa1 ld c, $2 ld a, $b call Predef ld hl, $d77e set 4, [hl] ld hl, Received20CoinsText jr .asm_0ddc2 ; 0x48e11 .asm_ed8bc ; 0x48e13 ld hl, UnnamedText_48e36 jr .asm_0ddc2 ; 0x48e16 .asm_f17c3 ; 0x48e18 ld hl, UnnamedText_48e31 jr .asm_0ddc2 ; 0x48e1b .asm_df794 ; 0x48e1d ld hl, UnnamedText_48f19 .asm_0ddc2 ; 0x48e20 call PrintText jp TextScriptEnd UnnamedText_48e26: ; 0x48e26 TX_FAR _UnnamedText_48e26 db $50 ; 0x48e26 + 5 bytes Received20CoinsText: ; 0x48e2b TX_FAR _Received20CoinsText ; 0x9dc4f db $0B, $50 ; 0x48e31 UnnamedText_48e31: ; 0x48e31 TX_FAR _UnnamedText_48e31 db $50 ; 0x48e31 + 5 bytes UnnamedText_48e36: ; 0x48e36 TX_FAR _UnnamedText_48e36 db $50 ; 0x48e36 + 5 bytes CeladonGameCornerText10: ; 0x48e3b db $08 ; asm ld a, [$d77e] bit 3, a jr nz, .asm_ff080 ; 0x48e41 ld hl, $4e88 call PrintText ld b,COIN_CASE call $3493 jr z, .asm_4fb0c ; 0x48e4e call $4f95 jr z, .asm_9505a ; 0x48e53 xor a ldh [$9f], a ldh [$a0], a ld a, $20 ldh [$a1], a ld de, $d5a5 ld hl, $ffa1 ld c, $2 ld a, $b call Predef ld hl, $d77e set 3, [hl] ld hl, UnnamedText_48e8d jr .asm_78d65 ; 0x48e73 .asm_ff080 ; 0x48e75 ld hl, UnnamedText_48e98 jr .asm_78d65 ; 0x48e78 .asm_9505a ; 0x48e7a ld hl, UnnamedText_48e93 jr .asm_78d65 ; 0x48e7d .asm_4fb0c ; 0x48e7f ld hl, UnnamedText_48f19 .asm_78d65 ; 0x48e82 call PrintText jp TextScriptEnd UnnamedText_48e88: ; 0x48e88 TX_FAR _UnnamedText_48e88 db $50 ; 0x48e88 + 5 bytes UnnamedText_48e8d: ; 0x48e8d TX_FAR _UnnamedText_48e8d ; 0x9dceb db $0B, $50 ; 0x48e93 UnnamedText_48e93: ; 0x48e93 TX_FAR _UnnamedText_48e93 db $50 ; 0x48e93 + 5 bytes UnnamedText_48e98: ; 0x48e98 TX_FAR _UnnamedText_48e98 db $50 ; 0x48e98 + 5 bytes CeladonGameCornerText11: ; 0x48e9d db $08 ; asm ld hl, UnnamedText_48ece call PrintText ld hl, $d72d set 6, [hl] set 7, [hl] ld hl, UnnamedText_48ed3 ld de, UnnamedText_48ed3 call $3354 ldh a, [$8c] ld [$cf13], a call $336a call $32d7 xor a ldh [$b4], a ldh [$b3], a ldh [$b2], a ld a, $1 ld [$d65f], a jp TextScriptEnd UnnamedText_48ece: ; 0x48ece TX_FAR _UnnamedText_48ece db $50 ; 0x48ece + 5 bytes UnnamedText_48ed3: ; 0x48ed3 TX_FAR _UnnamedText_48ed3 db $50 ; 0x48ed3 + 5 bytes CeladonGameCornerText13: ; 0x48ed8 TX_FAR _UnnamedText_48ed8 db $50 ; 0x48ed8 + 5 bytes CeladonGameCornerText12: ; 0x48edd db $08 ; asm ld a, $1 ld [$cc3c], a ld hl, UnnamedText_48f09 call PrintText call $3748 ld a, $ad call $23b1 call $3748 ld hl, $d77e set 1, [hl] ld a, $43 ld [$d09f], a ld bc, $0208 ld a, $17 call Predef jp TextScriptEnd UnnamedText_48f09: ; 0x48f09 TX_FAR _UnnamedText_48f09 ; 0x9ddb0 db $8 ld a, $9d call $23b1 call $3748 jp TextScriptEnd ; 0x48f19 UnnamedText_48f19: ; 0x48f19 TX_FAR _UnnamedText_48f19 db $50 ; 0x48f19 + 5 bytes INCBIN "baserom.gbc",$48f1e,$82 CeladonGameCornerObject: ; 0x48fa0 (size=99) db $f ; border tile db $3 ; warps db $11, $f, $7, $ff db $11, $10, $7, $ff db $4, $11, $1, ROCKET_HIDEOUT_1 db $1 ; signs db $4, $9, $c ; CeladonGameCornerText12 db $b ; people db SPRITE_FOULARD_WOMAN, $6 + 4, $2 + 4, $ff, $d0, $1 ; person db SPRITE_MART_GUY, $6 + 4, $5 + 4, $ff, $d0, $2 ; person db SPRITE_FAT_BALD_GUY, $a + 4, $2 + 4, $ff, $d2, $3 ; person db SPRITE_FOULARD_WOMAN, $d + 4, $2 + 4, $ff, $d2, $4 ; person db SPRITE_FISHER, $b + 4, $5 + 4, $ff, $d3, $5 ; person db SPRITE_MOM_GEISHA, $b + 4, $8 + 4, $ff, $d2, $6 ; person db SPRITE_GYM_HELPER, $e + 4, $8 + 4, $ff, $d2, $7 ; person db SPRITE_GAMBLER, $f + 4, $b + 4, $ff, $d3, $8 ; person db SPRITE_MART_GUY, $b + 4, $e + 4, $ff, $d2, $9 ; person db SPRITE_GENTLEMAN, $d + 4, $11 + 4, $ff, $d3, $a ; person db SPRITE_ROCKET, $5 + 4, $9 + 4, $ff, $d1, $4b, ROCKET + $C8, $7 ; trainer ; warp-to EVENT_DISP $a, $11, $f EVENT_DISP $a, $11, $10 EVENT_DISP $a, $4, $11 ; ROCKET_HIDEOUT_1 CeladonGameCornerBlocks: ; 0x49003 90 INCBIN "maps/celadongamecorner.blk" CeladonMart5_h: ; 0x4905d to 0x49069 (12 bytes) (bank=12) (id=136) db $12 ; tileset db CELADON_HOUSE_HEIGHT, CELADON_HOUSE_WIDTH ; dimensions (y, x) dw CeladonMart5Blocks, CeladonMart5Texts, CeladonMart5Script ; blocks, texts, scripts db $00 ; connections dw CeladonMart5Object ; objects CeladonMart5Script: ; 0x49069 jp $3c3c ; 0x4906c CeladonMart5Texts: ; 0x4906c dw CeladonMart5Text1, CeladonMart5Text2, CeladonMart5Text3, CeladonMart5Text4, CeladonMart5Text5 CeladonMart5Text1: ; 0x49076 TX_FAR _CeladonMart5Text1 db $50 CeladonMart5Text2: ; 0x4907b TX_FAR _CeladonMart5Text2 db $50 CeladonMart5Text5: ; 0x49080 TX_FAR _CeladonMart5Text5 db $50 CeladonMart5Object: ; 0x49085 (size=55) db $f ; border tile db $3 ; warps db $1, $c, $0, CELADON_MART_ROOF db $1, $10, $1, CELADON_MART_4 db $1, $1, $0, CELADON_MART_ELEVATOR db $1 ; signs db $1, $e, $5 ; CeladonMart5Text5 db $4 ; people db SPRITE_GENTLEMAN, $5 + 4, $e + 4, $fe, $1, $1 ; person db SPRITE_SAILOR, $6 + 4, $2 + 4, $ff, $ff, $2 ; person db SPRITE_MART_GUY, $3 + 4, $5 + 4, $ff, $d0, $3 ; person db SPRITE_MART_GUY, $3 + 4, $6 + 4, $ff, $d0, $4 ; person ; warp-to EVENT_DISP $a, $1, $c ; CELADON_MART_ROOF EVENT_DISP $a, $1, $10 ; CELADON_MART_4 EVENT_DISP $a, $1, $1 ; CELADON_MART_ELEVATOR CeladonMart5Blocks: ; 0x490bc 40 INCBIN "maps/celadonhouse.blk" CeladonPrizeRoom_h: ; 0x490e4 to 0x490f0 (12 bytes) (bank=12) (id=137) db $12 ; tileset db CELADONPRIZE_ROOM_HEIGHT, CELADONPRIZE_ROOM_WIDTH ; dimensions (y, x) dw CeladonPrizeRoomBlocks, CeladonPrizeRoomTexts, CeladonPrizeRoomScript ; blocks, texts, scripts db $00 ; connections dw CeladonPrizeRoomObject ; objects CeladonPrizeRoomScript: ; 0x490f0 jp $3c3c ; 0x490f3 CeladonPrizeRoomTexts: dw CeladonPrizeRoomText1, CeladonPrizeRoomText2, CeladonPrizeRoomText3, CeladonPrizeRoomText3, CeladonPrizeRoomText3 CeladonPrizeRoomText1: ; 0x490fd TX_FAR _CeladonPrizeRoomText1 db $50 CeladonPrizeRoomText2: ; 0x49102 TX_FAR _CeladonPrizeRoomText2 db $50 CeladonPrizeRoomText3: ; 0x49107 db $f7 CeladonPrizeRoomObject: ; 0x49108 (size=41) db $f ; border tile db $2 ; warps db $7, $4, $9, $ff db $7, $5, $9, $ff db $3 ; signs db $2, $2, $3 ; CeladonPrizeRoomText3 db $2, $4, $4 ; CeladonPrizeRoomText4 db $2, $6, $5 ; CeladonPrizeRoomText5 db $2 ; people db SPRITE_BALDING_GUY, $4 + 4, $1 + 4, $ff, $ff, $1 ; person db SPRITE_GAMBLER, $3 + 4, $7 + 4, $fe, $2, $2 ; person ; warp-to EVENT_DISP $5, $7, $4 EVENT_DISP $5, $7, $5 CeladonPrizeRoomBlocks: ; 0x49131 20 INCBIN "maps/celadonprizeroom.blk" CeladonDiner_h: ; 0x49145 to 0x49151 (12 bytes) (bank=12) (id=138) db $12 ; tileset db CELADON_DINER_HEIGHT, CELADON_DINER_WIDTH ; dimensions (y, x) dw CeladonDinerBlocks, CeladonDinerTexts, CeladonDinerScript ; blocks, texts, scripts db $00 ; connections dw CeladonDinerObject ; objects CeladonDinerScript: ; 0x49151 call $3c3c ret ; 0x49155 CeladonDinerTexts: ; 0x49155 dw CeladonDinerText1, CeladonDinerText2, CeladonDinerText3, CeladonDinerText4, CeladonDinerText5 CeladonDinerText1: ; 0x4915f TX_FAR _CeladonDinerText1 db $50 CeladonDinerText2: ; 0x49164 TX_FAR _CeladonDinerText2 db $50 CeladonDinerText3: ; 0x49169 TX_FAR _CeladonDinerText3 db $50 CeladonDinerText4: ; 0x4916e TX_FAR _CeladonDinerText4 db $50 CeladonDinerText5: ; 0x49173 db $08 ; asm ld a, [$d783] bit 0, a jr nz, .asm_eb14d ; 0x49179 ld hl, UnnamedText_491a7 call PrintText ld bc, (COIN_CASE << 8) | 1 call GiveItem jr nc, .asm_78e93 ; 0x49187 ld hl, $d783 set 0, [hl] ld hl, ReceivedCoinCaseText call PrintText jr .asm_68b61 ; 0x49194 .asm_78e93 ; 0x49196 ld hl, CoinCaseNoRoomText call PrintText jr .asm_68b61 ; 0x4919c .asm_eb14d ; 0x4919e ld hl, UnnamedText_491b7 call PrintText .asm_68b61 ; 0x491a4 jp TextScriptEnd UnnamedText_491a7: ; 0x491a7 TX_FAR _UnnamedText_491a7 db $50 ; 0x491a7 + 5 bytes ReceivedCoinCaseText: ; 0x491ac TX_FAR _ReceivedCoinCaseText ; 0x9e07a db $11, $50 ; 0x491b2 CoinCaseNoRoomText: ; 0x491b2 TX_FAR _CoinCaseNoRoomText db $50 ; 0x491b2 + 5 bytes UnnamedText_491b7: ; 0x491b7 TX_FAR _UnnamedText_491b7 db $50 ; 0x491b7 + 5 bytes CeladonDinerObject: ; 0x491bc (size=50) db $f ; border tile db $2 ; warps db $7, $3, $a, $ff db $7, $4, $a, $ff db $0 ; signs db $5 ; people db SPRITE_COOK, $5 + 4, $8 + 4, $fe, $2, $1 ; person db SPRITE_MOM_GEISHA, $2 + 4, $7 + 4, $ff, $ff, $2 ; person db SPRITE_FAT_BALD_GUY, $4 + 4, $1 + 4, $ff, $d0, $3 ; person db SPRITE_FISHER2, $3 + 4, $5 + 4, $ff, $d3, $4 ; person db SPRITE_GYM_HELPER, $1 + 4, $0 + 4, $ff, $d0, $5 ; person ; warp-to EVENT_DISP $5, $7, $3 EVENT_DISP $5, $7, $4 CeladonDinerBlocks: ; 0x491ee 20 INCBIN "maps/celadondiner.blk" CeladonHouse_h: ; 0x49202 to 0x4920e (12 bytes) (bank=12) (id=139) db $13 ; tileset db CELADON_HOUSE_2_HEIGHT, CELADON_HOUSE_2_WIDTH ; dimensions (y, x) dw CeladonHouseBlocks, CeladonHouseTexts, CeladonHouseScript ; blocks, texts, scripts db $00 ; connections dw CeladonHouseObject ; objects CeladonHouseScript: ; 0x4920e call $3c3c ret ; 0x49212 CeladonHouseTexts: ; 0x49212 dw CeladonHouseText1, CeladonHouseText2, CeladonHouseText3 CeladonHouseText1: ; 0x49218 TX_FAR _CeladonHouseText1 db $50 CeladonHouseText2: ; 0x4921d TX_FAR _CeladonHouseText2 db $50 CeladonHouseText3: ; 0x49222 TX_FAR _CeladonHouseText3 db $50 CeladonHouseObject: ; 0x49227 (size=38) db $f ; border tile db $2 ; warps db $7, $2, $b, $ff db $7, $3, $b, $ff db $0 ; signs db $3 ; people db SPRITE_OLD_PERSON, $2 + 4, $4 + 4, $ff, $d0, $1 ; person db SPRITE_ROCKET, $4 + 4, $1 + 4, $fe, $0, $2 ; person db SPRITE_SAILOR, $6 + 4, $5 + 4, $ff, $d2, $3 ; person ; warp-to EVENT_DISP $4, $7, $2 EVENT_DISP $4, $7, $3 CeladonHouseBlocks: ; 0x4924d 16 INCBIN "maps/celadonhouse2.blk" CeladonHotel_h: ; 0x4925d to 0x49269 (12 bytes) (bank=12) (id=140) db $06 ; tileset db CELADONHOTEL_HEIGHT, CELADONHOTEL_WIDTH ; dimensions (y, x) dw CeladonHotelBlocks, CeladonHotelTexts, CeladonHotelScript ; blocks, texts, scripts db $00 ; connections dw CeladonHotelObject ; objects CeladonHotelScript: ; 0x49269 jp $3c3c ; 0x4926c CeladonHotelTexts: ; 0x4926c dw CeladonHotelText1, CeladonHotelText2, CeladonHotelText3 CeladonHotelText1: ; 0x49272 TX_FAR _CeladonHotelText1 db $50 CeladonHotelText2: ; 0x49277 TX_FAR _CeladonHotelText2 db $50 CeladonHotelText3: ; 0x4927c TX_FAR _CeladonHotelText3 db $50 CeladonHotelObject: ; 0x49281 (size=38) db $0 ; border tile db $2 ; warps db $7, $3, $c, $ff db $7, $4, $c, $ff db $0 ; signs db $3 ; people db SPRITE_OLD_MEDIUM_WOMAN, $1 + 4, $3 + 4, $ff, $d0, $1 ; person db SPRITE_FOULARD_WOMAN, $4 + 4, $2 + 4, $ff, $ff, $2 ; person db SPRITE_BLACK_HAIR_BOY_2, $4 + 4, $8 + 4, $fe, $2, $3 ; person ; warp-to EVENT_DISP $7, $7, $3 EVENT_DISP $7, $7, $4 CeladonHotelBlocks: ; 0x492a7 28 INCBIN "maps/celadonhotel.blk" MtMoonPokecenter_h: ; 0x492c3 to 0x492cf (12 bytes) (bank=12) (id=68) db $06 ; tileset db MT_MOON_POKECENTER_HEIGHT, MT_MOON_POKECENTER_WIDTH ; dimensions (y, x) dw MtMoonPokecenterBlocks, MtMoonPokecenterTexts, MtMoonPokecenterScript ; blocks, texts, scripts db $00 ; connections dw MtMoonPokecenterObject ; objects MtMoonPokecenterScript: ; 0x492cf call $22fa jp $3c3c ; 0x492d5 MtMoonPokecenterTexts: dw MtMoonPokecenterText1, MtMoonPokecenterText2, MtMoonPokecenterText3, MtMoonPokecenterText4, MtMoonPokecenterText5, MtMoonPokecenterText6 MtMoonPokecenterText1: ; 0x492e0 db $ff MtMoonPokecenterText2: ; 0x492e2 TX_FAR _MtMoonPokecenterText1 db $50 MtMoonPokecenterText3: ; 0x492e7 TX_FAR _MtMoonPokecenterText3 db $50 MtMoonPokecenterText4: ; 0x492ec db $08 ; asm ld a, [$d7c6] add a jp c, .asm_49353 ld hl, UnnamedText_4935c call PrintText ld a, $13 ld [$d125], a call $30e8 call $35ec ld a, [$cc26] and a jp nz, .asm_4934e ldh [$9f], a ldh [$a1], a ld a, $5 ldh [$a0], a call $35a6 jr nc, .asm_faa09 ; 0x49317 ld hl, UnnamedText_49366 jr .asm_49356 ; 0x4931c .asm_faa09 ; 0x4931e ld bc,(MAGIKARP << 8) | 5 call GivePokemon jr nc, .asm_49359 ; 0x49324 xor a ld [W_WHICHTRADE], a ld [$cd3f], a ld a, $5 ld [$cd3e], a ld hl, $cd3f ld de, $d349 ld c, $3 ld a, $c call Predef ld a, $13 ld [$d125], a call $30e8 ld hl, $d7c6 set 7, [hl] jr .asm_49359 ; 0x4934c .asm_4934e ; 0x4934e ld hl, UnnamedText_49361 jr .asm_49356 ; 0x49351 .asm_49353 ; 0x49353 ld hl, UnnamedText_4936b .asm_49356 ; 0x49356 call PrintText .asm_49359 ; 0x49359 jp TextScriptEnd UnnamedText_4935c: ; 0x4935c TX_FAR _UnnamedText_4935c db $50 ; 0x4935c + 5 bytes UnnamedText_49361: ; 0x49361 TX_FAR _UnnamedText_49361 db $50 ; 0x49361 + 5 bytes UnnamedText_49366: ; 0x49366 TX_FAR _UnnamedText_49366 db $50 ; 0x49366 + 5 bytes UnnamedText_4936b: ; 0x4936b TX_FAR _UnnamedText_4936b db $50 ; 0x4936b + 5 bytes MtMoonPokecenterText5: ; 0x49370 TX_FAR _MtMoonPokecenterText5 db $50 MtMoonPokecenterText6: db $f6 MtMoonPokecenterObject: ; 0x49376 (size=56) db $0 ; border tile db $2 ; warps db $7, $3, $0, $ff db $7, $4, $0, $ff db $0 ; signs db $6 ; people db SPRITE_NURSE, $1 + 4, $3 + 4, $ff, $d0, $1 ; person db SPRITE_BUG_CATCHER, $3 + 4, $4 + 4, $ff, $d1, $2 ; person db SPRITE_GENTLEMAN, $3 + 4, $7 + 4, $ff, $d1, $3 ; person db SPRITE_FAT_BALD_GUY, $6 + 4, $a + 4, $fe, $2, $4 ; person db SPRITE_CLIPBOARD, $2 + 4, $7 + 4, $ff, $ff, $5 ; person db SPRITE_CABLE_CLUB_WOMAN, $2 + 4, $b + 4, $ff, $d0, $6 ; person ; warp-to EVENT_DISP $7, $7, $3 EVENT_DISP $7, $7, $4 RockTunnelPokecenter_h: ; 0x493ae to 0x493ba (12 bytes) (id=81) db $06 ; tileset db ROCK_TUNNEL_POKECENTER_HEIGHT, ROCK_TUNNEL_POKECENTER_WIDTH ; dimensions (y, x) dw RockTunnelPokecenterBlocks, RockTunnelPokecenterTexts, RockTunnelPokecenterScript ; blocks, texts, scripts db $00 ; connections dw RockTunnelPokecenterObject ; objects RockTunnelPokecenterScript: ; 0x493ba call $22fa jp $3c3c ; 0x493c0 RockTunnelPokecenterTexts: dw RockTunnelPokecenterText1, RockTunnelPokecenterText2, RockTunnelPokecenterText3, RockTunnelPokecenterText4 RockTunnelPokecenterText1: ; 0x493c8 db $ff RockTunnelPokecenterText2: ; 0x493c9 TX_FAR _RockTunnelPokecenterText1 db $50 RockTunnelPokecenterText3: ; 0x493ce TX_FAR _RockTunnelPokecenterText3 db $50 RockTunnelPokecenterText4: ; 0x493d3 db $f6 RockTunnelPokecenterObject: ; 0x493d4 (size=44) db $0 ; border tile db $2 ; warps db $7, $3, $0, $ff db $7, $4, $0, $ff db $0 ; signs db $4 ; people db SPRITE_NURSE, $1 + 4, $3 + 4, $ff, $d0, $1 ; person db SPRITE_GENTLEMAN, $3 + 4, $7 + 4, $fe, $2, $2 ; person db SPRITE_FISHER2, $5 + 4, $2 + 4, $ff, $ff, $3 ; person db SPRITE_CABLE_CLUB_WOMAN, $2 + 4, $b + 4, $ff, $d0, $4 ; person ; warp-to EVENT_DISP $7, $7, $3 EVENT_DISP $7, $7, $4 Route11Gate_h: ; 0x49400 to 0x4940c (12 bytes) (id=84) db $0c ; tileset db ROUTE_11_GATE_1F_HEIGHT, ROUTE_11_GATE_1F_WIDTH ; dimensions (y, x) dw Route11GateBlocks, Route11GateTexts, Route11GateScript ; blocks, texts, scripts db $00 ; connections dw Route11GateObject ; objects Route11GateScript: ; 0x4940c jp $3c3c ; 0x4940f Route11GateTexts: ; 0x4940f dw Route11GateText1 Route11GateText1: ; 0x49411 TX_FAR _Route11GateText1 db $50 Route11GateObject: ; 0x49416 (size=50) db $a ; border tile db $5 ; warps db $4, $0, $0, $ff db $5, $0, $1, $ff db $4, $7, $2, $ff db $5, $7, $3, $ff db $8, $6, $0, ROUTE_11_GATE_2F db $0 ; signs db $1 ; people db SPRITE_GUARD, $1 + 4, $4 + 4, $ff, $ff, $1 ; person ; warp-to EVENT_DISP $4, $4, $0 EVENT_DISP $4, $5, $0 EVENT_DISP $4, $4, $7 EVENT_DISP $4, $5, $7 EVENT_DISP $4, $8, $6 ; ROUTE_11_GATE_2F Route11GateUpstairs_h: ; 0x49448 to 0x49454 (12 bytes) (id=86) db $0c ; tileset db ROUTE_11_GATE_2F_HEIGHT, ROUTE_11_GATE_2F_WIDTH ; dimensions (y, x) dw Route11GateUpstairsBlocks, Route11GateUpstairsTexts, Route11GateUpstairsScript ; blocks, texts, scripts db $00 ; connections dw Route11GateUpstairsObject ; objects Route11GateUpstairsScript: ; 0x49454 jp $3c3f ; 0x49457 Route11GateUpstairsTexts: dw Route11GateUpstairsText1, Route11GateUpstairsText2, Route11GateUpstairsText3, Route11GateUpstairsText4 Route11GateUpstairsText1: ; 0x4945f db $08 ; asm xor a ld [W_WHICHTRADE], a ld a, $54 call Predef asm_49469: jp TextScriptEnd Route11GateUpstairsText2: ; 0x4946c db $8 ld a, [$d7d6] add a jr c, .asm_4949b ; 0x49471 $28 ld a, $1e ld [$ff00+$db], a ld a, $47 ld [$ff00+$dc], a ld [$d11e], a call $2fcf ld h, d ld l, e ld de, $cc5b ld bc, $000d call CopyData ld a, $62 call Predef ld a, [$ff00+$db] dec a jr nz, .asm_494a1 ; 0x49494 $b ld hl, $d7d6 set 7, [hl] .asm_4949b ld hl, UnnamedText_494a3 call PrintText .asm_494a1 jr asm_49469 ; 0x494a1 $c6 ; 0x494a3 UnnamedText_494a3: ; 0x494a3 TX_FAR _UnnamedText_494a3 db $50 ; 0x494a3 + 5 bytes Route11GateUpstairsText3: ; 0x494a8 db $08 ; asm ld a, [$c109] cp $4 jp nz, Unnamed_55c9 ld a, [$d7d8] bit 7, a ld hl, UnnamedText_494c4 jr z, .asm_5ac80 ; 0x494b9 ld hl, UnnamedText_494c9 .asm_5ac80 ; 0x494be call PrintText jp TextScriptEnd UnnamedText_494c4: ; 0x494c4 TX_FAR _UnnamedText_494c4 db $50 ; 0x494c4 + 5 bytes UnnamedText_494c9: ; 0x494c9 TX_FAR _UnnamedText_494c9 db $50 ; 0x494c9 + 5 bytes Route11GateUpstairsText4: ; 0x494ce db $8 ld hl, $54d5 jp Unnamed_55c9 ; 0x494d5 UnnamedText_494d5: ; 0x494d5 TX_FAR _UnnamedText_494d5 db $50 ; 0x494d5 + 5 bytes Route11GateUpstairsObject: ; 0x494da (size=30) db $a ; border tile db $1 ; warps db $7, $7, $4, ROUTE_11_GATE_1F db $2 ; signs db $2, $1, $3 ; Route11GateUpstairsText3 db $2, $6, $4 ; Route11GateUpstairsText4 db $2 ; people db SPRITE_BUG_CATCHER, $2 + 4, $4 + 4, $fe, $2, $1 ; person db SPRITE_OAK_AIDE, $6 + 4, $2 + 4, $ff, $ff, $2 ; person ; warp-to EVENT_DISP $4, $7, $7 ; ROUTE_11_GATE_1F Route12Gate_h: ; 0x494f8 to 0x49504 (12 bytes) (id=87) db $0c ; tileset db ROUTE_12_GATE_HEIGHT, ROUTE_12_GATE_WIDTH ; dimensions (y, x) dw Route12GateBlocks, Route12GateTexts, Route12GateScript ; blocks, texts, scripts db $00 ; connections dw Route12GateObject ; objects Route12GateScript: ; 0x49504 jp $3c3c ; 0x49507 Route12GateTexts: ; 0x49507 dw Route12GateText1 Route12GateText1: ; 0x49509 TX_FAR _Route12GateText1 db $50 Route12GateObject: ; 0x4950e (size=50) db $a ; border tile db $5 ; warps db $0, $4, $0, $ff db $0, $5, $1, $ff db $7, $4, $2, $ff db $7, $5, $2, $ff db $6, $8, $0, ROUTE_12_GATE_2F db $0 ; signs db $1 ; people db SPRITE_GUARD, $3 + 4, $1 + 4, $ff, $ff, $1 ; person ; warp-to EVENT_DISP $5, $0, $4 EVENT_DISP $5, $0, $5 EVENT_DISP $5, $7, $4 EVENT_DISP $5, $7, $5 EVENT_DISP $5, $6, $8 ; ROUTE_12_GATE_2F Route12GateBlocks: ; 0x49540 20 INCBIN "maps/route12gate.blk" Route12GateUpstairs_h: ; 0x49554 to 0x49560 (12 bytes) (id=195) db $0c ; tileset db ROUTE_12_GATE_2F_HEIGHT, ROUTE_12_GATE_2F_WIDTH ; dimensions (y, x) dw Route12GateUpstairsBlocks, Route12GateUpstairsTexts, Route12GateUpstairsScript ; blocks, texts, scripts db $00 ; connections dw Route12GateUpstairsObject ; objects Route12GateUpstairsScript: ; 0x49560 jp $3c3f ; 0x49563 Route12GateUpstairsTexts: ; 0x49563 dw Route12GateUpstairsText1, Route12GateUpstairsText2, Route12GateUpstairsText3 Route12GateUpstairsText1: ; 0x49569 db $08 ; asm ld a, [$d7d7] rrca jr c, .asm_0ad3c ; 0x4956e ld hl, TM39PreReceiveText call PrintText ld bc, (TM_39 << 8) | 1 call GiveItem jr nc, .asm_4c2be ; 0x4957c ld hl, ReceivedTM39Text call PrintText ld hl, $d7d7 set 0, [hl] jr .asm_4ba56 ; 0x49589 .asm_4c2be ; 0x4958b ld hl, TM39NoRoomText call PrintText jr .asm_4ba56 ; 0x49591 .asm_0ad3c ; 0x49593 ld hl, TM39ExplanationText call PrintText .asm_4ba56 ; 0x49599 jp TextScriptEnd TM39PreReceiveText: ; 0x4959c TX_FAR _TM39PreReceiveText db $50 ; 0x4959c + 5 bytes ReceivedTM39Text: ; 0x495a1 TX_FAR _ReceivedTM39Text ; 0x8c8c6 db $0B, $50 ; 0x495a7 TM39ExplanationText: ; 0x495a7 TX_FAR _TM39ExplanationText db $50 ; 0x495a7 + 5 bytes TM39NoRoomText: ; 0x495ac TX_FAR _TM39NoRoomText db $50 ; 0x495ac + 5 bytes Route12GateUpstairsText2: ; 0x495b1 db $08 ; asm ld hl, UnnamedText_495b8 jp Unnamed_55c9 UnnamedText_495b8: ; 0x495b8 TX_FAR _UnnamedText_495b8 ; 0x8c95a db $50 ; 0x495bd Route12GateUpstairsText3: ; 0x495bd db $8 ld hl, UnnamedText_495c4 jp Unnamed_55c9 ; 0x495c4 UnnamedText_495c4: ; 0x495c4 TX_FAR _UnnamedText_495c4 db $50 ; 0x495c4 + 5 bytes Unnamed_55c9: ld a, [$c109] cp $4 jr z, .asm_495d4 ; 0x495ce $4 ld a, $1 jr .asm_495d8 ; 0x495d2 $4 .asm_495d4 call PrintText xor a .asm_495d8 ld [$cc3c], a jp TextScriptEnd ; 0x495de Route12GateUpstairsObject: ; 0x495de (size=24) db $a ; border tile db $1 ; warps db $7, $7, $4, ROUTE_12_GATE db $2 ; signs db $2, $1, $2 ; Route12GateUpstairsText2 db $2, $6, $3 ; Route12GateUpstairsText3 db $1 ; people db SPRITE_BRUNETTE_GIRL, $4 + 4, $3 + 4, $fe, $1, $1 ; person ; warp-to EVENT_DISP $4, $7, $7 ; ROUTE_12_GATE Route15Gate_h: ; 0x495f6 to 0x49602 (12 bytes) (id=184) db $0c ; tileset db ROUTE_15_GATE_HEIGHT, ROUTE_15_GATE_WIDTH ; dimensions (y, x) dw Route15GateBlocks, Route15GateTexts, Route15GateScript ; blocks, texts, scripts db $00 ; connections dw Route15GateObject ; objects Route15GateScript: ; 0x49602 jp $3c3c ; 0x49605 Route15GateTexts: ; 0x49605 dw Route15GateText1 Route15GateText1: ; 0x49607 TX_FAR _Route15GateText1 db $50 Route15GateObject: ; 0x4960c (size=50) db $a ; border tile db $5 ; warps db $4, $0, $0, $ff db $5, $0, $1, $ff db $4, $7, $2, $ff db $5, $7, $3, $ff db $8, $6, $0, $b9 db $0 ; signs db $1 ; people db SPRITE_GUARD, $1 + 4, $4 + 4, $ff, $ff, $1 ; person ; warp-to EVENT_DISP $4, $4, $0 EVENT_DISP $4, $5, $0 EVENT_DISP $4, $4, $7 EVENT_DISP $4, $5, $7 EVENT_DISP $4, $8, $6 INCBIN "baserom.gbc",$4963e,$4968c - $4963e UnnamedText_4968c: ; 0x4968c TX_FAR _UnnamedText_4968c db $50 ; 0x4968c + 5 bytes INCBIN "baserom.gbc",$49691,$49698 - $49691 UnnamedText_49698: ; 0x49698 TX_FAR _UnnamedText_49698 db $50 ; 0x49698 + 5 bytes INCBIN "baserom.gbc",$4969d,$15 Route16GateMap_h: ; 0x496b2 to 0x496be (12 bytes) (id=186) db $0c ; tileset db ROUTE_16_GATE_1F_HEIGHT, ROUTE_16_GATE_1F_WIDTH ; dimensions (y, x) dw Route16GateMapBlocks, Route16GateMapTexts, Route16GateMapScript ; blocks, texts, scripts db $00 ; connections dw Route16GateMapObject ; objects Route16GateMapScript: ; 0x496be ld hl, $d732 res 5, [hl] call $3c3c ld a, [$d660] ld hl, Route16GateMapScripts jp $3d97 ; 0x496cf Route16GateMapScripts: ; 0x496cf dw Route16GateMapScript0 INCBIN "baserom.gbc",$496d1,$6 Route16GateMapScript0: ; 0x496d7 call $5755 ret nz ld hl, $5714 call $34bf ret nc ld a, $3 ld [$ff00+$8c], a call $2920 xor a ld [$ff00+$b4], a ld a, [$cd3d] cp $1 jr z, .asm_4970e ; 0x496f1 $1b ld a, [$cd3d] dec a ld [$cd38], a ld b, $0 ld c, a ld a, $40 ld hl, $ccd3 call $36e0 call $3486 ld a, $1 ld [$d660], a ret .asm_4970e ld a, $2 ld [$d660], a ret ; 0x49714 INCBIN "baserom.gbc",$49714,$46 Route16GateMapTexts: ; 0x4975a dw Route16GateMapText1, Route16GateMapText2, Route16GateMapText3 Route16GateMapText1: ; 0x49760 db $08 ; asm call $5755 jr z, .asm_0bdf3 ; 0x49764 ld hl, UnnamedText_4977c call PrintText jr .asm_56c9d ; 0x4976c .asm_0bdf3 ; 0x4976e ld hl, UnnamedText_49777 call PrintText .asm_56c9d ; 0x49774 jp TextScriptEnd UnnamedText_49777: ; 0x49777 TX_FAR _UnnamedText_49777 db $50 ; 0x49777 + 5 bytes UnnamedText_4977c: ; 0x4977c TX_FAR _UnnamedText_4977c db $50 ; 0x4977c + 5 bytes Route16GateMapText3: ; 0x49781 TX_FAR _UnnamedText_49781 db $50 ; 0x49781 + 5 bytes Route16GateMapText2: ; 0x49786 TX_FAR _Route16GateMapText2 db $50 Route16GateMapObject: ; 0x4978b (size=88) db $a ; border tile db $9 ; warps db $8, $0, $0, $ff db $9, $0, $1, $ff db $8, $7, $2, $ff db $9, $7, $2, $ff db $2, $0, $4, $ff db $3, $0, $5, $ff db $2, $7, $6, $ff db $3, $7, $7, $ff db $c, $6, $0, ROUTE_16_GATE_2F db $0 ; signs db $2 ; people db SPRITE_GUARD, $5 + 4, $4 + 4, $ff, $d0, $1 ; person db SPRITE_GAMBLER, $3 + 4, $4 + 4, $ff, $ff, $2 ; person ; warp-to EVENT_DISP $4, $8, $0 EVENT_DISP $4, $9, $0 EVENT_DISP $4, $8, $7 EVENT_DISP $4, $9, $7 EVENT_DISP $4, $2, $0 EVENT_DISP $4, $3, $0 EVENT_DISP $4, $2, $7 EVENT_DISP $4, $3, $7 EVENT_DISP $4, $c, $6 ; ROUTE_16_GATE_2F Route16GateMapBlocks: ; 0x497e3 28 INCBIN "maps/route16gatemap.blk" Route16GateUpstairs_h: ; 0x497ff to 0x4980b (12 bytes) (id=187) db $0c ; tileset db ROUTE_16_GATE_2F_HEIGHT, ROUTE_16_GATE_2F_WIDTH ; dimensions (y, x) dw Route16GateUpstairsBlocks, Route16GateUpstairsTexts, Route16GateUpstairsScript ; blocks, texts, scripts db $00 ; connections dw Route16GateUpstairsObject ; objects Route16GateUpstairsScript: ; 0x4980b jp $3c3f ; 0x4980e Route16GateUpstairsTexts: ; 0x4980e dw Route16GateUpstairsText1, Route16GateUpstairsText2, Route16GateUpstairsText3, Route16GateUpstairsText4 Route16GateUpstairsText1: ; 0x49816 db $08 ; asm ld hl, UnnamedText_49820 call PrintText jp TextScriptEnd UnnamedText_49820: ; 0x49820 TX_FAR _UnnamedText_49820 db $50 ; 0x49820 + 5 bytes Route16GateUpstairsText2: ; 0x49825 db $08 ; asm ld hl, UnnamedText_4982f call PrintText jp TextScriptEnd UnnamedText_4982f: ; 0x4982f TX_FAR _UnnamedText_4982f db $50 ; 0x4982f + 5 bytes Route16GateUpstairsText3: ; 0x49834 db $8 ld hl, UnnamedText_4983b jp $55c9 ; 0x4983b UnnamedText_4983b: ; 0x4983b TX_FAR _UnnamedText_4983b db $50 ; 0x4983b + 5 bytes Route16GateUpstairsText4: ; 0x49840 db $8 ld hl, $5847 jp $55c9 ; 0x49847 UnnamedText_49847: ; 0x49847 TX_FAR _UnnamedText_49847 db $50 ; 0x49847 + 5 bytes Route16GateUpstairsObject: ; 0x4984c (size=30) db $a ; border tile db $1 ; warps db $7, $7, $8, ROUTE_16_GATE_1F db $2 ; signs db $2, $1, $3 ; Route16GateUpstairsText3 db $2, $6, $4 ; Route16GateUpstairsText4 db $2 ; people db SPRITE_YOUNG_BOY, $2 + 4, $4 + 4, $ff, $ff, $1 ; person db SPRITE_LITTLE_GIRL, $5 + 4, $2 + 4, $fe, $2, $2 ; person ; warp-to EVENT_DISP $4, $7, $7 ; ROUTE_16_GATE_1F Route18Gate_h: ; 0x4986a to 0x49876 (12 bytes) (id=190) db $0c ; tileset db ROUTE_18_GATE_1F_HEIGHT, ROUTE_18_GATE_1F_WIDTH ; dimensions (y, x) dw Route18GateBlocks, Route18GateTexts, Route18GateScript ; blocks, texts, scripts db $00 ; connections dw Route18GateObject ; objects Route18GateScript: ; 0x49876 ld hl, $d732 res 5, [hl] call $3c3c ld a, [$d669] ld hl, Route18GateScripts jp $3d97 ; 0x49887 Route18GateScripts: ; 0x49887 dw Route18GateScript0 INCBIN "baserom.gbc",$49889,$6 Route18GateScript0: ; 0x4988f call $5755 ret nz ld hl, $58cc call $34bf ret nc ld a, $2 ld [$ff00+$8c], a call $2920 xor a ld [$ff00+$b4], a ld a, [$cd3d] cp $1 jr z, .asm_498c6 ; 0x498a9 $1b ld a, [$cd3d] dec a ld [$cd38], a ld b, $0 ld c, a ld a, $40 ld hl, $ccd3 call $36e0 call $3486 ld a, $1 ld [$d669], a ret .asm_498c6 ld a, $2 ld [$d669], a ret ; 0x498cc INCBIN "baserom.gbc",$498cc,$41 Route18GateTexts: ; 0x4990d dw Route18GateText1, Route18GateText2 Route18GateText1: ; 0x49911 db $08 ; asm call $5755 jr z, .asm_3c84d ; 0x49915 ld hl, UnnamedText_4992d call PrintText jr .asm_a8410 ; 0x4991d .asm_3c84d ; 0x4991f ld hl, UnnamedText_49928 call PrintText .asm_a8410 ; 0x49925 jp TextScriptEnd UnnamedText_49928: ; 0x49928 TX_FAR _UnnamedText_49928 db $50 ; 0x4992d UnnamedText_4992d: ; 0x4992d TX_FAR _UnnamedText_4992d db $50 ; 0x49932 Route18GateText2: ; 0x49932 TX_FAR _UnnamedText_49932 db $50 ; 0x49937 Route18GateObject: ; 0x49937 (size=50) db $a ; border tile db $5 ; warps db $4, $0, $0, $ff db $5, $0, $1, $ff db $4, $7, $2, $ff db $5, $7, $3, $ff db $8, $6, $0, ROUTE_18_GATE_2F db $0 ; signs db $1 ; people db SPRITE_GUARD, $1 + 4, $4 + 4, $ff, $d0, $1 ; person ; warp-to EVENT_DISP $4, $4, $0 EVENT_DISP $4, $5, $0 EVENT_DISP $4, $4, $7 EVENT_DISP $4, $5, $7 EVENT_DISP $4, $8, $6 ; ROUTE_18_GATE_2F Route18GateHeader_h: ; 0x49969 to 0x49975 (12 bytes) (id=191) db $0c ; tileset db ROUTE_18_GATE_2F_HEIGHT, ROUTE_18_GATE_2F_WIDTH ; dimensions (y, x) dw Route18GateHeaderBlocks, Route18GateHeaderTexts, Route18GateHeaderScript ; blocks, texts, scripts db $00 ; connections dw Route18GateHeaderObject ; objects Route18GateHeaderScript: ; 0x49975 jp $3c3f ; 0x49978 Route18GateHeaderTexts: ; 0x49978 dw Route18GateHeaderText1, Route18GateHeaderText2, Route18GateHeaderText3 Route18GateHeaderText1: ; 0x4997e db $08 ; asm ld a, $5 ld [W_WHICHTRADE], a ld a, $54 call Predef jp TextScriptEnd Route18GateHeaderText2: ; 0x4998c db $8 ld hl, $5993 jp $55c9 ; 0x49993 UnnamedText_49993: ; 0x49993 TX_FAR _UnnamedText_49993 db $50 ; 0x49993 + 5 bytes Route18GateHeaderText3: ; 0x49998 db $8 ld hl, $599f jp $55c9 ; 0x4999f UnnamedText_4999f: ; 0x4999f TX_FAR _UnnamedText_4999f db $50 ; 0x4999f + 5 bytes Route18GateHeaderObject: ; 0x499a4 (size=24) db $a ; border tile db $1 ; warps db $7, $7, $4, ROUTE_18_GATE_1F db $2 ; signs db $2, $1, $2 ; Route18GateHeaderText2 db $2, $6, $3 ; Route18GateHeaderText3 db $1 ; people db SPRITE_BUG_CATCHER, $2 + 4, $4 + 4, $fe, $2, $1 ; person ; warp-to EVENT_DISP $4, $7, $7 ; ROUTE_18_GATE_1F MtMoon1_h: ; 0x499bc to 0x499c8 (12 bytes) (id=59) db $11 ; tileset db MT_MOON_1_HEIGHT, MT_MOON_1_WIDTH ; dimensions (y, x) dw MtMoon1Blocks, MtMoon1Texts, MtMoon1Script ; blocks, texts, scripts db $00 ; connections dw MtMoon1Object ; objects MtMoon1Script: ; 0x499c8 call $3c3c ld hl, MtMoon1TrainerHeader0 ld de, Unknown_59db ld a, [$d606] call $3160 ld [$d606], a ret ; 0x499db Unknown_59db: ; 0x59db INCBIN "baserom.gbc",$499db,$6 MtMoon1Texts: ; 0x499e1 dw MtMoon1Text1, MtMoon1Text2, MtMoon1Text3, MtMoon1Text4, MtMoon1Text5, MtMoon1Text6, MtMoon1Text7, MtMoon1Text8, MtMoon1Text9, MtMoon1Text10, MtMoon1Text11, MtMoon1Text12, MtMoon1Text13, MtMoon1Text14 MtMoon1TrainerHeaders: MtMoon1TrainerHeader0: ; 0x499fd db $1 ; flag's bit db ($2 << 4) ; trainer's view range dw $d7f5 ; flag's byte dw MtMoon1BattleText2 ; 0x5a98 TextBeforeBattle dw MtMoon1AfterBattleText2 ; 0x5aa2 TextAfterBattle dw MtMoon1EndBattleText2 ; 0x5a9d TextEndBattle dw MtMoon1EndBattleText2 ; 0x5a9d TextEndBattle ; 0x49a09 MtMoon1TrainerHeader2: ; 0x49a09 db $2 ; flag's bit db ($3 << 4) ; trainer's view range dw $d7f5 ; flag's byte dw MtMoon1BattleText3 ; 0x5aa7 TextBeforeBattle dw MtMoon1AfterBattleText3 ; 0x5ab1 TextAfterBattle dw MtMoon1EndBattleText3 ; 0x5aac TextEndBattle dw MtMoon1EndBattleText3 ; 0x5aac TextEndBattle ; 0x49a15 MtMoon1TrainerHeader3: ; 0x49a15 db $3 ; flag's bit db ($3 << 4) ; trainer's view range dw $d7f5 ; flag's byte dw MtMoon1BattleText4 ; 0x5ab6 TextBeforeBattle dw MtMoon1AfterBattleText4 ; 0x5ac0 TextAfterBattle dw MtMoon1EndBattleText4 ; 0x5abb TextEndBattle dw MtMoon1EndBattleText4 ; 0x5abb TextEndBattle ; 0x49a21 MtMoon1TrainerHeader4: ; 0x49a21 db $4 ; flag's bit db ($3 << 4) ; trainer's view range dw $d7f5 ; flag's byte dw MtMoon1BattleText5 ; 0x5ac5 TextBeforeBattle dw MtMoon1AfterBattleText5 ; 0x5acf TextAfterBattle dw MtMoon1EndBattleText5 ; 0x5aca TextEndBattle dw MtMoon1EndBattleText5 ; 0x5aca TextEndBattle ; 0x49a2d MtMoon1TrainerHeader5: ; 0x49a2d db $5 ; flag's bit db ($3 << 4) ; trainer's view range dw $d7f5 ; flag's byte dw MtMoon1BattleText6 ; 0x5ad4 TextBeforeBattle dw MtMoon1AfterBattleText6 ; 0x5ade TextAfterBattle dw MtMoon1EndBattleText6 ; 0x5ad9 TextEndBattle dw MtMoon1EndBattleText6 ; 0x5ad9 TextEndBattle ; 0x49a39 MtMoon1TrainerHeader6: ; 0x49a39 db $6 ; flag's bit db ($3 << 4) ; trainer's view range dw $d7f5 ; flag's byte dw MtMoon1BattleText7 ; 0x5ae3 TextBeforeBattle dw MtMoon1AfterBattleText7 ; 0x5aed TextAfterBattle dw MtMoon1EndBattleText7 ; 0x5ae8 TextEndBattle dw MtMoon1EndBattleText7 ; 0x5ae8 TextEndBattle ; 0x49a45 MtMoon1TrainerHeader7: ; 0x49a45 db $7 ; flag's bit db ($3 << 4) ; trainer's view range dw $d7f5 ; flag's byte dw MtMoon1BattleText8 ; 0x5af2 TextBeforeBattle dw MtMoon1AfterBattleText8 ; 0x5afc TextAfterBattle dw MtMoon1EndBattleText8 ; 0x5af7 TextEndBattle dw MtMoon1EndBattleText8 ; 0x5af7 TextEndBattle ; 0x49a51 db $ff MtMoon1Text1: ; 0x49a52 db $08 ; asm ld hl, MtMoon1TrainerHeader0 call LoadTrainerHeader jp TextScriptEnd MtMoon1Text2: ; 0x49a5c db $08 ; asm ld hl, MtMoon1TrainerHeader2 call LoadTrainerHeader jp TextScriptEnd MtMoon1Text3: ; 0x49a66 db $08 ; asm ld hl, MtMoon1TrainerHeader3 call LoadTrainerHeader jp TextScriptEnd MtMoon1Text4: ; 0x49a70 db $08 ; asm ld hl, MtMoon1TrainerHeader4 call LoadTrainerHeader jp TextScriptEnd MtMoon1Text5: ; 0x49a7a db $08 ; asm ld hl, MtMoon1TrainerHeader5 call LoadTrainerHeader jp TextScriptEnd MtMoon1Text6: ; 0x49a84 db $08 ; asm ld hl, MtMoon1TrainerHeader6 call LoadTrainerHeader jp TextScriptEnd MtMoon1Text7: ; 0x49a8e db $08 ; asm ld hl, MtMoon1TrainerHeader7 call LoadTrainerHeader jp TextScriptEnd MtMoon1BattleText2: ; 0x49a98 TX_FAR _MtMoon1BattleText2 db $50 ; 0x49a98 + 5 bytes MtMoon1EndBattleText2: ; 0x49a9d TX_FAR _MtMoon1EndBattleText2 db $50 ; 0x49a9d + 5 bytes MtMoon1AfterBattleText2: ; 0x49aa2 TX_FAR _MtMoon1AfterBattleText2 db $50 ; 0x49aa2 + 5 bytes MtMoon1BattleText3: ; 0x49aa7 TX_FAR _MtMoon1BattleText3 db $50 ; 0x49aa7 + 5 bytes MtMoon1EndBattleText3: ; 0x49aac TX_FAR _MtMoon1EndBattleText3 db $50 ; 0x49aac + 5 bytes MtMoon1AfterBattleText3: ; 0x49ab1 TX_FAR _MtMoon1AfterBattleText3 db $50 ; 0x49ab1 + 5 bytes MtMoon1BattleText4: ; 0x49ab6 TX_FAR _MtMoon1BattleText4 db $50 ; 0x49ab6 + 5 bytes MtMoon1EndBattleText4: ; 0x49abb TX_FAR _MtMoon1EndBattleText4 db $50 ; 0x49abb + 5 bytes MtMoon1AfterBattleText4: ; 0x49ac0 TX_FAR _MtMoon1AfterBattleText4 db $50 ; 0x49ac0 + 5 bytes MtMoon1BattleText5: ; 0x49ac5 TX_FAR _MtMoon1BattleText5 db $50 ; 0x49ac5 + 5 bytes MtMoon1EndBattleText5: ; 0x49aca TX_FAR _MtMoon1EndBattleText5 db $50 ; 0x49aca + 5 bytes MtMoon1AfterBattleText5: ; 0x49acf TX_FAR _MtMoon1AfterBattleText5 db $50 ; 0x49acf + 5 bytes MtMoon1BattleText6: ; 0x49ad4 TX_FAR _MtMoon1BattleText6 db $50 ; 0x49ad4 + 5 bytes MtMoon1EndBattleText6: ; 0x49ad9 TX_FAR _MtMoon1EndBattleText6 db $50 ; 0x49ad9 + 5 bytes MtMoon1AfterBattleText6: ; 0x49ade TX_FAR _MtMoon1AfterBattleText6 db $50 ; 0x49ade + 5 bytes MtMoon1BattleText7: ; 0x49ae3 TX_FAR _MtMoon1BattleText7 db $50 ; 0x49ae3 + 5 bytes MtMoon1EndBattleText7: ; 0x49ae8 TX_FAR _MtMoon1EndBattleText7 db $50 ; 0x49ae8 + 5 bytes MtMoon1AfterBattleText7: ; 0x49aed TX_FAR _MtMoon1AfterBattleText7 db $50 ; 0x49aed + 5 bytes MtMoon1BattleText8: ; 0x49af2 TX_FAR _MtMoon1BattleText8 db $50 ; 0x49af2 + 5 bytes MtMoon1EndBattleText8: ; 0x49af7 TX_FAR _MtMoon1EndBattleText8 db $50 ; 0x49af7 + 5 bytes MtMoon1AfterBattleText8: ; 0x49afc TX_FAR _MtMoon1AfterBattleText8 db $50 ; 0x49afc + 5 bytes MtMoon1Text14: ; 0x49b01 TX_FAR _MtMoon1Text14 db $50 MtMoon1Object: ; 0x49b06 (size=145) db $3 ; border tile db $5 ; warps db $23, $e, $1, $ff db $23, $f, $1, $ff db $5, $5, $0, MT_MOON_2 db $b, $11, $2, MT_MOON_2 db $f, $19, $3, MT_MOON_2 db $1 ; signs db $17, $f, $e ; MtMoon1Text14 db $d ; people db SPRITE_HIKER, $6 + 4, $5 + 4, $ff, $d0, $41, HIKER + $C8, $1 ; trainer db SPRITE_BUG_CATCHER, $10 + 4, $c + 4, $ff, $d3, $42, YOUNGSTER + $C8, $3 ; trainer db SPRITE_LASS, $4 + 4, $1e + 4, $ff, $d0, $43, LASS + $C8, $5 ; trainer db SPRITE_BLACK_HAIR_BOY_2, $1f + 4, $18 + 4, $ff, $d1, $44, SUPER_NERD + $C8, $1 ; trainer db SPRITE_LASS, $17 + 4, $10 + 4, $ff, $d0, $45, LASS + $C8, $6 ; trainer db SPRITE_BUG_CATCHER, $16 + 4, $7 + 4, $ff, $d0, $46, BUG_CATCHER + $C8, $7 ; trainer db SPRITE_BUG_CATCHER, $1b + 4, $1e + 4, $ff, $d3, $47, BUG_CATCHER + $C8, $8 ; trainer db SPRITE_BALL, $14 + 4, $2 + 4, $ff, $ff, $88, POTION ; item db SPRITE_BALL, $2 + 4, $2 + 4, $ff, $ff, $89, MOON_STONE ; item db SPRITE_BALL, $1f + 4, $23 + 4, $ff, $ff, $8a, RARE_CANDY ; item db SPRITE_BALL, $17 + 4, $24 + 4, $ff, $ff, $8b, ESCAPE_ROPE ; item db SPRITE_BALL, $21 + 4, $14 + 4, $ff, $ff, $8c, POTION ; item db SPRITE_BALL, $20 + 4, $5 + 4, $ff, $ff, $8d, TM_12 ; item ; warp-to EVENT_DISP $14, $23, $e EVENT_DISP $14, $23, $f EVENT_DISP $14, $5, $5 ; MT_MOON_2 EVENT_DISP $14, $b, $11 ; MT_MOON_2 EVENT_DISP $14, $f, $19 ; MT_MOON_2 MtMoon1Blocks: ; 0x49b97 360 INCBIN "maps/mtmoon1.blk" MtMoon3_h: ; 0x49cff to 0x49d0b (12 bytes) (id=61) db $11 ; tileset db MT_MOON_3_HEIGHT, MT_MOON_3_WIDTH ; dimensions (y, x) dw MtMoon3Blocks, MtMoon3Texts, MtMoon3Script ; blocks, texts, scripts db $00 ; connections dw MtMoon3Object ; objects MtMoon3Script: ; 0x49d0b call $3c3c ld hl, $5e48 ld de, $5d63 ld a, [$d607] call $3160 ld [$d607], a ld a, [$d7f6] bit 1, a ret z ld hl, $5d37 call $34bf jr nc, .asm_49d31 ; 0x49d29 $6 ld hl, $d72e set 4, [hl] ret .asm_49d31 ld hl, $d72e res 4, [hl] ret ; 0x49d37 INCBIN "baserom.gbc",$49d37,$fd MtMoon3Texts: ; 0x49e34 dw MtMoon3Text1, MtMoon3Text2, MtMoon3Text3, MtMoon3Text4, MtMoon3Text5, MtMoon3Text6, MtMoon3Text7, MtMoon3Text8, MtMoon3Text9, Unnamed_49f99 MtMoon3TrainerHeaders: MtMoon3TrainerHeader0: ; 0x49e48 db $2 ; flag's bit db ($4 << 4) ; trainer's view range dw $d7f6 ; flag's byte dw MtMoon3BattleText2 ; 0x5f9f TextBeforeBattle dw MtMoon3AfterBattleText2 ; 0x5fa9 TextAfterBattle dw MtMoon3EndBattleText2 ; 0x5fa4 TextEndBattle dw MtMoon3EndBattleText2 ; 0x5fa4 TextEndBattle ; 0x49e54 MtMoon3TrainerHeader2: ; 0x49e54 db $3 ; flag's bit db ($4 << 4) ; trainer's view range dw $d7f6 ; flag's byte dw MtMoon3BattleText3 ; 0x5fae TextBeforeBattle dw MtMoon3AfterBattleText3 ; 0x5fb8 TextAfterBattle dw MtMoon3EndBattleText3 ; 0x5fb3 TextEndBattle dw MtMoon3EndBattleText3 ; 0x5fb3 TextEndBattle ; 0x49e60 MtMoon3TrainerHeader3: ; 0x49e60 db $4 ; flag's bit db ($4 << 4) ; trainer's view range dw $d7f6 ; flag's byte dw MtMoon3BattleText4 ; 0x5fbd TextBeforeBattle dw MtMoon3AfterBattleText4 ; 0x5fc7 TextAfterBattle dw MtMoon3EndBattleText4 ; 0x5fc2 TextEndBattle dw MtMoon3EndBattleText4 ; 0x5fc2 TextEndBattle ; 0x49e6c MtMoon3TrainerHeader4: ; 0x49e6c db $5 ; flag's bit db ($4 << 4) ; trainer's view range dw $d7f6 ; flag's byte dw MtMoon3BattleText5 ; 0x5fcc TextBeforeBattle dw MtMoon3AfterBattleText5 ; 0x5fd6 TextAfterBattle dw MtMoon3EndBattleText5 ; 0x5fd1 TextEndBattle dw MtMoon3EndBattleText5 ; 0x5fd1 TextEndBattle ; 0x49e78 db $ff MtMoon3Text1: ; 0x49e79 db $08 ; asm ld a, [$d7f6] bit 1, a jr z, .asm_be1e0 ; 0x49e7f and $c0 jr nz, .asm_f8cd4 ; 0x49e83 ld hl, UnnamedText_49f8f call PrintText jr .asm_f1fba ; 0x49e8b .asm_be1e0 ; 0x49e8d ld hl, UnnamedText_49f85 call PrintText ld hl, $d72d set 6, [hl] set 7, [hl] ld hl, UnnamedText_49f8a ld de, UnnamedText_49f8a call $3354 ldh a, [$8c] ld [$cf13], a call $336a call $32d7 ld a, $3 ld [$d607], a ld [$da39], a jr .asm_f1fba ; 0x49eb6 .asm_f8cd4 ; 0x49eb8 ld hl, UnnamedText_49f94 call PrintText .asm_f1fba ; 0x49ebe jp TextScriptEnd MtMoon3Text2: ; 0x49ec1 db $08 ; asm ld hl, MtMoon3TrainerHeader0 call LoadTrainerHeader jp TextScriptEnd MtMoon3Text3: ; 0x49ecb db $08 ; asm ld hl, MtMoon3TrainerHeader2 call LoadTrainerHeader jp TextScriptEnd MtMoon3Text4: ; 0x49ed5 db $08 ; asm ld hl, MtMoon3TrainerHeader3 call LoadTrainerHeader jp TextScriptEnd MtMoon3Text5: ; 0x49edf db $08 ; asm ld hl, $5e6c call LoadTrainerHeader jp TextScriptEnd MtMoon3Text6: ; 0x49ee9 db $08 ; asm ld a, $1 ld [$cc3c], a ld hl, UnnamedText_49f24 call PrintText call $35ec ld a, [$cc26] and a jr nz, .asm_1fa5e ; 0x49efc ld bc,(DOME_FOSSIL << 8) | 1 call GiveItem jp nc, $5f76 call $5f69 ld a, $6d ld [$cc4d], a ld a, $11 call Predef ld hl, $d7f6 set 6, [hl] ld a, $4 ld [$d607], a ld [$da39], a .asm_1fa5e ; 0x49f21 jp TextScriptEnd UnnamedText_49f24: ; 0x49f24 TX_FAR _UnnamedText_49f24 db $50 ; 0x49f24 + 5 bytes MtMoon3Text7: ; 0x49f29 db $08 ; asm ld a, $1 ld [$cc3c], a ld hl, UnnamedText_49f64 call PrintText call $35ec ld a, [$cc26] and a jr nz, .asm_8e988 ; 0x49f3c ld bc, (HELIX_FOSSIL << 8) | 1 call GiveItem jp nc, Unnamed_49f76 call Unnamed_49f69 ld a, $6e ld [$cc4d], a ld a, $11 call Predef ld hl, $d7f6 set 7, [hl] ld a, $4 ld [$d607], a ld [$da39], a .asm_8e988 ; 0x49f61 jp TextScriptEnd UnnamedText_49f64: ; 0x49f64 TX_FAR _UnnamedText_49f64 db $50 ; 0x49f64 + 5 bytes Unnamed_49f69: ; 0x49f69 ld hl, UnnamedText_49f6f jp PrintText ; 0x49f6f UnnamedText_49f6f: ; 0x49f6f TX_FAR _UnnamedText_49f6f ; 0x80995 db $11, $d, $50 ; 0x49f76 Unnamed_49f76: ; 0x49f76 ld hl, UnnamedText_49f7f call PrintText jp TextScriptEnd ; 0x49f7f UnnamedText_49f7f: ; 0x49f7f TX_FAR _UnnamedText_49f7f ; 0x809a8 db $d, $50 ; 0x49f85 UnnamedText_49f85: ; 0x49f85 TX_FAR _UnnamedText_49f85 db $50 ; 0x49f85 + 5 bytes UnnamedText_49f8a: ; 0x49f8a TX_FAR _UnnamedText_49f8a db $50 ; 0x49f8a + 5 bytes UnnamedText_49f8f: ; 0x49f8f TX_FAR _UnnamedText_49f8f db $50 ; 0x49f8f + 5 bytes UnnamedText_49f94: ; 0x49f94 TX_FAR _UnnamedText_49f94 db $50 ; 0x49f94 + 5 bytes Unnamed_49f99: ; 0x49f99 INCBIN "baserom.gbc",$49f99,$49f9f - $49f99 MtMoon3BattleText2: ; 0x49f9f TX_FAR _MtMoon3BattleText2 db $50 ; 0x49f9f + 5 bytes MtMoon3EndBattleText2: ; 0x49fa4 TX_FAR _MtMoon3EndBattleText2 db $50 ; 0x49fa4 + 5 bytes MtMoon3AfterBattleText2: ; 0x49fa9 TX_FAR _MtMoon3AfterBattleText2 db $50 ; 0x49fa9 + 5 bytes MtMoon3BattleText3: ; 0x49fae TX_FAR _MtMoon3BattleText3 db $50 ; 0x49fae + 5 bytes MtMoon3EndBattleText3: ; 0x49fb3 TX_FAR _MtMoon3EndBattleText3 db $50 ; 0x49fb3 + 5 bytes MtMoon3AfterBattleText3: ; 0x49fb8 TX_FAR _MtMoon3AfterBattleText3 db $50 ; 0x49fb8 + 5 bytes MtMoon3BattleText4: ; 0x49fbd TX_FAR _MtMoon3BattleText4 db $50 ; 0x49fbd + 5 bytes MtMoon3EndBattleText4: ; 0x49fc2 TX_FAR _MtMoon3EndBattleText4 db $50 ; 0x49fc2 + 5 bytes MtMoon3AfterBattleText4: ; 0x49fc7 TX_FAR _MtMoon3AfterBattleText4 db $50 ; 0x49fc7 + 5 bytes MtMoon3BattleText5: ; 0x49fcc TX_FAR _MtMoon3BattleText5 db $50 ; 0x49fcc + 5 bytes MtMoon3EndBattleText5: ; 0x49fd1 TX_FAR _MtMoon3EndBattleText5 db $50 ; 0x49fd1 + 5 bytes MtMoon3AfterBattleText5: ; 0x49fd6 TX_FAR _MtMoon3AfterBattleText5 db $50 ; 0x49fd6 + 5 bytes MtMoon3Object: ; 0x49fdb (size=102) db $3 ; border tile db $4 ; warps db $9, $19, $1, MT_MOON_2 db $11, $15, $4, MT_MOON_2 db $1b, $f, $5, MT_MOON_2 db $7, $5, $6, MT_MOON_2 db $0 ; signs db $9 ; people db SPRITE_BLACK_HAIR_BOY_2, $8 + 4, $c + 4, $ff, $d3, $41, SUPER_NERD + $C8, $2 ; trainer db SPRITE_ROCKET, $10 + 4, $b + 4, $ff, $d0, $42, ROCKET + $C8, $1 ; trainer db SPRITE_ROCKET, $16 + 4, $f + 4, $ff, $d0, $43, ROCKET + $C8, $2 ; trainer db SPRITE_ROCKET, $b + 4, $1d + 4, $ff, $d1, $44, ROCKET + $C8, $3 ; trainer db SPRITE_ROCKET, $11 + 4, $1d + 4, $ff, $d2, $45, ROCKET + $C8, $4 ; trainer db SPRITE_OMANYTE, $6 + 4, $c + 4, $ff, $ff, $6 ; person db SPRITE_OMANYTE, $6 + 4, $d + 4, $ff, $ff, $7 ; person db SPRITE_BALL, $15 + 4, $19 + 4, $ff, $ff, $88, HP_UP ; item db SPRITE_BALL, $5 + 4, $1d + 4, $ff, $ff, $89, TM_01 ; item ; warp-to EVENT_DISP $14, $9, $19 ; MT_MOON_2 EVENT_DISP $14, $11, $15 ; MT_MOON_2 EVENT_DISP $14, $1b, $f ; MT_MOON_2 EVENT_DISP $14, $7, $5 ; MT_MOON_2 MtMoon3Blocks: ; 0x4a041 360 INCBIN "maps/mtmoon3.blk" SafariZoneWest_h: ; 0x4a1a9 to 0x4a1b5 (12 bytes) (id=219) db $03 ; tileset db SAFARI_ZONE_WEST_HEIGHT, SAFARI_ZONE_WEST_WIDTH ; dimensions (y, x) dw SafariZoneWestBlocks, SafariZoneWestTexts, SafariZoneWestScript ; blocks, texts, scripts db $00 ; connections dw SafariZoneWestObject ; objects SafariZoneWestScript: ; 0x4a1b5 jp $3c3c ; 0x4a1b8 SafariZoneWestTexts: ; 0x4a1b8 dw SafariZoneWestText1, SafariZoneWestText2, SafariZoneWestText3, SafariZoneWestText4, SafariZoneWestText5, SafariZoneWestText6, SafariZoneWestText7, SafariZoneWestText8 SafariZoneWestText5: ; 0x4a1c8 TX_FAR _SafariZoneWestText5 db $50 SafariZoneWestText6: ; 0x4a1cd TX_FAR _SafariZoneWestText6 db $50 SafariZoneWestText7: ; 0x4a1d2 TX_FAR _SafariZoneWestText7 db $50 SafariZoneWestText8: ; 0x4a1d7 TX_FAR _SafariZoneWestText8 db $50 SafariZoneWestObject: ; 0x4a1dc (size=108) db $0 ; border tile db $8 ; warps db $0, $14, $0, SAFARI_ZONE_NORTH db $0, $15, $1, SAFARI_ZONE_NORTH db $0, $1a, $2, SAFARI_ZONE_NORTH db $0, $1b, $3, SAFARI_ZONE_NORTH db $16, $1d, $2, SAFARI_ZONE_CENTER db $17, $1d, $3, SAFARI_ZONE_CENTER db $3, $3, $0, SAFARI_ZONE_SECRET_HOUSE db $b, $b, $0, SAFARI_ZONE_REST_HOUSE_2 db $4 ; signs db $c, $c, $5 ; SafariZoneWestText5 db $3, $11, $6 ; SafariZoneWestText6 db $4, $1a, $7 ; SafariZoneWestText7 db $16, $18, $8 ; SafariZoneWestText8 db $4 ; people db SPRITE_BALL, $14 + 4, $8 + 4, $ff, $ff, $81, MAX_POTION ; item db SPRITE_BALL, $7 + 4, $9 + 4, $ff, $ff, $82, TM_32 ; item db SPRITE_BALL, $12 + 4, $12 + 4, $ff, $ff, $83, MAX_REVIVE ; item db SPRITE_BALL, $7 + 4, $13 + 4, $ff, $ff, $84, GOLD_TEETH ; item ; warp-to EVENT_DISP $f, $0, $14 ; SAFARI_ZONE_NORTH EVENT_DISP $f, $0, $15 ; SAFARI_ZONE_NORTH EVENT_DISP $f, $0, $1a ; SAFARI_ZONE_NORTH EVENT_DISP $f, $0, $1b ; SAFARI_ZONE_NORTH EVENT_DISP $f, $16, $1d ; SAFARI_ZONE_CENTER EVENT_DISP $f, $17, $1d ; SAFARI_ZONE_CENTER EVENT_DISP $f, $3, $3 ; SAFARI_ZONE_SECRET_HOUSE EVENT_DISP $f, $b, $b ; SAFARI_ZONE_REST_HOUSE_2 SafariZoneWestBlocks: ; 0x4a248 195 INCBIN "maps/safarizonewest.blk" SafariZoneSecretHouse_h: ; 0x4a30b to 0x4a317 (12 bytes) (id=222) db $14 ; tileset db SAFARI_ZONE_SECRET_HOUSE_HEIGHT, SAFARI_ZONE_SECRET_HOUSE_WIDTH ; dimensions (y, x) dw SafariZoneSecretHouseBlocks, SafariZoneSecretHouseTexts, SafariZoneSecretHouseScript ; blocks, texts, scripts db $00 ; connections dw SafariZoneSecretHouseObject ; objects SafariZoneSecretHouseScript: ; 0x4a317 jp $3c3c ; 0x4a31a SafariZoneSecretHouseTexts: ; 0x4a31a dw SafariZoneSecretHouseText1 SafariZoneSecretHouseText1: ; 0x4a31c db $08 ; asm ld a, [$d857] bit 0, a jr nz, .asm_20a9b ; 0x4a322 ld hl, UnnamedText_4a350 call PrintText ld bc, (HM_03 << 8) | 1 call GiveItem jr nc, .asm_a21d2 ; 0x4a330 ld hl, ReceivedHM03Text call PrintText ld hl, $d857 set 0, [hl] jr .asm_8f1fc ; 0x4a33d .asm_a21d2 ; 0x4a33f ld hl, HM03NoRoomText call PrintText jr .asm_8f1fc ; 0x4a345 .asm_20a9b ; 0x4a347 ld hl, HM03ExplanationText call PrintText .asm_8f1fc ; 0x4a34d jp TextScriptEnd UnnamedText_4a350: ; 0x4a350 TX_FAR _UnnamedText_4a350 db $50 ; 0x4a350 + 5 bytes ReceivedHM03Text: ; 0x4a355 TX_FAR _ReceivedHM03Text ; 0x85943 db $0B, $50 ; 0x4a35b HM03ExplanationText: ; 0x4a35b TX_FAR _HM03ExplanationText db $50 ; 0x4a35b + 5 bytes HM03NoRoomText: ; 0x4a360 TX_FAR _HM03NoRoomText db $50 ; 0x4a360 + 5 bytes SafariZoneSecretHouseObject: ; 0x4a365 (size=26) db $17 ; border tile db $2 ; warps db $7, $2, $6, SAFARI_ZONE_WEST db $7, $3, $6, SAFARI_ZONE_WEST db $0 ; signs db $1 ; people db SPRITE_FISHER, $3 + 4, $3 + 4, $ff, $d0, $1 ; person ; warp-to EVENT_DISP $4, $7, $2 ; SAFARI_ZONE_WEST EVENT_DISP $4, $7, $3 ; SAFARI_ZONE_WEST SafariZoneSecretHouseBlocks: ; 0x4a37f 16 INCBIN "maps/safarizonesecrethouse.blk" SECTION "bank13",DATA,BANK[$13] YoungsterPic: INCBIN "pic/trainer/youngster.pic" BugCatcherPic: INCBIN "pic/trainer/bugcatcher.pic" LassPic: INCBIN "pic/trainer/lass.pic" SailorPic: INCBIN "pic/trainer/sailor.pic" JrTrainerMPic: INCBIN "pic/trainer/jr.trainerm.pic" JrTrainerFPic: INCBIN "pic/trainer/jr.trainerf.pic" PokemaniacPic: INCBIN "pic/trainer/pokemaniac.pic" SuperNerdPic: INCBIN "pic/trainer/supernerd.pic" HikerPic: INCBIN "pic/trainer/hiker.pic" BikerPic: INCBIN "pic/trainer/biker.pic" BurglarPic: INCBIN "pic/trainer/burglar.pic" EngineerPic: INCBIN "pic/trainer/engineer.pic" FisherPic: INCBIN "pic/trainer/fisher.pic" SwimmerPic: INCBIN "pic/trainer/swimmer.pic" CueBallPic: INCBIN "pic/trainer/cueball.pic" GamblerPic: INCBIN "pic/trainer/gambler.pic" BeautyPic: INCBIN "pic/trainer/beauty.pic" PsychicPic: INCBIN "pic/trainer/psychic.pic" RockerPic: INCBIN "pic/trainer/rocker.pic" JugglerPic: INCBIN "pic/trainer/juggler.pic" TamerPic: INCBIN "pic/trainer/tamer.pic" BirdKeeperPic: INCBIN "pic/trainer/birdkeeper.pic" BlackbeltPic: INCBIN "pic/trainer/blackbelt.pic" Rival1Pic: INCBIN "pic/trainer/rival1.pic" ProfOakPic: INCBIN "pic/trainer/prof.oak.pic" ChiefPic: ScientistPic: INCBIN "pic/trainer/scientist.pic" GiovanniPic: INCBIN "pic/trainer/giovanni.pic" RocketPic: INCBIN "pic/trainer/rocket.pic" CooltrainerMPic: INCBIN "pic/trainer/cooltrainerm.pic" CooltrainerFPic: INCBIN "pic/trainer/cooltrainerf.pic" BrunoPic: INCBIN "pic/trainer/bruno.pic" BrockPic: INCBIN "pic/trainer/brock.pic" MistyPic: INCBIN "pic/trainer/misty.pic" LtSurgePic: INCBIN "pic/trainer/lt.surge.pic" ErikaPic: INCBIN "pic/trainer/erika.pic" KogaPic: INCBIN "pic/trainer/koga.pic" BlainePic: INCBIN "pic/trainer/blaine.pic" SabrinaPic: INCBIN "pic/trainer/sabrina.pic" GentlemanPic: INCBIN "pic/trainer/gentleman.pic" Rival2Pic: INCBIN "pic/trainer/rival2.pic" Rival3Pic: INCBIN "pic/trainer/rival3.pic" LoreleiPic: INCBIN "pic/trainer/lorelei.pic" ChannelerPic: INCBIN "pic/trainer/channeler.pic" AgathaPic: INCBIN "pic/trainer/agatha.pic" LancePic: INCBIN "pic/trainer/lance.pic" BattleCenterM_h: ; 0x4fd04 to 0x4fd10 (12 bytes) (id=239) db $15 ; tileset db BATTLE_CENTER_HEIGHT, BATTLE_CENTER_WIDTH ; dimensions (y, x) dw BattleCenterMBlocks, BattleCenterMTexts, BattleCenterMScript ; blocks, texts, scripts db $00 ; connections dw BattleCenterMObject ; objects BattleCenterMScript: ; 0x4fd10 call $3c3c ld a, [$ff00+$aa] cp $2 ld a, $8 jr z, .asm_4fd1d ; 0x4fd19 $2 ld a, $c .asm_4fd1d ld [$ff00+$8d], a ld a, $1 ld [$ff00+$8c], a call $34ae ld hl, $d72d bit 0, [hl] set 0, [hl] ret nz ld hl, $c214 ld a, $8 ld [hli], a ld a, $a ld [hl], a ld a, $8 ld [$c119], a ld a, [$ff00+$aa] cp $2 ret z ld a, $7 ld [$c215], a ld a, $c ld [$c119], a ret ; 0x4fd4c BattleCenterMTexts: ; 0x4fd4c dw BattleCenterMText1 BattleCenterMText1: ; 0x4fd4e TX_FAR _BattleCenterMText1 db $50 BattleCenterMObject: ; 0x4fd53 (size=10) db $e ; border tile db $0 ; warps db $0 ; signs db $1 ; people db SPRITE_RED, $2 + 4, $2 + 4, $ff, $0, $1 ; person BattleCenterMBlocks: ; 0x4fd5d 20 INCBIN "maps/battlecenterm.blk" TradeCenterM_h: ; 0x4fd71 to 0x4fd7d (12 bytes) (id=240) db $15 ; tileset db TRADE_CENTER_HEIGHT, TRADE_CENTER_WIDTH ; dimensions (y, x) dw TradeCenterMBlocks, TradeCenterMTexts, TradeCenterMScript ; blocks, texts, scripts db $00 ; connections dw TradeCenterMObject ; objects TradeCenterMScript: ; 0x4fd7d jp $7d10 ; 0x4fd80 TradeCenterMTexts: ; 0x4fd80 dw TradeCenterMText1 TradeCenterMText1: ; 0x4fd82 TX_FAR _TradeCenterMText1 db $50 TradeCenterMObject: ; 0x4fd87 (size=10) db $e ; border tile db $0 ; warps db $0 ; signs db $1 ; people db SPRITE_RED, $2 + 4, $2 + 4, $ff, $0, $1 ; person TradeCenterMBlocks: ; 0x4fd91 20 INCBIN "maps/tradecenterm.blk" INCBIN "baserom.gbc",$4fda5,$4fe3f - $4fda5 UnnamedText_4fe3f: ; 0x4fe3f TX_FAR _UnnamedText_4fe3f db $50 ; 0x4fe3f + 5 bytes UnnamedText_4fe44: ; 0x4fe44 TX_FAR _UnnamedText_4fe44 db $50 ; 0x4fe44 + 5 bytes GetPredefPointer: ; 7E49 ; stores hl in $CC4F,$CC50 ; stores de in $CC51,$CC52 ; stores bc in $CC53,$CC54 ; grabs a byte "n" from $CC4E, ; and gets the nth (3-byte) pointer in PredefPointers ; stores the bank of said pointer in [$D0B7] ; stores the pointer in hl and returns ; ld $CC4F,hl ld a,h ld [$CC4F],a ld a,l ld [$CC50],a ; ld $CC51,de ld hl,$CC51 ld a,d ld [hli],a ld a,e ld [hli],a ; ld $CC53,bc ld a,b ld [hli],a ld [hl],c ld hl,PredefPointers ld de,0 ; de = 3 * [$CC4E] ld a,[$CC4E] ld e,a add a,a add a,e ld e,a jr nc,.next\@ inc d .next\@ add hl,de ld d,h ld e,l ; get bank of predef routine ld a,[de] ld [$D0B7],a ; get pointer inc de ld a,[de] ld l,a inc de ld a,[de] ld h,a ret PredefPointers: ; 7E79 ; these are pointers to ASM routines. ; they appear to be used in overworld map scripts. dbw $0F,$4D60 dbw $0F,$70C6 dbw $0F,$7073 dbw $0B,$7E40 dbw $0F,$7103 dbw $1E,$5ABA dbw $03,$7132 dbw BANK(HealParty),HealParty dbw BANK(MoveAnimation),MoveAnimation; 08 play move animation dbw $03,$771E dbw $03,$771E dbw $03,$781D dbw $03,$7836 dbw $03,$771E dbw $03,$771E dbw $03,$7850 dbw $03,$7666 dbw $03,$71D7 dbw $03,$71A6 dbw $03,$469C dbw $0F,$4A83 dbw $03,$71C8 dbw $03,$71C8 dbw $03,$6E9E dbw $03,$7850 dbw $03,$4754 dbw $0E,$6F5B dbw $01,$6E43 dbw $03,$78A5; 1C, used in Pokémon Tower dbw $03,$3EB5 dbw $03,$3E2E dbw $12,$40EB dbw $03,$78BA dbw $12,$40FF dbw $03,$7929 dbw $03,$79A0 dbw $12,$4125 dbw $03,$7A1D dbw $03,$79DC dbw $01,$5AB0 dbw $0F,$6D02 dbw $10,$4000 dbw $0E,$6D1C dbw $1C,$778C dbw $0F,$6F18 dbw $01,$5A5F dbw $03,$6A03 dbw $10,$50F3 dbw $1C,$496D dbw $1E,$5DDA dbw $10,$5682 dbw $1E,$5869 dbw $1C,$4B5D dbw $03,$4586 dbw $04,$6953 dbw $04,$6B57 dbw $10,$50E2 dbw $15,$690F dbw $10,$5010 dbw BANK(Predef3B),Predef3B; 3B display pic? dbw $03,$6F54 dbw $10,$42D1 dbw $0E,$6FB8 dbw $1C,$770A dbw $1C,$602B dbw $03,$7113 dbw $17,$5B5E dbw $04,$773E dbw $04,$7763 dbw $1C,$5DDF dbw $17,$40DC; 46 load dex screen dbw $03,$72E5 dbw $03,$7A1D dbw $0F,$4DEC dbw $1C,$4F60 dbw $09,$7D6B dbw $05,$7C47; 4C player exclamation dbw $01,$5AAF; return immediately dbw $01,$64EB dbw $0D,$7CA1 dbw $1C,$780F dbw $1C,$76BD dbw $1C,$75E8 dbw $1C,$77E2 dbw BANK(Predef54),Predef54 ; 54 initiate trade dbw $1D,$405C dbw $11,$4169 dbw $1E,$45BA dbw $1E,$4510 dbw $03,$45BE dbw $03,$460B dbw $03,$4D99 dbw $01,$4DE1 dbw $09,$7D98 dbw $03,$7473 dbw $04,$68EF dbw $04,$68F6 dbw $07,$49C6 dbw $16,$5035 SECTION "bank14",DATA,BANK[$14] Route22_h: ; 0x50000 to 0x50022 (34 bytes) (id=33) db $00 ; tileset db ROUTE_22_HEIGHT, ROUTE_22_WIDTH ; dimensions (y, x) dw Route22Blocks, Route22Texts, Route22Script ; blocks, texts, scripts db NORTH | EAST ; connections ; connections data db ROUTE_23 dw Route23Blocks + (ROUTE_23_HEIGHT - 3) * ROUTE_23_WIDTH ; connection strip location dw $C6EB + 0 ; current map position db ROUTE_23_WIDTH, ROUTE_23_WIDTH ; bigness, width db (ROUTE_23_HEIGHT * 2) - 1, (0 * -2) ; alignments (y, x) dw $C6E9 + ROUTE_23_HEIGHT * (ROUTE_23_WIDTH + 6) ; window db VIRIDIAN_CITY dw ViridianCityBlocks + (VIRIDIAN_CITY_WIDTH) ; connection strip location dw $C6E5 + (ROUTE_22_WIDTH + 6) * (-3 + 4) ; current map position db $f, VIRIDIAN_CITY_WIDTH ; bigness, width db (-4 * -2), 0 ; alignments (y, x) dw $C6EF + VIRIDIAN_CITY_WIDTH ; window ; end connections data dw Route22Object ; objects Route22Object: ; 0x50022 (size=27) db $2c ; border tile db $1 ; warps db $5, $8, $0, ROUTE_22_GATE db $1 ; signs db $b, $7, $3 ; Route22Text3 db $2 ; people db SPRITE_BLUE, $5 + 4, $19 + 4, $ff, $ff, $1 ; person db SPRITE_BLUE, $5 + 4, $19 + 4, $ff, $ff, $2 ; person ; warp-to EVENT_DISP $14, $5, $8 ; ROUTE_22_GATE Route22Blocks: ; 0x5003d 180 INCBIN "maps/route22.blk" Route20_h: ; 0x500f1 to 0x50113 (34 bytes) (id=31) db $00 ; tileset db ROUTE_20_HEIGHT, ROUTE_20_WIDTH ; dimensions (y, x) dw Route20Blocks, Route20Texts, Route20Script ; blocks, texts, scripts db WEST | EAST ; connections ; connections data db CINNABAR_ISLAND dw CinnabarIslandBlocks - 3 + (CINNABAR_ISLAND_WIDTH) ; connection strip location dw $C6E8 + (ROUTE_20_WIDTH + 6) * (0 + 3) ; current map position db CINNABAR_ISLAND_HEIGHT, CINNABAR_ISLAND_WIDTH ; bigness, width db (0 * -2), (CINNABAR_ISLAND_WIDTH * 2) - 1 ; alignments (y, x) dw $C6EE + 2 * CINNABAR_ISLAND_WIDTH ; window db ROUTE_19 dw Route19Blocks + (ROUTE_19_WIDTH * 15) ; connection strip location dw $C6E5 + (ROUTE_20_WIDTH + 6) * (-3 + 4) ; current map position db $c, ROUTE_19_WIDTH ; bigness, width db (-18 * -2), 0 ; alignments (y, x) dw $C6EF + ROUTE_19_WIDTH ; window ; end connections data dw Route20Object ; objects Route20Object: ; 0x50113 (size=106) db $43 ; border tile db $2 ; warps db $5, $30, $0, SEAFOAM_ISLANDS_1 db $9, $3a, $2, SEAFOAM_ISLANDS_1 db $2 ; signs db $7, $33, $b ; Route20Text11 db $b, $39, $c ; Route20Text12 db $a ; people db SPRITE_SWIMMER, $8 + 4, $57 + 4, $ff, $d1, $41, SWIMMER + $C8, $9 ; trainer db SPRITE_SWIMMER, $b + 4, $44 + 4, $ff, $d1, $42, BEAUTY + $C8, $f ; trainer db SPRITE_SWIMMER, $a + 4, $2d + 4, $ff, $d0, $43, BEAUTY + $C8, $6 ; trainer db SPRITE_SWIMMER, $e + 4, $37 + 4, $ff, $d3, $44, JR__TRAINER_F + $C8, $18 ; trainer db SPRITE_SWIMMER, $d + 4, $26 + 4, $ff, $d0, $45, SWIMMER + $C8, $a ; trainer db SPRITE_SWIMMER, $d + 4, $57 + 4, $ff, $d1, $46, SWIMMER + $C8, $b ; trainer db SPRITE_BLACK_HAIR_BOY_1, $9 + 4, $22 + 4, $ff, $d1, $47, BIRD_KEEPER + $C8, $b ; trainer db SPRITE_SWIMMER, $7 + 4, $19 + 4, $ff, $d1, $48, BEAUTY + $C8, $7 ; trainer db SPRITE_SWIMMER, $c + 4, $18 + 4, $ff, $d0, $49, JR__TRAINER_F + $C8, $10 ; trainer db SPRITE_SWIMMER, $8 + 4, $f + 4, $ff, $d1, $4a, BEAUTY + $C8, $8 ; trainer ; warp-to EVENT_DISP $32, $5, $30 ; SEAFOAM_ISLANDS_1 EVENT_DISP $32, $9, $3a ; SEAFOAM_ISLANDS_1 Route20Blocks: ; 0x5017d 450 INCBIN "maps/route20.blk" Route23_h: ; 0x5033f to 0x50361 (34 bytes) (id=34) db $17 ; tileset db ROUTE_23_HEIGHT, ROUTE_23_WIDTH ; dimensions (y, x) dw Route23Blocks, Route23Texts, Route23Script ; blocks, texts, scripts db NORTH | SOUTH ; connections ; connections data db INDIGO_PLATEAU dw IndigoPlateauBlocks + (INDIGO_PLATEAU_HEIGHT - 3) * INDIGO_PLATEAU_WIDTH ; connection strip location dw $C6EB + 0 ; current map position db INDIGO_PLATEAU_WIDTH, INDIGO_PLATEAU_WIDTH ; bigness, width db (INDIGO_PLATEAU_HEIGHT * 2) - 1, (0 * -2) ; alignments (y, x) dw $C6E9 + INDIGO_PLATEAU_HEIGHT * (INDIGO_PLATEAU_WIDTH + 6) ; window db ROUTE_22 dw Route22Blocks ; connection strip location dw $C6EB + (ROUTE_23_HEIGHT + 3) * (ROUTE_23_WIDTH + 6) + 0 ; current map position db $d, ROUTE_22_WIDTH ; bigness, width db 0, (0 * -2) ; alignments (y, x) dw $C6EF + ROUTE_22_WIDTH ; window ; end connections data dw Route23Object ; objects Route23Object: ; 0x50361 (size=81) db $f ; border tile db $4 ; warps db $8b, $7, $2, ROUTE_22_GATE db $8b, $8, $3, ROUTE_22_GATE db $1f, $4, $0, VICTORY_ROAD_1 db $1f, $e, $1, VICTORY_ROAD_2 db $1 ; signs db $21, $3, $8 ; Route23Text8 db $7 ; people db SPRITE_GUARD, $23 + 4, $4 + 4, $ff, $d0, $1 ; person db SPRITE_GUARD, $38 + 4, $a + 4, $ff, $d0, $2 ; person db SPRITE_SWIMMER, $55 + 4, $8 + 4, $ff, $d0, $3 ; person db SPRITE_SWIMMER, $60 + 4, $b + 4, $ff, $d0, $4 ; person db SPRITE_GUARD, $69 + 4, $c + 4, $ff, $d0, $5 ; person db SPRITE_GUARD, $77 + 4, $8 + 4, $ff, $d0, $6 ; person db SPRITE_GUARD, $88 + 4, $8 + 4, $ff, $d0, $7 ; person ; warp-to EVENT_DISP $a, $8b, $7 ; ROUTE_22_GATE EVENT_DISP $a, $8b, $8 ; ROUTE_22_GATE EVENT_DISP $a, $1f, $4 ; VICTORY_ROAD_1 EVENT_DISP $a, $1f, $e ; VICTORY_ROAD_2 Route23Blocks: ; 0x503b2 720 INCBIN "maps/route23.blk" Route24_h: ; 0x50682 to 0x506a4 (34 bytes) (id=35) db $00 ; tileset db ROUTE_24_HEIGHT, ROUTE_24_WIDTH ; dimensions (y, x) dw Route24Blocks, Route24Texts, Route24Script ; blocks, texts, scripts db SOUTH | EAST ; connections ; connections data db CERULEAN_CITY dw CeruleanCityBlocks + 2 ; connection strip location dw $C6EB + (ROUTE_24_HEIGHT + 3) * (ROUTE_24_WIDTH + 6) + -3 ; current map position db $10, CERULEAN_CITY_WIDTH ; bigness, width db 0, (-5 * -2) ; alignments (y, x) dw $C6EF + CERULEAN_CITY_WIDTH ; window db ROUTE_25 dw Route25Blocks + (ROUTE_25_WIDTH * 0) ; connection strip location dw $C6E5 + (ROUTE_24_WIDTH + 6) * (0 + 4) ; current map position db ROUTE_25_HEIGHT, ROUTE_25_WIDTH ; bigness, width db (0 * -2), 0 ; alignments (y, x) dw $C6EF + ROUTE_25_WIDTH ; window ; end connections data dw Route24Object ; objects Route24Object: ; 0x506a4 (size=67) db $2c ; border tile db $0 ; warps db $0 ; signs db $8 ; people db SPRITE_BLACK_HAIR_BOY_1, $f + 4, $b + 4, $ff, $d2, $41, ROCKET + $C8, $6 ; trainer db SPRITE_BLACK_HAIR_BOY_1, $14 + 4, $5 + 4, $ff, $d1, $42, JR__TRAINER_M + $C8, $2 ; trainer db SPRITE_BLACK_HAIR_BOY_1, $13 + 4, $b + 4, $ff, $d2, $43, JR__TRAINER_M + $C8, $3 ; trainer db SPRITE_LASS, $16 + 4, $a + 4, $ff, $d3, $44, LASS + $C8, $7 ; trainer db SPRITE_BUG_CATCHER, $19 + 4, $b + 4, $ff, $d2, $45, YOUNGSTER + $C8, $4 ; trainer db SPRITE_LASS, $1c + 4, $a + 4, $ff, $d3, $46, LASS + $C8, $8 ; trainer db SPRITE_BUG_CATCHER, $1f + 4, $b + 4, $ff, $d2, $47, BUG_CATCHER + $C8, $9 ; trainer db SPRITE_BALL, $5 + 4, $a + 4, $ff, $ff, $88, TM_45 ; item Route24Blocks: ; 0x506e7 180 INCBIN "maps/route24.blk" Route25_h: ; 0x5079b to 0x507b2 (23 bytes) (id=36) db $00 ; tileset db ROUTE_25_HEIGHT, ROUTE_25_WIDTH ; dimensions (y, x) dw Route25Blocks, Route25Texts, Route25Script ; blocks, texts, scripts db WEST ; connections ; connections data db ROUTE_24 dw Route24Blocks - 3 + (ROUTE_24_WIDTH) ; connection strip location dw $C6E8 + (ROUTE_25_WIDTH + 6) * (0 + 3) ; current map position db $c, ROUTE_24_WIDTH ; bigness, width db (0 * -2), (ROUTE_24_WIDTH * 2) - 1 ; alignments (y, x) dw $C6EE + 2 * ROUTE_24_WIDTH ; window ; end connections data dw Route25Object ; objects Route25Object: ; 0x507b2 (size=94) db $2c ; border tile db $1 ; warps db $3, $2d, $0, BILLS_HOUSE db $1 ; signs db $3, $2b, $b ; Route25Text11 db $a ; people db SPRITE_BUG_CATCHER, $2 + 4, $e + 4, $ff, $d0, $41, YOUNGSTER + $C8, $5 ; trainer db SPRITE_BUG_CATCHER, $5 + 4, $12 + 4, $ff, $d1, $42, YOUNGSTER + $C8, $6 ; trainer db SPRITE_BLACK_HAIR_BOY_1, $4 + 4, $18 + 4, $ff, $d0, $43, JR__TRAINER_M + $C8, $2 ; trainer db SPRITE_LASS, $8 + 4, $12 + 4, $ff, $d3, $44, LASS + $C8, $9 ; trainer db SPRITE_BUG_CATCHER, $3 + 4, $20 + 4, $ff, $d2, $45, YOUNGSTER + $C8, $7 ; trainer db SPRITE_LASS, $4 + 4, $25 + 4, $ff, $d0, $46, LASS + $C8, $a ; trainer db SPRITE_HIKER, $4 + 4, $8 + 4, $ff, $d3, $47, HIKER + $C8, $2 ; trainer db SPRITE_HIKER, $9 + 4, $17 + 4, $ff, $d1, $48, HIKER + $C8, $3 ; trainer db SPRITE_HIKER, $7 + 4, $d + 4, $ff, $d3, $49, HIKER + $C8, $4 ; trainer db SPRITE_BALL, $2 + 4, $16 + 4, $ff, $ff, $8a, TM_19 ; item ; warp-to EVENT_DISP $1e, $3, $2d ; BILLS_HOUSE Route25Blocks: ; 0x50810 270 INCBIN "maps/route25.blk" IndigoPlateau_h: ; 0x5091e to 0x50935 (23 bytes) (id=9) db $17 ; tileset db INDIGO_PLATEAU_HEIGHT, INDIGO_PLATEAU_WIDTH ; dimensions (y, x) dw IndigoPlateauBlocks, IndigoPlateauTexts, IndigoPlateauScript ; blocks, texts, scripts db SOUTH ; connections ; connections data db ROUTE_23 dw Route23Blocks ; connection strip location dw $C6EB + (INDIGO_PLATEAU_HEIGHT + 3) * (INDIGO_PLATEAU_WIDTH + 6) + 0 ; current map position db ROUTE_23_WIDTH, ROUTE_23_WIDTH ; bigness, width db 0, (0 * -2) ; alignments (y, x) dw $C6EF + ROUTE_23_WIDTH ; window ; end connections data dw IndigoPlateauObject ; objects IndigoPlateauScript: ; 0x50935 ret ; 0x50936 IndigoPlateauTexts: IndigoPlateauObject: ; 0x50936 (size=20) db $e ; border tile db $2 ; warps db $5, $9, $0, INDIGO_PLATEAU_LOBBY db $5, $a, $0, INDIGO_PLATEAU_LOBBY db $0 ; signs db $0 ; people ; warp-to EVENT_DISP $a, $5, $9 ; INDIGO_PLATEAU_LOBBY EVENT_DISP $a, $5, $a ; INDIGO_PLATEAU_LOBBY IndigoPlateauBlocks: ; 0x5094a 90 INCBIN "maps/indigoplateau.blk" SaffronCity_h: ; 0x509a4 to 0x509dc (56 bytes) (id=10) db $00 ; tileset db SAFFRON_CITY_HEIGHT, SAFFRON_CITY_WIDTH ; dimensions (y, x) dw SaffronCityBlocks, SaffronCityTexts, SaffronCityScript ; blocks, texts, scripts db NORTH | SOUTH | WEST | EAST ; connections ; connections data db ROUTE_5 dw Route5Blocks + (ROUTE_5_HEIGHT - 3) * ROUTE_5_WIDTH ; connection strip location dw $C6EB + 5 ; current map position db ROUTE_5_WIDTH, ROUTE_5_WIDTH ; bigness, width db (ROUTE_5_HEIGHT * 2) - 1, (5 * -2) ; alignments (y, x) dw $C6E9 + ROUTE_5_HEIGHT * (ROUTE_5_WIDTH + 6) ; window db ROUTE_6 dw Route6Blocks ; connection strip location dw $C6EB + (SAFFRON_CITY_HEIGHT + 3) * (SAFFRON_CITY_WIDTH + 6) + 5 ; current map position db ROUTE_6_WIDTH, ROUTE_6_WIDTH ; bigness, width db 0, (5 * -2) ; alignments (y, x) dw $C6EF + ROUTE_6_WIDTH ; window db ROUTE_7 dw Route7Blocks - 3 + (ROUTE_7_WIDTH) ; connection strip location dw $C6E8 + (SAFFRON_CITY_WIDTH + 6) * (4 + 3) ; current map position db ROUTE_7_HEIGHT, ROUTE_7_WIDTH ; bigness, width db (4 * -2), (ROUTE_7_WIDTH * 2) - 1 ; alignments (y, x) dw $C6EE + 2 * ROUTE_7_WIDTH ; window db ROUTE_8 dw Route8Blocks + (ROUTE_8_WIDTH * 0) ; connection strip location dw $C6E5 + (SAFFRON_CITY_WIDTH + 6) * (4 + 4) ; current map position db ROUTE_8_HEIGHT, ROUTE_8_WIDTH ; bigness, width db (4 * -2), 0 ; alignments (y, x) dw $C6EF + ROUTE_8_WIDTH ; window ; end connections data dw SaffronCityObject ; objects SaffronCityObject: ; 0x509dc (size=188) db $f ; border tile db $8 ; warps db $5, $7, $0, COPYCATS_HOUSE_1F db $3, $1a, $0, FIGHTINGDOJO db $3, $22, $0, SAFFRON_GYM db $b, $d, $0, SAFFRON_HOUSE_1 db $b, $19, $0, SAFFRON_MART db $15, $12, $0, SILPH_CO_1F db $1d, $9, $0, SAFFRON_POKECENTER db $1d, $1d, $0, SAFFRON_HOUSE_2 db $a ; signs db $5, $11, $10 ; SaffronCityText16 db $5, $1b, $11 ; SaffronCityText17 db $5, $23, $12 ; SaffronCityText18 db $b, $1a, $13 ; SaffronCityText19 db $13, $27, $14 ; SaffronCityText20 db $15, $5, $15 ; SaffronCityText21 db $15, $f, $16 ; SaffronCityText22 db $1d, $a, $17 ; SaffronCityText23 db $1d, $1b, $18 ; SaffronCityText24 db $13, $1, $19 ; SaffronCityText25 db $f ; people db SPRITE_ROCKET, $6 + 4, $7 + 4, $ff, $ff, $1 ; person db SPRITE_ROCKET, $8 + 4, $14 + 4, $fe, $2, $2 ; person db SPRITE_ROCKET, $4 + 4, $22 + 4, $ff, $ff, $3 ; person db SPRITE_ROCKET, $c + 4, $d + 4, $ff, $ff, $4 ; person db SPRITE_ROCKET, $19 + 4, $b + 4, $fe, $2, $5 ; person db SPRITE_ROCKET, $d + 4, $20 + 4, $fe, $2, $6 ; person db SPRITE_ROCKET, $1e + 4, $12 + 4, $fe, $2, $7 ; person db SPRITE_OAK_AIDE, $e + 4, $8 + 4, $fe, $0, $8 ; person db SPRITE_LAPRAS_GIVER, $17 + 4, $17 + 4, $ff, $ff, $9 ; person db SPRITE_ERIKA, $1e + 4, $11 + 4, $fe, $2, $a ; person db SPRITE_GENTLEMAN, $c + 4, $1e + 4, $ff, $d0, $b ; person db SPRITE_BIRD, $c + 4, $1f + 4, $ff, $d0, $c ; person db SPRITE_ROCKER, $8 + 4, $12 + 4, $ff, $d1, $d ; person db SPRITE_ROCKET, $16 + 4, $12 + 4, $ff, $d0, $e ; person db SPRITE_ROCKET, $16 + 4, $13 + 4, $ff, $d0, $f ; person ; warp-to EVENT_DISP $14, $5, $7 ; COPYCATS_HOUSE_1F EVENT_DISP $14, $3, $1a ; FIGHTINGDOJO EVENT_DISP $14, $3, $22 ; SAFFRON_GYM EVENT_DISP $14, $b, $d ; SAFFRON_HOUSE_1 EVENT_DISP $14, $b, $19 ; SAFFRON_MART EVENT_DISP $14, $15, $12 ; SILPH_CO_1F EVENT_DISP $14, $1d, $9 ; SAFFRON_POKECENTER EVENT_DISP $14, $1d, $1d ; SAFFRON_HOUSE_2 SaffronCityBlocks: ; 0x50a98 360 INCBIN "maps/saffroncity.blk" SaffronCityScript: ; 0x50c00 jp $3c3c ; 0x50c03 SaffronCityTexts: ; 0x50c03 dw SaffronCityText1, SaffronCityText2, SaffronCityText3, SaffronCityText4, SaffronCityText5, SaffronCityText6, SaffronCityText7, SaffronCityText8, SaffronCityText9, SaffronCityText10, SaffronCityText11, SaffronCityText12, SaffronCityText13, SaffronCityText14, SaffronCityText15, SaffronCityText16, SaffronCityText17, SaffronCityText18, SaffronCityText19, SaffronCityText20, SaffronCityText21, SaffronCityText22, SaffronCityText23, SaffronCityText24, SaffronCityText25 SaffronCityText1: ; 0x50c35 TX_FAR _SaffronCityText1 db $50 SaffronCityText2: ; 0x50c3a TX_FAR _SaffronCityText2 db $50 SaffronCityText3: ; 0x50c3f TX_FAR _SaffronCityText3 db $50 SaffronCityText4: ; 0x50c44 TX_FAR _SaffronCityText4 db $50 SaffronCityText5: ; 0x50c49 TX_FAR _SaffronCityText5 db $50 SaffronCityText6: ; 0x50c4e TX_FAR _SaffronCityText6 db $50 SaffronCityText7: ; 0x50c53 TX_FAR _SaffronCityText7 db $50 SaffronCityText8: ; 0x50c58 TX_FAR _SaffronCityText8 db $50 SaffronCityText9: ; 0x50c5d TX_FAR _SaffronCityText9 db $50 SaffronCityText10: ; 0x50c62 TX_FAR _SaffronCityText10 db $50 SaffronCityText11: ; 0x50c67 TX_FAR _SaffronCityText11 db $50 SaffronCityText12: ; 0x50c6c TX_FAR _SaffronCityText12 db $15, $50 SaffronCityText13: ; 0x50c72 TX_FAR _SaffronCityText13 db $50 SaffronCityText14: ; 0x50c77 TX_FAR _SaffronCityText14 db $50 SaffronCityText15: ; 0x50c7c TX_FAR _SaffronCityText15 db $50 SaffronCityText16: ; 0x50c81 TX_FAR _SaffronCityText16 db $50 SaffronCityText17: ; 0x50c86 TX_FAR _SaffronCityText17 db $50 SaffronCityText18: ; 0x50c8b TX_FAR _SaffronCityText18 db $50 SaffronCityText20: ; 0x50c90 TX_FAR _SaffronCityText20 db $50 SaffronCityText21: ; 0x50c95 TX_FAR _SaffronCityText21 db $50 SaffronCityText22: ; 0x50c9a TX_FAR _SaffronCityText22 db $50 SaffronCityText24: ; 0x50c9f TX_FAR _SaffronCityText24 db $50 SaffronCityText25: ; 0x50ca4 TX_FAR _SaffronCityText25 db $50 Route20Script: ; 0x50ca9 ld hl, $d7e7 bit 0, [hl] res 0, [hl] call nz, $4cc6 call $3c3c ld hl, $4d3a ld de, $4d1c ld a, [$d628] call $3160 ld [$d628], a ret ; 0x50cc6 INCBIN "baserom.gbc",$50cc6,$5c Route20Texts: ; 0x50d22 dw Route20Text1, Route20Text2, Route20Text3, Route20Text4, Route20Text5, Route20Text6, Route20Text7, Route20Text8, Route20Text9, Route20Text10, Route20Text11, Route20Text12 Route20TrainerHeaders: Route20TrainerHeader0: db $1 ; flag's bit db ($4 << 4) ; trainer's view range dw $d7e7 ; flag's byte dw Route20BattleText1 ; 0x4e17 TextBeforeBattle dw Route20AfterBattleText1 ; 0x4e21 TextAfterBattle dw Route20EndBattleText1 ; 0x4e1c TextEndBattle dw Route20EndBattleText1 ; 0x4e1c TextEndBattle ; 0x50d46 Route20TrainerHeader2: ; 0x50d46 db $2 ; flag's bit db ($4 << 4) ; trainer's view range dw $d7e7 ; flag's byte dw Route20BattleText2 ; 0x4e26 TextBeforeBattle dw Route20AfterBattleText2 ; 0x4e30 TextAfterBattle dw Route20EndBattleText2 ; 0x4e2b TextEndBattle dw Route20EndBattleText2 ; 0x4e2b TextEndBattle ; 0x50d52 Route20TrainerHeader3: ; 0x50d52 db $3 ; flag's bit db ($2 << 4) ; trainer's view range dw $d7e7 ; flag's byte dw Route20BattleText3 ; 0x4e35 TextBeforeBattle dw Route20AfterBattleText3 ; 0x4e3f TextAfterBattle dw Route20EndBattleText3 ; 0x4e3a TextEndBattle dw Route20EndBattleText3 ; 0x4e3a TextEndBattle ; 0x50d5e Route20TrainerHeader4: ; 0x50d5e db $4 ; flag's bit db ($4 << 4) ; trainer's view range dw $d7e7 ; flag's byte dw Route20BattleText4 ; 0x4e44 TextBeforeBattle dw Route20AfterBattleText4 ; 0x4e4e TextAfterBattle dw Route20EndBattleText4 ; 0x4e49 TextEndBattle dw Route20EndBattleText4 ; 0x4e49 TextEndBattle ; 0x50d6a Route20TrainerHeader5: ; 0x50d6a db $5 ; flag's bit db ($3 << 4) ; trainer's view range dw $d7e7 ; flag's byte dw Route20BattleText5 ; 0x4e53 TextBeforeBattle dw Route20AfterBattleText5 ; 0x4e5d TextAfterBattle dw Route20EndBattleText5 ; 0x4e58 TextEndBattle dw Route20EndBattleText5 ; 0x4e58 TextEndBattle ; 0x50d76 Route20TrainerHeader6: ; 0x50d76 db $6 ; flag's bit db ($4 << 4) ; trainer's view range dw $d7e7 ; flag's byte dw Route20BattleText6 ; 0x4e62 TextBeforeBattle dw Route20AfterBattleText6 ; 0x4e6c TextAfterBattle dw Route20EndBattleText6 ; 0x4e67 TextEndBattle dw Route20EndBattleText6 ; 0x4e67 TextEndBattle ; 0x50d82 Route20TrainerHeader7: ; 0x50d82 db $7 ; flag's bit db ($2 << 4) ; trainer's view range dw $d7e7 ; flag's byte dw Route20BattleText7 ; 0x4e71 TextBeforeBattle dw Route20AfterBattleText7 ; 0x4e7b TextAfterBattle dw Route20EndBattleText7 ; 0x4e76 TextEndBattle dw Route20EndBattleText7 ; 0x4e76 TextEndBattle ; 0x50d8e Route20TrainerHeader8: ; 0x50d8e db $8 ; flag's bit db ($4 << 4) ; trainer's view range dw $d7e7 ; flag's byte dw Route20BattleText8 ; 0x4e80 TextBeforeBattle dw Route20AfterBattleText8 ; 0x4e8a TextAfterBattle dw Route20EndBattleText8 ; 0x4e85 TextEndBattle dw Route20EndBattleText8 ; 0x4e85 TextEndBattle ; 0x50d9a Route20TrainerHeader9: ; 0x50d9a db $9 ; flag's bit db ($3 << 4) ; trainer's view range dw $d7e7 ; flag's byte dw Route20BattleText9 ; 0x4e8f TextBeforeBattle dw Route20AfterBattleText9 ; 0x4e99 TextAfterBattle dw Route20EndBattleText9 ; 0x4e94 TextEndBattle dw Route20EndBattleText9 ; 0x4e94 TextEndBattle ; 0x50da6 Route20TrainerHeader10: ; 0x50da6 db $a ; flag's bit db ($4 << 4) ; trainer's view range dw $d7e7 ; flag's byte dw Route20BattleText10 ; 0x4e9e TextBeforeBattle dw Route20AfterBattleText10 ; 0x4ea8 TextAfterBattle dw Route20EndBattleText10 ; 0x4ea3 TextEndBattle dw Route20EndBattleText10 ; 0x4ea3 TextEndBattle ; 0x50db2 db $ff Route20Text1: ; 0x50db3 db $08 ; asm ld hl, Route20TrainerHeader0 call LoadTrainerHeader jp TextScriptEnd Route20Text2: ; 0x50dbd db $08 ; asm ld hl, Route20TrainerHeader2 call LoadTrainerHeader jp TextScriptEnd Route20Text3: ; 0x50dc7 db $08 ; asm ld hl, Route20TrainerHeader3 call LoadTrainerHeader jp TextScriptEnd Route20Text4: ; 0x50dd1 db $08 ; asm ld hl, Route20TrainerHeader4 call LoadTrainerHeader jp TextScriptEnd Route20Text5: ; 0x50ddb db $08 ; asm ld hl, Route20TrainerHeader5 call LoadTrainerHeader jp TextScriptEnd Route20Text6: ; 0x50de5 db $08 ; asm ld hl, Route20TrainerHeader6 call LoadTrainerHeader jp TextScriptEnd Route20Text7: ; 0x50def db $08 ; asm ld hl, Route20TrainerHeader7 call LoadTrainerHeader jp TextScriptEnd Route20Text8: ; 0x50df9 db $08 ; asm ld hl, Route20TrainerHeader8 call LoadTrainerHeader jp TextScriptEnd Route20Text9: ; 0x50e03 db $08 ; asm ld hl, Route20TrainerHeader9 call LoadTrainerHeader jp TextScriptEnd Route20Text10: ; 0x50e0d db $08 ; asm ld hl, Route20TrainerHeader10 call LoadTrainerHeader jp TextScriptEnd Route20BattleText1: ; 0x50e17 TX_FAR _Route20BattleText1 db $50 ; 0x50e17 + 5 bytes Route20EndBattleText1: ; 0x50e1c TX_FAR _Route20EndBattleText1 db $50 ; 0x50e1c + 5 bytes Route20AfterBattleText1: ; 0x50e21 TX_FAR _Route20AfterBattleText1 db $50 ; 0x50e21 + 5 bytes Route20BattleText2: ; 0x50e26 TX_FAR _Route20BattleText2 db $50 ; 0x50e26 + 5 bytes Route20EndBattleText2: ; 0x50e2b TX_FAR _Route20EndBattleText2 db $50 ; 0x50e2b + 5 bytes Route20AfterBattleText2: ; 0x50e30 TX_FAR _Route20AfterBattleText2 db $50 ; 0x50e30 + 5 bytes Route20BattleText3: ; 0x50e35 TX_FAR _Route20BattleText3 db $50 ; 0x50e35 + 5 bytes Route20EndBattleText3: ; 0x50e3a TX_FAR _Route20EndBattleText3 db $50 ; 0x50e3a + 5 bytes Route20AfterBattleText3: ; 0x50e3f TX_FAR _Route20AfterBattleText3 db $50 ; 0x50e3f + 5 bytes Route20BattleText4: ; 0x50e44 TX_FAR _Route20BattleText4 db $50 ; 0x50e44 + 5 bytes Route20EndBattleText4: ; 0x50e49 TX_FAR _Route20EndBattleText4 db $50 ; 0x50e49 + 5 bytes Route20AfterBattleText4: ; 0x50e4e TX_FAR _Route20AfterBattleText4 db $50 ; 0x50e4e + 5 bytes Route20BattleText5: ; 0x50e53 TX_FAR _Route20BattleText5 db $50 ; 0x50e53 + 5 bytes Route20EndBattleText5: ; 0x50e58 TX_FAR _Route20EndBattleText5 db $50 ; 0x50e58 + 5 bytes Route20AfterBattleText5: ; 0x50e5d TX_FAR _Route20AfterBattleText5 db $50 ; 0x50e5d + 5 bytes Route20BattleText6: ; 0x50e62 TX_FAR _Route20BattleText6 db $50 ; 0x50e62 + 5 bytes Route20EndBattleText6: ; 0x50e67 TX_FAR _Route20EndBattleText6 db $50 ; 0x50e67 + 5 bytes Route20AfterBattleText6: ; 0x50e6c TX_FAR _Route20AfterBattleText6 db $50 ; 0x50e6c + 5 bytes Route20BattleText7: ; 0x50e71 TX_FAR _Route20BattleText7 db $50 ; 0x50e71 + 5 bytes Route20EndBattleText7: ; 0x50e76 TX_FAR _Route20EndBattleText7 db $50 ; 0x50e76 + 5 bytes Route20AfterBattleText7: ; 0x50e7b TX_FAR _Route20AfterBattleText7 db $50 ; 0x50e7b + 5 bytes Route20BattleText8: ; 0x50e80 TX_FAR _Route20BattleText8 db $50 ; 0x50e80 + 5 bytes Route20EndBattleText8: ; 0x50e85 TX_FAR _Route20EndBattleText8 db $50 ; 0x50e85 + 5 bytes Route20AfterBattleText8: ; 0x50e8a TX_FAR _Route20AfterBattleText8 db $50 ; 0x50e8a + 5 bytes Route20BattleText9: ; 0x50e8f TX_FAR _Route20BattleText9 db $50 ; 0x50e8f + 5 bytes Route20EndBattleText9: ; 0x50e94 TX_FAR _Route20EndBattleText9 db $50 ; 0x50e94 + 5 bytes Route20AfterBattleText9: ; 0x50e99 TX_FAR _Route20AfterBattleText9 db $50 ; 0x50e99 + 5 bytes Route20BattleText10: ; 0x50e9e TX_FAR _Route20BattleText10 db $50 ; 0x50e9e + 5 bytes Route20EndBattleText10: ; 0x50ea3 TX_FAR _Route20EndBattleText10 db $50 ; 0x50ea3 + 5 bytes Route20AfterBattleText10: ; 0x50ea8 TX_FAR _Route20AfterBattleText10 db $50 ; 0x50ea8 + 5 bytes Route20Text12: Route20Text11: ; 0x50ead TX_FAR _Route20Text11 db $50 Route22Script: ; 0x50eb2 call $3c3c ld hl, Route22Scripts ld a, [$d60a] jp $3d97 ; 0x50ebe Route22Scripts: ; 0x50ebe dw Route22Script0, Route22Script1, Route22Script2, Route22Script3 INCBIN "baserom.gbc",$50ec6,$3a Route22Script0: ; 0x50f00 ld a, [$d7eb] bit 7, a ret z ld hl, $4f2d call $34bf ret nc ld a, [$cd3d] ld [$cf0d], a xor a ld [$ff00+$b4], a ld a, $f0 ld [$cd6b], a ld a, $2 ld [$d528], a ld a, [$d7eb] bit 0, a jr nz, .asm_50f32 ; 0x50f25 $b bit 1, a jp nz, $504e ret inc b dec e dec b dec e rst $38 .asm_50f32 ld a, $1 ld [$cd4f], a xor a ld [$cd50], a ld a, $4c call Predef ld a, [$d700] and a jr z, .asm_50f4e ; 0x50f44 $8 ld a, $ff ld [$c0ee], a call $23b1 .asm_50f4e ld c, $2 ld a, $de call $23a1 ld a, $1 ld [$ff00+$8c], a call $4ee6 ld a, $1 ld [$d60a], a ret ; 0x50f62 Route22Script1: ; 0x50f62 ld a, [$d730] bit 0, a ret nz ld a, [$cf0d] cp $1 jr nz, .asm_50f78 ; 0x50f6d $9 ld a, $4 ld [$d528], a ld a, $4 jr .asm_50f7a ; 0x50f76 $2 .asm_50f78 ld a, $c .asm_50f7a ld [$ff00+$8d], a ld a, $1 ld [$ff00+$8c], a call $34a6 xor a ld [$cd6b], a ld a, $1 ld [$ff00+$8c], a call $2920 ld hl, $d72d set 6, [hl] set 7, [hl] ld hl, UnnamedText_511b7 ld de, UnnamedText_511bc call $3354 ld a, $e1 ld [$d059], a ld hl, $4faf call $4ed6 ld a, $2 ld [$d60a], a ret ; 0x50faf INCBIN "baserom.gbc",$50faf,$50fb5 - $50faf Route22Script2: ; 0x50fb5 ld a, [$d057] cp $ff jp z, $4ece ld a, [$c109] and a jr nz, .asm_50fc7 ; 0x50fc1 $4 ld a, $4 jr .asm_50fc9 ; 0x50fc5 $2 .asm_50fc7 ld a, $c .asm_50fc9 ld [$ff00+$8d], a ld a, $1 ld [$ff00+$8c], a call $34a6 ld a, $f0 ld [$cd6b], a ld hl, $d7eb set 5, [hl] ld a, $1 ld [$ff00+$8c], a call $2920 ld a, $ff ld [$c0ee], a call $23b1 ld b, $2 ld hl, $5b47 call Bankswitch ld a, [$cf0d] cp $1 jr nz, .asm_50fff ; 0x50ff8 $5 call $5008 jr .asm_51002 ; 0x50ffd $3 .asm_50fff call $500d .asm_51002 ld a, $3 ld [$d60a], a ret ; 0x51008 INCBIN "baserom.gbc",$51008,$5102a - $51008 Route22Script3: ; 0x5102a ld a, [$d730] bit 0, a ret nz xor a ld [$cd6b], a ld a, $22 ld [$cc4d], a ld a, $11 call Predef call $2307 ld hl, $d7eb res 0, [hl] res 7, [hl] ld a, $0 ld [$d60a], a ret ; 0x5104e INCBIN "baserom.gbc",$5104e,$127 Route22Texts: ; 0x51175 dw Route22Text1, Route22Text2, Route22Text3 Route22Text1: ; 0x5117b db $08 ; asm ld a, [$d7eb] bit 5, a jr z, .asm_a88cf ; 0x51181 ld hl, UnnamedText_511b2 call PrintText jr .asm_48088 ; 0x51189 .asm_a88cf ; 0x5118b ld hl, UnnamedText_511ad call PrintText .asm_48088 ; 0x51191 jp TextScriptEnd Route22Text2: ; 0x51194 db $08 ; asm ld a, [$d7eb] bit 6, a jr z, .asm_58c0a ; 0x5119a ld hl, UnnamedText_511c6 call PrintText jr .asm_673ee ; 0x511a2 .asm_58c0a ; 0x511a4 ld hl, UnnamedText_511c1 call PrintText .asm_673ee ; 0x511aa jp TextScriptEnd UnnamedText_511ad: ; 0x511ad TX_FAR _UnnamedText_511ad db $50 ; 0x511ad + 5 bytes UnnamedText_511b2: ; 0x511b2 TX_FAR _UnnamedText_511b2 db $50 ; 0x511b2 + 5 bytes UnnamedText_511b7: ; 0x511b7 TX_FAR _UnnamedText_511b7 db $50 ; 0x511b7 + 5 bytes UnnamedText_511bc: ; 0x511bc TX_FAR _UnnamedText_511bc db $50 ; 0x511bc + 5 bytes UnnamedText_511c1: ; 0x511c1 TX_FAR _UnnamedText_511c1 db $50 ; 0x511c1 + 5 bytes UnnamedText_511c6: ; 0x511c6 TX_FAR _UnnamedText_511c6 db $50 ; 0x511c6 + 5 bytes UnnamedText_511cb: ; 0x511cb TX_FAR _UnnamedText_511cb db $50 ; 0x511cb + 5 bytes UnnamedText_511d0: ; 0x511d0 TX_FAR _UnnamedText_511d0 db $50 ; 0x511d0 + 5 bytes Route22Text3: ; 0x511d5 TX_FAR _Route22Text3 db $50 Route23Script: ; 0x511da call $51e9 call $3c3c ld hl, Route23Scripts ld a, [$d667] jp $3d97 ; 0x511e9 INCBIN "baserom.gbc",$511e9,$51213 - $511e9 Route23Scripts: ; 0x51213 dw Route23Script0, Route23Script1, Route23Script2 Route23Script0: ; 0x51219 ld hl, $5255 ld a, [$d361] ld b, a ld e, $0 ld c, $7 .asm_51224 ld a, [hli] cp $ff ret z inc e dec c cp b jr nz, .asm_51224 ; 0x5122b $f7 cp $23 jr nz, .asm_51237 ; 0x5122f $6 ld a, [$d362] cp $e ret nc .asm_51237 ld a, e ld [$ff00+$8c], a ld a, c ld [$cd3d], a ld b, $2 ld hl, $d7ed ld a, $10 call Predef ld a, c and a ret nz call $525d call $2920 xor a ld [$ff00+$b4], a ret ; 0x51255 INCBIN "baserom.gbc",$51255,$512ec - $51255 Route23Script1: ; 0x512ec ld a, [$cd38] and a ret nz Route23Script2: ; 0x512f1 ld a, $0 ld [$d667], a ret ; 0x512f7 Route23Texts: ; 0x512f7 dw Route23Text1, Route23Text2, Route23Text3, Route23Text4, Route23Text5, Route23Text6, Route23Text7, Route23Text8 Route23Text1: ; 0x51307 db $08 ; asm ld a, $6 call $5346 jp TextScriptEnd Route23Text2: ; 0x51310 db $08 ; asm ld a, $5 call $5346 jp TextScriptEnd Route23Text3: ; 0x51319 db $08 ; asm ld a, $4 call $5346 jp TextScriptEnd Route23Text4: ; 0x51322 db $08 ; asm ld a, $3 call $5346 jp TextScriptEnd Route23Text5: ; 0x5132b db $08 ; asm ld a, $2 call $5346 jp TextScriptEnd Route23Text6: ; 0x51334 db $08 ; asm ld a, $1 call $5346 jp TextScriptEnd Route23Text7: ; 0x5133d db $8 ld a, $0 call $5346 jp TextScriptEnd ; 0x51346 INCBIN "baserom.gbc",$51346,$513a3 - $51346 UnnamedText_513a3: ; 0x513a3 TX_FAR _UnnamedText_513a3 db $50 ; 0x513a3 + 5 bytes Route23Text8: ; 0x513a8 TX_FAR _Route23Text8 db $50 Route24Script: ; 0x513ad call $3c3c ld hl, Route24TrainerHeaders ld de, $53cb ld a, [$d602] call $3160 ld [$d602], a ret ; 0x513c0 INCBIN "baserom.gbc",$513c0,$8b Route24Texts: ; 0x5144b dw Route24Text1, Route24Text2, Route24Text3, Route24Text4, Route24Text5, Route24Text6, Route24Text7, Route24Text8 Route24TrainerHeaders: Route24TrainerHeader0: ; 0x5145b db $2 ; flag's bit db ($4 << 4) ; trainer's view range dw $d7ef ; flag's byte dw Route24BattleText1 ; 0x5571 TextBeforeBattle dw Route24AfterBattleText1 ; 0x557b TextAfterBattle dw Route24EndBattleText1 ; 0x5576 TextEndBattle dw Route24EndBattleText1 ; 0x5576 TextEndBattle ; 0x51467 Route24TrainerHeader2: ; 0x51467 db $3 ; flag's bit db ($1 << 4) ; trainer's view range dw $d7ef ; flag's byte dw Route24BattleText2 ; 0x5580 TextBeforeBattle dw Route24AfterBattleText2 ; 0x558a TextAfterBattle dw Route24EndBattleText2 ; 0x5585 TextEndBattle dw Route24EndBattleText2 ; 0x5585 TextEndBattle ; 0x51473 Route24TrainerHeader3: ; 0x51473 db $4 ; flag's bit db ($1 << 4) ; trainer's view range dw $d7ef ; flag's byte dw Route24BattleText3 ; 0x558f TextBeforeBattle dw Route24AfterBattleText3 ; 0x5599 TextAfterBattle dw Route24EndBattleText3 ; 0x5594 TextEndBattle dw Route24EndBattleText3 ; 0x5594 TextEndBattle ; 0x5147f Route24TrainerHeader4: ; 0x5147f db $5 ; flag's bit db ($1 << 4) ; trainer's view range dw $d7ef ; flag's byte dw Route24BattleText4 ; 0x559e TextBeforeBattle dw Route24AfterBattleText4 ; 0x55a8 TextAfterBattle dw Route24EndBattleText4 ; 0x55a3 TextEndBattle dw Route24EndBattleText4 ; 0x55a3 TextEndBattle ; 0x5148b Route24TrainerHeader5: ; 0x5148b db $6 ; flag's bit db ($1 << 4) ; trainer's view range dw $d7ef ; flag's byte dw Route24BattleText5 ; 0x55ad TextBeforeBattle dw Route24AfterBattleText5 ; 0x55b7 TextAfterBattle dw Route24EndBattleText5 ; 0x55b2 TextEndBattle dw Route24EndBattleText5 ; 0x55b2 TextEndBattle ; 0x51497 Route24TrainerHeader6: ; 0x51497 db $7 ; flag's bit db ($1 << 4) ; trainer's view range dw $d7ef ; flag's byte dw Route24BattleText6 ; 0x55bc TextBeforeBattle dw Route24AfterBattleText6 ; 0x55c6 TextAfterBattle dw Route24EndBattleText6 ; 0x55c1 TextEndBattle dw Route24EndBattleText6 ; 0x55c1 TextEndBattle ; 0x514a3 db $ff Route24Text1: ; 0x514a4 db $8 ld hl, $d7f0 res 1, [hl] ld a, [$d7ef] bit 0, a jr nz, .asm_a03f5 ; 0x514af $48 ld hl, UnnamedText_51510 call PrintText ld bc, $3101 call GiveItem jr nc, .asm_3a23d ; 0x514bd $43 ld hl, $d7ef set 0, [hl] ld hl, UnnamedText_5151a call PrintText ld hl, UnnamedText_51526 call PrintText ld hl, $d72d set 6, [hl] set 7, [hl] ld hl, UnnamedText_5152b ld de, UnnamedText_5152b call $3354 ld a, [$ff00+$8c] ld [$cf13], a call $336a call $32d7 xor a ld [$ff00+$b4], a ld a, $3 ld [$d602], a ld [$da39], a jp TextScriptEnd .asm_a03f5 ; 0x514f9 ld hl, UnnamedText_51530 call PrintText jp TextScriptEnd .asm_3a23d ; 0x51502 ld hl, UnnamedText_51521 call PrintText ld hl, $d7f0 set 1, [hl] jp TextScriptEnd ; 0x51510 UnnamedText_51510: ; 0x51510 TX_FAR _UnnamedText_51510 ; 0x92721 db $0B TX_FAR _UnnamedText_51515 ; 0x92755 db $50 ; 0x5151a UnnamedText_5151a: ; 0x5151a TX_FAR _UnnamedText_5151a ; 0x92779 db $0B, $6, $50 UnnamedText_51521: ; 0x51521 TX_FAR _UnnamedText_51521 db $50 ; 0x51521 + 5 bytes UnnamedText_51526: ; 0x51526 TX_FAR _UnnamedText_51526 db $50 ; 0x51526 + 5 bytes UnnamedText_5152b: ; 0x5152b TX_FAR _UnnamedText_5152b db $50 ; 0x5152b + 5 bytes UnnamedText_51530: ; 0x51530 TX_FAR _UnnamedText_51530 db $50 ; 0x51530 + 5 bytes Route24Text2: ; 0x51535 db $08 ; asm ld hl, Route24TrainerHeader0 call LoadTrainerHeader jp TextScriptEnd Route24Text3: ; 0x5153f db $08 ; asm ld hl, Route24TrainerHeader2 call LoadTrainerHeader jp TextScriptEnd Route24Text4: ; 0x51549 db $08 ; asm ld hl, Route24TrainerHeader3 call LoadTrainerHeader jp TextScriptEnd Route24Text5: ; 0x51553 db $08 ; asm ld hl, Route24TrainerHeader4 call LoadTrainerHeader jp TextScriptEnd Route24Text6: ; 0x5155d db $08 ; asm ld hl, Route24TrainerHeader5 call LoadTrainerHeader jp TextScriptEnd Route24Text7: ; 0x51567 db $08 ; asm ld hl, Route24TrainerHeader6 call LoadTrainerHeader jp TextScriptEnd Route24BattleText1: ; 0x51571 TX_FAR _Route24BattleText1 db $50 ; 0x51571 + 5 bytes Route24EndBattleText1: ; 0x51576 TX_FAR _Route24EndBattleText1 db $50 ; 0x51576 + 5 bytes Route24AfterBattleText1: ; 0x5157b TX_FAR _Route24AfterBattleText1 db $50 ; 0x5157b + 5 bytes Route24BattleText2: ; 0x51580 TX_FAR _Route24BattleText2 db $50 ; 0x51580 + 5 bytes Route24EndBattleText2: ; 0x51585 TX_FAR _Route24EndBattleText2 db $50 ; 0x51585 + 5 bytes Route24AfterBattleText2: ; 0x5158a TX_FAR _Route24AfterBattleText2 db $50 ; 0x5158a + 5 bytes Route24BattleText3: ; 0x5158f TX_FAR _Route24BattleText3 db $50 ; 0x5158f + 5 bytes Route24EndBattleText3: ; 0x51594 TX_FAR _Route24EndBattleText3 db $50 ; 0x51594 + 5 bytes Route24AfterBattleText3: ; 0x51599 TX_FAR _Route24AfterBattleText3 db $50 ; 0x51599 + 5 bytes Route24BattleText4: ; 0x5159e TX_FAR _Route24BattleText4 db $50 ; 0x5159e + 5 bytes Route24EndBattleText4: ; 0x515a3 TX_FAR _Route24EndBattleText4 db $50 ; 0x515a3 + 5 bytes Route24AfterBattleText4: ; 0x515a8 TX_FAR _Route24AfterBattleText4 db $50 ; 0x515a8 + 5 bytes Route24BattleText5: ; 0x515ad TX_FAR _Route24BattleText5 db $50 ; 0x515ad + 5 bytes Route24EndBattleText5: ; 0x515b2 TX_FAR _Route24EndBattleText5 db $50 ; 0x515b2 + 5 bytes Route24AfterBattleText5: ; 0x515b7 TX_FAR _Route24AfterBattleText5 db $50 ; 0x515b7 + 5 bytes Route24BattleText6: ; 0x515bc TX_FAR _Route24BattleText6 db $50 ; 0x515bc + 5 bytes Route24EndBattleText6: ; 0x515c1 TX_FAR _Route24EndBattleText6 db $50 ; 0x515c1 + 5 bytes Route24AfterBattleText6: ; 0x515c6 TX_FAR _Route24AfterBattleText6 db $50 ; 0x515c6 + 5 bytes Route25Script: ; 0x515cb call Unknown_515e1 call $3c3c ld hl, Route25TrainerHeaders ld de, $5622 ld a, [$d603] call $3160 ld [$d603], a ret ; 0x515e1 Unknown_515e1: ; 0x515e1 INCBIN "baserom.gbc",$515e1,$47 Route25Texts: ; 0x51628 dw Route25Text1, Route25Text2, Route25Text3, Route25Text4, Route25Text5, Route25Text6, Route25Text7, Route25Text8, Route25Text9, Route25Text10, Route25Text11 Route25TrainerHeaders: Route25TrainerHeader0: ; 0x5163e db $1 ; flag's bit db ($2 << 4) ; trainer's view range dw $d7f1 ; flag's byte dw Route25BattleText1 ; 0x5705 TextBeforeBattle dw Route25AfterBattleText1 ; 0x570f TextAfterBattle dw Route25EndBattleText1 ; 0x570a TextEndBattle dw Route25EndBattleText1 ; 0x570a TextEndBattle ; 0x5164a Route25TrainerHeader2: ; 0x5164a db $2 ; flag's bit db ($3 << 4) ; trainer's view range dw $d7f1 ; flag's byte dw Route25BattleText2 ; 0x5714 TextBeforeBattle dw Route25AfterBattleText2 ; 0x571e TextAfterBattle dw Route25EndBattleText2 ; 0x5719 TextEndBattle dw Route25EndBattleText2 ; 0x5719 TextEndBattle ; 0x51656 Route25TrainerHeader3: ; 0x51656 db $3 ; flag's bit db ($3 << 4) ; trainer's view range dw $d7f1 ; flag's byte dw Route25BattleText3 ; 0x5723 TextBeforeBattle dw Route25AfterBattleText3 ; 0x572d TextAfterBattle dw Route25EndBattleText3 ; 0x5728 TextEndBattle dw Route25EndBattleText3 ; 0x5728 TextEndBattle ; 0x51662 Route25TrainerHeader4: ; 0x51662 db $4 ; flag's bit db ($2 << 4) ; trainer's view range dw $d7f1 ; flag's byte dw Route25BattleText4 ; 0x5732 TextBeforeBattle dw Route25AfterBattleText4 ; 0x573c TextAfterBattle dw Route25EndBattleText4 ; 0x5737 TextEndBattle dw Route25EndBattleText4 ; 0x5737 TextEndBattle ; 0x5166e Route25TrainerHeader5: ; 0x5166e db $5 ; flag's bit db ($4 << 4) ; trainer's view range dw $d7f1 ; flag's byte dw Route25BattleText5 ; 0x5741 TextBeforeBattle dw Route25AfterBattleText5 ; 0x574b TextAfterBattle dw Route25EndBattleText5 ; 0x5746 TextEndBattle dw Route25EndBattleText5 ; 0x5746 TextEndBattle ; 0x5167a Route25TrainerHeader6: ; 0x5167a db $6 ; flag's bit db ($4 << 4) ; trainer's view range dw $d7f1 ; flag's byte dw Route25BattleText6 ; 0x5750 TextBeforeBattle dw Route25AfterBattleText6 ; 0x575a TextAfterBattle dw Route25EndBattleText6 ; 0x5755 TextEndBattle dw Route25EndBattleText6 ; 0x5755 TextEndBattle ; 0x51686 Route25TrainerHeader7: ; 0x51686 db $7 ; flag's bit db ($3 << 4) ; trainer's view range dw $d7f1 ; flag's byte dw Route25BattleText7 ; 0x575f TextBeforeBattle dw Route25AfterBattleText7 ; 0x5769 TextAfterBattle dw Route25EndBattleText7 ; 0x5764 TextEndBattle dw Route25EndBattleText7 ; 0x5764 TextEndBattle ; 0x51692 Route25TrainerHeader8: ; 0x51692 db $8 ; flag's bit db ($2 << 4) ; trainer's view range dw $d7f1 ; flag's byte dw Route25BattleText8 ; 0x576e TextBeforeBattle dw Route25AfterBattleText8 ; 0x5778 TextAfterBattle dw Route25EndBattleText8 ; 0x5773 TextEndBattle dw Route25EndBattleText8 ; 0x5773 TextEndBattle ; 0x5169e Route25TrainerHeader9: ; 0x5169e db $9 ; flag's bit db ($2 << 4) ; trainer's view range dw $d7f1 ; flag's byte dw Route25BattleText9 ; 0x577d TextBeforeBattle dw Route25AfterBattleText9 ; 0x5787 TextAfterBattle dw Route25EndBattleText9 ; 0x5782 TextEndBattle dw Route25EndBattleText9 ; 0x5782 TextEndBattle ; 0x516aa db $ff Route25Text1: ; 0x516ab db $08 ; asm ld hl, Route25TrainerHeader0 call LoadTrainerHeader jp TextScriptEnd Route25Text2: ; 0x516b5 db $08 ; asm ld hl, Route25TrainerHeader2 call LoadTrainerHeader jp TextScriptEnd Route25Text3: ; 0x516bf db $08 ; asm ld hl, Route25TrainerHeader3 call LoadTrainerHeader jp TextScriptEnd Route25Text4: ; 0x516c9 db $08 ; asm ld hl, Route25TrainerHeader4 call LoadTrainerHeader jp TextScriptEnd Route25Text5: ; 0x516d3 db $08 ; asm ld hl, Route25TrainerHeader5 call LoadTrainerHeader jp TextScriptEnd Route25Text6: ; 0x516dd db $08 ; asm ld hl, Route25TrainerHeader6 call LoadTrainerHeader jp TextScriptEnd Route25Text7: ; 0x516e7 db $08 ; asm ld hl, Route25TrainerHeader7 call LoadTrainerHeader jp TextScriptEnd Route25Text8: ; 0x516f1 db $08 ; asm ld hl, Route25TrainerHeader8 call LoadTrainerHeader jp TextScriptEnd Route25Text9: ; 0x516fb db $08 ; asm ld hl, Route25TrainerHeader9 call LoadTrainerHeader jp TextScriptEnd Route25BattleText1: ; 0x51705 TX_FAR _Route25BattleText1 db $50 ; 0x51705 + 5 bytes Route25EndBattleText1: ; 0x5170a TX_FAR _Route25EndBattleText1 db $50 ; 0x5170a + 5 bytes Route25AfterBattleText1: ; 0x5170f TX_FAR _Route25AfterBattleText1 db $50 ; 0x5170f + 5 bytes Route25BattleText2: ; 0x51714 TX_FAR _Route25BattleText2 db $50 ; 0x51714 + 5 bytes Route25EndBattleText2: ; 0x51719 TX_FAR _Route25EndBattleText2 db $50 ; 0x51719 + 5 bytes Route25AfterBattleText2: ; 0x5171e TX_FAR _Route25AfterBattleText2 db $50 ; 0x5171e + 5 bytes Route25BattleText3: ; 0x51723 TX_FAR _Route25BattleText3 db $50 ; 0x51723 + 5 bytes Route25EndBattleText3: ; 0x51728 TX_FAR _Route25EndBattleText3 db $50 ; 0x51728 + 5 bytes Route25AfterBattleText3: ; 0x5172d TX_FAR _Route25AfterBattleText3 db $50 ; 0x5172d + 5 bytes Route25BattleText4: ; 0x51732 TX_FAR _Route25BattleText4 db $50 ; 0x51732 + 5 bytes Route25EndBattleText4: ; 0x51737 TX_FAR _Route25EndBattleText4 db $50 ; 0x51737 + 5 bytes Route25AfterBattleText4: ; 0x5173c TX_FAR _Route25AfterBattleText4 db $50 ; 0x5173c + 5 bytes Route25BattleText5: ; 0x51741 TX_FAR _Route25BattleText5 db $50 ; 0x51741 + 5 bytes Route25EndBattleText5: ; 0x51746 TX_FAR _Route25EndBattleText5 db $50 ; 0x51746 + 5 bytes Route25AfterBattleText5: ; 0x5174b TX_FAR _Route25AfterBattleText5 db $50 ; 0x5174b + 5 bytes Route25BattleText6: ; 0x51750 TX_FAR _Route25BattleText6 db $50 ; 0x51750 + 5 bytes Route25EndBattleText6: ; 0x51755 TX_FAR _Route25EndBattleText6 db $50 ; 0x51755 + 5 bytes Route25AfterBattleText6: ; 0x5175a TX_FAR _Route25AfterBattleText6 db $50 ; 0x5175a + 5 bytes Route25BattleText7: ; 0x5175f TX_FAR _Route25BattleText7 db $50 ; 0x5175f + 5 bytes Route25EndBattleText7: ; 0x51764 TX_FAR _Route25EndBattleText7 db $50 ; 0x51764 + 5 bytes Route25AfterBattleText7: ; 0x51769 TX_FAR _Route25AfterBattleText7 db $50 ; 0x51769 + 5 bytes Route25BattleText8: ; 0x5176e TX_FAR _Route25BattleText8 db $50 ; 0x5176e + 5 bytes Route25EndBattleText8: ; 0x51773 TX_FAR _Route25EndBattleText8 db $50 ; 0x51773 + 5 bytes Route25AfterBattleText8: ; 0x51778 TX_FAR _Route25AfterBattleText8 db $50 ; 0x51778 + 5 bytes Route25BattleText9: ; 0x5177d TX_FAR _Route25BattleText9 db $50 ; 0x5177d + 5 bytes Route25EndBattleText9: ; 0x51782 TX_FAR _Route25EndBattleText9 db $50 ; 0x51782 + 5 bytes Route25AfterBattleText9: ; 0x51787 TX_FAR _Route25AfterBattleText9 db $50 ; 0x51787 + 5 bytes Route25Text11: ; 0x5178c TX_FAR _Route25Text11 db $50 VictoryRoad2_h: ; 0x51791 to 0x5179d (12 bytes) (id=194) db $11 ; tileset db VICTORY_ROAD_2_HEIGHT, VICTORY_ROAD_2_WIDTH ; dimensions (y, x) dw VictoryRoad2Blocks, VictoryRoad2Texts, VictoryRoad2Script ; blocks, texts, scripts db $00 ; connections dw VictoryRoad2Object ; objects VictoryRoad2Script: ; 0x5179d ld hl, $d126 bit 6, [hl] res 6, [hl] call nz, VictoryRoad2Script_Unknown517c4 ld hl, $d126 bit 5, [hl] res 5, [hl] call nz, $57c9 call $3c3c ld hl, VictoryRoad2TrainerHeaders ld de, $57eb ld a, [$d63f] call $3160 ld [$d63f], a ret ; 0x517c4 VictoryRoad2Script_Unknown517c4: ; 0x517c4 INCBIN "baserom.gbc",$517c4,$57 VictoryRoad2Texts: ; 0x5181b dw VictoryRoad2Text1, VictoryRoad2Text2, VictoryRoad2Text3, VictoryRoad2Text4, VictoryRoad2Text5, VictoryRoad2Text6, VictoryRoad2Text7, VictoryRoad2Text8, VictoryRoad2Text9, VictoryRoad2Text10, VictoryRoad2Text11, VictoryRoad2Text12, VictoryRoad2Text13 VictoryRoad2TrainerHeaders: VictoryRoad2TrainerHeader0: ; 0x51835 db $1 ; flag's bit db ($4 << 4) ; trainer's view range dw $d7ee ; flag's byte dw VictoryRoad2BattleText1 ; 0x58ca TextBeforeBattle dw VictoryRoad2AfterBattleText1 ; 0x58d4 TextAfterBattle dw VictoryRoad2EndBattleText1 ; 0x58cf TextEndBattle dw VictoryRoad2EndBattleText1 ; 0x58cf TextEndBattle ; 0x51841 VictoryRoad2TrainerHeader2: ; 0x51841 db $2 ; flag's bit db ($3 << 4) ; trainer's view range dw $d7ee ; flag's byte dw VictoryRoad2BattleText2 ; 0x58d9 TextBeforeBattle dw VictoryRoad2AfterBattleText2 ; 0x58e3 TextAfterBattle dw VictoryRoad2EndBattleText2 ; 0x58de TextEndBattle dw VictoryRoad2EndBattleText2 ; 0x58de TextEndBattle ; 0x5184d VictoryRoad2TrainerHeader3: ; 0x5184d db $3 ; flag's bit db ($3 << 4) ; trainer's view range dw $d7ee ; flag's byte dw VictoryRoad2BattleText3 ; 0x58e8 TextBeforeBattle dw VictoryRoad2AfterBattleText3 ; 0x58f2 TextAfterBattle dw VictoryRoad2EndBattleText3 ; 0x58ed TextEndBattle dw VictoryRoad2EndBattleText3 ; 0x58ed TextEndBattle ; 0x51859 VictoryRoad2TrainerHeader4: ; 0x51859 db $4 ; flag's bit db ($1 << 4) ; trainer's view range dw $d7ee ; flag's byte dw VictoryRoad2BattleText4 ; 0x58f7 TextBeforeBattle dw VictoryRoad2AfterBattleText4 ; 0x5901 TextAfterBattle dw VictoryRoad2EndBattleText4 ; 0x58fc TextEndBattle dw VictoryRoad2EndBattleText4 ; 0x58fc TextEndBattle ; 0x51865 VictoryRoad2TrainerHeader5: ; 0x51865 db $5 ; flag's bit db ($3 << 4) ; trainer's view range dw $d7ee ; flag's byte dw VictoryRoad2BattleText5 ; 0x5906 TextBeforeBattle dw VictoryRoad2AfterBattleText5 ; 0x5910 TextAfterBattle dw VictoryRoad2EndBattleText5 ; 0x590b TextEndBattle dw VictoryRoad2EndBattleText5 ; 0x590b TextEndBattle ; 0x51871 VictoryRoad2TrainerHeader6: ; 0x51871 db $6 ; flag's bit db ($0 << 4) ; trainer's view range dw $d7ee ; flag's byte dw VictoryRoad2BattleText6 ; 0x58ba TextBeforeBattle dw VictoryRoad2BattleText6 ; 0x58ba TextAfterBattle dw VictoryRoad2BattleText6 ; 0x58ba TextEndBattle dw VictoryRoad2BattleText6 ; 0x58ba TextEndBattle ; 0x5187d db $ff VictoryRoad2Text1: ; 0x5187e db $08 ; asm ld hl, VictoryRoad2TrainerHeader0 call LoadTrainerHeader jp TextScriptEnd VictoryRoad2Text2: ; 0x51888 db $08 ; asm ld hl, VictoryRoad2TrainerHeader2 call LoadTrainerHeader jp TextScriptEnd VictoryRoad2Text3: ; 0x51892 db $08 ; asm ld hl, VictoryRoad2TrainerHeader3 call LoadTrainerHeader jp TextScriptEnd VictoryRoad2Text4: ; 0x5189c db $08 ; asm ld hl, VictoryRoad2TrainerHeader4 call LoadTrainerHeader jp TextScriptEnd VictoryRoad2Text5: ; 0x518a6 db $08 ; asm ld hl, VictoryRoad2TrainerHeader5 call LoadTrainerHeader jp TextScriptEnd VictoryRoad2Text6: ; 0x518b0 db $08 ; asm ld hl, VictoryRoad2TrainerHeader6 call LoadTrainerHeader jp TextScriptEnd VictoryRoad2BattleText6: ; 0x518ba TX_FAR _VictoryRoad2BattleText6 ; 0x8d06e db $8 ld a, $49 call $13d0 call $3748 jp TextScriptEnd ; 0x518ca VictoryRoad2BattleText1: ; 0x518ca TX_FAR _VictoryRoad2BattleText1 db $50 ; 0x518ca + 5 bytes VictoryRoad2EndBattleText1: ; 0x518cf TX_FAR _VictoryRoad2EndBattleText1 db $50 ; 0x518cf + 5 bytes VictoryRoad2AfterBattleText1: ; 0x518d4 TX_FAR _VictoryRoad2AfterBattleText1 db $50 ; 0x518d4 + 5 bytes VictoryRoad2BattleText2: ; 0x518d9 TX_FAR _VictoryRoad2BattleText2 db $50 ; 0x518d9 + 5 bytes VictoryRoad2EndBattleText2: ; 0x518de TX_FAR _VictoryRoad2EndBattleText2 db $50 ; 0x518de + 5 bytes VictoryRoad2AfterBattleText2: ; 0x518e3 TX_FAR _VictoryRoad2AfterBattleText2 db $50 ; 0x518e3 + 5 bytes VictoryRoad2BattleText3: ; 0x518e8 TX_FAR _VictoryRoad2BattleText3 db $50 ; 0x518e8 + 5 bytes VictoryRoad2EndBattleText3: ; 0x518ed TX_FAR _VictoryRoad2EndBattleText3 db $50 ; 0x518ed + 5 bytes VictoryRoad2AfterBattleText3: ; 0x518f2 TX_FAR _VictoryRoad2AfterBattleText3 db $50 ; 0x518f2 + 5 bytes VictoryRoad2BattleText4: ; 0x518f7 TX_FAR _VictoryRoad2BattleText4 db $50 ; 0x518f7 + 5 bytes VictoryRoad2EndBattleText4: ; 0x518fc TX_FAR _VictoryRoad2EndBattleText4 db $50 ; 0x518fc + 5 bytes VictoryRoad2AfterBattleText4: ; 0x51901 TX_FAR _VictoryRoad2AfterBattleText4 db $50 ; 0x51901 + 5 bytes VictoryRoad2BattleText5: ; 0x51906 TX_FAR _VictoryRoad2BattleText5 db $50 ; 0x51906 + 5 bytes VictoryRoad2EndBattleText5: ; 0x5190b TX_FAR _VictoryRoad2EndBattleText5 db $50 ; 0x5190b + 5 bytes VictoryRoad2AfterBattleText5: ; 0x51910 TX_FAR _VictoryRoad2AfterBattleText5 db $50 ; 0x51910 + 5 bytes VictoryRoad2Object: ; 0x51915 (size=154) db $7d ; border tile db $7 ; warps db $8, $0, $2, VICTORY_ROAD_1 db $7, $1d, $3, $ff db $8, $1d, $3, $ff db $7, $17, $0, VICTORY_ROAD_3 db $e, $19, $2, VICTORY_ROAD_3 db $7, $1b, $1, VICTORY_ROAD_3 db $1, $1, $3, VICTORY_ROAD_3 db $0 ; signs db $d ; people db SPRITE_HIKER, $9 + 4, $c + 4, $ff, $d2, $41, BLACKBELT + $C8, $9 ; trainer db SPRITE_BLACK_HAIR_BOY_2, $d + 4, $15 + 4, $ff, $d2, $42, JUGGLER + $C8, $2 ; trainer db SPRITE_BLACK_HAIR_BOY_1, $8 + 4, $13 + 4, $ff, $d0, $43, TAMER + $C8, $5 ; trainer db SPRITE_BLACK_HAIR_BOY_2, $2 + 4, $4 + 4, $ff, $d0, $44, POKEMANIAC + $C8, $6 ; trainer db SPRITE_BLACK_HAIR_BOY_2, $3 + 4, $1a + 4, $ff, $d2, $45, JUGGLER + $C8, $5 ; trainer db SPRITE_BIRD, $5 + 4, $b + 4, $ff, $d1, $46, MOLTRES, $32 ; trainer db SPRITE_BALL, $5 + 4, $1b + 4, $ff, $ff, $87, TM_17 ; item db SPRITE_BALL, $9 + 4, $12 + 4, $ff, $ff, $88, FULL_HEAL ; item db SPRITE_BALL, $b + 4, $9 + 4, $ff, $ff, $89, TM_05 ; item db SPRITE_BALL, $0 + 4, $b + 4, $ff, $ff, $8a, GUARD_SPEC_ ; item db SPRITE_BOULDER, $e + 4, $4 + 4, $ff, $10, $b ; person db SPRITE_BOULDER, $5 + 4, $5 + 4, $ff, $10, $c ; person db SPRITE_BOULDER, $10 + 4, $17 + 4, $ff, $10, $d ; person ; warp-to EVENT_DISP $f, $8, $0 ; VICTORY_ROAD_1 EVENT_DISP $f, $7, $1d EVENT_DISP $f, $8, $1d EVENT_DISP $f, $7, $17 ; VICTORY_ROAD_3 EVENT_DISP $f, $e, $19 ; VICTORY_ROAD_3 EVENT_DISP $f, $7, $1b ; VICTORY_ROAD_3 EVENT_DISP $f, $1, $1 ; VICTORY_ROAD_3 VictoryRoad2Blocks: ; 0x519af 135 INCBIN "maps/victoryroad2.blk" MtMoon2_h: ; 0x51a36 to 0x51a42 (12 bytes) (id=60) db $11 ; tileset db MT_MOON_2_HEIGHT, MT_MOON_2_WIDTH ; dimensions (y, x) dw MtMoon2Blocks, MtMoon2Texts, MtMoon2Script ; blocks, texts, scripts db $00 ; connections dw MtMoon2Object ; objects MtMoon2Script: ; 0x51a42 call $3c3c ret ; 0x51a46 MtMoon2Texts: dw MtMoonText1 MtMoonText1: ; 0x51a48 TX_FAR _UnnamedText_51a48 db $50 ; 0x51a48 + 5 bytes MtMoon2Object: ; 0x51a4d (size=68) db $3 ; border tile db $8 ; warps db $5, $5, $2, MT_MOON_1 db $b, $11, $0, MT_MOON_3 db $9, $19, $3, MT_MOON_1 db $f, $19, $4, MT_MOON_1 db $11, $15, $1, MT_MOON_3 db $1b, $d, $2, MT_MOON_3 db $3, $17, $3, MT_MOON_3 db $3, $1b, $2, $ff db $0 ; signs db $0 ; people ; warp-to EVENT_DISP $e, $5, $5 ; MT_MOON_1 EVENT_DISP $e, $b, $11 ; MT_MOON_3 EVENT_DISP $e, $9, $19 ; MT_MOON_1 EVENT_DISP $e, $f, $19 ; MT_MOON_1 EVENT_DISP $e, $11, $15 ; MT_MOON_3 EVENT_DISP $e, $1b, $d ; MT_MOON_3 EVENT_DISP $e, $3, $17 ; MT_MOON_3 EVENT_DISP $e, $3, $1b MtMoon2Blocks: ; 0x51a91 196 INCBIN "maps/mtmoon2.blk" SilphCo7_h: ; 0x51b55 to 0x51b61 (12 bytes) (id=212) db $16 ; tileset db SILPH_CO_7F_HEIGHT, SILPH_CO_7F_WIDTH ; dimensions (y, x) dw SilphCo7Blocks, SilphCo7Texts, SilphCo7Script ; blocks, texts, scripts db $00 ; connections dw SilphCo7Object ; objects SilphCo7Script: ; 0x51b61 call SilphCo7Script_Unknown51b77 call $3c3c ld hl, SilphCo7TrainerHeaders ld de, $5c17 ld a, [$d648] call $3160 ld [$d648], a ret ; 0x51b77 SilphCo7Script_Unknown51b77: ; 0x5177 INCBIN "baserom.gbc",$51b77,$1c8 SilphCo7Texts: ; 0x51d3f dw SilphCo7Text1, SilphCo7Text2, SilphCo7Text3, SilphCo7Text4, SilphCo7Text5, SilphCo7Text6, SilphCo7Text7, SilphCo7Text8, SilphCo7Text9, SilphCo7Text10, SilphCo7Text11, SilphCo7Text12, SilphCo7Text13, SilphCo7Text14, SilphCo7Text15 SilphCo7TrainerHeaders: SilphCo7TrainerHeader0: ; 0x51d5d db $5 ; flag's bit db ($2 << 4) ; trainer's view range dw $d82f ; flag's byte dw SilphCo7BattleText1 ; 0x5e5a TextBeforeBattle dw SilphCo7AfterBattleText1 ; 0x5e64 TextAfterBattle dw SilphCo7EndBattleText1 ; 0x5e5f TextEndBattle dw SilphCo7EndBattleText1 ; 0x5e5f TextEndBattle ; 0x51d69 SilphCo7TrainerHeader2: ; 0x51d69 db $6 ; flag's bit db ($3 << 4) ; trainer's view range dw $d82f ; flag's byte dw SilphCo7BattleText2 ; 0x5e73 TextBeforeBattle dw SilphCo7AfterBattleText2 ; 0x5e7d TextAfterBattle dw SilphCo7EndBattleText2 ; 0x5e78 TextEndBattle dw SilphCo7EndBattleText2 ; 0x5e78 TextEndBattle ; 0x51d75 SilphCo7TrainerHeader3: ; 0x51d75 db $7 ; flag's bit db ($3 << 4) ; trainer's view range dw $d82f ; flag's byte dw SilphCo7BattleText3 ; 0x5e8c TextBeforeBattle dw SilphCo7AfterBattleText3 ; 0x5e96 TextAfterBattle dw SilphCo7EndBattleText3 ; 0x5e91 TextEndBattle dw SilphCo7EndBattleText3 ; 0x5e91 TextEndBattle ; 0x51d81 SilphCo7TrainerHeader4: ; 0x51d81 db $8 ; flag's bit db ($4 << 4) ; trainer's view range dw $d82f ; flag's byte dw SilphCo7BattleText4 ; 0x5ea5 TextBeforeBattle dw SilphCo7AfterBattleText4 ; 0x5eaf TextAfterBattle dw SilphCo7EndBattleText4 ; 0x5eaa TextEndBattle dw SilphCo7EndBattleText4 ; 0x5eaa TextEndBattle ; 0x51d8d db $ff SilphCo7Text1: ; 0x51d8e db $08 ; asm ld a, [$d72e] bit 0, a jr z, .asm_d7e17 ; 0x51d94 ld a, [$d838] bit 7, a jr nz, .asm_688b4 ; 0x51d9b ld hl, UnnamedText_51ddd call PrintText jr .asm_b3069 ; 0x51da3 .asm_d7e17 ; 0x51da5 ld hl, UnnamedText_51dd3 call PrintText ld bc, (LAPRAS << 8) | 15 call GivePokemon jr nc, .asm_b3069 ; 0x51db1 ld a, [$ccd3] and a call z, $3865 call $3c3c ld hl, UnnamedText_51dd8 call PrintText ld hl, $d72e set 0, [hl] jr .asm_b3069 ; 0x51dc8 .asm_688b4 ; 0x51dca ld hl, UnnamedText_51de2 call PrintText .asm_b3069 ; 0x51dd0 jp TextScriptEnd UnnamedText_51dd3: ; 0x51dd3 TX_FAR _UnnamedText_51dd3 db $50 ; 0x51dd3 + 5 bytes UnnamedText_51dd8: ; 0x51dd8 TX_FAR _UnnamedText_51dd8 db $50 ; 0x51dd8 + 5 bytes UnnamedText_51ddd: ; 0x51ddd TX_FAR _UnnamedText_51ddd db $50 ; 0x51ddd + 5 bytes UnnamedText_51de2: ; 0x51de2 TX_FAR _UnnamedText_51de2 db $50 ; 0x51de2 + 5 bytes SilphCo7Text2: ; 0x51de7 db $8 ld a, [$d838] bit 7, a jr nz, .asm_892ce ; 0x51ded $8 ld hl, UnnamedText_51e00 call PrintText jr .asm_e4d89 ; 0x51df5 $6 .asm_892ce ; 0x51df7 ld hl, UnnamedText_51e05 call PrintText .asm_e4d89 ; 0x51dfd jp TextScriptEnd ; 0x51e00 UnnamedText_51e00: ; 0x51e00 TX_FAR _UnnamedText_51e00 db $50 ; 0x51e00 + 5 bytes UnnamedText_51e05: ; 0x51e05 TX_FAR _UnnamedText_51e05 db $50 ; 0x51e05 + 5 bytes SilphCo7Text3: ; 0x51e0a db $08 ; asm ld a, [$d838] bit 7, a jr nz, .asm_254aa ; 0x51e10 ld hl, UnnamedText_51e23 call PrintText jr .asm_6472b ; 0x51e18 .asm_254aa ; 0x51e1a ld hl, UnnamedText_51e28 call PrintText .asm_6472b ; 0x51e20 jp TextScriptEnd UnnamedText_51e23: ; 0x51e23 TX_FAR _UnnamedText_51e23 db $50 ; 0x51e23 + 5 bytes UnnamedText_51e28: ; 0x51e28 TX_FAR _UnnamedText_51e28 db $50 ; 0x51e28 + 5 bytes SilphCo7Text4: ; 0x51e2d db $08 ; asm ld a, [$d838] bit 7, a jr nz, .asm_0f7ee ; 0x51e33 ld hl, UnnamedText_51e46 call PrintText jr .asm_27a32 ; 0x51e3b .asm_0f7ee ; 0x51e3d ld hl, UnnamedText_51e4b call PrintText .asm_27a32 ; 0x51e43 jp TextScriptEnd UnnamedText_51e46: ; 0x51e46 TX_FAR _UnnamedText_51e46 db $50 ; 0x51e46 + 5 bytes UnnamedText_51e4b: ; 0x51e4b TX_FAR _UnnamedText_51e4b db $50 ; 0x51e4b + 5 bytes SilphCo7Text5: ; 0x51e50 db $08 ; asm ld hl, SilphCo7TrainerHeader0 call LoadTrainerHeader jp TextScriptEnd SilphCo7BattleText1: ; 0x51e5a TX_FAR _SilphCo7BattleText1 db $50 ; 0x51e5a + 5 bytes SilphCo7EndBattleText1: ; 0x51e5f TX_FAR _SilphCo7EndBattleText1 db $50 ; 0x51e5f + 5 bytes SilphCo7AfterBattleText1: ; 0x51e64 TX_FAR _SilphCo7AfterBattleText1 db $50 ; 0x51e64 + 5 bytes SilphCo7Text6: ; 0x51e69 db $08 ; asm ld hl, SilphCo7TrainerHeader2 call LoadTrainerHeader jp TextScriptEnd SilphCo7BattleText2: ; 0x51e73 TX_FAR _SilphCo7BattleText2 db $50 ; 0x51e73 + 5 bytes SilphCo7EndBattleText2: ; 0x51e78 TX_FAR _SilphCo7EndBattleText2 db $50 ; 0x51e78 + 5 bytes SilphCo7AfterBattleText2: ; 0x51e7d TX_FAR _SilphCo7AfterBattleText2 db $50 ; 0x51e7d + 5 bytes SilphCo7Text7: ; 0x51e82 db $08 ; asm ld hl, SilphCo7TrainerHeader3 call LoadTrainerHeader jp TextScriptEnd SilphCo7BattleText3: ; 0x51e8c TX_FAR _SilphCo7BattleText3 db $50 ; 0x51e8c + 5 bytes SilphCo7EndBattleText3: ; 0x51e91 TX_FAR _SilphCo7EndBattleText3 db $50 ; 0x51e91 + 5 bytes SilphCo7AfterBattleText3: ; 0x51e96 TX_FAR _SilphCo7AfterBattleText3 db $50 ; 0x51e96 + 5 bytes SilphCo7Text8: ; 0x51e9b db $08 ; asm ld hl, SilphCo7TrainerHeader4 call LoadTrainerHeader jp TextScriptEnd SilphCo7BattleText4: ; 0x51ea5 TX_FAR _SilphCo7BattleText4 db $50 ; 0x51ea5 + 5 bytes SilphCo7EndBattleText4: ; 0x51eaa TX_FAR _SilphCo7EndBattleText4 db $50 ; 0x51eaa + 5 bytes SilphCo7AfterBattleText4: ; 0x51eaf TX_FAR _SilphCo7AfterBattleText4 db $50 ; 0x51eaf + 5 bytes SilphCo7Text9: ; 0x51eb4 db $08 ; asm ld hl, UnnamedText_51ebe call PrintText jp TextScriptEnd UnnamedText_51ebe: ; 0x51ebe TX_FAR _UnnamedText_51ebe db $50 ; 0x51ebe + 5 bytes SilphCo7Text13: ; 0x51ec3 TX_FAR _UnnamedText_51ec3 db $50 ; 0x51ec3 + 5 bytes SilphCo7Text14: ; 0x51ec8 TX_FAR _UnnamedText_51ec8 db $50 ; 0x51ec8 + 5 bytes UnnamedText_51ecd: ; 0x51ecd TX_FAR _UnnamedText_51ecd db $50 ; 0x51ecd + 5 bytes SilphCo7Text15: ; 0x51ed2 TX_FAR _UnnamedText_51ed2 db $50 ; 0x51ed2 + 5 bytes SilphCo7Object: ; 0x51ed7 (size=128) db $2e ; border tile db $6 ; warps db $0, $10, $1, SILPH_CO_8F db $0, $16, $0, SILPH_CO_6F db $0, $12, $0, SILPH_CO_ELEVATOR db $7, $5, $3, SILPH_CO_11F db $3, $5, $8, SILPH_CO_3F db $f, $15, $3, SILPH_CO_5F db $0 ; signs db $b ; people db SPRITE_LAPRAS_GIVER, $5 + 4, $1 + 4, $ff, $ff, $1 ; person db SPRITE_LAPRAS_GIVER, $d + 4, $d + 4, $ff, $d1, $2 ; person db SPRITE_LAPRAS_GIVER, $a + 4, $7 + 4, $ff, $ff, $3 ; person db SPRITE_ERIKA, $8 + 4, $a + 4, $ff, $ff, $4 ; person db SPRITE_ROCKET, $1 + 4, $d + 4, $ff, $d0, $45, ROCKET + $C8, $20 ; trainer db SPRITE_OAK_AIDE, $d + 4, $2 + 4, $ff, $d0, $46, SCIENTIST + $C8, $8 ; trainer db SPRITE_ROCKET, $2 + 4, $14 + 4, $ff, $d2, $47, ROCKET + $C8, $21 ; trainer db SPRITE_ROCKET, $e + 4, $13 + 4, $ff, $d3, $48, ROCKET + $C8, $22 ; trainer db SPRITE_BLUE, $7 + 4, $3 + 4, $ff, $d1, $9 ; person db SPRITE_BALL, $9 + 4, $1 + 4, $ff, $ff, $8a, CALCIUM ; item db SPRITE_BALL, $b + 4, $18 + 4, $ff, $ff, $8b, TM_03 ; item ; warp-to EVENT_DISP $d, $0, $10 ; SILPH_CO_8F EVENT_DISP $d, $0, $16 ; SILPH_CO_6F EVENT_DISP $d, $0, $12 ; SILPH_CO_ELEVATOR EVENT_DISP $d, $7, $5 ; SILPH_CO_11F EVENT_DISP $d, $3, $5 ; SILPH_CO_3F EVENT_DISP $d, $f, $15 ; SILPH_CO_5F SilphCo7Blocks: ; 0x51f57 117 INCBIN "maps/silphco7.blk" Mansion2_h: ; 0x51fcc to 0x51fd8 (12 bytes) (id=214) db $16 ; tileset db MANSION_2_HEIGHT, MANSION_2_WIDTH ; dimensions (y, x) dw Mansion2Blocks, Mansion2Texts, Mansion2Script ; blocks, texts, scripts db $00 ; connections dw Mansion2Object ; objects Mansion2Script: call Mansion2Script_Unknown51fee call $3c3c ld hl, Mansion2TrainerHeaders ld de, $6047 ld a, [$d63c] call $3160 ld [$d63c], a ret ; 0x51fee Mansion2Script_Unknown51fee: ; 0x51fee INCBIN "baserom.gbc",$51fee,$5204d - $51fee Mansion2Texts: ; 0x5204d dw Mansion2Text1, Mansion2Text2, Mansion2Text3, Mansion2Text4, Mansion2Text5 Mansion2TrainerHeaders: Mansion2TrainerHeader0: ; 0x52057 db $1 ; flag's bit db ($0 << 4) ; trainer's view range dw $d847 ; flag's byte dw Mansion2BattleText1 ; 0x606e TextBeforeBattle dw Mansion2AfterBattleText1 ; 0x6078 TextAfterBattle dw Mansion2EndBattleText1 ; 0x6073 TextEndBattle dw Mansion2EndBattleText1 ; 0x6073 TextEndBattle ; 0x52063 db $ff Mansion2Text1: ; 0x52064 db $08 ; asm ld hl, Mansion2TrainerHeader0 call LoadTrainerHeader jp TextScriptEnd Mansion2BattleText1: ; 0x5206e TX_FAR _Mansion2BattleText1 db $50 ; 0x5206e + 5 bytes Mansion2EndBattleText1: ; 0x52073 TX_FAR _Mansion2EndBattleText1 db $50 ; 0x52073 + 5 bytes Mansion2AfterBattleText1: ; 0x52078 TX_FAR _Mansion2AfterBattleText1 db $50 ; 0x52078 + 5 bytes Mansion2Text3: ; 0x5207d TX_FAR _Mansion2Text3 db $50 Mansion2Text4: ; 0x52082 TX_FAR _Mansion2Text4 db $50 Mansion3Text6: Mansion2Text5: ; 0x52087 db $8 ld hl, UnnamedText_520c2 call PrintText call $35ec ld a, [$cc26] and a jr nz, .asm_520b9 ; 0x52095 $22 ld a, $1 ld [$cc3c], a ld hl, $d126 set 5, [hl] ld hl, UnnamedText_520c7 call PrintText ld a, $ad call $23b1 ld hl, $d796 bit 0, [hl] set 0, [hl] jr z, .asm_520bf ; 0x520b3 $a res 0, [hl] jr .asm_520bf ; 0x520b7 $6 .asm_520b9 ld hl, UnnamedText_520cc call PrintText .asm_520bf jp TextScriptEnd ; 0x520c2 UnnamedText_520c2: ; 0x520c2 TX_FAR _UnnamedText_520c2 db $50 ; 0x520c2 + 5 bytes UnnamedText_520c7: ; 0x520c7 TX_FAR _UnnamedText_520c7 db $50 ; 0x520c7 + 5 bytes UnnamedText_520cc: ; 0x520cc TX_FAR _UnnamedText_520cc db $50 ; 0x520cc + 5 bytes Mansion2Object: ; 0x520d1 (size=63) db $1 ; border tile db $4 ; warps db $a, $5, $4, MANSION_1 db $a, $7, $0, MANSION_3 db $e, $19, $2, MANSION_3 db $1, $6, $1, MANSION_3 db $0 ; signs db $4 ; people db SPRITE_BLACK_HAIR_BOY_2, $11 + 4, $3 + 4, $fe, $2, $41, BURGLAR + $C8, $7 ; trainer db SPRITE_BALL, $7 + 4, $1c + 4, $ff, $ff, $82, CALCIUM ; item db SPRITE_BOOK_MAP_DEX, $2 + 4, $12 + 4, $ff, $ff, $3 ; person db SPRITE_BOOK_MAP_DEX, $16 + 4, $3 + 4, $ff, $ff, $4 ; person ; warp-to EVENT_DISP $f, $a, $5 ; MANSION_1 EVENT_DISP $f, $a, $7 ; MANSION_3 EVENT_DISP $f, $e, $19 ; MANSION_3 EVENT_DISP $f, $1, $6 ; MANSION_3 Mansion2Blocks: INCBIN "maps/mansion2.blk" Mansion3_h: ; 0x521e2 to 0x521ee (12 bytes) (id=215) db $16 ; tileset db MANSION_3_HEIGHT, MANSION_3_WIDTH ; dimensions (y, x) dw Mansion3Blocks, Mansion3Texts, Mansion3Script ; blocks, texts, scripts db $00 ; connections dw Mansion3Object ; objects Mansion3Script: call Unnamed_52204 call $3c3c ld hl, Mansion3TrainerHeader0 ld de, $6235 ld a, [$d63d] call $3160 ld [$d63d], a ret ; 0x52204 Unnamed_52204: ; 0x52204 INCBIN "baserom.gbc",$52204,$5228a - $52204 Mansion3Texts: ; 0x5228a dw Mansion3Text1, Mansion3Text2, Mansion3Text3, Mansion3Text4, Mansion3Text5, Mansion3Text6 Mansion3TrainerHeaders: Mansion3TrainerHeader0: ; 0x52296 db $1 ; flag's bit db ($0 << 4) ; trainer's view range dw $d849 ; flag's byte dw Mansion3BattleText1 ; 0x62c3 TextBeforeBattle dw Mansion3AfterBattleText1 ; 0x62cd TextAfterBattle dw Mansion3EndBattleText1 ; 0x62c8 TextEndBattle dw Mansion3EndBattleText1 ; 0x62c8 TextEndBattle ; 0x522a2 Mansion3TrainerHeader2: ; 0x522a2 db $2 ; flag's bit db ($2 << 4) ; trainer's view range dw $d849 ; flag's byte dw Mansion3BattleText2 ; 0x62d2 TextBeforeBattle dw Mansion3AfterBattleText2 ; 0x62dc TextAfterBattle dw Mansion3EndBattleText2 ; 0x62d7 TextEndBattle dw Mansion3EndBattleText2 ; 0x62d7 TextEndBattle ; 0x522ae db $ff Mansion3Text1: ; 0x522af db $08 ; asm ld hl, Mansion3TrainerHeader0 call LoadTrainerHeader jp TextScriptEnd Mansion3Text2: ; 0x522b9 db $08 ; asm ld hl, Mansion3TrainerHeader2 call LoadTrainerHeader jp TextScriptEnd Mansion3BattleText1: ; 0x522c3 TX_FAR _Mansion3BattleText1 db $50 ; 0x522c3 + 5 bytes Mansion3EndBattleText1: ; 0x522c8 TX_FAR _Mansion3EndBattleText1 db $50 ; 0x522c8 + 5 bytes Mansion3AfterBattleText1: ; 0x522cd TX_FAR _Mansion3AfterBattleText1 db $50 ; 0x522cd + 5 bytes Mansion3BattleText2: ; 0x522d2 TX_FAR _Mansion3BattleText2 db $50 ; 0x522d2 + 5 bytes Mansion3EndBattleText2: ; 0x522d7 TX_FAR _Mansion3EndBattleText2 db $50 ; 0x522d7 + 5 bytes Mansion3AfterBattleText2: ; 0x522dc TX_FAR _Mansion3AfterBattleText2 db $50 ; 0x522dc + 5 bytes Mansion3Text5: ; 0x522e1 TX_FAR _Mansion3Text5 db $50 Mansion3Object: ; 0x522e6 (size=64) db $1 ; border tile db $3 ; warps db $a, $7, $1, MANSION_2 db $1, $6, $3, MANSION_2 db $e, $19, $2, MANSION_2 db $0 ; signs db $5 ; people db SPRITE_BLACK_HAIR_BOY_2, $b + 4, $5 + 4, $fe, $2, $41, BURGLAR + $C8, $8 ; trainer db SPRITE_OAK_AIDE, $b + 4, $14 + 4, $ff, $d2, $42, SCIENTIST + $C8, $c ; trainer db SPRITE_BALL, $10 + 4, $1 + 4, $ff, $ff, $83, MAX_POTION ; item db SPRITE_BALL, $5 + 4, $19 + 4, $ff, $ff, $84, IRON ; item db SPRITE_BOOK_MAP_DEX, $c + 4, $6 + 4, $ff, $ff, $5 ; person ; warp-to EVENT_DISP $f, $a, $7 ; MANSION_2 EVENT_DISP $f, $1, $6 ; MANSION_2 EVENT_DISP $f, $e, $19 ; MANSION_2 Mansion3Blocks: INCBIN "maps/mansion3.blk" Mansion4_h: ; 0x523ad to 0x523b9 (12 bytes) (id=216) db $16 ; tileset db MANSION_4_HEIGHT, MANSION_4_WIDTH ; dimensions (y, x) dw Mansion4Blocks, Mansion4Texts, Mansion4Script ; blocks, texts, scripts db $00 ; connections dw Mansion4Object ; objects Mansion4Script: ; 0x523b9 call Unknown_523cf call $3c3c ld hl, Mansion4TrainerHeader0 ld de, $6430 ld a, [$d63e] call $3160 ld [$d63e], a ret ; 0x523cf Unknown_523cf: ; 0x523cf INCBIN "baserom.gbc",$523cf,$52436 - $523cf Mansion4Texts: ; 0x52436 INCBIN "baserom.gbc",$52436,$52448 - $52436 Mansion4TrainerHeaders: Mansion4TrainerHeader0: ; 0x52448 db $1 ; flag's bit db ($0 << 4) ; trainer's view range dw $d84b ; flag's byte dw Mansion4BattleText1 ; 0x6475 TextBeforeBattle dw Mansion4AfterBattleText1 ; 0x647f TextAfterBattle dw Mansion4EndBattleText1 ; 0x647a TextEndBattle dw Mansion4EndBattleText1 ; 0x647a TextEndBattle ; 0x52454 Mansion4TrainerHeader2: ; 0x52454 db $2 ; flag's bit db ($3 << 4) ; trainer's view range dw $d84b ; flag's byte dw Mansion4BattleText2 ; 0x6484 TextBeforeBattle dw Mansion4AfterBattleText2 ; 0x648e TextAfterBattle dw Mansion4EndBattleText2 ; 0x6489 TextEndBattle dw Mansion4EndBattleText2 ; 0x6489 TextEndBattle ; 0x52460 db $ff Mansion4Text1: ; 0x52461 db $08 ; asm ld hl, Mansion4TrainerHeader0 call LoadTrainerHeader jp TextScriptEnd Mansion4Text2: ; 0x5246b db $08 ; asm ld hl, Mansion4TrainerHeader2 call LoadTrainerHeader jp TextScriptEnd Mansion4BattleText1: ; 0x52475 TX_FAR _Mansion4BattleText1 db $50 ; 0x52475 + 5 bytes Mansion4EndBattleText1: ; 0x5247a TX_FAR _Mansion4EndBattleText1 db $50 ; 0x5247a + 5 bytes Mansion4AfterBattleText1: ; 0x5247f TX_FAR _Mansion4AfterBattleText1 db $50 ; 0x5247f + 5 bytes Mansion4BattleText2: ; 0x52484 TX_FAR _Mansion4BattleText2 db $50 ; 0x52484 + 5 bytes Mansion4EndBattleText2: ; 0x52489 TX_FAR _Mansion4EndBattleText2 db $50 ; 0x52489 + 5 bytes Mansion4AfterBattleText2: ; 0x5248e TX_FAR _Mansion4AfterBattleText2 db $50 ; 0x5248e + 5 bytes Mansion4Text7: ; 0x52493 TX_FAR _Mansion4Text7 db $50 Mansion4Object: ; 0x52498 (size=69) db $1 ; border tile db $1 ; warps db $16, $17, $5, MANSION_1 db $0 ; signs db $8 ; people db SPRITE_BLACK_HAIR_BOY_2, $17 + 4, $10 + 4, $ff, $ff, $41, BURGLAR + $C8, $9 ; trainer db SPRITE_OAK_AIDE, $b + 4, $1b + 4, $ff, $d0, $42, SCIENTIST + $C8, $d ; trainer db SPRITE_BALL, $2 + 4, $a + 4, $ff, $ff, $83, RARE_CANDY ; item db SPRITE_BALL, $16 + 4, $1 + 4, $ff, $ff, $84, FULL_RESTORE ; item db SPRITE_BALL, $19 + 4, $13 + 4, $ff, $ff, $85, TM_14 ; item db SPRITE_BALL, $4 + 4, $5 + 4, $ff, $ff, $86, TM_22 ; item db SPRITE_BOOK_MAP_DEX, $14 + 4, $10 + 4, $ff, $ff, $7 ; person db SPRITE_BALL, $d + 4, $5 + 4, $ff, $ff, $88, SECRET_KEY ; item ; warp-to EVENT_DISP $f, $16, $17 ; MANSION_1 Mansion4Blocks: INCBIN "maps/mansion4.blk" INCBIN "baserom.gbc",$525af,$526f3 - $525af UnnamedText_526f3: ; 0x526f3 TX_FAR _UnnamedText_526f3 db $50 ; 0x526f3 + 5 bytes UnnamedText_526f8: ; 0x526f8 TX_FAR _UnnamedText_526f8 db $50 ; 0x526f8 + 5 bytes INCBIN "baserom.gbc",$526fd,$1e CeladonPrizeMenu: ; 0x5271b 14:671B ld b,COIN_CASE call IsItemInBag jr nz,.havingCoinCase\@ ld hl,RequireCoinCaseTextPtr jp PrintText .havingCoinCase\@ ld hl,$D730 set 6,[hl] ld hl,ExchangeCoinsForPrizesTextPtr call PrintText ; the following are the menu settings xor a ld [$CC26],a ld [$CC2A],a ld a,$03 ld [$CC29],a ld a,$03 ld [$CC28],a ld a,$04 ld [$CC24],a ld a,$01 ld [$CC25],a call PrintPrizePrice ; 687A FuncCoord 0,2 ld hl,Coord ld b,$08 ld c,$10 call TextBoxBorder call GetPrizeMenuId ;678E call $2429 ld hl,WhichPrizeTextPtr call PrintText call $3ABE ; menu choice handler bit 1,a ; keypress = B (Cancel) jr nz,.NoChoice\@ ld a,[$CC26] cp a,$03 ; "NO,THANKS" choice jr z,.NoChoice\@ call HandlePrizeChoice ; 14:68C6 .NoChoice\@ ld hl,$D730 res 6,[hl] ret RequireCoinCaseTextPtr: ; 14:677E TX_FAR _RequireCoinCaseText ; 22:628E db $0D db "@" ExchangeCoinsForPrizesTextPtr: ; 14:6784 TX_FAR _ExchangeCoinsForPrizesText ; 22:62A9 db "@" WhichPrizeTextPtr: ; 14:6789 TX_FAR _WhichPrizeText ; 22:62CD db "@" GetPrizeMenuId: ; 14:678E ; determine which one among the three ; prize-texts has been selected ; using the text ID (stored in [$FF8C]) ; load the three prizes at $D13D-$D13F ; load the three prices ar $D141-$D146 ; display the three prizes' names ; (distinguishing between Pokemon names ; and Items (specifically TMs) names) ld a,[$FF8C] sub a,$03 ; prize-texts' id are 3, 4 and 5 ld [$D12F],a ; prize-texts' id (relative, i.e. 0, 1 or 2) add a add a ld d,$00 ld e,a ld hl,PrizeDifferentMenuPtrs add hl,de ld a,[hli] ld d,[hl] ld e,a inc hl push hl ld hl,W_PRIZE1 call $3829 ; XXX what does this do pop hl ld a,[hli] ld h,[hl] ld l,a ld de,$D141 ld bc,$0006 call CopyData ld a,[$D12F] cp a,$02 ;is TM_menu? jr nz,.putMonName\@ ld a,[W_PRIZE1] ld [$D11E],a call GetItemName FuncCoord 2,4 ld hl,Coord call PlaceString ld a,[W_PRIZE2] ld [$D11E],a call GetItemName FuncCoord 2,6 ld hl,Coord call PlaceString ld a,[W_PRIZE3] ld [$D11E],a call GetItemName FuncCoord 2,8 ld hl,Coord call PlaceString jr .putNoThanksText\@ .putMonName\@ ; 14:67EC ld a,[W_PRIZE1] ld [$D11E],a call GetMonName FuncCoord 2,4 ld hl,Coord call PlaceString ld a,[W_PRIZE2] ld [$D11E],a call GetMonName FuncCoord 2,6 ld hl,Coord call PlaceString ld a,[W_PRIZE3] ld [$D11E],a call GetMonName FuncCoord 2,8 ld hl,Coord call PlaceString .putNoThanksText\@ ; 14:6819 FuncCoord 2,10 ld hl,Coord ld de,NoThanksText call PlaceString ; put prices on the right side of the textbox ld de,$D141 FuncCoord 13,5 ld hl,Coord ; reg. c: ; [low nybble] number of bytes ; [bit 765 = %100] space-padding (not zero-padding) ld c,(1 << 7 | 2) ; Function $15CD displays BCD value (same routine ; used by text-command $02) call PrintBCDNumber ; Print_BCD ld de,$D143 FuncCoord 13,7 ld hl,Coord ld c,(%1 << 7 | 2) call PrintBCDNumber ld de,$D145 FuncCoord 13,9 ld hl,Coord ld c,(1 << 7 | 2) jp PrintBCDNumber PrizeDifferentMenuPtrs: ; 14:6843 dw PrizeMenuMon1Entries dw PrizeMenuMon1Cost dw PrizeMenuMon2Entries dw PrizeMenuMon2Cost dw PrizeMenuTMsEntries dw PrizeMenuTMsCost NoThanksText: ; 14:684F db "NO THANKS@" PrizeMenuMon1Entries: ; 14:6859 db ABRA db CLEFAIRY IF _RED db NIDORINA ENDC IF _BLUE db NIDORINO ENDC db "@" PrizeMenuMon1Cost: ; 14:685D IF _RED db $01,$80 db $05,$00 ENDC IF _BLUE db $01,$20 db $07,$50 ENDC db $12,$00 db "@" PrizeMenuMon2Entries: ; 14:6864 IF _RED db DRATINI db SCYTHER ENDC IF _BLUE db PINSIR db DRATINI ENDC db PORYGON db "@" PrizeMenuMon2Cost: ; 14:6868 IF _RED db $28,$00 db $55,$00 db $99,$99 ENDC IF _BLUE db $25,$00 db $46,$00 db $65,$00 ENDC db "@" PrizeMenuTMsEntries: ; 14:686F db TM_23 db TM_15 db TM_50 db "@" PrizeMenuTMsCost: ; 14:6873 db $33,$00 ; 3300 Coins db $55,$00 ; 5500 Coins db $77,$00 ; 7700 Coins db "@" PrintPrizePrice: ; 14:687A FuncCoord 11,0 ld hl,Coord ld b,$01 ld c,$07 call TextBoxBorder call $2429 ; XXX save OAM? FuncCoord 12,0 ld hl,Coord ld de,.CoinText\@ call PlaceString FuncCoord 13,1 ld hl,Coord ld de,.SixSpacesText\@ call PlaceString FuncCoord 13,1 ld hl,Coord ld de,W_PLAYERCOINS1 ld c,%10000010 call PrintBCDNumber ret .CoinText\@ ; 14:68A5 db "COIN@" .SixSpacesText\@ ; 14:68AA db " @" LoadCoinsToSubtract: ; 14:68B1 ld a,[$D139] ; backup of selected menu_entry add a ld d,$00 ld e,a ld hl,$D141 ; first prize's price add hl,de ; get selected prize's price xor a ld [$FF9F],a ld a,[hli] ld [$FFA0],a ld a,[hl] ld [$FFA1],a ret HandlePrizeChoice: ; 14:68C6 ld a,[$CC26] ; selected menu_entry ld [$D139],a ld d,$00 ld e,a ld hl,W_PRIZE1 add hl,de ld a,[hl] ld [$D11E],a ld a,[$D12F] cp a,$02 ; is prize a TM? jr nz,.GetMonName\@ call GetItemName jr .GivePrize\@ .GetMonName\@ ; 14:68E3 call GetMonName .GivePrize\@ ; 14:68E6 ld hl,SoYouWantPrizeTextPtr call PrintText call $35EC ; yes/no textbox ld a,[$CC26] ; yes/no answer (Y=0, N=1) and a jr nz,.PrintOhFineThen\@ call LoadCoinsToSubtract call $35B1 ; subtract COINs from COIN_CASE jr c,.NotEnoughCoins\@ ld a,[$D12F] cp a,$02 jr nz,.GiveMon\@ ld a,[$D11E] ld b,a ld a,$01 ld c,a call $3E2E ; GiveItem jr nc,.BagIsFull\@ jr .SubtractCoins\@ .GiveMon\@ ; 14:6912 ld a,[$D11E] ld [$CF91],a push af call GetPrizeMonLevel ; 14:6977 ld c,a pop af ld b,a call GivePokemon push af ld a,[$CCD3] ; XXX is there room? and a call z,$3865 pop af ret nc .SubtractCoins\@ ; 14:692C call LoadCoinsToSubtract ld hl,$FFA1 ld de,W_PLAYERCOINS2 ld c,$02 ; how many bytes ld a,$0C call Predef ; subtract coins (BCD daa operations) jp PrintPrizePrice .BagIsFull\@ ; 14:693F ld hl,PrizeRoomBagIsFullTextPtr jp PrintText .NotEnoughCoins\@ ; 14:6945 ld hl,SorryNeedMoreCoinsTextPtr jp PrintText .PrintOhFineThen\@ ; 14:694B ld hl,OhFineThenTextPtr jp PrintText UnknownData52951: ; 14:6951 ; XXX what's this? db $00,$01,$00,$01,$00,$01,$00,$00,$01 HereYouGoTextPtr: TX_FAR _HereYouGoText ; 22:62E7 db $0D db "@" SoYouWantPrizeTextPtr: ; 14:6960 TX_FAR _SoYouWantPrizeText ; 22:62F6 db "@" SorryNeedMoreCoinsTextPtr: ; 14:6965 TX_FAR _SorryNeedMoreCoins ; 22:630B db $0D db "@" PrizeRoomBagIsFullTextPtr: ; 14:696B TX_FAR _OopsYouDontHaveEnoughRoomText ; 22:6329 db $0D db "@" OhFineThenTextPtr: ; 14:6971 TX_FAR _OhFineThenText; 22:634C db $0D ; wait keypress (A/B) without blink db "@" GetPrizeMonLevel: ; 14:6977 ld a,[$CF91] ld b,a ld hl,PrizeMonLevelDictionary .loop\@ ; 14:697E ld a,[hli] cp b jr z,.matchFound\@ inc hl jr .loop\@ .matchFound\@ ; 14:6985 ld a,[hl] ld [$D127],a ret PrizeMonLevelDictionary: ; 14:698A IF _RED db ABRA,9 db CLEFAIRY,8 db NIDORINA,17 db DRATINI,18 db SCYTHER,25 db PORYGON,26 ENDC IF _BLUE db ABRA,6 db CLEFAIRY,12 db NIDORINO,17 db PINSIR,20 db DRATINI,24 db PORYGON,18 ENDC INCBIN "baserom.gbc",$52996,$529e9 - $52996 UnnamedText_529e9: ; 0x529e9 TX_FAR _UnnamedText_529e9 db $50 ; 0x529e9 + 5 bytes INCBIN "baserom.gbc",$529ee,$529f4 - $529ee UnnamedText_529f4: ; 0x529f4 TX_FAR _UnnamedText_529f4 db $50 ; 0x529f4 + 5 bytes UnnamedText_529f9: ; 0x529f9 TX_FAR _UnnamedText_529f9 db $50 ; 0x529f9 + 5 bytes UnnamedText_529fe: ; 0x529fe TX_FAR _UnnamedText_529fe db $50 ; 0x529fe + 5 bytes UnnamedText_52a03: ; 0x52a03 TX_FAR _UnnamedText_52a03 db $50 ; 0x52a03 + 5 bytes INCBIN "baserom.gbc",$52a08,$52a10 - $52a08 UnnamedText_52a10: ; 0x52a10 TX_FAR _UnnamedText_52a10 db $50 ; 0x52a10 + 5 bytes INCBIN "baserom.gbc",$52a15,$52a1d - $52a15 UnnamedText_52a1d: ; 0x52a1d TX_FAR _UnnamedText_52a1d db $50 ; 0x52a1d + 5 bytes INCBIN "baserom.gbc",$52a22,$52a2a - $52a22 UnnamedText_52a2a: ; 0x52a2a TX_FAR _UnnamedText_52a2a db $50 ; 0x52a2a + 5 bytes INCBIN "baserom.gbc",$52a2f,$52a3d - $52a2f UnnamedText_52a3d: ; 0x52a3d TX_FAR _UnnamedText_52a3d db $50 ; 0x52a3d + 5 bytes SECTION "bank15",DATA,BANK[$15] Route2_h: db 00 ; Tileset db ROUTE_2_HEIGHT,ROUTE_2_WIDTH ;Height,Width blocks (1 block = 4x4 tiles) dw Route2Blocks ;Map-Pointer dw Route2Texts ;Maps text pointer dw Route2Script ;Maps script pointer db NORTH | SOUTH ;Connection Byte ;Connection data db PEWTER_CITY ;Map dw $4714 ;y, x Strip Starting Point dw $C6E8 ;Strip X-Offset to current map db 16 ;"Bigness" (Unsure) ;Something to do with MapData db 20 ;"Map Width" (Unsure) ;Something to do with TileSet db 35 ;Player's new Y-Coordinates db 10 ;Player's new X-Coordinates dw $C8BD ;New UL Block Pos (Window) db VIRIDIAN_CITY ;Map dw $43EE ;y, x Strip Starting Point dw $C958 ;Strip X-Offset to current map db 16 ;"Bigness" (Unsure) ;Something to do with MapData db 20 ;"Map Width" (Unsure) ;Something to do with TileSet db 0 ;Player's new Y-Coordinates db 10 ;Player's new X-Coordinates dw $C703 ;New UL Block Pos (Window) dw Route2Object ;Object Data Pointer Route2Object: ; 0x54022 (size=72) db $f ; border tile db $6 ; warps db $9, $c, $0, DIGLETTS_CAVE_EXIT db $b, $3, $1, VIRIDIAN_FOREST_EXIT db $13, $f, $0, ROUTE_2_HOUSE db $23, $10, $1, ROUTE_2_GATE db $27, $f, $2, ROUTE_2_GATE db $2b, $3, $2, VIRIDIAN_FOREST_ENTRANCE db $2 ; signs db $41, $5, $3 ; Route2Text3 db $b, $b, $4 ; Route2Text4 db $2 ; people db SPRITE_BALL, $36 + 4, $d + 4, $ff, $ff, $81, MOON_STONE ; item db SPRITE_BALL, $2d + 4, $d + 4, $ff, $ff, $82, HP_UP ; item ; warp-to EVENT_DISP $a, $9, $c ; DIGLETTS_CAVE_EXIT EVENT_DISP $a, $b, $3 ; VIRIDIAN_FOREST_EXIT EVENT_DISP $a, $13, $f ; ROUTE_2_HOUSE EVENT_DISP $a, $23, $10 ; ROUTE_2_GATE EVENT_DISP $a, $27, $f ; ROUTE_2_GATE EVENT_DISP $a, $2b, $3 ; VIRIDIAN_FOREST_ENTRANCE INCBIN "baserom.gbc",$5406a,$14 Route2Blocks: ; 0x5407e 360 INCBIN "maps/route2.blk" Route3_h: ; 0x541e6 to 0x54208 (34 bytes) (id=14) db $00 ; tileset db ROUTE_3_HEIGHT, ROUTE_3_WIDTH ; dimensions (y, x) dw Route3Blocks, Route3Texts, Route3Script ; blocks, texts, scripts db NORTH | WEST ; connections ; connections data db ROUTE_4 dw Route4Blocks + (ROUTE_4_HEIGHT - 3) * ROUTE_4_WIDTH ; connection strip location dw $C6EB + 25 ; current map position db $d, ROUTE_4_WIDTH ; bigness, width db (ROUTE_4_HEIGHT * 2) - 1, (25 * -2) ; alignments (y, x) dw $C6E9 + ROUTE_4_HEIGHT * (ROUTE_4_WIDTH + 6) ; window db PEWTER_CITY dw PewterCityBlocks - 3 + (PEWTER_CITY_WIDTH * 2) ; connection strip location dw $C6E8 + (ROUTE_3_WIDTH + 6) * (-3 + 3) ; current map position db $f, PEWTER_CITY_WIDTH ; bigness, width db (-4 * -2), (PEWTER_CITY_WIDTH * 2) - 1 ; alignments (y, x) dw $C6EE + 2 * PEWTER_CITY_WIDTH ; window ; end connections data dw Route3Object ; objects Route3Object: ; 0x54208 (size=77) db $2c ; border tile db $0 ; warps db $1 ; signs db $9, $3b, $a ; Route3Text10 db $9 ; people db SPRITE_BLACK_HAIR_BOY_2, $b + 4, $39 + 4, $ff, $ff, $1 ; person db SPRITE_BUG_CATCHER, $6 + 4, $a + 4, $ff, $d3, $42, BUG_CATCHER + $C8, $4 ; trainer db SPRITE_BUG_CATCHER, $4 + 4, $e + 4, $ff, $d0, $43, YOUNGSTER + $C8, $1 ; trainer db SPRITE_LASS, $9 + 4, $10 + 4, $ff, $d2, $44, LASS + $C8, $1 ; trainer db SPRITE_BUG_CATCHER, $5 + 4, $13 + 4, $ff, $d0, $45, BUG_CATCHER + $C8, $5 ; trainer db SPRITE_LASS, $4 + 4, $17 + 4, $ff, $d2, $46, LASS + $C8, $2 ; trainer db SPRITE_BUG_CATCHER, $9 + 4, $16 + 4, $ff, $d2, $47, YOUNGSTER + $C8, $2 ; trainer db SPRITE_BUG_CATCHER, $6 + 4, $18 + 4, $ff, $d3, $48, BUG_CATCHER + $C8, $6 ; trainer db SPRITE_LASS, $a + 4, $21 + 4, $ff, $d1, $49, LASS + $C8, $3 ; trainer Route3Blocks: ; 0x54255 315 INCBIN "maps/route3.blk" Route4_h: ; 0x54390 to 0x543b2 (34 bytes) (id=15) db $00 ; tileset db ROUTE_4_HEIGHT, ROUTE_4_WIDTH ; dimensions (y, x) dw Route4Blocks, Route4Texts, Route4Script; blocks, texts, scripts db SOUTH | EAST ; connections ; connections data db ROUTE_3 dw Route3Blocks + 22 ; connection strip location dw $C6EB + (ROUTE_4_HEIGHT + 3) * (ROUTE_4_WIDTH + 6) + -3 ; current map position db $d, ROUTE_3_WIDTH ; bigness, width db 0, (-25 * -2) ; alignments (y, x) dw $C6EF + ROUTE_3_WIDTH ; window db CERULEAN_CITY dw CeruleanCityBlocks + (CERULEAN_CITY_WIDTH) ; connection strip location dw $C6E5 + (ROUTE_4_WIDTH + 6) * (-3 + 4) ; current map position db $f, CERULEAN_CITY_WIDTH ; bigness, width db (-4 * -2), 0 ; alignments (y, x) dw $C6EF + CERULEAN_CITY_WIDTH ; window ; end connections data dw Route4Object ; objects Route4Object: ; 0x543b2 (size=58) db $2c ; border tile db $3 ; warps db $5, $b, $0, MT_MOON_POKECENTER db $5, $12, $0, MT_MOON_1 db $5, $18, $7, MT_MOON_2 db $3 ; signs db $5, $c, $4 ; Route4Text4 db $7, $11, $5 ; Route4Text5 db $7, $1b, $6 ; Route4Text6 db $3 ; people db SPRITE_LASS, $8 + 4, $9 + 4, $fe, $0, $1 ; person db SPRITE_LASS, $3 + 4, $3f + 4, $ff, $d3, $42, LASS + $C8, $4 ; trainer db SPRITE_BALL, $3 + 4, $39 + 4, $ff, $ff, $83, TM_04 ; item ; warp-to EVENT_DISP $2d, $5, $b ; MT_MOON_POKECENTER EVENT_DISP $2d, $5, $12 ; MT_MOON_1 EVENT_DISP $2d, $5, $18 ; MT_MOON_2 Route4Blocks: ; 0x543ec 405 INCBIN "maps/route4.blk" Route5_h: ; 0x54581 to 0x545a3 (34 bytes) (id=16) db $00 ; tileset db ROUTE_5_HEIGHT, ROUTE_5_WIDTH ; dimensions (y, x) dw Route5Blocks, Route5Texts, Route5Script ; blocks, texts, scripts db NORTH | SOUTH ; connections ; connections data db CERULEAN_CITY dw CeruleanCityBlocks + (CERULEAN_CITY_HEIGHT - 3) * CERULEAN_CITY_WIDTH + 2 ; connection strip location dw $C6EB + -3 ; current map position db $10, CERULEAN_CITY_WIDTH ; bigness, width db (CERULEAN_CITY_HEIGHT * 2) - 1, (-5 * -2) ; alignments (y, x) dw $C6E9 + CERULEAN_CITY_HEIGHT * (CERULEAN_CITY_WIDTH + 6) ; window db SAFFRON_CITY dw SaffronCityBlocks + 2 ; connection strip location dw $C6EB + (ROUTE_5_HEIGHT + 3) * (ROUTE_5_WIDTH + 6) + -3 ; current map position db $10, SAFFRON_CITY_WIDTH ; bigness, width db 0, (-5 * -2) ; alignments (y, x) dw $C6EF + SAFFRON_CITY_WIDTH ; window ; end connections data dw Route5Object ; objects Route5Object: ; 0x545a3 (size=47) db $a ; border tile db $5 ; warps db $1d, $a, $3, ROUTE_5_GATE db $1d, $9, $2, ROUTE_5_GATE db $21, $a, $0, ROUTE_5_GATE db $1b, $11, $0, PATH_ENTRANCE_ROUTE_5 db $15, $a, $0, DAYCAREM db $1 ; signs db $1d, $11, $1 ; Route5Text1 db $0 ; people ; warp-to EVENT_DISP $a, $1d, $a ; ROUTE_5_GATE EVENT_DISP $a, $1d, $9 ; ROUTE_5_GATE EVENT_DISP $a, $21, $a ; ROUTE_5_GATE EVENT_DISP $a, $1b, $11 ; PATH_ENTRANCE_ROUTE_5 EVENT_DISP $a, $15, $a ; DAYCAREM Route5Blocks: ; 0x545d2 180 INCBIN "maps/route5.blk" Route9_h: ; 0x54686 to 0x546a8 (34 bytes) (id=20) db $00 ; tileset db ROUTE_9_HEIGHT, ROUTE_9_WIDTH ; dimensions (y, x) dw Route9Blocks, Route9Texts, Route9Script ; blocks, texts, scripts db WEST | EAST ; connections ; connections data db CERULEAN_CITY dw CeruleanCityBlocks - 3 + (CERULEAN_CITY_WIDTH * 2) ; connection strip location dw $C6E8 + (ROUTE_9_WIDTH + 6) * (-3 + 3) ; current map position db $f, CERULEAN_CITY_WIDTH ; bigness, width db (-4 * -2), (CERULEAN_CITY_WIDTH * 2) - 1 ; alignments (y, x) dw $C6EE + 2 * CERULEAN_CITY_WIDTH ; window db ROUTE_10 dw Route10Blocks + (ROUTE_10_WIDTH * 0) ; connection strip location dw $C6E5 + (ROUTE_9_WIDTH + 6) * (0 + 4) ; current map position db $c, ROUTE_10_WIDTH ; bigness, width db (0 * -2), 0 ; alignments (y, x) dw $C6EF + ROUTE_10_WIDTH ; window ; end connections data dw Route9Object ; objects Route9Object: ; 0x546a8 (size=86) db $2c ; border tile db $0 ; warps db $1 ; signs db $7, $19, $b ; Route9Text11 db $a ; people db SPRITE_LASS, $a + 4, $d + 4, $ff, $d2, $41, JR__TRAINER_F + $C8, $5 ; trainer db SPRITE_BLACK_HAIR_BOY_1, $7 + 4, $18 + 4, $ff, $d2, $42, JR__TRAINER_M + $C8, $7 ; trainer db SPRITE_BLACK_HAIR_BOY_1, $7 + 4, $1f + 4, $ff, $d3, $43, JR__TRAINER_M + $C8, $8 ; trainer db SPRITE_LASS, $8 + 4, $30 + 4, $ff, $d3, $44, JR__TRAINER_F + $C8, $6 ; trainer db SPRITE_HIKER, $f + 4, $10 + 4, $ff, $d2, $45, HIKER + $C8, $b ; trainer db SPRITE_HIKER, $3 + 4, $2b + 4, $ff, $d2, $46, HIKER + $C8, $6 ; trainer db SPRITE_BUG_CATCHER, $2 + 4, $16 + 4, $ff, $d0, $47, BUG_CATCHER + $C8, $d ; trainer db SPRITE_HIKER, $f + 4, $2d + 4, $ff, $d3, $48, HIKER + $C8, $5 ; trainer db SPRITE_BUG_CATCHER, $8 + 4, $28 + 4, $ff, $d3, $49, BUG_CATCHER + $C8, $e ; trainer db SPRITE_BALL, $f + 4, $a + 4, $ff, $ff, $8a, TM_30 ; item Route9Blocks: ; 0x546fe 270 INCBIN "maps/route9.blk" Route13_h: ; 0x5480c to 0x5482e (34 bytes) (id=24) db $00 ; tileset db ROUTE_13_HEIGHT, ROUTE_13_WIDTH ; dimensions (y, x) dw Route13Blocks, Route13Texts, Route13Script ; blocks, texts, scripts db NORTH | WEST ; connections ; connections data db ROUTE_12 dw Route12Blocks + (ROUTE_12_HEIGHT - 3) * ROUTE_12_WIDTH ; connection strip location dw $C6EB + 20 ; current map position db ROUTE_12_WIDTH, ROUTE_12_WIDTH ; bigness, width db (ROUTE_12_HEIGHT * 2) - 1, (20 * -2) ; alignments (y, x) dw $C6E9 + ROUTE_12_HEIGHT * (ROUTE_12_WIDTH + 6) ; window db ROUTE_14 dw Route14Blocks - 3 + (ROUTE_14_WIDTH) ; connection strip location dw $C6E8 + (ROUTE_13_WIDTH + 6) * (0 + 3) ; current map position db $c, ROUTE_14_WIDTH ; bigness, width db (0 * -2), (ROUTE_14_WIDTH * 2) - 1 ; alignments (y, x) dw $C6EE + 2 * ROUTE_14_WIDTH ; window ; end connections data dw Route13Object ; objects Route13Object: ; 0x5482e (size=93) db $43 ; border tile db $0 ; warps db $3 ; signs db $d, $f, $b ; Route13Text11 db $5, $21, $c ; Route13Text12 db $b, $1f, $d ; Route13Text13 db $a ; people db SPRITE_BLACK_HAIR_BOY_1, $a + 4, $31 + 4, $ff, $d3, $41, BIRD_KEEPER + $C8, $1 ; trainer db SPRITE_LASS, $a + 4, $30 + 4, $ff, $d0, $42, JR__TRAINER_F + $C8, $c ; trainer db SPRITE_LASS, $9 + 4, $1b + 4, $ff, $d0, $43, JR__TRAINER_F + $C8, $d ; trainer db SPRITE_LASS, $a + 4, $17 + 4, $ff, $d2, $44, JR__TRAINER_F + $C8, $e ; trainer db SPRITE_LASS, $5 + 4, $32 + 4, $ff, $d0, $45, JR__TRAINER_F + $C8, $f ; trainer db SPRITE_BLACK_HAIR_BOY_1, $4 + 4, $c + 4, $ff, $d3, $46, BIRD_KEEPER + $C8, $2 ; trainer db SPRITE_FOULARD_WOMAN, $6 + 4, $21 + 4, $ff, $d0, $47, BEAUTY + $C8, $4 ; trainer db SPRITE_FOULARD_WOMAN, $6 + 4, $20 + 4, $ff, $d0, $48, BEAUTY + $C8, $5 ; trainer db SPRITE_BIKER, $7 + 4, $a + 4, $ff, $d1, $49, BIKER + $C8, $1 ; trainer db SPRITE_BLACK_HAIR_BOY_1, $d + 4, $7 + 4, $ff, $d1, $4a, BIRD_KEEPER + $C8, $3 ; trainer Route13Blocks: ; 0x5488b 270 INCBIN "maps/route13.blk" Route14_h: ; 0x54999 to 0x549bb (34 bytes) (id=25) db $00 ; tileset db ROUTE_14_HEIGHT, ROUTE_14_WIDTH ; dimensions (y, x) dw Route14Blocks, Route14Texts, Route14Script ; blocks, texts, scripts db WEST | EAST ; connections ; connections data db ROUTE_15 dw Route15Blocks - 3 + (ROUTE_15_WIDTH) ; connection strip location dw $C6E8 + (ROUTE_14_WIDTH + 6) * (18 + 3) ; current map position db ROUTE_15_HEIGHT, ROUTE_15_WIDTH ; bigness, width db (18 * -2), (ROUTE_15_WIDTH * 2) - 1 ; alignments (y, x) dw $C6EE + 2 * ROUTE_15_WIDTH ; window db ROUTE_13 dw Route13Blocks + (ROUTE_13_WIDTH * 0) ; connection strip location dw $C6E5 + (ROUTE_14_WIDTH + 6) * (0 + 4) ; current map position db ROUTE_13_HEIGHT, ROUTE_13_WIDTH ; bigness, width db (0 * -2), 0 ; alignments (y, x) dw $C6EF + ROUTE_13_WIDTH ; window ; end connections data dw Route14Object ; objects Route14Object: ; 0x549bb (size=87) db $43 ; border tile db $0 ; warps db $1 ; signs db $d, $11, $b ; Route14Text11 db $a ; people db SPRITE_BLACK_HAIR_BOY_1, $4 + 4, $4 + 4, $ff, $d0, $41, BIRD_KEEPER + $C8, $e ; trainer db SPRITE_BLACK_HAIR_BOY_1, $6 + 4, $f + 4, $ff, $d0, $42, BIRD_KEEPER + $C8, $f ; trainer db SPRITE_BLACK_HAIR_BOY_1, $b + 4, $c + 4, $ff, $d0, $43, BIRD_KEEPER + $C8, $10 ; trainer db SPRITE_BLACK_HAIR_BOY_1, $f + 4, $e + 4, $ff, $d1, $44, BIRD_KEEPER + $C8, $11 ; trainer db SPRITE_BLACK_HAIR_BOY_1, $1f + 4, $f + 4, $ff, $d2, $45, BIRD_KEEPER + $C8, $4 ; trainer db SPRITE_BLACK_HAIR_BOY_1, $31 + 4, $6 + 4, $ff, $d1, $46, BIRD_KEEPER + $C8, $5 ; trainer db SPRITE_BIKER, $27 + 4, $5 + 4, $ff, $d0, $47, BIKER + $C8, $d ; trainer db SPRITE_BIKER, $1e + 4, $4 + 4, $ff, $d3, $48, BIKER + $C8, $e ; trainer db SPRITE_BIKER, $1e + 4, $f + 4, $ff, $d2, $49, BIKER + $C8, $f ; trainer db SPRITE_BIKER, $1f + 4, $4 + 4, $ff, $d3, $4a, BIKER + $C8, $2 ; trainer Route14Blocks: ; 0x54a12 270 INCBIN "maps/route14.blk" Route17_h: ; 0x54b20 to 0x54b42 (34 bytes) (id=28) db $00 ; tileset db ROUTE_17_HEIGHT, ROUTE_17_WIDTH ; dimensions (y, x) dw Route17Blocks, Route17Texts, Route17Script ; blocks, texts, scripts db NORTH | SOUTH ; connections ; connections data db ROUTE_16 dw Route16Blocks + (ROUTE_16_HEIGHT - 3) * ROUTE_16_WIDTH ; connection strip location dw $C6EB + 0 ; current map position db $d, ROUTE_16_WIDTH ; bigness, width db (ROUTE_16_HEIGHT * 2) - 1, (0 * -2) ; alignments (y, x) dw $C6E9 + ROUTE_16_HEIGHT * (ROUTE_16_WIDTH + 6) ; window db ROUTE_18 dw Route18Blocks ; connection strip location dw $C6EB + (ROUTE_17_HEIGHT + 3) * (ROUTE_17_WIDTH + 6) + 0 ; current map position db $d, ROUTE_18_WIDTH ; bigness, width db 0, (0 * -2) ; alignments (y, x) dw $C6EF + ROUTE_18_WIDTH ; window ; end connections data dw Route17Object ; objects Route17Object: ; 0x54b42 (size=102) db $43 ; border tile db $0 ; warps db $6 ; signs db $33, $9, $b ; Route17Text11 db $3f, $9, $c ; Route17Text12 db $4b, $9, $d ; Route17Text13 db $57, $9, $e ; Route17Text14 db $6f, $9, $f ; Route17Text15 db $8d, $9, $10 ; Route17Text16 db $a ; people db SPRITE_BIKER, $13 + 4, $c + 4, $ff, $d2, $41, CUE_BALL + $C8, $4 ; trainer db SPRITE_BIKER, $10 + 4, $b + 4, $ff, $d3, $42, CUE_BALL + $C8, $5 ; trainer db SPRITE_BIKER, $12 + 4, $4 + 4, $ff, $d1, $43, BIKER + $C8, $8 ; trainer db SPRITE_BIKER, $20 + 4, $7 + 4, $ff, $d2, $44, BIKER + $C8, $9 ; trainer db SPRITE_BIKER, $22 + 4, $e + 4, $ff, $d3, $45, BIKER + $C8, $a ; trainer db SPRITE_BIKER, $3a + 4, $11 + 4, $ff, $d2, $46, CUE_BALL + $C8, $6 ; trainer db SPRITE_BIKER, $44 + 4, $2 + 4, $ff, $d3, $47, CUE_BALL + $C8, $7 ; trainer db SPRITE_BIKER, $62 + 4, $e + 4, $ff, $d3, $48, CUE_BALL + $C8, $8 ; trainer db SPRITE_BIKER, $62 + 4, $5 + 4, $ff, $d2, $49, BIKER + $C8, $b ; trainer db SPRITE_BIKER, $76 + 4, $a + 4, $ff, $d0, $4a, BIKER + $C8, $c ; trainer Route17Blocks: ; 0x54ba8 720 INCBIN "maps/route17.blk" Route19_h: ; 0x54e78 to 0x54e9a (34 bytes) (id=30) db $00 ; tileset db ROUTE_19_HEIGHT, ROUTE_19_WIDTH ; dimensions (y, x) dw Route19Blocks, Route19Texts, Route19Script ; blocks, texts, scripts db NORTH | WEST ; connections ; connections data db FUCHSIA_CITY dw FuchsiaCityBlocks + (FUCHSIA_CITY_HEIGHT - 3) * FUCHSIA_CITY_WIDTH + 2 ; connection strip location dw $C6EB + -3 ; current map position db $10, FUCHSIA_CITY_WIDTH ; bigness, width db (FUCHSIA_CITY_HEIGHT * 2) - 1, (-5 * -2) ; alignments (y, x) dw $C6E9 + FUCHSIA_CITY_HEIGHT * (FUCHSIA_CITY_WIDTH + 6) ; window db ROUTE_20 dw Route20Blocks - 3 + (ROUTE_20_WIDTH) ; connection strip location dw $C6E8 + (ROUTE_19_WIDTH + 6) * (18 + 3) ; current map position db ROUTE_20_HEIGHT, ROUTE_20_WIDTH ; bigness, width db (18 * -2), (ROUTE_20_WIDTH * 2) - 1 ; alignments (y, x) dw $C6EE + 2 * ROUTE_20_WIDTH ; window ; end connections data dw Route19Object ; objects Route19Object: ; 0x54e9a (size=87) db $43 ; border tile db $0 ; warps db $1 ; signs db $9, $b, $b ; Route19Text11 db $a ; people db SPRITE_BLACK_HAIR_BOY_1, $7 + 4, $8 + 4, $ff, $d2, $41, SWIMMER + $C8, $2 ; trainer db SPRITE_BLACK_HAIR_BOY_1, $7 + 4, $d + 4, $ff, $d2, $42, SWIMMER + $C8, $3 ; trainer db SPRITE_SWIMMER, $19 + 4, $d + 4, $ff, $d2, $43, SWIMMER + $C8, $4 ; trainer db SPRITE_SWIMMER, $1b + 4, $4 + 4, $ff, $d3, $44, SWIMMER + $C8, $5 ; trainer db SPRITE_SWIMMER, $1f + 4, $10 + 4, $ff, $d1, $45, SWIMMER + $C8, $6 ; trainer db SPRITE_SWIMMER, $b + 4, $9 + 4, $ff, $d0, $46, SWIMMER + $C8, $7 ; trainer db SPRITE_SWIMMER, $2b + 4, $8 + 4, $ff, $d2, $47, BEAUTY + $C8, $c ; trainer db SPRITE_SWIMMER, $2b + 4, $b + 4, $ff, $d3, $48, BEAUTY + $C8, $d ; trainer db SPRITE_SWIMMER, $2a + 4, $9 + 4, $ff, $d1, $49, SWIMMER + $C8, $8 ; trainer db SPRITE_SWIMMER, $2c + 4, $a + 4, $ff, $d0, $4a, BEAUTY + $C8, $e ; trainer Route19Blocks: ; 0x54ef1 270 INCBIN "maps/route19.blk" Route21_h: ; 0x54fff to 0x55021 (34 bytes) (id=32) db $00 ; tileset db ROUTE_21_HEIGHT, ROUTE_21_WIDTH ; dimensions (y, x) dw Route21Blocks, Route21Texts, Route21Script ; blocks, texts, scripts db NORTH | SOUTH ; connections ; connections data db PALLET_TOWN dw PalletTownBlocks + (PALLET_TOWN_HEIGHT - 3) * PALLET_TOWN_WIDTH ; connection strip location dw $C6EB + 0 ; current map position db PALLET_TOWN_WIDTH, PALLET_TOWN_WIDTH ; bigness, width db (PALLET_TOWN_HEIGHT * 2) - 1, (0 * -2) ; alignments (y, x) dw $C6E9 + PALLET_TOWN_HEIGHT * (PALLET_TOWN_WIDTH + 6) ; window db CINNABAR_ISLAND dw CinnabarIslandBlocks ; connection strip location dw $C6EB + (ROUTE_21_HEIGHT + 3) * (ROUTE_21_WIDTH + 6) + 0 ; current map position db CINNABAR_ISLAND_WIDTH, CINNABAR_ISLAND_WIDTH ; bigness, width db 0, (0 * -2) ; alignments (y, x) dw $C6EF + CINNABAR_ISLAND_WIDTH ; window ; end connections data dw Route21Object ; objects Route21Object: ; 0x55021 (size=76) db $43 ; border tile db $0 ; warps db $0 ; signs db $9 ; people db SPRITE_FISHER2, $18 + 4, $4 + 4, $ff, $d2, $41, FISHER + $C8, $7 ; trainer db SPRITE_FISHER2, $19 + 4, $6 + 4, $ff, $d0, $42, FISHER + $C8, $9 ; trainer db SPRITE_SWIMMER, $1f + 4, $a + 4, $ff, $d1, $43, SWIMMER + $C8, $c ; trainer db SPRITE_SWIMMER, $1e + 4, $c + 4, $ff, $d3, $44, CUE_BALL + $C8, $9 ; trainer db SPRITE_SWIMMER, $3f + 4, $10 + 4, $ff, $d0, $45, SWIMMER + $C8, $d ; trainer db SPRITE_SWIMMER, $47 + 4, $5 + 4, $ff, $d3, $46, SWIMMER + $C8, $e ; trainer db SPRITE_SWIMMER, $47 + 4, $f + 4, $ff, $d2, $47, SWIMMER + $C8, $f ; trainer db SPRITE_FISHER2, $38 + 4, $e + 4, $ff, $d2, $48, FISHER + $C8, $8 ; trainer db SPRITE_FISHER2, $39 + 4, $11 + 4, $ff, $d3, $49, FISHER + $C8, $a ; trainer Route21Blocks: ; 0x5506d 450 INCBIN "maps/route21.blk" VermilionHouse2Blocks: Route12HouseBlocks: DayCareMBlocks: ; 0x5522f 522F 16 INCBIN "maps/daycarem.blk" FuchsiaHouse3Blocks: ; 0x5523f 16 INCBIN "maps/fuchsiahouse3.blk" INCBIN "baserom.gbc",$5524f,$554d8 - $5524f UnnamedText_554d8: ; 0x554d8 TX_FAR _UnnamedText_554d8 ; 0x89bee db $50 ; 0x554dd INCBIN "baserom.gbc",$554dd,$554e3 - $554dd Route2Script: ; 0x554e3 jp $3c3c ; 0x554e6 Route2Texts: dw Route2Text1, Route2Text2, Route2Text3, Route2Text4 Route2Text3: ; 0x554ee TX_FAR _Route2Text3 db $50 Route2Text4: ; 0x554f3 TX_FAR _Route2Text4 db $50 Route3Script: ; 0x554f8 call $3c3c ld hl, Route3TrainerHeader0 ld de, Unknown_5550b ld a, [$d5f8] call $3160 ld [$d5f8], a ret ; 0x5550b Unknown_5550b: ; 0x5550b INCBIN "baserom.gbc",$5550b,$6 Route3Texts: ; 0x55511 dw Route3Text1, Route3Text2, Route3Text3, Route3Text4, Route3Text5, Route3Text6, Route3Text7, Route3Text8, Route3Text9, Route3Text10 Route3TrainerHeaders: Route3TrainerHeader0: ; 0x55525 db $2 ; flag's bit db ($2 << 4) ; trainer's view range dw $d7c3 ; flag's byte dw Route3BattleText1 ; 0x5595 TextBeforeBattle dw Route3AfterBattleText1 ; 0x559f TextAfterBattle dw Route3EndBattleText1 ; 0x559a TextEndBattle dw Route3EndBattleText1 ; 0x559a TextEndBattle ; 0x55531 Route3TrainerHeader2: ; 0x55531 db $3 ; flag's bit db ($3 << 4) ; trainer's view range dw $d7c3 ; flag's byte dw Route3BattleText2 ; 0x55ae TextBeforeBattle dw Route3AfterBattleText2 ; 0x55b8 TextAfterBattle dw Route3EndBattleText2 ; 0x55b3 TextEndBattle dw Route3EndBattleText2 ; 0x55b3 TextEndBattle ; 0x5553d Route3TrainerHeader3: ; 0x5553d db $4 ; flag's bit db ($2 << 4) ; trainer's view range dw $d7c3 ; flag's byte dw Route3BattleText3 ; 0x55c7 TextBeforeBattle dw Route3AfterBattleText3 ; 0x55d1 TextAfterBattle dw Route3EndBattleText3 ; 0x55cc TextEndBattle dw Route3EndBattleText3 ; 0x55cc TextEndBattle ; 0x55549 Route3TrainerHeader4: ; 0x55549 db $5 ; flag's bit db ($1 << 4) ; trainer's view range dw $d7c3 ; flag's byte dw Route3BattleText4 ; 0x55e0 TextBeforeBattle dw Route3AfterBattleText4 ; 0x55ea TextAfterBattle dw Route3EndBattleText4 ; 0x55e5 TextEndBattle dw Route3EndBattleText4 ; 0x55e5 TextEndBattle ; 0x55555 Route3TrainerHeader5: ; 0x55555 db $6 ; flag's bit db ($4 << 4) ; trainer's view range dw $d7c3 ; flag's byte dw Route3BattleText5 ; 0x55f9 TextBeforeBattle dw Route3AfterBattleText5 ; 0x5603 TextAfterBattle dw Route3EndBattleText5 ; 0x55fe TextEndBattle dw Route3EndBattleText5 ; 0x55fe TextEndBattle ; 0x55561 Route3TrainerHeader6: ; 0x55561 db $7 ; flag's bit db ($3 << 4) ; trainer's view range dw $d7c3 ; flag's byte dw Route3BattleText6 ; 0x5612 TextBeforeBattle dw Route3AfterBattleText6 ; 0x561c TextAfterBattle dw Route3EndBattleText6 ; 0x5617 TextEndBattle dw Route3EndBattleText6 ; 0x5617 TextEndBattle ; 0x5556d Route3TrainerHeader7: ; 0x5556d db $8 ; flag's bit db ($3 << 4) ; trainer's view range dw $d7c3 ; flag's byte dw Route3BattleText7 ; 0x562b TextBeforeBattle dw Route3AfterBattleText7 ; 0x5635 TextAfterBattle dw Route3EndBattleText7 ; 0x5630 TextEndBattle dw Route3EndBattleText7 ; 0x5630 TextEndBattle ; 0x55579 Route3TrainerHeader8: ; 0x55579 db $9 ; flag's bit db ($2 << 4) ; trainer's view range dw $d7c3 ; flag's byte dw Route3BattleText8 ; 0x5644 TextBeforeBattle dw Route3AfterBattleText8 ; 0x564e TextAfterBattle dw Route3EndBattleText8 ; 0x5649 TextEndBattle dw Route3EndBattleText8 ; 0x5649 TextEndBattle ; 0x55585 db $ff Route3Text1: ; 0x55586 TX_FAR _Route3Text1 db $50 Route3Text2: ; 0x5558b db $08 ; asm ld hl, Route3TrainerHeader0 call LoadTrainerHeader jp TextScriptEnd Route3BattleText1: ; 0x55595 TX_FAR _Route3BattleText1 db $50 ; 0x55595 + 5 bytes Route3EndBattleText1: ; 0x5559a TX_FAR _Route3EndBattleText1 db $50 ; 0x5559a + 5 bytes Route3AfterBattleText1: ; 0x5559f TX_FAR _Route3AfterBattleText1 db $50 ; 0x5559f + 5 bytes Route3Text3: ; 0x555a4 db $08 ; asm ld hl, Route3TrainerHeader2 call LoadTrainerHeader jp TextScriptEnd Route3BattleText2: ; 0x555ae TX_FAR _Route3BattleText2 db $50 ; 0x555ae + 5 bytes Route3EndBattleText2: ; 0x555b3 TX_FAR _Route3EndBattleText2 db $50 ; 0x555b3 + 5 bytes Route3AfterBattleText2: ; 0x555b8 TX_FAR _Route3AfterBattleText2 db $50 ; 0x555b8 + 5 bytes Route3Text4: ; 0x555bd db $08 ; asm ld hl, Route3TrainerHeader3 call LoadTrainerHeader jp TextScriptEnd Route3BattleText3: ; 0x555c7 TX_FAR _Route3BattleText3 db $50 ; 0x555c7 + 5 bytes Route3EndBattleText3: ; 0x555cc TX_FAR _Route3EndBattleText3 db $50 ; 0x555cc + 5 bytes Route3AfterBattleText3: ; 0x555d1 TX_FAR _Route3AfterBattleText3 db $50 ; 0x555d1 + 5 bytes Route3Text5: ; 0x555d6 db $08 ; asm ld hl, Route3TrainerHeader4 call LoadTrainerHeader jp TextScriptEnd Route3BattleText4: ; 0x555e0 TX_FAR _Route3BattleText4 db $50 ; 0x555e0 + 5 bytes Route3EndBattleText4: ; 0x555e5 TX_FAR _Route3EndBattleText4 db $50 ; 0x555e5 + 5 bytes Route3AfterBattleText4: ; 0x555ea TX_FAR _Route3AfterBattleText4 db $50 ; 0x555ea + 5 bytes Route3Text6: ; 0x555ef db $08 ; asm ld hl, Route3TrainerHeader5 call LoadTrainerHeader jp TextScriptEnd Route3BattleText5: ; 0x555f9 TX_FAR _Route3BattleText5 db $50 ; 0x555f9 + 5 bytes Route3EndBattleText5: ; 0x555fe TX_FAR _Route3EndBattleText5 db $50 ; 0x555fe + 5 bytes Route3AfterBattleText5: ; 0x55603 TX_FAR _Route3AfterBattleText5 db $50 ; 0x55603 + 5 bytes Route3Text7: ; 0x55608 db $08 ; asm ld hl, Route3TrainerHeader6 call LoadTrainerHeader jp TextScriptEnd Route3BattleText6: ; 0x55612 TX_FAR _Route3BattleText6 db $50 ; 0x55612 + 5 bytes Route3EndBattleText6: ; 0x55617 TX_FAR _Route3EndBattleText6 db $50 ; 0x55617 + 5 bytes Route3AfterBattleText6: ; 0x5561c TX_FAR _Route3AfterBattleText6 db $50 ; 0x5561c + 5 bytes Route3Text8: ; 0x55621 db $08 ; asm ld hl, Route3TrainerHeader7 call LoadTrainerHeader jp TextScriptEnd Route3BattleText7: ; 0x5562b TX_FAR _Route3BattleText7 db $50 ; 0x5562b + 5 bytes Route3EndBattleText7: ; 0x55630 TX_FAR _Route3EndBattleText7 db $50 ; 0x55630 + 5 bytes Route3AfterBattleText7: ; 0x55635 TX_FAR _Route3AfterBattleText7 db $50 ; 0x55635 + 5 bytes Route3Text9: ; 0x5563a db $08 ; asm ld hl, Route3TrainerHeader8 call LoadTrainerHeader jp TextScriptEnd Route3BattleText8: ; 0x55644 TX_FAR _Route3BattleText8 db $50 ; 0x55644 + 5 bytes Route3EndBattleText8: ; 0x55649 TX_FAR _Route3EndBattleText8 db $50 ; 0x55649 + 5 bytes Route3AfterBattleText8: ; 0x5564e TX_FAR _Route3AfterBattleText8 db $50 ; 0x5564e + 5 bytes Route3Text10: ; 0x55653 TX_FAR _Route3Text10 db $50 Route4Script: ; 0x55658 call $3c3c ld hl, Route4TrainerHeaders ld de, Unknown_5566b ld a, [$d5f9] call $3160 ld [$d5f9], a ret ; 0x5566b Unknown_5566b: ; 0x5566b INCBIN "baserom.gbc",$5566b,$6 Route4Texts: ; 0x55671 dw Route4Text1, Route4Text2, Route4Text3, Route4Text4, Route4Text5, Route4Text6 Route4TrainerHeaders: Route4TrainerHeader0: ; 0x5567d db $2 ; flag's bit db ($3 << 4) ; trainer's view range dw $d7c5 ; flag's byte dw Route4BattleText1 ; 0x5699 TextBeforeBattle dw Route4AfterBattleText1 ; 0x56a3 TextAfterBattle dw Route4EndBattleText1 ; 0x569e TextEndBattle dw Route4EndBattleText1 ; 0x569e TextEndBattle ; 0x55689 db $ff Route4Text1: ; 0x5568a TX_FAR _Route4Text1 db $50 Route4Text2: ; 0x5568f db $08 ; asm ld hl, Route4TrainerHeader0 call LoadTrainerHeader jp TextScriptEnd Route4BattleText1: ; 0x55699 TX_FAR _Route4BattleText1 db $50 ; 0x55699 + 5 bytes Route4EndBattleText1: ; 0x5569e TX_FAR _Route4EndBattleText1 db $50 ; 0x5569e + 5 bytes Route4AfterBattleText1: ; 0x556a3 TX_FAR _Route4AfterBattleText1 db $50 ; 0x556a3 + 5 bytes Route4Text5: ; 0x556a8 TX_FAR _Route4Text5 db $50 Route4Text6: ; 0x556ad TX_FAR _Route4Text6 db $50 Route5Script: ; 0x556b2 jp $3c3c ; 0x556b5 Route5Texts: ; 0x556b5 dw Route5Text1 Route5Text1: ; 0x556b7 TX_FAR _Route5Text1 db $50 Route9Script: ; 0x556bc call $3c3c ld hl, Route9TrainerHeaders ld de, Unknown_556cf ld a, [$d604] call $3160 ld [$d604], a ret ; 0x556cf Unknown_556cf: ; 0x556cf INCBIN "baserom.gbc",$556cf,$6 Route9Texts: ; 0x556d5 dw Route9Text1, Route9Text2, Route9Text3, Route9Text4, Route9Text5, Route9Text6, Route9Text7, Route9Text8, Route9Text9, Route9Text10, Route9Text11 Route9TrainerHeaders: Route9TrainerHeader0: ; 0x556eb db $1 ; flag's bit db ($3 << 4) ; trainer's view range dw $d7cf ; flag's byte dw Route9BattleText1 ; 0x5792 TextBeforeBattle dw Route9AfterBattleText1 ; 0x579c TextAfterBattle dw Route9EndBattleText1 ; 0x5797 TextEndBattle dw Route9EndBattleText1 ; 0x5797 TextEndBattle ; 0x556f7 Route9TrainerHeader2: ; 0x556f7 db $2 ; flag's bit db ($2 << 4) ; trainer's view range dw $d7cf ; flag's byte dw Route9BattleText2 ; 0x57a1 TextBeforeBattle dw Route9AfterBattleText2 ; 0x57ab TextAfterBattle dw Route9EndBattleText2 ; 0x57a6 TextEndBattle dw Route9EndBattleText2 ; 0x57a6 TextEndBattle ; 0x55703 Route9TrainerHeader3: ; 0x55703 db $3 ; flag's bit db ($4 << 4) ; trainer's view range dw $d7cf ; flag's byte dw Route9BattleText3 ; 0x57b0 TextBeforeBattle dw Route9AfterBattleText3 ; 0x57ba TextAfterBattle dw Route9EndBattleText3 ; 0x57b5 TextEndBattle dw Route9EndBattleText3 ; 0x57b5 TextEndBattle ; 0x5570f Route9TrainerHeader4: ; 0x5570f db $4 ; flag's bit db ($2 << 4) ; trainer's view range dw $d7cf ; flag's byte dw Route9BattleText4 ; 0x57bf TextBeforeBattle dw Route9AfterBattleText4 ; 0x57c9 TextAfterBattle dw Route9EndBattleText4 ; 0x57c4 TextEndBattle dw Route9EndBattleText4 ; 0x57c4 TextEndBattle ; 0x5571b Route9TrainerHeader5: ; 0x5571b db $5 ; flag's bit db ($2 << 4) ; trainer's view range dw $d7cf ; flag's byte dw Route9BattleText5 ; 0x57ce TextBeforeBattle dw Route9AfterBattleText5 ; 0x57d8 TextAfterBattle dw Route9EndBattleText5 ; 0x57d3 TextEndBattle dw Route9EndBattleText5 ; 0x57d3 TextEndBattle ; 0x55727 Route9TrainerHeader6: ; 0x55727 db $6 ; flag's bit db ($3 << 4) ; trainer's view range dw $d7cf ; flag's byte dw Route9BattleText6 ; 0x57dd TextBeforeBattle dw Route9AfterBattleText6 ; 0x57e7 TextAfterBattle dw Route9EndBattleText6 ; 0x57e2 TextEndBattle dw Route9EndBattleText6 ; 0x57e2 TextEndBattle ; 0x55733 Route9TrainerHeader7: ; 0x55733 db $7 ; flag's bit db ($4 << 4) ; trainer's view range dw $d7cf ; flag's byte dw Route9BattleText7 ; 0x57ec TextBeforeBattle dw Route9AfterBattleText7 ; 0x57f6 TextAfterBattle dw Route9EndBattleText7 ; 0x57f1 TextEndBattle dw Route9EndBattleText7 ; 0x57f1 TextEndBattle ; 0x5573f Route9TrainerHeader8: ; 0x5573f db $8 ; flag's bit db ($2 << 4) ; trainer's view range dw $d7cf ; flag's byte dw Route9BattleText8 ; 0x57fb TextBeforeBattle dw Route9AfterBattleText8 ; 0x5805 TextAfterBattle dw Route9EndBattleText8 ; 0x5800 TextEndBattle dw Route9EndBattleText8 ; 0x5800 TextEndBattle ; 0x5574b Route9TrainerHeader9: ; 0x5574b db $9 ; flag's bit db ($2 << 4) ; trainer's view range dw $d7cf ; flag's byte dw Route9BattleText9 ; 0x580a TextBeforeBattle dw Route9AfterBattleText9 ; 0x5814 TextAfterBattle dw Route9EndBattleText9 ; 0x580f TextEndBattle dw Route9EndBattleText9 ; 0x580f TextEndBattle ; 0x55757 db $ff Route9Text1: ; 0x55758 db $8 ; asm ld hl, Route9TrainerHeader0 jr asm_8be3d ; 0x5575c $2e Route9Text2: db $8 ; asm ld hl, Route9TrainerHeader2 jr asm_8be3d ; 0x55762 $28 Route9Text3: db $8 ; asm ld hl, Route9TrainerHeader3 jr asm_8be3d ; 0x55768 $22 Route9Text4: db $8 ; asm ld hl, Route9TrainerHeader4 jr asm_8be3d ; 0x5576e $1c Route9Text5: db $8 ; asm ld hl, Route9TrainerHeader5 jr asm_8be3d ; 0x55774 $16 Route9Text6: db $8 ; asm ld hl, Route9TrainerHeader6 jr asm_8be3d ; 0x5577a $10 Route9Text7: db $8 ; asm ld hl, Route9TrainerHeader7 jr asm_8be3d ; 0x55780 $a Route9Text8: db $8 ; asm ld hl, Route9TrainerHeader8 jr asm_8be3d ; 0x55786 $4 Route9Text9: db $8 ; asm ld hl, Route9TrainerHeader9 asm_8be3d: ; 0x5578c call LoadTrainerHeader jp TextScriptEnd ; 0x55792 Route9BattleText1: ; 0x55792 TX_FAR _Route9BattleText1 db $50 ; 0x55792 + 5 bytes Route9EndBattleText1: ; 0x55797 TX_FAR _Route9EndBattleText1 db $50 ; 0x55797 + 5 bytes Route9AfterBattleText1: ; 0x5579c TX_FAR _Route9AfterBattleText1 db $50 ; 0x5579c + 5 bytes Route9BattleText2: ; 0x557a1 TX_FAR _Route9BattleText2 db $50 ; 0x557a1 + 5 bytes Route9EndBattleText2: ; 0x557a6 TX_FAR _Route9EndBattleText2 db $50 ; 0x557a6 + 5 bytes Route9AfterBattleText2: ; 0x557ab TX_FAR _Route9AfterBattleText2 db $50 ; 0x557ab + 5 bytes Route9BattleText3: ; 0x557b0 TX_FAR _Route9BattleText3 db $50 ; 0x557b0 + 5 bytes Route9EndBattleText3: ; 0x557b5 TX_FAR _Route9EndBattleText3 db $50 ; 0x557b5 + 5 bytes Route9AfterBattleText3: ; 0x557ba TX_FAR _Route9AfterBattleText3 db $50 ; 0x557ba + 5 bytes Route9BattleText4: ; 0x557bf TX_FAR _Route9BattleText4 db $50 ; 0x557bf + 5 bytes Route9EndBattleText4: ; 0x557c4 TX_FAR _Route9EndBattleText4 db $50 ; 0x557c4 + 5 bytes Route9AfterBattleText4: ; 0x557c9 TX_FAR _Route9AfterBattleText4 db $50 ; 0x557c9 + 5 bytes Route9BattleText5: ; 0x557ce TX_FAR _Route9BattleText5 db $50 ; 0x557ce + 5 bytes Route9EndBattleText5: ; 0x557d3 TX_FAR _Route9EndBattleText5 db $50 ; 0x557d3 + 5 bytes Route9AfterBattleText5: ; 0x557d8 TX_FAR _Route9AfterBattleText5 db $50 ; 0x557d8 + 5 bytes Route9BattleText6: ; 0x557dd TX_FAR _Route9BattleText6 db $50 ; 0x557dd + 5 bytes Route9EndBattleText6: ; 0x557e2 TX_FAR _Route9EndBattleText6 db $50 ; 0x557e2 + 5 bytes Route9AfterBattleText6: ; 0x557e7 TX_FAR _Route9AfterBattleText6 db $50 ; 0x557e7 + 5 bytes Route9BattleText7: ; 0x557ec TX_FAR _Route9BattleText7 db $50 ; 0x557ec + 5 bytes Route9EndBattleText7: ; 0x557f1 TX_FAR _Route9EndBattleText7 db $50 ; 0x557f1 + 5 bytes Route9AfterBattleText7: ; 0x557f6 TX_FAR _Route9AfterBattleText7 db $50 ; 0x557f6 + 5 bytes Route9BattleText8: ; 0x557fb TX_FAR _Route9BattleText8 db $50 ; 0x557fb + 5 bytes Route9EndBattleText8: ; 0x55800 TX_FAR _Route9EndBattleText8 db $50 ; 0x55800 + 5 bytes Route9AfterBattleText8: ; 0x55805 TX_FAR _Route9AfterBattleText8 db $50 ; 0x55805 + 5 bytes Route9BattleText9: ; 0x5580a TX_FAR _Route9BattleText9 db $50 ; 0x5580a + 5 bytes Route9EndBattleText9: ; 0x5580f TX_FAR _Route9EndBattleText9 db $50 ; 0x5580f + 5 bytes Route9AfterBattleText9: ; 0x55814 TX_FAR _Route9AfterBattleText9 db $50 ; 0x55814 + 5 bytes Route9Text11: ; 0x55819 TX_FAR _Route9Text11 db $50 Route13Script: ; 0x5581e call $3c3c ld hl, Route13TrainerHeaders ld de, Route13Script_Unknown55831 ld a, [$d61a] call $3160 ld [$d61a], a ret ; 0x55831 Route13Script_Unknown55831: ; 0x55831 INCBIN "baserom.gbc",$55831,$6 Route13Texts: ; 0x55837 dw Route13Text1, Route13Text2, Route13Text3, Route13Text4, Route13Text5, Route13Text6, Route13Text7, Route13Text8, Route13Text9, Route13Text10, Route13Text11, Route13Text12, Route13Text13 Route13TrainerHeaders: Route13TrainerHeader0: ; 0x55851 db $1 ; flag's bit db ($2 << 4) ; trainer's view range dw $d7d9 ; flag's byte dw Route13BattleText2 ; 0x58d4 TextBeforeBattle dw Route13AfterBattleText2 ; 0x58de TextAfterBattle dw Route13EndBattleText2 ; 0x58d9 TextEndBattle dw Route13EndBattleText2 ; 0x58d9 TextEndBattle ; 0x5585d Route13TrainerHeader2: ; 0x5585d db $2 ; flag's bit db ($2 << 4) ; trainer's view range dw $d7d9 ; flag's byte dw Route13BattleText3 ; 0x58ed TextBeforeBattle dw Route13AfterBattleText3 ; 0x58f7 TextAfterBattle dw Route13EndBattleText3 ; 0x58f2 TextEndBattle dw Route13EndBattleText3 ; 0x58f2 TextEndBattle ; 0x55869 Route13TrainerHeader3: ; 0x55869 db $3 ; flag's bit db ($2 << 4) ; trainer's view range dw $d7d9 ; flag's byte dw Route13BattleText4 ; 0x5906 TextBeforeBattle dw Route13AfterBattleText4 ; 0x5910 TextAfterBattle dw Route13EndBattleText4 ; 0x590b TextEndBattle dw Route13EndBattleText4 ; 0x590b TextEndBattle ; 0x55875 Route13TrainerHeader4: ; 0x55875 db $4 ; flag's bit db ($2 << 4) ; trainer's view range dw $d7d9 ; flag's byte dw Route13BattleText5 ; 0x591f TextBeforeBattle dw Route13AfterBattleText5 ; 0x5929 TextAfterBattle dw Route13EndBattleText5 ; 0x5924 TextEndBattle dw Route13EndBattleText5 ; 0x5924 TextEndBattle ; 0x55881 Route13TrainerHeader5: ; 0x55881 db $5 ; flag's bit db ($4 << 4) ; trainer's view range dw $d7d9 ; flag's byte dw Route13BattleText6 ; 0x5938 TextBeforeBattle dw Route13AfterBattleText6 ; 0x5942 TextAfterBattle dw Route13EndBattleText6 ; 0x593d TextEndBattle dw Route13EndBattleText6 ; 0x593d TextEndBattle ; 0x5588d Route13TrainerHeader6: ; 0x5588d db $6 ; flag's bit db ($2 << 4) ; trainer's view range dw $d7d9 ; flag's byte dw Route13BattleText7 ; 0x5951 TextBeforeBattle dw Route13AfterBattleText7 ; 0x595b TextAfterBattle dw Route13EndBattleText7 ; 0x5956 TextEndBattle dw Route13EndBattleText7 ; 0x5956 TextEndBattle ; 0x55899 Route13TrainerHeader7: ; 0x55899 db $7 ; flag's bit db ($4 << 4) ; trainer's view range dw $d7d9 ; flag's byte dw Route13BattleText8 ; 0x596a TextBeforeBattle dw Route13AfterBattleText8 ; 0x5974 TextAfterBattle dw Route13EndBattleText8 ; 0x596f TextEndBattle dw Route13EndBattleText8 ; 0x596f TextEndBattle ; 0x558a5 Route13TrainerHeader8: ; 0x558a5 db $8 ; flag's bit db ($2 << 4) ; trainer's view range dw $d7d9 ; flag's byte dw Route13BattleText9 ; 0x5983 TextBeforeBattle dw Route13AfterBattleText9 ; 0x598d TextAfterBattle dw Route13EndBattleText9 ; 0x5988 TextEndBattle dw Route13EndBattleText9 ; 0x5988 TextEndBattle ; 0x558b1 Route13TrainerHeader9: ; 0x558b1 db $9 ; flag's bit db ($2 << 4) ; trainer's view range dw $d7d9 ; flag's byte dw Route13BattleText10 ; 0x599c TextBeforeBattle dw Route13AfterBattleText10 ; 0x59a6 TextAfterBattle dw Route13EndBattleText10 ; 0x59a1 TextEndBattle dw Route13EndBattleText10 ; 0x59a1 TextEndBattle ; 0x558bd Route13TrainerHeader10: ; 0x558bd db $a ; flag's bit db ($4 << 4) ; trainer's view range dw $d7d9 ; flag's byte dw Route13BattleText11 ; 0x59b5 TextBeforeBattle dw Route13AfterBattleText11 ; 0x59bf TextAfterBattle dw Route13EndBattleText11 ; 0x59ba TextEndBattle dw Route13EndBattleText11 ; 0x59ba TextEndBattle ; 0x558c9 db $ff Route13Text1: ; 0x558ca db $08 ; asm ld hl, Route13TrainerHeader0 call LoadTrainerHeader jp TextScriptEnd Route13BattleText2: ; 0x558d4 TX_FAR _Route13BattleText2 db $50 ; 0x558d4 + 5 bytes Route13EndBattleText2: ; 0x558d9 TX_FAR _Route13EndBattleText2 db $50 ; 0x558d9 + 5 bytes Route13AfterBattleText2: ; 0x558de TX_FAR _Route13AfterBattleText2 db $50 ; 0x558de + 5 bytes Route13Text2: ; 0x558e3 db $08 ; asm ld hl, Route13TrainerHeader2 call LoadTrainerHeader jp TextScriptEnd Route13BattleText3: ; 0x558ed TX_FAR _Route13BattleText3 db $50 ; 0x558ed + 5 bytes Route13EndBattleText3: ; 0x558f2 TX_FAR _Route13EndBattleText3 db $50 ; 0x558f2 + 5 bytes Route13AfterBattleText3: ; 0x558f7 TX_FAR _Route13AfterBattleText3 db $50 ; 0x558f7 + 5 bytes Route13Text3: ; 0x558fc db $08 ; asm ld hl, Route13TrainerHeader3 call LoadTrainerHeader jp TextScriptEnd Route13BattleText4: ; 0x55906 TX_FAR _Route13BattleText4 db $50 ; 0x55906 + 5 bytes Route13EndBattleText4: ; 0x5590b TX_FAR _Route13EndBattleText4 db $50 ; 0x5590b + 5 bytes Route13AfterBattleText4: ; 0x55910 TX_FAR _Route13AfterBattleText4 db $50 ; 0x55910 + 5 bytes Route13Text4: ; 0x55915 db $08 ; asm ld hl, Route13TrainerHeader4 call LoadTrainerHeader jp TextScriptEnd Route13BattleText5: ; 0x5591f TX_FAR _Route13BattleText5 db $50 ; 0x5591f + 5 bytes Route13EndBattleText5: ; 0x55924 TX_FAR _Route13EndBattleText5 db $50 ; 0x55924 + 5 bytes Route13AfterBattleText5: ; 0x55929 TX_FAR _Route13AfterBattleText5 db $50 ; 0x55929 + 5 bytes Route13Text5: ; 0x5592e db $08 ; asm ld hl, Route13TrainerHeader5 call LoadTrainerHeader jp TextScriptEnd Route13BattleText6: ; 0x55938 TX_FAR _Route13BattleText6 db $50 ; 0x55938 + 5 bytes Route13EndBattleText6: ; 0x5593d TX_FAR _Route13EndBattleText6 db $50 ; 0x5593d + 5 bytes Route13AfterBattleText6: ; 0x55942 TX_FAR _Route13AfterBattleText6 db $50 ; 0x55942 + 5 bytes Route13Text6: ; 0x55947 db $08 ; asm ld hl, Route13TrainerHeader6 call LoadTrainerHeader jp TextScriptEnd Route13BattleText7: ; 0x55951 TX_FAR _Route13BattleText7 db $50 ; 0x55951 + 5 bytes Route13EndBattleText7: ; 0x55956 TX_FAR _Route13EndBattleText7 db $50 ; 0x55956 + 5 bytes Route13AfterBattleText7: ; 0x5595b TX_FAR _Route13AfterBattleText7 db $50 ; 0x5595b + 5 bytes Route13Text7: ; 0x55960 db $08 ; asm ld hl, Route13TrainerHeader7 call LoadTrainerHeader jp TextScriptEnd Route13BattleText8: ; 0x5596a TX_FAR _Route13BattleText8 db $50 ; 0x5596a + 5 bytes Route13EndBattleText8: ; 0x5596f TX_FAR _Route13EndBattleText8 db $50 ; 0x5596f + 5 bytes Route13AfterBattleText8: ; 0x55974 TX_FAR _Route13AfterBattleText8 db $50 ; 0x55974 + 5 bytes Route13Text8: ; 0x55979 db $08 ; asm ld hl, Route13TrainerHeader8 call LoadTrainerHeader jp TextScriptEnd Route13BattleText9: ; 0x55983 TX_FAR _Route13BattleText9 db $50 ; 0x55983 + 5 bytes Route13EndBattleText9: ; 0x55988 TX_FAR _Route13EndBattleText9 db $50 ; 0x55988 + 5 bytes Route13AfterBattleText9: ; 0x5598d TX_FAR _Route13AfterBattleText9 db $50 ; 0x5598d + 5 bytes Route13Text9: ; 0x55992 db $08 ; asm ld hl, Route13TrainerHeader9 call LoadTrainerHeader jp TextScriptEnd Route13BattleText10: ; 0x5599c TX_FAR _Route13BattleText10 db $50 ; 0x5599c + 5 bytes Route13EndBattleText10: ; 0x559a1 TX_FAR _Route13EndBattleText10 db $50 ; 0x559a1 + 5 bytes Route13AfterBattleText10: ; 0x559a6 TX_FAR _Route13AfterBattleText10 db $50 ; 0x559a6 + 5 bytes Route13Text10: ; 0x559ab db $08 ; asm ld hl, Route13TrainerHeader10 call LoadTrainerHeader jp TextScriptEnd Route13BattleText11: ; 0x559b5 TX_FAR _Route13BattleText11 db $50 ; 0x559b5 + 5 bytes Route13EndBattleText11: ; 0x559ba TX_FAR _Route13EndBattleText11 db $50 ; 0x559ba + 5 bytes Route13AfterBattleText11: ; 0x559bf TX_FAR _Route13AfterBattleText11 db $50 ; 0x559bf + 5 bytes Route13Text11: ; 0x559c4 TX_FAR _Route13Text11 db $50 Route13Text12: ; 0x559c9 TX_FAR _Route13Text12 db $50 Route13Text13: ; 0x559ce TX_FAR _Route13Text13 db $50 Route14Script: ; 0x559d3 call $3c3c ld hl, Route14TrainerHeaders ld de, Unknown_559e6 ld a, [$d61b] call $3160 ld [$d61b], a ret ; 0x559e6 Unknown_559e6: ; 0x559e6 INCBIN "baserom.gbc",$559e6,$6 Route14Texts: ; 0x559ec dw Route14Text1, Route14Text2, Route14Text3, Route14Text4, Route14Text5, Route14Text6, Route14Text7, Route14Text8, Route14Text9, Route14Text10, Route14Text11 Route14TrainerHeaders: Route14TrainerHeader0: ; 0x55a02 db $1 ; flag's bit db ($2 << 4) ; trainer's view range dw $d7db ; flag's byte dw Route14BattleText1 ; 0x5a85 TextBeforeBattle dw Route14AfterBattleText1 ; 0x5a8f TextAfterBattle dw Route14EndBattleText1 ; 0x5a8a TextEndBattle dw Route14EndBattleText1 ; 0x5a8a TextEndBattle ; 0x55a0e Route14TrainerHeader1: ; 0x55a0e db $2 ; flag's bit db ($2 << 4) ; trainer's view range dw $d7db ; flag's byte dw Route14BattleText2 ; 0x5a9e TextBeforeBattle dw Route14AfterBattleText2 ; 0x5aa8 TextAfterBattle dw Route14EndBattleText2 ; 0x5aa3 TextEndBattle dw Route14EndBattleText2 ; 0x5aa3 TextEndBattle ; 0x55a1a Route14TrainerHeader2: ; 0x55a1a db $3 ; flag's bit db ($4 << 4) ; trainer's view range dw $d7db ; flag's byte dw Route14BattleText3 ; 0x5ab7 TextBeforeBattle dw Route14AfterBattleText3 ; 0x5ac1 TextAfterBattle dw Route14EndBattleText3 ; 0x5abc TextEndBattle dw Route14EndBattleText3 ; 0x5abc TextEndBattle ; 0x55a26 Route14TrainerHeader3: ; 0x55a26 db $4 ; flag's bit db ($3 << 4) ; trainer's view range dw $d7db ; flag's byte dw Route14BattleText4 ; 0x5ad0 TextBeforeBattle dw Route14AfterBattleText4 ; 0x5ada TextAfterBattle dw Route14EndBattleText4 ; 0x5ad5 TextEndBattle dw Route14EndBattleText4 ; 0x5ad5 TextEndBattle ; 0x55a32 Route14TrainerHeader4: ; 0x55a32 db $5 ; flag's bit db ($3 << 4) ; trainer's view range dw $d7db ; flag's byte dw Route14BattleText5 ; 0x5ae9 TextBeforeBattle dw Route14AfterBattleText5 ; 0x5af3 TextAfterBattle dw Route14EndBattleText5 ; 0x5aee TextEndBattle dw Route14EndBattleText5 ; 0x5aee TextEndBattle ; 0x55a3e Route14TrainerHeader5: ; 0x55a3e db $6 ; flag's bit db ($4 << 4) ; trainer's view range dw $d7db ; flag's byte dw Route14BattleText6 ; 0x5b02 TextBeforeBattle dw Route14AfterBattleText6 ; 0x5b0c TextAfterBattle dw Route14EndBattleText6 ; 0x5b07 TextEndBattle dw Route14EndBattleText6 ; 0x5b07 TextEndBattle ; 0x55a4a Route14TrainerHeader6: ; 0x55a4a db $7 ; flag's bit db ($4 << 4) ; trainer's view range dw $d7db ; flag's byte dw Route14BattleText7 ; 0x5b1b TextBeforeBattle dw Route14AfterBattleText7 ; 0x5b25 TextAfterBattle dw Route14EndBattleText7 ; 0x5b20 TextEndBattle dw Route14EndBattleText7 ; 0x5b20 TextEndBattle ; 0x55a56 Route14TrainerHeader7: ; 0x55a56 db $8 ; flag's bit db ($4 << 4) ; trainer's view range dw $d7db ; flag's byte dw Route14BattleText8 ; 0x5b34 TextBeforeBattle dw Route14AfterBattleText8 ; 0x5b3e TextAfterBattle dw Route14EndBattleText8 ; 0x5b39 TextEndBattle dw Route14EndBattleText8 ; 0x5b39 TextEndBattle ; 0x55a62 Route14TrainerHeader8: ; 0x55a62 db $9 ; flag's bit db ($3 << 4) ; trainer's view range dw $d7db ; flag's byte dw Route14BattleText9 ; 0x5b4d TextBeforeBattle dw Route14AfterBattleText9 ; 0x5b57 TextAfterBattle dw Route14EndBattleText9 ; 0x5b52 TextEndBattle dw Route14EndBattleText9 ; 0x5b52 TextEndBattle ; 0x55a6e Route14TrainerHeader9: ; 0x55a6e db $a ; flag's bit db ($4 << 4) ; trainer's view range dw $d7db ; flag's byte dw Route14BattleText10 ; 0x5b66 TextBeforeBattle dw Route14AfterBattleText10 ; 0x5b70 TextAfterBattle dw Route14EndBattleText10 ; 0x5b6b TextEndBattle dw Route14EndBattleText10 ; 0x5b6b TextEndBattle ; 0x55a7a db $ff Route14Text1: ; 0x55a7b db $08 ; asm ld hl, Route14TrainerHeader0 call LoadTrainerHeader jp TextScriptEnd Route14BattleText1: ; 0x55a85 TX_FAR _Route14BattleText1 db $50 ; 0x55a85 + 5 bytes Route14EndBattleText1: ; 0x55a8a TX_FAR _Route14EndBattleText1 db $50 ; 0x55a8a + 5 bytes Route14AfterBattleText1: ; 0x55a8f TX_FAR _Route14AfterBattleText1 db $50 ; 0x55a8f + 5 bytes Route14Text2: ; 0x55a94 db $08 ; asm ld hl, Route14TrainerHeader1 call LoadTrainerHeader jp TextScriptEnd Route14BattleText2: ; 0x55a9e TX_FAR _Route14BattleText2 db $50 ; 0x55a9e + 5 bytes Route14EndBattleText2: ; 0x55aa3 TX_FAR _Route14EndBattleText2 db $50 ; 0x55aa3 + 5 bytes Route14AfterBattleText2: ; 0x55aa8 TX_FAR _Route14AfterBattleText2 db $50 ; 0x55aa8 + 5 bytes Route14Text3: ; 0x55aad db $08 ; asm ld hl, Route14TrainerHeader2 call LoadTrainerHeader jp TextScriptEnd Route14BattleText3: ; 0x55ab7 TX_FAR _Route14BattleText3 db $50 ; 0x55ab7 + 5 bytes Route14EndBattleText3: ; 0x55abc TX_FAR _Route14EndBattleText3 db $50 ; 0x55abc + 5 bytes Route14AfterBattleText3: ; 0x55ac1 TX_FAR _Route14AfterBattleText3 db $50 ; 0x55ac1 + 5 bytes Route14Text4: ; 0x55ac6 db $08 ; asm ld hl, Route14TrainerHeader3 call LoadTrainerHeader jp TextScriptEnd Route14BattleText4: ; 0x55ad0 TX_FAR _Route14BattleText4 db $50 ; 0x55ad0 + 5 bytes Route14EndBattleText4: ; 0x55ad5 TX_FAR _Route14EndBattleText4 db $50 ; 0x55ad5 + 5 bytes Route14AfterBattleText4: ; 0x55ada TX_FAR _Route14AfterBattleText4 db $50 ; 0x55ada + 5 bytes Route14Text5: ; 0x55adf db $08 ; asm ld hl, Route14TrainerHeader4 call LoadTrainerHeader jp TextScriptEnd Route14BattleText5: ; 0x55ae9 TX_FAR _Route14BattleText5 db $50 ; 0x55ae9 + 5 bytes Route14EndBattleText5: ; 0x55aee TX_FAR _Route14EndBattleText5 db $50 ; 0x55aee + 5 bytes Route14AfterBattleText5: ; 0x55af3 TX_FAR _Route14AfterBattleText5 db $50 ; 0x55af3 + 5 bytes Route14Text6: ; 0x55af8 db $08 ; asm ld hl, Route14TrainerHeader5 call LoadTrainerHeader jp TextScriptEnd Route14BattleText6: ; 0x55b02 TX_FAR _Route14BattleText6 db $50 ; 0x55b02 + 5 bytes Route14EndBattleText6: ; 0x55b07 TX_FAR _Route14EndBattleText6 db $50 ; 0x55b07 + 5 bytes Route14AfterBattleText6: ; 0x55b0c TX_FAR _Route14AfterBattleText6 db $50 ; 0x55b0c + 5 bytes Route14Text7: ; 0x55b11 db $08 ; asm ld hl, Route14TrainerHeader6 call LoadTrainerHeader jp TextScriptEnd Route14BattleText7: ; 0x55b1b TX_FAR _Route14BattleText7 db $50 ; 0x55b1b + 5 bytes Route14EndBattleText7: ; 0x55b20 TX_FAR _Route14EndBattleText7 db $50 ; 0x55b20 + 5 bytes Route14AfterBattleText7: ; 0x55b25 TX_FAR _Route14AfterBattleText7 db $50 ; 0x55b25 + 5 bytes Route14Text8: ; 0x55b2a db $08 ; asm ld hl, Route14TrainerHeader7 call LoadTrainerHeader jp TextScriptEnd Route14BattleText8: ; 0x55b34 TX_FAR _Route14BattleText8 db $50 ; 0x55b34 + 5 bytes Route14EndBattleText8: ; 0x55b39 TX_FAR _Route14EndBattleText8 db $50 ; 0x55b39 + 5 bytes Route14AfterBattleText8: ; 0x55b3e TX_FAR _Route14AfterBattleText8 db $50 ; 0x55b3e + 5 bytes Route14Text9: ; 0x55b43 db $08 ; asm ld hl, Route14TrainerHeader8 call LoadTrainerHeader jp TextScriptEnd Route14BattleText9: ; 0x55b4d TX_FAR _Route14BattleText9 db $50 ; 0x55b4d + 5 bytes Route14EndBattleText9: ; 0x55b52 TX_FAR _Route14EndBattleText9 db $50 ; 0x55b52 + 5 bytes Route14AfterBattleText9: ; 0x55b57 TX_FAR _Route14AfterBattleText9 db $50 ; 0x55b57 + 5 bytes Route14Text10: ; 0x55b5c db $08 ; asm ld hl, Route14TrainerHeader9 call LoadTrainerHeader jp TextScriptEnd Route14BattleText10: ; 0x55b66 TX_FAR _Route14BattleText10 db $50 ; 0x55b66 + 5 bytes Route14EndBattleText10: ; 0x55b6b TX_FAR _Route14EndBattleText10 db $50 ; 0x55b6b + 5 bytes Route14AfterBattleText10: ; 0x55b70 TX_FAR _Route14AfterBattleText10 db $50 ; 0x55b70 + 5 bytes Route14Text11: ; 0x55b75 TX_FAR _Route14Text11 db $50 Route17Script: ; 0x55b7a call $3c3c ld hl, Route17TrainerHeaders ld de, Route17_Unknown55b8d ld a, [$d61c] call $3160 ld [$d61c], a ret ; 0x55b8d Route17_Unknown55b8d: ; 0x55b8d INCBIN "baserom.gbc",$55b8d,$6 Route17Texts: ; 0x55b93 dw Route17Text1, Route17Text2, Route17Text3, Route17Text4, Route17Text5, Route17Text6, Route17Text7, Route17Text8, Route17Text9, Route17Text10, Route17Text11, Route17Text12, Route17Text13, Route17Text14, Route17Text15, Route17Text16 Route17TrainerHeaders: Route17TrainerHeader0: ; 0x55bb3 db $1 ; flag's bit db ($3 << 4) ; trainer's view range dw $d7e1 ; flag's byte dw Route17BattleText1 ; 0x5c36 TextBeforeBattle dw Route17AfterBattleText1 ; 0x5c40 TextAfterBattle dw Route17EndBattleText1 ; 0x5c3b TextEndBattle dw Route17EndBattleText1 ; 0x5c3b TextEndBattle ; 0x55bbf Route17TrainerHeader1: ; 0x55bbf db $2 ; flag's bit db ($4 << 4) ; trainer's view range dw $d7e1 ; flag's byte dw Route17BattleText2 ; 0x5c4f TextBeforeBattle dw Route17AfterBattleText2 ; 0x5c59 TextAfterBattle dw Route17EndBattleText2 ; 0x5c54 TextEndBattle dw Route17EndBattleText2 ; 0x5c54 TextEndBattle ; 0x55bcb Route17TrainerHeader2: ; 0x55bcb db $3 ; flag's bit db ($4 << 4) ; trainer's view range dw $d7e1 ; flag's byte dw Route17BattleText3 ; 0x5c68 TextBeforeBattle dw Route17AfterBattleText3 ; 0x5c72 TextAfterBattle dw Route17EndBattleText3 ; 0x5c6d TextEndBattle dw Route17EndBattleText3 ; 0x5c6d TextEndBattle ; 0x55bd7 Route17TrainerHeader3: ; 0x55bd7 db $4 ; flag's bit db ($4 << 4) ; trainer's view range dw $d7e1 ; flag's byte dw Route17BattleText4 ; 0x5c81 TextBeforeBattle dw Route17AfterBattleText4 ; 0x5c8b TextAfterBattle dw Route17EndBattleText4 ; 0x5c86 TextEndBattle dw Route17EndBattleText4 ; 0x5c86 TextEndBattle ; 0x55be3 Route17TrainerHeader4: ; 0x55be3 db $5 ; flag's bit db ($3 << 4) ; trainer's view range dw $d7e1 ; flag's byte dw Route17BattleText5 ; 0x5c9a TextBeforeBattle dw Route17AfterBattleText5 ; 0x5ca4 TextAfterBattle dw Route17EndBattleText5 ; 0x5c9f TextEndBattle dw Route17EndBattleText5 ; 0x5c9f TextEndBattle ; 0x55bef Route17TrainerHeader5: ; 0x55bef db $6 ; flag's bit db ($2 << 4) ; trainer's view range dw $d7e1 ; flag's byte dw Route17BattleText6 ; 0x5cb3 TextBeforeBattle dw Route17AfterBattleText6 ; 0x5cbd TextAfterBattle dw Route17EndBattleText6 ; 0x5cb8 TextEndBattle dw Route17EndBattleText6 ; 0x5cb8 TextEndBattle ; 0x55bfb Route17TrainerHeader6: ; 0x55bfb db $7 ; flag's bit db ($4 << 4) ; trainer's view range dw $d7e1 ; flag's byte dw Route17BattleText7 ; 0x5ccc TextBeforeBattle dw Route17AfterBattleText7 ; 0x5cd6 TextAfterBattle dw Route17EndBattleText7 ; 0x5cd1 TextEndBattle dw Route17EndBattleText7 ; 0x5cd1 TextEndBattle ; 0x55c07 Route17TrainerHeader7: ; 0x55c07 db $8 ; flag's bit db ($2 << 4) ; trainer's view range dw $d7e1 ; flag's byte dw Route17BattleText8 ; 0x5ce5 TextBeforeBattle dw Route17AfterBattleText8 ; 0x5cef TextAfterBattle dw Route17EndBattleText8 ; 0x5cea TextEndBattle dw Route17EndBattleText8 ; 0x5cea TextEndBattle ; 0x55c13 Route17TrainerHeader8: ; 0x55c13 db $9 ; flag's bit db ($3 << 4) ; trainer's view range dw $d7e1 ; flag's byte dw Route17BattleText9 ; 0x5cfe TextBeforeBattle dw Route17AfterBattleText9 ; 0x5d08 TextAfterBattle dw Route17EndBattleText9 ; 0x5d03 TextEndBattle dw Route17EndBattleText9 ; 0x5d03 TextEndBattle ; 0x55c1f Route17TrainerHeader9: ; 0x55c1f db $a ; flag's bit db ($4 << 4) ; trainer's view range dw $d7e1 ; flag's byte dw Route17BattleText10 ; 0x5d17 TextBeforeBattle dw Route17AfterBattleText10 ; 0x5d21 TextAfterBattle dw Route17EndBattleText10 ; 0x5d1c TextEndBattle dw Route17EndBattleText10 ; 0x5d1c TextEndBattle ; 0x55c2b db $ff Route17Text1: ; 0x55c2c db $08 ; asm ld hl, Route17TrainerHeader0 call LoadTrainerHeader jp TextScriptEnd Route17BattleText1: ; 0x55c36 TX_FAR _Route17BattleText1 db $50 ; 0x55c36 + 5 bytes Route17EndBattleText1: ; 0x55c3b TX_FAR _Route17EndBattleText1 db $50 ; 0x55c3b + 5 bytes Route17AfterBattleText1: ; 0x55c40 TX_FAR _Route17AfterBattleText1 db $50 ; 0x55c40 + 5 bytes Route17Text2: ; 0x55c45 db $08 ; asm ld hl, Route17TrainerHeader1 call LoadTrainerHeader jp TextScriptEnd Route17BattleText2: ; 0x55c4f TX_FAR _Route17BattleText2 db $50 ; 0x55c4f + 5 bytes Route17EndBattleText2: ; 0x55c54 TX_FAR _Route17EndBattleText2 db $50 ; 0x55c54 + 5 bytes Route17AfterBattleText2: ; 0x55c59 TX_FAR _Route17AfterBattleText2 db $50 ; 0x55c59 + 5 bytes Route17Text3: ; 0x55c5e db $08 ; asm ld hl, Route17TrainerHeader2 call LoadTrainerHeader jp TextScriptEnd Route17BattleText3: ; 0x55c68 TX_FAR _Route17BattleText3 db $50 ; 0x55c68 + 5 bytes Route17EndBattleText3: ; 0x55c6d TX_FAR _Route17EndBattleText3 db $50 ; 0x55c6d + 5 bytes Route17AfterBattleText3: ; 0x55c72 TX_FAR _Route17AfterBattleText3 db $50 ; 0x55c72 + 5 bytes Route17Text4: ; 0x55c77 db $08 ; asm ld hl, Route17TrainerHeader3 call LoadTrainerHeader jp TextScriptEnd Route17BattleText4: ; 0x55c81 TX_FAR _Route17BattleText4 db $50 ; 0x55c81 + 5 bytes Route17EndBattleText4: ; 0x55c86 TX_FAR _Route17EndBattleText4 db $50 ; 0x55c86 + 5 bytes Route17AfterBattleText4: ; 0x55c8b TX_FAR _Route17AfterBattleText4 db $50 ; 0x55c8b + 5 bytes Route17Text5: ; 0x55c90 db $08 ; asm ld hl, Route17TrainerHeader4 call LoadTrainerHeader jp TextScriptEnd Route17BattleText5: ; 0x55c9a TX_FAR _Route17BattleText5 db $50 ; 0x55c9a + 5 bytes Route17EndBattleText5: ; 0x55c9f TX_FAR _Route17EndBattleText5 db $50 ; 0x55c9f + 5 bytes Route17AfterBattleText5: ; 0x55ca4 TX_FAR _Route17AfterBattleText5 db $50 ; 0x55ca4 + 5 bytes Route17Text6: ; 0x55ca9 db $08 ; asm ld hl, Route17TrainerHeader5 call LoadTrainerHeader jp TextScriptEnd Route17BattleText6: ; 0x55cb3 TX_FAR _Route17BattleText6 db $50 ; 0x55cb3 + 5 bytes Route17EndBattleText6: ; 0x55cb8 TX_FAR _Route17EndBattleText6 db $50 ; 0x55cb8 + 5 bytes Route17AfterBattleText6: ; 0x55cbd TX_FAR _Route17AfterBattleText6 db $50 ; 0x55cbd + 5 bytes Route17Text7: ; 0x55cc2 db $08 ; asm ld hl, Route17TrainerHeader6 call LoadTrainerHeader jp TextScriptEnd Route17BattleText7: ; 0x55ccc TX_FAR _Route17BattleText7 db $50 ; 0x55ccc + 5 bytes Route17EndBattleText7: ; 0x55cd1 TX_FAR _Route17EndBattleText7 db $50 ; 0x55cd1 + 5 bytes Route17AfterBattleText7: ; 0x55cd6 TX_FAR _Route17AfterBattleText7 db $50 ; 0x55cd6 + 5 bytes Route17Text8: ; 0x55cdb db $08 ; asm ld hl, Route17TrainerHeader7 call LoadTrainerHeader jp TextScriptEnd Route17BattleText8: ; 0x55ce5 TX_FAR _Route17BattleText8 db $50 ; 0x55ce5 + 5 bytes Route17EndBattleText8: ; 0x55cea TX_FAR _Route17EndBattleText8 db $50 ; 0x55cea + 5 bytes Route17AfterBattleText8: ; 0x55cef TX_FAR _Route17AfterBattleText8 db $50 ; 0x55cef + 5 bytes Route17Text9: ; 0x55cf4 db $08 ; asm ld hl, Route17TrainerHeader8 call LoadTrainerHeader jp TextScriptEnd Route17BattleText9: ; 0x55cfe TX_FAR _Route17BattleText9 db $50 ; 0x55cfe + 5 bytes Route17EndBattleText9: ; 0x55d03 TX_FAR _Route17EndBattleText9 db $50 ; 0x55d03 + 5 bytes Route17AfterBattleText9: ; 0x55d08 TX_FAR _Route17AfterBattleText9 db $50 ; 0x55d08 + 5 bytes Route17Text10: ; 0x55d0d db $08 ; asm ld hl, Route17TrainerHeader9 call LoadTrainerHeader jp TextScriptEnd Route17BattleText10: ; 0x55d17 TX_FAR _Route17BattleText10 db $50 ; 0x55d17 + 5 bytes Route17EndBattleText10: ; 0x55d1c TX_FAR _Route17EndBattleText10 db $50 ; 0x55d1c + 5 bytes Route17AfterBattleText10: ; 0x55d21 TX_FAR _Route17AfterBattleText10 db $50 ; 0x55d21 + 5 bytes Route17Text11: ; 0x55d26 TX_FAR _Route17Text11 db $50 Route17Text12: ; 0x55d2b TX_FAR _Route17Text12 db $50 Route17Text13: ; 0x55d30 TX_FAR _Route17Text13 db $50 Route17Text14: ; 0x55d35 TX_FAR _Route17Text14 db $50 Route17Text15: ; 0x55d3a TX_FAR _Route17Text15 db $50 Route17Text16: ; 0x55d3f TX_FAR _Route17Text16 db $50 Route19Script: ; 0x55d44 call $3c3c ld hl, Route19TrainerHeaders ld de, Route19_Unknown55d57 ld a, [$d61d] call $3160 ld [$d61d], a ret ; 0x55d57 Route19_Unknown55d57: ; 0x55d57 INCBIN "baserom.gbc",$55d57,$6 Route19Texts: ; 0x55d5d dw Route19Text1, Route19Text2, Route19Text3, Route19Text4, Route19Text5, Route19Text6, Route19Text7, Route19Text8, Route19Text9, Route19Text10, Route19Text11 Route19TrainerHeaders: Route19TrainerHeader0: ; 0x55d73 db $1 ; flag's bit db ($4 << 4) ; trainer's view range dw $d7e5 ; flag's byte dw Route19BattleText1 ; 0x5e50 TextBeforeBattle dw Route19AfterBattleText1 ; 0x5e5a TextAfterBattle dw Route19EndBattleText1 ; 0x5e55 TextEndBattle dw Route19EndBattleText1 ; 0x5e55 TextEndBattle ; 0x55d7f Route19TrainerHeader1: ; 0x55d7f db $2 ; flag's bit db ($3 << 4) ; trainer's view range dw $d7e5 ; flag's byte dw Route19BattleText2 ; 0x5e5f TextBeforeBattle dw Route19AfterBattleText2 ; 0x5e69 TextAfterBattle dw Route19EndBattleText2 ; 0x5e64 TextEndBattle dw Route19EndBattleText2 ; 0x5e64 TextEndBattle ; 0x55d8b Route19TrainerHeader2: ; 0x55d8b db $3 ; flag's bit db ($3 << 4) ; trainer's view range dw $d7e5 ; flag's byte dw Route19BattleText3 ; 0x5e6e TextBeforeBattle dw Route19AfterBattleText3 ; 0x5e78 TextAfterBattle dw Route19EndBattleText3 ; 0x5e73 TextEndBattle dw Route19EndBattleText3 ; 0x5e73 TextEndBattle ; 0x55d97 Route19TrainerHeader3: ; 0x55d97 db $4 ; flag's bit db ($4 << 4) ; trainer's view range dw $d7e5 ; flag's byte dw Route19BattleText4 ; 0x5e7d TextBeforeBattle dw Route19AfterBattleText4 ; 0x5e87 TextAfterBattle dw Route19EndBattleText4 ; 0x5e82 TextEndBattle dw Route19EndBattleText4 ; 0x5e82 TextEndBattle ; 0x55da3 Route19TrainerHeader4: ; 0x55da3 db $5 ; flag's bit db ($4 << 4) ; trainer's view range dw $d7e5 ; flag's byte dw Route19BattleText5 ; 0x5e8c TextBeforeBattle dw Route19AfterBattleText5 ; 0x5e96 TextAfterBattle dw Route19EndBattleText5 ; 0x5e91 TextEndBattle dw Route19EndBattleText5 ; 0x5e91 TextEndBattle ; 0x55daf Route19TrainerHeader5: ; 0x55daf db $6 ; flag's bit db ($4 << 4) ; trainer's view range dw $d7e5 ; flag's byte dw Route19BattleText6 ; 0x5e9b TextBeforeBattle dw Route19AfterBattleText6 ; 0x5ea5 TextAfterBattle dw Route19EndBattleText6 ; 0x5ea0 TextEndBattle dw Route19EndBattleText6 ; 0x5ea0 TextEndBattle ; 0x55dbb Route19TrainerHeader6: ; 0x55dbb db $7 ; flag's bit db ($3 << 4) ; trainer's view range dw $d7e5 ; flag's byte dw Route19BattleText7 ; 0x5eaa TextBeforeBattle dw Route19AfterBattleText7 ; 0x5eb4 TextAfterBattle dw Route19EndBattleText7 ; 0x5eaf TextEndBattle dw Route19EndBattleText7 ; 0x5eaf TextEndBattle ; 0x55dc7 Route19TrainerHeader7: ; 0x55dc7 db $8 ; flag's bit db ($4 << 4) ; trainer's view range dw $d7e5 ; flag's byte dw Route19BattleText8 ; 0x5eb9 TextBeforeBattle dw Route19AfterBattleText8 ; 0x5ec3 TextAfterBattle dw Route19EndBattleText8 ; 0x5ebe TextEndBattle dw Route19EndBattleText8 ; 0x5ebe TextEndBattle ; 0x55dd3 Route19TrainerHeader8: ; 0x55dd3 db $9 ; flag's bit db ($4 << 4) ; trainer's view range dw $d7e5 ; flag's byte dw Route19BattleText9 ; 0x5ec8 TextBeforeBattle dw Route19AfterBattleText9 ; 0x5ed2 TextAfterBattle dw Route19EndBattleText9 ; 0x5ecd TextEndBattle dw Route19EndBattleText9 ; 0x5ecd TextEndBattle ; 0x55ddf Route19TrainerHeader9: ; 0x55ddf db $a ; flag's bit db ($4 << 4) ; trainer's view range dw $d7e5 ; flag's byte dw Route19BattleText10 ; 0x5ed7 TextBeforeBattle dw Route19AfterBattleText10 ; 0x5ee1 TextAfterBattle dw Route19EndBattleText10 ; 0x5edc TextEndBattle dw Route19EndBattleText10 ; 0x5edc TextEndBattle ; 0x55deb db $ff Route19Text1: ; 0x55dec db $08 ; asm ld hl, Route19TrainerHeader0 call LoadTrainerHeader jp TextScriptEnd Route19Text2: ; 0x55df6 db $08 ; asm ld hl, Route19TrainerHeader1 call LoadTrainerHeader jp TextScriptEnd Route19Text3: ; 0x55e00 db $08 ; asm ld hl, Route19TrainerHeader2 call LoadTrainerHeader jp TextScriptEnd Route19Text4: ; 0x55e0a db $08 ; asm ld hl, Route19TrainerHeader3 call LoadTrainerHeader jp TextScriptEnd Route19Text5: ; 0x55e14 db $08 ; asm ld hl, Route19TrainerHeader4 call LoadTrainerHeader jp TextScriptEnd Route19Text6: ; 0x55e1e db $08 ; asm ld hl, Route19TrainerHeader5 call LoadTrainerHeader jp TextScriptEnd Route19Text7: ; 0x55e28 db $08 ; asm ld hl, Route19TrainerHeader6 call LoadTrainerHeader jp TextScriptEnd Route19Text8: ; 0x55e32 db $08 ; asm ld hl, Route19TrainerHeader7 call LoadTrainerHeader jp TextScriptEnd Route19Text9: ; 0x55e3c db $08 ; asm ld hl, Route19TrainerHeader8 call LoadTrainerHeader jp TextScriptEnd Route19Text10: ; 0x55e46 db $08 ; asm ld hl, Route19TrainerHeader9 call LoadTrainerHeader jp TextScriptEnd Route19BattleText1: ; 0x55e50 TX_FAR _Route19BattleText1 db $50 ; 0x55e50 + 5 bytes Route19EndBattleText1: ; 0x55e55 TX_FAR _Route19EndBattleText1 db $50 ; 0x55e55 + 5 bytes Route19AfterBattleText1: ; 0x55e5a TX_FAR _Route19AfterBattleText1 db $50 ; 0x55e5a + 5 bytes Route19BattleText2: ; 0x55e5f TX_FAR _Route19BattleText2 db $50 ; 0x55e5f + 5 bytes Route19EndBattleText2: ; 0x55e64 TX_FAR _Route19EndBattleText2 db $50 ; 0x55e64 + 5 bytes Route19AfterBattleText2: ; 0x55e69 TX_FAR _Route19AfterBattleText2 db $50 ; 0x55e69 + 5 bytes Route19BattleText3: ; 0x55e6e TX_FAR _Route19BattleText3 db $50 ; 0x55e6e + 5 bytes Route19EndBattleText3: ; 0x55e73 TX_FAR _Route19EndBattleText3 db $50 ; 0x55e73 + 5 bytes Route19AfterBattleText3: ; 0x55e78 TX_FAR _Route19AfterBattleText3 db $50 ; 0x55e78 + 5 bytes Route19BattleText4: ; 0x55e7d TX_FAR _Route19BattleText4 db $50 ; 0x55e7d + 5 bytes Route19EndBattleText4: ; 0x55e82 TX_FAR _Route19EndBattleText4 db $50 ; 0x55e82 + 5 bytes Route19AfterBattleText4: ; 0x55e87 TX_FAR _Route19AfterBattleText4 db $50 ; 0x55e87 + 5 bytes Route19BattleText5: ; 0x55e8c TX_FAR _Route19BattleText5 db $50 ; 0x55e8c + 5 bytes Route19EndBattleText5: ; 0x55e91 TX_FAR _Route19EndBattleText5 db $50 ; 0x55e91 + 5 bytes Route19AfterBattleText5: ; 0x55e96 TX_FAR _Route19AfterBattleText5 db $50 ; 0x55e96 + 5 bytes Route19BattleText6: ; 0x55e9b TX_FAR _Route19BattleText6 db $50 ; 0x55e9b + 5 bytes Route19EndBattleText6: ; 0x55ea0 TX_FAR _Route19EndBattleText6 db $50 ; 0x55ea0 + 5 bytes Route19AfterBattleText6: ; 0x55ea5 TX_FAR _Route19AfterBattleText6 db $50 ; 0x55ea5 + 5 bytes Route19BattleText7: ; 0x55eaa TX_FAR _Route19BattleText7 db $50 ; 0x55eaa + 5 bytes Route19EndBattleText7: ; 0x55eaf TX_FAR _Route19EndBattleText7 db $50 ; 0x55eaf + 5 bytes Route19AfterBattleText7: ; 0x55eb4 TX_FAR _Route19AfterBattleText7 db $50 ; 0x55eb4 + 5 bytes Route19BattleText8: ; 0x55eb9 TX_FAR _Route19BattleText8 db $50 ; 0x55eb9 + 5 bytes Route19EndBattleText8: ; 0x55ebe TX_FAR _Route19EndBattleText8 db $50 ; 0x55ebe + 5 bytes Route19AfterBattleText8: ; 0x55ec3 TX_FAR _Route19AfterBattleText8 db $50 ; 0x55ec3 + 5 bytes Route19BattleText9: ; 0x55ec8 TX_FAR _Route19BattleText9 db $50 ; 0x55ec8 + 5 bytes Route19EndBattleText9: ; 0x55ecd TX_FAR _Route19EndBattleText9 db $50 ; 0x55ecd + 5 bytes Route19AfterBattleText9: ; 0x55ed2 TX_FAR _Route19AfterBattleText9 db $50 ; 0x55ed2 + 5 bytes Route19BattleText10: ; 0x55ed7 TX_FAR _Route19BattleText10 db $50 ; 0x55ed7 + 5 bytes Route19EndBattleText10: ; 0x55edc TX_FAR _Route19EndBattleText10 db $50 ; 0x55edc + 5 bytes Route19AfterBattleText10: ; 0x55ee1 TX_FAR _Route19AfterBattleText10 db $50 ; 0x55ee1 + 5 bytes Route19Text11: ; 0x55ee6 TX_FAR _Route19Text11 db $50 Route21Script: ; 0x55eeb call $3c3c ld hl, Route21TrainerHeaders ld de, Route21_Unknown55efe ld a, [$d61e] call $3160 ld [$d61e], a ret ; 0x55efe Route21_Unknown55efe: ; 0x55efe INCBIN "baserom.gbc",$55efe,$6 Route21Texts: ; 0x55f04 dw Route21Text1, Route21Text2, Route21Text3, Route21Text4, Route21Text5, Route21Text6, Route21Text7, Route21Text8, Route21Text9 Route21TrainerHeaders: Route21TrainerHeader0: ; 0x55f16 db $1 ; flag's bit db ($0 << 4) ; trainer's view range dw $d7e9 ; flag's byte dw Route21BattleText1 ; 0x5fdd TextBeforeBattle dw Route21AfterBattleText1 ; 0x5fe7 TextAfterBattle dw Route21EndBattleText1 ; 0x5fe2 TextEndBattle dw Route21EndBattleText1 ; 0x5fe2 TextEndBattle ; 0x55f22 Route21TrainerHeader1: ; 0x55f22 db $2 ; flag's bit db ($0 << 4) ; trainer's view range dw $d7e9 ; flag's byte dw Route21BattleText2 ; 0x5fec TextBeforeBattle dw Route21AfterBattleText2 ; 0x5ff6 TextAfterBattle dw Route21EndBattleText2 ; 0x5ff1 TextEndBattle dw Route21EndBattleText2 ; 0x5ff1 TextEndBattle ; 0x55f2e Route21TrainerHeader2: ; 0x55f2e db $3 ; flag's bit db ($4 << 4) ; trainer's view range dw $d7e9 ; flag's byte dw Route21BattleText3 ; 0x5ffb TextBeforeBattle dw Route21AfterBattleText3 ; 0x6005 TextAfterBattle dw Route21EndBattleText3 ; 0x6000 TextEndBattle dw Route21EndBattleText3 ; 0x6000 TextEndBattle ; 0x55f3a Route21TrainerHeader3: ; 0x55f3a db $4 ; flag's bit db ($4 << 4) ; trainer's view range dw $d7e9 ; flag's byte dw Route21BattleText4 ; 0x600a TextBeforeBattle dw Route21AfterBattleText4 ; 0x6014 TextAfterBattle dw Route21EndBattleText4 ; 0x600f TextEndBattle dw Route21EndBattleText4 ; 0x600f TextEndBattle ; 0x55f46 Route21TrainerHeader4: ; 0x55f46 db $5 ; flag's bit db ($4 << 4) ; trainer's view range dw $d7e9 ; flag's byte dw Route21BattleText5 ; 0x6019 TextBeforeBattle dw Route21AfterBattleText5 ; 0x6023 TextAfterBattle dw Route21EndBattleText5 ; 0x601e TextEndBattle dw Route21EndBattleText5 ; 0x601e TextEndBattle ; 0x55f52 Route21TrainerHeader5: ; 0x55f52 db $6 ; flag's bit db ($4 << 4) ; trainer's view range dw $d7e9 ; flag's byte dw Route21BattleText6 ; 0x6028 TextBeforeBattle dw Route21AfterBattleText6 ; 0x6032 TextAfterBattle dw Route21EndBattleText6 ; 0x602d TextEndBattle dw Route21EndBattleText6 ; 0x602d TextEndBattle ; 0x55f5e Route21TrainerHeader6: ; 0x55f5e db $7 ; flag's bit db ($3 << 4) ; trainer's view range dw $d7e9 ; flag's byte dw Route21BattleText7 ; 0x6037 TextBeforeBattle dw Route21AfterBattleText7 ; 0x6041 TextAfterBattle dw Route21EndBattleText7 ; 0x603c TextEndBattle dw Route21EndBattleText7 ; 0x603c TextEndBattle ; 0x55f6a Route21TrainerHeader7: ; 0x55f6a db $8 ; flag's bit db ($0 << 4) ; trainer's view range dw $d7e9 ; flag's byte dw Route21BattleText8 ; 0x6046 TextBeforeBattle dw Route21AfterBattleText8 ; 0x6050 TextAfterBattle dw Route21EndBattleText8 ; 0x604b TextEndBattle dw Route21EndBattleText8 ; 0x604b TextEndBattle ; 0x55f76 Route21TrainerHeader8: ; 0x55f76 db $9 ; flag's bit db ($0 << 4) ; trainer's view range dw $d7e9 ; flag's byte dw Route21BattleText9 ; 0x6055 TextBeforeBattle dw Route21AfterBattleText9 ; 0x605f TextAfterBattle dw Route21EndBattleText9 ; 0x605a TextEndBattle dw Route21EndBattleText9 ; 0x605a TextEndBattle ; 0x55f82 db $ff Route21Text1: ; 0x55f83 db $08 ; asm ld hl, Route21TrainerHeader0 call LoadTrainerHeader jp TextScriptEnd Route21Text2: ; 0x55f8d db $08 ; asm ld hl, Route21TrainerHeader1 call LoadTrainerHeader jp TextScriptEnd Route21Text3: ; 0x55f97 db $08 ; asm ld hl, Route21TrainerHeader2 call LoadTrainerHeader jp TextScriptEnd Route21Text4: ; 0x55fa1 db $08 ; asm ld hl, Route21TrainerHeader3 call LoadTrainerHeader jp TextScriptEnd Route21Text5: ; 0x55fab db $08 ; asm ld hl, Route21TrainerHeader4 call LoadTrainerHeader jp TextScriptEnd Route21Text6: ; 0x55fb5 db $08 ; asm ld hl, Route21TrainerHeader5 call LoadTrainerHeader jp TextScriptEnd Route21Text7: ; 0x55fbf db $08 ; asm ld hl, Route21TrainerHeader6 call LoadTrainerHeader jp TextScriptEnd Route21Text8: ; 0x55fc9 db $08 ; asm ld hl, Route21TrainerHeader7 call LoadTrainerHeader jp TextScriptEnd Route21Text9: ; 0x55fd3 db $08 ; asm ld hl, Route21TrainerHeader8 call LoadTrainerHeader jp TextScriptEnd Route21BattleText1: ; 0x55fdd TX_FAR _Route21BattleText1 db $50 ; 0x55fdd + 5 bytes Route21EndBattleText1: ; 0x55fe2 TX_FAR _Route21EndBattleText1 db $50 ; 0x55fe2 + 5 bytes Route21AfterBattleText1: ; 0x55fe7 TX_FAR _Route21AfterBattleText1 db $50 ; 0x55fe7 + 5 bytes Route21BattleText2: ; 0x55fec TX_FAR _Route21BattleText2 db $50 ; 0x55fec + 5 bytes Route21EndBattleText2: ; 0x55ff1 TX_FAR _Route21EndBattleText2 db $50 ; 0x55ff1 + 5 bytes Route21AfterBattleText2: ; 0x55ff6 TX_FAR _Route21AfterBattleText2 db $50 ; 0x55ff6 + 5 bytes Route21BattleText3: ; 0x55ffb TX_FAR _Route21BattleText3 db $50 ; 0x55ffb + 5 bytes Route21EndBattleText3: ; 0x56000 TX_FAR _Route21EndBattleText3 db $50 ; 0x56000 + 5 bytes Route21AfterBattleText3: ; 0x56005 TX_FAR _Route21AfterBattleText3 db $50 ; 0x56005 + 5 bytes Route21BattleText4: ; 0x5600a TX_FAR _Route21BattleText4 db $50 ; 0x5600a + 5 bytes Route21EndBattleText4: ; 0x5600f TX_FAR _Route21EndBattleText4 db $50 ; 0x5600f + 5 bytes Route21AfterBattleText4: ; 0x56014 TX_FAR _Route21AfterBattleText4 db $50 ; 0x56014 + 5 bytes Route21BattleText5: ; 0x56019 TX_FAR _Route21BattleText5 db $50 ; 0x56019 + 5 bytes Route21EndBattleText5: ; 0x5601e TX_FAR _Route21EndBattleText5 db $50 ; 0x5601e + 5 bytes Route21AfterBattleText5: ; 0x56023 TX_FAR _Route21AfterBattleText5 db $50 ; 0x56023 + 5 bytes Route21BattleText6: ; 0x56028 TX_FAR _Route21BattleText6 db $50 ; 0x56028 + 5 bytes Route21EndBattleText6: ; 0x5602d TX_FAR _Route21EndBattleText6 db $50 ; 0x5602d + 5 bytes Route21AfterBattleText6: ; 0x56032 TX_FAR _Route21AfterBattleText6 db $50 ; 0x56032 + 5 bytes Route21BattleText7: ; 0x56037 TX_FAR _Route21BattleText7 db $50 ; 0x56037 + 5 bytes Route21EndBattleText7: ; 0x5603c TX_FAR _Route21EndBattleText7 db $50 ; 0x5603c + 5 bytes Route21AfterBattleText7: ; 0x56041 TX_FAR _Route21AfterBattleText7 db $50 ; 0x56041 + 5 bytes Route21BattleText8: ; 0x56046 TX_FAR _Route21BattleText8 db $50 ; 0x56046 + 5 bytes Route21EndBattleText8: ; 0x5604b TX_FAR _Route21EndBattleText8 db $50 ; 0x5604b + 5 bytes Route21AfterBattleText8: ; 0x56050 TX_FAR _Route21AfterBattleText8 db $50 ; 0x56050 + 5 bytes Route21BattleText9: ; 0x56055 TX_FAR _Route21BattleText9 db $50 ; 0x56055 + 5 bytes Route21EndBattleText9: ; 0x5605a TX_FAR _Route21EndBattleText9 db $50 ; 0x5605a + 5 bytes Route21AfterBattleText9: ; 0x5605f TX_FAR _Route21AfterBattleText9 db $50 ; 0x5605f + 5 bytes VermilionHouse2_h: ; 0x56064 to 0x56070 (12 bytes) (id=163) db $08 ; tileset db VERMILION_HOUSE_2_HEIGHT, VERMILION_HOUSE_2_WIDTH ; dimensions (y, x) dw VermilionHouse2Blocks, VermilionHouse2Texts, VermilionHouse2Script ; blocks, texts, scripts db $00 ; connections dw VermilionHouse2Object ; objects VermilionHouse2Script: ; 0x56070 jp $3c3c ; 0x56073 VermilionHouse2Texts: ; 0x56073 dw VermilionHouse2Text1 VermilionHouse2Text1: ; 0x56075 db $08 ; asm ld a, [$d728] bit 3, a jr nz, asm_03ef5 ; 0x5607b ld hl, UnnamedText_560b1 call PrintText call $35ec ld a, [$cc26] and a jr nz, asm_eb1b7 ; 0x5608a ld bc, (OLD_ROD << 8) | 1 call GiveItem jr nc, asm_fd67b ; 0x56092 ld hl, $d728 set 3, [hl] ld hl, UnnamedText_560b6 jr asm_5dd95 ; 0x5609c asm_fd67b ; 0x5609e ld hl, UnnamedText_560ca jr asm_5dd95 ; 0x560a1 asm_eb1b7 ; 0x560a3 ld hl, UnnamedText_560c0 jr asm_5dd95 ; 0x560a6 asm_03ef5 ; 0x560a8 ld hl, UnnamedText_560c5 asm_5dd95 ; 0x560ab call PrintText jp TextScriptEnd UnnamedText_560b1: ; 0x560b1 TX_FAR _UnnamedText_560b1 db $50 ; 0x560b1 + 5 bytes UnnamedText_560b6: ; 0x560b6 TX_FAR _UnnamedText_560b6 ; 0x9c554 db $0B TX_FAR _UnnamedText_560bb ; 0x9c5a4 db $50 ; 0x560c0 UnnamedText_560c0: ; 0x560c0 TX_FAR _UnnamedText_560c0 db $50 ; 0x560c0 + 5 bytes UnnamedText_560c5: ; 0x560c5 TX_FAR _UnnamedText_560c5 db $50 ; 0x560c5 + 5 bytes UnnamedText_560ca: ; 0x560ca TX_FAR _UnnamedText_560ca db $50 ; 0x560ca + 5 bytes VermilionHouse2Object: ; 0x560cf (size=26) db $a ; border tile db $2 ; warps db $7, $2, $8, $ff db $7, $3, $8, $ff db $0 ; signs db $1 ; people db SPRITE_FISHER, $4 + 4, $2 + 4, $ff, $d3, $1 ; person ; warp-to EVENT_DISP $4, $7, $2 EVENT_DISP $4, $7, $3 CeladonMart2_h: ; 0x560e9 to 0x560f5 (12 bytes) (id=123) db $12 ; tileset db CELADON_MART_2_HEIGHT, CELADON_MART_2_WIDTH ; dimensions (y, x) dw CeladonMart2Blocks, CeladonMart2Texts, CeladonMart2Script ; blocks, texts, scripts db $00 ; connections dw CeladonMart2Object ; objects CeladonMart2Script: ; 0x560f5 jp $3c3c ; 0x560f8 CeladonMart2Texts: ; 0x560f8 dw CeladonMart2Text1, CeladonMart2Text2, CeladonMart2Text3, CeladonMart2Text4, CeladonMart2Text5 CeladonMart2Text3: ; 0x56102 TX_FAR _CeladonMart2Text3 db $50 CeladonMart2Text4: ; 0x56107 TX_FAR _CeladonMart2Text4 db $50 CeladonMart2Text5: ; 0x5610c TX_FAR _CeladonMart2Text5 db $50 CeladonMart2Object: ; 0x56111 (size=55) db $f ; border tile db $3 ; warps db $1, $c, $4, CELADON_MART_1 db $1, $10, $1, CELADON_MART_3 db $1, $1, $0, CELADON_MART_ELEVATOR db $1 ; signs db $1, $e, $5 ; CeladonMart2Text5 db $4 ; people db SPRITE_MART_GUY, $3 + 4, $5 + 4, $ff, $d0, $1 ; person db SPRITE_MART_GUY, $3 + 4, $6 + 4, $ff, $d0, $2 ; person db SPRITE_FAT_BALD_GUY, $5 + 4, $13 + 4, $ff, $ff, $3 ; person db SPRITE_GIRL, $4 + 4, $e + 4, $fe, $1, $4 ; person ; warp-to EVENT_DISP $a, $1, $c ; CELADON_MART_1 EVENT_DISP $a, $1, $10 ; CELADON_MART_3 EVENT_DISP $a, $1, $1 ; CELADON_MART_ELEVATOR CeladonMart2Blocks: ; 0x56148 40 INCBIN "maps/celadonmart2.blk" FuchsiaHouse3_h: ; 0x56170 to 0x5617c (12 bytes) (id=164) db $0d ; tileset db FUCHSIA_HOUSE_3_HEIGHT, FUCHSIA_HOUSE_3_WIDTH ; dimensions (y, x) dw FuchsiaHouse3Blocks, FuchsiaHouse3Texts, FuchsiaHouse3Script ; blocks, texts, scripts db $00 ; connections dw FuchsiaHouse3Object ; objects FuchsiaHouse3Script: ; 0x5617c jp $3c3c ; 0x5617f FuchsiaHouse3Texts: ; 0x5617f dw FuchsiaHouse3Text1 FuchsiaHouse3Text1: ; 0x56181 db $08 ; asm ld a, [$d728] bit 4, a jr nz, asm_6084e ; 0x56187 ld hl, UnnamedText_561bd call PrintText call $35ec ld a, [$cc26] and a jr nz, asm_3ace4 ; 0x56196 ld bc, (GOOD_ROD << 8) | 1 call GiveItem jr nc, asm_628ee ; 0x5619e ld hl, $d728 set 4, [hl] ld hl, UnnamedText_561c2 jr asm_1b09c ; 0x561a8 asm_628ee ; 0x561aa ld hl, UnnamedText_5621c jr asm_1b09c ; 0x561ad asm_3ace4 ; 0x561af ld hl, UnnamedText_56212 jr asm_1b09c ; 0x561b2 asm_6084e ; 0x561b4 ld hl, UnnamedText_56217 asm_1b09c ; 0x561b7 call PrintText jp TextScriptEnd UnnamedText_561bd: ; 0x561bd TX_FAR _UnnamedText_561bd db $50 ; 0x561bd + 5 bytes UnnamedText_561c2: ; 0x561c2 TX_FAR _UnnamedText_561c2 ; 0xa06e8 db $0B, $50 ; 0x561c8 INCBIN "baserom.gbc",$561c8,$56212 - $561c8 UnnamedText_56212: ; 0x56212 TX_FAR _UnnamedText_56212 db $50 ; 0x56212 + 5 bytes UnnamedText_56217: ; 0x56217 TX_FAR _UnnamedText_56217 db $50 ; 0x56217 + 5 bytes UnnamedText_5621c: ; 0x5621c TX_FAR _UnnamedText_5621c db $50 ; 0x5621c + 5 bytes FuchsiaHouse3Object: ; 0x56221 (size=34) db $c ; border tile db $3 ; warps db $0, $2, $8, $ff db $7, $2, $7, $ff db $7, $3, $7, $ff db $0 ; signs db $1 ; people db SPRITE_FISHER, $3 + 4, $5 + 4, $ff, $d3, $1 ; person ; warp-to EVENT_DISP $4, $0, $2 EVENT_DISP $4, $7, $2 EVENT_DISP $4, $7, $3 DayCareM_h: ; 0x56243 to 0x5624f (12 bytes) (id=72) db $08 ; tileset db DAYCAREM_HEIGHT, DAYCAREM_WIDTH ; dimensions (y, x) dw DayCareMBlocks, DayCareMTexts, DayCareMScript ; blocks, texts, scripts db $00 ; connections dw DayCareMObject ; objects DayCareMScript: ; 0x5624f jp $3c3c ; 0x56252 DayCareMTexts: ; 0x56252 dw DayCareMText1 DayCareMText1: ; 0x56254 db $8 call $36f4 ld a, [$da48] and a jp nz, Unnamed_562e1 ld hl, UnnamedText_5640f call PrintText call $35ec ld a, [$cc26] and a ld hl, UnnamedText_5643b jp nz, Unnamed_56409 ld a, [$d163] dec a ld hl, UnnamedText_56445 jp z, Unnamed_56409 ld hl, UnnamedText_56414 call PrintText xor a ld [$cfcb], a ld [$d07d], a ld [$cc35], a call $13fc push af call $3dd4 call $3dbe call $20ba pop af ld hl, UnnamedText_56437 jp c, Unnamed_56409 ld hl, Route9TrainerHeader5 ld b, $8 call Bankswitch ld hl, UnnamedText_5644a jp c, Unnamed_56409 xor a ld [$cc2b], a ld a, [$cf92] ld hl, $d2b5 call $15ba ld hl, UnnamedText_56419 call PrintText ld a, $1 ld [$da48], a ld a, $3 ld [$cf95], a call $3a68 xor a ld [$cf95], a call $391f ld a, [$cf91] call $13d0 ld hl, UnnamedText_5641e jp Unnamed_56409 ; 0x562e1 Unnamed_562e1: INCBIN "baserom.gbc",$562e1,$56409 - $562e1 Unnamed_56409: ; 0x56409 call PrintText jp TextScriptEnd ; 0x5640f UnnamedText_5640f: ; 0x5640f TX_FAR _UnnamedText_5640f db $50 ; 0x5640f + 5 bytes UnnamedText_56414: ; 0x56414 TX_FAR _UnnamedText_56414 db $50 ; 0x56414 + 5 bytes UnnamedText_56419: ; 0x56419 TX_FAR _UnnamedText_56419 db $50 ; 0x56419 + 5 bytes UnnamedText_5641e: ; 0x5641e TX_FAR _UnnamedText_5641e db $50 ; 0x5641e + 5 bytes UnnamedText_56423: ; 0x56423 TX_FAR _UnnamedText_56423 db $50 ; 0x56423 + 5 bytes UnnamedText_56428: ; 0x56428 TX_FAR _UnnamedText_56428 db $50 ; 0x56428 + 5 bytes UnnamedText_5642d: ; 0x5642d TX_FAR _UnnamedText_5642d db $50 ; 0x5642d + 5 bytes UnnamedText_56432: ; 0x56432 TX_FAR _UnnamedText_56432 db $50 ; 0x56432 + 5 bytes UnnamedText_56437: ; 0x56437 TX_FAR _UnnamedText_56437 ; 0x8c000 UnnamedText_5643b: ; 0x5643b TX_FAR _UnnamedText_5643b ; 0x8c013 db $50 ; 0x5643b + 5 bytes UnnamedText_56440: ; 0x56440 TX_FAR _UnnamedText_56440 db $50 ; 0x56440 + 5 bytes UnnamedText_56445: ; 0x56445 TX_FAR _UnnamedText_56445 db $50 ; 0x56445 + 5 bytes UnnamedText_5644a: ; 0x5644a TX_FAR _UnnamedText_5644a db $50 ; 0x5644a + 5 bytes UnnamedText_5644f: ; 0x5644f TX_FAR _UnnamedText_5644f db $50 ; 0x5644f + 5 bytes UnnamedText_56454: ; 0x56454 TX_FAR _UnnamedText_56454 db $50 ; 0x56454 + 5 bytes DayCareMObject: ; 0x56459 (size=26) db $a ; border tile db $2 ; warps db $7, $2, $4, $ff db $7, $3, $4, $ff db $0 ; signs db $1 ; people db SPRITE_GENTLEMAN, $3 + 4, $2 + 4, $ff, $d3, $1 ; person ; warp-to EVENT_DISP $4, $7, $2 EVENT_DISP $4, $7, $3 Route12House_h: ; 0x56473 to 0x5647f (12 bytes) (id=189) db $08 ; tileset db ROUTE_12_HOUSE_HEIGHT, ROUTE_12_HOUSE_WIDTH ; dimensions (y, x) dw Route12HouseBlocks, Route12HouseTexts, Route12HouseScript ; blocks, texts, scripts db $00 ; connections dw Route12HouseObject ; objects Route12HouseScript: ; 0x5647f jp $3c3c ; 0x56482 Route12HouseTexts: ; 0x56482 dw Route12HouseText1 Route12HouseText1: ; 0x56484 db $08 ; asm ld a, [$d728] bit 5, a jr nz, asm_b4cad ; 0x5648a ld hl, UnnamedText_564c0 call PrintText call $35ec ld a, [$cc26] and a jr nz, asm_a2d76 ; 0x56499 ld bc, (SUPER_ROD << 8) | 1 call GiveItem jr nc, asm_e3b89 ; 0x564a1 ld hl, $d728 set 5, [hl] ld hl, UnnamedText_564c5 jr asm_df984 ; 0x564ab asm_e3b89 ; 0x564ad ld hl, UnnamedText_564d9 jr asm_df984 ; 0x564b0 asm_a2d76 ; 0x564b2 ld hl, UnnamedText_564cf jr asm_df984 ; 0x564b5 asm_b4cad ; 0x564b7 ld hl, UnnamedText_564d4 asm_df984 ; 0x564ba call PrintText jp TextScriptEnd UnnamedText_564c0: ; 0x564c0 TX_FAR _UnnamedText_564c0 db $50 ; 0x564c0 + 5 bytes UnnamedText_564c5: ; 0x564c5 TX_FAR _UnnamedText_564c5 ; 0x8ca00 db $0B TX_FAR _UnnamedText_564ca ; 0x8ca4f db $50 ; 0x564c5 + 10 bytes = 0x564cf UnnamedText_564cf: ; 0x564cf TX_FAR _UnnamedText_564cf db $50 ; 0x564cf + 5 bytes UnnamedText_564d4: ; 0x564d4 TX_FAR _UnnamedText_564d4 db $50 ; 0x564d4 + 5 bytes UnnamedText_564d9: ; 0x564d9 TX_FAR _UnnamedText_564d9 db $50 ; 0x564d9 + 5 bytes Route12HouseObject: ; 0x564de (size=26) db $a ; border tile db $2 ; warps db $7, $2, $3, $ff db $7, $3, $3, $ff db $0 ; signs db $1 ; people db SPRITE_FISHER, $4 + 4, $2 + 4, $ff, $d3, $1 ; person ; warp-to EVENT_DISP $4, $7, $2 EVENT_DISP $4, $7, $3 SilphCo8_h: ; 0x564f8 to 0x56504 (12 bytes) (id=213) db $16 ; tileset db SILPH_CO_8F_HEIGHT, SILPH_CO_8F_WIDTH ; dimensions (y, x) dw SilphCo8Blocks, SilphCo8Texts, SilphCo8Script ; blocks, texts, scripts db $00 ; connections dw SilphCo8Object ; objects SilphCo8Script: ; 0x56504 call SilphCo8_Unknown5651a call $3c3c ld hl, SilphCo8TrainerHeader0 ld de, $6577 ld a, [$d649] call $3160 ld [$d649], a ret ; 0x5651a SilphCo8_Unknown5651a: ; 0x5651a INCBIN "baserom.gbc",$5651a,$63 SilphCo8Texts: ; 0x5657d dw SilphCo8Text1, SilphCo8Text2, SilphCo8Text3, SilphCo8Text4 SilphCo8TrainerHeaders: SilphCo8TrainerHeader0: ; 0x56585 db $2 ; flag's bit db ($4 << 4) ; trainer's view range dw $d831 ; flag's byte dw SilphCo8BattleText1 ; 0x65e6 TextBeforeBattle dw SilphCo8AfterBattleText1 ; 0x65f0 TextAfterBattle dw SilphCo8EndBattleText1 ; 0x65eb TextEndBattle dw SilphCo8EndBattleText1 ; 0x65eb TextEndBattle ; 0x56591 SilphCo8TrainerHeader1: ; 0x56591 db $3 ; flag's bit db ($4 << 4) ; trainer's view range dw $d831 ; flag's byte dw SilphCo8BattleText2 ; 0x65f5 TextBeforeBattle dw SilphCo8AfterBattleText2 ; 0x65ff TextAfterBattle dw SilphCo8EndBattleText2 ; 0x65fa TextEndBattle dw SilphCo8EndBattleText2 ; 0x65fa TextEndBattle ; 0x5659d SilphCo8TrainerHeader2: ; 0x5659d db $4 ; flag's bit db ($4 << 4) ; trainer's view range dw $d831 ; flag's byte dw SilphCo8BattleText3 ; 0x6604 TextBeforeBattle dw SilphCo8AfterBattleText3 ; 0x660e TextAfterBattle dw SilphCo8EndBattleText3 ; 0x6609 TextEndBattle dw SilphCo8EndBattleText3 ; 0x6609 TextEndBattle ; 0x565a9 db $ff SilphCo8Text1: ; 0x565aa db $08 ; asm ld a, [$d838] bit 7, a ld hl, UnnamedText_565c3 jr nz, asm_a468f ; 0x565b3 ld hl, UnnamedText_565be asm_a468f ; 0x565b8 call PrintText jp TextScriptEnd UnnamedText_565be: ; 0x565be TX_FAR _UnnamedText_565be db $50 ; 0x565be + 5 bytes UnnamedText_565c3: ; 0x565c3 TX_FAR _UnnamedText_565c3 db $50 ; 0x565c3 + 5 bytes SilphCo8Text2: ; 0x565c8 db $08 ; asm ld hl, SilphCo8TrainerHeader0 call LoadTrainerHeader jp TextScriptEnd SilphCo8Text3: ; 0x565d2 db $08 ; asm ld hl, SilphCo8TrainerHeader1 call LoadTrainerHeader jp TextScriptEnd SilphCo8Text4: ; 0x565dc db $08 ; asm ld hl, SilphCo8TrainerHeader2 call LoadTrainerHeader jp TextScriptEnd SilphCo8BattleText1: ; 0x565e6 TX_FAR _SilphCo8BattleText1 db $50 ; 0x565e6 + 5 bytes SilphCo8EndBattleText1: ; 0x565eb TX_FAR _SilphCo8EndBattleText1 db $50 ; 0x565eb + 5 bytes SilphCo8AfterBattleText1: ; 0x565f0 TX_FAR _SilphCo8AfterBattleText1 db $50 ; 0x565f0 + 5 bytes SilphCo8BattleText2: ; 0x565f5 TX_FAR _SilphCo8BattleText2 db $50 ; 0x565f5 + 5 bytes SilphCo8EndBattleText2: ; 0x565fa TX_FAR _SilphCo8EndBattleText2 db $50 ; 0x565fa + 5 bytes SilphCo8AfterBattleText2: ; 0x565ff TX_FAR _SilphCo8AfterBattleText2 db $50 ; 0x565ff + 5 bytes SilphCo8BattleText3: ; 0x56604 TX_FAR _SilphCo8BattleText3 db $50 ; 0x56604 + 5 bytes SilphCo8EndBattleText3: ; 0x56609 TX_FAR _SilphCo8EndBattleText3 db $50 ; 0x56609 + 5 bytes SilphCo8AfterBattleText3: ; 0x5660e TX_FAR _SilphCo8AfterBattleText3 db $50 ; 0x5660e + 5 bytes SilphCo8Object: ; 0x56613 (size=90) db $2e ; border tile db $7 ; warps db $0, $10, $1, SILPH_CO_9F db $0, $e, $0, SILPH_CO_7F db $0, $12, $0, SILPH_CO_ELEVATOR db $b, $3, $6, SILPH_CO_8F db $f, $3, $4, SILPH_CO_2F db $5, $b, $5, SILPH_CO_2F db $9, $b, $3, SILPH_CO_8F db $0 ; signs db $4 ; people db SPRITE_LAPRAS_GIVER, $2 + 4, $4 + 4, $ff, $ff, $1 ; person db SPRITE_ROCKET, $2 + 4, $13 + 4, $ff, $d2, $42, ROCKET + $C8, $23 ; trainer db SPRITE_OAK_AIDE, $2 + 4, $a + 4, $ff, $d0, $43, SCIENTIST + $C8, $9 ; trainer db SPRITE_ROCKET, $f + 4, $c + 4, $ff, $d3, $44, ROCKET + $C8, $24 ; trainer ; warp-to EVENT_DISP $d, $0, $10 ; SILPH_CO_9F EVENT_DISP $d, $0, $e ; SILPH_CO_7F EVENT_DISP $d, $0, $12 ; SILPH_CO_ELEVATOR EVENT_DISP $d, $b, $3 ; SILPH_CO_8F EVENT_DISP $d, $f, $3 ; SILPH_CO_2F EVENT_DISP $d, $5, $b ; SILPH_CO_2F EVENT_DISP $d, $9, $b ; SILPH_CO_8F SilphCo8Blocks: ; 0x5666d 117 INCBIN "maps/silphco8.blk" INCBIN "baserom.gbc",$566e2,873 SECTION "bank16",DATA,BANK[$16] Route6_h: ; 0x58000 to 0x58022 (34 bytes) (id=17) db $00 ; tileset db ROUTE_6_HEIGHT, ROUTE_6_WIDTH ; dimensions (y, x) dw Route6Blocks, Route6Texts, Route6Script ; blocks, texts, scripts db NORTH | SOUTH ; connections ; connections data db SAFFRON_CITY dw SaffronCityBlocks + (SAFFRON_CITY_HEIGHT - 3) * SAFFRON_CITY_WIDTH + 2 ; connection strip location dw $C6EB + -3 ; current map position db $10, SAFFRON_CITY_WIDTH ; bigness, width db (SAFFRON_CITY_HEIGHT * 2) - 1, (-5 * -2) ; alignments (y, x) dw $C6E9 + SAFFRON_CITY_HEIGHT * (SAFFRON_CITY_WIDTH + 6) ; window db VERMILION_CITY dw VermilionCityBlocks + 2 ; connection strip location dw $C6EB + (ROUTE_6_HEIGHT + 3) * (ROUTE_6_WIDTH + 6) + -3 ; current map position db $10, VERMILION_CITY_WIDTH ; bigness, width db 0, (-5 * -2) ; alignments (y, x) dw $C6EF + VERMILION_CITY_WIDTH ; window ; end connections data dw Route6Object ; objects Route6Object: ; 0x58022 (size=87) db $f ; border tile db $4 ; warps db $1, $9, $2, ROUTE_6_GATE db $1, $a, $2, ROUTE_6_GATE db $7, $a, $0, ROUTE_6_GATE db $d, $11, $0, PATH_ENTRANCE_ROUTE_6 db $1 ; signs db $f, $13, $7 ; Route6Text7 db $6 ; people db SPRITE_BLACK_HAIR_BOY_1, $15 + 4, $a + 4, $ff, $d3, $41, JR__TRAINER_M + $C8, $4 ; trainer db SPRITE_LASS, $15 + 4, $b + 4, $ff, $d2, $42, JR__TRAINER_F + $C8, $2 ; trainer db SPRITE_BUG_CATCHER, $f + 4, $0 + 4, $ff, $d3, $43, BUG_CATCHER + $C8, $a ; trainer db SPRITE_BLACK_HAIR_BOY_1, $1f + 4, $b + 4, $ff, $d2, $44, JR__TRAINER_M + $C8, $5 ; trainer db SPRITE_LASS, $1e + 4, $b + 4, $ff, $d2, $45, JR__TRAINER_F + $C8, $3 ; trainer db SPRITE_BUG_CATCHER, $1a + 4, $13 + 4, $ff, $d2, $46, BUG_CATCHER + $C8, $b ; trainer ; warp-to EVENT_DISP $a, $1, $9 ; ROUTE_6_GATE EVENT_DISP $a, $1, $a ; ROUTE_6_GATE EVENT_DISP $a, $7, $a ; ROUTE_6_GATE EVENT_DISP $a, $d, $11 ; PATH_ENTRANCE_ROUTE_6 Route6Blocks: ; 0x58079 180 INCBIN "maps/route6.blk" Route8_h: ; 0x5812d to 0x5814f (34 bytes) (id=19) db $00 ; tileset db ROUTE_8_HEIGHT, ROUTE_8_WIDTH ; dimensions (y, x) dw Route8Blocks, Route8Texts, Route8Script ; blocks, texts, scripts db WEST | EAST ; connections ; connections data db SAFFRON_CITY dw SaffronCityBlocks - 3 + (SAFFRON_CITY_WIDTH * 2) ; connection strip location dw $C6E8 + (ROUTE_8_WIDTH + 6) * (-3 + 3) ; current map position db $f, SAFFRON_CITY_WIDTH ; bigness, width db (-4 * -2), (SAFFRON_CITY_WIDTH * 2) - 1 ; alignments (y, x) dw $C6EE + 2 * SAFFRON_CITY_WIDTH ; window db LAVENDER_TOWN dw LavenderTownBlocks + (LAVENDER_TOWN_WIDTH * 0) ; connection strip location dw $C6E5 + (ROUTE_8_WIDTH + 6) * (0 + 4) ; current map position db LAVENDER_TOWN_HEIGHT, LAVENDER_TOWN_WIDTH ; bigness, width db (0 * -2), 0 ; alignments (y, x) dw $C6EF + LAVENDER_TOWN_WIDTH ; window ; end connections data dw Route8Object ; objects Route8Object: ; 0x5814f (size=119) db $2c ; border tile db $5 ; warps db $9, $1, $0, ROUTE_8_GATE db $a, $1, $1, ROUTE_8_GATE db $9, $8, $2, ROUTE_8_GATE db $a, $8, $3, ROUTE_8_GATE db $3, $d, $0, PATH_ENTRANCE_ROUTE_8 db $1 ; signs db $3, $11, $a ; Route8Text10 db $9 ; people db SPRITE_BLACK_HAIR_BOY_2, $5 + 4, $8 + 4, $ff, $d3, $41, SUPER_NERD + $C8, $3 ; trainer db SPRITE_GAMBLER, $9 + 4, $d + 4, $ff, $d1, $42, GAMBLER + $C8, $5 ; trainer db SPRITE_BLACK_HAIR_BOY_2, $6 + 4, $2a + 4, $ff, $d1, $43, SUPER_NERD + $C8, $4 ; trainer db SPRITE_LASS, $3 + 4, $1a + 4, $ff, $d2, $44, LASS + $C8, $d ; trainer db SPRITE_BLACK_HAIR_BOY_2, $4 + 4, $1a + 4, $ff, $d3, $45, SUPER_NERD + $C8, $5 ; trainer db SPRITE_LASS, $5 + 4, $1a + 4, $ff, $d2, $46, LASS + $C8, $e ; trainer db SPRITE_LASS, $6 + 4, $1a + 4, $ff, $d3, $47, LASS + $C8, $f ; trainer db SPRITE_GAMBLER, $d + 4, $2e + 4, $ff, $d0, $48, GAMBLER + $C8, $7 ; trainer db SPRITE_LASS, $c + 4, $33 + 4, $ff, $d2, $49, LASS + $C8, $10 ; trainer ; warp-to EVENT_DISP $1e, $9, $1 ; ROUTE_8_GATE EVENT_DISP $1e, $a, $1 ; ROUTE_8_GATE EVENT_DISP $1e, $9, $8 ; ROUTE_8_GATE EVENT_DISP $1e, $a, $8 ; ROUTE_8_GATE EVENT_DISP $1e, $3, $d ; PATH_ENTRANCE_ROUTE_8 Route8Blocks: ; 0x581c6 270 INCBIN "maps/route8.blk" Route10_h: ; 0x582d4 to 0x582f6 (34 bytes) (id=21) db $00 ; tileset db ROUTE_10_HEIGHT, ROUTE_10_WIDTH ; dimensions (y, x) dw Route10Blocks, Route10Texts, Route10Script ; blocks, texts, scripts db SOUTH | WEST ; connections ; connections data db LAVENDER_TOWN dw LavenderTownBlocks ; connection strip location dw $C6EB + (ROUTE_10_HEIGHT + 3) * (ROUTE_10_WIDTH + 6) + 0 ; current map position db LAVENDER_TOWN_WIDTH, LAVENDER_TOWN_WIDTH ; bigness, width db 0, (0 * -2) ; alignments (y, x) dw $C6EF + LAVENDER_TOWN_WIDTH ; window db ROUTE_9 dw Route9Blocks - 3 + (ROUTE_9_WIDTH) ; connection strip location dw $C6E8 + (ROUTE_10_WIDTH + 6) * (0 + 3) ; current map position db ROUTE_9_HEIGHT, ROUTE_9_WIDTH ; bigness, width db (0 * -2), (ROUTE_9_WIDTH * 2) - 1 ; alignments (y, x) dw $C6EE + 2 * ROUTE_9_WIDTH ; window ; end connections data dw Route10Object ; objects Route10Object: ; 0x582f6 (size=96) db $2c ; border tile db $4 ; warps db $13, $b, $0, ROCK_TUNNEL_POKECENTER db $11, $8, $0, ROCK_TUNNEL_1 db $35, $8, $2, ROCK_TUNNEL_1 db $27, $6, $0, POWER_PLANT db $4 ; signs db $13, $7, $7 ; Route10Text7 db $13, $c, $8 ; Route10Text8 db $37, $9, $9 ; Route10Text9 db $29, $5, $a ; Route10Text10 db $6 ; people db SPRITE_BLACK_HAIR_BOY_2, $2c + 4, $a + 4, $ff, $d2, $41, POKEMANIAC + $C8, $1 ; trainer db SPRITE_HIKER, $39 + 4, $3 + 4, $ff, $d1, $42, HIKER + $C8, $7 ; trainer db SPRITE_BLACK_HAIR_BOY_2, $40 + 4, $e + 4, $ff, $d2, $43, POKEMANIAC + $C8, $2 ; trainer db SPRITE_LASS, $19 + 4, $7 + 4, $ff, $d2, $44, JR__TRAINER_F + $C8, $7 ; trainer db SPRITE_HIKER, $3d + 4, $3 + 4, $ff, $d0, $45, HIKER + $C8, $8 ; trainer db SPRITE_LASS, $36 + 4, $7 + 4, $ff, $d0, $46, JR__TRAINER_F + $C8, $8 ; trainer ; warp-to EVENT_DISP $a, $13, $b ; ROCK_TUNNEL_POKECENTER EVENT_DISP $a, $11, $8 ; ROCK_TUNNEL_1 EVENT_DISP $a, $35, $8 ; ROCK_TUNNEL_1 EVENT_DISP $a, $27, $6 ; POWER_PLANT Route10Blocks: ; 0x58356 360 INCBIN "maps/route10.blk" Route11_h: ; 0x584be to 0x584e0 (34 bytes) (id=22) db $00 ; tileset db ROUTE_11_HEIGHT, ROUTE_11_WIDTH ; dimensions (y, x) dw Route11Blocks, Route11Texts, Route11Script ; blocks, texts, scripts db WEST | EAST ; connections ; connections data db VERMILION_CITY dw VermilionCityBlocks - 3 + (VERMILION_CITY_WIDTH * 2) ; connection strip location dw $C6E8 + (ROUTE_11_WIDTH + 6) * (-3 + 3) ; current map position db $f, VERMILION_CITY_WIDTH ; bigness, width db (-4 * -2), (VERMILION_CITY_WIDTH * 2) - 1 ; alignments (y, x) dw $C6EE + 2 * VERMILION_CITY_WIDTH ; window db ROUTE_12 dw Route12Blocks + (ROUTE_12_WIDTH * 24) ; connection strip location dw $C6E5 + (ROUTE_11_WIDTH + 6) * (-3 + 4) ; current map position db $f, ROUTE_12_WIDTH ; bigness, width db (-27 * -2), 0 ; alignments (y, x) dw $C6EF + ROUTE_12_WIDTH ; window ; end connections data dw Route11Object ; objects Route11Object: ; 0x584e0 (size=127) db $f ; border tile db $5 ; warps db $8, $31, $0, ROUTE_11_GATE_1F db $9, $31, $1, ROUTE_11_GATE_1F db $8, $3a, $2, ROUTE_11_GATE_1F db $9, $3a, $3, ROUTE_11_GATE_1F db $5, $4, $0, DIGLETTS_CAVE_ENTRANCE db $1 ; signs db $5, $1, $b ; Route11Text11 db $a ; people db SPRITE_GAMBLER, $e + 4, $a + 4, $ff, $d0, $41, GAMBLER + $C8, $1 ; trainer db SPRITE_GAMBLER, $9 + 4, $1a + 4, $ff, $d0, $42, GAMBLER + $C8, $2 ; trainer db SPRITE_BUG_CATCHER, $5 + 4, $d + 4, $ff, $d2, $43, YOUNGSTER + $C8, $9 ; trainer db SPRITE_BLACK_HAIR_BOY_2, $b + 4, $24 + 4, $ff, $d0, $44, ENGINEER + $C8, $2 ; trainer db SPRITE_BUG_CATCHER, $4 + 4, $16 + 4, $ff, $d1, $45, YOUNGSTER + $C8, $a ; trainer db SPRITE_GAMBLER, $7 + 4, $2d + 4, $ff, $d0, $46, GAMBLER + $C8, $3 ; trainer db SPRITE_GAMBLER, $3 + 4, $21 + 4, $ff, $d1, $47, GAMBLER + $C8, $4 ; trainer db SPRITE_BUG_CATCHER, $5 + 4, $2b + 4, $ff, $d3, $48, YOUNGSTER + $C8, $b ; trainer db SPRITE_BLACK_HAIR_BOY_2, $10 + 4, $2d + 4, $ff, $d2, $49, ENGINEER + $C8, $3 ; trainer db SPRITE_BUG_CATCHER, $c + 4, $16 + 4, $ff, $d1, $4a, YOUNGSTER + $C8, $c ; trainer ; warp-to EVENT_DISP $1e, $8, $31 ; ROUTE_11_GATE_1F EVENT_DISP $1e, $9, $31 ; ROUTE_11_GATE_1F EVENT_DISP $1e, $8, $3a ; ROUTE_11_GATE_1F EVENT_DISP $1e, $9, $3a ; ROUTE_11_GATE_1F EVENT_DISP $1e, $5, $4 ; DIGLETTS_CAVE_ENTRANCE Route11Blocks: ; 0x5855f 270 INCBIN "maps/route11.blk" Route12_h: ; 0x5866d to 0x5869a (45 bytes) (id=23) db $00 ; tileset db ROUTE_12_HEIGHT, ROUTE_12_WIDTH ; dimensions (y, x) dw Route12Blocks, Route12Texts, Route12Script ; blocks, texts, scripts db NORTH | SOUTH | WEST ; connections ; connections data db LAVENDER_TOWN dw LavenderTownBlocks + (LAVENDER_TOWN_HEIGHT - 3) * LAVENDER_TOWN_WIDTH ; connection strip location dw $C6EB + 0 ; current map position db LAVENDER_TOWN_WIDTH, LAVENDER_TOWN_WIDTH ; bigness, width db (LAVENDER_TOWN_HEIGHT * 2) - 1, (0 * -2) ; alignments (y, x) dw $C6E9 + LAVENDER_TOWN_HEIGHT * (LAVENDER_TOWN_WIDTH + 6) ; window db ROUTE_13 dw Route13Blocks + 17 ; connection strip location dw $C6EB + (ROUTE_12_HEIGHT + 3) * (ROUTE_12_WIDTH + 6) + -3 ; current map position db $d, ROUTE_13_WIDTH ; bigness, width db 0, (-20 * -2) ; alignments (y, x) dw $C6EF + ROUTE_13_WIDTH ; window db ROUTE_11 dw Route11Blocks - 3 + (ROUTE_11_WIDTH) ; connection strip location dw $C6E8 + (ROUTE_12_WIDTH + 6) * (27 + 3) ; current map position db ROUTE_11_HEIGHT, ROUTE_11_WIDTH ; bigness, width db (27 * -2), (ROUTE_11_WIDTH * 2) - 1 ; alignments (y, x) dw $C6EE + 2 * ROUTE_11_WIDTH ; window ; end connections data dw Route12Object ; objects Route12Object: ; 0x5869a (size=118) db $43 ; border tile db $4 ; warps db $f, $a, $0, ROUTE_12_GATE db $f, $b, $1, ROUTE_12_GATE db $15, $a, $2, ROUTE_12_GATE db $4d, $b, $0, ROUTE_12_HOUSE db $2 ; signs db $d, $d, $b ; Route12Text11 db $3f, $b, $c ; Route12Text12 db $a ; people db SPRITE_SNORLAX, $3e + 4, $a + 4, $ff, $d0, $1 ; person db SPRITE_FISHER2, $1f + 4, $e + 4, $ff, $d2, $42, FISHER + $C8, $3 ; trainer db SPRITE_FISHER2, $27 + 4, $5 + 4, $ff, $d1, $43, FISHER + $C8, $4 ; trainer db SPRITE_BLACK_HAIR_BOY_1, $5c + 4, $b + 4, $ff, $d2, $44, JR__TRAINER_M + $C8, $9 ; trainer db SPRITE_BLACK_HAIR_BOY_2, $4c + 4, $e + 4, $ff, $d1, $45, ROCKER + $C8, $2 ; trainer db SPRITE_FISHER2, $28 + 4, $c + 4, $ff, $d2, $46, FISHER + $C8, $5 ; trainer db SPRITE_FISHER2, $34 + 4, $9 + 4, $ff, $d3, $47, FISHER + $C8, $6 ; trainer db SPRITE_FISHER2, $57 + 4, $6 + 4, $ff, $d0, $48, FISHER + $C8, $b ; trainer db SPRITE_BALL, $23 + 4, $e + 4, $ff, $ff, $89, TM_16 ; item db SPRITE_BALL, $59 + 4, $5 + 4, $ff, $ff, $8a, IRON ; item ; warp-to EVENT_DISP $a, $f, $a ; ROUTE_12_GATE EVENT_DISP $a, $f, $b ; ROUTE_12_GATE EVENT_DISP $a, $15, $a ; ROUTE_12_GATE EVENT_DISP $a, $4d, $b ; ROUTE_12_HOUSE Route12Blocks: ; 0x58710 540 INCBIN "maps/route12.blk" Route15_h: ; 0x5892c to 0x5894e (34 bytes) (id=26) db $00 ; tileset db ROUTE_15_HEIGHT, ROUTE_15_WIDTH ; dimensions (y, x) dw Route15Blocks, Route15Texts, Route15Script ; blocks, texts, scripts db WEST | EAST ; connections ; connections data db FUCHSIA_CITY dw FuchsiaCityBlocks - 3 + (FUCHSIA_CITY_WIDTH * 2) ; connection strip location dw $C6E8 + (ROUTE_15_WIDTH + 6) * (-3 + 3) ; current map position db $f, FUCHSIA_CITY_WIDTH ; bigness, width db (-4 * -2), (FUCHSIA_CITY_WIDTH * 2) - 1 ; alignments (y, x) dw $C6EE + 2 * FUCHSIA_CITY_WIDTH ; window db ROUTE_14 dw Route14Blocks + (ROUTE_14_WIDTH * 15) ; connection strip location dw $C6E5 + (ROUTE_15_WIDTH + 6) * (-3 + 4) ; current map position db $c, ROUTE_14_WIDTH ; bigness, width db (-18 * -2), 0 ; alignments (y, x) dw $C6EF + ROUTE_14_WIDTH ; window ; end connections data dw Route15Object ; objects Route15Object: ; 0x5894e (size=126) db $43 ; border tile db $4 ; warps db $8, $7, $0, ROUTE_15_GATE db $9, $7, $1, ROUTE_15_GATE db $8, $e, $2, ROUTE_15_GATE db $9, $e, $3, ROUTE_15_GATE db $1 ; signs db $9, $27, $c ; Route15Text12 db $b ; people db SPRITE_LASS, $b + 4, $29 + 4, $ff, $d0, $41, JR__TRAINER_F + $C8, $14 ; trainer db SPRITE_LASS, $a + 4, $35 + 4, $ff, $d2, $42, JR__TRAINER_F + $C8, $15 ; trainer db SPRITE_BLACK_HAIR_BOY_1, $d + 4, $1f + 4, $ff, $d1, $43, BIRD_KEEPER + $C8, $6 ; trainer db SPRITE_BLACK_HAIR_BOY_1, $d + 4, $23 + 4, $ff, $d1, $44, BIRD_KEEPER + $C8, $7 ; trainer db SPRITE_FOULARD_WOMAN, $b + 4, $35 + 4, $ff, $d0, $45, BEAUTY + $C8, $9 ; trainer db SPRITE_FOULARD_WOMAN, $a + 4, $29 + 4, $ff, $d3, $46, BEAUTY + $C8, $a ; trainer db SPRITE_BIKER, $a + 4, $30 + 4, $ff, $d0, $47, BIKER + $C8, $3 ; trainer db SPRITE_BIKER, $a + 4, $2e + 4, $ff, $d0, $48, BIKER + $C8, $4 ; trainer db SPRITE_LASS, $5 + 4, $25 + 4, $ff, $d3, $49, JR__TRAINER_F + $C8, $16 ; trainer db SPRITE_LASS, $d + 4, $12 + 4, $ff, $d1, $4a, JR__TRAINER_F + $C8, $17 ; trainer db SPRITE_BALL, $5 + 4, $12 + 4, $ff, $ff, $8b, TM_20 ; item ; warp-to EVENT_DISP $1e, $8, $7 ; ROUTE_15_GATE EVENT_DISP $1e, $9, $7 ; ROUTE_15_GATE EVENT_DISP $1e, $8, $e ; ROUTE_15_GATE EVENT_DISP $1e, $9, $e ; ROUTE_15_GATE Route15Blocks: ; 0x589cc 270 INCBIN "maps/route15.blk" Route16_h: ; 0x58ada to 0x58afc (34 bytes) (id=27) db $00 ; tileset db ROUTE_16_HEIGHT, ROUTE_16_WIDTH ; dimensions (y, x) dw Route16Blocks, Route16Texts, Route16Script ; blocks, texts, scripts db SOUTH | EAST ; connections ; connections data db ROUTE_17 dw Route17Blocks ; connection strip location dw $C6EB + (ROUTE_16_HEIGHT + 3) * (ROUTE_16_WIDTH + 6) + 0 ; current map position db ROUTE_17_WIDTH, ROUTE_17_WIDTH ; bigness, width db 0, (0 * -2) ; alignments (y, x) dw $C6EF + ROUTE_17_WIDTH ; window db CELADON_CITY dw CeladonCityBlocks + (CELADON_CITY_WIDTH) ; connection strip location dw $C6E5 + (ROUTE_16_WIDTH + 6) * (-3 + 4) ; current map position db $f, CELADON_CITY_WIDTH ; bigness, width db (-4 * -2), 0 ; alignments (y, x) dw $C6EF + CELADON_CITY_WIDTH ; window ; end connections data dw Route16Object ; objects Route16Object: ; 0x58afc (size=136) db $f ; border tile db $9 ; warps db $a, $11, $0, ROUTE_16_GATE_1F db $b, $11, $1, ROUTE_16_GATE_1F db $a, $18, $2, ROUTE_16_GATE_1F db $b, $18, $3, ROUTE_16_GATE_1F db $4, $11, $4, ROUTE_16_GATE_1F db $5, $11, $5, ROUTE_16_GATE_1F db $4, $18, $6, ROUTE_16_GATE_1F db $5, $18, $7, ROUTE_16_GATE_1F db $5, $7, $0, ROUTE_16_HOUSE db $2 ; signs db $b, $1b, $8 ; Route16Text8 db $11, $5, $9 ; Route16Text9 db $7 ; people db SPRITE_BIKER, $c + 4, $11 + 4, $ff, $d2, $41, BIKER + $C8, $5 ; trainer db SPRITE_BIKER, $d + 4, $e + 4, $ff, $d3, $42, CUE_BALL + $C8, $1 ; trainer db SPRITE_BIKER, $c + 4, $b + 4, $ff, $d1, $43, CUE_BALL + $C8, $2 ; trainer db SPRITE_BIKER, $b + 4, $9 + 4, $ff, $d2, $44, BIKER + $C8, $6 ; trainer db SPRITE_BIKER, $a + 4, $6 + 4, $ff, $d3, $45, CUE_BALL + $C8, $3 ; trainer db SPRITE_BIKER, $c + 4, $3 + 4, $ff, $d3, $46, BIKER + $C8, $7 ; trainer db SPRITE_SNORLAX, $a + 4, $1a + 4, $ff, $d0, $7 ; person ; warp-to EVENT_DISP $14, $a, $11 ; ROUTE_16_GATE_1F EVENT_DISP $14, $b, $11 ; ROUTE_16_GATE_1F EVENT_DISP $14, $a, $18 ; ROUTE_16_GATE_1F EVENT_DISP $14, $b, $18 ; ROUTE_16_GATE_1F EVENT_DISP $14, $4, $11 ; ROUTE_16_GATE_1F EVENT_DISP $14, $5, $11 ; ROUTE_16_GATE_1F EVENT_DISP $14, $4, $18 ; ROUTE_16_GATE_1F EVENT_DISP $14, $5, $18 ; ROUTE_16_GATE_1F EVENT_DISP $14, $5, $7 ; ROUTE_16_HOUSE Route16Blocks: ; 0x58b84 180 INCBIN "maps/route16.blk" Route18_h: ; 0x58c38 to 0x58c5a (34 bytes) (id=29) db $00 ; tileset db ROUTE_18_HEIGHT, ROUTE_18_WIDTH ; dimensions (y, x) dw Route18Blocks, Route18Texts, Route18Script ; blocks, texts, scripts db NORTH | EAST ; connections ; connections data db ROUTE_17 dw Route17Blocks + (ROUTE_17_HEIGHT - 3) * ROUTE_17_WIDTH ; connection strip location dw $C6EB + 0 ; current map position db ROUTE_17_WIDTH, ROUTE_17_WIDTH ; bigness, width db (ROUTE_17_HEIGHT * 2) - 1, (0 * -2) ; alignments (y, x) dw $C6E9 + ROUTE_17_HEIGHT * (ROUTE_17_WIDTH + 6) ; window db FUCHSIA_CITY dw FuchsiaCityBlocks + (FUCHSIA_CITY_WIDTH) ; connection strip location dw $C6E5 + (ROUTE_18_WIDTH + 6) * (-3 + 4) ; current map position db $f, FUCHSIA_CITY_WIDTH ; bigness, width db (-4 * -2), 0 ; alignments (y, x) dw $C6EF + FUCHSIA_CITY_WIDTH ; window ; end connections data dw Route18Object ; objects Route18Object: ; 0x58c5a (size=66) db $43 ; border tile db $4 ; warps db $8, $21, $0, ROUTE_18_GATE_1F db $9, $21, $1, ROUTE_18_GATE_1F db $8, $28, $2, ROUTE_18_GATE_1F db $9, $28, $3, ROUTE_18_GATE_1F db $2 ; signs db $7, $2b, $4 ; Route18Text4 db $5, $21, $5 ; Route18Text5 db $3 ; people db SPRITE_BLACK_HAIR_BOY_1, $b + 4, $24 + 4, $ff, $d3, $41, BIRD_KEEPER + $C8, $8 ; trainer db SPRITE_BLACK_HAIR_BOY_1, $f + 4, $28 + 4, $ff, $d2, $42, BIRD_KEEPER + $C8, $9 ; trainer db SPRITE_BLACK_HAIR_BOY_1, $d + 4, $2a + 4, $ff, $d2, $43, BIRD_KEEPER + $C8, $a ; trainer ; warp-to EVENT_DISP $19, $8, $21 ; ROUTE_18_GATE_1F EVENT_DISP $19, $9, $21 ; ROUTE_18_GATE_1F EVENT_DISP $19, $8, $28 ; ROUTE_18_GATE_1F EVENT_DISP $19, $9, $28 ; ROUTE_18_GATE_1F Route18Blocks: ; 0x58c9c 225 INCBIN "maps/route18.blk" INCBIN "baserom.gbc",$58d7d,$58e3b - $58d7d UnnamedText_58e3b: ; 0x58e3b TX_FAR _UnnamedText_58e3b db $50 ; 0x58e3b + 5 bytes UnnamedText_58e40: ; 0x58e40 TX_FAR _UnnamedText_58e40 db $50 ; 0x58e40 + 5 bytes UnnamedText_58e45: ; 0x58e45 TX_FAR _UnnamedText_58e45 db $50 ; 0x58e45 + 5 bytes UnnamedText_58e4a: ; 0x58e4a TX_FAR _UnnamedText_58e4a db $50 ; 0x58e4a + 5 bytes UnnamedText_58e4f: ; 0x58e4f TX_FAR _UnnamedText_58e4f db $50 ; 0x58e4f + 5 bytes UnnamedText_58e54: ; 0x58e54 TX_FAR _UnnamedText_58e54 db $50 ; 0x58e54 + 5 bytes INCBIN "baserom.gbc",$58e59,$58ecc - $58e59 UnnamedText_58ecc: ; 0x58ecc TX_FAR _UnnamedText_58ecc db $50 ; 0x58ecc + 5 bytes INCBIN "baserom.gbc",$58ed1,$58f3e - $58ed1 UnnamedText_58f3e: ; 0x58f3e TX_FAR _UnnamedText_58f3e db $50 ; 0x58f3e + 5 bytes INCBIN "baserom.gbc",$58f43,$59091 - $58f43 UnnamedText_59091: ; 0x59091 TX_FAR _UnnamedText_59091 db $50 ; 0x59091 + 5 bytes UnnamedText_59096: ; 0x59096 TX_FAR _UnnamedText_59096 db $50 ; 0x59096 + 5 bytes UnnamedText_5909b: ; 0x5909b TX_FAR _UnnamedText_5909b db $50 ; 0x5909b + 5 bytes UnnamedText_590a0: ; 0x590a0 TX_FAR _UnnamedText_590a0 db $50 ; 0x590a0 + 5 bytes INCBIN "baserom.gbc",$590a5,$590ab - $590a5 UnnamedText_590ab: ; 0x590ab TX_FAR _UnnamedText_590ab db $50 ; 0x590ab + 5 bytes Route6Script: ; 0x590b0 call $3c3c ld hl, Route6TrainerHeaders ld de, Route6_Unknown590c3 ld a, [$d600] call $3160 ld [$d600], a ret ; 0x590c3 Route6_Unknown590c3: ; 0x590c3 INCBIN "baserom.gbc",$590c3,$590c9 - $590c3 Route6Texts: dw Route6Text1, Route6Text2, Route6Text3, Route6Text4, Route6Text5, Route6Text6, Route6Text7 Route6TrainerHeaders: Route6TrainerHeader0: ; 0x590d7 db $1 ; flag's bit db ($0 << 4) ; trainer's view range dw $d7c9 ; flag's byte dw Route6BattleText1 ; 0x512a TextBeforeBattle dw Route6AfterBattleText1 ; 0x5134 TextAfterBattle dw Route6EndBattleText1 ; 0x512f TextEndBattle dw Route6EndBattleText1 ; 0x512f TextEndBattle ; 0x590e3 Route6TrainerHeader1: ; 0x590e3 db $2 ; flag's bit db ($0 << 4) ; trainer's view range dw $d7c9 ; flag's byte dw Route6BattleText2 ; 0x5143 TextBeforeBattle dw Route6AfterBattleText1 ; 0x5134 TextAfterBattle dw Route6EndBattleText2 ; 0x5148 TextEndBattle dw Route6EndBattleText2 ; 0x5148 TextEndBattle ; 0x590ef Route6TrainerHeader2: ; 0x590ef db $3 ; flag's bit db ($4 << 4) ; trainer's view range dw $d7c9 ; flag's byte dw Route6BattleText3 ; 0x5157 TextBeforeBattle dw Route6AfterBattleText3 ; 0x5161 TextAfterBattle dw Route6EndBattleText3 ; 0x515c TextEndBattle dw Route6EndBattleText3 ; 0x515c TextEndBattle ; 0x590fb Route6TrainerHeader3: ; 0x590fb db $4 ; flag's bit db ($3 << 4) ; trainer's view range dw $d7c9 ; flag's byte dw Route6BattleText4 ; 0x5170 TextBeforeBattle dw Route6AfterBattleText4 ; 0x517a TextAfterBattle dw Route6EndBattleText4 ; 0x5175 TextEndBattle dw Route6EndBattleText4 ; 0x5175 TextEndBattle ; 0x59107 Route6TrainerHeader4: ; 0x59107 db $5 ; flag's bit db ($3 << 4) ; trainer's view range dw $d7c9 ; flag's byte dw Route6BattleText5 ; 0x5189 TextBeforeBattle dw Route6AfterBattleText5 ; 0x5193 TextAfterBattle dw Route6EndBattleText5 ; 0x518e TextEndBattle dw Route6EndBattleText5 ; 0x518e TextEndBattle ; 0x59113 Route6TrainerHeader5: ; 0x59113 db $6 ; flag's bit db ($3 << 4) ; trainer's view range dw $d7c9 ; flag's byte dw Route6BattleText6 ; 0x51a2 TextBeforeBattle dw Route6AfterBattleText6 ; 0x51ac TextAfterBattle dw Route6EndBattleText6 ; 0x51a7 TextEndBattle dw Route6EndBattleText6 ; 0x51a7 TextEndBattle ; 0x5911e db $ff Route6Text1: ; 0x59120 db $8 ld hl, Route6TrainerHeader0 call LoadTrainerHeader jp TextScriptEnd ; 0x5912a Route6BattleText1: ; 0x5912a TX_FAR _Route6BattleText1 db $50 ; 0x5912a + 5 bytes Route6EndBattleText1: ; 0x5912f TX_FAR _Route6EndBattleText1 db $50 ; 0x5912f + 5 bytes Route6AfterBattleText1: ; 0x59134 TX_FAR _Route6AfterBattleText1 db $50 ; 0x59134 + 5 bytes Route6Text2: ; 0x59139 db $08 ; asm ld hl, Route6TrainerHeader1 call LoadTrainerHeader jp TextScriptEnd Route6BattleText2: ; 0x59143 TX_FAR _Route6BattleText2 db $50 ; 0x59143 + 5 bytes Route6EndBattleText2: ; 0x59148 TX_FAR _Route6EndBattleText2 db $50 ; 0x59148 + 5 bytes Route6Text3: ; 0x5914d db $08 ; asm ld hl, Route6TrainerHeader2 call LoadTrainerHeader jp TextScriptEnd Route6BattleText3: ; 0x59157 TX_FAR _Route6BattleText3 db $50 ; 0x59157 + 5 bytes Route6EndBattleText3: ; 0x5915c TX_FAR _Route6EndBattleText3 db $50 ; 0x5915c + 5 bytes Route6AfterBattleText3: ; 0x59161 TX_FAR _Route6AfterBattleText3 db $50 ; 0x59161 + 5 bytes Route6Text4: ; 0x59166 db $08 ; asm ld hl, Route6TrainerHeader3 call LoadTrainerHeader jp TextScriptEnd Route6BattleText4: ; 0x59170 TX_FAR _Route6BattleText4 db $50 ; 0x59170 + 5 bytes Route6EndBattleText4: ; 0x59175 TX_FAR _Route6EndBattleText4 db $50 ; 0x59175 + 5 bytes Route6AfterBattleText4: ; 0x5917a TX_FAR _Route6AfterBattleText4 db $50 ; 0x5917a + 5 bytes Route6Text5: ; 0x5917f db $08 ; asm ld hl, Route6TrainerHeader4 call LoadTrainerHeader jp TextScriptEnd Route6BattleText5: ; 0x59189 TX_FAR _Route6BattleText5 db $50 ; 0x59189 + 5 bytes Route6EndBattleText5: ; 0x5918e TX_FAR _Route6EndBattleText5 db $50 ; 0x5918e + 5 bytes Route6AfterBattleText5: ; 0x59193 TX_FAR _Route6AfterBattleText5 db $50 ; 0x59193 + 5 bytes Route6Text6: ; 0x59198 db $08 ; asm ld hl, Route6TrainerHeader5 call LoadTrainerHeader jp TextScriptEnd Route6BattleText6: ; 0x591a2 TX_FAR _Route6BattleText6 db $50 ; 0x591a2 + 5 bytes Route6EndBattleText6: ; 0x591a7 TX_FAR _Route6EndBattleText6 db $50 ; 0x591a7 + 5 bytes Route6AfterBattleText6: ; 0x591ac TX_FAR _Route6AfterBattleText6 db $50 ; 0x591ac + 5 bytes Route6Text7: ; 0x591b1 TX_FAR _Route6Text7 db $50 Route8Script: ; 0x591b6 call $3c3c ld hl, Route8TrainerHeaders ld de, Route8_Unknown591c9 ld a, [$d601] call $3160 ld [$d601], a ret ; 0x591c9 Route8_Unknown591c9: ; 0x591c9 INCBIN "baserom.gbc",$591c9,$591cf - $591c9 Route8Texts: ; 0x591cf dw Route8Text1, Route8Text2, Route8Text3, Route8Text4, Route8Text5, Route8Text6, Route8Text7, Route8Text8, Route8Text9, Route8Text10 Route8TrainerHeaders: ; 0x591e3 Route8TrainerHeader0: ; 0x591e3 db $1 ; flag's bit db ($4 << 4) ; trainer's view range dw $d7cd ; flag's byte dw Route8BattleText1 ; 0x525a TextBeforeBattle dw Route8AfterBattleText1 ; 0x5264 TextAfterBattle dw Route8EndBattleText1 ; 0x525f TextEndBattle dw Route8EndBattleText1 ; 0x525f TextEndBattle ; 0x591ef Route8TrainerHeader1: ; 0x591ef db $2 ; flag's bit db ($4 << 4) ; trainer's view range dw $d7cd ; flag's byte dw Route8BattleText2 ; 0x5273 TextBeforeBattle dw Route8AfterBattleText2 ; 0x527d TextAfterBattle dw Route8EndBattleText2 ; 0x5278 TextEndBattle dw Route8EndBattleText2 ; 0x5278 TextEndBattle ; 0x591fb Route8TrainerHeader2: ; 0x591fb db $3 ; flag's bit db ($4 << 4) ; trainer's view range dw $d7cd ; flag's byte dw Route8BattleText3 ; 0x528c TextBeforeBattle dw Route8AfterBattleText3 ; 0x5296 TextAfterBattle dw Route8EndBattleText3 ; 0x5291 TextEndBattle dw Route8EndBattleText3 ; 0x5291 TextEndBattle ; 0x59207 Route8TrainerHeader3: ; 0x59207 db $4 ; flag's bit db ($2 << 4) ; trainer's view range dw $d7cd ; flag's byte dw Route8BattleText4 ; 0x52a5 TextBeforeBattle dw Route8AfterBattleText4 ; 0x52af TextAfterBattle dw Route8EndBattleText4 ; 0x52aa TextEndBattle dw Route8EndBattleText4 ; 0x52aa TextEndBattle ; 0x59213 Route8TrainerHeader4: ; 0x59213 db $5 ; flag's bit db ($3 << 4) ; trainer's view range dw $d7cd ; flag's byte dw Route8BattleText5 ; 0x52be TextBeforeBattle dw Route8AfterBattleText5 ; 0x52c8 TextAfterBattle dw Route8EndBattleText5 ; 0x52c3 TextEndBattle dw Route8EndBattleText5 ; 0x52c3 TextEndBattle ; 0x5921f Route8TrainerHeader5: ; 0x5921f db $6 ; flag's bit db ($3 << 4) ; trainer's view range dw $d7cd ; flag's byte dw Route8BattleText6 ; 0x52d7 TextBeforeBattle dw Route8AfterBattleText6 ; 0x52e1 TextAfterBattle dw Route8EndBattleText6 ; 0x52dc TextEndBattle dw Route8EndBattleText6 ; 0x52dc TextEndBattle ; 0x5922b Route8TrainerHeader6: ; 0x5922b db $7 ; flag's bit db ($2 << 4) ; trainer's view range dw $d7cd ; flag's byte dw Route8BattleText7 ; 0x52f0 TextBeforeBattle dw Route8AfterBattleText7 ; 0x52fa TextAfterBattle dw Route8EndBattleText7 ; 0x52f5 TextEndBattle dw Route8EndBattleText7 ; 0x52f5 TextEndBattle ; 0x59237 Route8TrainerHeader7: ; 0x59237 db $8 ; flag's bit db ($2 << 4) ; trainer's view range dw $d7cd ; flag's byte dw Route8BattleText8 ; 0x5309 TextBeforeBattle dw Route8AfterBattleText8 ; 0x5313 TextAfterBattle dw Route8EndBattleText8 ; 0x530e TextEndBattle dw Route8EndBattleText8 ; 0x530e TextEndBattle ; 0x59243 Route8TrainerHeader8: ; 0x59243 db $9 ; flag's bit db ($4 << 4) ; trainer's view range dw $d7cd ; flag's byte dw Route8BattleText9 ; 0x5322 TextBeforeBattle dw Route8AfterBattleText9 ; 0x532c TextAfterBattle dw Route8EndBattleText9 ; 0x5327 TextEndBattle dw Route8EndBattleText9 ; 0x5327 TextEndBattle ; 0x5924e db $ff Route8Text1: ; 0x59250 db $8 ld hl, Route8TrainerHeader0 call LoadTrainerHeader jp TextScriptEnd ; 0x5925a Route8BattleText1: ; 0x5925a TX_FAR _Route8BattleText1 db $50 ; 0x5925f Route8EndBattleText1: ; 0x5925f TX_FAR _Route8EndBattleText1 db $50 ; 0x5925f + 5 bytes Route8AfterBattleText1: ; 0x59264 TX_FAR _Route8AfterBattleText1 db $50 ; 0x59264 + 5 bytes Route8Text2: ; 0x59269 db $08 ; asm ld hl, Route8TrainerHeader1 call LoadTrainerHeader jp TextScriptEnd Route8BattleText2: ; 0x59273 TX_FAR _Route8BattleText2 db $50 ; 0x59273 + 5 bytes Route8EndBattleText2: ; 0x59278 TX_FAR _Route8EndBattleText2 db $50 ; 0x59278 + 5 bytes Route8AfterBattleText2: ; 0x5927d TX_FAR _Route8AfterBattleText2 db $50 ; 0x5927d + 5 bytes Route8Text3: ; 0x59282 db $08 ; asm ld hl, Route8TrainerHeader2 call LoadTrainerHeader jp TextScriptEnd Route8BattleText3: ; 0x5928c TX_FAR _Route8BattleText3 db $50 ; 0x5928c + 5 bytes Route8EndBattleText3: ; 0x59291 TX_FAR _Route8EndBattleText3 db $50 ; 0x59291 + 5 bytes Route8AfterBattleText3: ; 0x59296 TX_FAR _Route8AfterBattleText3 db $50 ; 0x59296 + 5 bytes Route8Text4: ; 0x5929b db $08 ; asm ld hl, Route8TrainerHeader3 call LoadTrainerHeader jp TextScriptEnd Route8BattleText4: ; 0x592a5 TX_FAR _Route8BattleText4 db $50 ; 0x592a5 + 5 bytes Route8EndBattleText4: ; 0x592aa TX_FAR _Route8EndBattleText4 db $50 ; 0x592aa + 5 bytes Route8AfterBattleText4: ; 0x592af TX_FAR _Route8AfterBattleText4 db $50 ; 0x592af + 5 bytes Route8Text5: ; 0x592b4 db $08 ; asm ld hl, Route8TrainerHeader4 call LoadTrainerHeader jp TextScriptEnd Route8BattleText5: ; 0x592be TX_FAR _Route8BattleText5 db $50 ; 0x592be + 5 bytes Route8EndBattleText5: ; 0x592c3 TX_FAR _Route8EndBattleText5 db $50 ; 0x592c3 + 5 bytes Route8AfterBattleText5: ; 0x592c8 TX_FAR _Route8AfterBattleText5 db $50 ; 0x592c8 + 5 bytes Route8Text6: ; 0x592cd db $08 ; asm ld hl, Route8TrainerHeader5 call LoadTrainerHeader jp TextScriptEnd Route8BattleText6: ; 0x592d7 TX_FAR _Route8BattleText6 db $50 ; 0x592d7 + 5 bytes Route8EndBattleText6: ; 0x592dc TX_FAR _Route8EndBattleText6 db $50 ; 0x592dc + 5 bytes Route8AfterBattleText6: ; 0x592e1 TX_FAR _Route8AfterBattleText6 db $50 ; 0x592e1 + 5 bytes Route8Text7: ; 0x592e6 db $08 ; asm ld hl, Route8TrainerHeader6 call LoadTrainerHeader jp TextScriptEnd Route8BattleText7: ; 0x592f0 TX_FAR _Route8BattleText7 db $50 ; 0x592f0 + 5 bytes Route8EndBattleText7: ; 0x592f5 TX_FAR _Route8EndBattleText7 db $50 ; 0x592f5 + 5 bytes Route8AfterBattleText7: ; 0x592fa TX_FAR _Route8AfterBattleText7 db $50 ; 0x592fa + 5 bytes Route8Text8: ; 0x592ff db $08 ; asm ld hl, Route8TrainerHeader7 call LoadTrainerHeader jp TextScriptEnd Route8BattleText8: ; 0x59309 TX_FAR _Route8BattleText8 db $50 ; 0x59309 + 5 bytes Route8EndBattleText8: ; 0x5930e TX_FAR _Route8EndBattleText8 db $50 ; 0x5930e + 5 bytes Route8AfterBattleText8: ; 0x59313 TX_FAR _Route8AfterBattleText8 db $50 ; 0x59313 + 5 bytes Route8Text9: ; 0x59318 db $08 ; asm ld hl, Route8TrainerHeader8 call LoadTrainerHeader jp TextScriptEnd Route8BattleText9: ; 0x59322 TX_FAR _Route8BattleText9 db $50 ; 0x59322 + 5 bytes Route8EndBattleText9: ; 0x59327 TX_FAR _Route8EndBattleText9 db $50 ; 0x59327 + 5 bytes Route8AfterBattleText9: ; 0x5932c TX_FAR _Route8AfterBattleText9 db $50 ; 0x5932c + 5 bytes Route8Text10: ; 0x59331 TX_FAR _Route8Text10 db $50 Route10Script: ; 0x59336 call $3c3c ld hl, Route10TrainerHeaders ld de, Route10_Unknown59349 ld a, [$d605] call $3160 ld [$d605], a ret ; 0x59349 Route10_Unknown59349: ; 0x59349 INCBIN "baserom.gbc",$59349,$6 Route10Texts: ; 0x5934f dw Route10Text1, Route10Text2, Route10Text3, Route10Text4, Route10Text5, Route10Text6, Route10Text7, Route10Text8, Route10Text9, Route10Text10 Route10TrainerHeaders: Route10TrainerHeader0: ; 0x59363 db $1 ; flag's bit db ($4 << 4) ; trainer's view range dw $d7d1 ; flag's byte dw Route10BattleText1 ; 0x53b6 TextBeforeBattle dw Route10AfterBattleText1 ; 0x53c0 TextAfterBattle dw Route10EndBattleText1 ; 0x53bb TextEndBattle dw Route10EndBattleText1 ; 0x53bb TextEndBattle ; 0x5936f Route10TrainerHeader1: ; 0x5936f db $2 ; flag's bit db ($3 << 4) ; trainer's view range dw $d7d1 ; flag's byte dw Route10BattleText2 ; 0x53cf TextBeforeBattle dw Route10AfterBattleText2 ; 0x53d9 TextAfterBattle dw Route10EndBattleText2 ; 0x53d4 TextEndBattle dw Route10EndBattleText2 ; 0x53d4 TextEndBattle ; 0x5937b Route10TrainerHeader2: ; 0x5937b db $3 ; flag's bit db ($4 << 4) ; trainer's view range dw $d7d1 ; flag's byte dw Route10BattleText3 ; 0x53e8 TextBeforeBattle dw Route10AfterBattleText3 ; 0x53f2 TextAfterBattle dw Route10EndBattleText3 ; 0x53ed TextEndBattle dw Route10EndBattleText3 ; 0x53ed TextEndBattle ; 0x59387 Route10TrainerHeader3: ; 0x59387 db $4 ; flag's bit db ($3 << 4) ; trainer's view range dw $d7d1 ; flag's byte dw Route10BattleText4 ; 0x5401 TextBeforeBattle dw Route10AfterBattleText4 ; 0x540b TextAfterBattle dw Route10EndBattleText4 ; 0x5406 TextEndBattle dw Route10EndBattleText4 ; 0x5406 TextEndBattle ; 0x59393 Route10TrainerHeader4: ; 0x59393 db $5 ; flag's bit db ($2 << 4) ; trainer's view range dw $d7d1 ; flag's byte dw Route10BattleText5 ; 0x541a TextBeforeBattle dw Route10AfterBattleText5 ; 0x5424 TextAfterBattle dw Route10EndBattleText5 ; 0x541f TextEndBattle dw Route10EndBattleText5 ; 0x541f TextEndBattle ; 0x5939f Route10TrainerHeader5: ; 0x5939f db $6 ; flag's bit db ($2 << 4) ; trainer's view range dw $d7d1 ; flag's byte dw Route10BattleText6 ; 0x5433 TextBeforeBattle dw Route10AfterBattleText6 ; 0x543d TextAfterBattle dw Route10EndBattleText6 ; 0x5438 TextEndBattle dw Route10EndBattleText6 ; 0x5438 TextEndBattle ; 0x593ab db $ff Route10Text1: ; 0x593ac db $08 ; asm ld hl, Route10TrainerHeader0 call LoadTrainerHeader jp TextScriptEnd Route10BattleText1: ; 0x593b6 TX_FAR _Route10BattleText1 db $50 ; 0x593b6 + 5 bytes Route10EndBattleText1: ; 0x593bb TX_FAR _Route10EndBattleText1 db $50 ; 0x593bb + 5 bytes Route10AfterBattleText1: ; 0x593c0 TX_FAR _Route10AfterBattleText1 db $50 ; 0x593c0 + 5 bytes Route10Text2: ; 0x593c5 db $08 ; asm ld hl, Route10TrainerHeader1 call LoadTrainerHeader jp TextScriptEnd Route10BattleText2: ; 0x593cf TX_FAR _Route10BattleText2 db $50 ; 0x593cf + 5 bytes Route10EndBattleText2: ; 0x593d4 TX_FAR _Route10EndBattleText2 db $50 ; 0x593d4 + 5 bytes Route10AfterBattleText2: ; 0x593d9 TX_FAR _Route10AfterBattleText2 db $50 ; 0x593d9 + 5 bytes Route10Text3: ; 0x593de db $08 ; asm ld hl, Route10TrainerHeader2 call LoadTrainerHeader jp TextScriptEnd Route10BattleText3: ; 0x593e8 TX_FAR _Route10BattleText3 db $50 ; 0x593e8 + 5 bytes Route10EndBattleText3: ; 0x593ed TX_FAR _Route10EndBattleText3 db $50 ; 0x593ed + 5 bytes Route10AfterBattleText3: ; 0x593f2 TX_FAR _Route10AfterBattleText3 db $50 ; 0x593f2 + 5 bytes Route10Text4: ; 0x593f7 db $08 ; asm ld hl, Route10TrainerHeader3 call LoadTrainerHeader jp TextScriptEnd Route10BattleText4: ; 0x59401 TX_FAR _Route10BattleText4 db $50 ; 0x59401 + 5 bytes Route10EndBattleText4: ; 0x59406 TX_FAR _Route10EndBattleText4 db $50 ; 0x59406 + 5 bytes Route10AfterBattleText4: ; 0x5940b TX_FAR _Route10AfterBattleText4 db $50 ; 0x5940b + 5 bytes Route10Text5: ; 0x59410 db $08 ; asm ld hl, Route10TrainerHeader4 call LoadTrainerHeader jp TextScriptEnd Route10BattleText5: ; 0x5941a TX_FAR _Route10BattleText5 db $50 ; 0x5941a + 5 bytes Route10EndBattleText5: ; 0x5941f TX_FAR _Route10EndBattleText5 db $50 ; 0x5941f + 5 bytes Route10AfterBattleText5: ; 0x59424 TX_FAR _Route10AfterBattleText5 db $50 ; 0x59424 + 5 bytes Route10Text6: ; 0x59429 db $08 ; asm ld hl, Route10TrainerHeader5 call LoadTrainerHeader jp TextScriptEnd Route10BattleText6: ; 0x59433 TX_FAR _Route10BattleText6 db $50 ; 0x59433 + 5 bytes Route10EndBattleText6: ; 0x59438 TX_FAR _Route10EndBattleText6 db $50 ; 0x59438 + 5 bytes Route10AfterBattleText6: ; 0x5943d TX_FAR _Route10AfterBattleText6 db $50 ; 0x5943d + 5 bytes Route10Text9: ; 0x59442 Route10Text7: ; 0x59442 TX_FAR _Route10Text7 ; _Route10Text9 db $50 Route10Text10: ; 0x59447 TX_FAR _Route10Text10 db $50 Route11Script: ; 0x5944c call $3c3c ld hl, Route11TrainerHeaders ld de, Route11_Unknown5945f ld a, [$d623] call $3160 ld [$d623], a ret ; 0x5945f Route11_Unknown5945f: ; 0x5945f INCBIN "baserom.gbc",$5945f,$59465 - $5945f Route11Texts: ; 0x59465 dw UnnamedText_594f4, Route11Text2, Route11Text3, Route11Text4, Route11Text5, Route11Text6, Route11Text7, Route11Text8, Route11Text9, Route11Text10, Route11Text11 Route11TrainerHeaders: Route11TrainerHeader0: ; 0x5947b db $1 ; flag's bit db ($3 << 4) ; trainer's view range dw $d7d5 ; flag's byte dw Route11BattleText1 ; 0x54fe TextBeforeBattle dw Route11AfterBattleText1 ; 0x5508 TextAfterBattle dw Route11EndBattleText1 ; 0x5503 TextEndBattle dw Route11EndBattleText1 ; 0x5503 TextEndBattle ; 0x59487 Route11TrainerHeader1: ; 0x59487 db $2 ; flag's bit db ($2 << 4) ; trainer's view range dw $d7d5 ; flag's byte dw Route11BattleText2 ; 0x5517 TextBeforeBattle dw Route11AfterBattleText2 ; 0x5521 TextAfterBattle dw Route11EndBattleText2 ; 0x551c TextEndBattle dw Route11EndBattleText2 ; 0x551c TextEndBattle ; 0x59493 Route11TrainerHeader2: ; 0x59493 db $3 ; flag's bit db ($3 << 4) ; trainer's view range dw $d7d5 ; flag's byte dw Route11BattleText3 ; 0x5530 TextBeforeBattle dw Route11AfterBattleText3 ; 0x553a TextAfterBattle dw Route11EndBattleText3 ; 0x5535 TextEndBattle dw Route11EndBattleText3 ; 0x5535 TextEndBattle ; 0x5949f Route11TrainerHeader3: ; 0x5949f db $4 ; flag's bit db ($3 << 4) ; trainer's view range dw $d7d5 ; flag's byte dw Route11BattleText4 ; 0x5549 TextBeforeBattle dw Route11AfterBattleText4 ; 0x5553 TextAfterBattle dw Route11EndBattleText4 ; 0x554e TextEndBattle dw Route11EndBattleText4 ; 0x554e TextEndBattle ; 0x594ab Route11TrainerHeader4: ; 0x594ab db $5 ; flag's bit db ($4 << 4) ; trainer's view range dw $d7d5 ; flag's byte dw Route11BattleText5 ; 0x5562 TextBeforeBattle dw Route11AfterBattleText5 ; 0x556c TextAfterBattle dw Route11EndBattleText5 ; 0x5567 TextEndBattle dw Route11EndBattleText5 ; 0x5567 TextEndBattle ; 0x594b7 Route11TrainerHeader5: ; 0x594b7 db $6 ; flag's bit db ($3 << 4) ; trainer's view range dw $d7d5 ; flag's byte dw Route11BattleText6 ; 0x557b TextBeforeBattle dw Route11AfterBattleText6 ; 0x5585 TextAfterBattle dw Route11EndBattleText6 ; 0x5580 TextEndBattle dw Route11EndBattleText6 ; 0x5580 TextEndBattle ; 0x594c3 Route11TrainerHeader6: ; 0x594c3 db $7 ; flag's bit db ($3 << 4) ; trainer's view range dw $d7d5 ; flag's byte dw Route11BattleText7 ; 0x5594 TextBeforeBattle dw Route11AfterBattleText7 ; 0x559e TextAfterBattle dw Route11EndBattleText7 ; 0x5599 TextEndBattle dw Route11EndBattleText7 ; 0x5599 TextEndBattle ; 0x594cf Route11TrainerHeader7: ; 0x594cf db $8 ; flag's bit db ($4 << 4) ; trainer's view range dw $d7d5 ; flag's byte dw Route11BattleText8 ; 0x55ad TextBeforeBattle dw Route11AfterBattleText8 ; 0x55b7 TextAfterBattle dw Route11EndBattleText8 ; 0x55b2 TextEndBattle dw Route11EndBattleText8 ; 0x55b2 TextEndBattle ; 0x594db Route11TrainerHeader8: ; 0x594db db $9 ; flag's bit db ($3 << 4) ; trainer's view range dw $d7d5 ; flag's byte dw Route11BattleText9 ; 0x55c6 TextBeforeBattle dw Route11AfterBattleText9 ; 0x55d0 TextAfterBattle dw Route11EndBattleText9 ; 0x55cb TextEndBattle dw Route11EndBattleText9 ; 0x55cb TextEndBattle ; 0x594e7 Route11TrainerHeader9: ; 0x594e7 db $a ; flag's bit db ($4 << 4) ; trainer's view range dw $d7d5 ; flag's byte dw Route11BattleText10 ; 0x55df TextBeforeBattle dw Route11AfterBattleText10 ; 0x55e9 TextAfterBattle dw Route11EndBattleText10 ; 0x55e4 TextEndBattle dw Route11EndBattleText10 ; 0x55e4 TextEndBattle ; 0x594f3 db $ff UnnamedText_594f4: ; 0x594f4 db $8 ld hl, Route11TrainerHeader0 call LoadTrainerHeader jp TextScriptEnd ; 0x594fe Route11BattleText1: ; 0x594fe TX_FAR _Route11BattleText1 db $50 ; 0x594fe + 5 bytes Route11EndBattleText1: ; 0x59503 TX_FAR _Route11EndBattleText1 db $50 ; 0x59503 + 5 bytes Route11AfterBattleText1: ; 0x59508 TX_FAR _Route11AfterBattleText1 db $50 ; 0x59508 + 5 bytes Route11Text2: ; 0x5950d db $08 ; asm ld hl, Route11TrainerHeader1 call LoadTrainerHeader jp TextScriptEnd Route11BattleText2: ; 0x59517 TX_FAR _Route11BattleText2 db $50 ; 0x59517 + 5 bytes Route11EndBattleText2: ; 0x5951c TX_FAR _Route11EndBattleText2 db $50 ; 0x5951c + 5 bytes Route11AfterBattleText2: ; 0x59521 TX_FAR _Route11AfterBattleText2 db $50 ; 0x59521 + 5 bytes Route11Text3: ; 0x59526 db $08 ; asm ld hl, Route11TrainerHeader2 call LoadTrainerHeader jp TextScriptEnd Route11BattleText3: ; 0x59530 TX_FAR _Route11BattleText3 db $50 ; 0x59530 + 5 bytes Route11EndBattleText3: ; 0x59535 TX_FAR _Route11EndBattleText3 db $50 ; 0x59535 + 5 bytes Route11AfterBattleText3: ; 0x5953a TX_FAR _Route11AfterBattleText3 db $50 ; 0x5953a + 5 bytes Route11Text4: ; 0x5953f db $08 ; asm ld hl, Route11TrainerHeader3 call LoadTrainerHeader jp TextScriptEnd Route11BattleText4: ; 0x59549 TX_FAR _Route11BattleText4 db $50 ; 0x59549 + 5 bytes Route11EndBattleText4: ; 0x5954e TX_FAR _Route11EndBattleText4 db $50 ; 0x5954e + 5 bytes Route11AfterBattleText4: ; 0x59553 TX_FAR _Route11AfterBattleText4 db $50 ; 0x59553 + 5 bytes Route11Text5: ; 0x59558 db $08 ; asm ld hl, Route11TrainerHeader4 call LoadTrainerHeader jp TextScriptEnd Route11BattleText5: ; 0x59562 TX_FAR _Route11BattleText5 db $50 ; 0x59562 + 5 bytes Route11EndBattleText5: ; 0x59567 TX_FAR _Route11EndBattleText5 db $50 ; 0x59567 + 5 bytes Route11AfterBattleText5: ; 0x5956c TX_FAR _Route11AfterBattleText5 db $50 ; 0x5956c + 5 bytes Route11Text6: ; 0x59571 db $08 ; asm ld hl, Route11TrainerHeader5 call LoadTrainerHeader jp TextScriptEnd Route11BattleText6: ; 0x5957b TX_FAR _Route11BattleText6 db $50 ; 0x5957b + 5 bytes Route11EndBattleText6: ; 0x59580 TX_FAR _Route11EndBattleText6 db $50 ; 0x59580 + 5 bytes Route11AfterBattleText6: ; 0x59585 TX_FAR _Route11AfterBattleText6 db $50 ; 0x59585 + 5 bytes Route11Text7: ; 0x5958a db $08 ; asm ld hl, Route11TrainerHeader6 call LoadTrainerHeader jp TextScriptEnd Route11BattleText7: ; 0x59594 TX_FAR _Route11BattleText7 db $50 ; 0x59594 + 5 bytes Route11EndBattleText7: ; 0x59599 TX_FAR _Route11EndBattleText7 db $50 ; 0x59599 + 5 bytes Route11AfterBattleText7: ; 0x5959e TX_FAR _Route11AfterBattleText7 db $50 ; 0x5959e + 5 bytes Route11Text8: ; 0x595a3 db $08 ; asm ld hl, Route11TrainerHeader7 call LoadTrainerHeader jp TextScriptEnd Route11BattleText8: ; 0x595ad TX_FAR _Route11BattleText8 db $50 ; 0x595ad + 5 bytes Route11EndBattleText8: ; 0x595b2 TX_FAR _Route11EndBattleText8 db $50 ; 0x595b2 + 5 bytes Route11AfterBattleText8: ; 0x595b7 TX_FAR _Route11AfterBattleText8 db $50 ; 0x595b7 + 5 bytes Route11Text9: ; 0x595bc db $08 ; asm ld hl, Route11TrainerHeader8 call LoadTrainerHeader jp TextScriptEnd Route11BattleText9: ; 0x595c6 TX_FAR _Route11BattleText9 db $50 ; 0x595c6 + 5 bytes Route11EndBattleText9: ; 0x595cb TX_FAR _Route11EndBattleText9 db $50 ; 0x595cb + 5 bytes Route11AfterBattleText9: ; 0x595d0 TX_FAR _Route11AfterBattleText9 db $50 ; 0x595d0 + 5 bytes Route11Text10: ; 0x595d5 db $08 ; asm ld hl, Route11TrainerHeader9 call LoadTrainerHeader jp TextScriptEnd Route11BattleText10: ; 0x595df TX_FAR _Route11BattleText10 db $50 ; 0x595df + 5 bytes Route11EndBattleText10: ; 0x595e4 TX_FAR _Route11EndBattleText10 db $50 ; 0x595e4 + 5 bytes Route11AfterBattleText10: ; 0x595e9 TX_FAR _Route11AfterBattleText10 db $50 ; 0x595e9 + 5 bytes Route11Text11: ; 0x595ee TX_FAR _Route11Text11 db $50 Route12Script: ; 0x595f3 call $3c3c ld hl, Route12TrainerHeaders ld de, $5611 ld a, [$d624] call $3160 ld [$d624], a ret ; 0x59606 INCBIN "baserom.gbc",$59606,$6f Route12Texts: ; 0x59675 dw Route12Text1, Route12Text2, Route12Text3, Route12Text4, Route12Text5, Route12Text6, Route12Text7, Route12Text8, Route12Text9, Route12Text10, Route12Text11, Route12Text12, Route12Text13, Route12Text14 Route12TrainerHeaders: Route12TrainerHeader0: ; 0x59691 db $2 ; flag's bit db ($4 << 4) ; trainer's view range dw $d7d7 ; flag's byte dw Route12BattleText1 ; 0x56ff TextBeforeBattle dw Route12AfterBattleText1 ; 0x5709 TextAfterBattle dw Route12EndBattleText1 ; 0x5704 TextEndBattle dw Route12EndBattleText1 ; 0x5704 TextEndBattle ; 0x5969d Route12TrainerHeader1: ; 0x5969d db $3 ; flag's bit db ($4 << 4) ; trainer's view range dw $d7d7 ; flag's byte dw Route12BattleText2 ; 0x5718 TextBeforeBattle dw Route12AfterBattleText2 ; 0x5722 TextAfterBattle dw Route12EndBattleText2 ; 0x571d TextEndBattle dw Route12EndBattleText2 ; 0x571d TextEndBattle ; 0x596a9 Route12TrainerHeader2: ; 0x596a9 db $4 ; flag's bit db ($4 << 4) ; trainer's view range dw $d7d7 ; flag's byte dw Route12BattleText3 ; 0x5731 TextBeforeBattle dw Route12AfterBattleText3 ; 0x573b TextAfterBattle dw Route12EndBattleText3 ; 0x5736 TextEndBattle dw Route12EndBattleText3 ; 0x5736 TextEndBattle ; 0x596b5 Route12TrainerHeader3: ; 0x596b5 db $5 ; flag's bit db ($4 << 4) ; trainer's view range dw $d7d7 ; flag's byte dw Route12BattleText4 ; 0x574a TextBeforeBattle dw Route12AfterBattleText4 ; 0x5754 TextAfterBattle dw Route12EndBattleText4 ; 0x574f TextEndBattle dw Route12EndBattleText4 ; 0x574f TextEndBattle ; 0x596c1 Route12TrainerHeader4: ; 0x596c1 db $6 ; flag's bit db ($4 << 4) ; trainer's view range dw $d7d7 ; flag's byte dw Route12BattleText5 ; 0x5763 TextBeforeBattle dw Route12AfterBattleText5 ; 0x576d TextAfterBattle dw Route12EndBattleText5 ; 0x5768 TextEndBattle dw Route12EndBattleText5 ; 0x5768 TextEndBattle ; 0x596cd Route12TrainerHeader5: ; 0x596cd db $7 ; flag's bit db ($4 << 4) ; trainer's view range dw $d7d7 ; flag's byte dw Route12BattleText6 ; 0x577c TextBeforeBattle dw Route12AfterBattleText6 ; 0x5786 TextAfterBattle dw Route12EndBattleText6 ; 0x5781 TextEndBattle dw Route12EndBattleText6 ; 0x5781 TextEndBattle ; 0x596d9 Route12TrainerHeader6: ; 0x596d9 db $8 ; flag's bit db ($1 << 4) ; trainer's view range dw $d7d7 ; flag's byte dw Route12BattleText7 ; 0x5795 TextBeforeBattle dw Route12AfterBattleText7 ; 0x579f TextAfterBattle dw Route12EndBattleText7 ; 0x579a TextEndBattle dw Route12EndBattleText7 ; 0x579a TextEndBattle ; 0x596e5 db $ff Route12Text1: ; 0x596e6 TX_FAR _Route12Text1 db $50 Route12Text13: UnnamedText_596eb: ; 0x596eb TX_FAR _UnnamedText_596eb db $50 ; 0x596eb + 5 bytes Route12Text14: UnnamedText_596f0: ; 0x596f0 TX_FAR _UnnamedText_596f0 db $50 ; 0x596f0 + 5 bytes Route12Text2: ; 0x596f5 db $08 ; asm ld hl, Route12TrainerHeader0 call LoadTrainerHeader jp TextScriptEnd Route12BattleText1: ; 0x596ff TX_FAR _Route12BattleText1 db $50 ; 0x596ff + 5 bytes Route12EndBattleText1: ; 0x59704 TX_FAR _Route12EndBattleText1 db $50 ; 0x59704 + 5 bytes Route12AfterBattleText1: ; 0x59709 TX_FAR _Route12AfterBattleText1 db $50 ; 0x59709 + 5 bytes Route12Text3: ; 0x5970e db $08 ; asm ld hl, Route12TrainerHeader1 call LoadTrainerHeader jp TextScriptEnd Route12BattleText2: ; 0x59718 TX_FAR _Route12BattleText2 db $50 ; 0x59718 + 5 bytes Route12EndBattleText2: ; 0x5971d TX_FAR _Route12EndBattleText2 db $50 ; 0x5971d + 5 bytes Route12AfterBattleText2: ; 0x59722 TX_FAR _Route12AfterBattleText2 db $50 ; 0x59722 + 5 bytes Route12Text4: ; 0x59727 db $08 ; asm ld hl, Route12TrainerHeader2 call LoadTrainerHeader jp TextScriptEnd Route12BattleText3: ; 0x59731 TX_FAR _Route12BattleText3 db $50 ; 0x59731 + 5 bytes Route12EndBattleText3: ; 0x59736 TX_FAR _Route12EndBattleText3 db $50 ; 0x59736 + 5 bytes Route12AfterBattleText3: ; 0x5973b TX_FAR _Route12AfterBattleText3 db $50 ; 0x5973b + 5 bytes Route12Text5: ; 0x59740 db $08 ; asm ld hl, Route12TrainerHeader3 call LoadTrainerHeader jp TextScriptEnd Route12BattleText4: ; 0x5974a TX_FAR _Route12BattleText4 db $50 ; 0x5974a + 5 bytes Route12EndBattleText4: ; 0x5974f TX_FAR _Route12EndBattleText4 db $50 ; 0x5974f + 5 bytes Route12AfterBattleText4: ; 0x59754 TX_FAR _Route12AfterBattleText4 db $50 ; 0x59754 + 5 bytes Route12Text6: ; 0x59759 db $08 ; asm ld hl, Route12TrainerHeader4 call LoadTrainerHeader jp TextScriptEnd Route12BattleText5: ; 0x59763 TX_FAR _Route12BattleText5 db $50 ; 0x59763 + 5 bytes Route12EndBattleText5: ; 0x59768 TX_FAR _Route12EndBattleText5 db $50 ; 0x59768 + 5 bytes Route12AfterBattleText5: ; 0x5976d TX_FAR _Route12AfterBattleText5 db $50 ; 0x5976d + 5 bytes Route12Text7: ; 0x59772 db $08 ; asm ld hl, Route12TrainerHeader5 call LoadTrainerHeader jp TextScriptEnd Route12BattleText6: ; 0x5977c TX_FAR _Route12BattleText6 db $50 ; 0x5977c + 5 bytes Route12EndBattleText6: ; 0x59781 TX_FAR _Route12EndBattleText6 db $50 ; 0x59781 + 5 bytes Route12AfterBattleText6: ; 0x59786 TX_FAR _Route12AfterBattleText6 db $50 ; 0x59786 + 5 bytes Route12Text8: ; 0x5978b db $08 ; asm ld hl, Route12TrainerHeader6 call LoadTrainerHeader jp TextScriptEnd Route12BattleText7: ; 0x59795 TX_FAR _Route12BattleText7 db $50 ; 0x59795 + 5 bytes Route12EndBattleText7: ; 0x5979a TX_FAR _Route12EndBattleText7 db $50 ; 0x5979a + 5 bytes Route12AfterBattleText7: ; 0x5979f TX_FAR _Route12AfterBattleText7 db $50 ; 0x5979f + 5 bytes Route12Text11: ; 0x597a4 TX_FAR _Route12Text11 db $50 Route12Text12: ; 0x597a9 TX_FAR _Route12Text12 db $50 Route15Script: ; 0x597ae call $3c3c ld hl, Route15TrainerHeaders ld de, Route15_Unknown597c1 ld a, [$d625] call $3160 ld [$d625], a ret ; 0x597c1 Route15_Unknown597c1: ; 0x597c1 INCBIN "baserom.gbc",$597c1,$6 Route15Texts: ; 0x597c7 dw Route15Text1, Route15Text2, Route15Text3, Route15Text4, Route15Text5, Route15Text6, Route15Text7, Route15Text8, Route15Text9, Route15Text10, Route15Text11, Route15Text12 Route15TrainerHeaders: Route15TrainerHeader0: ; 0x597df db $1 ; flag's bit db ($2 << 4) ; trainer's view range dw $d7dd ; flag's byte dw Route15BattleText1 ; 0x5898 TextBeforeBattle dw Route15AfterBattleText1 ; 0x58a2 TextAfterBattle dw Route15EndBattleText1 ; 0x589d TextEndBattle dw Route15EndBattleText1 ; 0x589d TextEndBattle ; 0x597eb Route15TrainerHeader1: ; 0x597eb db $2 ; flag's bit db ($3 << 4) ; trainer's view range dw $d7dd ; flag's byte dw Route15BattleText2 ; 0x58a7 TextBeforeBattle dw Route15AfterBattleText2 ; 0x58b1 TextAfterBattle dw Route15EndBattleText2 ; 0x58ac TextEndBattle dw Route15EndBattleText2 ; 0x58ac TextEndBattle ; 0x597f7 Route15TrainerHeader2: ; 0x597f7 db $3 ; flag's bit db ($3 << 4) ; trainer's view range dw $d7dd ; flag's byte dw Route15BattleText3 ; 0x58b6 TextBeforeBattle dw Route15AfterBattleText3 ; 0x58c0 TextAfterBattle dw Route15EndBattleText3 ; 0x58bb TextEndBattle dw Route15EndBattleText3 ; 0x58bb TextEndBattle ; 0x59803 Route15TrainerHeader3: ; 0x59803 db $4 ; flag's bit db ($3 << 4) ; trainer's view range dw $d7dd ; flag's byte dw Route15BattleText4 ; 0x58c5 TextBeforeBattle dw Route15AfterBattleText4 ; 0x58cf TextAfterBattle dw Route15EndBattleText4 ; 0x58ca TextEndBattle dw Route15EndBattleText4 ; 0x58ca TextEndBattle ; 0x5980f Route15TrainerHeader4: ; 0x5980f db $5 ; flag's bit db ($2 << 4) ; trainer's view range dw $d7dd ; flag's byte dw Route15BattleText5 ; 0x58d4 TextBeforeBattle dw Route15AfterBattleText5 ; 0x58de TextAfterBattle dw Route15EndBattleText5 ; 0x58d9 TextEndBattle dw Route15EndBattleText5 ; 0x58d9 TextEndBattle ; 0x5981b Route15TrainerHeader5: ; 0x5981b db $6 ; flag's bit db ($3 << 4) ; trainer's view range dw $d7dd ; flag's byte dw Route15BattleText6 ; 0x58e3 TextBeforeBattle dw Route15AfterBattleText6 ; 0x58ed TextAfterBattle dw Route15EndBattleText6 ; 0x58e8 TextEndBattle dw Route15EndBattleText6 ; 0x58e8 TextEndBattle ; 0x59827 Route15TrainerHeader6: ; 0x59827 db $7 ; flag's bit db ($3 << 4) ; trainer's view range dw $d7dd ; flag's byte dw Route15BattleText7 ; 0x58f2 TextBeforeBattle dw Route15AfterBattleText7 ; 0x58fc TextAfterBattle dw Route15EndBattleText7 ; 0x58f7 TextEndBattle dw Route15EndBattleText7 ; 0x58f7 TextEndBattle ; 0x59833 Route15TrainerHeader7: ; 0x59833 db $8 ; flag's bit db ($3 << 4) ; trainer's view range dw $d7dd ; flag's byte dw Route15BattleText8 ; 0x5901 TextBeforeBattle dw Route15AfterBattleText8 ; 0x590b TextAfterBattle dw Route15EndBattleText8 ; 0x5906 TextEndBattle dw Route15EndBattleText8 ; 0x5906 TextEndBattle ; 0x5983f Route15TrainerHeader8: ; 0x5983f db $9 ; flag's bit db ($3 << 4) ; trainer's view range dw $d7dd ; flag's byte dw Route15BattleText9 ; 0x5910 TextBeforeBattle dw Route15AfterBattleText9 ; 0x591a TextAfterBattle dw Route15EndBattleText9 ; 0x5915 TextEndBattle dw Route15EndBattleText9 ; 0x5915 TextEndBattle ; 0x5984b Route15TrainerHeader9: ; 0x5984b db $a ; flag's bit db ($3 << 4) ; trainer's view range dw $d7dd ; flag's byte dw Route15BattleText10 ; 0x591f TextBeforeBattle dw Route15AfterBattleText10 ; 0x5929 TextAfterBattle dw Route15EndBattleText10 ; 0x5924 TextEndBattle dw Route15EndBattleText10 ; 0x5924 TextEndBattle ; 0x59857 db $ff Route15Text1: ; 0x59858 db $8 ; asm ld hl, Route15TrainerHeader0 jr asm_33cb7 ; 0x5985c $34 Route15Text2: db $8 ; asm ld hl, Route15TrainerHeader1 jr asm_33cb7 ; 0x59862 $2e Route15Text3: db $8 ; asm ld hl, Route15TrainerHeader2 jr asm_33cb7 ; 0x59868 $28 Route15Text4: db $8 ; asm ld hl, Route15TrainerHeader3 jr asm_33cb7 ; 0x5986e $22 Route15Text5: db $8 ; asm ld hl, Route15TrainerHeader4 jr asm_33cb7 ; 0x59874 $1c Route15Text6: db $8 ; asm ld hl, Route15TrainerHeader5 jr asm_33cb7 ; 0x5987a $16 Route15Text7: db $8 ; asm ld hl, Route15TrainerHeader6 jr asm_33cb7 ; 0x59880 $10 Route15Text8: db $8 ; asm ld hl, Route15TrainerHeader7 jr asm_33cb7 ; 0x59886 $a Route15Text9: db $8 ; asm ld hl, Route15TrainerHeader8 jr asm_33cb7 ; 0x5988c $4 Route15Text10: db $8 ; asm ld hl, Route15TrainerHeader9 asm_33cb7: ; 0x59892 call LoadTrainerHeader jp TextScriptEnd ; 0x59898 Route15BattleText1: ; 0x59898 TX_FAR _Route15BattleText1 db $50 ; 0x59898 + 5 bytes Route15EndBattleText1: ; 0x5989d TX_FAR _Route15EndBattleText1 db $50 ; 0x5989d + 5 bytes Route15AfterBattleText1: ; 0x598a2 TX_FAR _Route15AfterBattleText1 db $50 ; 0x598a2 + 5 bytes Route15BattleText2: ; 0x598a7 TX_FAR _Route15BattleText2 db $50 ; 0x598a7 + 5 bytes Route15EndBattleText2: ; 0x598ac TX_FAR _Route15EndBattleText2 db $50 ; 0x598ac + 5 bytes Route15AfterBattleText2: ; 0x598b1 TX_FAR _Route15AfterBattleText2 db $50 ; 0x598b1 + 5 bytes Route15BattleText3: ; 0x598b6 TX_FAR _Route15BattleText3 db $50 ; 0x598b6 + 5 bytes Route15EndBattleText3: ; 0x598bb TX_FAR _Route15EndBattleText3 db $50 ; 0x598bb + 5 bytes Route15AfterBattleText3: ; 0x598c0 TX_FAR _Route15AfterBattleText3 db $50 ; 0x598c0 + 5 bytes Route15BattleText4: ; 0x598c5 TX_FAR _Route15BattleText4 db $50 ; 0x598c5 + 5 bytes Route15EndBattleText4: ; 0x598ca TX_FAR _Route15EndBattleText4 db $50 ; 0x598ca + 5 bytes Route15AfterBattleText4: ; 0x598cf TX_FAR _Route15AfterBattleText4 db $50 ; 0x598cf + 5 bytes Route15BattleText5: ; 0x598d4 TX_FAR _Route15BattleText5 db $50 ; 0x598d4 + 5 bytes Route15EndBattleText5: ; 0x598d9 TX_FAR _Route15EndBattleText5 db $50 ; 0x598d9 + 5 bytes Route15AfterBattleText5: ; 0x598de TX_FAR _Route15AfterBattleText5 db $50 ; 0x598de + 5 bytes Route15BattleText6: ; 0x598e3 TX_FAR _Route15BattleText6 db $50 ; 0x598e3 + 5 bytes Route15EndBattleText6: ; 0x598e8 TX_FAR _Route15EndBattleText6 db $50 ; 0x598e8 + 5 bytes Route15AfterBattleText6: ; 0x598ed TX_FAR _Route15AfterBattleText6 db $50 ; 0x598ed + 5 bytes Route15BattleText7: ; 0x598f2 TX_FAR _Route15BattleText7 db $50 ; 0x598f2 + 5 bytes Route15EndBattleText7: ; 0x598f7 TX_FAR _Route15EndBattleText7 db $50 ; 0x598f7 + 5 bytes Route15AfterBattleText7: ; 0x598fc TX_FAR _Route15AfterBattleText7 db $50 ; 0x598fc + 5 bytes Route15BattleText8: ; 0x59901 TX_FAR _Route15BattleText8 db $50 ; 0x59901 + 5 bytes Route15EndBattleText8: ; 0x59906 TX_FAR _Route15EndBattleText8 db $50 ; 0x59906 + 5 bytes Route15AfterBattleText8: ; 0x5990b TX_FAR _Route15AfterBattleText8 db $50 ; 0x5990b + 5 bytes Route15BattleText9: ; 0x59910 TX_FAR _Route15BattleText9 db $50 ; 0x59910 + 5 bytes Route15EndBattleText9: ; 0x59915 TX_FAR _Route15EndBattleText9 db $50 ; 0x59915 + 5 bytes Route15AfterBattleText9: ; 0x5991a TX_FAR _Route15AfterBattleText9 db $50 ; 0x5991a + 5 bytes Route15BattleText10: ; 0x5991f TX_FAR _Route15BattleText10 db $50 ; 0x5991f + 5 bytes Route15EndBattleText10: ; 0x59924 TX_FAR _Route15EndBattleText10 db $50 ; 0x59924 + 5 bytes Route15AfterBattleText10: ; 0x59929 TX_FAR _Route15AfterBattleText10 db $50 ; 0x59929 + 5 bytes Route15Text12: ; 0x5992e TX_FAR _Route15Text12 db $50 Route16Script: ; 0x59933 call $3c3c ld hl, Route16TrainerHeaders ld de, $5951 ld a, [$d626] call $3160 ld [$d626], a ret ; 0x59946 INCBIN "baserom.gbc",$59946,$73 Route16Texts: ; 0x599b9 dw Route16Text1, Route16Text2, Route16Text3, Route16Text4, Route16Text5, Route16Text6, Route16Text7, Route16Text8, Route16Text9, Route16Text10, Route16Text11 Route16TrainerHeaders: Route16TrainerHeader0: ; 0x599cf db $1 ; flag's bit db ($3 << 4) ; trainer's view range dw $d7df ; flag's byte dw Route16BattleText1 ; 0x5a22 TextBeforeBattle dw Route16AfterBattleText1 ; 0x5a2c TextAfterBattle dw Route16EndBattleText1 ; 0x5a27 TextEndBattle dw Route16EndBattleText1 ; 0x5a27 TextEndBattle ; 0x599db Route16TrainerHeader1: ; 0x599db db $2 ; flag's bit db ($2 << 4) ; trainer's view range dw $d7df ; flag's byte dw Route16BattleText2 ; 0x5a3b TextBeforeBattle dw Route16AfterBattleText2 ; 0x5a45 TextAfterBattle dw Route16EndBattleText2 ; 0x5a40 TextEndBattle dw Route16EndBattleText2 ; 0x5a40 TextEndBattle ; 0x599e7 Route16TrainerHeader2: ; 0x599e7 db $3 ; flag's bit db ($2 << 4) ; trainer's view range dw $d7df ; flag's byte dw Route16BattleText3 ; 0x5a54 TextBeforeBattle dw Route16AfterBattleText3 ; 0x5a5e TextAfterBattle dw Route16EndBattleText3 ; 0x5a59 TextEndBattle dw Route16EndBattleText3 ; 0x5a59 TextEndBattle ; 0x599f3 Route16TrainerHeader3: ; 0x599f3 db $4 ; flag's bit db ($2 << 4) ; trainer's view range dw $d7df ; flag's byte dw Route16BattleText4 ; 0x5a6d TextBeforeBattle dw Route16AfterBattleText4 ; 0x5a77 TextAfterBattle dw Route16EndBattleText4 ; 0x5a72 TextEndBattle dw Route16EndBattleText4 ; 0x5a72 TextEndBattle ; 0x599ff Route16TrainerHeader4: ; 0x599ff db $5 ; flag's bit db ($2 << 4) ; trainer's view range dw $d7df ; flag's byte dw Route16BattleText5 ; 0x5a86 TextBeforeBattle dw Route16AfterBattleText5 ; 0x5a90 TextAfterBattle dw Route16EndBattleText5 ; 0x5a8b TextEndBattle dw Route16EndBattleText5 ; 0x5a8b TextEndBattle ; 0x59a0b Route16TrainerHeader5: ; 0x59a0b db $6 ; flag's bit db ($4 << 4) ; trainer's view range dw $d7df ; flag's byte dw Route16BattleText6 ; 0x5a9f TextBeforeBattle dw Route16AfterBattleText6 ; 0x5aa9 TextAfterBattle dw Route16EndBattleText6 ; 0x5aa4 TextEndBattle dw Route16EndBattleText6 ; 0x5aa4 TextEndBattle ; 0x59a17 db $ff Route16Text1: ; 0x59a18 db $08 ; asm ld hl, Route16TrainerHeader0 call LoadTrainerHeader jp TextScriptEnd Route16BattleText1: ; 0x59a22 TX_FAR _Route16BattleText1 db $50 ; 0x59a22 + 5 bytes Route16EndBattleText1: ; 0x59a27 TX_FAR _Route16EndBattleText1 db $50 ; 0x59a27 + 5 bytes Route16AfterBattleText1: ; 0x59a2c TX_FAR _Route16AfterBattleText1 db $50 ; 0x59a2c + 5 bytes Route16Text2: ; 0x59a31 db $08 ; asm ld hl, Route16TrainerHeader1 call LoadTrainerHeader jp TextScriptEnd Route16BattleText2: ; 0x59a3b TX_FAR _Route16BattleText2 db $50 ; 0x59a3b + 5 bytes Route16EndBattleText2: ; 0x59a40 TX_FAR _Route16EndBattleText2 db $50 ; 0x59a40 + 5 bytes Route16AfterBattleText2: ; 0x59a45 TX_FAR _Route16AfterBattleText2 db $50 ; 0x59a45 + 5 bytes Route16Text3: ; 0x59a4a db $08 ; asm ld hl, Route16TrainerHeader2 call LoadTrainerHeader jp TextScriptEnd Route16BattleText3: ; 0x59a54 TX_FAR _Route16BattleText3 db $50 ; 0x59a54 + 5 bytes Route16EndBattleText3: ; 0x59a59 TX_FAR _Route16EndBattleText3 db $50 ; 0x59a59 + 5 bytes Route16AfterBattleText3: ; 0x59a5e TX_FAR _Route16AfterBattleText3 db $50 ; 0x59a5e + 5 bytes Route16Text4: ; 0x59a63 db $08 ; asm ld hl, Route16TrainerHeader3 call LoadTrainerHeader jp TextScriptEnd Route16BattleText4: ; 0x59a6d TX_FAR _Route16BattleText4 db $50 ; 0x59a6d + 5 bytes Route16EndBattleText4: ; 0x59a72 TX_FAR _Route16EndBattleText4 db $50 ; 0x59a72 + 5 bytes Route16AfterBattleText4: ; 0x59a77 TX_FAR _Route16AfterBattleText4 db $50 ; 0x59a77 + 5 bytes Route16Text5: ; 0x59a7c db $08 ; asm ld hl, Route16TrainerHeader4 call LoadTrainerHeader jp TextScriptEnd Route16BattleText5: ; 0x59a86 TX_FAR _Route16BattleText5 db $50 ; 0x59a86 + 5 bytes Route16EndBattleText5: ; 0x59a8b TX_FAR _Route16EndBattleText5 db $50 ; 0x59a8b + 5 bytes Route16AfterBattleText5: ; 0x59a90 TX_FAR _Route16AfterBattleText5 db $50 ; 0x59a90 + 5 bytes Route16Text6: ; 0x59a95 db $08 ; asm ld hl, Route16TrainerHeader5 call LoadTrainerHeader jp TextScriptEnd Route16BattleText6: ; 0x59a9f TX_FAR _Route16BattleText6 db $50 ; 0x59a9f + 5 bytes Route16EndBattleText6: ; 0x59aa4 TX_FAR _Route16EndBattleText6 db $50 ; 0x59aa4 + 5 bytes Route16AfterBattleText6: ; 0x59aa9 TX_FAR _Route16AfterBattleText6 db $50 ; 0x59aa9 + 5 bytes Route16Text7: ; 0x59aae TX_FAR _Route16Text7 db $50 Route16Text10: ; 0x59ab3 TX_FAR _UnnamedText_59ab3 db $50 ; 0x59ab3 + 5 bytes Route16Text11: ; 0x59ab8 TX_FAR _UnnamedText_59ab8 db $50 ; 0x59ab8 + 5 bytes Route16Text8: ; 0x59abd TX_FAR _Route16Text8 db $50 Route16Text9: ; 0x59ac2 TX_FAR _Route16Text9 db $50 Route18Script: ; 0x59ac7 call $3c3c ld hl, Route18TrainerHeaders ld de, Route18_Unknown59ada ld a, [$d627] call $3160 ld [$d627], a ret ; 0x59ada Route18_Unknown59ada: ; 0x59ada INCBIN "baserom.gbc",$59ada,$6 Route18Texts: ; 0x59ae0 dw Route18Text1, Route18Text2, Route18Text3, Route18Text4, Route18Text5 Route18TrainerHeaders: Route18TrainerHeader0: ; 0x59aea db $1 ; flag's bit db ($3 << 4) ; trainer's view range dw $d7e3 ; flag's byte dw Route18BattleText1 ; 0x5b19 TextBeforeBattle dw Route18AfterBattleText1 ; 0x5b23 TextAfterBattle dw Route18EndBattleText1 ; 0x5b1e TextEndBattle dw Route18EndBattleText1 ; 0x5b1e TextEndBattle ; 0x59af6 Route18TrainerHeader1: ; 0x59af6 db $2 ; flag's bit db ($3 << 4) ; trainer's view range dw $d7e3 ; flag's byte dw Route18BattleText2 ; 0x5b32 TextBeforeBattle dw Route18AfterBattleText2 ; 0x5b3c TextAfterBattle dw Route18EndBattleText2 ; 0x5b37 TextEndBattle dw Route18EndBattleText2 ; 0x5b37 TextEndBattle ; 0x59b02 Route18TrainerHeader2: ; 0x59b02 db $3 ; flag's bit db ($4 << 4) ; trainer's view range dw $d7e3 ; flag's byte dw Route18BattleText3 ; 0x5b4b TextBeforeBattle dw Route18AfterBattleText3 ; 0x5b55 TextAfterBattle dw Route18EndBattleText3 ; 0x5b50 TextEndBattle dw Route18EndBattleText3 ; 0x5b50 TextEndBattle ; 0x59b0e db $ff Route18Text1: ; 0x59b0f db $08 ; asm ld hl, Route18TrainerHeader0 call LoadTrainerHeader jp TextScriptEnd Route18BattleText1: ; 0x59b19 TX_FAR _Route18BattleText1 db $50 ; 0x59b19 + 5 bytes Route18EndBattleText1: ; 0x59b1e TX_FAR _Route18EndBattleText1 db $50 ; 0x59b1e + 5 bytes Route18AfterBattleText1: ; 0x59b23 TX_FAR _Route18AfterBattleText1 db $50 ; 0x59b23 + 5 bytes Route18Text2: ; 0x59b28 db $08 ; asm ld hl, Route18TrainerHeader1 call LoadTrainerHeader jp TextScriptEnd Route18BattleText2: ; 0x59b32 TX_FAR _Route18BattleText2 db $50 ; 0x59b32 + 5 bytes Route18EndBattleText2: ; 0x59b37 TX_FAR _Route18EndBattleText2 db $50 ; 0x59b37 + 5 bytes Route18AfterBattleText2: ; 0x59b3c TX_FAR _Route18AfterBattleText2 db $50 ; 0x59b3c + 5 bytes Route18Text3: ; 0x59b41 db $08 ; asm ld hl, Route18TrainerHeader2 call LoadTrainerHeader jp TextScriptEnd Route18BattleText3: ; 0x59b4b TX_FAR _Route18BattleText3 db $50 ; 0x59b4b + 5 bytes Route18EndBattleText3: ; 0x59b50 TX_FAR _Route18EndBattleText3 db $50 ; 0x59b50 + 5 bytes Route18AfterBattleText3: ; 0x59b55 TX_FAR _Route18AfterBattleText3 db $50 ; 0x59b55 + 5 bytes Route18Text4: ; 0x59b5a TX_FAR _Route18Text4 db $50 Route18Text5: ; 0x59b5f TX_FAR _Route18Text5 db $50 FanClub_h: ; 0x59b64 to 0x59b70 (12 bytes) (id=90) db $10 ; tileset db POKEMON_FAN_CLUB_HEIGHT, POKEMON_FAN_CLUB_WIDTH ; dimensions (y, x) dw FanClubBlocks, FanClubTexts, FanClubScript ; blocks, texts, scripts db $00 ; connections dw FanClubObject ; objects FanClubScript: ; 0x59b70 jp $3c3c ; 0x59b73 INCBIN "baserom.gbc",$59b73,$11 FanClubTexts: ; 0x59b84 dw FanClubText1, FanClubText2, FanClubText3, FanClubText4, FanClubText5, FanClubText6, FanClubText7, FanClubText8 FanClubText1: ; 0x59b94 db $08 ; asm ld a, [$d771] bit 7, a jr nz, asm_67b22 ; 0x59b9a ld hl, UnnamedText_59bb7 call PrintText ld hl, $d771 set 6, [hl] jr asm_64f01 ; 0x59ba7 asm_67b22 ; 0x59ba9 ld hl, UnnamedText_59bbc call PrintText ld hl, $d771 res 7, [hl] asm_64f01 ; 0x59bb4 jp TextScriptEnd UnnamedText_59bb7: ; 0x59bb7 TX_FAR _UnnamedText_59bb7 db $50 ; 0x59bb7 + 5 bytes UnnamedText_59bbc: ; 0x59bbc TX_FAR _UnnamedText_59bbc db $50 ; 0x59bbc + 5 bytes FanClubText2: ; 0x59bc1 db $08 ; asm ld a, [$d771] bit 6, a jr nz, asm_5cd59 ; 0x59bc7 ld hl, UnnamedText_59be4 call PrintText ld hl, $d771 set 7, [hl] jr asm_59625 ; 0x59bd4 asm_5cd59 ; 0x59bd6 ld hl, UnnamedText_59be9 call PrintText ld hl, $d771 res 6, [hl] asm_59625 ; 0x59be1 jp TextScriptEnd UnnamedText_59be4: ; 0x59be4 TX_FAR _UnnamedText_59be4 db $50 ; 0x59be4 + 5 bytes UnnamedText_59be9: ; 0x59be9 TX_FAR _UnnamedText_59be9 db $50 ; 0x59be9 + 5 bytes FanClubText3: ; 0x59bee db $8 ld hl, UnnamedText_59c00 call PrintText ld a, $54 call $13d0 call $3748 jp TextScriptEnd ; 0x59c00 UnnamedText_59c00: ; 0x59c00 TX_FAR _UnnamedText_59c00 db $50 ; 0x59c00 + 5 bytes FanClubText4: ; 0x59c05 db $08 ; asm ld hl, UnnamedText_59c17 call PrintText ld a, SEEL call $13d0 call $3748 jp TextScriptEnd UnnamedText_59c17: ; 0x59c17 TX_FAR _UnnamedText_59c17 db $50 ; 0x59c17 + 5 bytes FanClubText5: ; 0x59c1c db $08 ; asm call $5b73 jr nz, asm_38bb3 ; 0x59c20 ld hl, UnnamedText_59c65 call PrintText call $35ec ld a, [$cc26] and a jr nz, asm_2c8d7 ; 0x59c2f ld hl, UnnamedText_59c6a call PrintText ld bc, (BIKE_VOUCHER << 8) | 1 call GiveItem jr nc, asm_867d4 ; 0x59c3d ld hl, ReceivedBikeVoucherText call PrintText ld hl, $d771 set 1, [hl] jr asm_d3c26 ; 0x59c4a asm_867d4 ; 0x59c4c ld hl, UnnamedText_59c83 call PrintText jr asm_d3c26 ; 0x59c52 asm_2c8d7 ; 0x59c54 ld hl, UnnamedText_59c79 call PrintText jr asm_d3c26 ; 0x59c5a asm_38bb3 ; 0x59c5c ld hl, UnnamedText_59c7e call PrintText asm_d3c26 ; 0x59c62 jp TextScriptEnd UnnamedText_59c65: ; 0x59c65 TX_FAR _UnnamedText_59c65 db $50 ; 0x59c65 + 5 bytes UnnamedText_59c6a: ; 0x59c6a TX_FAR _UnnamedText_59c6a db $50 ; 0x59c6a + 5 bytes ReceivedBikeVoucherText: ; 0x59c6f TX_FAR _ReceivedBikeVoucherText ; 0x9a82e db $11 TX_FAR _UnnamedText_59c74 ; 0x9a844 db $50 ; 0x59c6f + 10 bytes = 0x59c79 UnnamedText_59c79: ; 0x59c79 TX_FAR _UnnamedText_59c79 db $50 ; 0x59c79 + 5 bytes UnnamedText_59c7e: ; 0x59c7e TX_FAR _UnnamedText_59c7e db $50 ; 0x59c7e + 5 bytes UnnamedText_59c83: ; 0x59c83 TX_FAR _UnnamedText_59c83 db $50 ; 0x59c83 + 5 bytes FanClubText6: TX_FAR _FanClubText6 db $50 FanClubText7: TX_FAR _FanClubText7 db $50 FanClubText8: ; 0x59c92 TX_FAR _FanClubText8 db $50 FanClubObject: ; 0x59c97 (size=62) db $d ; border tile db $2 ; warps db $7, $2, $1, $ff db $7, $3, $1, $ff db $2 ; signs db $0, $1, $7 ; FanClubText7 db $0, $6, $8 ; FanClubText8 db $6 ; people db SPRITE_FISHER2, $3 + 4, $6 + 4, $ff, $d2, $1 ; person db SPRITE_GIRL, $3 + 4, $1 + 4, $ff, $d3, $2 ; person db SPRITE_CLEFAIRY, $4 + 4, $6 + 4, $ff, $d2, $3 ; person db SPRITE_SEEL, $4 + 4, $1 + 4, $ff, $d3, $4 ; person db SPRITE_GENTLEMAN, $1 + 4, $3 + 4, $ff, $d0, $5 ; person db SPRITE_CABLE_CLUB_WOMAN, $1 + 4, $5 + 4, $ff, $d0, $6 ; person ; warp-to EVENT_DISP $4, $7, $2 EVENT_DISP $4, $7, $3 FanClubBlocks: ; 0x59cd5 16 INCBIN "maps/fanclub.blk" SilphCo2_h: ; 0x59ce5 to 0x59cf1 (12 bytes) (id=207) db $16 ; tileset db SILPH_CO_2F_HEIGHT, SILPH_CO_2F_WIDTH ; dimensions (y, x) dw SilphCo2Blocks, SilphCo2Texts, SilphCo2Script ; blocks, texts, scripts db $00 ; connections dw SilphCo2Object ; objects SilphCo2Script: ; 0x59cf1 call SilphCo2_Unknown59d07 call $3c3c ld hl, SilphCo2TrainerHeaders ld de, $5d80 ld a, [$d643] call $3160 ld [$d643], a ret ; 0x59d07 SilphCo2_Unknown59d07: ; 0x59d07 INCBIN "baserom.gbc",$59d07,$7f SilphCo2Texts: ; 0x59d86 dw SilphCo2Text1, SilphCo2Text2, SilphCo2Text3, SilphCo2Text4, SilphCo2Text5 SilphCo2TrainerHeaders: SilphCo2TrainerHeader0: ; 0x59d90 db $2 ; flag's bit db ($3 << 4) ; trainer's view range dw $d825 ; flag's byte dw SilphCo2BattleText1 ; 0x5e2a TextBeforeBattle dw SilphCo2AfterBattleText1 ; 0x5e34 TextAfterBattle dw SilphCo2EndBattleText1 ; 0x5e2f TextEndBattle dw SilphCo2EndBattleText1 ; 0x5e2f TextEndBattle ; 0x59d9c SilphCo2TrainerHeader1: ; 0x59d9c db $3 ; flag's bit db ($4 << 4) ; trainer's view range dw $d825 ; flag's byte dw SilphCo2BattleText2 ; 0x5e39 TextBeforeBattle dw SilphCo2AfterBattleText2 ; 0x5e43 TextAfterBattle dw SilphCo2EndBattleText2 ; 0x5e3e TextEndBattle dw SilphCo2EndBattleText2 ; 0x5e3e TextEndBattle ; 0x59da8 SilphCo2TrainerHeader2: ; 0x59da8 db $4 ; flag's bit db ($3 << 4) ; trainer's view range dw $d825 ; flag's byte dw SilphCo2BattleText3 ; 0x5e48 TextBeforeBattle dw SilphCo2AfterBattleText3 ; 0x5e52 TextAfterBattle dw SilphCo2EndBattleText3 ; 0x5e4d TextEndBattle dw SilphCo2EndBattleText3 ; 0x5e4d TextEndBattle ; 0x59db4 SilphCo2TrainerHeader3: ; 0x59db4 db $5 ; flag's bit db ($3 << 4) ; trainer's view range dw $d825 ; flag's byte dw SilphCo2BattleText4 ; 0x5e57 TextBeforeBattle dw SilphCo2AfterBattleText4 ; 0x5e61 TextAfterBattle dw SilphCo2EndBattleText4 ; 0x5e5c TextEndBattle dw SilphCo2EndBattleText4 ; 0x5e5c TextEndBattle ; 0x59dc0 db $ff SilphCo2Text1: ; 0x59dc1 db $08 ; asm ld a, [$d826] bit 7, a jr nz, asm_b8a0d ; 0x59dc7 ld hl, UnnamedText_59ded call PrintText ld bc, (TM_36 << 8) | 1 call GiveItem ld hl, TM36NoRoomText jr nc, asm_2c1e0 ; 0x59dd8 ld hl, $d826 set 7, [hl] ld hl, ReceivedTM36Text jr asm_2c1e0 ; 0x59de2 asm_b8a0d ; 0x59de4 ld hl, TM36ExplanationText asm_2c1e0 ; 0x59de7 call PrintText jp TextScriptEnd UnnamedText_59ded: ; 0x59ded TX_FAR _UnnamedText_59ded db $50 ; 0x59ded + 5 bytes ReceivedTM36Text: ; 0x59df2 TX_FAR _ReceivedTM36Text ; 0x824ba db $0B, $50 ; 0x59df2 + 6 bytes = 0x59df8 TM36ExplanationText: ; 0x59df8 TX_FAR _TM36ExplanationText db $50 ; 0x59df8 + 5 bytes TM36NoRoomText: ; 0x59dfd TX_FAR _TM36NoRoomText db $50 ; 0x59dfd + 5 bytes SilphCo2Text2: ; 0x59e02 db $08 ; asm ld hl, SilphCo2TrainerHeader0 call LoadTrainerHeader jp TextScriptEnd SilphCo2Text3: ; 0x59e0c db $08 ; asm ld hl, SilphCo2TrainerHeader1 call LoadTrainerHeader jp TextScriptEnd SilphCo2Text4: ; 0x59e16 db $08 ; asm ld hl, SilphCo2TrainerHeader2 call LoadTrainerHeader jp TextScriptEnd SilphCo2Text5: ; 0x59e20 db $08 ; asm ld hl, SilphCo2TrainerHeader3 call LoadTrainerHeader jp TextScriptEnd SilphCo2BattleText1: ; 0x59e2a TX_FAR _SilphCo2BattleText1 db $50 ; 0x59e2a + 5 bytes SilphCo2EndBattleText1: ; 0x59e2f TX_FAR _SilphCo2EndBattleText1 db $50 ; 0x59e2f + 5 bytes SilphCo2AfterBattleText1: ; 0x59e34 TX_FAR _SilphCo2AfterBattleText1 db $50 ; 0x59e34 + 5 bytes SilphCo2BattleText2: ; 0x59e39 TX_FAR _SilphCo2BattleText2 db $50 ; 0x59e39 + 5 bytes SilphCo2EndBattleText2: ; 0x59e3e TX_FAR _SilphCo2EndBattleText2 db $50 ; 0x59e3e + 5 bytes SilphCo2AfterBattleText2: ; 0x59e43 TX_FAR _SilphCo2AfterBattleText2 db $50 ; 0x59e43 + 5 bytes SilphCo2BattleText3: ; 0x59e48 TX_FAR _SilphCo2BattleText3 db $50 ; 0x59e48 + 5 bytes SilphCo2EndBattleText3: ; 0x59e4d TX_FAR _SilphCo2EndBattleText3 db $50 ; 0x59e4d + 5 bytes SilphCo2AfterBattleText3: ; 0x59e52 TX_FAR _SilphCo2AfterBattleText3 db $50 ; 0x59e52 + 5 bytes SilphCo2BattleText4: ; 0x59e57 TX_FAR _SilphCo2BattleText4 db $50 ; 0x59e57 + 5 bytes SilphCo2EndBattleText4: ; 0x59e5c TX_FAR _SilphCo2EndBattleText4 db $50 ; 0x59e5c + 5 bytes SilphCo2AfterBattleText4: ; 0x59e61 TX_FAR _SilphCo2AfterBattleText4 db $50 ; 0x59e61 + 5 bytes SilphCo2Object: ; 0x59e66 (size=98) db $2e ; border tile db $7 ; warps db $0, $18, $2, SILPH_CO_1F db $0, $1a, $0, SILPH_CO_3F db $0, $14, $0, SILPH_CO_ELEVATOR db $3, $3, $6, SILPH_CO_3F db $3, $d, $4, SILPH_CO_8F db $f, $1b, $5, SILPH_CO_8F db $f, $9, $4, SILPH_CO_6F db $0 ; signs db $5 ; people db SPRITE_ERIKA, $1 + 4, $a + 4, $ff, $d1, $1 ; person db SPRITE_OAK_AIDE, $c + 4, $5 + 4, $ff, $d0, $42, SCIENTIST + $C8, $2 ; trainer db SPRITE_OAK_AIDE, $d + 4, $18 + 4, $ff, $d2, $43, SCIENTIST + $C8, $3 ; trainer db SPRITE_ROCKET, $b + 4, $10 + 4, $ff, $d1, $44, ROCKET + $C8, $17 ; trainer db SPRITE_ROCKET, $7 + 4, $18 + 4, $ff, $d1, $45, ROCKET + $C8, $18 ; trainer ; warp-to EVENT_DISP $f, $0, $18 ; SILPH_CO_1F EVENT_DISP $f, $0, $1a ; SILPH_CO_3F EVENT_DISP $f, $0, $14 ; SILPH_CO_ELEVATOR EVENT_DISP $f, $3, $3 ; SILPH_CO_3F EVENT_DISP $f, $3, $d ; SILPH_CO_8F EVENT_DISP $f, $f, $1b ; SILPH_CO_8F EVENT_DISP $f, $f, $9 ; SILPH_CO_6F SilphCo2Blocks: ; 0x59ec8 135 INCBIN "maps/silphco2.blk" SilphCo3_h: ; 0x59f4f to 0x59f5b (12 bytes) (id=208) db $16 ; tileset db SILPH_CO_3F_HEIGHT, SILPH_CO_3F_WIDTH ; dimensions (y, x) dw SilphCo3Blocks, SilphCo3Texts, SilphCo3Script ; blocks, texts, scripts db $00 ; connections dw SilphCo3Object ; objects SilphCo3Script: ; 0x59f5b call SilphCo3Script_Unknown59f71 call $3c3c ld hl, SilphCo3TrainerHeaders ld de, $5fbe ld a, [$d644] call $3160 ld [$d644], a ret ; 0x59f71 SilphCo3Script_Unknown59f71: ; 0x59f71 INCBIN "baserom.gbc",$59f71,$53 SilphCo3Texts: ; 0x59fc4 dw SilphCo3Text1, SilphCo3Text2, SilphCo3Text3, SilphCo3Text4 SilphCo3TrainerHeaders: SilphCo3TrainerHeader0: ; 0x59fcc db $2 ; flag's bit db ($2 << 4) ; trainer's view range dw $d827 ; flag's byte dw SilphCo3BattleText1 ; 0x600d TextBeforeBattle dw SilphCo3AfterBattleText1 ; 0x6017 TextAfterBattle dw SilphCo3EndBattleText1 ; 0x6012 TextEndBattle dw SilphCo3EndBattleText1 ; 0x6012 TextEndBattle ; 0x59fd8 SilphCo3TrainerHeader1: ; 0x59fd8 db $3 ; flag's bit db ($3 << 4) ; trainer's view range dw $d827 ; flag's byte dw SilphCo3BattleText2 ; 0x6026 TextBeforeBattle dw SilphCo3AfterBattleText2 ; 0x6030 TextAfterBattle dw SilphCo3EndBattleText2 ; 0x602b TextEndBattle dw SilphCo3EndBattleText2 ; 0x602b TextEndBattle ; 0x59fe4 db $ff SilphCo3Text1: ; 0x59fe5 db $08 ; asm ld a, [$d838] bit 7, a ld hl, UnnamedText_59ffe jr nz, asm_8c56f ; 0x59fee ld hl, UnnamedText_59ff9 asm_8c56f ; 0x59ff3 call PrintText jp TextScriptEnd UnnamedText_59ff9: ; 0x59ff9 TX_FAR _UnnamedText_59ff9 db $50 ; 0x59ff9 + 5 bytes UnnamedText_59ffe: ; 0x59ffe TX_FAR _UnnamedText_59ffe db $50 ; 0x59ffe + 5 bytes SilphCo3Text2: ; 0x5a003 db $08 ; asm ld hl, SilphCo3TrainerHeader0 call LoadTrainerHeader jp TextScriptEnd SilphCo3BattleText1: ; 0x5a00d TX_FAR _SilphCo3BattleText1 db $50 ; 0x5a00d + 5 bytes SilphCo3EndBattleText1: ; 0x5a012 TX_FAR _SilphCo3EndBattleText1 db $50 ; 0x5a012 + 5 bytes SilphCo3AfterBattleText1: ; 0x5a017 TX_FAR _SilphCo3AfterBattleText1 db $50 ; 0x5a017 + 5 bytes SilphCo3Text3: ; 0x5a01c db $08 ; asm ld hl, SilphCo3TrainerHeader1 call LoadTrainerHeader jp TextScriptEnd SilphCo3BattleText2: ; 0x5a026 TX_FAR _SilphCo3BattleText2 db $50 ; 0x5a026 + 5 bytes SilphCo3EndBattleText2: ; 0x5a02b TX_FAR _SilphCo3EndBattleText2 db $50 ; 0x5a02b + 5 bytes SilphCo3AfterBattleText2: ; 0x5a030 TX_FAR _SilphCo3AfterBattleText2 db $50 ; 0x5a030 + 5 bytes SilphCo3Object: ; 0x5a035 (size=113) db $2e ; border tile db $a ; warps db $0, $1a, $1, SILPH_CO_2F db $0, $18, $0, SILPH_CO_4F db $0, $14, $0, SILPH_CO_ELEVATOR db $b, $17, $9, SILPH_CO_3F db $3, $3, $5, SILPH_CO_5F db $f, $3, $6, SILPH_CO_5F db $3, $1b, $3, SILPH_CO_2F db $b, $3, $3, SILPH_CO_9F db $b, $b, $4, SILPH_CO_7F db $f, $1b, $3, SILPH_CO_3F db $0 ; signs db $4 ; people db SPRITE_LAPRAS_GIVER, $8 + 4, $18 + 4, $ff, $ff, $1 ; person db SPRITE_ROCKET, $7 + 4, $14 + 4, $ff, $d2, $42, ROCKET + $C8, $19 ; trainer db SPRITE_OAK_AIDE, $9 + 4, $7 + 4, $ff, $d0, $43, SCIENTIST + $C8, $4 ; trainer db SPRITE_BALL, $5 + 4, $8 + 4, $ff, $ff, $84, HYPER_POTION ; item ; warp-to EVENT_DISP $f, $0, $1a ; SILPH_CO_2F EVENT_DISP $f, $0, $18 ; SILPH_CO_4F EVENT_DISP $f, $0, $14 ; SILPH_CO_ELEVATOR EVENT_DISP $f, $b, $17 ; SILPH_CO_3F EVENT_DISP $f, $3, $3 ; SILPH_CO_5F EVENT_DISP $f, $f, $3 ; SILPH_CO_5F EVENT_DISP $f, $3, $1b ; SILPH_CO_2F EVENT_DISP $f, $b, $3 ; SILPH_CO_9F EVENT_DISP $f, $b, $b ; SILPH_CO_7F EVENT_DISP $f, $f, $1b ; SILPH_CO_3F SilphCo3Blocks: ; 0x5a0a6 135 INCBIN "maps/silphco3.blk" SilphCo10_h: ; 0x5a12d to 0x5a139 (12 bytes) (id=234) db $16 ; tileset db SILPH_CO_10F_HEIGHT, SILPH_CO_10F_WIDTH ; dimensions (y, x) dw SilphCo10Blocks, SilphCo10Texts, SilphCo10Script ; blocks, texts, scripts db $00 ; connections dw SilphCo10Object ; objects SilphCo10Script: ; 0x5a139 call SilphCo10Script_Unknown5a14f call $3c3c ld hl, SilphCo10TrainerHeaders ld de, $6180 ld a, [$d658] call $3160 ld [$d658], a ret ; 0x5a14f SilphCo10Script_Unknown5a14f: ; 0x5a14f INCBIN "baserom.gbc",$5a14f,$37 SilphCo10Texts: ; 0x5a186 dw SilphCo10Text1, SilphCo10Text2, SilphCo10Text3, SilphCo10Text4, SilphCo10Text5, SilphCo10Text6 SilphCo10TrainerHeaders: SilphCo10TrainerHeader0: ; 0x5a192 db $1 ; flag's bit db ($3 << 4) ; trainer's view range dw $d835 ; flag's byte dw SilphCo10BattleText1 ; 0x61dd TextBeforeBattle dw SilphCo10AfterBattleText1 ; 0x61e7 TextAfterBattle dw SilphCo10EndBattleText1 ; 0x61e2 TextEndBattle dw SilphCo10EndBattleText1 ; 0x61e2 TextEndBattle ; 0x5a19e SilphCo10TrainerHeader1: ; 0x5a19e db $2 ; flag's bit db ($4 << 4) ; trainer's view range dw $d835 ; flag's byte dw SilphCo10BattleText2 ; 0x61ec TextBeforeBattle dw SilphCo10AfterBattleText2 ; 0x61f6 TextAfterBattle dw SilphCo10EndBattleText2 ; 0x61f1 TextEndBattle dw SilphCo10EndBattleText2 ; 0x61f1 TextEndBattle ; 0x5a1aa db $ff SilphCo10Text1: ; 0x5a1ab db $08 ; asm ld hl, SilphCo10TrainerHeader0 call LoadTrainerHeader jp TextScriptEnd SilphCo10Text2: ; 0x5a1b5 db $08 ; asm ld hl, SilphCo10TrainerHeader1 call LoadTrainerHeader jp TextScriptEnd SilphCo10Text3: ; 0x5a1bf db $08 ; asm ld a, [$d838] bit 7, a ld hl, UnnamedText_5a1d8 jr nz, asm_cf85f ; 0x5a1c8 ld hl, UnnamedText_5a1d3 asm_cf85f ; 0x5a1cd call PrintText jp TextScriptEnd UnnamedText_5a1d3: ; 0x5a1d3 TX_FAR _UnnamedText_5a1d3 db $50 ; 0x5a1d3 + 5 bytes UnnamedText_5a1d8: ; 0x5a1d8 TX_FAR _UnnamedText_5a1d8 db $50 ; 0x5a1d8 + 5 bytes SilphCo10BattleText1: ; 0x5a1dd TX_FAR _SilphCo10BattleText1 db $50 ; 0x5a1dd + 5 bytes SilphCo10EndBattleText1: ; 0x5a1e2 TX_FAR _SilphCo10EndBattleText1 db $50 ; 0x5a1e2 + 5 bytes SilphCo10AfterBattleText1: ; 0x5a1e7 TX_FAR _SilphCo10AfterBattleText1 db $50 ; 0x5a1e7 + 5 bytes SilphCo10BattleText2: ; 0x5a1ec TX_FAR _SilphCo10BattleText2 db $50 ; 0x5a1ec + 5 bytes SilphCo10EndBattleText2: ; 0x5a1f1 TX_FAR _SilphCo10EndBattleText2 db $50 ; 0x5a1f1 + 5 bytes SilphCo10AfterBattleText2: ; 0x5a1f6 TX_FAR _SilphCo10AfterBattleText2 db $50 ; 0x5a1f6 + 5 bytes SilphCo10Object: ; 0x5a1fb (size=95) db $2e ; border tile db $6 ; warps db $0, $8, $0, SILPH_CO_9F db $0, $a, $0, SILPH_CO_11F db $0, $c, $0, SILPH_CO_ELEVATOR db $b, $9, $3, SILPH_CO_4F db $f, $d, $5, SILPH_CO_4F db $7, $d, $6, SILPH_CO_4F db $0 ; signs db $6 ; people db SPRITE_ROCKET, $9 + 4, $1 + 4, $ff, $d3, $41, ROCKET + $C8, $27 ; trainer db SPRITE_OAK_AIDE, $2 + 4, $a + 4, $ff, $d2, $42, SCIENTIST + $C8, $b ; trainer db SPRITE_ERIKA, $f + 4, $9 + 4, $fe, $0, $3 ; person db SPRITE_BALL, $c + 4, $2 + 4, $ff, $ff, $84, TM_26 ; item db SPRITE_BALL, $e + 4, $4 + 4, $ff, $ff, $85, RARE_CANDY ; item db SPRITE_BALL, $b + 4, $5 + 4, $ff, $ff, $86, CARBOS ; item ; warp-to EVENT_DISP $8, $0, $8 ; SILPH_CO_9F EVENT_DISP $8, $0, $a ; SILPH_CO_11F EVENT_DISP $8, $0, $c ; SILPH_CO_ELEVATOR EVENT_DISP $8, $b, $9 ; SILPH_CO_4F EVENT_DISP $8, $f, $d ; SILPH_CO_4F EVENT_DISP $8, $7, $d ; SILPH_CO_4F SilphCo10Blocks: ; 0x5a25a 72 INCBIN "maps/silphco10.blk" Lance_h: ; 0x5a2a2 to 0x5a2ae (12 bytes) (id=113) db $05 ; tileset db LANCES_ROOM_HEIGHT, LANCES_ROOM_WIDTH ; dimensions (y, x) dw LanceBlocks, LanceTexts, LanceScript ; blocks, texts, scripts db $00 ; connections dw LanceObject ; objects LanceScript: ; 0x5a2ae call LanceScript_Unknown5a2c4 call $3c3c ld hl, LanceTrainerHeaders ld de, $62fa ld a, [$d653] call $3160 ld [$d653], a ret ; 0x5a2c4 LanceScript_Unknown5a2c4: ; 0x5a2c4 INCBIN "baserom.gbc",$5a2c4,$d1 LanceTexts: ; 0x5a395 dw LanceText1 LanceTrainerHeaders: LanceTrainerHeader0: ; 0x5a397 db $1 ; flag's bit db ($0 << 4) ; trainer's view range dw $d866 ; flag's byte dw LanceBeforeBattleText ; 0x63ae TextBeforeBattle dw LanceAfterBattleText ; 0x63b8 TextAfterBattle dw LanceEndBattleText ; 0x63b3 TextEndBattle dw LanceEndBattleText ; 0x63b3 TextEndBattle ; 0x5a3a3 db $ff LanceText1: ; 0x5a3a4 db $08 ; asm ld hl, LanceTrainerHeader0 call LoadTrainerHeader jp TextScriptEnd LanceBeforeBattleText: ; 0x5a3ae TX_FAR _LanceBeforeBattleText db $50 ; 0x5a3ae + 5 bytes LanceEndBattleText: ; 0x5a3b3 TX_FAR _LanceEndBattleText db $50 ; 0x5a3b3 + 5 bytes LanceAfterBattleText: ; 0x5a3b8 TX_FAR _LanceAfterBattleText ; 0x85e9e db $8 ld hl, $d866 set 6, [hl] jp TextScriptEnd ; 0x5a3c5 LanceObject: ; 0x5a3c5 (size=36) db $3 ; border tile db $3 ; warps db $10, $18, $2, AGATHAS_ROOM db $0, $5, $0, CHAMPIONS_ROOM db $0, $6, $0, CHAMPIONS_ROOM db $0 ; signs db $1 ; people db SPRITE_LANCE, $1 + 4, $6 + 4, $ff, $d0, $41, LANCE + $C8, $1 ; trainer ; warp-to EVENT_DISP $d, $10, $18 ; AGATHAS_ROOM EVENT_DISP $d, $0, $5 ; CHAMPIONS_ROOM EVENT_DISP $d, $0, $6 ; CHAMPIONS_ROOM LanceBlocks: ; 0x5a3e9 169 INCBIN "maps/lance.blk" HallofFameRoom_h: ; 0x5a492 to 0x5a49e (12 bytes) (id=118) db $07 ; tileset db HALL_OF_FAME_HEIGHT, HALL_OF_FAME_WIDTH ; dimensions (y, x) dw HallofFameRoomBlocks, HallofFameRoomTexts, HallofFameRoomScript ; blocks, texts, scripts db $00 ; connections dw HallofFameRoomObject ; objects HallofFameRoomScript: ; 0x5a49e call $3c3c ld hl, HallofFameRoomScripts ld a, [$d64b] jp $3d97 ; 0x5a4aa INCBIN "baserom.gbc",$5a4aa,$5a4b2 - $5a4aa HallofFameRoomScripts: ; 0x5a4b2 dw HallofFameRoomScript0, HallofFameRoomScript1, HallofFameRoomScript2, HallofFameRoomScript3 HallofFameRoomScript3: ; 0x5a4ba db $c9 HallofFameRoomScript2: ; 0x5a4bb call Delay3 ld a, [$d358] push af xor a ld [$cd6b], a ld a, $55 call Predef pop af ld [$d358], a ld hl, $d733 res 1, [hl] inc hl set 0, [hl] xor a ld hl, $d64d ld [hli], a ld [hli], a ld [hl], a ld [$d653], a ld [$d64b], a ld hl, $d863 ld [hli], a ld [hli], a ld [hli], a ld [hli], a ld [hl], a xor a ld [$d64b], a ld a, $0 ld [$d719], a ld b, $1c ld hl, $7848 call Bankswitch ld b, $5 .asm_5a4ff ld c, $78 call $3739 dec b jr nz, .asm_5a4ff ; 0x5a505 $f8 call $3865 jp $1f54 ; 0x5a50d HallofFameRoomScript0: ; 0x5a50d ld a, $ff ld [$cd6b], a ld hl, $ccd3 ld de, HallofFameRoom_Unknown5a528 call $350c dec a ld [$cd38], a call $3486 ld a, $1 ld [$d64b], a ret ; 0x5a528 HallofFameRoom_Unknown5a528: ; 0x5a528 db $40, $5, $ff HallofFameRoomScript1: ; 0x5a52b ld a, [$cd38] and a ret nz ld a, $1 ld [$d528], a ld a, $1 ld [$ff00+$8c], a call $3541 ld a, $8 ld [$ff00+$8d], a call $34a6 call Delay3 xor a ld [$cd6b], a inc a ld [$d528], a ld a, $1 ld [$ff00+$8c], a call $2920 ld a, $ff ld [$cd6b], a ld a, $8 ld [$cc4d], a ld a, $11 call Predef ld a, $2 ld [$d64b], a ret ; 0x5a56a HallofFameRoomTexts: ; 0x5a56a dw HallofFameRoomText1 HallofFameRoomText1: ; 0x5a56c TX_FAR _HallofFameRoomText1 db $50 HallofFameRoomObject: ; 0x5a571 (size=26) db $3 ; border tile db $2 ; warps db $7, $4, $2, CHAMPIONS_ROOM db $7, $5, $3, CHAMPIONS_ROOM db $0 ; signs db $1 ; people db SPRITE_OAK, $2 + 4, $5 + 4, $ff, $d0, $1 ; person ; warp-to EVENT_DISP $5, $7, $4 ; CHAMPIONS_ROOM EVENT_DISP $5, $7, $5 ; CHAMPIONS_ROOM HallofFameRoomBlocks: ; 0x5a58b 20 INCBIN "maps/halloffameroom.blk" INCBIN "baserom.gbc",$5a59f,27 SECTION "bank17",DATA,BANK[$17] SaffronMartBlocks: LavenderMartBlocks: CeruleanMartBlocks: VermilionMartBlocks: ; 0x5c000 16 INCBIN "maps/vermilionmart.blk" CopycatsHouseF2Blocks: RedsHouse2FBlocks: ; 0x5c010 16? INCBIN "maps/redshouse2f.blk" MuseumF1Blocks: ; 0x5c020 40 INCBIN "maps/museumf1.blk" MuseumF2Blocks: ; 0x5c048 28 INCBIN "maps/museumf2.blk" SaffronPokecenterBlocks: VermilionPokecenterBlocks: LavenderPokecenterBlocks: PewterPokecenterBlocks: ; 0x5c064 28 INCBIN "maps/pewterpokecenter.blk" UndergroundTunnelEntranceRoute7Blocks: UndergroundTunnelEntranceRoute6Blocks: UndergroundTunnelEntranceRoute5Blocks: ; 0x5c080 16 INCBIN "maps/undergroundtunnelentranceroute5.blk" Route2GateBlocks: ViridianForestEntranceBlocks: ViridianForestexitBlocks: ; 0x5c090 20 INCBIN "maps/viridianforestexit.blk" RedsHouse2F_h: db $04 ; tileset db $04,$04 ; dimensions dw RedsHouse2FBlocks, RedsHouse2FTexts, RedsHouse2FScript db 0 ; no connections dw RedsHouse2FObject RedsHouse2FScript: call $3C3C ld hl,RedsHouse2FScriptPointers ld a,[$D60C] jp $3D97 RedsHouse2FScriptPointers: dw RedsHouse2FScript1,RedsHouse2FScript2 RedsHouse2FScript1: xor a ld [$FFB4],a ld a,8 ld [$D528],a ld a,1 ld [$D60C],a ret RedsHouse2FScript2: ; 0x5c0ed ret RedsHouse2FTexts: ; 0x5c0ef db "@" RedsHouse2FObject: ; 0x5c0d0 ? db $0A ; border tile db 1 ; warps db 1,7,2,$25 db 0 ; signs db 0 ; people dw $C6EF + 4 + (4 + 6) * 0 + 3 db 1,7 INCBIN "baserom.gbc",$5c0dc,$5c0eb - $5c0dc MuseumF1_h: ; 0x5c0eb to 0x5c0f7 (12 bytes) (id=52) db $0a ; tileset db MUSEUM_1F_HEIGHT, MUSEUM_1F_WIDTH ; dimensions (y, x) dw MuseumF1Blocks, MuseumF1Texts, MuseumF1Script ; blocks, texts, scripts db $00 ; connections dw MuseumF1Object ; objects MuseumF1Script: ; 0x5c0f7 ld a, $1 ld [$cf0c], a xor a ld [$cc3c], a ld hl, MuseumF1Scripts ld a, [$d619] jp $3d97 ; 0x5c109 MuseumF1Scripts: ; 0x5c109 dw MuseumF1Script0, MuseumF1Script1 MuseumF1Script0: ; 0x5c10d ld a, [$d361] cp $4 ret nz ld a, [$d362] cp $9 jr z, .asm_5c120 ; 0x5c118 $6 ld a, [$d362] cp $a ret nz .asm_5c120 xor a ld [$ff00+$b4], a ld a, $1 ld [$ff00+$8c], a jp $2920 ; 0x5c12a MuseumF1Script1: ; 0x5c12a ret ; 0x5c12b MuseumF1Texts: ; 0x5c12b dw MuseumF1Text1, MuseumF1Text2, MuseumF1Text3, MuseumF1Text4, MuseumF1Text5 MuseumF1Text1: ; 0x5c135 db $8 ld a, [$d361] cp $4 jr nz, asm_8774b ; 0x5c13b $a ld a, [$d362] cp $d jp z, $41f9 jr asm_b8709 ; 0x5c145 $1c asm_8774b: ; 0x5c147 cp $3 jr nz, asm_d49e7 ; 0x5c149 $8 ld a, [$d362] cp $c jp z, $41f9 asm_d49e7: ; 0x5c153 ld a, [$d754] bit 0, a jr nz, asm_31a16 ; 0x5c158 $10 ld hl, UnnamedText_5c23d call PrintText jp $4217 asm_b8709: ; 0x5c163 ld a, [$d754] bit 0, a jr z, asm_3ded4 ; 0x5c168 $9 asm_31a16: ; 0x5c16a ld hl, UnnamedText_5c242 call PrintText jp $4217 asm_3ded4: ; 0x5c173 ld a, $13 ld [$d125], a call $30e8 xor a ld [$ff00+$b4], a ld hl, UnnamedText_5c21f call PrintText call $35ec ld a, [$cc26] and a jr nz, asm_de133 ; 0x5c18b $4d xor a ld [$ff00+$9f], a ld [$ff00+$a0], a ld a, $50 ld [$ff00+$a1], a call $35a6 jr nc, asm_0f3e3 ; 0x5c199 $9 ld hl, UnnamedText_5c229 call PrintText jp $41da asm_0f3e3: ; 0x5c1a4 ld hl, UnnamedText_5c224 call PrintText ld hl, $d754 set 0, [hl] xor a ld [$cd3d], a ld [$cd3e], a ld a, $50 ld [$cd3f], a ld hl, $cd3f ld de, $d349 ld c, $3 ld a, $c call Predef ld a, $13 ld [$d125], a call $30e8 ld a, $b2 call $3740 call $3748 jr asm_0b094 ; 0x5c1d8 $18 asm_de133: ; 0x5c1da ld hl, $421a call PrintText ld a, $1 ld [$cd38], a ld a, $80 ld [$ccd3], a call $3486 call $2429 jr asm_d1145 ; 0x5c1f0 $25 asm_0b094: ; 0x5c1f2 ld a, $1 ld [$d619], a jr asm_d1145 ; 0x5c1f7 $1e ;XXX what calls this? ld hl, UnnamedText_5c22e call PrintText call $35ec ld a, [$cc26] cp $0 jr nz, asm_d1144 ld hl, UnnamedText_5c233 call PrintText jr asm_d1145 ; 0x5c20f $6 asm_d1144: ld hl, UnnamedText_5c238 call PrintText asm_d1145: ; 0x5c217 jp TextScriptEnd ; 0x5c21a UnnamedText_5c21a: ; 0x5c21a TX_FAR _UnnamedText_5c21a db $50 ; 0x5c21a + 5 bytes UnnamedText_5c21f: ; 0x5c21f TX_FAR _UnnamedText_5c21f db $50 ; 0x5c21f + 5 bytes UnnamedText_5c224: ; 0x5c224 TX_FAR _UnnamedText_5c224 db $50 ; 0x5c224 + 5 bytes UnnamedText_5c229: ; 0x5c229 TX_FAR _UnnamedText_5c229 db $50 ; 0x5c229 + 5 bytes UnnamedText_5c22e: ; 0x5c22e TX_FAR _UnnamedText_5c22e db $50 ; 0x5c22e + 5 bytes UnnamedText_5c233: ; 0x5c233 TX_FAR _UnnamedText_5c233 db $50 ; 0x5c233 + 5 bytes UnnamedText_5c238: ; 0x5c238 TX_FAR _UnnamedText_5c238 db $50 ; 0x5c238 + 5 bytes UnnamedText_5c23d: ; 0x5c23d TX_FAR _UnnamedText_5c23d db $50 ; 0x5c23d + 5 bytes UnnamedText_5c242: ; 0x5c242 TX_FAR _UnnamedText_5c242 db $50 ; 0x5c242 + 5 bytes MuseumF1Text2: ; 0x5c247 db $08 ; asm ld hl, UnnamedText_5c251 call PrintText jp TextScriptEnd UnnamedText_5c251: ; 0x5c251 TX_FAR _UnnamedText_5c251 db $50 ; 0x5c251 + 5 bytes MuseumF1Text3: ; 0x5c256 db $08 ; asm ld a, [$d754] bit 1, a jr nz, .asm_16599 ; 0x5c25c ld hl, UnnamedText_5c28e call PrintText ld bc, (OLD_AMBER << 8) | 1 call GiveItem jr nc, .asm_91ebf ; 0x5c26a ld hl, $d754 set 1, [hl] ld a, $34 ld [$cc4d], a ld a, $11 call Predef ld hl, ReceivedOldAmberText jr .asm_52e0f ; 0x5c27e .asm_91ebf ; 0x5c280 ld hl, UnnamedText_5c29e jr .asm_52e0f ; 0x5c283 .asm_16599 ; 0x5c285 ld hl, UnnamedText_5c299 .asm_52e0f ; 0x5c288 call PrintText jp TextScriptEnd UnnamedText_5c28e: ; 0x5c28e TX_FAR _UnnamedText_5c28e db $50 ; 0x5c28e + 5 bytes ReceivedOldAmberText: ; 0x5c293 TX_FAR _ReceivedOldAmberText ; 0x96790 db $0B, $50 ; 0x5c293 + 6 bytes = 0x5c299 UnnamedText_5c299: ; 0x5c299 TX_FAR _UnnamedText_5c299 db $50 ; 0x5c299 + 5 bytes UnnamedText_5c29e: ; 0x5c29e TX_FAR _UnnamedText_5c29e db $50 ; 0x5c29e + 5 bytes MuseumF1Text4: ; 0x5c2a3 db $08 ; asm ld hl, UnnamedText_5c2ad call PrintText jp TextScriptEnd UnnamedText_5c2ad: ; 0x5c2ad TX_FAR _UnnamedText_5c2ad db $50 ; 0x5c2ad + 5 bytes MuseumF1Text5: ; 0x5c2b2 db $08 ; asm ld hl, UnnamedText_5c2bc call PrintText jp TextScriptEnd UnnamedText_5c2bc: ; 0x5c2bc TX_FAR _UnnamedText_5c2bc db $50 ; 0x5c2bc + 5 bytes MuseumF1Object: ; 0x5c2c1 (size=74) db $a ; border tile db $5 ; warps db $7, $a, $0, $ff db $7, $b, $0, $ff db $7, $10, $1, $ff db $7, $11, $1, $ff db $7, $7, $0, MUSEUM_2F db $0 ; signs db $5 ; people db SPRITE_OAK_AIDE, $4 + 4, $c + 4, $ff, $d2, $1 ; person db SPRITE_GAMBLER, $4 + 4, $1 + 4, $ff, $ff, $2 ; person db SPRITE_OAK_AIDE, $2 + 4, $f + 4, $ff, $d0, $3 ; person db SPRITE_OAK_AIDE, $4 + 4, $11 + 4, $ff, $ff, $4 ; person db SPRITE_OLD_AMBER, $2 + 4, $10 + 4, $ff, $ff, $5 ; person ; warp-to EVENT_DISP $a, $7, $a EVENT_DISP $a, $7, $b EVENT_DISP $a, $7, $10 EVENT_DISP $a, $7, $11 EVENT_DISP $a, $7, $7 ; MUSEUM_2F MuseumF2_h: ; 0x5c30b to 0x5c317 (12 bytes) (id=53) db $0a ; tileset db MUSEUM_2F_HEIGHT, MUSEUM_2F_WIDTH ; dimensions (y, x) dw MuseumF2Blocks, MuseumF2Texts, MuseumF2Script ; blocks, texts, scripts db $00 ; connections dw MuseumF2Object ; objects MuseumF2Script: ; 0x5c317 jp $3c3c ; 0x5c31a MuseumF2Texts: ; 0x5c31a dw MuseumF2Text1, MuseumF2Text2, MuseumF2Text3, MuseumF2Text4, MuseumF2Text5, MuseumF2Text6, MuseumF2Text7 MuseumF2Text1: ; 0x5c328 TX_FAR _MuseumF2Text1 db $50 MuseumF2Text2: ; 0x5c32d TX_FAR _MuseumF2Text2 db $50 MuseumF2Text3: ; 0x5c332 TX_FAR _MuseumF2Text3 db $50 MuseumF2Text4: ; 0x5c337 TX_FAR _MuseumF2Text4 db $50 MuseumF2Text5: ; 0x5c33c TX_FAR _MuseumF2Text5 db $50 MuseumF2Text6: ; 0x5c341 TX_FAR _MuseumF2Text6 db $50 MuseumF2Text7: ; 0x5c346 TX_FAR _MuseumF2Text7 db $50 MuseumF2Object: ; 0x5c34b (size=48) db $a ; border tile db $1 ; warps db $7, $7, $4, MUSEUM_1F db $2 ; signs db $2, $b, $6 ; MuseumF2Text6 db $5, $2, $7 ; MuseumF2Text7 db $5 ; people db SPRITE_BUG_CATCHER, $7 + 4, $1 + 4, $fe, $2, $1 ; person db SPRITE_OLD_PERSON, $5 + 4, $0 + 4, $ff, $d0, $2 ; person db SPRITE_OAK_AIDE, $5 + 4, $7 + 4, $ff, $d0, $3 ; person db SPRITE_BRUNETTE_GIRL, $5 + 4, $b + 4, $ff, $ff, $4 ; person db SPRITE_HIKER, $5 + 4, $c + 4, $ff, $d0, $5 ; person ; warp-to EVENT_DISP $7, $7, $7 ; MUSEUM_1F PewterGym_h: ; 0x5c37b to 0x5c387 (12 bytes) (id=54) db $07 ; tileset db PEWTER_GYM_HEIGHT, PEWTER_GYM_WIDTH ; dimensions (y, x) dw PewterGymBlocks, PewterGymTexts, PewterGymScript ; blocks, texts, scripts db $00 ; connections dw PewterGymObject ; objects PewterGymScript: ; 0x5c387 ld hl, $d126 bit 6, [hl] res 6, [hl] call nz, PewterGymScript_Unknown5c3a4 call $3c3c ld hl, PewterGymTrainerHeaders ld de, $43ca ld a, [$d5fc] call $3160 ld [$d5fc], a ret ; 0x5c3a4 PewterGymScript_Unknown5c3a4: ; 0x5c3a4 INCBIN "baserom.gbc",$5c3a4,$91 PewterGymTexts: ; 0x5c435 dw PewterGymText1, PewterGymText2, PewterGymText3, PewterGymText4, PewterGymText5, PewterGymText6 PewterGymTrainerHeaders: PewterGymTrainerHeader0: ; 0x5c441 db $2 ; flag's bit db ($5 << 4) ; trainer's view range dw $d755 ; flag's byte dw PewterGymBattleText1 ; 0x44d0 TextBeforeBattle dw PewterGymAfterBattleText1 ; 0x44da TextAfterBattle dw PewterGymEndBattleText1 ; 0x44d5 TextEndBattle dw PewterGymEndBattleText1 ; 0x44d5 TextEndBattle ; 0x5c44d db $ff PewterGymText1: ; 0x5c44e db $08 ; asm ld a, [$d755] bit 7, a jr z, .asm_4a735 ; 0x5c454 bit 6, a jr nz, .asm_ff7d0 ; 0x5c458 call z, $43df call DisableWaitingAfterTextDisplay jr .asm_e0ffb ; 0x5c460 .asm_ff7d0 ; 0x5c462 ld hl, UnnamedText_5c4a3 call PrintText jr .asm_e0ffb ; 0x5c468 .asm_4a735 ; 0x5c46a ld hl, UnnamedText_5c49e call PrintText ld hl, $d72d set 6, [hl] set 7, [hl] ld hl, UnnamedText_5c4bc ld de, UnnamedText_5c4bc call $3354 ldh a, [$8c] ld [$cf13], a call $336a call $32d7 ld a, $1 ld [$d05c], a xor a ldh [$b4], a ld a, $3 ld [$d5fc], a ld [$da39], a .asm_e0ffb ; 0x5c49b jp TextScriptEnd UnnamedText_5c49e: ; 0x5c49e TX_FAR _UnnamedText_5c49e db $50 ; 0x5c49e + 5 bytes UnnamedText_5c4a3: ; 0x5c4a3 TX_FAR _UnnamedText_5c4a3 db $50 ; 0x5c4a3 + 5 bytes PewterGymText4: ; 0x5c4a8 TX_FAR _TM34PreReceiveText db $50 ; 0x5c4a8 + 5 bytes PewterGymText5: ; 0x5c4ad TX_FAR _ReceivedTM34Text ; 0x980ad db $0B TX_FAR _TM34ExplanationText ; 0x980c0 db $50 ; 0x5c4ad + 10 bytes = 0x5c4b7 PewterGymText6: ; 0x5c4b7 TX_FAR _TM34NoRoomText db $50 UnnamedText_5c4bc: ; 0x5c4bc TX_FAR _UnnamedText_5c4bc ; 0x981c9 db $0B TX_FAR _UnnamedText_5c4c1 ; 0x98232 db $50 ; 0x5c4c6 PewterGymText2: ; 0x5c4c6 db $08 ; asm ld hl, PewterGymTrainerHeader0 call LoadTrainerHeader jp TextScriptEnd PewterGymBattleText1: ; 0x5c4d0 TX_FAR _PewterGymBattleText1 db $50 ; 0x5c4d0 + 5 bytes PewterGymEndBattleText1: ; 0x5c4d5 TX_FAR _PewterGymEndBattleText1 db $50 ; 0x5c4d5 + 5 bytes PewterGymAfterBattleText1: ; 0x5c4da TX_FAR _PewterGymAfterBattleText1 db $50 ; 0x5c4da + 5 bytes PewterGymText3: ; 0x5c4df db $08 ; asm ld a, [$d72a] bit 0, a jr nz, .asm_71369 ; 0x5c4e5 ld hl, UnnamedText_5c515 call PrintText call $35ec ld a, [$cc26] and a jr nz, .asm_6123a ; 0x5c4f4 ld hl, UnnamedText_5c51a call PrintText jr .asm_d1578 ; 0x5c4fc .asm_6123a ; 0x5c4fe ld hl, UnnamedText_5c524 call PrintText .asm_d1578 ; 0x5c504 ld hl, UnnamedText_5c51f call PrintText jr .asm_07013 ; 0x5c50a .asm_71369 ; 0x5c50c ld hl, UnnamedText_5c529 call PrintText .asm_07013 ; 0x5c512 jp TextScriptEnd UnnamedText_5c515: ; 0x5c515 TX_FAR _UnnamedText_5c515 db $50 ; 0x5c515 + 5 bytes UnnamedText_5c51a: ; 0x5c51a TX_FAR _UnnamedText_5c51a db $50 ; 0x5c51a + 5 bytes UnnamedText_5c51f: ; 0x5c51f TX_FAR _UnnamedText_5c51f db $50 ; 0x5c51f + 5 bytes UnnamedText_5c524: ; 0x5c524 TX_FAR _UnnamedText_5c524 db $50 ; 0x5c524 + 5 bytes UnnamedText_5c529: ; 0x5c529 TX_FAR _UnnamedText_5c529 db $50 ; 0x5c529 + 5 bytes PewterGymObject: ; 0x5c52e (size=42) db $3 ; border tile db $2 ; warps db $d, $4, $2, $ff db $d, $5, $2, $ff db $0 ; signs db $3 ; people db SPRITE_BLACK_HAIR_BOY_2, $1 + 4, $4 + 4, $ff, $d0, $41, BROCK + $C8, $1 ; trainer db SPRITE_BLACK_HAIR_BOY_1, $6 + 4, $3 + 4, $ff, $d3, $42, JR__TRAINER_M + $C8, $1 ; trainer db SPRITE_GYM_HELPER, $a + 4, $7 + 4, $ff, $d0, $3 ; person ; warp-to EVENT_DISP $5, $d, $4 EVENT_DISP $5, $d, $5 PewterGymBlocks: ; 0x5c558 35 INCBIN "maps/pewtergym.blk" PewterPokecenter_h: ; 0x5c57b to 0x5c587 (12 bytes) (id=58) db $06 ; tileset db PEWTER_POKECENTER_HEIGHT, PEWTER_POKECENTER_WIDTH ; dimensions (y, x) dw PewterPokecenterBlocks, PewterPokecenterTexts, PewterPokecenterScript ; blocks, texts, scripts db $00 ; connections dw PewterPokecenterObject ; objects PewterPokecenterScript: ; 0x5c587 call $22fa jp $3c3c ; 0x5c58d PewterPokecenterTexts: ; 0x5c58d dw PewterPokecenterText1, PewterPokecenterText2, PewterPokecenterText3, PewterPokecenterText4 PewterPokecenterText1: ; 0x5c595 db $ff PewterPokecenterText2: ; 0x5c596 TX_FAR _PewterPokecenterText1 db $50 PewterPokecenterText3: ; 0x5c59b db $8 ld a, $1 ld [$cc3c], a ld hl, PewterPokecenterText5 call PrintText ld a, $ff call $23b1 ld c, $20 call $3739 ld hl, $4608 ld de, $cd3f ld bc, $0004 call CopyData ld a, [$c132] ld hl, $cd3f .asm_5c5c3 cp [hl] inc hl jr nz, .asm_5c5c3 ; 0x5c5c5 $fc dec hl push hl ld c, $1f ld a, $d0 call $23a1 pop hl .asm_5c5d1 ld a, [hl] ld [$c132], a push hl ld hl, $cd3f ld de, $cd3e ld bc, $0004 call CopyData ld a, [$cd3e] ld [$cd42], a pop hl ld c, $18 call $3739 ld a, [$c026] ld b, a ld a, [$c027] or b jr nz, .asm_5c5d1 ; 0x5c5f6 $d9 ld c, $30 call $3739 call $2307 jp TextScriptEnd ; 0x5c603 PewterPokecenterText5: ; 0x5c603 TX_FAR _PewterPokecenterText5 ; 0x98744 db $50 ; 0x5c603 + 5 bytes = 0x5c608 ; 0x5c608 XXX db $30, $38, $34, $3c PewterPokecenterText4: ; 0x5c60b db $f6 PewterPokecenterObject: ; 0x5c60d (size=44) db $0 ; border tile db $2 ; warps db $7, $3, $6, $ff db $7, $4, $6, $ff db $0 ; signs db $4 ; people db SPRITE_NURSE, $1 + 4, $3 + 4, $ff, $d0, $1 ; person db SPRITE_GENTLEMAN, $7 + 4, $b + 4, $ff, $d2, $2 ; person db SPRITE_CLEFAIRY, $3 + 4, $1 + 4, $ff, $d0, $3 ; person db SPRITE_CABLE_CLUB_WOMAN, $2 + 4, $b + 4, $ff, $d0, $4 ; person ; warp-to EVENT_DISP $7, $7, $3 EVENT_DISP $7, $7, $4 CeruleanPokecenter_h: ; 0x5c639 to 0x5c645 (12 bytes) (id=64) db $06 ; tileset db CERULEAN_POKECENTER_HEIGHT, CERULEAN_POKECENTER_WIDTH ; dimensions (y, x) dw CeruleanPokecenterBlocks, CeruleanPokecenterTexts, CeruleanPokecenterScript ; blocks, texts, scripts db $00 ; connections dw CeruleanPokecenterObject ; objects CeruleanPokecenterScript: ; 0x5c645 call $22fa jp $3c3c ; 0x5c64b CeruleanPokecenterTexts: dw CeruleanPokecenterText1, CeruleanPokecenterText2, CeruleanPokecenterText3, CeruleanPokecenterText4 CeruleanPokecenterText4: db $f6 CeruleanPokecenterText1: ; 0x5c654 db $ff CeruleanPokecenterText2: ; 0x5c655 TX_FAR _CeruleanPokecenterText1 db $50 CeruleanPokecenterText3: TX_FAR _CeruleanPokecenterText3 db $50 CeruleanPokecenterObject: ; 0x5c65f (size=44) db $0 ; border tile db $2 ; warps db $7, $3, $2, $ff db $7, $4, $2, $ff db $0 ; signs db $4 ; people db SPRITE_NURSE, $1 + 4, $3 + 4, $ff, $d0, $1 ; person db SPRITE_BLACK_HAIR_BOY_2, $5 + 4, $a + 4, $fe, $0, $2 ; person db SPRITE_GENTLEMAN, $3 + 4, $4 + 4, $ff, $d0, $3 ; person db SPRITE_CABLE_CLUB_WOMAN, $2 + 4, $b + 4, $ff, $d0, $4 ; person ; warp-to EVENT_DISP $7, $7, $3 EVENT_DISP $7, $7, $4 CeruleanPokecenterBlocks: ; 0x5c68b 28 INCBIN "maps/ceruleanpokecenter.blk" CeruleanGym_h: ; 0x5c6a7 to 0x5c6b3 (12 bytes) (id=65) db $07 ; tileset db CERULEAN_GYM_HEIGHT, CERULEAN_GYM_WIDTH ; dimensions (y, x) dw CeruleanGymBlocks, CeruleanGymTexts, CeruleanGymScript ; blocks, texts, scripts db $00 ; connections dw CeruleanGymObject ; objects CeruleanGymScript: ; 0x5c6b3 ld hl, $d126 bit 6, [hl] res 6, [hl] call nz, CeruleanGymScript_Unknown5c6d0 call $3c3c ld hl, CeruleanGymTrainerHeaders ld de, $46f8 ld a, [$d5fd] call $3160 ld [$d5fd], a ret ; 0x5c6d0 CeruleanGymScript_Unknown5c6d0: ; 0x5c6d0 INCBIN "baserom.gbc",$5c6d0,$7a CeruleanGymTexts: ; 0x5c74a dw CeruleanGymText1, CeruleanGymText2, CeruleanGymText3, CeruleanGymText4, CeruleanGymText5, CeruleanGymText6, CeruleanGymText7 CeruleanGymTrainerHeaders: CeruleanGymTrainerHeader0: ; 0x5c758 db $2 ; flag's bit db ($3 << 4) ; trainer's view range dw $d75e ; flag's byte dw CeruleanGymBattleText1 ; 0x47e9 TextBeforeBattle dw CeruleanGymAfterBattleText1 ; 0x47f3 TextAfterBattle dw CeruleanGymEndBattleText1 ; 0x47ee TextEndBattle dw CeruleanGymEndBattleText1 ; 0x47ee TextEndBattle ; 0x5c764 CeruleanGymTrainerHeader1: ; 0x5c764 db $3 ; flag's bit db ($3 << 4) ; trainer's view range dw $d75e ; flag's byte dw CeruleanGymBattleText2 ; 0x4802 TextBeforeBattle dw CeruleanGymAfterBattleText2 ; 0x480c TextAfterBattle dw CeruleanGymEndBattleText2 ; 0x4807 TextEndBattle dw CeruleanGymEndBattleText2 ; 0x4807 TextEndBattle ; 0x5c770 db $ff CeruleanGymText1: ; 0x5c771 db $08 ; asm ld a, [$d75e] bit 7, a jr z, .asm_10854 ; 0x5c777 bit 6, a jr nz, .asm_37a1b ; 0x5c77b call z, $470d call DisableWaitingAfterTextDisplay jr .asm_95b04 ; 0x5c783 .asm_37a1b ; 0x5c785 ld hl, UnnamedText_5c7c3 call PrintText jr .asm_95b04 ; 0x5c78b .asm_10854 ; 0x5c78d ld hl, UnnamedText_5c7be call PrintText ld hl, $d72d set 6, [hl] set 7, [hl] ld hl, UnnamedText_5c7d8 ld de, UnnamedText_5c7d8 call $3354 ldh a, [$8c] ld [$cf13], a call $336a call $32d7 ld a, $2 ld [$d05c], a xor a ldh [$b4], a ld a, $3 ld [$d5fd], a .asm_95b04 ; 0x5c7bb jp TextScriptEnd UnnamedText_5c7be: ; 0x5c7be TX_FAR _UnnamedText_5c7be db $50 ; 0x5c7be + 5 bytes UnnamedText_5c7c3: ; 0x5c7c3 TX_FAR _UnnamedText_5c7c3 db $50 ; 0x5c7c3 + 5 bytes CeruleanGymText5: ; 0x5c7c8 TX_FAR _UnnamedText_5c7c8 db $50 ; 0x5c7c8 + 5 bytes CeruleanGymText6: ; 0x5c7cd ReceivedTM11Text: ; 0x5c7cd TX_FAR _ReceivedTM11Text ; 0x98b7d db $0B, $50 ; 0x5c7cd + 6 bytes = 0x5c7d3 CeruleanGymText7: ; 0x5c7d3 TX_FAR _UnnamedText_5c7d3 db $50 ; 0x5c7d3 + 5 bytes UnnamedText_5c7d8: ; 0x5c7d8 TX_FAR _UnnamedText_5c7d8 ; 0x98bb0 db $11, $6, $50 ; 0x5c7d8 + 7 bytes = 0x5c7df CeruleanGymText2: ; 0x5c7df db $08 ; asm ld hl, CeruleanGymTrainerHeader0 call LoadTrainerHeader jp TextScriptEnd CeruleanGymBattleText1: ; 0x5c7e9 TX_FAR _CeruleanGymBattleText1 db $50 ; 0x5c7e9 + 5 bytes CeruleanGymEndBattleText1: ; 0x5c7ee TX_FAR _CeruleanGymEndBattleText1 db $50 ; 0x5c7ee + 5 bytes CeruleanGymAfterBattleText1: ; 0x5c7f3 TX_FAR _CeruleanGymAfterBattleText1 db $50 ; 0x5c7f3 + 5 bytes CeruleanGymText3: ; 0x5c7f8 db $08 ; asm ld hl, CeruleanGymTrainerHeader1 call LoadTrainerHeader jp TextScriptEnd CeruleanGymBattleText2: ; 0x5c802 TX_FAR _CeruleanGymBattleText2 db $50 ; 0x5c802 + 5 bytes CeruleanGymEndBattleText2: ; 0x5c807 TX_FAR _CeruleanGymEndBattleText2 db $50 ; 0x5c807 + 5 bytes CeruleanGymAfterBattleText2: ; 0x5c80c TX_FAR _CeruleanGymAfterBattleText2 db $50 ; 0x5c80c + 5 bytes CeruleanGymText4: ; 0x5c811 db $08 ; asm ld a, [$d75e] bit 7, a jr nz, .asm_f80ce ; 0x5c817 ld hl, UnnamedText_5c82a call PrintText jr .asm_18a31 ; 0x5c81f .asm_f80ce ; 0x5c821 ld hl, UnnamedText_5c82f call PrintText .asm_18a31 ; 0x5c827 jp TextScriptEnd UnnamedText_5c82a: ; 0x5c82a TX_FAR _UnnamedText_5c82a db $50 ; 0x5c82a + 5 bytes UnnamedText_5c82f: ; 0x5c82f TX_FAR _UnnamedText_5c82f db $50 ; 0x5c82f + 5 bytes CeruleanGymObject: ; 0x5c834 (size=50) db $3 ; border tile db $2 ; warps db $d, $4, $3, $ff db $d, $5, $3, $ff db $0 ; signs db $4 ; people db SPRITE_BRUNETTE_GIRL, $2 + 4, $4 + 4, $ff, $d0, $41, MISTY + $C8, $1 ; trainer db SPRITE_LASS, $3 + 4, $2 + 4, $ff, $d3, $42, JR__TRAINER_F + $C8, $1 ; trainer db SPRITE_SWIMMER, $7 + 4, $8 + 4, $ff, $d2, $43, SWIMMER + $C8, $1 ; trainer db SPRITE_GYM_HELPER, $a + 4, $7 + 4, $ff, $d0, $4 ; person ; warp-to EVENT_DISP $5, $d, $4 EVENT_DISP $5, $d, $5 CeruleanGymBlocks: ; 0x5c866 35 INCBIN "maps/ceruleangym.blk" CeruleanMart_h: ; 0x5c889 to 0x5c895 (12 bytes) (id=67) db $02 ; tileset db CERULEAN_MART_HEIGHT, CERULEAN_MART_WIDTH ; dimensions (y, x) dw CeruleanMartBlocks, CeruleanMartTexts, CeruleanMartScript ; blocks, texts, scripts db $00 ; connections dw CeruleanMartObject ; objects CeruleanMartScript: ; 0x5c895 jp $3c3c ; 0x5c898 CeruleanMartTexts: ; 0x5c898 dw CeruleanMartText1, CeruleanMartText2, CeruleanMartText3 CeruleanMartText2: ; 0x5c89e TX_FAR _CeruleanMartText2 db $50 CeruleanMartText3: ; 0x5c8a3 TX_FAR _CeruleanMartText3 db $50 CeruleanMartObject: ; 0x5c8a8 (size=38) db $0 ; border tile db $2 ; warps db $7, $3, $5, $ff db $7, $4, $5, $ff db $0 ; signs db $3 ; people db SPRITE_MART_GUY, $5 + 4, $0 + 4, $ff, $d3, $1 ; person db SPRITE_BLACK_HAIR_BOY_1, $4 + 4, $3 + 4, $fe, $1, $2 ; person db SPRITE_LASS, $2 + 4, $6 + 4, $fe, $2, $3 ; person ; warp-to EVENT_DISP $4, $7, $3 EVENT_DISP $4, $7, $4 LavenderPokecenter_h: ; 0x5c8ce to 0x5c8da (12 bytes) (id=141) db $06 ; tileset db LAVENDER_POKECENTER_HEIGHT, LAVENDER_POKECENTER_WIDTH ; dimensions (y, x) dw LavenderPokecenterBlocks, LavenderPokecenterTexts, LavenderPokecenterScript ; blocks, texts, scripts db $00 ; connections dw LavenderPokecenterObject ; objects LavenderPokecenterScript: ; 0x5c8da call $22fa jp $3c3c ; 0x5c8e0 LavenderPokecenterTexts: dw LavenderPokecenterText1, LavenderPokecenterText2, LavenderPokecenterText3, LavenderPokecenterText4 LavenderPokecenterText4: db $f6 LavenderPokecenterText1: ; 0x5c8ea db $ff LavenderPokecenterText2: ; 0x5c8eb TX_FAR _LavenderPokecenterText1 db $50 LavenderPokecenterText3: ; 0x5c8ef TX_FAR _LavenderPokecenterText3 db $50 LavenderPokecenterObject: ; 0x5c8f4 (size=44) db $0 ; border tile db $2 ; warps db $7, $3, $0, $ff db $7, $4, $0, $ff db $0 ; signs db $4 ; people db SPRITE_NURSE, $1 + 4, $3 + 4, $ff, $d0, $1 ; person db SPRITE_GENTLEMAN, $3 + 4, $5 + 4, $ff, $ff, $2 ; person db SPRITE_LITTLE_GIRL, $6 + 4, $2 + 4, $fe, $1, $3 ; person db SPRITE_CABLE_CLUB_WOMAN, $2 + 4, $b + 4, $ff, $d0, $4 ; person ; warp-to EVENT_DISP $7, $7, $3 EVENT_DISP $7, $7, $4 LavenderMart_h: ; 0x5c920 to 0x5c92c (12 bytes) (id=150) db $02 ; tileset db LAVENDER_MART_HEIGHT, LAVENDER_MART_WIDTH ; dimensions (y, x) dw LavenderMartBlocks, LavenderMartTexts, LavenderMartScript ; blocks, texts, scripts db $00 ; connections dw LavenderMartObject ; objects LavenderMartScript: ; 0x5c92c jp $3c3c ; 0x5c92f LavenderMartTexts: ; 0x5c92f dw LavenderMartText1, LavenderMartText2, LavenderMartText3 LavenderMartText2: ; 0x5c935 TX_FAR _LavenderMartText2 db $50 LavenderMartText3: ; 0x5c93a db $08 ; asm ld a, [$d7e0] bit 7, a jr nz, .asm_c88d4 ; 0x5c940 ld hl, UnnamedText_5c953 call PrintText jr .asm_6d225 ; 0x5c948 .asm_c88d4 ; 0x5c94a ld hl, UnnamedText_5c958 call PrintText .asm_6d225 ; 0x5c950 jp TextScriptEnd UnnamedText_5c953: ; 0x5c953 TX_FAR _UnnamedText_5c953 db $50 ; 0x5c953 + 5 bytes UnnamedText_5c958: ; 0x5c958 TX_FAR _UnnamedText_5c958 db $50 ; 0x5c958 + 5 bytes LavenderMartObject: ; 0x5c95d (size=38) db $0 ; border tile db $2 ; warps db $7, $3, $3, $ff db $7, $4, $3, $ff db $0 ; signs db $3 ; people db SPRITE_MART_GUY, $5 + 4, $0 + 4, $ff, $d3, $1 ; person db SPRITE_BALDING_GUY, $4 + 4, $3 + 4, $ff, $ff, $2 ; person db SPRITE_BLACK_HAIR_BOY_1, $2 + 4, $7 + 4, $ff, $ff, $3 ; person ; warp-to EVENT_DISP $4, $7, $3 EVENT_DISP $4, $7, $4 VermilionPokecenter_h: ; 0x5c983 to 0x5c98f (12 bytes) (id=89) db $06 ; tileset db VERMILION_POKECENTER_HEIGHT, VERMILION_POKECENTER_WIDTH ; dimensions (y, x) dw VermilionPokecenterBlocks, VermilionPokecenterTexts, VermilionPokecenterScript ; blocks, texts, scripts db $00 ; connections dw VermilionPokecenterObject ; objects VermilionPokecenterScript: ; 0x5c98f call $22fa jp $3c3c ; 0x5c995 VermilionPokecenterTexts: dw VermilionPokecenterText1, VermilionPokecenterText2, VermilionPokecenterText3, VermilionPokecenterText4 VermilionPokecenterText1: ; 0x5c99d db $ff VermilionPokecenterText2: ; 0x5c99e TX_FAR _VermilionPokecenterText1 db $50 VermilionPokecenterText3: ; 0x5c9a3 TX_FAR _VermilionPokecenterText3 db $50 VermilionPokecenterText4: ; 0x5c9a8 db $f6 VermilionPokecenterObject: ; 0x5c9a9 (size=44) db $0 ; border tile db $2 ; warps db $7, $3, $0, $ff db $7, $4, $0, $ff db $0 ; signs db $4 ; people db SPRITE_NURSE, $1 + 4, $3 + 4, $ff, $d0, $1 ; person db SPRITE_FISHER, $5 + 4, $a + 4, $ff, $ff, $2 ; person db SPRITE_SAILOR, $4 + 4, $5 + 4, $ff, $ff, $3 ; person db SPRITE_CABLE_CLUB_WOMAN, $2 + 4, $b + 4, $ff, $d0, $4 ; person ; warp-to EVENT_DISP $7, $7, $3 EVENT_DISP $7, $7, $4 VermilionMart_h: ; 0x5c9d5 to 0x5c9e1 (12 bytes) (id=91) db $02 ; tileset db VERMILION_MART_HEIGHT, VERMILION_MART_WIDTH ; dimensions (y, x) dw VermilionMartBlocks, VermilionMartTexts, VermilionMartScript ; blocks, texts, scripts db $00 ; connections dw VermilionMartObject ; objects VermilionMartScript: ; 0x5c9e1 jp $3c3c ; 0x5c9e4 VermilionMartTexts: ; 0x5c9e4 dw VermilionMartText1, VermilionMartText2, VermilionMartText3 VermilionMartText2: ; 0x5c9ea TX_FAR _VermilionMartText2 db $50 VermilionMartText3: ; 0x5c9ef TX_FAR _VermilionMartText3 db $50 VermilionMartObject: ; 0x5c9f4 (size=38) db $0 ; border tile db $2 ; warps db $7, $3, $2, $ff db $7, $4, $2, $ff db $0 ; signs db $3 ; people db SPRITE_MART_GUY, $5 + 4, $0 + 4, $ff, $d3, $1 ; person db SPRITE_BLACK_HAIR_BOY_1, $6 + 4, $5 + 4, $ff, $ff, $2 ; person db SPRITE_LASS, $3 + 4, $3 + 4, $fe, $2, $3 ; person ; warp-to EVENT_DISP $4, $7, $3 EVENT_DISP $4, $7, $4 VermilionGym_h: ; 0x5ca1a to 0x5ca26 (12 bytes) (id=92) db $07 ; tileset db VERMILION_GYM_HEIGHT, VERMILION_GYM_WIDTH ; dimensions (y, x) dw VermilionGymBlocks, VermilionGymTexts, VermilionGymScript ; blocks, texts, scripts db $00 ; connections dw VermilionGymObject ; objects VermilionGymScript: ; 0x5ca26 ld hl, $d126 bit 5, [hl] res 5, [hl] push hl call nz, VermilionGymScript_Unknown5ca4c pop hl bit 6, [hl] res 6, [hl] call nz, $4a6d call $3c3c ld hl, VermilionGymTrainerHeader0 ld de, $4a95 ld a, [$d5fe] call $3160 ld [$d5fe], a ret ; 0x5ca4c VermilionGymScript_Unknown5ca4c: ; 0x5ca4c INCBIN "baserom.gbc",$5ca4c,$9c VermilionGymTexts: ; 0x5cae8 dw VermilionGymText1, VermilionGymText2, VermilionGymText3, VermilionGymText4, VermilionGymText5, VermilionGymText6, VermilionGymText7, VermilionGymText8 VermilionGymTrainerHeaders: VermilionGymTrainerHeader0: ; 0x5caf8 db $2 ; flag's bit db ($3 << 4) ; trainer's view range dw $d773 ; flag's byte dw VermilionGymBattleText1 ; 0x4b9a TextBeforeBattle dw VermilionGymAfterBattleText1 ; 0x4ba4 TextAfterBattle dw VermilionGymEndBattleText1 ; 0x4b9f TextEndBattle dw VermilionGymEndBattleText1 ; 0x4b9f TextEndBattle ; 0x5cb04 VermilionGymTrainerHeader1: ; 0x5cb04 db $3 ; flag's bit db ($2 << 4) ; trainer's view range dw $d773 ; flag's byte dw VermilionGymBattleText2 ; 0x4bb3 TextBeforeBattle dw VermilionGymAfterBattleText2 ; 0x4bbd TextAfterBattle dw VermilionGymEndBattleText2 ; 0x4bb8 TextEndBattle dw VermilionGymEndBattleText2 ; 0x4bb8 TextEndBattle ; 0x5cb10 VermilionGymTrainerHeader2: ; 0x5cb10 db $4 ; flag's bit db ($3 << 4) ; trainer's view range dw $d773 ; flag's byte dw VermilionGymBattleText3 ; 0x4bcc TextBeforeBattle dw VermilionGymAfterBattleText3 ; 0x4bd6 TextAfterBattle dw VermilionGymEndBattleText3 ; 0x4bd1 TextEndBattle dw VermilionGymEndBattleText3 ; 0x4bd1 TextEndBattle ; 0x5cb1c db $ff VermilionGymText1: ; 0x5cb1d db $08 ; asm ld a, [$d773] bit 7, a jr z, .asm_7cc29 ; 0x5cb23 bit 6, a jr nz, .asm_41203 ; 0x5cb27 call z, $4aaa call DisableWaitingAfterTextDisplay jr .asm_23621 ; 0x5cb2f .asm_41203 ; 0x5cb31 ld hl, UnnamedText_5cb72 call PrintText jr .asm_23621 ; 0x5cb37 .asm_7cc29 ; 0x5cb39 ld hl, UnnamedText_5cb6d call PrintText ld hl, $d72d set 6, [hl] set 7, [hl] ld hl, ReceivedThunderbadgeText ld de, ReceivedThunderbadgeText call $3354 ldh a, [$8c] ld [$cf13], a call $336a call $32d7 ld a, $3 ld [$d05c], a xor a ldh [$b4], a ld a, $3 ld [$d5fe], a ld [$da39], a .asm_23621 ; 0x5cb6a jp TextScriptEnd UnnamedText_5cb6d: ; 0x5cb6d TX_FAR _UnnamedText_5cb6d db $50 ; 0x5cb6d + 5 bytes UnnamedText_5cb72: ; 0x5cb72 TX_FAR _UnnamedText_5cb72 db $50 ; 0x5cb72 + 5 bytes VermilionGymText6: TX_FAR _UnnamedText_5cb77 db $50 ; 0x5cb77 + 5 bytes VermilionGymText7: ; 0x5cb7c TX_FAR _ReceivedTM24Text ; 0x9c0e0 db $11 TX_FAR _TM24ExplanationText ; 0x9c0f5 db $50 ; 0x5cb7c + 10 bytes = 0x5cb86 VermilionGymText8: ; 0x5cb86 TX_FAR _TM24NoRoomText db $50 ReceivedThunderbadgeText: TX_FAR _ReceivedThunderbadgeText db $50 VermilionGymText2: ; 0x5cb90 db $08 ; asm ld hl, VermilionGymTrainerHeader0 call LoadTrainerHeader jp TextScriptEnd VermilionGymBattleText1: ; 0x5cb9a TX_FAR _VermilionGymBattleText1 db $50 ; 0x5cb9a + 5 bytes VermilionGymEndBattleText1: ; 0x5cb9f TX_FAR _VermilionGymEndBattleText1 db $50 ; 0x5cb9f + 5 bytes VermilionGymAfterBattleText1: ; 0x5cba4 TX_FAR _VermilionGymAfterBattleText1 db $50 ; 0x5cba4 + 5 bytes VermilionGymText3: ; 0x5cba9 db $08 ; asm ld hl, VermilionGymTrainerHeader1 call LoadTrainerHeader jp TextScriptEnd VermilionGymBattleText2: ; 0x5cbb3 TX_FAR _VermilionGymBattleText2 db $50 ; 0x5cbb3 + 5 bytes VermilionGymEndBattleText2: ; 0x5cbb8 TX_FAR _VermilionGymEndBattleText2 db $50 ; 0x5cbb8 + 5 bytes VermilionGymAfterBattleText2: ; 0x5cbbd TX_FAR _VermilionGymAfterBattleText2 db $50 ; 0x5cbbd + 5 bytes VermilionGymText4: ; 0x5cbc2 db $08 ; asm ld hl, VermilionGymTrainerHeader2 call LoadTrainerHeader jp TextScriptEnd VermilionGymBattleText3: ; 0x5cbcc TX_FAR _VermilionGymBattleText3 db $50 ; 0x5cbcc + 5 bytes VermilionGymEndBattleText3: ; 0x5cbd1 TX_FAR _VermilionGymEndBattleText3 db $50 ; 0x5cbd1 + 5 bytes VermilionGymAfterBattleText3: ; 0x5cbd6 TX_FAR _VermilionGymAfterBattleText3 db $50 ; 0x5cbd6 + 5 bytes VermilionGymText5: ; 0x5cbdb db $08 ; asm ld a, [$d72a] bit 2, a jr nz, .asm_13b67 ; 0x5cbe1 ld hl, UnnamedText_5cbf4 call PrintText jr .asm_c2b38 ; 0x5cbe9 .asm_13b67 ; 0x5cbeb ld hl, UnnamedText_5cbf9 call PrintText .asm_c2b38 ; 0x5cbf1 jp TextScriptEnd UnnamedText_5cbf4: ; 0x5cbf4 TX_FAR _UnnamedText_5cbf4 db $50 ; 0x5cbf4 + 5 bytes UnnamedText_5cbf9: ; 0x5cbf9 TX_FAR _UnnamedText_5cbf9 db $50 ; 0x5cbf9 + 5 bytes VermilionGymObject: ; 0x5cbfe (size=58) db $3 ; border tile db $2 ; warps db $11, $4, $3, $ff db $11, $5, $3, $ff db $0 ; signs db $5 ; people db SPRITE_ROCKER, $1 + 4, $5 + 4, $ff, $d0, $41, LT__SURGE + $C8, $1 ; trainer db SPRITE_GENTLEMAN, $6 + 4, $9 + 4, $ff, $d2, $42, GENTLEMAN + $C8, $3 ; trainer db SPRITE_BLACK_HAIR_BOY_2, $8 + 4, $3 + 4, $ff, $d2, $43, ROCKER + $C8, $1 ; trainer db SPRITE_SAILOR, $a + 4, $0 + 4, $ff, $d3, $44, SAILOR + $C8, $8 ; trainer db SPRITE_GYM_HELPER, $e + 4, $4 + 4, $ff, $d0, $5 ; person ; warp-to EVENT_DISP $5, $11, $4 EVENT_DISP $5, $11, $5 VermilionGymBlocks: ; 0x5cc38 45 INCBIN "maps/vermiliongym.blk" CopycatsHouseF2_h: ; 0x5cc65 to 0x5cc71 (12 bytes) (id=176) db $04 ; tileset db COPYCATS_HOUSE_2F_HEIGHT, COPYCATS_HOUSE_2F_WIDTH ; dimensions (y, x) dw CopycatsHouseF2Blocks, CopycatsHouseF2Texts, CopycatsHouseF2Script ; blocks, texts, scripts db $00 ; connections dw CopycatsHouseF2Object ; objects CopycatsHouseF2Script: ; 0x5cc71 jp $3c3c ; 0x5cc74 CopycatsHouseF2Texts: ; 0x5cc74 dw CopycatsHouseF2Text1, CopycatsHouseF2Text2, CopycatsHouseF2Text3, CopycatsHouseF2Text4, CopycatsHouseF2Text5, CopycatsHouseF2Text6, CopycatsHouseF2Text7 CopycatsHouseF2Text1: ; 0x5cc82 db $08 ; asm ld a, [$d7af] bit 0, a jr nz, .asm_7ccf3 ; 0x5cc88 ld a, $1 ld [$cc3c], a ld hl, UnnamedText_5ccd4 call PrintText ld b, POKE_DOLL call $3493 ; probably check has item or take item jr z, .asm_62ecd ; 0x5cc9a ld hl, TM31PreReceiveText call PrintText ld bc, (TM_31 << 8) | 1 call GiveItem jr nc, .asm_16690 ; 0x5cca8 ld hl, ReceivedTM31Text call PrintText ld a, $33 ldh [$db], a ld b, $5 ; BANK(MyFunction) ld hl, $7f37 ; MyFunction call Bankswitch ld hl, $d7af set 0, [hl] jr .asm_62ecd ; 0x5ccc1 .asm_16690 ; 0x5ccc3 ld hl, TM31NoRoomText call PrintText jr .asm_62ecd ; 0x5ccc9 .asm_7ccf3 ; 0x5cccb ld hl, TM31ExplanationText2 call PrintText .asm_62ecd ; 0x5ccd1 jp TextScriptEnd UnnamedText_5ccd4: ; 0x5ccd4 TX_FAR _UnnamedText_5ccd4 db $50 ; 0x5ccd4 + 5 bytes TM31PreReceiveText: ; 0x5ccd9 TX_FAR _TM31PreReceiveText db $50 ; 0x5ccd9 + 5 bytes ReceivedTM31Text: ; 0x5ccde TX_FAR _ReceivedTM31Text ; 0xa1675 db $0B TM31ExplanationText1: ; 0x5cce2 TX_FAR _TM31ExplanationText1 ; 0xa1689 db $d, $50 ; 0x5cce9 TM31ExplanationText2: ; 0x5cce9 TX_FAR _TM31ExplanationText2 ; 0xa16c5 db $50 ; 0x5cce9 + 5 bytes = 0x5ccee TM31NoRoomText: ; 0x5ccee TX_FAR _TM31NoRoomText ; 0xa1733 db $d, $50 ; 0x5ccf4 CopycatsHouseF2Text2: ; 0x5ccf4 TX_FAR _CopycatsHouseF2Text2 db $50 CopycatsHouseF2Text5: CopycatsHouseF2Text4: CopycatsHouseF2Text3: ; 0x5ccf9 TX_FAR _CopycatsHouseF2Text3 db $50 CopycatsHouseF2Text6: ; 0x5ccfe TX_FAR _CopycatsHouseF2Text6 db $50 CopycatsHouseF2Text7: ; 0x5cd03 db $08 ; asm ld a, [$c109] cp $4 ld hl, UnnamedText_5cd1c jr nz, .asm_399a4 ; 0x5cd0c ld hl, UnnamedText_5cd17 .asm_399a4 ; 0x5cd11 call PrintText jp TextScriptEnd UnnamedText_5cd17: ; 0x5cd17 TX_FAR _UnnamedText_5cd17 db $50 ; 0x5cd17 + 5 bytes UnnamedText_5cd1c: ; 0x5cd1c TX_FAR _UnnamedText_5cd1c db $50 ; 0x5cd1c + 5 bytes CopycatsHouseF2Object: ; 0x5cd21 (size=48) db $a ; border tile db $1 ; warps db $1, $7, $2, COPYCATS_HOUSE_1F db $2 ; signs db $5, $3, $6 ; CopycatsHouseF2Text6 db $1, $0, $7 ; CopycatsHouseF2Text7 db $5 ; people db SPRITE_BRUNETTE_GIRL, $3 + 4, $4 + 4, $fe, $0, $1 ; person db SPRITE_BIRD, $6 + 4, $4 + 4, $fe, $2, $2 ; person db SPRITE_SLOWBRO, $1 + 4, $5 + 4, $ff, $d0, $3 ; person db SPRITE_BIRD, $0 + 4, $2 + 4, $ff, $d0, $4 ; person db SPRITE_CLEFAIRY, $6 + 4, $1 + 4, $ff, $d3, $5 ; person ; warp-to EVENT_DISP $4, $1, $7 ; COPYCATS_HOUSE_1F FightingDojo_h: ; 0x5cd51 to 0x5cd5d (12 bytes) (id=177) db $05 ; tileset db FIGHTINGDOJO_HEIGHT, FIGHTINGDOJO_WIDTH ; dimensions (y, x) dw FightingDojoBlocks, FightingDojoTexts, FightingDojoScript ; blocks, texts, scripts db $00 ; connections dw FightingDojoObject ; objects FightingDojoScript: ; 0x5cd5d call $3c3c ld hl, FightingDojoTrainerHeaders ld de, $4d7b ld a, [$d642] call $3160 ld [$d642], a ret ; 0x5cd70 INCBIN "baserom.gbc",$5cd70,$93 FightingDojoTexts: ; 0x5ce03 dw FightingDojoText1, FightingDojoText2, FightingDojoText3, FightingDojoText4, FightingDojoText5, FightingDojoText6, FightingDojoText7, FightingDojoText8 FightingDojoTrainerHeaders: FightingDojoTrainerHeader0: ; 0x5ce13 db $2 ; flag's bit db ($4 << 4) ; trainer's view range dw $d7b1 ; flag's byte dw FightingDojoBattleText1 ; 0x4eac TextBeforeBattle dw FightingDojoAfterBattleText1 ; 0x4eb6 TextAfterBattle dw FightingDojoEndBattleText1 ; 0x4eb1 TextEndBattle dw FightingDojoEndBattleText1 ; 0x4eb1 TextEndBattle ; 0x5ce1f FightingDojoTrainerHeader1: ; 0x5ce1f db $3 ; flag's bit db ($4 << 4) ; trainer's view range dw $d7b1 ; flag's byte dw FightingDojoBattleText2 ; 0x4ec5 TextBeforeBattle dw FightingDojoAfterBattleText2 ; 0x4ecf TextAfterBattle dw FightingDojoEndBattleText2 ; 0x4eca TextEndBattle dw FightingDojoEndBattleText2 ; 0x4eca TextEndBattle ; 0x5ce2b FightingDojoTrainerHeader2: ; 0x5ce2b db $4 ; flag's bit db ($3 << 4) ; trainer's view range dw $d7b1 ; flag's byte dw FightingDojoBattleText3 ; 0x4ede TextBeforeBattle dw FightingDojoAfterBattleText3 ; 0x4ee8 TextAfterBattle dw FightingDojoEndBattleText3 ; 0x4ee3 TextEndBattle dw FightingDojoEndBattleText3 ; 0x4ee3 TextEndBattle ; 0x5ce37 FightingDojoTrainerHeader3: ; 0x5ce37 db $5 ; flag's bit db ($3 << 4) ; trainer's view range dw $d7b1 ; flag's byte dw FightingDojoBattleText4 ; 0x4ef7 TextBeforeBattle dw FightingDojoAfterBattleText4 ; 0x4f01 TextAfterBattle dw FightingDojoEndBattleText4 ; 0x4efc TextEndBattle dw FightingDojoEndBattleText4 ; 0x4efc TextEndBattle ; 0x5ce43 db $ff FightingDojoText1: ; 0x5ce44 db $08 ; asm ld a, [$d7b1] bit 0, a jp nz, .continue1\@ bit 1, a jp nz, .continue2\@ ld hl, UnnamedText_5ce8e call PrintText ld hl, $d72d set 6, [hl] set 7, [hl] ld hl, UnnamedText_5ce93 ld de, UnnamedText_5ce93 call $3354 ldh a, [$8c] ld [$cf13], a call $336a call $32d7 ld a, $3 ld [$d642], a ld [$da39], a jr .asm_9dba4 ; 0x5ce7b .continue1\@ ; 0x5ce7d ld hl, UnnamedText_5ce9d call PrintText jr .asm_9dba4 ; 0x5ce83 .continue2\@ ; 0x5ce85f ld hl, FightingDojoText8 call PrintText .asm_9dba4 ; 0x5ce8b jp TextScriptEnd UnnamedText_5ce8e: ; 0x5ce8e TX_FAR _UnnamedText_5ce8e db $50 ; 0x5ce8e + 5 bytes UnnamedText_5ce93: ; 0x5ce93 TX_FAR _UnnamedText_5ce93 db $50 ; 0x5ce93 + 5 bytes FightingDojoText8: ; 0x5ce98 TX_FAR _UnnamedText_5ce98 db $50 ; 0x5ce98 + 5 bytes UnnamedText_5ce9d: ; 0x5ce9d TX_FAR _UnnamedText_5ce9d db $50 ; 0x5ce9d + 5 bytes FightingDojoText2: ; 0x5cea2 db $08 ; asm ld hl, FightingDojoTrainerHeader0 call LoadTrainerHeader jp TextScriptEnd FightingDojoBattleText1: ; 0x5ceac TX_FAR _FightingDojoBattleText1 db $50 ; 0x5ceac + 5 bytes FightingDojoEndBattleText1: ; 0x5ceb1 TX_FAR _FightingDojoEndBattleText1 db $50 ; 0x5ceb1 + 5 bytes FightingDojoAfterBattleText1: ; 0x5ceb6 TX_FAR _FightingDojoAfterBattleText1 db $50 ; 0x5ceb6 + 5 bytes FightingDojoText3: ; 0x5cebb db $08 ; asm ld hl, FightingDojoTrainerHeader1 call LoadTrainerHeader jp TextScriptEnd FightingDojoBattleText2: ; 0x5cec5 TX_FAR _FightingDojoBattleText2 db $50 ; 0x5cec5 + 5 bytes FightingDojoEndBattleText2: ; 0x5ceca TX_FAR _FightingDojoEndBattleText2 db $50 ; 0x5ceca + 5 bytes FightingDojoAfterBattleText2: ; 0x5cecf TX_FAR _FightingDojoAfterBattleText2 db $50 ; 0x5cecf + 5 bytes FightingDojoText4: ; 0x5ced4 db $08 ; asm ld hl, FightingDojoTrainerHeader2 call LoadTrainerHeader jp TextScriptEnd FightingDojoBattleText3: ; 0x5cede TX_FAR _FightingDojoBattleText3 db $50 ; 0x5cede + 5 bytes FightingDojoEndBattleText3: ; 0x5cee3 TX_FAR _FightingDojoEndBattleText3 db $50 ; 0x5cee3 + 5 bytes FightingDojoAfterBattleText3: ; 0x5cee8 TX_FAR _FightingDojoAfterBattleText3 db $50 ; 0x5cee8 + 5 bytes FightingDojoText5: ; 0x5ceed db $08 ; asm ld hl, FightingDojoTrainerHeader3 call LoadTrainerHeader jp TextScriptEnd FightingDojoBattleText4: ; 0x5cef7 TX_FAR _FightingDojoBattleText4 db $50 ; 0x5cef7 + 5 bytes FightingDojoEndBattleText4: ; 0x5cefc TX_FAR _FightingDojoEndBattleText4 db $50 ; 0x5cefc + 5 bytes FightingDojoAfterBattleText4: ; 0x5cf01 TX_FAR _FightingDojoAfterBattleText4 db $50 ; 0x5cf01 + 5 bytes FightingDojoText6: ; 0x5cf06 db $08 ; asm ld a, [$d7b1] and $c0 jr z, .asm_f8e28 ; 0x5cf0c ld hl, UnnamedText_5cf96 call PrintText jr .asm_3a2c8 ; 0x5cf14 .asm_f8e28 ; 0x5cf16 ld a, $2b call $349b ld hl, UnnamedText_5cf49 call PrintText call $35ec ld a, [$cc26] and a jr nz, .asm_3a2c8 ; 0x5cf28 ld a, [$cf91] ld b, a ld c, 30 call GivePokemon jr nc, .asm_3a2c8 ; 0x5cf33 ld a, $4a ld [$cc4d], a ld a, $11 call Predef ld hl, $d7b1 set 6, [hl] set 0, [hl] .asm_3a2c8 ; 0x5cf46 jp TextScriptEnd UnnamedText_5cf49: ; 0x5cf49 TX_FAR _UnnamedText_5cf49 db $50 ; 0x5cf49 + 5 bytes FightingDojoText7: ; 0x5cf4e db $08 ; asm ld a, [$d7b1] and $c0 jr z, .asm_170a9 ; 0x5cf54 ld hl, UnnamedText_5cf96 call PrintText jr .asm_f1f47 ; 0x5cf5c .asm_170a9 ; 0x5cf5e ld a, $2c call $349b ld hl, UnnamedText_5cf91 call PrintText call $35ec ld a, [$cc26] and a jr nz, .asm_f1f47 ; 0x5cf70 ld a, [$cf91] ld b, a ld c,30 call GivePokemon jr nc, .asm_f1f47 ; 0x5cf7b ld hl, $d7b1 set 7, [hl] set 0, [hl] ld a, $4b ld [$cc4d], a ld a, $11 call Predef .asm_f1f47 ; 0x5cf8e jp TextScriptEnd UnnamedText_5cf91: ; 0x5cf91 TX_FAR _UnnamedText_5cf91 db $50 ; 0x5cf91 + 5 bytes UnnamedText_5cf96: ; 0x5cf96 TX_FAR _UnnamedText_5cf96 db $50 ; 0x5cf96 + 5 bytes FightingDojoObject: ; 0x5cf9b (size=72) db $3 ; border tile db $2 ; warps db $b, $4, $1, $ff db $b, $5, $1, $ff db $0 ; signs db $7 ; people db SPRITE_HIKER, $3 + 4, $5 + 4, $ff, $d0, $41, BLACKBELT + $C8, $1 ; trainer db SPRITE_HIKER, $4 + 4, $3 + 4, $ff, $d3, $42, BLACKBELT + $C8, $2 ; trainer db SPRITE_HIKER, $6 + 4, $3 + 4, $ff, $d3, $43, BLACKBELT + $C8, $3 ; trainer db SPRITE_HIKER, $5 + 4, $5 + 4, $ff, $d2, $44, BLACKBELT + $C8, $4 ; trainer db SPRITE_HIKER, $7 + 4, $5 + 4, $ff, $d2, $45, BLACKBELT + $C8, $5 ; trainer db SPRITE_BALL, $1 + 4, $4 + 4, $ff, $ff, $6 ; person db SPRITE_BALL, $1 + 4, $5 + 4, $ff, $ff, $7 ; person ; warp-to EVENT_DISP $5, $b, $4 EVENT_DISP $5, $b, $5 FightingDojoBlocks: ; 0x5cfe3 30 INCBIN "maps/fightingdojo.blk" SaffronGym_h: ; 0x5d001 to 0x5d00d (12 bytes) (id=178) db $16 ; tileset db SAFFRON_GYM_HEIGHT, SAFFRON_GYM_WIDTH ; dimensions (y, x) dw SaffronGymBlocks, SaffronGymTexts, SaffronGymScript ; blocks, texts, scripts db $00 ; connections dw SaffronGymObject ; objects SaffronGymScript: ; 0x5d00d ld hl, $d126 bit 6, [hl] res 6, [hl] call nz, .extra call $3c3c ld hl, $50c3 ld de, $5053 ld a, [$d65c] call $3160 ld [$d65c], a ret ; 0x5d02a .extra INCBIN "baserom.gbc",$5d02a,$81 SaffronGymTexts: ; 0x5d0ab dw SaffronGymText1, SaffronGymText2, SaffronGymText3, SaffronGymText4, SaffronGymText5, SaffronGymText6, SaffronGymText7, SaffronGymText8, SaffronGymText9, SaffronGymText10, SaffronGymText11, SaffronGymText12 SaffronGymTrainerHeaders: SaffronGymTrainerHeader0: ; 0x5d0c3 db $2 ; flag's bit db ($3 << 4) ; trainer's view range dw $d7b3 ; flag's byte dw SaffronGymBattleText1 ; 0x51f0 TextBeforeBattle dw SaffronGymAfterBattleText1 ; 0x51fa TextAfterBattle dw SaffronGymEndBattleText1 ; 0x51f5 TextEndBattle dw SaffronGymEndBattleText1 ; 0x51f5 TextEndBattle ; 0x5d0cf SaffronGymTrainerHeader1: ; 0x5d0cf db $3 ; flag's bit db ($3 << 4) ; trainer's view range dw $d7b3 ; flag's byte dw SaffronGymBattleText2 ; 0x51ff TextBeforeBattle dw SaffronGymAfterBattleText2 ; 0x5209 TextAfterBattle dw SaffronGymEndBattleText2 ; 0x5204 TextEndBattle dw SaffronGymEndBattleText2 ; 0x5204 TextEndBattle ; 0x5d0db SaffronGymTrainerHeader2: ; 0x5d0db db $4 ; flag's bit db ($3 << 4) ; trainer's view range dw $d7b3 ; flag's byte dw SaffronGymBattleText3 ; 0x520e TextBeforeBattle dw SaffronGymAfterBattleText3 ; 0x5218 TextAfterBattle dw SaffronGymEndBattleText3 ; 0x5213 TextEndBattle dw SaffronGymEndBattleText3 ; 0x5213 TextEndBattle ; 0x5d0e7 SaffronGymTrainerHeader3: ; 0x5d0e7 db $5 ; flag's bit db ($3 << 4) ; trainer's view range dw $d7b3 ; flag's byte dw SaffronGymBattleText4 ; 0x521d TextBeforeBattle dw SaffronGymAfterBattleText4 ; 0x5227 TextAfterBattle dw SaffronGymEndBattleText4 ; 0x5222 TextEndBattle dw SaffronGymEndBattleText4 ; 0x5222 TextEndBattle ; 0x5d0f3 SaffronGymTrainerHeader4: ; 0x5d0f3 db $6 ; flag's bit db ($3 << 4) ; trainer's view range dw $d7b3 ; flag's byte dw SaffronGymBattleText5 ; 0x522c TextBeforeBattle dw SaffronGymAfterBattleText5 ; 0x5236 TextAfterBattle dw SaffronGymEndBattleText5 ; 0x5231 TextEndBattle dw SaffronGymEndBattleText5 ; 0x5231 TextEndBattle ; 0x5d0ff SaffronGymTrainerHeader5: ; 0x5d0ff db $7 ; flag's bit db ($3 << 4) ; trainer's view range dw $d7b3 ; flag's byte dw SaffronGymBattleText6 ; 0x523b TextBeforeBattle dw SaffronGymAfterBattleText6 ; 0x5245 TextAfterBattle dw SaffronGymEndBattleText6 ; 0x5240 TextEndBattle dw SaffronGymEndBattleText6 ; 0x5240 TextEndBattle ; 0x5d10b SaffronGymTrainerHeader6: ; 0x5d10b db $8 ; flag's bit db ($3 << 4) ; trainer's view range dw $d7b3 ; flag's byte dw SaffronGymBattleText7 ; 0x524a TextBeforeBattle dw SaffronGymAfterBattleText7 ; 0x5254 TextAfterBattle dw SaffronGymEndBattleText7 ; 0x524f TextEndBattle dw SaffronGymEndBattleText7 ; 0x524f TextEndBattle ; 0x5d117 db $ff SaffronGymText1: ; 0x5d118 db $08 ; asm ld a, [$d7b3] bit 1, a jr z, .asm_e3544 ; 0x5d11e bit 0, a jr nz, .asm_8d2f6 ; 0x5d122 call z, $5068 call DisableWaitingAfterTextDisplay jr .asm_34c2c ; 0x5d12a .asm_8d2f6 ; 0x5d12c ld hl, UnnamedText_5d16e call PrintText jr .asm_34c2c ; 0x5d132 .asm_e3544 ; 0x5d134 ld hl, UnnamedText_5d162 call PrintText ld hl, $d72d set 6, [hl] set 7, [hl] ld hl, UnnamedText_5d167 ld de, UnnamedText_5d167 call $3354 ldh a, [$8c] ld [$cf13], a call $336a call $32d7 ld a, $6 ld [$d05c], a ld a, $3 ld [$d65c], a .asm_34c2c ; 0x5d15f jp TextScriptEnd UnnamedText_5d162: ; 0x5d162 TX_FAR _UnnamedText_5d162 db $50 ; 0x5d162 + 5 bytes UnnamedText_5d167: ; 0x5d167 TX_FAR _UnnamedText_5d167 ; 0xa1c73 db $11 ; play same sound as red giving oak parcel db $6 ; wait for keypress db $50 ; 0x5d16e UnnamedText_5d16e: ; 0x5d16e TX_FAR _UnnamedText_5d16e db $50 ; 0x5d16e + 5 bytes SaffronGymText10: ; 0x5d173 TX_FAR _UnnamedText_5d173 db $50 ; 0x5d173 + 5 bytes SaffronGymText11: ; 0x5d178 TX_FAR ReceivedTM46Text db $b TX_FAR _TM46ExplanationText db $50 SaffronGymText12: ; 0x5d182 TX_FAR _TM46NoRoomText ; pack full db $50 ; 0x5d182 + 5 bytes SaffronGymText2: ; 0x5d187 db $08 ; asm ld hl, SaffronGymTrainerHeader0 call LoadTrainerHeader jp TextScriptEnd SaffronGymText3: ; 0x5d191 db $08 ; asm ld hl, SaffronGymTrainerHeader1 call LoadTrainerHeader jp TextScriptEnd SaffronGymText4: ; 0x5d19b db $08 ; asm ld hl, SaffronGymTrainerHeader2 call LoadTrainerHeader jp TextScriptEnd SaffronGymText5: ; 0x5d1a5 db $08 ; asm ld hl, SaffronGymTrainerHeader3 call LoadTrainerHeader jp TextScriptEnd SaffronGymText6: ; 0x5d1af db $08 ; asm ld hl, SaffronGymTrainerHeader4 call LoadTrainerHeader jp TextScriptEnd SaffronGymText7: ; 0x5d1b9 db $08 ; asm ld hl, SaffronGymTrainerHeader5 call LoadTrainerHeader jp TextScriptEnd SaffronGymText8: ; 0x5d1c3 db $08 ; asm ld hl, SaffronGymTrainerHeader6 call LoadTrainerHeader jp TextScriptEnd SaffronGymText9: ; 0x5d1cd db $08 ; asm ld a, [$d7b3] bit 1, a jr nz, .asm_13f3c ; 0x5d1d3 ld hl, UnnamedText_5d1e6 call PrintText jr .asm_e9907 ; 0x5d1db .asm_13f3c ; 0x5d1dd ld hl, UnnamedText_5d1eb call PrintText .asm_e9907 ; 0x5d1e3 jp TextScriptEnd UnnamedText_5d1e6: ; 0x5d1e6 TX_FAR _UnnamedText_5d1e6 db $50 ; 0x5d1e6 + 5 bytes UnnamedText_5d1eb: ; 0x5d1eb TX_FAR _UnnamedText_5d1eb db $50 ; 0x5d1eb + 5 bytes SaffronGymBattleText1: ; 0x5d1f0 TX_FAR _SaffronGymBattleText1 db $50 ; 0x5d1f0 + 5 bytes SaffronGymEndBattleText1: ; 0x5d1f5 TX_FAR _SaffronGymEndBattleText1 db $50 ; 0x5d1f5 + 5 bytes SaffronGymAfterBattleText1: ; 0x5d1fa TX_FAR _SaffronGymAfterBattleText1 db $50 ; 0x5d1fa + 5 bytes SaffronGymBattleText2: ; 0x5d1ff TX_FAR _SaffronGymBattleText2 db $50 ; 0x5d1ff + 5 bytes SaffronGymEndBattleText2: ; 0x5d204 TX_FAR _SaffronGymEndBattleText2 db $50 ; 0x5d204 + 5 bytes SaffronGymAfterBattleText2: ; 0x5d209 TX_FAR _SaffronGymAfterBattleText2 db $50 ; 0x5d209 + 5 bytes SaffronGymBattleText3: ; 0x5d20e TX_FAR _SaffronGymBattleText3 db $50 ; 0x5d20e + 5 bytes SaffronGymEndBattleText3: ; 0x5d213 TX_FAR _SaffronGymEndBattleText3 db $50 ; 0x5d213 + 5 bytes SaffronGymAfterBattleText3: ; 0x5d218 TX_FAR _SaffronGymAfterBattleText3 db $50 ; 0x5d218 + 5 bytes SaffronGymBattleText4: ; 0x5d21d TX_FAR _SaffronGymBattleText4 db $50 ; 0x5d21d + 5 bytes SaffronGymEndBattleText4: ; 0x5d222 TX_FAR _SaffronGymEndBattleText4 db $50 ; 0x5d222 + 5 bytes SaffronGymAfterBattleText4: ; 0x5d227 TX_FAR _SaffronGymAfterBattleText4 db $50 ; 0x5d227 + 5 bytes SaffronGymBattleText5: ; 0x5d22c TX_FAR _SaffronGymBattleText5 db $50 ; 0x5d22c + 5 bytes SaffronGymEndBattleText5: ; 0x5d231 TX_FAR _SaffronGymEndBattleText5 db $50 ; 0x5d231 + 5 bytes SaffronGymAfterBattleText5: ; 0x5d236 TX_FAR _SaffronGymAfterBattleText5 db $50 ; 0x5d236 + 5 bytes SaffronGymBattleText6: ; 0x5d23b TX_FAR _SaffronGymBattleText6 db $50 ; 0x5d23b + 5 bytes SaffronGymEndBattleText6: ; 0x5d240 TX_FAR _SaffronGymEndBattleText6 db $50 ; 0x5d240 + 5 bytes SaffronGymAfterBattleText6: ; 0x5d245 TX_FAR _SaffronGymAfterBattleText6 db $50 ; 0x5d245 + 5 bytes SaffronGymBattleText7: ; 0x5d24a TX_FAR _SaffronGymBattleText7 db $50 ; 0x5d24a + 5 bytes SaffronGymEndBattleText7: ; 0x5d24f TX_FAR _SaffronGymEndBattleText7 db $50 ; 0x5d24f + 5 bytes SaffronGymAfterBattleText7: ; 0x5d254 TX_FAR _SaffronGymAfterBattleText7 db $50 ; 0x5d254 + 5 bytes SaffronGymObject: ; 0x5d259 (size=330) db $2e ; border tile db $20 ; warps db $11, $8, $2, $ff db $11, $9, $2, $ff db $3, $1, $16, SAFFRON_GYM db $3, $5, $f, SAFFRON_GYM db $5, $1, $12, SAFFRON_GYM db $5, $5, $8, SAFFRON_GYM db $9, $1, $1b, SAFFRON_GYM db $9, $5, $10, SAFFRON_GYM db $b, $1, $5, SAFFRON_GYM db $b, $5, $d, SAFFRON_GYM db $f, $1, $17, SAFFRON_GYM db $f, $5, $1e, SAFFRON_GYM db $11, $1, $11, SAFFRON_GYM db $11, $5, $9, SAFFRON_GYM db $3, $9, $1a, SAFFRON_GYM db $3, $b, $3, SAFFRON_GYM db $5, $9, $7, SAFFRON_GYM db $5, $b, $c, SAFFRON_GYM db $b, $b, $4, SAFFRON_GYM db $f, $b, $1f, SAFFRON_GYM db $3, $f, $18, SAFFRON_GYM db $3, $13, $1c, SAFFRON_GYM db $5, $f, $2, SAFFRON_GYM db $5, $13, $a, SAFFRON_GYM db $9, $f, $14, SAFFRON_GYM db $9, $13, $1d, SAFFRON_GYM db $b, $f, $e, SAFFRON_GYM db $b, $13, $6, SAFFRON_GYM db $f, $f, $15, SAFFRON_GYM db $f, $13, $19, SAFFRON_GYM db $11, $f, $b, SAFFRON_GYM db $11, $13, $13, SAFFRON_GYM db $0 ; signs db $9 ; people db SPRITE_GIRL, $8 + 4, $9 + 4, $ff, $d0, $41, SABRINA + $C8, $1 ; trainer db SPRITE_MEDIUM, $1 + 4, $a + 4, $ff, $d0, $42, CHANNELER + $C8, $16 ; trainer db SPRITE_BUG_CATCHER, $1 + 4, $11 + 4, $ff, $d0, $43, PSYCHIC_TR + $C8, $1 ; trainer db SPRITE_MEDIUM, $7 + 4, $3 + 4, $ff, $d0, $44, CHANNELER + $C8, $17 ; trainer db SPRITE_BUG_CATCHER, $7 + 4, $11 + 4, $ff, $d0, $45, PSYCHIC_TR + $C8, $2 ; trainer db SPRITE_MEDIUM, $d + 4, $3 + 4, $ff, $d0, $46, CHANNELER + $C8, $18 ; trainer db SPRITE_BUG_CATCHER, $d + 4, $11 + 4, $ff, $d0, $47, PSYCHIC_TR + $C8, $3 ; trainer db SPRITE_BUG_CATCHER, $1 + 4, $3 + 4, $ff, $d0, $48, PSYCHIC_TR + $C8, $4 ; trainer db SPRITE_GYM_HELPER, $f + 4, $a + 4, $ff, $d0, $9 ; person ; warp-to EVENT_DISP $a, $11, $8 EVENT_DISP $a, $11, $9 EVENT_DISP $a, $3, $1 ; SAFFRON_GYM EVENT_DISP $a, $3, $5 ; SAFFRON_GYM EVENT_DISP $a, $5, $1 ; SAFFRON_GYM EVENT_DISP $a, $5, $5 ; SAFFRON_GYM EVENT_DISP $a, $9, $1 ; SAFFRON_GYM EVENT_DISP $a, $9, $5 ; SAFFRON_GYM EVENT_DISP $a, $b, $1 ; SAFFRON_GYM EVENT_DISP $a, $b, $5 ; SAFFRON_GYM EVENT_DISP $a, $f, $1 ; SAFFRON_GYM EVENT_DISP $a, $f, $5 ; SAFFRON_GYM EVENT_DISP $a, $11, $1 ; SAFFRON_GYM EVENT_DISP $a, $11, $5 ; SAFFRON_GYM EVENT_DISP $a, $3, $9 ; SAFFRON_GYM EVENT_DISP $a, $3, $b ; SAFFRON_GYM EVENT_DISP $a, $5, $9 ; SAFFRON_GYM EVENT_DISP $a, $5, $b ; SAFFRON_GYM EVENT_DISP $a, $b, $b ; SAFFRON_GYM EVENT_DISP $a, $f, $b ; SAFFRON_GYM EVENT_DISP $a, $3, $f ; SAFFRON_GYM EVENT_DISP $a, $3, $13 ; SAFFRON_GYM EVENT_DISP $a, $5, $f ; SAFFRON_GYM EVENT_DISP $a, $5, $13 ; SAFFRON_GYM EVENT_DISP $a, $9, $f ; SAFFRON_GYM EVENT_DISP $a, $9, $13 ; SAFFRON_GYM EVENT_DISP $a, $b, $f ; SAFFRON_GYM EVENT_DISP $a, $b, $13 ; SAFFRON_GYM EVENT_DISP $a, $f, $f ; SAFFRON_GYM EVENT_DISP $a, $f, $13 ; SAFFRON_GYM EVENT_DISP $a, $11, $f ; SAFFRON_GYM EVENT_DISP $a, $11, $13 ; SAFFRON_GYM SaffronGymBlocks: ; 0x5d3a3 90 INCBIN "maps/saffrongym.blk" SaffronMart_h: ; 0x5d3fd to 0x5d409 (12 bytes) (id=180) db $02 ; tileset db SAFFRON_MART_HEIGHT, SAFFRON_MART_WIDTH ; dimensions (y, x) dw SaffronMartBlocks, SaffronMartTexts, SaffronMartScript ; blocks, texts, scripts db $00 ; connections dw SaffronMartObject ; objects SaffronMartScript: ; 0x5d409 jp $3c3c ; 0x5d40c SaffronMartTexts: ; 0x5d40c dw SaffronMartText1, SaffronMartText2, SaffronMartText3 SaffronMartText2: ; 0x5d412 TX_FAR _SaffronMartText2 db $50 SaffronMartText3: ; 0x5d417 TX_FAR _SaffronMartText3 db $50 SaffronMartObject: ; 0x5d41c (size=38) db $0 ; border tile db $2 ; warps db $7, $3, $4, $ff db $7, $4, $4, $ff db $0 ; signs db $3 ; people db SPRITE_MART_GUY, $5 + 4, $0 + 4, $ff, $d3, $1 ; person db SPRITE_BLACK_HAIR_BOY_2, $2 + 4, $4 + 4, $ff, $ff, $2 ; person db SPRITE_LASS, $5 + 4, $6 + 4, $fe, $0, $3 ; person ; warp-to EVENT_DISP $4, $7, $3 EVENT_DISP $4, $7, $4 SilphCo1_h: ; 0x5d442 to 0x5d44e (12 bytes) (id=181) db $16 ; tileset db SILPH_CO_1F_HEIGHT, SILPH_CO_1F_WIDTH ; dimensions (y, x) dw SilphCo1Blocks, SilphCo1Texts, SilphCo1Script ; blocks, texts, scripts db $00 ; connections dw SilphCo1Object ; objects SilphCo1Script: ; 0x5d44e call $3c3c ld a, [$d838] bit 7, a ret z ld hl, $d7b9 bit 7, [hl] set 7, [hl] ret nz ld a, $4c ld [$cc4d], a ld a, $15 jp $3e6d ; 0x5d469 SilphCo1Texts: ; 0x5d469 dw SilphCo1Text1 SilphCo1Text1: ; 0x5d46b TX_FAR _SilphCo1Text1 db $50 SilphCo1Object: ; 0x5d470 (size=50) db $2e ; border tile db $5 ; warps db $11, $a, $5, $ff db $11, $b, $5, $ff db $0, $1a, $0, SILPH_CO_2F db $0, $14, $0, SILPH_CO_ELEVATOR db $a, $10, $6, SILPH_CO_3F db $0 ; signs db $1 ; people db SPRITE_CABLE_CLUB_WOMAN, $2 + 4, $4 + 4, $ff, $d0, $1 ; person ; warp-to EVENT_DISP $f, $11, $a EVENT_DISP $f, $11, $b EVENT_DISP $f, $0, $1a ; SILPH_CO_2F EVENT_DISP $f, $0, $14 ; SILPH_CO_ELEVATOR EVENT_DISP $f, $a, $10 ; SILPH_CO_3F SilphCo1Blocks: ; 0x5d4a2 135 INCBIN "maps/silphco1.blk" SaffronPokecenter_h: ; 0x5d529 to 0x5d535 (12 bytes) (id=182) db $06 ; tileset db SAFFRON_POKECENTER_HEIGHT, SAFFRON_POKECENTER_WIDTH ; dimensions (y, x) dw SaffronPokecenterBlocks, SaffronPokecenterTexts, SaffronPokecenterScript ; blocks, texts, scripts db $00 ; connections dw SaffronPokecenterObject ; objects SaffronPokecenterScript: ; 0x5d535 call $22fa jp $3c3c ; 0x5d53b SaffronPokecenterTexts: dw SaffronPokecenterText1, SaffronPokecenterText2, SaffronPokecenterText3, SaffronPokecenterText4 SaffronPokecenterText1: ; 0x5d542 db $ff SaffronPokecenterText2: ; 0x5d543 TX_FAR _SaffronPokecenterText1 db $50 SaffronPokecenterText3: ; 0x5d549 TX_FAR _SaffronPokecenterText3 db $50 SaffronPokecenterText4: db $f6 SaffronPokecenterObject: ; 0x5d54f (size=44) db $0 ; border tile db $2 ; warps db $7, $3, $6, $ff db $7, $4, $6, $ff db $0 ; signs db $4 ; people db SPRITE_NURSE, $1 + 4, $3 + 4, $ff, $d0, $1 ; person db SPRITE_FOULARD_WOMAN, $5 + 4, $5 + 4, $ff, $ff, $2 ; person db SPRITE_GENTLEMAN, $3 + 4, $8 + 4, $ff, $d0, $3 ; person db SPRITE_CABLE_CLUB_WOMAN, $2 + 4, $b + 4, $ff, $d0, $4 ; person ; warp-to EVENT_DISP $7, $7, $3 EVENT_DISP $7, $7, $4 ViridianForestexit_h: ; 0x5d57b to 0x5d587 (12 bytes) (id=47) db $09 ; tileset db VIRIDIAN_FOREST_EXIT_HEIGHT, VIRIDIAN_FOREST_EXIT_WIDTH ; dimensions (y, x) dw ViridianForestexitBlocks, ViridianForestexitTexts, ViridianForestexitScript ; blocks, texts, scripts db $00 ; connections dw ViridianForestexitObject ; objects ViridianForestexitScript: ; 0x5d587 jp $3c3c ; 0x5d58a ViridianForestexitTexts: ; 0x5d58a dw ViridianForestexitText1, ViridianForestexitText2 ViridianForestexitText1: ; 0x5d58e TX_FAR _ViridianForestexitText1 db $50 ViridianForestexitText2: ; 0x5d593 TX_FAR _ViridianForestexitText2 db $50 ViridianForestexitObject: ; 0x5d598 (size=48) db $a ; border tile db $4 ; warps db $0, $4, $1, $ff db $0, $5, $1, $ff db $7, $4, $0, VIRIDIAN_FOREST db $7, $5, $0, VIRIDIAN_FOREST db $0 ; signs db $2 ; people db SPRITE_BLACK_HAIR_BOY_2, $2 + 4, $3 + 4, $ff, $ff, $1 ; person db SPRITE_OLD_PERSON, $5 + 4, $2 + 4, $ff, $ff, $2 ; person ; warp-to EVENT_DISP $5, $0, $4 EVENT_DISP $5, $0, $5 EVENT_DISP $5, $7, $4 ; VIRIDIAN_FOREST EVENT_DISP $5, $7, $5 ; VIRIDIAN_FOREST Route2Gate_h: ; 0x5d5c8 to 0x5d5d4 (12 bytes) (id=49) db $0c ; tileset db ROUTE_2_GATE_HEIGHT, ROUTE_2_GATE_WIDTH ; dimensions (y, x) dw Route2GateBlocks, Route2GateTexts, Route2GateScript ; blocks, texts, scripts db $00 ; connections dw Route2GateObject ; objects Route2GateScript: ; 0x5d5d4 jp $3c3c ; 0x5d5d7 Route2GateTexts: ; 0x5d5d7 dw Route2GateText1, Route2GateText2 Route2GateText1: ; 0x5d5db db $08 ; asm ld a, [$d7c2] bit 0, a jr nz, .asm_6592c ; 0x5d5e1 ld a, $a ldh [$db], a ld a, $c8 ldh [$dc], a ld [$d11e], a call GetItemName ; $2fcf ld hl, $cd6d ld de, $cc5b ld bc, $000d call CopyData ld a, $62 call Predef ldh a, [$db] cp $1 jr nz, .asm_ad646 ; 0x5d606 ld hl, $d7c2 set 0, [hl] .asm_6592c ; 0x5d60d ld hl, UnnamedText_5d616 call PrintText .asm_ad646 ; 0x5d613 jp TextScriptEnd UnnamedText_5d616: ; 0x5d616 TX_FAR _UnnamedText_5d616 db $50 ; 0x5d616 + 5 bytes Route2GateText2: ; 0x5d61b TX_FAR _Route2GateText2 db $50 Route2GateObject: ; 0x5d620 (size=48) db $a ; border tile db $4 ; warps db $0, $4, $3, $ff db $0, $5, $3, $ff db $7, $4, $4, $ff db $7, $5, $4, $ff db $0 ; signs db $2 ; people db SPRITE_OAK_AIDE, $4 + 4, $1 + 4, $ff, $d2, $1 ; person db SPRITE_BUG_CATCHER, $4 + 4, $5 + 4, $fe, $2, $2 ; person ; warp-to EVENT_DISP $5, $0, $4 EVENT_DISP $5, $0, $5 EVENT_DISP $5, $7, $4 EVENT_DISP $5, $7, $5 ViridianForestEntrance_h: ; 0x5d650 to 0x5d65c (12 bytes) (id=50) db $09 ; tileset db VIRIDIAN_FOREST_ENTRANCE_HEIGHT, VIRIDIAN_FOREST_ENTRANCE_WIDTH ; dimensions (y, x) dw ViridianForestEntranceBlocks, ViridianForestEntranceTexts, ViridianForestEntranceScript ; blocks, texts, scripts db $00 ; connections dw ViridianForestEntranceObject ; objects ViridianForestEntranceScript: ; 0x5d65c jp $3c3c ; 0x5d65f ViridianForestEntranceTexts: ; 0x5d65f dw ViridianForestEntranceText1, ViridianForestEntranceText2 ViridianForestEntranceText1: ; 0x5d663 TX_FAR _ViridianForestEntranceText1 db $50 ViridianForestEntranceText2: ; 0x5d668 TX_FAR _ViridianForestEntranceText2 db $50 ViridianForestEntranceObject: ; 0x5d66d (size=48) db $a ; border tile db $4 ; warps db $0, $4, $3, VIRIDIAN_FOREST db $0, $5, $4, VIRIDIAN_FOREST db $7, $4, $5, $ff db $7, $5, $5, $ff db $0 ; signs db $2 ; people db SPRITE_GIRL, $4 + 4, $8 + 4, $ff, $d2, $1 ; person db SPRITE_LITTLE_GIRL, $4 + 4, $2 + 4, $fe, $1, $2 ; person ; warp-to EVENT_DISP $5, $0, $4 ; VIRIDIAN_FOREST EVENT_DISP $5, $0, $5 ; VIRIDIAN_FOREST EVENT_DISP $5, $7, $4 EVENT_DISP $5, $7, $5 UndergroundTunnelEntranceRoute5_h: ; 0x5d69d to 0x5d6a9 (12 bytes) (id=71) db $0c ; tileset db PATH_ENTRANCE_ROUTE_5_HEIGHT, PATH_ENTRANCE_ROUTE_5_WIDTH ; dimensions (y, x) dw UndergroundTunnelEntranceRoute5Blocks, UndergroundTunnelEntranceRoute5Texts, UndergroundTunnelEntranceRoute5Script ; blocks, texts, scripts db $00 ; connections dw UndergroundTunnelEntranceRoute5Object ; objects UndergroundTunnelEntranceRoute5Script: ; 0x5d6a9 ld a, $10 ld [$d365], a ret ; 0x5d6af UndergroundTunnelEntranceRoute5_5d6af: ; 0x5d6af db $50 UndergroundTunnelEntranceRoute5Texts: ; 0x5d6b0 dw UndergroundTunnelEntranceRoute5Text1 UndergroundTunnelEntranceRoute5Text1: ; 0x5d6b2 db $08 ; asm ld a, $9 ld [W_WHICHTRADE], a ld a, $54 call Predef ld hl, UndergroundTunnelEntranceRoute5_5d6af ret UndergroundTunnelEntranceRoute5Object: ; 0x5d6c1 (size=34) db $a ; border tile db $3 ; warps db $7, $3, $3, $ff db $7, $4, $3, $ff db $4, $4, $0, UNDERGROUND_PATH_NS db $0 ; signs db $1 ; people db SPRITE_LITTLE_GIRL, $3 + 4, $2 + 4, $ff, $ff, $1 ; person ; warp-to EVENT_DISP $4, $7, $3 EVENT_DISP $4, $7, $4 EVENT_DISP $4, $4, $4 ; UNDERGROUND_PATH_NS UndergroundTunnelEntranceRoute6_h: ; 0x5d6e3 to 0x5d6ef (12 bytes) (id=74) db $0c ; tileset db PATH_ENTRANCE_ROUTE_6_HEIGHT, PATH_ENTRANCE_ROUTE_6_WIDTH ; dimensions (y, x) dw UndergroundTunnelEntranceRoute6Blocks, UndergroundTunnelEntranceRoute6Texts, UndergroundTunnelEntranceRoute6Script ; blocks, texts, scripts db $00 ; connections dw UndergroundTunnelEntranceRoute6Object ; objects UndergroundTunnelEntranceRoute6Script: ; 0x5d6ef ld a, $11 ld [$d365], a jp $3c3c ; 0x5d6f7 UndergroundTunnelEntranceRoute6Texts: ; 0x5d6f7 dw UndergroundTunnelEntranceRoute6Text1 ;XXX wtf? syntax error on TX_FAR? UndergroundTunnelEntranceRoute6Text1: ; 0x5d6f9 db $17, $cb, $40, $23 ;TX_FAR _UndergroundTunnelEntranceRoute6Text1 ; $cb, $40, $23 db $50 UndergroundTunnelEntranceRoute6Object: ; 0x5d6fe (size=34) db $a ; border tile db $3 ; warps db $7, $3, $3, $ff db $7, $4, $3, $ff db $4, $4, $1, UNDERGROUND_PATH_NS db $0 ; signs db $1 ; people db SPRITE_GIRL, $3 + 4, $2 + 4, $ff, $ff, $1 ; person ; warp-to EVENT_DISP $4, $7, $3 EVENT_DISP $4, $7, $4 EVENT_DISP $4, $4, $4 ; UNDERGROUND_PATH_NS UndergroundPathEntranceRoute7_h: ; 0x5d720 to 0x5d72c (12 bytes) (id=77) db $0c ; tileset db PATH_ENTRANCE_ROUTE_7_HEIGHT, PATH_ENTRANCE_ROUTE_7_WIDTH ; dimensions (y, x) dw UndergroundTunnelEntranceRoute7Blocks, UndergroundPathEntranceRoute7Texts, UndergroundPathEntranceRoute7Script ; blocks, texts, scripts db $00 ; connections dw UndergroundPathEntranceRoute7Object ; objects UndergroundPathEntranceRoute7Script: ; 0x5d72c ld a, $12 ld [$d365], a jp $3c3c ; 0x5d734 UndergroundPathEntranceRoute7Texts: ; 0x5d734 dw UndergroundPathEntranceRoute7Text1 UndergroundPathEntranceRoute7Text1: ; 0x5d736 db $17, $ff, $40, $23 ;TX_FAR _UndergroundPathEntranceRoute7Text1 db $50 UndergroundPathEntranceRoute7Object: ; 0x5d73b (size=34) db $a ; border tile db $3 ; warps db $7, $3, $4, $ff db $7, $4, $4, $ff db $4, $4, $0, UNDERGROUND_PATH_WE db $0 ; signs db $1 ; people db SPRITE_FAT_BALD_GUY, $4 + 4, $2 + 4, $ff, $ff, $1 ; person ; warp-to EVENT_DISP $4, $7, $3 EVENT_DISP $4, $7, $4 EVENT_DISP $4, $4, $4 ; UNDERGROUND_PATH_WE INCBIN "baserom.gbc",$5d75d,$5d773 - $5d75d UnnamedText_5d773: ; 0x5d773 TX_FAR _UnnamedText_5d773 db $50 ; 0x5d773 + 5 bytes UnnamedText_5d778: ; 0x5d778 TX_FAR _UnnamedText_5d778 db $50 ; 0x5d778 + 5 bytes UnnamedText_5d77d: ; 0x5d77d TX_FAR _UnnamedText_5d77d db $50 ; 0x5d77d + 5 bytes UnnamedText_5d782: ; 0x5d782 TX_FAR _UnnamedText_5d782 db $50 ; 0x5d782 + 5 bytes INCBIN "baserom.gbc",$5d787,$28 SilphCo9_h: ; 0x5d7af to 0x5d7bb (12 bytes) (id=233) db $16 ; tileset db SILPH_CO_9F_HEIGHT, SILPH_CO_9F_WIDTH ; dimensions (y, x) dw SilphCo9Blocks, SilphCo9Texts, SilphCo9Script ; blocks, texts, scripts db $00 ; connections dw SilphCo9Object ; objects SilphCo9Script: ; 0x5d7bb call SilphCo9Script_Unknown5d7d1 call $3c3c ld hl, SilphCo9TrainerHeaders ld de, $5885 ld a, [$d64a] call $3160 ld [$d64a], a ret ; 0x5d7d1 SilphCo9Script_Unknown5d7d1: ; 0x5d7d1 INCBIN "baserom.gbc",$5d7d1,$ba SilphCo9Texts: ; 0x5d88b dw SilphCo9Text1, SilphCo9Text2, SilphCo9Text3, SilphCo9Text4 SilphCo9TrainerHeaders: SilphCo9TrainerHeader0: ; 0x5d893 db $2 ; flag's bit db ($4 << 4) ; trainer's view range dw $d833 ; flag's byte dw SilphCo9BattleText1 ; 0x5912 TextBeforeBattle dw SilphCo9AfterBattleText1 ; 0x591c TextAfterBattle dw SilphCo9EndBattleText1 ; 0x5917 TextEndBattle dw SilphCo9EndBattleText1 ; 0x5917 TextEndBattle ; 0x5d89f SilphCo9TrainerHeader1: ; 0x5d89f db $3 ; flag's bit db ($2 << 4) ; trainer's view range dw $d833 ; flag's byte dw SilphCo9BattleText2 ; 0x5921 TextBeforeBattle dw SilphCo9AfterBattleText2 ; 0x592b TextAfterBattle dw SilphCo9EndBattleText2 ; 0x5926 TextEndBattle dw SilphCo9EndBattleText2 ; 0x5926 TextEndBattle ; 0x5d8ab SilphCo9TrainerHeader2: ; 0x5d8ab db $4 ; flag's bit db ($4 << 4) ; trainer's view range dw $d833 ; flag's byte dw SilphCo9BattleText3 ; 0x5930 TextBeforeBattle dw SilphCo9AfterBattleText3 ; 0x593a TextAfterBattle dw SilphCo9EndBattleText3 ; 0x5935 TextEndBattle dw SilphCo9EndBattleText3 ; 0x5935 TextEndBattle ; 0x5d8b7 db $ff SilphCo9Text1: ; 0x5d8b8 db $08 ; asm ld a, [$d838] bit 7, a jr nz, .asm_a14c3 ; 0x5d8be ld hl, UnnamedText_5d8e5 call PrintText ld a, $7 call Predef call $20d8 call Delay3 call $20f6 ld hl, UnnamedText_5d8ea call PrintText jr .asm_b6e28 ; 0x5d8da .asm_a14c3 ; 0x5d8dc ld hl, UnnamedText_5d8ef call PrintText .asm_b6e28 ; 0x5d8e2 jp TextScriptEnd UnnamedText_5d8e5: ; 0x5d8e5 TX_FAR _UnnamedText_5d8e5 db $50 ; 0x5d8e5 + 5 bytes UnnamedText_5d8ea: ; 0x5d8ea TX_FAR _UnnamedText_5d8ea db $50 ; 0x5d8ea + 5 bytes UnnamedText_5d8ef: ; 0x5d8ef TX_FAR _UnnamedText_5d8ef db $50 ; 0x5d8ef + 5 bytes SilphCo9Text2: ; 0x5d8f4 db $08 ; asm ld hl, SilphCo9TrainerHeader0 call LoadTrainerHeader jp TextScriptEnd SilphCo9Text3: ; 0x5d8fe db $08 ; asm ld hl, SilphCo9TrainerHeader1 call LoadTrainerHeader jp TextScriptEnd SilphCo9Text4: ; 0x5d908 db $08 ; asm ld hl, SilphCo9TrainerHeader2 call LoadTrainerHeader jp TextScriptEnd SilphCo9BattleText1: ; 0x5d912 TX_FAR _SilphCo9BattleText1 db $50 ; 0x5d912 + 5 bytes SilphCo9EndBattleText1: ; 0x5d917 TX_FAR _SilphCo9EndBattleText1 db $50 ; 0x5d917 + 5 bytes SilphCo9AfterBattleText1: ; 0x5d91c TX_FAR _SilphCo9AfterBattleText1 db $50 ; 0x5d91c + 5 bytes SilphCo9BattleText2: ; 0x5d921 TX_FAR _SilphCo9BattleText2 db $50 ; 0x5d921 + 5 bytes SilphCo9EndBattleText2: ; 0x5d926 TX_FAR _SilphCo9EndBattleText2 db $50 ; 0x5d926 + 5 bytes SilphCo9AfterBattleText2: ; 0x5d92b TX_FAR _SilphCo9AfterBattleText2 db $50 ; 0x5d92b + 5 bytes SilphCo9BattleText3: ; 0x5d930 TX_FAR _SilphCo9BattleText3 db $50 ; 0x5d930 + 5 bytes SilphCo9EndBattleText3: ; 0x5d935 TX_FAR _SilphCo9EndBattleText3 db $50 ; 0x5d935 + 5 bytes SilphCo9AfterBattleText3: ; 0x5d93a TX_FAR _SilphCo9AfterBattleText3 db $50 ; 0x5d93a + 5 bytes SilphCo9Object: ; 0x5d93f (size=74) db $2e ; border tile db $5 ; warps db $0, $e, $0, SILPH_CO_10F db $0, $10, $0, SILPH_CO_8F db $0, $12, $0, SILPH_CO_ELEVATOR db $3, $9, $7, SILPH_CO_3F db $f, $11, $4, SILPH_CO_5F db $0 ; signs db $4 ; people db SPRITE_NURSE, $e + 4, $3 + 4, $ff, $d0, $1 ; person db SPRITE_ROCKET, $4 + 4, $2 + 4, $ff, $d1, $42, ROCKET + $C8, $25 ; trainer db SPRITE_OAK_AIDE, $d + 4, $15 + 4, $ff, $d0, $43, SCIENTIST + $C8, $a ; trainer db SPRITE_ROCKET, $10 + 4, $d + 4, $ff, $d1, $44, ROCKET + $C8, $26 ; trainer ; warp-to EVENT_DISP $d, $0, $e ; SILPH_CO_10F EVENT_DISP $d, $0, $10 ; SILPH_CO_8F EVENT_DISP $d, $0, $12 ; SILPH_CO_ELEVATOR EVENT_DISP $d, $3, $9 ; SILPH_CO_3F EVENT_DISP $d, $f, $11 ; SILPH_CO_5F SilphCo9Blocks: ; 0x5d989 117 INCBIN "maps/silphco9.blk" VictoryRoad1_h: ; 0x5d9fe to 0x5da0a (12 bytes) (id=108) db $11 ; tileset db VICTORY_ROAD_1_HEIGHT, VICTORY_ROAD_1_WIDTH ; dimensions (y, x) dw VictoryRoad1Blocks, VictoryRoad1Texts, VictoryRoad1Script ; blocks, texts, scripts db $00 ; connections dw VictoryRoad1Object ; objects VictoryRoad1Script: ; 0x5da0a ld hl, $d126 bit 5, [hl] res 5, [hl] call nz, .next call $3c3c ld hl, VictoryRoad1TrainerHeaders ld de, $5a3a ld a, [$d651] call $3160 ld [$d651], a ret ; 0x5da27 .next INCBIN "baserom.gbc",$5da27,$38 VictoryRoad1Texts: ; 0x5da5f dw VictoryRoad1Text1, VictoryRoad1Text2, VictoryRoad1Text3, VictoryRoad1Text4, VictoryRoad1Text5, VictoryRoad1Text6, VictoryRoad1Text7 VictoryRoad1TrainerHeaders: VictoryRoad1TrainerHeader0: ; 0x5da6d db $1 ; flag's bit db ($2 << 4) ; trainer's view range dw $d869 ; flag's byte dw VictoryRoad1BattleText1 ; 0x5a9a TextBeforeBattle dw VictoryRoad1AfterBattleText1 ; 0x5aa4 TextAfterBattle dw VictoryRoad1EndBattleText1 ; 0x5a9f TextEndBattle dw VictoryRoad1EndBattleText1 ; 0x5a9f TextEndBattle ; 0x5da79 VictoryRoad1TrainerHeader1: ; 0x5da79 db $2 ; flag's bit db ($2 << 4) ; trainer's view range dw $d869 ; flag's byte dw VictoryRoad1BattleText2 ; 0x5aa9 TextBeforeBattle dw VictoryRoad1AfterBattleText2 ; 0x5ab3 TextAfterBattle dw VictoryRoad1EndBattleText2 ; 0x5aae TextEndBattle dw VictoryRoad1EndBattleText2 ; 0x5aae TextEndBattle ; 0x5da85 db $ff VictoryRoad1Text1: ; 0x5da86 db $08 ; asm ld hl, VictoryRoad1TrainerHeader0 call LoadTrainerHeader jp TextScriptEnd VictoryRoad1Text2: ; 0x5da90 db $08 ; asm ld hl, VictoryRoad1TrainerHeader1 call LoadTrainerHeader jp TextScriptEnd VictoryRoad1BattleText1: ; 0x5da9a TX_FAR _VictoryRoad1BattleText1 db $50 ; 0x5da9a + 5 bytes VictoryRoad1EndBattleText1: ; 0x5da9f TX_FAR _VictoryRoad1EndBattleText1 db $50 ; 0x5da9f + 5 bytes VictoryRoad1AfterBattleText1: ; 0x5daa4 TX_FAR _VictoryRoad1AfterBattleText1 db $50 ; 0x5daa4 + 5 bytes VictoryRoad1BattleText2: ; 0x5daa9 TX_FAR _VictoryRoad1BattleText2 db $50 ; 0x5daa9 + 5 bytes VictoryRoad1EndBattleText2: ; 0x5daae TX_FAR _VictoryRoad1EndBattleText2 db $50 ; 0x5daae + 5 bytes VictoryRoad1AfterBattleText2: ; 0x5dab3 TX_FAR _VictoryRoad1AfterBattleText2 db $50 ; 0x5dab3 + 5 bytes VictoryRoad1Object: ; 0x5dab8 (size=76) db $7d ; border tile db $3 ; warps db $11, $8, $2, $ff db $11, $9, $2, $ff db $1, $1, $0, VICTORY_ROAD_2 db $0 ; signs db $7 ; people db SPRITE_LASS, $5 + 4, $7 + 4, $ff, $d3, $41, COOLTRAINER_F + $C8, $5 ; trainer db SPRITE_BLACK_HAIR_BOY_1, $2 + 4, $3 + 4, $ff, $d0, $42, COOLTRAINER_M + $C8, $5 ; trainer db SPRITE_BALL, $0 + 4, $b + 4, $ff, $ff, $83, TM_43 ; item db SPRITE_BALL, $2 + 4, $9 + 4, $ff, $ff, $84, RARE_CANDY ; item db SPRITE_BOULDER, $f + 4, $5 + 4, $ff, $10, $5 ; person db SPRITE_BOULDER, $2 + 4, $e + 4, $ff, $10, $6 ; person db SPRITE_BOULDER, $a + 4, $2 + 4, $ff, $10, $7 ; person ; warp-to EVENT_DISP $a, $11, $8 EVENT_DISP $a, $11, $9 EVENT_DISP $a, $1, $1 ; VICTORY_ROAD_2 VictoryRoad1Blocks: ; 0x5db04 90 INCBIN "maps/victoryroad1.blk" INCBIN "baserom.gbc",$5db5e,$5db81 - $5db5e UnnamedText_5db81: ; 0x5db81 TX_FAR _UnnamedText_5db81 db $50 ; 0x5db81 + 5 bytes INCBIN "baserom.gbc",$5db86,$5dba8 - $5db86 UnnamedText_5dba8: ; 0x5dba8 TX_FAR _UnnamedText_5dba8 db $50 ; 0x5dba8 + 5 bytes INCBIN "baserom.gbc",$5dbad,$5dbbe - $5dbad UnnamedText_5dbbe: ; 0x5dbbe TX_FAR _UnnamedText_5dbbe db $50 ; 0x5dbbe + 5 bytes INCBIN "baserom.gbc",$5dbc3,$5dbd4 - $5dbc3 UnnamedText_5dbd4: ; 0x5dbd4 TX_FAR _UnnamedText_5dbd4 db $50 ; 0x5dbd4 + 5 bytes INCBIN "baserom.gbc",$5dbd9,$5dc9e - $5dbd9 UnnamedText_5dc9e: ; 0x5dc9e TX_FAR _UnnamedText_5dc9e db $50 ; 0x5dc9e + 5 bytes UnnamedText_5dca3: ; 0x5dca3 TX_FAR _UnnamedText_5dca3 db $50 ; 0x5dca3 + 5 bytes INCBIN "baserom.gbc",$5dca8,$5dcde - $5dca8 UnnamedText_5dcde: ; 0x5dcde TX_FAR _UnnamedText_5dcde db $50 ; 0x5dcde + 5 bytes UnnamedText_5dce3: ; 0x5dce3 TX_FAR _UnnamedText_5dce3 db $50 ; 0x5dce3 + 5 bytes UnnamedText_5dce8: ; 0x5dce8 TX_FAR _UnnamedText_5dce8 db $50 ; 0x5dce8 + 5 bytes INCBIN "baserom.gbc",$5dced,$5dda2 - $5dced UnnamedText_5dda2: ; 0x5dda2 TX_FAR _UnnamedText_5dda2 db $50 ; 0x5dda2 + 5 bytes UnnamedText_5dda7: ; 0x5dda7 TX_FAR _UnnamedText_5dda7 db $50 ; 0x5dda7 + 5 bytes INCBIN "baserom.gbc",$5ddac,$5ddd6 - $5ddac UnnamedText_5ddd6: ; 0x5ddd6 TX_FAR _UnnamedText_5ddd6 db $50 ; 0x5ddd6 + 5 bytes UnnamedText_5dddb: ; 0x5dddb TX_FAR _UnnamedText_5dddb db $50 ; 0x5dddb + 5 bytes UnnamedText_5dde0: ; 0x5dde0 TX_FAR _UnnamedText_5dde0 db $50 ; 0x5dde0 + 5 bytes UnnamedText_5dde5: ; 0x5dde5 TX_FAR _UnnamedText_5dde5 db $50 ; 0x5dde5 + 5 bytes UnnamedText_5ddea: ; 0x5ddea TX_FAR _UnnamedText_5ddea db $50 ; 0x5ddea + 5 bytes INCBIN "baserom.gbc",$5ddef,$5ddf7 - $5ddef UnnamedText_5ddf7: ; 0x5ddf7 TX_FAR _UnnamedText_5ddf7 db $50 ; 0x5ddf7 + 5 bytes INCBIN "baserom.gbc",$5ddfc,$5dedb - $5ddfc UnnamedText_5dedb: ; 0x5dedb TX_FAR _UnnamedText_5dedb db $50 ; 0x5dedb + 5 bytes INCBIN "baserom.gbc",$5dee0,53 SECTION "bank18",DATA,BANK[$18] ViridianForestBlocks: INCBIN "maps/viridianforest.blk" UndergroundPathNSBlocks: ; 0x60198 96 INCBIN "maps/undergroundpathns.blk" INCBIN "baserom.gbc",$601f8,$1c8 SSAnne10Blocks: SSAnne9Blocks: ; 0x603c0 96 INCBIN "maps/ssanne9.blk" PokemonTower1_h: ; 0x60420 to 0x6042c (12 bytes) (id=142) db $0f ; tileset db POKEMONTOWER_1_HEIGHT, POKEMONTOWER_1_WIDTH ; dimensions (y, x) dw PokemonTower1Blocks, PokemonTower1Texts, PokemonTower1Script ; blocks, texts, scripts db $00 ; connections dw PokemonTower1Object ; objects PokemonTower1Script: ; 0x6042c jp $3c3c ; 0x6042f PokemonTower1Texts: ; 0x6042f dw PokemonTower1Text1, PokemonTower1Text2, PokemonTower1Text3, PokemonTower1Text4, PokemonTower1Text5 PokemonTower1Text1: ; 0x60439 TX_FAR _PokemonTower1Text1 db $50 PokemonTower1Text2: ; 0x6043e TX_FAR _PokemonTower1Text2 db $50 PokemonTower1Text3: ; 0x60443 TX_FAR _PokemonTower1Text3 db $50 PokemonTower1Text4: ; 0x60448 TX_FAR _PokemonTower1Text4 db $50 PokemonTower1Text5: ; 0x6044d TX_FAR _PokemonTower1Text5 db $50 PokemonTower1Object: ; 0x60452 (size=58) db $1 ; border tile db $3 ; warps db $11, $a, $1, $ff db $11, $b, $1, $ff db $9, $12, $1, POKEMONTOWER_2 db $0 ; signs db $5 ; people db SPRITE_CABLE_CLUB_WOMAN, $d + 4, $f + 4, $ff, $d1, $1 ; person db SPRITE_MOM_GEISHA, $8 + 4, $6 + 4, $ff, $ff, $2 ; person db SPRITE_BALDING_GUY, $c + 4, $8 + 4, $ff, $ff, $3 ; person db SPRITE_GIRL, $7 + 4, $d + 4, $ff, $ff, $4 ; person db SPRITE_MEDIUM, $7 + 4, $11 + 4, $ff, $d2, $5 ; person ; warp-to EVENT_DISP $a, $11, $a EVENT_DISP $a, $11, $b EVENT_DISP $a, $9, $12 ; POKEMONTOWER_2 PokemonTower1Blocks: ; 0x6048c 90 INCBIN "maps/pokemontower1.blk" PokemonTower2_h: ; 0x604e6 to 0x604f2 (12 bytes) (id=143) db $0f ; tileset db POKEMONTOWER_2_HEIGHT, POKEMONTOWER_2_WIDTH ; dimensions (y, x) dw PokemonTower2Blocks, PokemonTower2Texts, PokemonTower2Script ; blocks, texts, scripts db $00 ; connections dw PokemonTower2Object ; objects PokemonTower2Script: ; 0x604f2 call $3c3c ld hl, PokemonTower2Scripts ld a, [$d62b] jp $3d97 ; 0x604fe INCBIN "baserom.gbc",$604fe,$60509 - $604fe PokemonTower2Scripts: ; 0x60509 dw PokemonTower2Script0, PokemonTower2Script1, PokemonTower2Script2 PokemonTower2Script0: ; 0x6050f ld a, [$d764] bit 7, a ret nz ld hl, $455e call $34bf ret nc ld a, $ff ld [$c0ee], a call $23b1 ld c, $2 ld a, $de call $23a1 ld hl, $d764 res 6, [hl] ld a, [$cd3d] cp $1 ld a, $8 ld b, $0 jr nz, .asm_60544 ; 0x60539 $9 ld hl, $d764 set 6, [hl] ld a, $2 ld b, $c .asm_60544 ld [$d528], a ld a, $1 ld [$ff00+$8c], a ld a, b ld [$ff00+$8d], a call $34a6 ld a, $1 ld [$ff00+$8c], a call $2920 xor a ld [$ff00+$b4], a ld [$ff00+$b3], a ret ; 0x6055e INCBIN "baserom.gbc",$6055e,$60563 - $6055e PokemonTower2Script1: ; 0x60563 ld a, [$d057] cp $ff jp z, $44fe ld a, $f0 ld [$cd6b], a ld hl, $d764 set 7, [hl] ld a, $1 ld [$ff00+$8c], a call $2920 ld de, $45b2 ld a, [$d764] bit 6, a jr nz, .asm_60589 ; 0x60584 $3 ld de, $45a9 .asm_60589 ld a, $1 ld [$ff00+$8c], a call $363a ld a, $ff ld [$c0ee], a call $23b1 ld b, $2 ld hl, $5b47 call Bankswitch ld a, $2 ld [$d62b], a ld [$da39], a ret ; 0x605a9 INCBIN "baserom.gbc",$605a9,$605bb - $605a9 PokemonTower2Script2: ; 0x605bb ld a, [$d730] bit 0, a ret nz ld a, $38 ld [$cc4d], a ld a, $11 call Predef xor a ld [$cd6b], a call $2307 ld a, $0 ld [$d62b], a ld [$da39], a ret ; 0x605db PokemonTower2Texts: ; 0x605db dw PokemonTower2Text1, PokemonTower2Text2 PokemonTower2Text1: ; 0x605df db $08 ; asm ld a, [$d764] bit 7, a jr z, .asm_16f24 ; 0x605e5 ld hl, UnnamedText_6063c call PrintText jr .asm_41852 ; 0x605ed .asm_16f24 ; 0x605ef ld hl, UnnamedText_6062d call PrintText ld hl, $d72d set 6, [hl] set 7, [hl] ld hl, UnnamedText_60632 ld de, UnnamedText_60637 ; XXX $4637 call $3354 ld a, $f2 ld [$d059], a ; select which team to use during the encounter ld a, [W_RIVALSTARTER] cp SQUIRTLE jr nz, .NotSquirtle\@ ; 0x6060f ld a, $4 jr .done\@ .NotSquirtle\@ ; 0x60615 cp BULBASAUR jr nz, .Charmander\@ ; 0x60617 ld a, $5 jr .done\@ .Charmander\@ ; 0x6061d ld a, $6 .done\@ ld [W_TRAINERNO], a ld a, $1 ld [$d62b], a ld [$da39], a .asm_41852 ; 0x6062a jp TextScriptEnd UnnamedText_6062d: ; 0x6062d TX_FAR _UnnamedText_6062d db $50 ; 0x6062d + 5 bytes UnnamedText_60632: ; 0x60632 TX_FAR _UnnamedText_60632 db $50 ; 0x60632 + 5 bytes UnnamedText_60637: ; 0x60637 TX_FAR _UnnamedText_60637 db $50 ; 0x60637 + 5 bytes UnnamedText_6063c: ; 0x6063c TX_FAR _UnnamedText_6063c db $50 ; 0x6063c + 5 bytes PokemonTower2Text2: ; 0x60641 TX_FAR _PokemonTower2Text2 db $50 PokemonTower2Object: ; 0x60646 (size=32) db $1 ; border tile db $2 ; warps db $9, $3, $0, POKEMONTOWER_3 db $9, $12, $2, POKEMONTOWER_1 db $0 ; signs db $2 ; people db SPRITE_BLUE, $5 + 4, $e + 4, $ff, $ff, $1 ; person db SPRITE_MEDIUM, $7 + 4, $3 + 4, $ff, $d3, $2 ; person ; warp-to EVENT_DISP $a, $9, $3 ; POKEMONTOWER_3 EVENT_DISP $a, $9, $12 ; POKEMONTOWER_1 PokemonTower2Blocks: ; 0x60666 90 INCBIN "maps/pokemontower2.blk" PokemonTower3_h: ; 0x606c0 to 0x606cc (12 bytes) (id=144) db $0f ; tileset db POKEMONTOWER_3_HEIGHT, POKEMONTOWER_3_WIDTH ; dimensions (y, x) dw PokemonTower3Blocks, PokemonTower3Texts, PokemonTower3Script ; blocks, texts, scripts db $00 ; connections dw PokemonTower3Object ; objects PokemonTower3Script: ; 0x606cc call $3c3c ld hl, PokemonTower3TrainerHeaders ld de, Unknown_606df ld a, [$d62c] call $3160 ld [$d62c], a ret ; 0x606df Unknown_606df: ; 0x606df INCBIN "baserom.gbc",$606df,$6 PokemonTower3Texts: ; 0x606e5 dw PokemonTower3Text1, PokemonTower3Text2, PokemonTower3Text3, PokemonTower3Text4 PokemonTower3TrainerHeaders: PokemonTower3TrainerHeader0: ; 0x606ed db $1 ; flag's bit db ($2 << 4) ; trainer's view range dw $d765 ; flag's byte dw PokemonTower3BattleText1 ; 0x4730 TextBeforeBattle dw PokemonTower3AfterBattleText1 ; 0x473a TextAfterBattle dw PokemonTower3EndBattleText1 ; 0x4735 TextEndBattle dw PokemonTower3EndBattleText1 ; 0x4735 TextEndBattle ; 0x606f9 PokemonTower3TrainerHeader1: ; 0x606f9 db $2 ; flag's bit db ($3 << 4) ; trainer's view range dw $d765 ; flag's byte dw PokemonTower3BattleText2 ; 0x473f TextBeforeBattle dw PokemonTower3AfterBattleText2 ; 0x4749 TextAfterBattle dw PokemonTower3EndBattleText2 ; 0x4744 TextEndBattle dw PokemonTower3EndBattleText2 ; 0x4744 TextEndBattle ; 0x60705 PokemonTower3TrainerHeader2: ; 0x60705 db $3 ; flag's bit db ($2 << 4) ; trainer's view range dw $d765 ; flag's byte dw PokemonTower3BattleText3 ; 0x474e TextBeforeBattle dw PokemonTower3AfterBattleText3 ; 0x4758 TextAfterBattle dw PokemonTower3EndBattleText3 ; 0x4753 TextEndBattle dw PokemonTower3EndBattleText3 ; 0x4753 TextEndBattle ; 0x60711 db $ff PokemonTower3Text1: ; 0x60712 db $08 ; asm ld hl, PokemonTower3TrainerHeader0 call LoadTrainerHeader jp TextScriptEnd PokemonTower3Text2: ; 0x6071c db $08 ; asm ld hl, PokemonTower3TrainerHeader1 call LoadTrainerHeader jp TextScriptEnd PokemonTower3Text3: ; 0x60726 db $08 ; asm ld hl, PokemonTower3TrainerHeader2 call LoadTrainerHeader jp TextScriptEnd PokemonTower3BattleText1: ; 0x60730 TX_FAR _PokemonTower3BattleText1 db $50 ; 0x60730 + 5 bytes PokemonTower3EndBattleText1: ; 0x60735 TX_FAR _PokemonTower3EndBattleText1 db $50 ; 0x60735 + 5 bytes PokemonTower3AfterBattleText1: ; 0x6073a TX_FAR _PokemonTower3AfterBattleText1 db $50 ; 0x6073a + 5 bytes PokemonTower3BattleText2: ; 0x6073f TX_FAR _PokemonTower3BattleText2 db $50 ; 0x6073f + 5 bytes PokemonTower3EndBattleText2: ; 0x60744 TX_FAR _PokemonTower3EndBattleText2 db $50 ; 0x60744 + 5 bytes PokemonTower3AfterBattleText2: ; 0x60749 TX_FAR _PokemonTower3AfterBattleText2 db $50 ; 0x60749 + 5 bytes PokemonTower3BattleText3: ; 0x6074e TX_FAR _PokemonTower3BattleText3 db $50 ; 0x6074e + 5 bytes PokemonTower3EndBattleText3: ; 0x60753 TX_FAR _PokemonTower3EndBattleText3 db $50 ; 0x60753 + 5 bytes PokemonTower3AfterBattleText3: ; 0x60758 TX_FAR _PokemonTower3AfterBattleText3 db $50 ; 0x60758 + 5 bytes PokemonTower3Object: ; 0x6075d (size=51) db $1 ; border tile db $2 ; warps db $9, $3, $0, POKEMONTOWER_2 db $9, $12, $1, POKEMONTOWER_4 db $0 ; signs db $4 ; people db SPRITE_MEDIUM, $3 + 4, $c + 4, $ff, $d2, $41, CHANNELER + $C8, $5 ; trainer db SPRITE_MEDIUM, $8 + 4, $9 + 4, $ff, $d0, $42, CHANNELER + $C8, $6 ; trainer db SPRITE_MEDIUM, $d + 4, $a + 4, $ff, $d0, $43, CHANNELER + $C8, $8 ; trainer db SPRITE_BALL, $1 + 4, $c + 4, $ff, $ff, $84, ESCAPE_ROPE ; item ; warp-to EVENT_DISP $a, $9, $3 ; POKEMONTOWER_2 EVENT_DISP $a, $9, $12 ; POKEMONTOWER_4 PokemonTower3Blocks: ; 0x60790 90 INCBIN "maps/pokemontower3.blk" PokemonTower4_h: ; 0x607ea to 0x607f6 (12 bytes) (id=145) db $0f ; tileset db POKEMONTOWER_4_HEIGHT, POKEMONTOWER_4_WIDTH ; dimensions (y, x) dw PokemonTower4Blocks, PokemonTower4Texts, PokemonTower4Script ; blocks, texts, scripts db $00 ; connections dw PokemonTower4Object ; objects PokemonTower4Script: ; 0x607f6 call $3c3c ld hl, PokemonTower4TrainerHeaders ld de, PokemonTower4Script_Unknown60809 ld a, [$d62d] call $3160 ld [$d62d], a ret ; 0x60809 PokemonTower4Script_Unknown60809: ; 0x60809 INCBIN "baserom.gbc",$60809,$6 PokemonTower4Texts: ; 0x6080f dw PokemonTower4Text1, PokemonTower4Text2, PokemonTower4Text3, PokemonTower4Text4, PokemonTower4Text5, PokemonTower4Text6 PokemonTower4TrainerHeaders: PokemonTower4TrainerHeader0: ; 0x6081b db $1 ; flag's bit db ($2 << 4) ; trainer's view range dw $d766 ; flag's byte dw PokemonTower4BattleText1 ; 0x485e TextBeforeBattle dw PokemonTower4AfterBattleText1 ; 0x4868 TextAfterBattle dw PokemonTower4EndBattleText1 ; 0x4863 TextEndBattle dw PokemonTower4EndBattleText1 ; 0x4863 TextEndBattle ; 0x60827 PokemonTower4TrainerHeader1: ; 0x60827 db $2 ; flag's bit db ($2 << 4) ; trainer's view range dw $d766 ; flag's byte dw PokemonTower4BattleText2 ; 0x486d TextBeforeBattle dw PokemonTower4AfterBattleText2 ; 0x4877 TextAfterBattle dw PokemonTower4EndBattleText2 ; 0x4872 TextEndBattle dw PokemonTower4EndBattleText2 ; 0x4872 TextEndBattle ; 0x60833 PokemonTower4TrainerHeader2: ; 0x60833 db $3 ; flag's bit db ($2 << 4) ; trainer's view range dw $d766 ; flag's byte dw PokemonTower4BattleText3 ; 0x487c TextBeforeBattle dw PokemonTower4AfterBattleText3 ; 0x4886 TextAfterBattle dw PokemonTower4EndBattleText3 ; 0x4881 TextEndBattle dw PokemonTower4EndBattleText3 ; 0x4881 TextEndBattle ; 0x6083f db $ff PokemonTower4Text1: ; 0x60840 db $08 ; asm ld hl, PokemonTower4TrainerHeader0 call LoadTrainerHeader jp TextScriptEnd PokemonTower4Text2: ; 0x6084a db $08 ; asm ld hl, PokemonTower4TrainerHeader1 call LoadTrainerHeader jp TextScriptEnd PokemonTower4Text3: ; 0x60854 db $08 ; asm ld hl, PokemonTower4TrainerHeader2 call LoadTrainerHeader jp TextScriptEnd PokemonTower4BattleText1: ; 0x6085e TX_FAR _PokemonTower4BattleText1 db $50 ; 0x6085e + 5 bytes PokemonTower4EndBattleText1: ; 0x60863 TX_FAR _PokemonTower4EndBattleText1 db $50 ; 0x60863 + 5 bytes PokemonTower4AfterBattleText1: ; 0x60868 TX_FAR _PokemonTower4AfterBattleText1 db $50 ; 0x60868 + 5 bytes PokemonTower4BattleText2: ; 0x6086d TX_FAR _PokemonTower4BattleText2 db $50 ; 0x6086d + 5 bytes PokemonTower4EndBattleText2: ; 0x60872 TX_FAR _PokemonTower4EndBattleText2 db $50 ; 0x60872 + 5 bytes PokemonTower4AfterBattleText2: ; 0x60877 TX_FAR _PokemonTower4AfterBattleText2 db $50 ; 0x60877 + 5 bytes PokemonTower4BattleText3: ; 0x6087c TX_FAR _PokemonTower4BattleText3 db $50 ; 0x6087c + 5 bytes PokemonTower4EndBattleText3: ; 0x60881 TX_FAR _PokemonTower4EndBattleText3 db $50 ; 0x60881 + 5 bytes PokemonTower4AfterBattleText3: ; 0x60886 TX_FAR _PokemonTower4AfterBattleText3 db $50 ; 0x60886 + 5 bytes PokemonTower4Object: ; 0x6088b (size=65) db $1 ; border tile db $2 ; warps db $9, $3, $0, POKEMONTOWER_5 db $9, $12, $1, POKEMONTOWER_3 db $0 ; signs db $6 ; people db SPRITE_MEDIUM, $a + 4, $5 + 4, $ff, $d3, $41, CHANNELER + $C8, $9 ; trainer db SPRITE_MEDIUM, $7 + 4, $f + 4, $ff, $d0, $42, CHANNELER + $C8, $a ; trainer db SPRITE_MEDIUM, $c + 4, $e + 4, $ff, $d2, $43, CHANNELER + $C8, $c ; trainer db SPRITE_BALL, $a + 4, $c + 4, $ff, $ff, $84, ELIXER ; item db SPRITE_BALL, $a + 4, $9 + 4, $ff, $ff, $85, AWAKENING ; item db SPRITE_BALL, $10 + 4, $c + 4, $ff, $ff, $86, HP_UP ; item ; warp-to EVENT_DISP $a, $9, $3 ; POKEMONTOWER_5 EVENT_DISP $a, $9, $12 ; POKEMONTOWER_3 PokemonTower4Blocks: ; 0x608cc 90 INCBIN "maps/pokemontower4.blk" PokemonTower5_h: ; 0x60926 to 0x60932 (12 bytes) (id=146) db $0f ; tileset db POKEMONTOWER_5_HEIGHT, POKEMONTOWER_5_WIDTH ; dimensions (y, x) dw PokemonTower5Blocks, PokemonTower5Texts, PokemonTower5Script ; blocks, texts, scripts db $00 ; connections dw PokemonTower5Object ; objects PokemonTower5Script: ; 0x60932 call $3c3c ld hl, PokemonTower5TrainerHeaders ld de, PokemonTower5Script_Unknown60945 ld a, [$d62e] call $3160 ld [$d62e], a ret ; 0x60945 PokemonTower5Script_Unknown60945: ; 0x60945 INCBIN "baserom.gbc",$60945,$56 PokemonTower5Texts: ; 0x6099b dw PokemonTower5Text1, PokemonTower5Text2, PokemonTower5Text3, PokemonTower5Text4, PokemonTower5Text5, PokemonTower5Text6, PokemonTower5Text7 PokemonTower5TrainerHeaders: PokemonTower5TrainerHeader0: ; 0x609a9 db $2 ; flag's bit db ($2 << 4) ; trainer's view range dw $d767 ; flag's byte dw PokemonTower5BattleText1 ; 0x49e9 TextBeforeBattle dw PokemonTower5AfterBattleText1 ; 0x49f3 TextAfterBattle dw PokemonTower5EndBattleText1 ; 0x49ee TextEndBattle dw PokemonTower5EndBattleText1 ; 0x49ee TextEndBattle ; 0x609b5 PokemonTower5TrainerHeader1: ; 0x609b5 db $3 ; flag's bit db ($3 << 4) ; trainer's view range dw $d767 ; flag's byte dw PokemonTower5BattleText2 ; 0x4a02 TextBeforeBattle dw PokemonTower5AfterBattleText2 ; 0x4a0c TextAfterBattle dw PokemonTower5EndBattleText2 ; 0x4a07 TextEndBattle dw PokemonTower5EndBattleText2 ; 0x4a07 TextEndBattle ; 0x609c1 PokemonTower5TrainerHeader2: ; 0x609c1 db $4 ; flag's bit db ($2 << 4) ; trainer's view range dw $d767 ; flag's byte dw PokemonTower5BattleText3 ; 0x4a1b TextBeforeBattle dw PokemonTower5AfterBattleText3 ; 0x4a25 TextAfterBattle dw PokemonTower5EndBattleText3 ; 0x4a20 TextEndBattle dw PokemonTower5EndBattleText3 ; 0x4a20 TextEndBattle ; 0x609cd PokemonTower5TrainerHeader3: ; 0x609cd db $5 ; flag's bit db ($2 << 4) ; trainer's view range dw $d767 ; flag's byte dw PokemonTower5BattleText4 ; 0x4a34 TextBeforeBattle dw PokemonTower5AfterBattleText4 ; 0x4a3e TextAfterBattle dw PokemonTower5EndBattleText4 ; 0x4a39 TextEndBattle dw PokemonTower5EndBattleText4 ; 0x4a39 TextEndBattle ; 0x609d9 db $ff PokemonTower5Text1: ; 0x609da TX_FAR _PokemonTower5Text1 db $50 PokemonTower5Text2: ; 0x609df db $08 ; asm ld hl, PokemonTower5TrainerHeader0 call LoadTrainerHeader jp TextScriptEnd PokemonTower5BattleText1: ; 0x609e9 TX_FAR _PokemonTower5BattleText1 db $50 ; 0x609e9 + 5 bytes PokemonTower5EndBattleText1: ; 0x609ee TX_FAR _PokemonTower5EndBattleText1 db $50 ; 0x609ee + 5 bytes PokemonTower5AfterBattleText1: ; 0x609f3 TX_FAR _PokemonTower5AfterBattleText1 db $50 ; 0x609f3 + 5 bytes PokemonTower5Text3: ; 0x609f8 db $08 ; asm ld hl, PokemonTower5TrainerHeader1 call LoadTrainerHeader jp TextScriptEnd PokemonTower5BattleText2: ; 0x60a02 TX_FAR _PokemonTower5BattleText2 db $50 ; 0x60a02 + 5 bytes PokemonTower5EndBattleText2: ; 0x60a07 TX_FAR _PokemonTower5EndBattleText2 db $50 ; 0x60a07 + 5 bytes PokemonTower5AfterBattleText2: ; 0x60a0c TX_FAR _PokemonTower5AfterBattleText2 db $50 ; 0x60a0c + 5 bytes PokemonTower5Text4: ; 0x60a11 db $08 ; asm ld hl, PokemonTower5TrainerHeader2 call LoadTrainerHeader jp TextScriptEnd PokemonTower5BattleText3: ; 0x60a1b TX_FAR _PokemonTower5BattleText3 db $50 ; 0x60a1b + 5 bytes PokemonTower5EndBattleText3: ; 0x60a20 TX_FAR _PokemonTower5EndBattleText3 db $50 ; 0x60a20 + 5 bytes PokemonTower5AfterBattleText3: ; 0x60a25 TX_FAR _PokemonTower5AfterBattleText3 db $50 ; 0x60a25 + 5 bytes PokemonTower5Text5: ; 0x60a2a db $08 ; asm ld hl, $49cd call LoadTrainerHeader jp TextScriptEnd PokemonTower5BattleText4: ; 0x60a34 TX_FAR _PokemonTower5BattleText4 db $50 ; 0x60a34 + 5 bytes PokemonTower5EndBattleText4: ; 0x60a39 TX_FAR _PokemonTower5EndBattleText4 db $50 ; 0x60a39 + 5 bytes PokemonTower5AfterBattleText4: ; 0x60a3e TX_FAR _PokemonTower5AfterBattleText4 db $50 ; 0x60a3e + 5 bytes PokemonTower5Text7: ; 0x60a43 TX_FAR _UnnamedText_60a43 db $50 ; 0x60a43 + 5 bytes PokemonTower5Object: ; 0x60a48 (size=65) db $1 ; border tile db $2 ; warps db $9, $3, $0, POKEMONTOWER_4 db $9, $12, $0, POKEMONTOWER_6 db $0 ; signs db $6 ; people db SPRITE_MEDIUM, $8 + 4, $c + 4, $ff, $ff, $1 ; person db SPRITE_MEDIUM, $7 + 4, $11 + 4, $ff, $d2, $42, CHANNELER + $C8, $e ; trainer db SPRITE_MEDIUM, $3 + 4, $e + 4, $ff, $d2, $43, CHANNELER + $C8, $10 ; trainer db SPRITE_MEDIUM, $a + 4, $6 + 4, $ff, $d3, $44, CHANNELER + $C8, $11 ; trainer db SPRITE_MEDIUM, $10 + 4, $9 + 4, $ff, $d3, $45, CHANNELER + $C8, $12 ; trainer db SPRITE_BALL, $e + 4, $6 + 4, $ff, $ff, $86, NUGGET ; item ; warp-to EVENT_DISP $a, $9, $3 ; POKEMONTOWER_4 EVENT_DISP $a, $9, $12 ; POKEMONTOWER_6 PokemonTower5Blocks: ; 0x60a89 90 INCBIN "maps/pokemontower5.blk" PokemonTower6_h: ; 0x60ae3 to 0x60aef (12 bytes) (id=147) db $0f ; tileset db POKEMONTOWER_6_HEIGHT, POKEMONTOWER_6_WIDTH ; dimensions (y, x) dw PokemonTower6Blocks, PokemonTower6Texts, PokemonTower6Script ; blocks, texts, scripts db $00 ; connections dw PokemonTower6Object ; objects PokemonTower6Script: ; 0x60aef call $3c3c ld hl, PokemonTower6TrainerHeaders ld de, $4b0d ld a, [$d62f] call $3160 ld [$d62f], a ret ; 0x60b02 INCBIN "baserom.gbc",$60b02,$af PokemonTower6Texts: ; 0x60bb1 dw PokemonTower6Text1, PokemonTower6Text2, PokemonTower6Text3, PokemonTower6Text4, PokemonTower6Text5, PokemonTower6Text6, PokemonTower6Text7 PokemonTower6TrainerHeaders: PokemonTower6TrainerHeader0: ; 0x60bbf db $1 ; flag's bit db ($3 << 4) ; trainer's view range dw $d768 ; flag's byte dw PokemonTower6BattleText1 ; 0x4c29 TextBeforeBattle dw PokemonTower6AfterBattleText1 ; 0x4c33 TextAfterBattle dw PokemonTower6EndBattleText1 ; 0x4c2e TextEndBattle dw PokemonTower6EndBattleText1 ; 0x4c2e TextEndBattle ; 0x60bcb PokemonTower6TrainerHeader1: ; 0x60bcb db $2 ; flag's bit db ($3 << 4) ; trainer's view range dw $d768 ; flag's byte dw PokemonTower6BattleText2 ; 0x4c38 TextBeforeBattle dw PokemonTower6AfterBattleText2 ; 0x4c42 TextAfterBattle dw PokemonTower6EndBattleText2 ; 0x4c3d TextEndBattle dw PokemonTower6EndBattleText2 ; 0x4c3d TextEndBattle ; 0x60bd7 PokemonTower6TrainerHeader2: ; 0x60bd7 db $3 ; flag's bit db ($2 << 4) ; trainer's view range dw $d768 ; flag's byte dw PokemonTower6BattleText3 ; 0x4c47 TextBeforeBattle dw PokemonTower6AfterBattleText3 ; 0x4c51 TextAfterBattle dw PokemonTower6EndBattleText3 ; 0x4c4c TextEndBattle dw PokemonTower6EndBattleText3 ; 0x4c4c TextEndBattle ; 0x60be3 db $ff PokemonTower6Text1: ; 0x60be4 db $08 ; asm ld hl, PokemonTower6TrainerHeader0 call LoadTrainerHeader jp TextScriptEnd PokemonTower6Text2: ; 0x60bee db $08 ; asm ld hl, PokemonTower6TrainerHeader1 call LoadTrainerHeader jp TextScriptEnd PokemonTower6Text3: ; 0x60bf8 db $08 ; asm ld hl, PokemonTower6TrainerHeader2 call LoadTrainerHeader jp TextScriptEnd PokemonTower6Text7: ; 0x60c02 db $8 ld hl, UnnamedText_60c1f call PrintText ld a, $91 call $13d0 call $3748 ld c, $1e call DelayFrames ld hl, UnnamedText_60c24 call PrintText jp TextScriptEnd ; 0x60c1f UnnamedText_60c1f: ; 0x60c1f TX_FAR _UnnamedText_60c1f db $50 ; 0x60c1f + 5 bytes UnnamedText_60c24: ; 0x60c24 TX_FAR _UnnamedText_60c24 db $50 ; 0x60c24 + 5 bytes PokemonTower6BattleText1: ; 0x60c29 TX_FAR _PokemonTower6BattleText1 db $50 ; 0x60c29 + 5 bytes PokemonTower6EndBattleText1: ; 0x60c2e TX_FAR _PokemonTower6EndBattleText1 db $50 ; 0x60c2e + 5 bytes PokemonTower6AfterBattleText1: ; 0x60c33 TX_FAR _PokemonTower6AfterBattleText1 db $50 ; 0x60c33 + 5 bytes PokemonTower6BattleText2: ; 0x60c38 TX_FAR _PokemonTower6BattleText2 db $50 ; 0x60c38 + 5 bytes PokemonTower6EndBattleText2: ; 0x60c3d TX_FAR _PokemonTower6EndBattleText2 db $50 ; 0x60c3d + 5 bytes PokemonTower6AfterBattleText2: ; 0x60c42 TX_FAR _PokemonTower6AfterBattleText2 db $50 ; 0x60c42 + 5 bytes PokemonTower6BattleText3: ; 0x60c47 TX_FAR _PokemonTower6BattleText3 db $50 ; 0x60c47 + 5 bytes PokemonTower6EndBattleText3: ; 0x60c4c TX_FAR _PokemonTower6EndBattleText3 db $50 ; 0x60c4c + 5 bytes PokemonTower6AfterBattleText3: ; 0x60c51 TX_FAR _PokemonTower6AfterBattleText3 db $50 ; 0x60c51 + 5 bytes PokemonTower6Text6: ; 0x60c56 TX_FAR _UnnamedText_60c56 db $50 ; 0x60c56 + 5 bytes PokemonTower6Object: ; 0x60c5b (size=58) db $1 ; border tile db $2 ; warps db $9, $12, $1, POKEMONTOWER_5 db $10, $9, $0, POKEMONTOWER_7 db $0 ; signs db $5 ; people db SPRITE_MEDIUM, $a + 4, $c + 4, $ff, $d3, $41, CHANNELER + $C8, $13 ; trainer db SPRITE_MEDIUM, $5 + 4, $9 + 4, $ff, $d0, $42, CHANNELER + $C8, $14 ; trainer db SPRITE_MEDIUM, $5 + 4, $10 + 4, $ff, $d2, $43, CHANNELER + $C8, $15 ; trainer db SPRITE_BALL, $8 + 4, $6 + 4, $ff, $ff, $84, RARE_CANDY ; item db SPRITE_BALL, $e + 4, $e + 4, $ff, $ff, $85, X_ACCURACY ; item ; warp-to EVENT_DISP $a, $9, $12 ; POKEMONTOWER_5 EVENT_DISP $a, $10, $9 ; POKEMONTOWER_7 PokemonTower6Blocks: ; 0x60c95 90 INCBIN "maps/pokemontower6.blk" INCBIN "baserom.gbc",$60cef,$a PokemonTower7_h: ; 0x60cf9 to 0x60d05 (12 bytes) (id=148) db $0f ; tileset db POKEMONTOWER_7_HEIGHT, POKEMONTOWER_7_WIDTH ; dimensions (y, x) dw PokemonTower7Blocks, PokemonTower7Texts, PokemonTower7Script ; blocks, texts, scripts db $00 ; connections dw PokemonTower7Object ; objects PokemonTower7Script: ; 0x60d05 call $3c3c ld hl, PokemonTower7TrainerHeaders ld de, $4d23 ld a, [$d630] call $3160 ld [$d630], a ret ; 0x60d18 INCBIN "baserom.gbc",$60d18,$127 PokemonTower7Texts: ; 0x60e3f dw PokemonTower7Text1, PokemonTower7Text2, PokemonTower7Text3, PokemonTower7Text4 PokemonTower7TrainerHeaders: PokemonTower7TrainerHeader0: ; 0x60e47 db $1 ; flag's bit db ($3 << 4) ; trainer's view range dw $d769 ; flag's byte dw PokemonTower7BattleText1 ; 0x4ec9 TextBeforeBattle dw PokemonTower7AfterBattleText1 ; 0x4ed3 TextAfterBattle dw PokemonTower7EndBattleText1 ; 0x4ece TextEndBattle dw PokemonTower7EndBattleText1 ; 0x4ece TextEndBattle ; 0x60e53 PokemonTower7TrainerHeader1: ; 0x60e53 db $2 ; flag's bit db ($3 << 4) ; trainer's view range dw $d769 ; flag's byte dw PokemonTower7BattleText2 ; 0x4ed8 TextBeforeBattle dw PokemonTower7AfterBattleText2 ; 0x4ee2 TextAfterBattle dw PokemonTower7EndBattleText2 ; 0x4edd TextEndBattle dw PokemonTower7EndBattleText2 ; 0x4edd TextEndBattle ; 0x60e5f PokemonTower7TrainerHeader2: ; 0x60e5f db $3 ; flag's bit db ($3 << 4) ; trainer's view range dw $d769 ; flag's byte dw PokemonTower7BattleText3 ; 0x4ee7 TextBeforeBattle dw PokemonTower7AfterBattleText3 ; 0x4ef1 TextAfterBattle dw PokemonTower7EndBattleText3 ; 0x4eec TextEndBattle dw PokemonTower7EndBattleText3 ; 0x4eec TextEndBattle ; 0x60e6b db $ff PokemonTower7Text1: ; 0x60e6c db $08 ; asm ld hl, PokemonTower7TrainerHeader0 call LoadTrainerHeader jp TextScriptEnd PokemonTower7Text2: ; 0x60e76 db $08 ; asm ld hl, PokemonTower7TrainerHeader1 call LoadTrainerHeader jp TextScriptEnd PokemonTower7Text3: ; 0x60e80 db $08 ; asm ld hl, PokemonTower7TrainerHeader2 call LoadTrainerHeader jp TextScriptEnd PokemonTower7Text4: ; 0x60e8a db $08 ; asm ld hl, UnnamedText_60ec4 call PrintText ld hl, $d7e0 set 7, [hl] ld hl, $d769 set 7, [hl] ld a, $44 ld [$cc4d], a ld a, $15 call Predef ld a, $17 ld [$cc4d], a ld a, $11 call Predef ld a, $18 ld [$cc4d], a ld a, $15 call Predef ld a, $4 ld [$d630], a ld [$da39], a jp TextScriptEnd UnnamedText_60ec4: ; 0x60ec4 TX_FAR _UnnamedText_60ec4 db $50 ; 0x60ec4 + 5 bytes PokemonTower7BattleText1: ; 0x60ec9 TX_FAR _PokemonTower7BattleText1 db $50 ; 0x60ec9 + 5 bytes PokemonTower7EndBattleText1: ; 0x60ece TX_FAR _PokemonTower7EndBattleText1 db $50 ; 0x60ece + 5 bytes PokemonTower7AfterBattleText1: ; 0x60ed3 TX_FAR _PokemonTower7AfterBattleText1 db $50 ; 0x60ed3 + 5 bytes PokemonTower7BattleText2: ; 0x60ed8 TX_FAR _PokemonTower7BattleText2 db $50 ; 0x60ed8 + 5 bytes PokemonTower7EndBattleText2: ; 0x60edd TX_FAR _PokemonTower7EndBattleText2 db $50 ; 0x60edd + 5 bytes PokemonTower7AfterBattleText2: ; 0x60ee2 TX_FAR _PokemonTower7AfterBattleText2 db $50 ; 0x60ee2 + 5 bytes PokemonTower7BattleText3: ; 0x60ee7 TX_FAR _PokemonTower7BattleText3 db $50 ; 0x60ee7 + 5 bytes PokemonTower7EndBattleText3: ; 0x60eec TX_FAR _PokemonTower7EndBattleText3 db $50 ; 0x60eec + 5 bytes PokemonTower7AfterBattleText3: ; 0x60ef1 TX_FAR _PokemonTower7AfterBattleText3 db $50 ; 0x60ef1 + 5 bytes PokemonTower7Object: ; 0x60ef6 (size=42) db $1 ; border tile db $1 ; warps db $10, $9, $1, POKEMONTOWER_6 db $0 ; signs db $4 ; people db SPRITE_ROCKET, $b + 4, $9 + 4, $ff, $d3, $41, ROCKET + $C8, $13 ; trainer db SPRITE_ROCKET, $9 + 4, $c + 4, $ff, $d2, $42, ROCKET + $C8, $14 ; trainer db SPRITE_ROCKET, $7 + 4, $9 + 4, $ff, $d3, $43, ROCKET + $C8, $15 ; trainer db SPRITE_MR_FUJI, $3 + 4, $a + 4, $ff, $d0, $4 ; person ; warp-to EVENT_DISP $a, $10, $9 ; POKEMONTOWER_6 PokemonTower7Blocks: ; 0x60f20 90 INCBIN "maps/pokemontower7.blk" CeladonMart1_h: ; 0x60f7a to 0x60f86 (12 bytes) (id=122) db $12 ; tileset db CELADON_MART_1_HEIGHT, CELADON_MART_1_WIDTH ; dimensions (y, x) dw CeladonMart1Blocks, CeladonMart1Texts, CeladonMart1Script ; blocks, texts, scripts db $00 ; connections dw CeladonMart1Object ; objects CeladonMart1Script: ; 0x60f86 jp $3c3c ; 0x60f89 CeladonMart1Texts: ; 0x60f89 dw CeladonMart1Text1, CeladonMart1Text2, CeladonMart1Text3 CeladonMart1Text1: ; 0x60f8f TX_FAR _CeladonMart1Text1 db $50 CeladonMart1Text2: ; 0x60f94 TX_FAR _CeladonMart1Text2 db $50 CeladonMart1Text3: ; 0x60f99 TX_FAR _CeladonMart1Text3 db $50 CeladonMart1Object: ; 0x60f9e (size=64) db $f ; border tile db $6 ; warps db $7, $2, $0, $ff db $7, $3, $0, $ff db $7, $10, $1, $ff db $7, $11, $1, $ff db $1, $c, $0, CELADON_MART_2 db $1, $1, $0, CELADON_MART_ELEVATOR db $2 ; signs db $4, $b, $2 ; CeladonMart1Text2 db $1, $e, $3 ; CeladonMart1Text3 db $1 ; people db SPRITE_CABLE_CLUB_WOMAN, $3 + 4, $8 + 4, $ff, $d0, $1 ; person ; warp-to EVENT_DISP $a, $7, $2 EVENT_DISP $a, $7, $3 EVENT_DISP $a, $7, $10 EVENT_DISP $a, $7, $11 EVENT_DISP $a, $1, $c ; CELADON_MART_2 EVENT_DISP $a, $1, $1 ; CELADON_MART_ELEVATOR CeladonMart1Blocks: ; 0x60fde 40 INCBIN "maps/celadonmart1.blk" INCBIN "baserom.gbc",$61006,$610ae - $61006 UnnamedText_610ae: ; 0x610ae TX_FAR _UnnamedText_610ae db $50 ; 0x610ae + 5 bytes UnnamedText_610b3: ; 0x610b3 TX_FAR _UnnamedText_610b3 db $50 ; 0x610b3 + 5 bytes UnnamedText_610b8: ; 0x610b8 TX_FAR _UnnamedText_610b8 db $50 ; 0x610b8 + 5 bytes UnnamedText_610bd: ; 0x610bd TX_FAR _UnnamedText_610bd db $50 ; 0x610bd + 5 bytes INCBIN "baserom.gbc",$610c2,$3f ViridianForest_h: ; 0x61101 to 0x6110d (12 bytes) (id=51) db $03 ; tileset db VIRIDIAN_FOREST_HEIGHT, VIRIDIAN_FOREST_WIDTH ; dimensions (y, x) dw ViridianForestBlocks, ViridianForestTexts, ViridianForestScript ; blocks, texts, scripts db $00 ; connections dw ViridianForestObject ; objects ViridianForestScript: ; 0x6110d call $3c3c ld hl, ViridianForestTrainerHeaders ld de, ViridianForestScript_Unknown61120 ld a, [$d618] call $3160 ld [$d618], a ret ; 0x61120 ViridianForestScript_Unknown61120: ; 0x61120 INCBIN "baserom.gbc",$61120,$6 ViridianForestTexts: ; 0x61126 dw ViridianForestText1, ViridianForestText2, ViridianForestText3, ViridianForestText4, ViridianForestText5, ViridianForestText6, ViridianForestText7, ViridianForestText8, ViridianForestText9, ViridianForestText10, ViridianForestText11, ViridianForestText12, ViridianForestText13, ViridianForestText14 ViridianForestTrainerHeaders: ViridianForestTrainerHeader0: ; 0x61142 db $2 ; flag's bit db ($4 << 4) ; trainer's view range dw $d7f3 ; flag's byte dw ViridianForestBattleText1 ; 0x518a TextBeforeBattle dw ViridianForestAfterBattleText1 ; 0x5194 TextAfterBattle dw ViridianForestEndBattleText1 ; 0x518f TextEndBattle dw ViridianForestEndBattleText1 ; 0x518f TextEndBattle ; 0x6114e ViridianForestTrainerHeader1: ; 0x6114e db $3 ; flag's bit db ($4 << 4) ; trainer's view range dw $d7f3 ; flag's byte dw ViridianForestBattleText2 ; 0x5199 TextBeforeBattle dw ViridianForestAfterBattleText2 ; 0x51a3 TextAfterBattle dw ViridianForestEndBattleText2 ; 0x519e TextEndBattle dw ViridianForestEndBattleText2 ; 0x519e TextEndBattle ; 0x6115a ViridianForestTrainerHeader2: ; 0x6115a db $4 ; flag's bit db ($1 << 4) ; trainer's view range dw $d7f3 ; flag's byte dw ViridianForestBattleText3 ; 0x51a8 TextBeforeBattle dw ViridianForestAfterBattleText3 ; 0x51b2 TextAfterBattle dw ViridianForestEndBattleText3 ; 0x51ad TextEndBattle dw ViridianForestEndBattleText3 ; 0x51ad TextEndBattle ; 0x61166 db $ff ViridianForestText1: ; 0x61167 TX_FAR _ViridianForestText1 db $50 ViridianForestText2: ; 0x6116c db $08 ; asm ld hl, ViridianForestTrainerHeader0 call LoadTrainerHeader jp TextScriptEnd ViridianForestText3: ; 0x61176 db $08 ; asm ld hl, ViridianForestTrainerHeader1 call LoadTrainerHeader jp TextScriptEnd ViridianForestText4: ; 0x61180 db $08 ; asm ld hl, ViridianForestTrainerHeader2 call LoadTrainerHeader jp TextScriptEnd ViridianForestBattleText1: ; 0x6118a TX_FAR _ViridianForestBattleText1 db $50 ; 0x6118a + 5 bytes ViridianForestEndBattleText1: ; 0x6118f TX_FAR _ViridianForestEndBattleText1 db $50 ; 0x6118f + 5 bytes ViridianForestAfterBattleText1: ; 0x61194 ;TX_FAR _ViridianForestAfterBattleText1 db $17 dw _ViridianForestAfterBattleText1 db BANK(_ViridianForestAfterBattleText1) db $50 ; 0x61194 + 5 bytes ViridianForestBattleText2: ; 0x61199 TX_FAR _ViridianForestBattleText2 db $50 ; 0x61199 + 5 bytes ViridianForestEndBattleText2: ; 0x6119e TX_FAR _ViridianForestEndBattleText2 db $50 ; 0x6119e + 5 bytes ViridianForestAfterBattleText2: ; 0x611a3 ;TX_FAR _ViridianForestAfterBattleText2 db $17 dw _ViridianForestAfterBattleText2 db BANK(_ViridianForestAfterBattleText2) db $50 ; 0x611a3 + 5 bytes ViridianForestBattleText3: ; 0x611a8 TX_FAR _ViridianForestBattleText3 db $50 ; 0x611a8 + 5 bytes ViridianForestEndBattleText3: ; 0x611ad TX_FAR _ViridianForestEndBattleText3 db $50 ; 0x611ad + 5 bytes ViridianForestAfterBattleText3: ; 0x611b2 ;TX_FAR _ViridianForestAfterBattleText3 db $17 dw _ViridianForestAfterBattleText3 db BANK(_ViridianForestAfterBattleText3) db $50 ; 0x611b2 + 5 bytes ViridianForestText8: ; 0x611b7 TX_FAR _ViridianForestText8 db $50 ViridianForestText9: ; 0x611bc TX_FAR _ViridianForestText9 db $50 ViridianForestText10: ; 0x611c1 TX_FAR _ViridianForestText10 db $50 ViridianForestText11: ; 0x611c6 TX_FAR _ViridianForestText11 db $50 ViridianForestText12: ; 0x611cb TX_FAR _ViridianForestText12 db $50 ViridianForestText13: ; 0x611d0 TX_FAR _ViridianForestText13 db $50 ViridianForestText14: ; 0x611d5 TX_FAR _ViridianForestText14 db $50 ViridianForestObject: ; 0x611da (size=127) db $3 ; border tile db $6 ; warps db $0, $1, $2, VIRIDIAN_FOREST_EXIT db $0, $2, $3, VIRIDIAN_FOREST_EXIT db $2f, $f, $1, VIRIDIAN_FOREST_ENTRANCE db $2f, $10, $1, VIRIDIAN_FOREST_ENTRANCE db $2f, $11, $1, VIRIDIAN_FOREST_ENTRANCE db $2f, $12, $1, VIRIDIAN_FOREST_ENTRANCE db $6 ; signs db $28, $18, $9 ; ViridianForestText9 db $20, $10, $a ; ViridianForestText10 db $11, $1a, $b ; ViridianForestText11 db $18, $4, $c ; ViridianForestText12 db $2d, $12, $d ; ViridianForestText13 db $1, $2, $e ; ViridianForestText14 db $8 ; people db SPRITE_BUG_CATCHER, $2b + 4, $10 + 4, $ff, $ff, $1 ; person db SPRITE_BUG_CATCHER, $21 + 4, $1e + 4, $ff, $d2, $42, BUG_CATCHER + $C8, $1 ; trainer db SPRITE_BUG_CATCHER, $13 + 4, $1e + 4, $ff, $d2, $43, BUG_CATCHER + $C8, $2 ; trainer db SPRITE_BUG_CATCHER, $12 + 4, $2 + 4, $ff, $d2, $44, BUG_CATCHER + $C8, $3 ; trainer db SPRITE_BALL, $b + 4, $19 + 4, $ff, $ff, $85, ANTIDOTE ; item db SPRITE_BALL, $1d + 4, $c + 4, $ff, $ff, $86, POTION ; item db SPRITE_BALL, $1f + 4, $1 + 4, $ff, $ff, $87, POKE_BALL ; item db SPRITE_BUG_CATCHER, $28 + 4, $1b + 4, $ff, $ff, $8 ; person ; warp-to EVENT_DISP $11, $0, $1 ; VIRIDIAN_FOREST_EXIT EVENT_DISP $11, $0, $2 ; VIRIDIAN_FOREST_EXIT EVENT_DISP $11, $2f, $f ; VIRIDIAN_FOREST_ENTRANCE EVENT_DISP $11, $2f, $10 ; VIRIDIAN_FOREST_ENTRANCE EVENT_DISP $11, $2f, $11 ; VIRIDIAN_FOREST_ENTRANCE EVENT_DISP $11, $2f, $12 ; VIRIDIAN_FOREST_ENTRANCE SSAnne1_h: ; 0x61259 to 0x61265 (12 bytes) (id=95) db $0d ; tileset db SS_ANNE_1_HEIGHT, SS_ANNE_1_WIDTH ; dimensions (y, x) dw SSAnne1Blocks, SSAnne1Texts, SSAnne1Script ; blocks, texts, scripts db $00 ; connections dw SSAnne1Object ; objects SSAnne1Script: ; 0x61265 call $3c3c ret ; 0x61269 SSAnne1Texts: ; 0x61269 dw SSAnne1Text1, SSAnne1Text2 SSAnne1Text1: ; 0x6126d TX_FAR _SSAnne1Text1 db $50 SSAnne1Text2: ; 0x61272 TX_FAR _SSAnne1Text2 db $50 SSAnne1Object: ; 0x61277 (size=104) db $c ; border tile db $b ; warps db $0, $1a, $1, VERMILION_DOCK db $0, $1b, $1, VERMILION_DOCK db $8, $1f, $0, SS_ANNE_8 db $8, $17, $1, SS_ANNE_8 db $8, $13, $2, SS_ANNE_8 db $8, $f, $3, SS_ANNE_8 db $8, $b, $4, SS_ANNE_8 db $8, $7, $5, SS_ANNE_8 db $6, $2, $6, SS_ANNE_2 db $f, $25, $5, SS_ANNE_4 db $10, $3, $0, SS_ANNE_6 db $0 ; signs db $2 ; people db SPRITE_WAITER, $6 + 4, $c + 4, $fe, $2, $1 ; person db SPRITE_SAILOR, $5 + 4, $1b + 4, $ff, $ff, $2 ; person ; warp-to EVENT_DISP $14, $0, $1a ; VERMILION_DOCK EVENT_DISP $14, $0, $1b ; VERMILION_DOCK EVENT_DISP $14, $8, $1f ; SS_ANNE_8 EVENT_DISP $14, $8, $17 ; SS_ANNE_8 EVENT_DISP $14, $8, $13 ; SS_ANNE_8 EVENT_DISP $14, $8, $f ; SS_ANNE_8 EVENT_DISP $14, $8, $b ; SS_ANNE_8 EVENT_DISP $14, $8, $7 ; SS_ANNE_8 EVENT_DISP $14, $6, $2 ; SS_ANNE_2 EVENT_DISP $14, $f, $25 ; SS_ANNE_4 EVENT_DISP $14, $10, $3 ; SS_ANNE_6 SSAnne1Blocks: ; 0x612df 180 INCBIN "maps/ssanne1.blk" SSAnne2_h: ; 0x61393 to 0x6139f (12 bytes) (id=96) db $0d ; tileset db SS_ANNE_2_HEIGHT, SS_ANNE_2_WIDTH ; dimensions (y, x) dw SSAnne2Blocks, SSAnne2Texts, SSAnne2Script ; blocks, texts, scripts db $00 ; connections dw SSAnne2Object ; objects SSAnne2Script: ; 0x6139f call $3c3c ld hl, SSAnne2Scripts ld a, [$d665] jp $3d97 ; 0x613ab INCBIN "baserom.gbc",$613ab,$613b3 - $613ab SSAnne2Scripts: ; 0x613b3 dw SSAnne2Script0, SSAnne2Script1, SSAnne2Script2, SSAnne2Script3, SSAnne2Script4 SSAnne2Script4: ; 0x613bd ret ; 0x613be SSAnne2Script0: ; 0x613be ld hl, $5411 call $34bf ret nc ld a, $ff ld [$c0ee], a call $23b1 ld c, $2 ld a, $de call $23a1 ld a, [$cd3d] ld [$ff00+$db], a ld a, $71 ld [$cc4d], a ld a, $15 call Predef call Delay3 ld a, $2 ld [$ff00+$8c], a call $3541 xor a ld [$ff00+$b4], a ld a, $f0 ld [$cd6b], a ld a, [$ff00+$db] cp $2 jr nz, .asm_61400 ; 0x613f9 $5 ld de, $540c jr .asm_61403 ; 0x613fe $3 .asm_61400 ld de, $540d .asm_61403 call $363a ld a, $1 ld [$d665], a ret ; 0x6140c INCBIN "baserom.gbc",$6140c,$61430 - $6140c SSAnne2Script1: ; 0x61430 ld a, [$d730] bit 0, a ret nz call $5416 xor a ld [$cd6b], a ld a, $2 ld [$ff00+$8c], a call $2920 call Delay3 ld a, $f2 ld [$d059], a ; select which team to use during the encounter ld a, [W_RIVALSTARTER] cp SQUIRTLE jr nz, .NotSquirtle\@ ; 0x61451 $4 ld a, $1 jr .done\@ .NotSquirtle\@ cp BULBASAUR jr nz, .Charmander\@ ; 0x61459 $4 ld a, $2 jr .done\@ .Charmander\@ ld a, $3 .done\@ ld [W_TRAINERNO], a call $5416 ld a, $2 ld [$d665], a ret ; 0x6146d SSAnne2Script2: ; 0x6146d ld a, [$d057] cp $ff jp z, $53ab call $5416 ld a, $f0 ld [$cd6b], a ld a, $3 ld [$ff00+$8c], a call $2920 ld a, $2 ld [$ff00+$8c], a call $3541 ld a, [$d362] cp $25 jr nz, .asm_61497 ; 0x61490 $5 ld de, $54b9 jr .asm_6149a ; 0x61495 $3 .asm_61497 ld de, $54b7 .asm_6149a ld a, $2 ld [$ff00+$8c], a call $363a ld a, $ff ld [$c0ee], a call $23b1 ld b, $2 ld hl, $5b47 call Bankswitch ld a, $3 ld [$d665], a ret ; 0x614b7 INCBIN "baserom.gbc",$614b7,$614be - $614b7 SSAnne2Script3: ; 0x614be ld a, [$d730] bit 0, a ret nz xor a ld [$cd6b], a ld a, $71 ld [$cc4d], a ld a, $11 call Predef call $2307 ld a, $4 ld [$d665], a ret ; 0x614db SSAnne2Texts: ; 0x614db dw SSAnne2Text1, SSAnne2Text2, SSAnne2Text3 SSAnne2Text1: ; 0x614e1 TX_FAR _SSAnne2Text1 db $50 SSAnne2Text2: ; 0x614e6 db $8 ld hl, SSAnneRivalBeforeBattleText call PrintText ld hl, $d72d set 6, [hl] set 7, [hl] ld hl, SSAnneRivalDefeatedText ld de, SSAnneRivalWonText call $3354 jp TextScriptEnd ; 0x61500 SSAnneRivalBeforeBattleText: ; 0x61500 TX_FAR _SSAnneRivalBeforeBattleText db $50 ; 0x61500 + 5 bytes SSAnneRivalDefeatedText: ; 0x61505 TX_FAR _SSAnneRivalDefeatedText db $50 ; 0x61505 + 5 bytes SSAnneRivalWonText: ; 0x6150a TX_FAR _SSAnneRivalWonText db $50 ; 0x6150a + 5 bytes SSAnne2Text3: ; 0x6150f TX_FAR _SSAnneRivalCaptainText db $50 ; 0x6150f + 5 bytes SSAnne2Object: ; 0x61514 (size=90) db $c ; border tile db $9 ; warps db $b, $9, $0, SS_ANNE_9 db $b, $d, $2, SS_ANNE_9 db $b, $11, $4, SS_ANNE_9 db $b, $15, $6, SS_ANNE_9 db $b, $19, $8, SS_ANNE_9 db $b, $1d, $a, SS_ANNE_9 db $4, $2, $8, SS_ANNE_1 db $c, $2, $1, SS_ANNE_3 db $4, $24, $0, SS_ANNE_7 db $0 ; signs db $2 ; people db SPRITE_WAITER, $7 + 4, $3 + 4, $fe, $1, $1 ; person db SPRITE_BLUE, $4 + 4, $24 + 4, $ff, $d0, $42, SONY1 + $C8, $1 ; trainer ; warp-to EVENT_DISP $14, $b, $9 ; SS_ANNE_9 EVENT_DISP $14, $b, $d ; SS_ANNE_9 EVENT_DISP $14, $b, $11 ; SS_ANNE_9 EVENT_DISP $14, $b, $15 ; SS_ANNE_9 EVENT_DISP $14, $b, $19 ; SS_ANNE_9 EVENT_DISP $14, $b, $1d ; SS_ANNE_9 EVENT_DISP $14, $4, $2 ; SS_ANNE_1 EVENT_DISP $14, $c, $2 ; SS_ANNE_3 EVENT_DISP $14, $4, $24 ; SS_ANNE_7 SSAnne2Blocks: ; 0x6156e 180 INCBIN "maps/ssanne2.blk" SSAnne4_h: ; 0x61622 to 0x6162e (12 bytes) (id=98) db $0d ; tileset db SS_ANNE_4_HEIGHT, SS_ANNE_4_WIDTH ; dimensions (y, x) dw SSAnne4Blocks, SSAnne4Texts, SSAnne4Script ; blocks, texts, scripts db $00 ; connections dw SSAnne4Object ; objects SSAnne4Script: ; 0x6162e jp $3c3c ; 0x61631 SSAnne4Texts: ; 0x61631 db $50 SSAnne4Object: ; 0x61632 (size=52) db $c ; border tile db $6 ; warps db $3, $17, $8, SS_ANNE_10 db $3, $13, $6, SS_ANNE_10 db $3, $f, $4, SS_ANNE_10 db $3, $b, $2, SS_ANNE_10 db $3, $7, $0, SS_ANNE_10 db $5, $1b, $9, SS_ANNE_1 db $0 ; signs db $0 ; people ; warp-to EVENT_DISP $f, $3, $17 ; SS_ANNE_10 EVENT_DISP $f, $3, $13 ; SS_ANNE_10 EVENT_DISP $f, $3, $f ; SS_ANNE_10 EVENT_DISP $f, $3, $b ; SS_ANNE_10 EVENT_DISP $f, $3, $7 ; SS_ANNE_10 EVENT_DISP $f, $5, $1b ; SS_ANNE_1 SSAnne4Blocks: ; 0x61666 60 INCBIN "maps/ssanne4.blk" SSAnne5_h: ; 0x616a2 to 0x616ae (12 bytes) (id=99) db $0d ; tileset db SS_ANNE_5_HEIGHT, SS_ANNE_5_WIDTH ; dimensions (y, x) dw SSAnne5Blocks, SSAnne5Texts, SSAnne5Script ; blocks, texts, scripts db $00 ; connections dw SSAnne5Object ; objects SSAnne5Script: ; 0x616ae call $3c3c ld hl, $56d1 ld de, SSAnne5Script_Unknown616c1 ld a, [$d617] call $3160 ld [$d617], a ret ; 0x616c1 SSAnne5Script_Unknown616c1: ; 0x616c1 INCBIN "baserom.gbc",$616c1,$6 SSAnne5Texts: ; 0x616c7 dw SSAnne5Text1, SSAnne5Text2, SSAnne5Text3, SSAnne5Text4, SSAnne5Text5 SSAnneTrainerHeaders: SSAnneTrainerHeader0: ; 0x616d1 db $4 ; flag's bit db ($3 << 4) ; trainer's view range dw $d7ff ; flag's byte dw SSAnneBattleText1 ; 0x5703 TextBeforeBattle dw SSAnneAfterBattleText1 ; 0x570d TextAfterBattle dw SSAnneEndBattleText1 ; 0x5708 TextEndBattle dw SSAnneEndBattleText1 ; 0x5708 TextEndBattle ; 0x616dd SSAnneTrainerHeader1: ; 0x616dd db $5 ; flag's bit db ($3 << 4) ; trainer's view range dw $d7ff ; flag's byte dw SSAnneBattleText2 ; 0x571c TextBeforeBattle dw SSAnneAfterBattleText2 ; 0x5726 TextAfterBattle dw SSAnneEndBattleText2 ; 0x5721 TextEndBattle dw SSAnneEndBattleText2 ; 0x5721 TextEndBattle ; 0x616e9 db $ff SSAnne5Text1: ; 0x616ea TX_FAR _SSAnne5Text1 db $50 SSAnne5Text2: ; 0x616ef TX_FAR _SSAnne5Text2 db $50 SSAnne5Text3: ; 0x616f4 TX_FAR _SSAnne5Text3 db $50 SSAnne5Text4: ; 0x616f9 db $08 ; asm ld hl, SSAnneTrainerHeader0 call LoadTrainerHeader jp TextScriptEnd SSAnneBattleText1: ; 0x61703 TX_FAR _SSAnneBattleText1 db $50 ; 0x61703 + 5 bytes SSAnneEndBattleText1: ; 0x61708 TX_FAR _SSAnneEndBattleText1 db $50 ; 0x61708 + 5 bytes SSAnneAfterBattleText1: ; 0x6170d TX_FAR _SSAnneAfterBattleText1 db $50 ; 0x6170d + 5 bytes SSAnne5Text5: ; 0x61712 db $08 ; asm ld hl, SSAnneTrainerHeader1 call LoadTrainerHeader jp TextScriptEnd SSAnneBattleText2: ; 0x6171c TX_FAR _SSAnneBattleText2 db $50 ; 0x6171c + 5 bytes SSAnneEndBattleText2: ; 0x61721 TX_FAR _SSAnneEndBattleText2 db $50 ; 0x61721 + 5 bytes SSAnneAfterBattleText2: ; 0x61726 TX_FAR _SSAnneAfterBattleText2 db $50 ; 0x61726 + 5 bytes SSAnne5Object: ; 0x6172b (size=54) db $23 ; border tile db $2 ; warps db $6, $d, $0, SS_ANNE_3 db $7, $d, $0, SS_ANNE_3 db $0 ; signs db $5 ; people db SPRITE_BLACK_HAIR_BOY_2, $2 + 4, $5 + 4, $ff, $d1, $1 ; person db SPRITE_SAILOR, $9 + 4, $4 + 4, $ff, $ff, $2 ; person db SPRITE_BLACK_HAIR_BOY_1, $b + 4, $7 + 4, $ff, $ff, $3 ; person db SPRITE_SAILOR, $4 + 4, $4 + 4, $ff, $d0, $44, SAILOR + $C8, $1 ; trainer db SPRITE_SAILOR, $8 + 4, $a + 4, $ff, $d1, $45, SAILOR + $C8, $2 ; trainer ; warp-to EVENT_DISP $a, $6, $d ; SS_ANNE_3 EVENT_DISP $a, $7, $d ; SS_ANNE_3 SSAnne5Blocks: ; 0x61761 70 INCBIN "maps/ssanne5.blk" SSAnne6_h: ; 0x617a7 to 0x617b3 (12 bytes) (id=100) db $0d ; tileset db SS_ANNE_6_HEIGHT, SS_ANNE_6_WIDTH ; dimensions (y, x) dw SSAnne6Blocks, SSAnne6Texts, SSAnne6Script ; blocks, texts, scripts db $00 ; connections dw SSAnne6Object ; objects SSAnne6Script: ; 0x617b3 call $3c3c ret ; 0x617b7 SSAnne6Texts: ; 0x617b7 dw SSAnne6Text1, SSAnne6Text2, SSAnne6Text3, SSAnne6Text4, SSAnne6Text5, SSAnne6Text6, SSAnne6Text7 SSAnne6Text1: ; 0x617c5 TX_FAR _SSAnne6Text1 db $50 SSAnne6Text2: ; 0x617ca TX_FAR _SSAnne6Text2 db $50 SSAnne6Text3: ; 0x617cf TX_FAR _SSAnne6Text3 db $50 SSAnne6Text4: ; 0x617d4 TX_FAR _SSAnne6Text4 db $50 SSAnne6Text5: ; 0x617d9 TX_FAR _SSAnne6Text5 db $50 SSAnne6Text6: ; 0x617de TX_FAR _SSAnne6Text6 db $50 SSAnne6Text7: ; 0x617e3 db $08 ; asm ld hl, UnnamedText_61807 call PrintText ldh a, [$d3] bit 7, a jr z, .asm_93eb1 ; 0x617ee ld hl, UnnamedText_6180c jr .asm_63292 ; 0x617f3 .asm_93eb1 ; 0x617f5 bit 4, a jr z, .asm_7436c ; 0x617f7 ld hl, UnnamedText_61811 jr .asm_63292 ; 0x617fc .asm_7436c ; 0x617fe ld hl, UnnamedText_61816 .asm_63292 ; 0x61801 call PrintText jp TextScriptEnd UnnamedText_61807: ; 0x61807 TX_FAR _UnnamedText_61807 db $50 ; 0x61807 + 5 bytes UnnamedText_6180c: ; 0x6180c TX_FAR _UnnamedText_6180c db $50 ; 0x6180c + 5 bytes UnnamedText_61811: ; 0x61811 TX_FAR _UnnamedText_61811 db $50 ; 0x61811 + 5 bytes UnnamedText_61816: ; 0x61816 TX_FAR _UnnamedText_61816 db $50 ; 0x61816 + 5 bytes SSAnne6Object: ; 0x6181b (size=54) db $c ; border tile db $1 ; warps db $0, $6, $a, SS_ANNE_1 db $0 ; signs db $7 ; people db SPRITE_COOK, $8 + 4, $1 + 4, $fe, $1, $1 ; person db SPRITE_COOK, $8 + 4, $5 + 4, $fe, $1, $2 ; person db SPRITE_COOK, $7 + 4, $9 + 4, $fe, $1, $3 ; person db SPRITE_COOK, $6 + 4, $d + 4, $ff, $ff, $4 ; person db SPRITE_COOK, $8 + 4, $d + 4, $ff, $ff, $5 ; person db SPRITE_COOK, $a + 4, $d + 4, $ff, $ff, $6 ; person db SPRITE_COOK, $d + 4, $b + 4, $ff, $d1, $7 ; person ; warp-to EVENT_DISP $7, $0, $6 ; SS_ANNE_1 SSAnne6Blocks: ; 0x61851 56 INCBIN "maps/ssanne6.blk" SSAnne7_h: ; 0x61889 to 0x61895 (12 bytes) (id=101) db $0d ; tileset db SS_ANNE_7_HEIGHT, SS_ANNE_7_WIDTH ; dimensions (y, x) dw SSAnne7Blocks, SSAnne7Texts, SSAnne7Script ; blocks, texts, scripts db $00 ; connections dw SSAnne7Object ; objects SSAnne7Script: ; 0x61895 call SSAnne7Script_Unknown6189b jp $3c3c ; 0x6189b SSAnne7Script_Unknown6189b: ; 0x6189b INCBIN "baserom.gbc",$6189b,$c SSAnne7Texts: ; 0x618a7 dw SSAnne7Text1, SSAnne7Text2, SSAnne7Text3 SSAnne7Text1: ; 0x618ad db $08 ; asm ld a, [$d803] bit 0, a jr nz, .asm_797c4 ; 0x618b3 ld hl, SSAnne7RubText call PrintText ld hl, ReceivingHM01Text call PrintText ld bc, (HM_01 << 8) | 1 call GiveItem jr nc, .asm_ccdcd ; 0x618c7 ld hl, ReceivedHM01Text call PrintText ld hl, $d803 set 0, [hl] jr .asm_0faf5 ; 0x618d4 .asm_ccdcd ; 0x618d6 ld hl, HM01NoRoomText call PrintText ld hl, $d72d set 5, [hl] jr .asm_0faf5 ; 0x618e1 .asm_797c4 ; 0x618e3 ld hl, UnnamedText_61932 call PrintText .asm_0faf5 ; 0x618e9 jp TextScriptEnd SSAnne7RubText: ; 0x618ec TX_FAR _SSAnne7RubText ; 0x812dd db $8 ld a, [$c0ef] cp $1f ld [$c0f0], a jr nz, .asm_61908 ; 0x618f9 $d ld a, $ff ld [$c0ee], a call $23b1 ld a, $2 ld [$c0ef], a .asm_61908 ld a, $e8 ld [$c0ee], a call $23b1 .asm_61910 ld a, [$c026] cp $e8 jr z, .asm_61910 ; 0x61915 $f9 call $2307 ld hl, $d803 set 1, [hl] ld hl, $d72d res 5, [hl] jp TextScriptEnd ; 0x61927 ReceivingHM01Text: ; 0x61927 TX_FAR _ReceivingHM01Text db $50 ; 0x61927 + 5 bytes ReceivedHM01Text: ; 0x6192c TX_FAR _ReceivedHM01Text ; 0x8140d db $11, $50 ; 0x6192c + 6 bytes = 0x61932 UnnamedText_61932: ; 0x61932 TX_FAR _UnnamedText_61932 db $50 ; 0x61932 + 5 bytes HM01NoRoomText: ; 0x61937 TX_FAR _HM01NoRoomText db $50 ; 0x61937 + 5 bytes SSAnne7Text2: ; 0x6193c TX_FAR _SSAnne7Text2 db $50 SSAnne7Text3: ; 0x61941 TX_FAR _SSAnne7Text3 db $50 SSAnne7Object: ; 0x61946 (size=24) db $c ; border tile db $1 ; warps db $7, $0, $8, SS_ANNE_2 db $2 ; signs db $1, $4, $2 ; SSAnne7Text2 db $2, $1, $3 ; SSAnne7Text3 db $1 ; people db SPRITE_SS_CAPTAIN, $2 + 4, $4 + 4, $ff, $d1, $1 ; person ; warp-to EVENT_DISP $3, $7, $0 ; SS_ANNE_2 SSAnne7Blocks: ; 0x6195e 12 INCBIN "maps/ssanne7.blk" SSAnne8_h: ; 0x6196a to 0x61976 (12 bytes) (id=102) db $0d ; tileset db SS_ANNE_8_HEIGHT, SS_ANNE_8_WIDTH ; dimensions (y, x) dw SSAnne8Blocks, SSAnne8Texts, SSAnne8Script ; blocks, texts, scripts db $00 ; connections dw SSAnne8Object ; objects SSAnne8Script: ; 0x61976 call $3c3c ld hl, SSAnne8TrainerHeaders ld de, SSAnne8Script_Unknown61989 ld a, [$d608] call $3160 ld [$d608], a ret ; 0x61989 SSAnne8Script_Unknown61989: ; 0x61989 INCBIN "baserom.gbc",$61989,$6 SSAnne8Texts: ; 0x6198f dw SSAnne8Text1, SSAnne8Text2, SSAnne8Text3, SSAnne8Text4, SSAnne8Text5, SSAnne8Text6, SSAnne8Text7, SSAnne8Text8, SSAnne8Text9, SSAnne8Text10, SSAnne8Text11 SSAnne8TrainerHeaders: SSAnne8TrainerHeader0: ; 0x619a5 db $1 ; flag's bit db ($2 << 4) ; trainer's view range dw $d805 ; flag's byte dw SSAnne8BattleText1 ; 0x5a0b TextBeforeBattle dw SSAnne8AfterBattleText1 ; 0x5a15 TextAfterBattle dw SSAnne8EndBattleText1 ; 0x5a10 TextEndBattle dw SSAnne8EndBattleText1 ; 0x5a10 TextEndBattle ; 0x619b1 SSAnne8TrainerHeader1: ; 0x619b1 db $2 ; flag's bit db ($3 << 4) ; trainer's view range dw $d805 ; flag's byte dw SSAnne8BattleText2 ; 0x5a1a TextBeforeBattle dw SSAnne8AfterBattleText2 ; 0x5a24 TextAfterBattle dw SSAnne8EndBattleText2 ; 0x5a1f TextEndBattle dw SSAnne8EndBattleText2 ; 0x5a1f TextEndBattle ; 0x619bd SSAnne8TrainerHeader2: ; 0x619bd db $3 ; flag's bit db ($2 << 4) ; trainer's view range dw $d805 ; flag's byte dw SSAnne8BattleText3 ; 0x5a29 TextBeforeBattle dw SSAnne8AfterBattleText3 ; 0x5a33 TextAfterBattle dw SSAnne8EndBattleText3 ; 0x5a2e TextEndBattle dw SSAnne8EndBattleText3 ; 0x5a2e TextEndBattle ; 0x619c9 SSAnne8TrainerHeader3: ; 0x619c9 db $4 ; flag's bit db ($2 << 4) ; trainer's view range dw $d805 ; flag's byte dw SSAnne8BattleText4 ; 0x5a38 TextBeforeBattle dw SSAnne8AfterBattleText4 ; 0x5a42 TextAfterBattle dw SSAnne8EndBattleText4 ; 0x5a3d TextEndBattle dw SSAnne8EndBattleText4 ; 0x5a3d TextEndBattle ; 0x619d5 db $ff SSAnne8Text1: ; 0x619d6 db $08 ; asm ld hl, SSAnne8TrainerHeader0 call LoadTrainerHeader jp TextScriptEnd SSAnne8Text2: ; 0x619e0 db $08 ; asm ld hl, SSAnne8TrainerHeader1 call LoadTrainerHeader jp TextScriptEnd SSAnne8Text3: ; 0x619ea db $08 ; asm ld hl, SSAnne8TrainerHeader2 call LoadTrainerHeader jp TextScriptEnd SSAnne8Text4: ; 0x619f4 db $08 ; asm ld hl, SSAnne8TrainerHeader3 call LoadTrainerHeader jp TextScriptEnd SSAnne8Text8: ; 0x619fe TX_FAR _SSAnne8Text8 db $08 ; asm ld a, $65 call $13d0 jp TextScriptEnd SSAnne8BattleText1: ; 0x61a0b TX_FAR _SSAnne8BattleText1 db $50 ; 0x61a0b + 5 bytes SSAnne8EndBattleText1: ; 0x61a10 TX_FAR _SSAnne8EndBattleText1 db $50 ; 0x61a10 + 5 bytes SSAnne8AfterBattleText1: ; 0x61a15 TX_FAR _SSAnne8AfterBattleText1 db $50 ; 0x61a15 + 5 bytes SSAnne8BattleText2: ; 0x61a1a TX_FAR _SSAnne8BattleText2 db $50 ; 0x61a1a + 5 bytes SSAnne8EndBattleText2: ; 0x61a1f TX_FAR _SSAnne8EndBattleText2 db $50 ; 0x61a1f + 5 bytes UnnamedText_61a24: ; 0x61a24 TX_FAR _UnnamedText_61a24 db $50 ; 0x61a24 + 5 bytes SSAnne8BattleText3: ; 0x61a29 TX_FAR _SSAnne8BattleText3 db $50 ; 0x61a29 + 5 bytes SSAnne8EndBattleText3: ; 0x61a2e TX_FAR _SSAnne8EndBattleText3 db $50 ; 0x61a2e + 5 bytes SSAnne8AfterBattleText3: ; 0x61a33 TX_FAR _SSAnne8AfterBattleText3 db $50 ; 0x61a33 + 5 bytes SSAnne8BattleText4: ; 0x61a38 TX_FAR _SSAnne8BattleText4 db $50 ; 0x61a38 + 5 bytes SSAnne8EndBattleText4: ; 0x61a3d TX_FAR _SSAnne8EndBattleText4 db $50 ; 0x61a3d + 5 bytes SSAnne8AfterBattleText4: ; 0x61a42 TX_FAR _SSAnne8AfterBattleText4 db $50 ; 0x61a42 + 5 bytes SSAnne8Text5: ; 0x61a47 TX_FAR _SSAnne8Text5 db $50 SSAnne8Text6: ; 0x61a4c TX_FAR _SSAnne8Text6 db $50 SSAnne8Text7: ; 0x61a51 TX_FAR _SSAnne8Text7 db $50 SSAnne8Text9: ; 0x61a56 TX_FAR _SSAnne8Text9 db $50 SSAnne8Text11: ; 0x61a5b TX_FAR _SSAnne8Text11 db $50 SSAnne8Object: ; 0x61a60 (size=127) db $c ; border tile db $6 ; warps db $0, $0, $2, SS_ANNE_1 db $0, $a, $3, SS_ANNE_1 db $0, $14, $4, SS_ANNE_1 db $a, $0, $5, SS_ANNE_1 db $a, $a, $6, SS_ANNE_1 db $a, $14, $7, SS_ANNE_1 db $0 ; signs db $b ; people db SPRITE_GENTLEMAN, $3 + 4, $2 + 4, $ff, $d2, $41, GENTLEMAN + $C8, $1 ; trainer db SPRITE_GENTLEMAN, $4 + 4, $b + 4, $ff, $d1, $42, GENTLEMAN + $C8, $2 ; trainer db SPRITE_BUG_CATCHER, $e + 4, $b + 4, $ff, $d1, $43, YOUNGSTER + $C8, $8 ; trainer db SPRITE_LASS, $b + 4, $d + 4, $ff, $d2, $44, LASS + $C8, $b ; trainer db SPRITE_GIRL, $3 + 4, $16 + 4, $fe, $1, $5 ; person db SPRITE_FAT_BALD_GUY, $e + 4, $0 + 4, $ff, $ff, $6 ; person db SPRITE_LITTLE_GIRL, $b + 4, $2 + 4, $ff, $d0, $7 ; person db SPRITE_CLEFAIRY, $b + 4, $3 + 4, $ff, $d0, $8 ; person db SPRITE_GIRL, $d + 4, $a + 4, $ff, $d3, $9 ; person db SPRITE_BALL, $f + 4, $c + 4, $ff, $ff, $8a, TM_08 ; item db SPRITE_GENTLEMAN, $d + 4, $15 + 4, $fe, $2, $b ; person ; warp-to EVENT_DISP $c, $0, $0 ; SS_ANNE_1 EVENT_DISP $c, $0, $a ; SS_ANNE_1 EVENT_DISP $c, $0, $14 ; SS_ANNE_1 EVENT_DISP $c, $a, $0 ; SS_ANNE_1 EVENT_DISP $c, $a, $a ; SS_ANNE_1 EVENT_DISP $c, $a, $14 ; SS_ANNE_1 SSAnne8Blocks: ; 0x61adf 96 INCBIN "maps/ssanne8.blk" SSAnne9_h: ; 0x61b3f to 0x61b4b (12 bytes) (id=103) db $0d ; tileset db SS_ANNE_9_HEIGHT, SS_ANNE_9_WIDTH ; dimensions (y, x) dw SSAnne9Blocks, SSAnne9Texts, SSAnne9Script ; blocks, texts, scripts db $00 ; connections dw SSAnne9Object ; objects SSAnne9Script: ; 0x61b4b ld a, $1 ld [$cf0c], a xor a ld [$cc3c], a ld hl, SSAnne9TrainerHeaders ld de, SSAnne9Script_Unknown61b64 ld a, [$d609] call $3160 ld [$d609], a ret ; 0x61b64 SSAnne9Script_Unknown61b64: ; 0x61b64 INCBIN "baserom.gbc",$61b64,$6 SSAnne9Texts: ; 0x61b6a dw SSAnne9Text1, SSAnne9Text2, SSAnne9Text3, SSAnne9Text4, SSAnne9Text5, SSAnne9Text6, SSAnne9Text7, SSAnne9Text8, SSAnne9Text9, SSAnne9Text10, SSAnne9Text11, SSAnne9Text12, SSAnne9Text13 SSAnne9TrainerHeaders: SSAnne9TrainerHeader0: ; 0x61b84 db $1 ; flag's bit db ($2 << 4) ; trainer's view range dw $d807 ; flag's byte dw SSAnne9BattleText1 ; 0x5c51 TextBeforeBattle dw SSAnne9AfterBattleText1 ; 0x5c5b TextAfterBattle dw SSAnne9EndBattleText1 ; 0x5c56 TextEndBattle dw SSAnne9EndBattleText1 ; 0x5c56 TextEndBattle ; 0x61b90 SSAnne9TrainerHeader1: ; 0x61b90 db $2 ; flag's bit db ($3 << 4) ; trainer's view range dw $d807 ; flag's byte dw SSAnne9BattleText2 ; 0x5c60 TextBeforeBattle dw SSAnne9AfterBattleText2 ; 0x5c6a TextAfterBattle dw SSAnne9EndBattleText2 ; 0x5c65 TextEndBattle dw SSAnne9EndBattleText2 ; 0x5c65 TextEndBattle ; 0x61b9c SSAnne9TrainerHeader2: ; 0x61b9c db $3 ; flag's bit db ($3 << 4) ; trainer's view range dw $d807 ; flag's byte dw SSAnne9BattleText3 ; 0x5c6f TextBeforeBattle dw SSAnne9AfterBattleText3 ; 0x5c79 TextAfterBattle dw SSAnne9EndBattleText3 ; 0x5c74 TextEndBattle dw SSAnne9EndBattleText3 ; 0x5c74 TextEndBattle ; 0x61ba8 SSAnne9TrainerHeader3: ; 0x61ba8 db $4 ; flag's bit db ($2 << 4) ; trainer's view range dw $d807 ; flag's byte dw SSAnne9BattleText4 ; 0x5c7e TextBeforeBattle dw SSAnne9AfterBattleText4 ; 0x5c88 TextAfterBattle dw SSAnne9EndBattleText4 ; 0x5c83 TextEndBattle dw SSAnne9EndBattleText4 ; 0x5c83 TextEndBattle ; 0x61bb4 db $ff SSAnne9Text1: ; 0x61bb5 db $08 ; asm ld hl, SSAnne9TrainerHeader0 call LoadTrainerHeader jp TextScriptEnd SSAnne9Text2: ; 0x61bbf db $08 ; asm ld hl, SSAnne9TrainerHeader1 call LoadTrainerHeader jp TextScriptEnd SSAnne9Text3: ; 0x61bc9 db $08 ; asm ld hl, SSAnne9TrainerHeader2 call LoadTrainerHeader jp TextScriptEnd SSAnne9Text4: ; 0x61bd3 db $08 ; asm ld hl, SSAnne9TrainerHeader3 call LoadTrainerHeader jp TextScriptEnd SSAnne9Text5: ; 0x61bdd db $08 ; asm call $3719 ld hl, UnnamedText_61bf2 call PrintText call $3725 ld a, $84 call $349b jp TextScriptEnd UnnamedText_61bf2: ; 0x61bf2 TX_FAR _UnnamedText_61bf2 db $50 ; 0x61bf2 + 5 bytes SSAnne9Text7: ; 0x61bf7 db $08 ; asm ld hl, UnnamedText_61c01 call PrintText jp TextScriptEnd UnnamedText_61c01: ; 0x61c01 TX_FAR _UnnamedText_61c01 db $50 ; 0x61c01 + 5 bytes SSAnne9Text8: ; 0x61c06 db $08 ; asm ld hl, UnnamedText_61c10 call PrintText jp TextScriptEnd UnnamedText_61c10: ; 0x61c10 TX_FAR _UnnamedText_61c10 db $50 ; 0x61c10 + 5 bytes SSAnne9Text10: ; 0x61c15 db $08 ; asm ld hl, UnnamedText_61c1f call PrintText jp TextScriptEnd UnnamedText_61c1f: ; 0x61c1f TX_FAR _UnnamedText_61c1f db $50 ; 0x61c1f + 5 bytes SSAnne9Text11: ; 0x61c24 db $08 ; asm ld hl, UnnamedText_61c2e call PrintText jp TextScriptEnd UnnamedText_61c2e: ; 0x61c2e TX_FAR _UnnamedText_61c2e db $50 ; 0x61c2e + 5 bytes SSAnne9Text12: ; 0x61c33 db $08 ; asm ld hl, UnnamedText_61c3d call PrintText jp TextScriptEnd UnnamedText_61c3d: ; 0x61c3d TX_FAR _UnnamedText_61c3d db $50 ; 0x61c3d + 5 bytes SSAnne9Text13: ; 0x61c42 db $08 ; asm ld hl, UnnamedText_61c4c call PrintText jp TextScriptEnd UnnamedText_61c4c: ; 0x61c4c TX_FAR _UnnamedText_61c4c db $50 ; 0x61c4c + 5 bytes SSAnne9BattleText1: ; 0x61c51 TX_FAR _SSAnne9BattleText1 db $50 ; 0x61c51 + 5 bytes SSAnne9EndBattleText1: ; 0x61c56 TX_FAR _SSAnne9EndBattleText1 db $50 ; 0x61c56 + 5 bytes SSAnne9AfterBattleText1: ; 0x61c5b TX_FAR _SSAnne9AfterBattleText1 db $50 ; 0x61c5b + 5 bytes SSAnne9BattleText2: ; 0x61c60 TX_FAR _SSAnne9BattleText2 db $50 ; 0x61c60 + 5 bytes SSAnne9EndBattleText2: ; 0x61c65 TX_FAR _SSAnne9EndBattleText2 db $50 ; 0x61c65 + 5 bytes SSAnne9AfterBattleText2: ; 0x61c6a TX_FAR _SSAnne9AfterBattleText2 db $50 ; 0x61c6a + 5 bytes SSAnne9BattleText3: ; 0x61c6f TX_FAR _SSAnne9BattleText3 db $50 ; 0x61c6f + 5 bytes SSAnne9EndBattleText3: ; 0x61c74 TX_FAR _SSAnne9EndBattleText3 db $50 ; 0x61c74 + 5 bytes SSAnne9AfterBattleText3: ; 0x61c79 TX_FAR _SSAnne9AfterBattleText3 db $50 ; 0x61c79 + 5 bytes SSAnne9BattleText4: ; 0x61c7e TX_FAR _SSAnne9BattleText4 db $50 ; 0x61c7e + 5 bytes SSAnne9EndBattleText4: ; 0x61c83 TX_FAR _SSAnne9EndBattleText4 db $50 ; 0x61c83 + 5 bytes SSAnne9AfterBattleText4: ; 0x61c88 TX_FAR _SSAnne9AfterBattleText4 db $50 ; 0x61c88 + 5 bytes SSAnne9Object: ; 0x61c8d (size=188) db $c ; border tile db $c ; warps db $5, $2, $0, SS_ANNE_2 db $5, $3, $0, SS_ANNE_2 db $5, $c, $1, SS_ANNE_2 db $5, $d, $1, SS_ANNE_2 db $5, $16, $2, SS_ANNE_2 db $5, $17, $2, SS_ANNE_2 db $f, $2, $3, SS_ANNE_2 db $f, $3, $3, SS_ANNE_2 db $f, $c, $4, SS_ANNE_2 db $f, $d, $4, SS_ANNE_2 db $f, $16, $5, SS_ANNE_2 db $f, $17, $5, SS_ANNE_2 db $0 ; signs db $d ; people db SPRITE_GENTLEMAN, $2 + 4, $a + 4, $ff, $d3, $41, GENTLEMAN + $C8, $3 ; trainer db SPRITE_FISHER2, $4 + 4, $d + 4, $ff, $d2, $42, FISHER + $C8, $1 ; trainer db SPRITE_GENTLEMAN, $e + 4, $0 + 4, $ff, $d3, $43, GENTLEMAN + $C8, $5 ; trainer db SPRITE_LASS, $b + 4, $2 + 4, $ff, $d0, $44, LASS + $C8, $c ; trainer db SPRITE_GENTLEMAN, $2 + 4, $1 + 4, $ff, $d0, $5 ; person db SPRITE_BALL, $1 + 4, $c + 4, $ff, $ff, $86, MAX_ETHER ; item db SPRITE_GENTLEMAN, $2 + 4, $15 + 4, $ff, $d0, $7 ; person db SPRITE_OLD_PERSON, $1 + 4, $16 + 4, $ff, $d0, $8 ; person db SPRITE_BALL, $c + 4, $0 + 4, $ff, $ff, $89, RARE_CANDY ; item db SPRITE_GENTLEMAN, $c + 4, $c + 4, $ff, $d0, $a ; person db SPRITE_YOUNG_BOY, $e + 4, $b + 4, $ff, $ff, $b ; person db SPRITE_BRUNETTE_GIRL, $c + 4, $16 + 4, $ff, $d2, $c ; person db SPRITE_FOULARD_WOMAN, $c + 4, $14 + 4, $ff, $d3, $d ; person ; warp-to EVENT_DISP $c, $5, $2 ; SS_ANNE_2 EVENT_DISP $c, $5, $3 ; SS_ANNE_2 EVENT_DISP $c, $5, $c ; SS_ANNE_2 EVENT_DISP $c, $5, $d ; SS_ANNE_2 EVENT_DISP $c, $5, $16 ; SS_ANNE_2 EVENT_DISP $c, $5, $17 ; SS_ANNE_2 EVENT_DISP $c, $f, $2 ; SS_ANNE_2 EVENT_DISP $c, $f, $3 ; SS_ANNE_2 EVENT_DISP $c, $f, $c ; SS_ANNE_2 EVENT_DISP $c, $f, $d ; SS_ANNE_2 EVENT_DISP $c, $f, $16 ; SS_ANNE_2 EVENT_DISP $c, $f, $17 ; SS_ANNE_2 SSAnne10_h: ; 0x61d49 to 0x61d55 (12 bytes) (id=104) db $0d ; tileset db SS_ANNE_10_HEIGHT, SS_ANNE_10_WIDTH ; dimensions (y, x) dw SSAnne10Blocks, SSAnne10Texts, SSAnne10Script ; blocks, texts, scripts db $00 ; connections dw SSAnne10Object ; objects SSAnne10Script: ; 0x61d55 call $3c3c ld hl, SSAnne10TrainerHeaders ld de, SSAnne10Script_Unknown61d68 ld a, [$d629] call $3160 ld [$d629], a ret ; 0x61d68 SSAnne10Script_Unknown61d68: ; 0x61d68 INCBIN "baserom.gbc",$61d68,$6 SSAnne10Texts: ; 0x61d6e dw SSAnne10Text1, SSAnne10Text2, SSAnne10Text3, SSAnne10Text4, SSAnne10Text5, SSAnne10Text6, SSAnne10Text7, SSAnne10Text8, SSAnne10Text9, SSAnne10Text10, SSAnne10Text11 SSAnne10TrainerHeaders: SSAnne10TrainerHeader0: ; 0x61d84 db $1 ; flag's bit db ($2 << 4) ; trainer's view range dw $d809 ; flag's byte dw SSAnne10BattleText1 ; 0x5e16 TextBeforeBattle dw SSAnne10AfterBattleText1 ; 0x5e20 TextAfterBattle dw SSAnne10EndBattleText1 ; 0x5e1b TextEndBattle dw SSAnne10EndBattleText1 ; 0x5e1b TextEndBattle ; 0x61d90 SSAnne10TrainerHeader1: ; 0x61d90 db $2 ; flag's bit db ($3 << 4) ; trainer's view range dw $d809 ; flag's byte dw SSAnne10BattleText2 ; 0x5e25 TextBeforeBattle dw SSAnne10AfterBattleText2 ; 0x5e2f TextAfterBattle dw SSAnne10EndBattleText2 ; 0x5e2a TextEndBattle dw SSAnne10EndBattleText2 ; 0x5e2a TextEndBattle ; 0x61d9c SSAnne10TrainerHeader2: ; 0x61d9c db $3 ; flag's bit db ($2 << 4) ; trainer's view range dw $d809 ; flag's byte dw SSAnne10BattleText3 ; 0x5e34 TextBeforeBattle dw SSAnne10AfterBattleText3 ; 0x5e3e TextAfterBattle dw SSAnne10EndBattleText3 ; 0x5e39 TextEndBattle dw SSAnne10EndBattleText3 ; 0x5e39 TextEndBattle ; 0x61da8 SSAnne10TrainerHeader3: ; 0x61da8 db $4 ; flag's bit db ($2 << 4) ; trainer's view range dw $d809 ; flag's byte dw SSAnne10BattleText4 ; 0x5e43 TextBeforeBattle dw SSAnne10AfterBattleText4 ; 0x5e4d TextAfterBattle dw SSAnne10EndBattleText4 ; 0x5e48 TextEndBattle dw SSAnne10EndBattleText4 ; 0x5e48 TextEndBattle ; 0x61db4 SSAnne10TrainerHeader4: ; 0x61db4 db $5 ; flag's bit db ($2 << 4) ; trainer's view range dw $d809 ; flag's byte dw SSAnne10BattleText5 ; 0x5e52 TextBeforeBattle dw SSAnne10AfterBattleText5 ; 0x5e5c TextAfterBattle dw SSAnne10EndBattleText5 ; 0x5e57 TextEndBattle dw SSAnne10EndBattleText5 ; 0x5e57 TextEndBattle ; 0x61dc0 SSAnne10TrainerHeader5: ; 0x61dc0 db $6 ; flag's bit db ($3 << 4) ; trainer's view range dw $d809 ; flag's byte dw SSAnne10BattleText6 ; 0x5e61 TextBeforeBattle dw SSAnne10AfterBattleText6 ; 0x5e6b TextAfterBattle dw SSAnne10EndBattleText6 ; 0x5e66 TextEndBattle dw SSAnne10EndBattleText6 ; 0x5e66 TextEndBattle ; 0x61dcc db $ff SSAnne10Text1: ; 0x61dcd db $08 ; asm ld hl, SSAnne10TrainerHeader0 call LoadTrainerHeader jp TextScriptEnd SSAnne10Text2: ; 0x61dd7 db $08 ; asm ld hl, SSAnne10TrainerHeader1 call LoadTrainerHeader jp TextScriptEnd SSAnne10Text3: ; 0x61de1 db $08 ; asm ld hl, SSAnne10TrainerHeader2 call LoadTrainerHeader jp TextScriptEnd SSAnne10Text4: ; 0x61deb db $08 ; asm ld hl, SSAnne10TrainerHeader3 call LoadTrainerHeader jp TextScriptEnd SSAnne10Text5: ; 0x61df5 db $08 ; asm ld hl, SSAnne10TrainerHeader4 call LoadTrainerHeader jp TextScriptEnd SSAnne10Text6: ; 0x61dff db $08 ; asm ld hl, SSAnne10TrainerHeader5 call LoadTrainerHeader jp TextScriptEnd SSAnne10Text8: ; 0x61e09 TX_FAR _SSAnne10Text8 db $8 ; 0x61e0d ld a, $29 call $13d0 jp TextScriptEnd SSAnne10BattleText1: ; 0x61e16 TX_FAR _SSAnne10BattleText1 db $50 ; 0x61e16 + 5 bytes SSAnne10EndBattleText1: ; 0x61e1b TX_FAR _SSAnne10EndBattleText1 db $50 ; 0x61e1b + 5 bytes SSAnne10AfterBattleText1: ; 0x61e20 TX_FAR _SSAnne10AfterBattleText1 db $50 ; 0x61e20 + 5 bytes SSAnne10BattleText2: ; 0x61e25 TX_FAR _SSAnne10BattleText2 db $50 ; 0x61e25 + 5 bytes SSAnne10EndBattleText2: ; 0x61e2a TX_FAR _SSAnne10EndBattleText2 db $50 ; 0x61e2a + 5 bytes SSAnne10AfterBattleText2: ; 0x61e2f TX_FAR _SSAnne10AfterBattleText2 db $50 ; 0x61e2f + 5 bytes SSAnne10BattleText3: ; 0x61e34 TX_FAR _SSAnne10BattleText3 db $50 ; 0x61e34 + 5 bytes SSAnne10EndBattleText3: ; 0x61e39 TX_FAR _SSAnne10EndBattleText3 db $50 ; 0x61e39 + 5 bytes SSAnne10AfterBattleText3: ; 0x61e3e TX_FAR _SSAnne10AfterBattleText3 db $50 ; 0x61e3e + 5 bytes SSAnne10BattleText4: ; 0x61e43 TX_FAR _SSAnne10BattleText4 db $50 ; 0x61e43 + 5 bytes SSAnne10EndBattleText4: ; 0x61e48 TX_FAR _SSAnne10EndBattleText4 db $50 ; 0x61e48 + 5 bytes SSAnne10AfterBattleText4: ; 0x61e4d TX_FAR _SSAnne10AfterBattleText4 db $50 ; 0x61e4d + 5 bytes SSAnne10BattleText5: ; 0x61e52 TX_FAR _SSAnne10BattleText5 db $50 ; 0x61e52 + 5 bytes SSAnne10EndBattleText5: ; 0x61e57 TX_FAR _SSAnne10EndBattleText5 db $50 ; 0x61e57 + 5 bytes SSAnne10AfterBattleText5: ; 0x61e5c TX_FAR _SSAnne10AfterBattleText5 db $50 ; 0x61e5c + 5 bytes SSAnne10BattleText6: ; 0x61e61 TX_FAR _SSAnne10BattleText6 db $50 ; 0x61e61 + 5 bytes SSAnne10EndBattleText6: ; 0x61e66 TX_FAR _SSAnne10EndBattleText6 db $50 ; 0x61e66 + 5 bytes SSAnne10AfterBattleText6: ; 0x61e6b TX_FAR _SSAnne10AfterBattleText6 db $50 ; 0x61e6b + 5 bytes SSAnne10Text7: ; 0x61e70 TX_FAR _SSAnne10Text7 db $50 SSAnne10Object: ; 0x61e75 (size=165) db $c ; border tile db $a ; warps db $5, $2, $4, SS_ANNE_4 db $5, $3, $4, SS_ANNE_4 db $5, $c, $3, SS_ANNE_4 db $5, $d, $3, SS_ANNE_4 db $5, $16, $2, SS_ANNE_4 db $5, $17, $2, SS_ANNE_4 db $f, $2, $1, SS_ANNE_4 db $f, $3, $1, SS_ANNE_4 db $f, $c, $0, SS_ANNE_4 db $f, $d, $0, SS_ANNE_4 db $0 ; signs db $b ; people db SPRITE_SAILOR, $d + 4, $0 + 4, $ff, $d0, $41, SAILOR + $C8, $3 ; trainer db SPRITE_SAILOR, $b + 4, $2 + 4, $ff, $d0, $42, SAILOR + $C8, $4 ; trainer db SPRITE_SAILOR, $3 + 4, $c + 4, $ff, $d2, $43, SAILOR + $C8, $5 ; trainer db SPRITE_SAILOR, $2 + 4, $16 + 4, $ff, $d0, $44, SAILOR + $C8, $6 ; trainer db SPRITE_SAILOR, $2 + 4, $0 + 4, $ff, $d3, $45, SAILOR + $C8, $7 ; trainer db SPRITE_FISHER2, $4 + 4, $0 + 4, $ff, $d3, $46, FISHER + $C8, $2 ; trainer db SPRITE_BLACK_HAIR_BOY_2, $d + 4, $a + 4, $ff, $d3, $7 ; person db SPRITE_SLOWBRO, $c + 4, $b + 4, $ff, $ff, $8 ; person db SPRITE_BALL, $2 + 4, $14 + 4, $ff, $ff, $89, ETHER ; item db SPRITE_BALL, $2 + 4, $a + 4, $ff, $ff, $8a, TM_44 ; item db SPRITE_BALL, $b + 4, $c + 4, $ff, $ff, $8b, MAX_POTION ; item ; warp-to EVENT_DISP $c, $5, $2 ; SS_ANNE_4 EVENT_DISP $c, $5, $3 ; SS_ANNE_4 EVENT_DISP $c, $5, $c ; SS_ANNE_4 EVENT_DISP $c, $5, $d ; SS_ANNE_4 EVENT_DISP $c, $5, $16 ; SS_ANNE_4 EVENT_DISP $c, $5, $17 ; SS_ANNE_4 EVENT_DISP $c, $f, $2 ; SS_ANNE_4 EVENT_DISP $c, $f, $3 ; SS_ANNE_4 EVENT_DISP $c, $f, $c ; SS_ANNE_4 EVENT_DISP $c, $f, $d ; SS_ANNE_4 UndergroundPathNS_h: ; 0x61f1a to 0x61f26 (12 bytes) (id=119) db $0b ; tileset db UNDERGROUND_PATH_NS_HEIGHT, UNDERGROUND_PATH_NS_WIDTH ; dimensions (y, x) dw UndergroundPathNSBlocks, UndergroundPathNSTexts, UndergroundPathNSScript ; blocks, texts, scripts db $00 ; connections dw UndergroundPathNSObject ; objects UndergroundPathNSScript: ; 0x61f26 jp $3c3c ; 0x61f29 UndergroundPathNSTexts: db $50 UndergroundPathNSObject: ; 0x61f2a (size=20) db $1 ; border tile db $2 ; warps db $4, $5, $2, PATH_ENTRANCE_ROUTE_5 db $29, $2, $2, PATH_ENTRANCE_ROUTE_6 db $0 ; signs db $0 ; people ; warp-to EVENT_DISP $4, $4, $5 ; PATH_ENTRANCE_ROUTE_5 EVENT_DISP $4, $29, $2 ; PATH_ENTRANCE_ROUTE_6 UndergroundPathWE_h: ; 0x61f3e to 0x61f4a (12 bytes) (id=121) db $0b ; tileset db UNDERGROUND_PATH_WE_HEIGHT, UNDERGROUND_PATH_WE_WIDTH ; dimensions (y, x) dw $41f4, UndergroundPathWETexts, UndergroundPathWEScript ; blocks, texts, scripts db $00 ; connections dw UndergroundPathWEObject ; objects UndergroundPathWEScript: ; 0x61f4a jp $3c3c ; 0x61f4d UndergroundPathWETexts: db $50 UndergroundPathWEObject: ; 0x61f4e (size=20) db $1 ; border tile db $2 ; warps db $5, $2, $2, PATH_ENTRANCE_ROUTE_7 db $2, $2f, $2, PATH_ENTRANCE_ROUTE_8 db $0 ; signs db $0 ; people ; warp-to EVENT_DISP $19, $5, $2 ; PATH_ENTRANCE_ROUTE_7 EVENT_DISP $19, $2, $2f ; PATH_ENTRANCE_ROUTE_8 DiglettsCave_h: ; 0x61f62 to 0x61f6e (12 bytes) (id=197) db $11 ; tileset db DIGLETTS_CAVE_HEIGHT, DIGLETTS_CAVE_WIDTH ; dimensions (y, x) dw DiglettsCaveBlocks, DiglettsCaveTexts, DiglettsCaveScript ; blocks, texts, scripts db $00 ; connections dw DiglettsCaveObject ; objects DiglettsCaveScript: ; 0x61f6e jp $3c3c ; 0x61f71 DiglettsCaveTexts: db $50 DiglettsCaveObject: ; 0x61f72 (size=20) db $19 ; border tile db $2 ; warps db $5, $5, $2, DIGLETTS_CAVE_EXIT db $1f, $25, $2, DIGLETTS_CAVE_ENTRANCE db $0 ; signs db $0 ; people ; warp-to EVENT_DISP $14, $5, $5 ; DIGLETTS_CAVE_EXIT EVENT_DISP $14, $1f, $25 ; DIGLETTS_CAVE_ENTRANCE DiglettsCaveBlocks: ; 0x61f86 360 INCBIN "maps/diglettscave.blk" SilphCo11_h: ; 0x620ee to 0x620fa (12 bytes) (id=235) db $10 ; tileset db SILPH_CO_11F_HEIGHT, SILPH_CO_11F_WIDTH ; dimensions (y, x) dw SilphCo11Blocks, SilphCo11Texts, SilphCo11Script ; blocks, texts, scripts db $00 ; connections dw SilphCo11Object ; objects SilphCo11Script: ; 0x620fa call SilphCo11Script_Unknown62110 call $3c3c ld hl, SilphCo11TrainerHeaders ld de, $61cf ld a, [$d659] call $3160 ld [$d659], a ret ; 0x62110 SilphCo11Script_Unknown62110: ; 0x62110 INCBIN "baserom.gbc",$62110,$1a7 SilphCo11Texts: ; 0x622b7 dw SilphCo11Text1, SilphCo11Text2, SilphCo11Text3, SilphCo11Text4, SilphCo11Text5, SilphCo11Text6 SilphCo11TrainerHeaders: SilphCo11TrainerHeader0: ; 0x622c3 db $4 ; flag's bit db ($4 << 4) ; trainer's view range dw $d837 ; flag's byte dw SilphCo11BattleText1 ; 0x6344 TextBeforeBattle dw SilphCo11AfterBattleText1 ; 0x634e TextAfterBattle dw SilphCo11EndBattleText1 ; 0x6349 TextEndBattle dw SilphCo11EndBattleText1 ; 0x6349 TextEndBattle ; 0x622cf SilphCo11TrainerHeader1: ; 0x622cf db $5 ; flag's bit db ($3 << 4) ; trainer's view range dw $d837 ; flag's byte dw SilphCo11BattleText2 ; 0x635d TextBeforeBattle dw SilphCo11AfterBattleText2 ; 0x6367 TextAfterBattle dw SilphCo11EndBattleText2 ; 0x6362 TextEndBattle dw SilphCo11EndBattleText2 ; 0x6362 TextEndBattle ; 0x622db db $ff SilphCo11Text1: ; 0x622dc db $08 ; asm ld a, [$d838] bit 5, a jp nz, .asm_62308 ld hl, SilphCoPresidentText call PrintText ld bc, (MASTER_BALL << 8) | 1 call GiveItem jr nc, .asm_36088 ; 0x622f1 ld hl, ReceivedSilphCoMasterBallText call PrintText ld hl, $d838 set 5, [hl] jr .asm_fd405 ; 0x622fe .asm_36088 ; 0x62300 ld hl, SilphCoMasterBallNoRoomText call PrintText jr .asm_fd405 ; 0x62306 .asm_62308 ; 0x62308 ld hl, UnnamedText_6231c call PrintText .asm_fd405 ; 0x6230e jp TextScriptEnd SilphCoPresidentText: ; 0x62311 TX_FAR _SilphCoPresidentText db $50 ; 0x62311 + 5 bytes ReceivedSilphCoMasterBallText: ; 0x62316 TX_FAR _ReceivedSilphCoMasterBallText ; 0x84f63 db $11, $50 ; 0x62316 + 6 bytes = 0x6231c UnnamedText_6231c: ; 0x6231c TX_FAR _UnnamedText_6231c db $50 ; 0x6231c + 5 bytes SilphCoMasterBallNoRoomText: ; 0x62321 TX_FAR _SilphCoMasterBallNoRoomText db $50 ; 0x62321 + 5 bytes SilphCo11Text2: ; 0x62326 TX_FAR _SilphCo11Text2 db $50 SilphCo11Text3: ; 0x6232b TX_FAR _SilphCo11Text3 db $50 UnnamedText_62330: ; 0x62330 TX_FAR _UnnamedText_62330 db $50 ; 0x62330 + 5 bytes SilphCo11Text6: ; 0x62335 TX_FAR _UnnamedText_62335 db $50 ; 0x62335 + 5 bytes SilphCo11Text4: ; 0x6233a db $08 ; asm ld hl, SilphCo11TrainerHeader0 call LoadTrainerHeader jp TextScriptEnd SilphCo11BattleText1: ; 0x62344 TX_FAR _SilphCo11BattleText1 db $50 ; 0x62344 + 5 bytes SilphCo11EndBattleText1: ; 0x62349 TX_FAR _SilphCo11EndBattleText1 db $50 ; 0x62349 + 5 bytes SilphCo11AfterBattleText1: ; 0x6234e TX_FAR _SilphCo11AfterBattleText1 db $50 ; 0x6234e + 5 bytes SilphCo11Text5: ; 0x62353 db $08 ; asm ld hl, SilphCo11TrainerHeader1 call LoadTrainerHeader jp TextScriptEnd SilphCo11BattleText2: ; 0x6235d TX_FAR _SilphCo11BattleText2 db $50 ; 0x6235d + 5 bytes SilphCo11EndBattleText2: ; 0x62362 TX_FAR _SilphCo11EndBattleText2 db $50 ; 0x62362 + 5 bytes SilphCo11AfterBattleText2: ; 0x62367 TX_FAR _SilphCo11AfterBattleText2 db $50 ; 0x62367 + 5 bytes UnknownText_6236c: ; 0x6236c db $8 ld hl, UnnamedText_6237b call PrintText ld a, $aa call $349b jp TextScriptEnd ; 0x6237b UnnamedText_6237b: ; 0x6237b TX_FAR _UnnamedText_6237b db $50 ; 0x6237b + 5 bytes SilphCo11Object: ; 0x62380 (size=72) db $d ; border tile db $4 ; warps db $0, $9, $1, SILPH_CO_10F db $0, $d, $0, SILPH_CO_ELEVATOR db $5, $5, $9, $ff db $2, $3, $3, SILPH_CO_7F db $0 ; signs db $5 ; people db SPRITE_MR_MASTERBALL, $5 + 4, $7 + 4, $ff, $d0, $1 ; person db SPRITE_FOULARD_WOMAN, $5 + 4, $a + 4, $ff, $d0, $2 ; person db SPRITE_GIOVANNI, $9 + 4, $6 + 4, $ff, $d0, $43, GIOVANNI + $C8, $2 ; trainer db SPRITE_ROCKET, $10 + 4, $3 + 4, $ff, $d1, $44, ROCKET + $C8, $29 ; trainer db SPRITE_ROCKET, $9 + 4, $f + 4, $ff, $d1, $45, ROCKET + $C8, $28 ; trainer ; warp-to EVENT_DISP $9, $0, $9 ; SILPH_CO_10F EVENT_DISP $9, $0, $d ; SILPH_CO_ELEVATOR EVENT_DISP $9, $5, $5 EVENT_DISP $9, $2, $3 ; SILPH_CO_7F SilphCo11Blocks: ; 0x623c8 81 INCBIN "maps/silphco11.blk" INCBIN "baserom.gbc",$62419,$62453 - $62419 UnnamedText_62453: ; 0x62453 TX_FAR _UnnamedText_62453 db $50 ; 0x62453 + 5 bytes UnnamedText_62458: ; 0x62458 TX_FAR _UnnamedText_62458 db $50 ; 0x62458 + 5 bytes INCBIN "baserom.gbc",$6245d,$624a3 - $6245d UnnamedText_624a3: ; 0x624a3 TX_FAR _UnnamedText_624a3 db $50 ; 0x624a3 + 5 bytes UnnamedText_624a8: ; 0x624a8 TX_FAR _UnnamedText_624a8 db $50 ; 0x624a8 + 5 bytes UnnamedText_624ad: ; 0x624ad TX_FAR _UnnamedText_624ad db $50 ; 0x624ad + 5 bytes UnnamedText_624b2: ; 0x624b2 TX_FAR _UnnamedText_624b2 db $50 ; 0x624b2 + 5 bytes UnnamedText_624b7: ; 0x624b7 TX_FAR _UnnamedText_624b7 db $50 ; 0x624b7 + 5 bytes UnnamedText_624bc: ; 0x624bc TX_FAR _UnnamedText_624bc db $50 ; 0x624bc + 5 bytes UnnamedText_624c1: ; 0x624c1 TX_FAR _UnnamedText_624c1 db $50 ; 0x624c1 + 5 bytes UnnamedText_624c6: ; 0x624c6 TX_FAR _UnnamedText_624c6 db $50 ; 0x624c6 + 5 bytes UnnamedText_624cb: ; 0x624cb TX_FAR _UnnamedText_624cb db $50 ; 0x624cb + 5 bytes UnnamedText_624d0: ; 0x624d0 TX_FAR _UnnamedText_624d0 db $50 ; 0x624d0 + 5 bytes UnnamedText_624d5: ; 0x624d5 TX_FAR _UnnamedText_624d5 db $50 ; 0x624d5 + 5 bytes UnnamedText_624da: ; 0x624da TX_FAR _UnnamedText_624da db $50 ; 0x624da + 5 bytes UnnamedText_624df: ; 0x624df TX_FAR _UnnamedText_624df db $50 ; 0x624df + 5 bytes UnnamedText_624e4: ; 0x624e4 db $8 ld a, [$d838] bit 7, a ld hl, UnnamedText_624fd jr nz, .asm_624f2 ; 0x624ed $3 ld hl, UnnamedText_624f8 .asm_624f2 call PrintText jp TextScriptEnd ; 0x624f8 UnnamedText_624f8: ; 0x624f8 TX_FAR _UnnamedText_624f8 db $50 ; 0x624f8 + 5 bytes UnnamedText_624fd: ; 0x624fd TX_FAR _UnnamedText_624fd db $50 ; 0x624fd + 5 bytes UnnamedText_62502: ; 0x62502 TX_FAR _UnnamedText_62502 db $50 ; 0x62502 + 5 bytes INCBIN "baserom.gbc",$62507,$62511 - $62507 UnnamedText_62511: ; 0x62511 TX_FAR _UnnamedText_62511 db $50 ; 0x62511 + 5 bytes INCBIN "baserom.gbc",$62516,20 SECTION "bank19",DATA,BANK[$19] Tset00_GFX: INCBIN "gfx/tilesets/00.2bpp" Tset00_Block: INCBIN "gfx/blocksets/00.bst" Tset01_GFX: INCBIN "gfx/tilesets/01.2bpp" Tset01_Block: INCBIN "gfx/blocksets/01.bst" Tset08_GFX: INCBIN "gfx/tilesets/08.2bpp" Tset08_Block: INCBIN "gfx/blocksets/08.bst" Tset13_GFX: INCBIN "gfx/tilesets/13.2bpp" Tset13_Block: INCBIN "gfx/blocksets/13.bst" Tset0E_GFX: INCBIN "gfx/tilesets/0e.2bpp" Tset0E_Block: INCBIN "gfx/blocksets/0e.bst" Tset10_GFX: INCBIN "gfx/tilesets/10.2bpp" Tset10_Block: INCBIN "gfx/blocksets/10.bst" Tset17_GFX: INCBIN "gfx/tilesets/17.2bpp" Tset17_Block: INCBIN "gfx/blocksets/17.bst" SECTION "bank1A",DATA,BANK[$1A] DecrementPP: ; 0x68000 ; after using a move, decrement pp in battle and (if not transformed?) in party ld a, [de] cp a, STRUGGLE ret z ; if the pokemon is using "struggle", there's nothing to do ; we don't decrement PP for "struggle" ld hl, W_PLAYERBATTSTATUS1 ld a, [hli] ; load the W_PLAYERBATTSTATUS1 pokemon status flags and increment hl to load the ; W_PLAYERBATTSTATUS2 status flags later and a, 7 ; check to see if bits 0, 1, or 2 are set ret nz ; if any of these statuses are true, don't decrement PP bit 6, [hl] ; check 6th bit status flag on W_PLAYERBATTSTATUS2 ret nz ; and return if it is set ld hl, $D02D ; PP of first move (in battle) call .DecrementPP\@ ld a, [$D064] ; load pokemon status bits? bit 3, a ; XXX transform status? ret nz ; If it is, return. Pokemon Red stores the "current pokemon's" PP ; separately from the "Pokemon in your party's" PP. This is ; duplication -- in all cases *other* than Pokemon with Transform. ; Normally, this means we have to go on and make the same ; modification to the "party's pokemon" PP that we made to the ; "current pokemon's" PP. But, if we're dealing with a Transformed ; Pokemon, it has separate PP for the move set that it copied from ; its opponent, which is *not* the same as its real PP as part of your ; party. So we return, and don't do that part. ld hl, $D188 ; PP of first move (in party) ld a, [$CC2F] ; which mon in party is active ld bc, $2C ; XXX probably size of party pokemon's data structure call AddNTimes ; calculate address of the mon to modify .DecrementPP\@ ld a, [$CC2E] ; which move (0, 1, 2, 3) did we use? ld c, a ld b, 0 add hl ,bc ; calculate the address in memory of the PP we need to decrement ; based on the move chosen. dec [hl] ; Decrement PP ret ; 0x6802f Version_GFX: IF _RED INCBIN "gfx/red/redgreenversion.1bpp" ; 80 bytes ENDC IF _BLUE INCBIN "gfx/blue/blueversion.1bpp" ; 64 bytes ENDC Tset05_GFX: INCBIN "gfx/tilesets/05.2bpp" Tset05_Block: INCBIN "gfx/blocksets/05.bst" Tset02_GFX: INCBIN "gfx/tilesets/02.2bpp" Tset02_Block: INCBIN "gfx/blocksets/02.bst" Tset09_GFX: INCBIN "gfx/tilesets/09.2bpp" Tset09_Block: INCBIN "gfx/blocksets/09.bst" Tset03_GFX: INCBIN "gfx/tilesets/03.2bpp" Tset03_Block: INCBIN "gfx/blocksets/03.bst" Tset16_GFX: INCBIN "gfx/tilesets/16.2bpp" Tset16_Block: INCBIN "gfx/blocksets/16.bst" SECTION "bank1B",DATA,BANK[$1B] Tset0F_GFX: INCBIN "gfx/tilesets/0f.2bpp" Tset0F_Block: INCBIN "gfx/blocksets/0f.bst" Tset11_GFX: INCBIN "gfx/tilesets/11.2bpp" Tset11_Block: INCBIN "gfx/blocksets/11.bst" Tset12_GFX: INCBIN "gfx/tilesets/12.2bpp" Tset12_Block: INCBIN "gfx/blocksets/12.bst" Tset0D_GFX: INCBIN "gfx/tilesets/0d.2bpp" Tset0D_Block: INCBIN "gfx/blocksets/0d.bst" Tset14_GFX: INCBIN "gfx/tilesets/14.2bpp" Tset14_Block: INCBIN "gfx/blocksets/14.bst" Tset15_GFX: INCBIN "gfx/tilesets/15.2bpp" Tset15_Block: INCBIN "gfx/blocksets/15.bst" Tset0B_GFX: INCBIN "gfx/tilesets/0b.2bpp" Tset0B_Block: INCBIN "gfx/blocksets/0b.bst" SECTION "bank1C",DATA,BANK[$1C] INCBIN "baserom.gbc",$70000,$703fa - $70000 UnnamedText_703fa: ; 0x703fa TX_FAR _UnnamedText_703fa db $50 ; 0x703fa + 5 bytes UnnamedText_703ff: ; 0x703ff TX_FAR _UnnamedText_703ff db $50 ; 0x703ff + 5 bytes INCBIN "baserom.gbc",$70404,$70847 - $70404 UnnamedText_70847: ; 0x70847 TX_FAR _UnnamedText_70847 db $50 ; 0x70847 + 5 bytes UnnamedText_7084c: ; 0x7084c TX_FAR _UnnamedText_7084c db $50 ; 0x7084c + 5 bytes UnnamedText_70851: ; 0x70851 TX_FAR _UnnamedText_70851 db $50 ; 0x70851 + 5 bytes INCBIN "baserom.gbc",$70856,$8aa CompressedMap: ; 5100 ; you can decompress this file with the redrle program in the extras/ dir INCBIN "baserom.gbc",$71100,$711AB-$71100 INCBIN "baserom.gbc",$711AB,$71313-$711AB ExternalMapEntries: ; 5313 EMAP $2,$B,PalletTownName EMAP $2,$8,ViridianCityName EMAP $2,$3,PewterCityName EMAP $A,$2,CeruleanCityName EMAP $E,$5,LavenderTownName EMAP $A,$9,VermilionCityName EMAP $7,$5,CeladonCityName EMAP $8,$D,FuchsiaCityName EMAP $2,$F,CinnabarIslandName EMAP $0,$2,IndigoPlateauName EMAP $A,$5,SaffronCityName EMAP $0,$0,PalletTownName ; unused EMAP $2,$A,Route1Name EMAP $2,$6,Route2Name EMAP $4,$3,Route3Name EMAP $8,$2,Route4Name EMAP $A,$3,Route5Name EMAP $A,$8,Route6Name EMAP $8,$5,Route7Name EMAP $D,$5,Route8Name EMAP $D,$2,Route9Name EMAP $E,$4,Route10Name EMAP $C,$9,Route11Name EMAP $E,$9,Route12Name EMAP $D,$B,Route13Name EMAP $B,$C,Route14Name EMAP $A,$D,Route15Name EMAP $5,$5,Route16Name EMAP $4,$8,Route17Name EMAP $6,$D,Route18Name EMAP $6,$F,Route19Name EMAP $4,$F,Route20Name EMAP $2,$D,Route21Name EMAP $0,$8,Route22Name EMAP $0,$6,Route23Name EMAP $A,$1,Route24Name EMAP $B,$0,Route25Name InternalMapEntries: ; 5382 IMAP $29,$2,$B,PalletTownName IMAP $2E,$2,$8,ViridianCityName IMAP $33,$2,$6,Route2Name IMAP $34,$2,$4,ViridianForestName IMAP $3B,$2,$3,PewterCityName IMAP $3E,$6,$2,MountMoonName IMAP $44,$A,$2,CeruleanCityName IMAP $45,$5,$2,Route4Name IMAP $46,$A,$2,CeruleanCityName IMAP $49,$A,$4,Route5Name IMAP $4C,$A,$6,Route6Name IMAP $4F,$9,$5,Route7Name IMAP $51,$B,$5,Route8Name IMAP $53,$E,$3,RockTunnelName IMAP $54,$F,$4,PowerPlantName IMAP $57,$D,$9,Route11Name IMAP $58,$E,$7,Route12Name IMAP $59,$C,$0,SeaCottageName IMAP $5F,$A,$9,VermilionCityName IMAP $69,$9,$A,SSAnneName IMAP $6D,$0,$4,VictoryRoadName IMAP $77,$0,$2,PokemonLeagueName IMAP $78,$A,$5,UndergroundPathName IMAP $79,$0,$2,PokemonLeagueName IMAP $7A,$A,$5,UndergroundPathName IMAP $8D,$7,$5,CeladonCityName IMAP $8E,$E,$5,LavenderTownName IMAP $95,$F,$5,PokemonTowerName IMAP $98,$E,$5,LavenderTownName IMAP $9C,$8,$D,FuchsiaCityName IMAP $9D,$8,$C,SafariZoneName IMAP $9F,$8,$D,FuchsiaCityName IMAP $A3,$5,$F,SeafoamIslandsName IMAP $A4,$A,$9,VermilionCityName IMAP $A5,$8,$D,FuchsiaCityName IMAP $A6,$2,$F,PokemonMansionName IMAP $AE,$2,$F,CinnabarIslandName IMAP $AF,$0,$2,IndigoPlateauName IMAP $B8,$A,$5,SaffronCityName IMAP $BA,$9,$D,Route15Name IMAP $BD,$4,$5,Route16Name IMAP $BE,$E,$A,Route12Name IMAP $C0,$7,$D,Route18Name IMAP $C1,$5,$F,SeafoamIslandsName IMAP $C2,$0,$7,Route22Name IMAP $C3,$0,$4,VictoryRoadName IMAP $C4,$E,$7,Route12Name IMAP $C5,$A,$9,VermilionCityName IMAP $C6,$3,$4,DiglettsCaveName IMAP $C7,$0,$4,VictoryRoadName IMAP $CF,$7,$5,RocketHQName IMAP $D6,$A,$5,SilphCoName IMAP $D9,$2,$F,PokemonMansionName IMAP $E2,$8,$C,SafariZoneName IMAP $E5,$9,$1,CeruleanCaveName IMAP $E6,$E,$5,LavenderTownName IMAP $E7,$A,$2,CeruleanCityName IMAP $E9,$E,$3,RockTunnelName IMAP $ED,$A,$5,SilphCoName IMAP $F8,$0,$2,PokemonLeagueName db $FF MapNames: ; 5473 PalletTownName: db "PALLET TOWN@" ViridianCityName: db "VIRIDIAN CITY@" PewterCityName: db "PEWTER CITY@" CeruleanCityName: db "CERULEAN CITY@" LavenderTownName: db "LAVENDER TOWN@" VermilionCityName: db "VERMILION CITY@" CeladonCityName: db "CELADON CITY@" FuchsiaCityName: db "FUCHSIA CITY@" CinnabarIslandName: db "CINNABAR ISLAND@" IndigoPlateauName: db "INDIGO PLATEAU@" SaffronCityName: db "SAFFRON CITY@" Route1Name: db "ROUTE 1@" Route2Name: db "ROUTE 2@" Route3Name: db "ROUTE 3@" Route4Name: db "ROUTE 4@" Route5Name: db "ROUTE 5@" Route6Name: db "ROUTE 6@" Route7Name: db "ROUTE 7@" Route8Name: db "ROUTE 8@" Route9Name: db "ROUTE 9@" Route10Name: db "ROUTE 10@" Route11Name: db "ROUTE 11@" Route12Name: db "ROUTE 12@" Route13Name: db "ROUTE 13@" Route14Name: db "ROUTE 14@" Route15Name: db "ROUTE 15@" Route16Name: db "ROUTE 16@" Route17Name: db "ROUTE 17@" Route18Name: db "ROUTE 18@" Route19Name: db "SEA ROUTE 19@" Route20Name: db "SEA ROUTE 20@" Route21Name: db "SEA ROUTE 21@" Route22Name: db "ROUTE 22@" Route23Name: db "ROUTE 23@" Route24Name: db "ROUTE 24@" Route25Name: db "ROUTE 25@" ViridianForestName: db "VIRIDIAN FOREST@" MountMoonName: db "MT.MOON@" RockTunnelName: db "ROCK TUNNEL@" SeaCottageName: db "SEA COTTAGE@" SSAnneName: db "S.S.ANNE@" PokemonLeagueName: db "#MON LEAGUE@" UndergroundPathName: db "UNDERGROUND PATH@" PokemonTowerName: db "#MON TOWER@" SeafoamIslandsName: db "SEAFOAM ISLANDS@" VictoryRoadName: db "VICTORY ROAD@" DiglettsCaveName: db "DIGLETT's CAVE@" RocketHQName: db "ROCKET HQ@" SilphCoName: db "SILPH CO.@" PokemonMansionName: db $4a," MANSION@" SafariZoneName: db "SAFARI ZONE@" CeruleanCaveName: db "CERULEAN CAVE@" PowerPlantName: db "POWER PLANT@" INCBIN "baserom.gbc",$716BE,$71AD9-$716BE Predef54: ; 0x71ad9 ; trigger the trade offer/action specified by W_WHICHTRADE call $36f4 ld hl,TradeMons ld a,[W_WHICHTRADE] ld b,a swap a sub b sub b ld c,a ld b,$0 add hl,bc ld a,[hli] ld [$cd0f],a ld a,[hli] ld [$cd34],a ld a,[hli] push af ld de,$cd29 ld bc,$000b call CopyData pop af ld l,a ld h,$0 ld de,$5d64 add hl,hl add hl,de ld a,[hli] ld [$cd10],a ld a,[hl] ld [$cd11],a ld a,[$cd0f] ld de,$cd13 call Function71b6a ld a,[$cd34] ld de,$cd1e call Function71b6a ld hl,$d737 ld a,[W_WHICHTRADE] ld c,a ld b,$2 ld a,$10 call Predef ld a,c and a ld a,$4 ld [$cd12],a jr nz,.asm_99bca ; 0x71b36 $20 xor a ld [$cd12],a call .asm_99bca ld a,$1 ld [$cd12],a call $35ec ld a,[$cc26] and a jr nz,.asm_99bca ; 0x71b4b $b call Function71c07 jr c,.asm_99bca ; 0x71b50 $6 ld hl, UnnamedText_71d8d call PrintText .asm_99bca ; 0x71b58 ld hl,$cd12 ld a,[hld] ld e,a ld d,$0 ld a,[hld] ld l,[hl] ld h,a add hl,de add hl,de ld a,[hli] ld h,[hl] ld l,a jp PrintText Function71b6a: ; 0x71b6a push de ld [$d11e],a call GetMonName ld hl,$cd6d pop de ld bc,$b jp CopyData TradeMons: ; 5B7B ; givemonster, getmonster, textstring, nickname (11 bytes), 14 bytes total db NIDORINO, NIDORINA, 0,"TERRY@@@@@@" db ABRA, MR_MIME, 0,"MARCEL@@@@@" db BUTTERFREE,BEEDRILL, 2,"CHIKUCHIKU@" db PONYTA, SEEL, 0,"SAILOR@@@@@" db SPEAROW, FARFETCH_D,2,"DUX@@@@@@@@" db SLOWBRO, LICKITUNG, 0,"MARC@@@@@@@" db POLIWHIRL, JYNX, 1,"LOLA@@@@@@@" db RAICHU, ELECTRODE, 1,"DORIS@@@@@@" db VENONAT, TANGELA, 2,"CRINKLES@@@" db NIDORAN_M, NIDORAN_F, 2,"SPOT@@@@@@@" Function71c07: ; 0x71c07 xor a ld [$d07d],a dec a ld [$cfcb],a call $13fc push af call $5ca2 pop af ld a,$1 jp c,.asm_c4bc2 ld a,[$cd0f] ld b,a ld a,[$cf91] cp b ld a,$2 jr nz,.asm_c4bc2 ; 0x71c26 $75 ld a,[$cf92] ld hl,$d18c ld bc,$002c call AddNTimes ld a,[hl] ld [$d127],a ld hl,$d737 ld a,[W_WHICHTRADE] ld c,a ld b,$1 ld a,$10 call Predef ld hl, UnnamedText_71d88 call PrintText ld a,[$cf92] push af ld a,[$d127] push af call $36c0 call $5cc1 ld a,$38 call Predef pop af ld [$d127],a pop af ld [$cf92],a ld a,[$cd34] ld [$cf91],a xor a ld [$cc49],a ld [$cf95],a call $391f ld a,$80 ld [$cc49],a call AddPokemonToParty call $5d19 ld hl,$7d7d ld b,$5 call Bankswitch call ClearScreen call $5ca2 ld b,$3 ld hl,$6edc call Bankswitch and a ld a,$3 jr .asm_ee803 ; 0x71c9b $1 .asm_c4bc2 ; 0x71c9d scf .asm_ee803 ; 0x71c9e ld [$cd12],a ret INCBIN "baserom.gbc",$71ca2,$71d88 - $71ca2 UnnamedText_71d88: ; 0x71d88 TX_FAR _UnnamedText_71d88 db $50 ; 0x71d88 + 5 bytes UnnamedText_71d8d: ; 0x71d8d TX_FAR _UnnamedText_71d8d ; 0xa80bc db $11, $a, $50 UnnamedText_71d94: ; 0x71d94 TX_FAR _UnnamedText_71d94 db $50 ; 0x71d94 + 5 bytes UnnamedText_71d99: ; 0x71d99 TX_FAR _UnnamedText_71d99 db $50 ; 0x71d99 + 5 bytes UnnamedText_71d9e: ; 0x71d9e TX_FAR _UnnamedText_71d9e db $50 ; 0x71d9e + 5 bytes UnnamedText_71da3: ; 0x71da3 TX_FAR _UnnamedText_71da3 db $50 ; 0x71da3 + 5 bytes UnnamedText_71da8: ; 0x71da8 TX_FAR _UnnamedText_71da8 db $50 ; 0x71da8 + 5 bytes UnnamedText_71dad: ; 0x71dad TX_FAR _UnnamedText_71dad db $50 ; 0x71dad + 5 bytes UnnamedText_71db2: ; 0x71db2 TX_FAR _UnnamedText_71db2 db $50 ; 0x71db2 + 5 bytes UnnamedText_71db7: ; 0x71db7 TX_FAR _UnnamedText_71db7 db $50 ; 0x71db7 + 5 bytes UnnamedText_71dbc: ; 0x71dbc TX_FAR _UnnamedText_71dbc db $50 ; 0x71dbc + 5 bytes UnnamedText_71dc1: ; 0x71dc1 TX_FAR _UnnamedText_71dc1 db $50 ; 0x71dc1 + 5 bytes UnnamedText_71dc6: ; 0x71dc6 TX_FAR _UnnamedText_71dc6 db $50 ; 0x71dc6 + 5 bytes UnnamedText_71dcb: ; 0x71dcb TX_FAR _UnnamedText_71dcb db $50 ; 0x71dcb + 5 bytes UnnamedText_71dd0: ; 0x71dd0 TX_FAR _UnnamedText_71dd0 db $50 ; 0x71dd0 + 5 bytes UnnamedText_71dd5: ; 0x71dd5 TX_FAR _UnnamedText_71dd5 db $50 ; 0x71dd5 + 5 bytes UnnamedText_71dda: ; 0x71dda TX_FAR _UnnamedText_71dda db $50 ; 0x71dda + 5 bytes INCBIN "baserom.gbc",$71ddf,$7e9 MonsterPalettes: ; 65C8 db PAL_MEWMON ; MISSINGNO db PAL_GREENMON ; BULBASAUR db PAL_GREENMON ; IVYSAUR db PAL_GREENMON ; VENUSAUR db PAL_REDMON ; CHARMANDER db PAL_REDMON ; CHARMELEON db PAL_REDMON ; CHARIZARD db PAL_CYANMON ; SQUIRTLE db PAL_CYANMON ; WARTORTLE db PAL_CYANMON ; BLASTOISE db PAL_GREENMON ; CATERPIE db PAL_GREENMON ; METAPOD db PAL_CYANMON ; BUTTERFREE db PAL_YELLOWMON ; WEEDLE db PAL_YELLOWMON ; KAKUNA db PAL_YELLOWMON ; BEEDRILL db PAL_BROWNMON ; PIDGEY db PAL_BROWNMON ; PIDGEOTTO db PAL_BROWNMON ; PIDGEOT db PAL_GREYMON ; RATTATA db PAL_GREYMON ; RATICATE db PAL_BROWNMON ; SPEAROW db PAL_BROWNMON ; FEAROW db PAL_PURPLEMON ; EKANS db PAL_PURPLEMON ; ARBOK db PAL_YELLOWMON ; PIKACHU db PAL_YELLOWMON ; RAICHU db PAL_BROWNMON ; SANDSHREW db PAL_BROWNMON ; SANDSLASH db PAL_BLUEMON ; NIDORAN_F db PAL_BLUEMON ; NIDORINA db PAL_BLUEMON ; NIDOQUEEN db PAL_PURPLEMON ; NIDORAN_M db PAL_PURPLEMON ; NIDORINO db PAL_PURPLEMON ; NIDOKING db PAL_PINKMON ; CLEFAIRY db PAL_PINKMON ; CLEFABLE db PAL_REDMON ; VULPIX db PAL_YELLOWMON ; NINETALES db PAL_PINKMON ; JIGGLYPUFF db PAL_PINKMON ; WIGGLYTUFF db PAL_BLUEMON ; ZUBAT db PAL_BLUEMON ; GOLBAT db PAL_GREENMON ; ODDISH db PAL_REDMON ; GLOOM db PAL_REDMON ; VILEPLUME db PAL_REDMON ; PARAS db PAL_REDMON ; PARASECT db PAL_PURPLEMON ; VENONAT db PAL_PURPLEMON ; VENOMOTH db PAL_BROWNMON ; DIGLETT db PAL_BROWNMON ; DUGTRIO db PAL_YELLOWMON ; MEOWTH db PAL_YELLOWMON ; PERSIAN db PAL_YELLOWMON ; PSYDUCK db PAL_CYANMON ; GOLDUCK db PAL_BROWNMON ; MANKEY db PAL_BROWNMON ; PRIMEAPE db PAL_BROWNMON ; GROWLITHE db PAL_REDMON ; ARCANINE db PAL_BLUEMON ; POLIWAG db PAL_BLUEMON ; POLIWHIRL db PAL_BLUEMON ; POLIWRATH db PAL_YELLOWMON ; ABRA db PAL_YELLOWMON ; KADABRA db PAL_YELLOWMON ; ALAKAZAM db PAL_GREYMON ; MACHOP db PAL_GREYMON ; MACHOKE db PAL_GREYMON ; MACHAMP db PAL_GREENMON ; BELLSPROUT db PAL_GREENMON ; WEEPINBELL db PAL_GREENMON ; VICTREEBEL db PAL_CYANMON ; TENTACOOL db PAL_CYANMON ; TENTACRUEL db PAL_GREYMON ; GEODUDE db PAL_GREYMON ; GRAVELER db PAL_GREYMON ; GOLEM db PAL_REDMON ; PONYTA db PAL_REDMON ; RAPIDASH db PAL_PINKMON ; SLOWPOKE db PAL_PINKMON ; SLOWBRO db PAL_GREYMON ; MAGNEMITE db PAL_GREYMON ; MAGNETON db PAL_BROWNMON ; FARFETCH_D db PAL_BROWNMON ; DODUO db PAL_BROWNMON ; DODRIO db PAL_BLUEMON ; SEEL db PAL_BLUEMON ; DEWGONG db PAL_PURPLEMON ; GRIMER db PAL_PURPLEMON ; MUK db PAL_GREYMON ; SHELLDER db PAL_GREYMON ; CLOYSTER db PAL_PURPLEMON ; GASTLY db PAL_PURPLEMON ; HAUNTER db PAL_PURPLEMON ; GENGAR db PAL_GREYMON ; ONIX db PAL_YELLOWMON ; DROWZEE db PAL_YELLOWMON ; HYPNO db PAL_REDMON ; KRABBY db PAL_REDMON ; KINGLER db PAL_YELLOWMON ; VOLTORB db PAL_YELLOWMON ; ELECTRODE db PAL_PINKMON ; EXEGGCUTE db PAL_GREENMON ; EXEGGUTOR db PAL_GREYMON ; CUBONE db PAL_GREYMON ; MAROWAK db PAL_BROWNMON ; HITMONLEE db PAL_BROWNMON ; HITMONCHAN db PAL_PINKMON ; LICKITUNG db PAL_PURPLEMON ; KOFFING db PAL_PURPLEMON ; WEEZING db PAL_GREYMON ; RHYHORN db PAL_GREYMON ; RHYDON db PAL_PINKMON ; CHANSEY db PAL_BLUEMON ; TANGELA db PAL_BROWNMON ; KANGASKHAN db PAL_CYANMON ; HORSEA db PAL_CYANMON ; SEADRA db PAL_REDMON ; GOLDEEN db PAL_REDMON ; SEAKING db PAL_REDMON ; STARYU db PAL_GREYMON ; STARMIE db PAL_PINKMON ; MR_MIME db PAL_GREENMON ; SCYTHER db PAL_MEWMON ; JYNX db PAL_YELLOWMON ; ELECTABUZZ db PAL_REDMON ; MAGMAR db PAL_BROWNMON ; PINSIR db PAL_GREYMON ; TAUROS db PAL_REDMON ; MAGIKARP db PAL_BLUEMON ; GYARADOS db PAL_CYANMON ; LAPRAS db PAL_GREYMON ; DITTO db PAL_GREYMON ; EEVEE db PAL_CYANMON ; VAPOREON db PAL_YELLOWMON ; JOLTEON db PAL_REDMON ; FLAREON db PAL_GREYMON ; PORYGON db PAL_BLUEMON ; OMANYTE db PAL_BLUEMON ; OMASTAR db PAL_BROWNMON ; KABUTO db PAL_BROWNMON ; KABUTOPS db PAL_GREYMON ; AERODACTYL db PAL_PINKMON ; SNORLAX db PAL_BLUEMON ; ARTICUNO db PAL_YELLOWMON ; ZAPDOS db PAL_REDMON ; MOLTRES db PAL_GREYMON ; DRATINI db PAL_BLUEMON ; DRAGONAIR db PAL_BROWNMON ; DRAGONITE db PAL_MEWMON ; MEWTWO db PAL_MEWMON ; MEW ; palettes for overworlds, title screen, monsters SuperPalettes: ; 6660 RGB 31,29,31 ; PAL_ROUTE RGB 21,28,11 RGB 20,26,31 RGB 3,2,2 RGB 31,29,31 ; PAL_PALLET RGB 25,28,27 RGB 20,26,31 RGB 3,2,2 RGB 31,29,31 ; PAL_VIRIDIAN RGB 17,26,3 RGB 20,26,31 RGB 3,2,2 RGB 31,29,31 ; PAL_PEWTER RGB 23,25,16 RGB 20,26,31 RGB 3,2,2 RGB 31,29,31 ; PAL_CERULEAN RGB 17,20,30 RGB 20,26,31 RGB 3,2,2 RGB 31,29,31 ; PAL_LAVENDER RGB 27,20,27 RGB 20,26,31 RGB 3,2,2 RGB 31,29,31 ; PAL_VERMILION RGB 30,18,0 RGB 20,26,31 RGB 3,2,2 RGB 31,29,31 ; PAL_CELADON RGB 16,30,22 RGB 20,26,31 RGB 3,2,2 RGB 31,29,31 ; PAL_FUCHSIA RGB 31,15,22 RGB 20,26,31 RGB 3,2,2 RGB 31,29,31 ; PAL_CINNABAR RGB 26,10,6 RGB 20,26,31 RGB 3,2,2 RGB 31,29,31 ; PAL_INDIGO RGB 22,14,24 RGB 20,26,31 RGB 3,2,2 RGB 31,29,31 ; PAL_SAFFRON RGB 27,27,3 RGB 20,26,31 RGB 3,2,2 RGB 31,29,31 ; XXX RGB 20,26,31 RGB 17,23,10 RGB 3,2,2 IF _RED RGB 31,29,31 ; PAL_LOGO1 RGB 30,30,17 RGB 17,23,10 RGB 21,0,4 ENDC IF _BLUE RGB 31,29,31 ; PAL_LOGO1 RGB 30,30,17 RGB 21,0,4 RGB 14,19,29 ENDC RGB 31,29,31 ; XXX RGB 30,30,17 RGB 18,18,24 RGB 7,7,16 RGB 31,29,31 ; PAL_LOGO2 RGB 24,20,30 RGB 11,20,30 RGB 3,2,2 RGB 31,29,31 ; PAL_MEWMON RGB 30,22,17 RGB 16,14,19 RGB 3,2,2 RGB 31,29,31 ; PAL_BLUEMON RGB 18,20,27 RGB 11,15,23 RGB 3,2,2 RGB 31,29,31 ; PAL_REDMON RGB 31,20,10 RGB 26,10,6 RGB 3,2,2 RGB 31,29,31 ; PAL_CYANMON RGB 21,25,29 RGB 14,19,25 RGB 3,2,2 RGB 31,29,31 ; PAL_PURPLEMON RGB 27,22,24 RGB 21,15,23 RGB 3,2,2 RGB 31,29,31 ; PAL_BROWNMON RGB 28,20,15 RGB 21,14,9 RGB 3,2,2 RGB 31,29,31 ; PAL_GREENMON RGB 20,26,16 RGB 9,20,11 RGB 3,2,2 RGB 31,29,31 ; PAL_PINKMON RGB 30,22,24 RGB 28,15,21 RGB 3,2,2 RGB 31,29,31 ; PAL_YELLOWMON RGB 31,28,14 RGB 26,20,0 RGB 3,2,2 RGB 31,29,31 ; PAL_GREYMON RGB 26,21,22 RGB 15,15,18 RGB 3,2,2 RGB 31,29,31 ; PAL_SLOTS1 RGB 26,21,22 RGB 27,20,6 RGB 3,2,2 RGB 31,29,31 ; PAL_SLOTS2 RGB 31,31,17 IF _RED RGB 25,17,21 ENDC IF _BLUE RGB 16,19,29 ENDC RGB 3,2,2 RGB 31,29,31 ; PAL_SLOTS3 RGB 22,31,16 IF _RED RGB 25,17,21 ENDC IF _BLUE RGB 16,19,29 ENDC RGB 3,2,2 RGB 31,29,31 ; PAL_SLOTS4 IF _RED RGB 16,19,29 RGB 25,17,21 ENDC IF _BLUE RGB 25,17,21 RGB 16,19,29 ENDC RGB 3,2,2 RGB 31,29,31 ; PAL_BLACK RGB 7,7,7 RGB 2,3,3 RGB 3,2,2 RGB 31,29,31 ; PAL_GREENBAR RGB 30,26,15 RGB 9,20,11 RGB 3,2,2 RGB 31,29,31 ; PAL_YELLOWBAR RGB 30,26,15 RGB 26,20,0 RGB 3,2,2 RGB 31,29,31 ; PAL_REDBAR RGB 30,26,15 RGB 26,10,6 RGB 3,2,2 RGB 31,29,31 ; PAL_BADGE RGB 30,22,17 RGB 11,15,23 RGB 3,2,2 RGB 31,29,31 ; PAL_CAVE RGB 21,14,9 RGB 18,24,22 RGB 3,2,2 RGB 31,29,31 ; XXX RGB 31,28,14 RGB 24,20,10 RGB 3,2,2 BorderPalettes: ; 6788 IF _RED INCBIN "gfx/red/sgbborder.map" ENDC IF _BLUE INCBIN "gfx/blue/sgbborder.map" ENDC INCBIN "baserom.gbc",$72E88,$2F88 - $2E88 ; All $00s IF _RED RGB 30,29,29 ; PAL_SGB1 RGB 25,22,25 RGB 25,17,21 RGB 24,14,12 ENDC IF _BLUE RGB 0,0,0 ; PAL_SGB1 (the first color is not defined, but if used, turns up as 30,29,29... o_O) RGB 10,17,26 RGB 5,9,20 RGB 16,20,27 ENDC INCBIN "baserom.gbc",$72F90,$2FA8 - $2F90 ; All $00s IF _RED RGB 30,29,29 ; PAL_SGB2 RGB 22,31,16 RGB 27,20,6 RGB 15,15,15 ENDC IF _BLUE RGB 30,29,29 ; PAL_SGB2 RGB 27,11,6 RGB 5,9,20 RGB 28,25,15 ENDC INCBIN "baserom.gbc",$72FB0,$2FC8 - $2FB0 ; All $00s IF _RED RGB 30,29,29 ; PAL_SGB3 RGB 31,31,17 RGB 18,21,29 RGB 15,15,15 ENDC IF _BLUE RGB 30,29,29 ; PAL_SGB3 RGB 12,15,11 RGB 5,9,20 RGB 14,22,17 ENDC INCBIN "baserom.gbc",$72FD0,$2FE8 - $2FD0 ; All $00s IF _RED INCBIN "gfx/red/sgbborder.2bpp" ENDC IF _BLUE INCBIN "gfx/blue/sgbborder.2bpp" ENDC INCBIN "baserom.gbc",$735e8,$7361e - $735e8 UnnamedText_7361e: ; 0x7361e TX_FAR _UnnamedText_7361e db $50 ; 0x7361e + 5 bytes INCBIN "baserom.gbc",$73623,$7377d - $73623 UnnamedText_7377d: ; 0x7377d TX_FAR _UnnamedText_7377d db $50 ; 0x7377d + 5 bytes UnnamedText_73782: ; 0x73782 TX_FAR _UnnamedText_73782 db $50 ; 0x73782 + 5 bytes UnnamedText_73787: ; 0x73787 TX_FAR _UnnamedText_73787 db $50 ; 0x73787 + 5 bytes INCBIN "baserom.gbc",$7378c,$73909 - $7378c UnnamedText_73909: ; 0x73909 TX_FAR _UnnamedText_73909 db $50 ; 0x73909 + 5 bytes INCBIN "baserom.gbc",$7390e,$739d4 - $7390e UnnamedText_739d4: ; 0x739d4 TX_FAR _UnnamedText_739d4 db $50 ; 0x739d4 + 5 bytes INCBIN "baserom.gbc",$739d9,452 SECTION "bank1D",DATA,BANK[$1D] CopycatsHouseF1Blocks: ; 0x74000 INCBIN "maps/copycatshousef1.blk" CinnabarMartBlocks: PewterMartBlocks: ; 0x74010 16 INCBIN "maps/pewtermart.blk" FuchsiaHouse1Blocks: ; 0x74020 16 INCBIN "maps/fuchsiahouse1.blk" CinnabarPokecenterBlocks: FuchsiaPokecenterBlocks: ; 0x74030 28 INCBIN "maps/fuchsiapokecenter.blk" CeruleanHouse3Blocks: ; 0x7404c 16 INCBIN "maps/ceruleanhouse3.blk" INCBIN "baserom.gbc",$7405c,$6f Func40CB: ; 40CB xor a ld [H_AUTOBGTRANSFERENABLED],a call $3719 call $4183 ; display the next monster from CreditsMons ld hl,$CD3E ld c,[hl] ; how many monsters have we displayed so far? inc [hl] ld b,0 ld hl,CreditsMons add hl,bc ; go that far in the list of monsters and get the next one ld a,[hl] ld [$CF91],a ld [$D0B5],a ld hl,$C420 call $1537 call $1389 ld hl,$980C call $4164 xor a ld [H_AUTOBGTRANSFERENABLED],a call $3725 ld hl,$9800 call $4164 ld a,$A7 ld [$FF4B],a ld hl,$9C00 call $4164 call $4183 ld a,$FC ld [$FF47],a ld bc,7 .next\@ call $4140 dec c jr nz,.next\@ ld c,$14 .next2\@ call $4140 ld a,[$FF4B] sub 8 ld [$FF4B],a dec c jr nz,.next2\@ xor a ld [$FFB0],a ld a,$C0 ld [$FF47],a ret CreditsMons: ; 4131 db VENUSAUR db ARBOK db RHYHORN db FEAROW db ABRA db GRAVELER db HITMONLEE db TANGELA db STARMIE db GYARADOS db DITTO db OMASTAR db VILEPLUME db NIDOKING db PARASECT INCBIN "baserom.gbc",$74140,$2C3 - $140 CreditsTextPointers: ; 42C3 dw CredVersion dw CredTajiri dw CredTaOota dw CredMorimoto dw CredWatanabe dw CredMasuda dw CredNisino dw CredSugimori dw CredNishida dw CredMiyamoto dw CredKawaguchi dw CredIshihara dw CredYamauchi dw CredZinnai dw CredHishida dw CredSakai dw CredYamaguchi dw CredYamamoto dw CredTaniguchi dw CredNonomura dw CredFuziwara dw CredMatsusima dw CredTomisawa dw CredKawamoto dw CredKakei dw CredTsuchiya dw CredTaNakamura dw CredYuda dw CredMon dw CredDirector dw CredProgrammers dw CredCharDesign dw CredMusic dw CredSoundEffects dw CredGameDesign dw CredMonsterDesign dw CredGameScene dw CredParam dw CredMap dw CredTest dw CredSpecial dw CredProducers dw CredProducer dw CredExecutive dw CredTamada dw CredSaOota dw CredYoshikawa dw CredToOota dw CredUSStaff dw CredUSCoord dw CredTilden dw CredKawakami dw CredHiNakamura dw CredGiese dw CredOsborne dw CredTrans dw CredOgasawara dw CredIwata dw CredIzushi dw CredHarada dw CredMurakawa dw CredFukui dw CredClub dw CredPAAD CredVersion: IF _RED db "2RED VERSION STAFF@" ENDC IF _BLUE db "2BLUE VERSION STAFF@" ENDC CredTajiri: db "4SATOSHI TAJIRI@" CredTaOota: db "4TAKENORI OOTA@" CredMorimoto: db "3SHIGEKI MORIMOTO@" CredWatanabe: db "3TETSUYA WATANABE@" CredMasuda: db "4JUNICHI MASUDA@" CredNisino: db "5KOHJI NISINO@" CredSugimori: db "5KEN SUGIMORI@" CredNishida: db "4ATSUKO NISHIDA@" CredMiyamoto: db "3SHIGERU MIYAMOTO@" CredKawaguchi: db "2TAKASHI KAWAGUCHI@" CredIshihara: db "2TSUNEKAZU ISHIHARA@" CredYamauchi: db "3HIROSHI YAMAUCHI@" CredZinnai: db "3HIROYUKI ZINNAI@" CredHishida: db "3TATSUYA HISHIDA@" CredSakai: db "4YASUHIRO SAKAI@" CredYamaguchi: db "3WATARU YAMAGUCHI@" CredYamamoto: db "2KAZUYUKI YAMAMOTO@" CredTaniguchi: db "2RYOHSUKE TANIGUCHI@" CredNonomura: db "2FUMIHIRO NONOMURA@" CredFuziwara: db "3MOTOFUMI FUZIWARA@" CredMatsusima: db "3KENJI MATSUSIMA@" CredTomisawa: db "3AKIHITO TOMISAWA@" CredKawamoto: db "3HIROSHI KAWAMOTO@" CredKakei: db "4AKIYOSHI KAKEI@" CredTsuchiya: db "3KAZUKI TSUCHIYA@" CredTaNakamura: db "4TAKEO NAKAMURA@" CredYuda: db "4MASAMITSU YUDA@" CredMon: db "7#MON@" CredDirector: db "7DIRECTOR@" CredProgrammers: db "5PROGRAMMERS@" CredCharDesign: db "3CHARACTER DESIGN@" CredMusic: db "8MUSIC@" CredSoundEffects: db "4SOUND EFFECTS@" CredGameDesign: db "5GAME DESIGN@" CredMonsterDesign: db "4MONSTER DESIGN@" CredGameScene: db "4GAME SCENARIO@" CredParam: db "2PARAMETRIC DESIGN@" CredMap: db "6MAP DESIGN@" CredTest: db "3PRODUCT TESTING@" CredSpecial: db "4SPECIAL THANKS@" CredProducers: db "6PRODUCERS@" CredProducer: db "6PRODUCER@" CredExecutive: db "2EXECUTIVE PRODUCER@" CredTamada: db "4SOUSUKE TAMADA@" CredSaOota: db "5SATOSHI OOTA@" CredYoshikawa: db "4RENA YOSHIKAWA@" CredToOota: db "4TOMOMICHI OOTA@" CredUSStaff: db "3US VERSION STAFF@" CredUSCoord: db "3US COORDINATION@" CredTilden: db "5GAIL TILDEN@" CredKawakami: db "4NAOKO KAWAKAMI@" CredHiNakamura: db "4HIRO NAKAMURA@" CredGiese: db "4WILLIAM GIESE@" CredOsborne: db "5SARA OSBORNE@" CredTrans: db "3TEXT TRANSLATION@" CredOgasawara: db "4NOB OGASAWARA@" CredIwata: db "5SATORU IWATA@" CredIzushi: db "3TAKEHIRO IZUSHI@" CredHarada: db "3TAKAHIRO HARADA@" CredMurakawa: db "3TERUKI MURAKAWA@" CredFukui: db "5KOHTA FUKUI@" CredClub: db "1NCL SUPER MARIO CLUB@" CredPAAD: db "5PAAD TESTING@" TheEndGfx: ; 473E INCBIN "gfx/theend.2bpp" INCBIN "baserom.gbc",$747de,$74872 - $747de Unnamed_ASM_74872: ; 0x74872 ; code similar to this appears in a lot of banks; this particular call $20EF ; one is called after you beat the Rocket that gives you TM28 DIG ld a, $07 ; the screen then fades out, he disappears, and fades back in ld [$CC4D], a ld a, $15 call $3E6D ld a, $09 ld [$CC4D], a ld a, $11 call $3E6D ld a, $06 ld [$CC4D], a ld a, $11 call Predef call $20D1 ret ViridianGym_h: ; 0x74897 to 0x748a3 (12 bytes) (id=45) db $07 ; tileset db VIRIDIAN_GYM_HEIGHT, VIRIDIAN_GYM_WIDTH ; dimensions (y, x) dw ViridianGymBlocks, ViridianGymTexts, ViridianGymScript ; blocks, texts, scripts db $00 ; connections dw ViridianGymObject ; objects ViridianGymScript: ; 0x748a3 ld hl, Gym8CityName ld de, Gym8LeaderName call $317f call $3c3c ld hl, ViridianGymTrainerHeaders ld de, $48e1 ld a, [$d5fb] call $3160 ld [$d5fb], a ret ; 0x748bf Gym8CityName: db "VIRIDIAN CITY@" Gym8LeaderName: db "GIOVANNI@" INCBIN "baserom.gbc",$748D6,$116 ViridianGymTexts: ; 0x749ec dw ViridianGymText1, ViridianGymText2, ViridianGymText3, ViridianGymText4, ViridianGymText5, ViridianGymText6, ViridianGymText7, ViridianGymText8, ViridianGymText9, ViridianGymText10, ViridianGymText11, ViridianGymText12, ViridianGymText13, ViridianGymText14 ViridianGymTrainerHeaders: ViridianGymTrainerHeader0: ; 0x74a08 db $2 ; flag's bit db ($4 << 4) ; trainer's view range dw $d751 ; flag's byte dw ViridianGymBattleText1 ; 0x4afd TextBeforeBattle dw ViridianGymAfterBattleText1 ; 0x4b07 TextAfterBattle dw ViridianGymEndBattleText1 ; 0x4b02 TextEndBattle dw ViridianGymEndBattleText1 ; 0x4b02 TextEndBattle ; 0x74a14 ViridianGymTrainerHeader1: ; 0x74a14 db $3 ; flag's bit db ($4 << 4) ; trainer's view range dw $d751 ; flag's byte dw ViridianGymBattleText2 ; 0x4b16 TextBeforeBattle dw ViridianGymAfterBattleText2 ; 0x4b20 TextAfterBattle dw ViridianGymEndBattleText2 ; 0x4b1b TextEndBattle dw ViridianGymEndBattleText2 ; 0x4b1b TextEndBattle ; 0x74a20 ViridianGymTrainerHeader2: ; 0x74a20 db $4 ; flag's bit db ($4 << 4) ; trainer's view range dw $d751 ; flag's byte dw ViridianGymBattleText3 ; 0x4b2f TextBeforeBattle dw ViridianGymAfterBattleText3 ; 0x4b39 TextAfterBattle dw ViridianGymEndBattleText3 ; 0x4b34 TextEndBattle dw ViridianGymEndBattleText3 ; 0x4b34 TextEndBattle ; 0x74a2c ViridianGymTrainerHeader3: ; 0x74a2c db $5 ; flag's bit db ($2 << 4) ; trainer's view range dw $d751 ; flag's byte dw ViridianGymBattleText4 ; 0x4b48 TextBeforeBattle dw ViridianGymAfterBattleText4 ; 0x4b52 TextAfterBattle dw ViridianGymEndBattleText4 ; 0x4b4d TextEndBattle dw ViridianGymEndBattleText4 ; 0x4b4d TextEndBattle ; 0x74a38 ViridianGymTrainerHeader4: ; 0x74a38 db $6 ; flag's bit db ($3 << 4) ; trainer's view range dw $d751 ; flag's byte dw ViridianGymBattleText5 ; 0x4b61 TextBeforeBattle dw ViridianGymAfterBattleText5 ; 0x4b6b TextAfterBattle dw ViridianGymEndBattleText5 ; 0x4b66 TextEndBattle dw ViridianGymEndBattleText5 ; 0x4b66 TextEndBattle ; 0x74a44 ViridianGymTrainerHeader5: ; 0x74a44 db $7 ; flag's bit db ($4 << 4) ; trainer's view range dw $d751 ; flag's byte dw ViridianGymBattleText6 ; 0x4b7a TextBeforeBattle dw ViridianGymAfterBattleText6 ; 0x4b84 TextAfterBattle dw ViridianGymEndBattleText6 ; 0x4b7f TextEndBattle dw ViridianGymEndBattleText6 ; 0x4b7f TextEndBattle ; 0x74a50 ViridianGymTrainerHeader6: ; 0x74a50 db $8 ; flag's bit db ($3 << 4) ; trainer's view range dw $d751 ; flag's byte dw ViridianGymBattleText7 ; 0x4b93 TextBeforeBattle dw ViridianGymAfterBattleText7 ; 0x4b9d TextAfterBattle dw ViridianGymEndBattleText7 ; 0x4b98 TextEndBattle dw ViridianGymEndBattleText7 ; 0x4b98 TextEndBattle ; 0x74a5c ViridianGymTrainerHeader7: ; 0x74a5c db $9 ; flag's bit db ($4 << 4) ; trainer's view range dw $d751 ; flag's byte dw ViridianGymBattleText8 ; 0x4bac TextBeforeBattle dw ViridianGymAfterBattleText8 ; 0x4bb6 TextAfterBattle dw ViridianGymEndBattleText8 ; 0x4bb1 TextEndBattle dw ViridianGymEndBattleText8 ; 0x4bb1 TextEndBattle ; 0x74a68 db $ff ViridianGymText1: ; 0x74a69 db $08 ; asm ld a, [$d751] bit 1, a jr z, .asm_6de66 ; 0x74a6f bit 0, a jr nz, .asm_9fc95 ; 0x74a73 call z, $4995 call DisableWaitingAfterTextDisplay jr .asm_6dff7 ; 0x74a7b .asm_9fc95 ; 0x74a7d ld a, $1 ld [$cc3c], a ld hl, UnnamedText_74ad9 call PrintText call $20ef ld a, $32 ld [$cc4d], a ld a, $11 call Predef call $2429 call Delay3 call $20d1 jr .asm_6dff7 ; 0x74a9e .asm_6de66 ; 0x74aa0 ld hl, UnnamedText_74ace call PrintText ld hl, $d72d set 6, [hl] set 7, [hl] ld hl, UnnamedText_74ad3 ld de, UnnamedText_74ad3 call $3354 ldh a, [$8c] ld [$cf13], a call $336a call $32d7 ld a, $8 ld [$d05c], a ld a, $3 ld [$d5fb], a .asm_6dff7 ; 0x74acb jp TextScriptEnd UnnamedText_74ace: ; 0x74ace TX_FAR _UnnamedText_74ace db $50 ; 0x74ace + 5 bytes UnnamedText_74ad3: ; 0x74ad3 TX_FAR _UnnamedText_74ad3 db $0b, $50 ; 0x74ad9 UnnamedText_74ad9: ; 0x74ad9 TX_FAR _UnnamedText_74ad9 db $0d, $50 ; 0x74add ViridianGymText12: ; 0x74adf TX_FAR _ViridianGymText12 db $50 ; 0x74adf + 5 bytes ViridianGymText13: ; 0x74ae4 TX_FAR _ReceivedTM27Text db $0b TM27ExplanationText: TX_FAR _TM27ExplanationText db $50 ViridianGymText14: ; 0x74aee TX_FAR _TM27NoRoomText db $50 ; 0x74aee + 5 bytes ViridianGymText2: ; 0x74af3 db $08 ; asm ld hl, ViridianGymTrainerHeader0 call LoadTrainerHeader jp TextScriptEnd ViridianGymBattleText1: ; 0x74afd TX_FAR _ViridianGymBattleText1 db $50 ; 0x74afd + 5 bytes ViridianGymEndBattleText1: ; 0x74b02 TX_FAR _ViridianGymEndBattleText1 db $50 ; 0x74b02 + 5 bytes ViridianGymAfterBattleText1: ; 0x74b07 TX_FAR _ViridianGymAfterBattleText1 db $50 ; 0x74b07 + 5 bytes ViridianGymText3: ; 0x74b0c db $08 ; asm ld hl, ViridianGymTrainerHeader1 call LoadTrainerHeader jp TextScriptEnd ViridianGymBattleText2: ; 0x74b16 TX_FAR _ViridianGymBattleText2 db $50 ; 0x74b16 + 5 bytes ViridianGymEndBattleText2: ; 0x74b1b TX_FAR _ViridianGymEndBattleText2 db $50 ; 0x74b1b + 5 bytes ViridianGymAfterBattleText2: ; 0x74b20 TX_FAR _ViridianGymAfterBattleText2 db $50 ; 0x74b20 + 5 bytes ViridianGymText4: ; 0x74b25 db $08 ; asm ld hl, ViridianGymTrainerHeader2 call LoadTrainerHeader jp TextScriptEnd ViridianGymBattleText3: ; 0x74b2f TX_FAR _ViridianGymBattleText3 db $50 ; 0x74b2f + 5 bytes ViridianGymEndBattleText3: ; 0x74b34 TX_FAR _ViridianGymEndBattleText3 db $50 ; 0x74b34 + 5 bytes ViridianGymAfterBattleText3: ; 0x74b39 TX_FAR _ViridianGymAfterBattleText3 db $50 ; 0x74b39 + 5 bytes ViridianGymText5: ; 0x74b3e db $08 ; asm ld hl, ViridianGymTrainerHeader3 call LoadTrainerHeader jp TextScriptEnd ViridianGymBattleText4: ; 0x74b48 TX_FAR _ViridianGymBattleText4 db $50 ; 0x74b48 + 5 bytes ViridianGymEndBattleText4: ; 0x74b4d TX_FAR _ViridianGymEndBattleText4 db $50 ; 0x74b4d + 5 bytes ViridianGymAfterBattleText4: ; 0x74b52 TX_FAR _ViridianGymAfterBattleText4 db $50 ; 0x74b52 + 5 bytes ViridianGymText6: ; 0x74b57 db $08 ; asm ld hl, ViridianGymTrainerHeader4 call LoadTrainerHeader jp TextScriptEnd ViridianGymBattleText5: ; 0x74b61 TX_FAR _ViridianGymBattleText5 db $50 ; 0x74b61 + 5 bytes ViridianGymEndBattleText5: ; 0x74b66 TX_FAR _ViridianGymEndBattleText5 db $50 ; 0x74b66 + 5 bytes ViridianGymAfterBattleText5: ; 0x74b6b TX_FAR _ViridianGymAfterBattleText5 db $50 ; 0x74b6b + 5 bytes ViridianGymText7: ; 0x74b70 db $08 ; asm ld hl, ViridianGymTrainerHeader5 call LoadTrainerHeader jp TextScriptEnd ViridianGymBattleText6: ; 0x74b7a TX_FAR _ViridianGymBattleText6 db $50 ; 0x74b7a + 5 bytes ViridianGymEndBattleText6: ; 0x74b7f TX_FAR _ViridianGymEndBattleText6 db $50 ; 0x74b7f + 5 bytes ViridianGymAfterBattleText6: ; 0x74b84 TX_FAR _ViridianGymAfterBattleText6 db $50 ; 0x74b84 + 5 bytes ViridianGymText8: ; 0x74b89 db $08 ; asm ld hl, ViridianGymTrainerHeader6 call LoadTrainerHeader jp TextScriptEnd ViridianGymBattleText7: ; 0x74b93 TX_FAR _ViridianGymBattleText7 db $50 ; 0x74b93 + 5 bytes ViridianGymEndBattleText7: ; 0x74b98 TX_FAR _ViridianGymEndBattleText7 db $50 ; 0x74b98 + 5 bytes ViridianGymAfterBattleText7: ; 0x74b9d TX_FAR _ViridianGymAfterBattleText7 db $50 ; 0x74b9d + 5 bytes ViridianGymText9: ; 0x74ba2 db $08 ; asm ld hl, ViridianGymTrainerHeader7 call LoadTrainerHeader jp TextScriptEnd ViridianGymBattleText8: ; 0x74bac TX_FAR _ViridianGymBattleText8 db $50 ; 0x74bac + 5 bytes ViridianGymEndBattleText8: ; 0x74bb1 TX_FAR _ViridianGymEndBattleText8 db $50 ; 0x74bb1 + 5 bytes ViridianGymAfterBattleText8: ; 0x74bb6 TX_FAR _ViridianGymAfterBattleText8 db $50 ; 0x74bb6 + 5 bytes ViridianGymText10: ; 0x74bbb db $08 ; asm ld a, [$d751] bit 1, a jr nz, .asm_1abd1 ; 0x74bc1 ld hl, UnnamedText_74bd4 call PrintText jr .asm_6064d ; 0x74bc9 .asm_1abd1 ; 0x74bcb ld hl, UnnamedText_74bd9 call PrintText .asm_6064d ; 0x74bd1 jp TextScriptEnd UnnamedText_74bd4: ; 0x74bd4 TX_FAR _UnnamedText_74bd4 db $50 ; 0x74bd4 + 5 bytes UnnamedText_74bd9: ; 0x74bd9 TX_FAR _UnnamedText_74bd9 db $50 ; 0x74bd9 + 5 bytes ViridianGymObject: ; 0x74bde (size=105) db $3 ; border tile db $2 ; warps db $11, $10, $4, $ff db $11, $11, $4, $ff db $0 ; signs db $b ; people db SPRITE_GIOVANNI, $1 + 4, $2 + 4, $ff, $d0, $41, GIOVANNI + $C8, $3 ; trainer db SPRITE_BLACK_HAIR_BOY_1, $7 + 4, $c + 4, $ff, $d0, $42, COOLTRAINER_M + $C8, $9 ; trainer db SPRITE_HIKER, $b + 4, $b + 4, $ff, $d1, $43, BLACKBELT + $C8, $6 ; trainer db SPRITE_ROCKER, $7 + 4, $a + 4, $ff, $d0, $44, TAMER + $C8, $3 ; trainer db SPRITE_HIKER, $7 + 4, $3 + 4, $ff, $d2, $45, BLACKBELT + $C8, $7 ; trainer db SPRITE_BLACK_HAIR_BOY_1, $5 + 4, $d + 4, $ff, $d3, $46, COOLTRAINER_M + $C8, $a ; trainer db SPRITE_HIKER, $1 + 4, $a + 4, $ff, $d0, $47, BLACKBELT + $C8, $8 ; trainer db SPRITE_ROCKER, $10 + 4, $2 + 4, $ff, $d3, $48, TAMER + $C8, $4 ; trainer db SPRITE_BLACK_HAIR_BOY_1, $5 + 4, $6 + 4, $ff, $d0, $49, COOLTRAINER_M + $C8, $1 ; trainer db SPRITE_GYM_HELPER, $f + 4, $10 + 4, $ff, $d0, $a ; person db SPRITE_BALL, $9 + 4, $10 + 4, $ff, $ff, $8b, REVIVE ; item ; warp-to EVENT_DISP $a, $11, $10 EVENT_DISP $a, $11, $11 ViridianGymBlocks: ; 0x74c47 90 INCBIN "maps/viridiangym.blk" PewterMart_h: ; 0x74ca1 to 0x74cad (12 bytes) (id=56) db $02 ; tileset db PEWTER_MART_HEIGHT, PEWTER_MART_WIDTH ; dimensions (y, x) dw PewterMartBlocks, PewterMartTexts, PewterMartScript ; blocks, texts, scripts db $00 ; connections dw PewterMartObject ; objects PewterMartScript: ; 0x74cad call $3c3c ld a, $1 ld [$cf0c], a ret ; 0x74cb6 PewterMartTexts: ; 0x74cb6 dw PewterMartText1, PewterMartText2, PewterMartText3 PewterMartText2: ; 0x74cbc db $08 ; asm ld hl, UnnamedText_74cc6 call PrintText jp TextScriptEnd UnnamedText_74cc6: ; 0x74cc6 TX_FAR _UnnamedText_74cc6 db $50 ; 0x74cc6 + 5 bytes PewterMartText3: ; 0x74ccb db $08 ; asm ld hl, UnnamedText_74cd5 call PrintText jp TextScriptEnd UnnamedText_74cd5: ; 0x74cd5 TX_FAR _UnnamedText_74cd5 db $50 ; 0x74cd5 + 5 bytes PewterMartObject: ; 0x74cda (size=38) db $0 ; border tile db $2 ; warps db $7, $3, $4, $ff db $7, $4, $4, $ff db $0 ; signs db $3 ; people db SPRITE_MART_GUY, $5 + 4, $0 + 4, $ff, $d3, $1 ; person db SPRITE_BUG_CATCHER, $3 + 4, $3 + 4, $fe, $1, $2 ; person db SPRITE_BLACK_HAIR_BOY_2, $5 + 4, $5 + 4, $ff, $ff, $3 ; person ; warp-to EVENT_DISP $4, $7, $3 EVENT_DISP $4, $7, $4 UnknownDungeon1_h: ; 0x74d00 to 0x74d0c (12 bytes) (id=228) db $11 ; tileset db UNKNOWN_DUNGEON_1_HEIGHT, UNKNOWN_DUNGEON_1_WIDTH ; dimensions (y, x) dw UnknownDungeon1Blocks, UnknownDungeon1Texts, UnknownDungeon1Script ; blocks, texts, scripts db $00 ; connections dw UnknownDungeon1Object ; objects UnknownDungeon1Script: ; 0x74d0c jp $3c3c ; 0x74d0f UnknownDungeon1Texts: ; 0x74d0f dw UnknownDungeon1Text1, UnknownDungeon1Text2, UnknownDungeon1Text3 UnknownDungeon1Object: ; 0x74d15 (size=97) db $7d ; border tile db $9 ; warps db $11, $18, $6, $ff db $11, $19, $6, $ff db $1, $1b, $0, UNKNOWN_DUNGEON_2 db $7, $17, $1, UNKNOWN_DUNGEON_2 db $9, $12, $2, UNKNOWN_DUNGEON_2 db $1, $7, $3, UNKNOWN_DUNGEON_2 db $3, $1, $4, UNKNOWN_DUNGEON_2 db $b, $3, $5, UNKNOWN_DUNGEON_2 db $6, $0, $0, UNKNOWN_DUNGEON_3 db $0 ; signs db $3 ; people db SPRITE_BALL, $d + 4, $7 + 4, $ff, $ff, $81, FULL_RESTORE ; item db SPRITE_BALL, $3 + 4, $13 + 4, $ff, $ff, $82, MAX_ELIXER ; item db SPRITE_BALL, $0 + 4, $5 + 4, $ff, $ff, $83, NUGGET ; item ; warp-to EVENT_DISP $f, $11, $18 EVENT_DISP $f, $11, $19 EVENT_DISP $f, $1, $1b ; UNKNOWN_DUNGEON_2 EVENT_DISP $f, $7, $17 ; UNKNOWN_DUNGEON_2 EVENT_DISP $f, $9, $12 ; UNKNOWN_DUNGEON_2 EVENT_DISP $f, $1, $7 ; UNKNOWN_DUNGEON_2 EVENT_DISP $f, $3, $1 ; UNKNOWN_DUNGEON_2 EVENT_DISP $f, $b, $3 ; UNKNOWN_DUNGEON_2 EVENT_DISP $f, $6, $0 ; UNKNOWN_DUNGEON_3 UnknownDungeon1Blocks: ; 0x74d76 135 INCBIN "maps/unknowndungeon1.blk" CeruleanHouse3_h: ; 0x74dfd to 0x74e09 (12 bytes) (id=230) db $0d ; tileset db CERULEAN_HOUSE_3_HEIGHT, CERULEAN_HOUSE_3_WIDTH ; dimensions (y, x) dw CeruleanHouse3Blocks, CeruleanHouse3Texts, CeruleanHouse3Script ; blocks, texts, scripts db $00 ; connections dw CeruleanHouse3Object ; objects CeruleanHouse3Script: ; 0x74e09 ld a, $1 ld [$cf0c], a dec a ld [$cc3c], a ret ; 0x74e13 CeruleanHouse3Texts: dw CeruleanHouse3Text1 CeruleanHouse3Text1: ; 0x74e15 db $8 ld hl, UnnamedText_74e77 call PrintText xor a ld [W_CURMENUITEMID], a ld [W_LISTSCROLLOFFSET], a .asm_74e23 ld hl, UnnamedText_74e7c call PrintText ld hl, UnnamedText_74e6d call LoadItemList ld hl, $cf7b ld a, l ld [$cf8b], a ld a, h ld [$cf8c], a xor a ld [$cf93], a ld [$cc35], a ld a, SPECIALLISTMENU ld [W_LISTMENUID], a call DisplayListMenuID jr c, .asm_74e60 ; 0x74e49 $15 ld hl, $4e86 ld a, [$cf91] sub $15 add a ld d, $0 ld e, a add hl, de ld a, [hli] ld h, [hl] ld l, a call PrintText jr .asm_74e23 ; 0x74e5e $c3 .asm_74e60 xor a ld [W_LISTSCROLLOFFSET], a ld hl, UnnamedText_74e81 call PrintText jp TextScriptEnd ; 0x74e6d UnnamedText_74e6d: ; 0x74e6d db $8,BOULDERBADGE,CASCADEBADGE,THUNDERBADGE,RAINBOWBADGE,SOULBADGE,MARSHBADGE,VOLCANOBADGE,EARTHBADGE,$FF UnnamedText_74e77: ; 0x74e77 TX_FAR _UnnamedText_74e77 db $50 ; 0x74e77 + 5 bytes UnnamedText_74e7c: ; 0x74e7c TX_FAR _UnnamedText_74e7c db $50 ; 0x74e7c + 5 bytes UnnamedText_74e81: ; 0x74e81 TX_FAR _UnnamedText_74e81 db $50 ; 0x74e81 + 5 bytes INCBIN "baserom.gbc",$74e86,$74e96 - $74e86 UnnamedText_74e96: ; 0x74e96 TX_FAR _UnnamedText_74e96 db $50 ; 0x74e96 + 5 bytes UnnamedText_74e9b: ; 0x74e9b TX_FAR _UnnamedText_74e9b db $50 ; 0x74e9b + 5 bytes UnnamedText_74ea0: ; 0x74ea0 TX_FAR _UnnamedText_74ea0 db $50 ; 0x74ea0 + 5 bytes UnnamedText_74ea5: ; 0x74ea5 TX_FAR _UnnamedText_74ea5 db $50 ; 0x74ea5 + 5 bytes UnnamedText_74eaa: ; 0x74eaa TX_FAR _UnnamedText_74eaa db $50 ; 0x74eaa + 5 bytes UnnamedText_74eaf: ; 0x74eaf TX_FAR _UnnamedText_74eaf db $50 ; 0x74eaf + 5 bytes UnnamedText_74eb4: ; 0x74eb4 TX_FAR _UnnamedText_74eb4 db $50 ; 0x74eb4 + 5 bytes UnnamedText_74eb9: ; 0x74eb9 TX_FAR _UnnamedText_74eb9 db $50 ; 0x74eb9 + 5 bytes CeruleanHouse3Object: ; 0x74ebe (size=34) db $c ; border tile db $3 ; warps db $0, $2, $9, $ff db $7, $2, $8, $ff db $7, $3, $8, $ff db $0 ; signs db $1 ; people db SPRITE_FAT_BALD_GUY, $3 + 4, $5 + 4, $ff, $d3, $1 ; person ; warp-to EVENT_DISP $4, $0, $2 EVENT_DISP $4, $7, $2 EVENT_DISP $4, $7, $3 Unknown_74ee0: INCBIN "baserom.gbc",$74ee0,$B9 UnnamedText_74f99: ; 0x74f99 TX_FAR _UnnamedText_74f99 db $50 ; 0x74f99 + 5 bytes Unnamed_74f9e: ; 0x74f9e db "FRESH WATER",$4E db "SODA POP",$4E db "LEMONADE",$4E db "CANCEL@" db $F0,"200",$4E db $F0,"300",$4E db $F0,"350",$4E,"@" UnnamedText_74fd3: ; 0x74fd3 TX_FAR _UnnamedText_74fd3 db $50 ; 0x74fd3 + 5 bytes UnnamedText_74fd8: ; 0x74fd8 TX_FAR _UnnamedText_74fd8 db $50 ; 0x74fd8 + 5 bytes UnnamedText_74fdd: ; 0x74fdd TX_FAR _UnnamedText_74fdd db $50 ; 0x74fdd + 5 bytes UnnamedText_74fe2: ; 0x74fe2 TX_FAR _UnnamedText_74fe2 db $50 ; 0x74fe2 + 5 bytes Unknown_74fe7: ; 0x74fe7 ld hl, Unknown_75000 ld a, [$cc26] add a add a ld d, $0 ld e, a add hl, de ld a, [hli] ld [$ff00+$db], a ld a, [hli] ld [$ff00+$dc], a ld a, [hli] ld [$ff00+$dd], a ld a, [hl] ld [$ff00+$de], a ret ; 0x75000 Unknown_75000: INCBIN "baserom.gbc",$75000,$c FuchsiaHouse1_h: ; 0x7500c to 0x75018 (12 bytes) (id=153) db $08 ; tileset db FUCHSIA_HOUSE_1_HEIGHT, FUCHSIA_HOUSE_1_WIDTH ; dimensions (y, x) dw FuchsiaHouse1Blocks, FuchsiaHouse1Texts, FuchsiaHouse1Script ; blocks, texts, scripts db $00 ; connections dw FuchsiaHouse1Object ; objects FuchsiaHouse1Script: ; 0x75018 call $3c3c ret ; 0x7501c FuchsiaHouse1Texts: ; 0x7501c dw FuchsiaHouse1Text1, FuchsiaHouse1Text2, FuchsiaHouse1Text3 FuchsiaHouse1Text1: ; 0x75022 TX_FAR _FuchsiaHouse1Text1 db $50 FuchsiaHouse1Text2: ; 0x75027 TX_FAR _FuchsiaHouse1Text2 db $50 FuchsiaHouse1Text3: ; 0x7502c TX_FAR _FuchsiaHouse1Text3 db $50 FuchsiaHouse1Object: ; 0x75031 (size=38) db $a ; border tile db $2 ; warps db $7, $2, $1, $ff db $7, $3, $1, $ff db $0 ; signs db $3 ; people db SPRITE_MOM_GEISHA, $3 + 4, $2 + 4, $ff, $d3, $1 ; person db SPRITE_GAMBLER, $2 + 4, $7 + 4, $ff, $d1, $2 ; person db SPRITE_BUG_CATCHER, $5 + 4, $5 + 4, $ff, $ff, $3 ; person ; warp-to EVENT_DISP $4, $7, $2 EVENT_DISP $4, $7, $3 FuchsiaPokecenter_h: ; 0x75057 to 0x75063 (12 bytes) (id=154) db $06 ; tileset db FUCHSIA_POKECENTER_HEIGHT, FUCHSIA_POKECENTER_WIDTH ; dimensions (y, x) dw FuchsiaPokecenterBlocks, FuchsiaPokecenterTexts, FuchsiaPokecenterScript ; blocks, texts, scripts db $00 ; connections dw FuchsiaPokecenterObject ; objects FuchsiaPokecenterScript: ; 0x75063 call $22fa jp $3c3c ; 0x75069 FuchsiaPokecenterTexts: dw FuchsiaPokecenterText1, FuchsiaPokecenterText2, FuchsiaPokecenterText3, FuchsiaPokecenterText4 FuchsiaPokecenterText1: ; 0x75071 db $ff FuchsiaPokecenterText2: ; 0x75072 TX_FAR _FuchsiaPokecenterText1 db $50 FuchsiaPokecenterText3: ; 0x75077 TX_FAR _FuchsiaPokecenterText3 db $50 FuchsiaPokecenterText4: ; 0x7507c db $f6 FuchsiaPokecenterObject: ; 0x7507d (size=44) db $0 ; border tile db $2 ; warps db $7, $3, $2, $ff db $7, $4, $2, $ff db $0 ; signs db $4 ; people db SPRITE_NURSE, $1 + 4, $3 + 4, $ff, $d0, $1 ; person db SPRITE_ROCKER, $3 + 4, $2 + 4, $ff, $ff, $2 ; person db SPRITE_LASS, $5 + 4, $6 + 4, $fe, $2, $3 ; person db SPRITE_CABLE_CLUB_WOMAN, $2 + 4, $b + 4, $ff, $d0, $4 ; person ; warp-to EVENT_DISP $7, $7, $3 EVENT_DISP $7, $7, $4 FuchsiaHouse2_h: ; 0x750a9 to 0x750b5 (12 bytes) (id=155) db $14 ; tileset db FUCHSIA_HOUSE_2_HEIGHT, FUCHSIA_HOUSE_2_WIDTH ; dimensions (y, x) dw FuchsiaHouse2Blocks, FuchsiaHouse2Texts, FuchsiaHouse2Script ; blocks, texts, scripts db $00 ; connections dw FuchsiaHouse2Object ; objects FuchsiaHouse2Script: ; 0x750b5 jp $3c3c ; 0x750b8 FuchsiaHouse2Texts: ; 0x750b8 dw FuchsiaHouse2Text1, FuchsiaHouse2Text2, FuchsiaHouse2Text3, FuchsiaHouse2Text4, FuchsiaHouse2Text5 FuchsiaHouse2Text1: ; 0x750c2 db $08 ; asm ld a, [$d78e] bit 0, a jr nz, .asm_58feb ; 0x750c8 ld b,GOLD_TEETH call $3493 jr nz, .asm_3f30f ; 0x750cf ld a, [$d78e] bit 1, a jr nz, .asm_60cba ; 0x750d6 ld hl, WardenGibberishText1 call PrintText call $35ec ld a, [$cc26] and a ld hl, WardenGibberishText3 jr nz, .asm_61238 ; 0x750e8 ld hl, WardenGibberishText2 .asm_61238 ; 0x750ed call PrintText jr .asm_52039 ; 0x750f0 .asm_3f30f ; 0x750f2 ld hl, WardenTeethText1 call PrintText ld a, $40 ldh [$db], a ld b, $5 ; BANK(MyFunction) ld hl, $7f37 ; MyFunction call Bankswitch ld hl, $d78e set 1, [hl] .asm_60cba ; 0x75109 ld hl, WardenThankYouText call PrintText ld bc,(HM_04 << 8) | 1 call GiveItem jr nc, .asm_53b90 ; 0x75115 ld hl, ReceivedHM04Text call PrintText ld hl, $d78e set 0, [hl] jr .asm_52039 ; 0x75122 .asm_58feb ; 0x75124 ld hl, HM04ExplanationText call PrintText jr .asm_52039 ; 0x7512a .asm_53b90 ; 0x7512c ld hl, HM04NoRoomText call PrintText .asm_52039 ; 0x75132 jp TextScriptEnd WardenGibberishText1: ; 0x75135 TX_FAR _WardenGibberishText1 db $50 ; 0x75135 + 5 bytes WardenGibberishText2: ; 0x7513a TX_FAR _WardenGibberishText2 db $50 ; 0x7513a + 5 bytes WardenGibberishText3: ; 0x7513f TX_FAR _WardenGibberishText3 db $50 ; 0x7513f + 5 bytes WardenTeethText1: ; 0x75144 TX_FAR _WardenTeethText1 db $0b WardenTeethText2: ; 0x75149 TX_FAR _WardenTeethText2 db $50 ; 0x75149 + 5 bytes WardenThankYouText: ; 0x7514e TX_FAR _WardenThankYouText db $50 ; 0x7514e + 5 bytes ReceivedHM04Text: ; 0x75153 TX_FAR _ReceivedHM04Text ; 0x9e5a2 db $0B, $50 ; 0x75153 + 6 bytes = 0x75159 HM04ExplanationText: ; 0x75159 TX_FAR _HM04ExplanationText db $50 ; 0x75159 + 5 bytes HM04NoRoomText: ; 0x7515e TX_FAR _HM04NoRoomText db $50 ; 0x7515e + 5 bytes FuchsiaHouse2Text5: FuchsiaHouse2Text4: ; 0x75163 db $08 ; asm ldh a, [$8c] cp $4 ld hl, UnnamedText_7517b jr nz, .asm_4c9a2 ; 0x7516b ld hl, UnnamedText_75176 .asm_4c9a2 ; 0x75170 call PrintText jp TextScriptEnd UnnamedText_75176: ; 0x75176 TX_FAR _UnnamedText_75176 db $50 ; 0x75176 + 5 bytes UnnamedText_7517b: ; 0x7517b TX_FAR _UnnamedText_7517b db $50 ; 0x7517b + 5 bytes FuchsiaHouse2Object: ; 0x75180 (size=45) db $17 ; border tile db $2 ; warps db $7, $4, $3, $ff db $7, $5, $3, $ff db $2 ; signs db $3, $4, $4 ; FuchsiaHouse2Text4 db $3, $5, $5 ; FuchsiaHouse2Text5 db $3 ; people db SPRITE_WARDEN, $3 + 4, $2 + 4, $ff, $ff, $1 ; person db SPRITE_BALL, $3 + 4, $8 + 4, $ff, $ff, $82, RARE_CANDY ; item db SPRITE_BOULDER, $4 + 4, $8 + 4, $ff, $10, $3 ; person ; warp-to EVENT_DISP $5, $7, $4 EVENT_DISP $5, $7, $5 FuchsiaHouse2Blocks: ; 0x751ad 20 INCBIN "maps/fuchsiahouse2.blk" SafariZoneEntrance_h: ; 0x751c1 to 0x751cd (12 bytes) (id=156) db $0c ; tileset db SAFARIZONEENTRANCE_HEIGHT, SAFARIZONEENTRANCE_WIDTH ; dimensions (y, x) dw SafariZoneEntranceBlocks, SafariZoneEntranceTexts, SafariZoneEntranceScript ; blocks, texts, scripts db $00 ; connections dw SafariZoneEntranceObject ; objects SafariZoneEntranceScript: ; 0x751cd call $3c3c ld hl, SafariZoneEntranceScripts ld a, [$d61f] jp $3d97 ; 0x751d9 SafariZoneEntranceScripts: ; 0x751d9 dw SafariZoneEntranceScript0, SafariZoneEntranceScript1, SafariZoneEntranceScript2, SafariZoneEntranceScript3, SafariZoneEntranceScript4, SafariZoneEntranceScript5, SafariZoneEntranceScript6 SafariZoneEntranceScript0: ; 0x751e7 ld hl, $5221 call $34bf ret nc ld a, $3 ld [$ff00+$8c], a call DisplayTextID ld a, $ff ld [$cd6b], a xor a ld [$ff00+$b4], a ld a, $c ld [$c109], a ld a, [$cd3d] cp $1 jr z, .asm_7520f ; 0x75207 $6 ld a, $2 ld [$d61f], a ret .asm_7520f ld a, $10 ld c, $1 call $52a3 ld a, $f0 ld [$cd6b], a ld a, $1 ld [$d61f], a ret ; 0x75221 Unknown_75221: ; 0x75221 db $2, $3, $2, $4, $ff SafariZoneEntranceScript1: ; 0x75226 call $52b4 ret nz SafariZoneEntranceScript2: ; 0x7522a xor a ld [$ff00+$b4], a ld [$cd6b], a call $2429 ld a, $4 ld [$ff00+$8c], a call $2920 ld a, $ff ld [$cd6b], a ret ; 0x75240 SafariZoneEntranceScript3: ; 0x75240 call $52b4 ret nz xor a ld [$cd6b], a ld a, $5 ld [$d61f], a ret ; 0x7524e SafariZoneEntranceScript5: ; 0x7524e ld a, $4 ld [$d528], a ld hl, $d790 bit 6, [hl] res 6, [hl] jr z, .asm_7527f ; 0x7525a $23 res 7, [hl] call $2429 ld a, $f0 ld [$cd6b], a ld a, $6 ld [$ff00+$8c], a call $2920 xor a ld [$da47], a ld a, $80 ld c, $3 call $52a3 ld a, $4 ld [$d61f], a jr .asm_75286 ; 0x7527d $7 .asm_7527f ld a, $5 ld [$ff00+$8c], a call $2920 .asm_75286 ret ; 0x75287 SafariZoneEntranceScript4: ; 0x75287 call $52b4 ret nz xor a ld [$cd6b], a ld a, $0 ld [$d61f], a ret ; 0x75295 SafariZoneEntranceScript6: ; 0x75295 call $52b4 ret nz call Delay3 ld a, [$cf0d] ld [$d61f], a ret ; 0x752a3 Unknown_752a3: ; 0x752a3 INCBIN "baserom.gbc",$752a3,$752b9 - $752a3 SafariZoneEntranceTexts: ; 0x752b9 dw SafariZoneEntranceText1, SafariZoneEntranceText2, SafariZoneEntranceText3, SafariZoneEntranceText4, SafariZoneEntranceText5, SafariZoneEntranceText6 SafariZoneEntranceText3: SafariZoneEntranceText1: ; 0x752c5 TX_FAR _SafariZoneEntranceText1 db $50 SafariZoneEntranceText4: ; 0x752ca TX_FAR UnnamedText_9e6e4 ; 0x9e6e4 db $8 ; 0x752cf ld a, $13 ld [$d125], a call $30e8 call $35ec ld a, [$cc26] and a jp nz, $5346 xor a ld [$ff00+$9f], a ld a, $5 ld [$ff00+$a0], a ld a, $0 ld [$ff00+$a1], a call $35a6 jr nc, .asm_752f9 ; 0x752ef $8 ld hl, UnnamedText_7536a call PrintText jr .asm_7534c ; 0x752f7 $53 .asm_752f9 xor a ld [$cd3d], a ld a, $5 ld [$cd3e], a ld a, $0 ld [$cd3f], a ld hl, $cd3f ld de, $d349 ld c, $3 ld a, $c call Predef ld a, $13 ld [$d125], a call $30e8 ld hl, UnnamedText_7535b call PrintText ld a, $1e ld [$da47], a ld a, $1 ld [$d70d], a ld a, $f6 ld [$d70e], a ld a, $40 ld c, $3 call $52a3 ld hl, $d790 set 7, [hl] res 6, [hl] ld a, $3 ld [$d61f], a jr .asm_75358 ; 0x75344 $12 ld hl, UnnamedText_75365 call PrintText .asm_7534c ld a, $80 ld c, $1 call $52a3 ld a, $4 ld [$d61f], a .asm_75358 jp TextScriptEnd ; 0x7535b UnnamedText_7535b: ; 0x7535b TX_FAR UnnamedText_9e747 ; 0x9e747 db $0B UnnamedText_75360: ; 0x75360 TX_FAR _UnnamedText_75360 db $50 ; 0x75360 + 5 bytes UnnamedText_75365: ; 0x75365 TX_FAR _UnnamedText_75365 db $50 ; 0x75365 + 5 bytes UnnamedText_7536a: ; 0x7536a TX_FAR _UnnamedText_7536a db $50 ; 0x7536a + 5 bytes SafariZoneEntranceText5: ; 0x7536f TX_FAR UnnamedText_9e814 ; 0x9e814 db $8 call $35ec ld a, [$cc26] and a jr nz, .asm_7539c ; 0x7537b $1f ld hl, UnnamedText_753bb call PrintText xor a ld [$c109], a ld a, $80 ld c, $3 call $52a3 ld hl, $d790 res 6, [hl] res 7, [hl] ld a, $0 ld [$cf0d], a jr .asm_753b3 ; 0x7539a $17 .asm_7539c ld hl, UnnamedText_753c0 call PrintText ld a, $4 ld [$c109], a ld a, $40 ld c, $1 call $52a3 ld a, $5 ld [$cf0d], a .asm_753b3 ld a, $6 ld [$d61f], a jp TextScriptEnd ; 0x753bb UnnamedText_753bb: ; 0x753bb TX_FAR _UnnamedText_753bb db $50 ; 0x753bb + 5 bytes UnnamedText_753c0: ; 0x753c0 TX_FAR _UnnamedText_753c0 db $50 ; 0x753c0 + 5 bytes SafariZoneEntranceText6: ; 0x753c5 TX_FAR _UnnamedText_753c5 db $50 ; 0x753c5 + 5 bytes SafariZoneEntranceText2: ; 0x753ca db $08 ; asm ld hl, UnnamedText_753e6 call PrintText call $35ec ld a, [$cc26] and a ld hl, UnnamedText_753f0 jr nz, .asm_278a6 ; 0x753db ld hl, UnnamedText_753eb .asm_278a6 ; 0x753e0 call PrintText jp TextScriptEnd UnnamedText_753e6: ; 0x753e6 TX_FAR _UnnamedText_753e6 db $50 ; 0x753e6 + 5 bytes UnnamedText_753eb: ; 0x753eb TX_FAR _UnnamedText_753eb db $50 ; 0x753eb + 5 bytes UnnamedText_753f0: ; 0x753f0 TX_FAR _UnnamedText_753f0 db $50 ; 0x753f0 + 5 bytes SafariZoneEntranceObject: ; 0x753f5 (size=48) db $a ; border tile db $4 ; warps db $5, $3, $4, $ff db $5, $4, $4, $ff db $0, $3, $0, SAFARI_ZONE_CENTER db $0, $4, $1, SAFARI_ZONE_CENTER db $0 ; signs db $2 ; people db SPRITE_WHITE_PLAYER, $2 + 4, $6 + 4, $ff, $d2, $1 ; person db SPRITE_WHITE_PLAYER, $4 + 4, $1 + 4, $ff, $d3, $2 ; person ; warp-to EVENT_DISP $4, $5, $3 EVENT_DISP $4, $5, $4 EVENT_DISP $4, $0, $3 ; SAFARI_ZONE_CENTER EVENT_DISP $4, $0, $4 ; SAFARI_ZONE_CENTER SafariZoneEntranceBlocks: ; 0x75425 12 INCBIN "maps/safarizoneentrance.blk" FuchsiaGym_h: ; 0x75431 to 0x7543d (12 bytes) (id=157) db $07 ; tileset db FUCHSIA_GYM_HEIGHT, FUCHSIA_GYM_WIDTH ; dimensions (y, x) dw FuchsiaGymBlocks, FuchsiaGymTexts, FuchsiaGymScript ; blocks, texts, scripts db $00 ; connections dw FuchsiaGymObject ; objects FuchsiaGymScript: ; 0x7543d call FuchsiaGymScript_Unknown75453 call $3c3c ld hl, FuchsiaGymTrainerHeaders ld de, $5482 ld a, [$d65b] call $3160 ld [$d65b], a ret ; 0x75453 FuchsiaGymScript_Unknown75453: ; 0x75453 INCBIN "baserom.gbc",$75453,$12 Gym5CityName: ; 0x75465 db "FUCHSIA CITY@" Gym5LeaderName: ; 0x75472 db "KOGA@" INCBIN "baserom.gbc",$75477,$5E FuchsiaGymTexts: ; 0x754d5 dw FuchsiaGymText1, FuchsiaGymText2, FuchsiaGymText3, FuchsiaGymText4, FuchsiaGymText5, FuchsiaGymText6, FuchsiaGymText7, FuchsiaGymText8, FuchsiaGymText9, FuchsiaGymText10, FuchsiaGymText11 FuchsiaGymTrainerHeaders: FuchsiaGymTrainerHeader0: ; 0x754eb db $2 ; flag's bit db ($2 << 4) ; trainer's view range dw $d792 ; flag's byte dw FuchsiaGymBattleText1 ; 0x55ae TextBeforeBattle dw FuchsiaGymAfterBattleText1 ; 0x55b8 TextAfterBattle dw FuchsiaGymEndBattleText1 ; 0x55b3 TextEndBattle dw FuchsiaGymEndBattleText1 ; 0x55b3 TextEndBattle ; 0x754f7 FuchsiaGymTrainerHeader2: ; 0x754f7 db $3 ; flag's bit db ($2 << 4) ; trainer's view range dw $d792 ; flag's byte dw FuchsiaGymBattleText2 ; 0x55c7 TextBeforeBattle dw FuchsiaGymAfterBattleText2 ; 0x55d1 TextAfterBattle dw FuchsiaGymEndBattleText2 ; 0x55cc TextEndBattle dw FuchsiaGymEndBattleText2 ; 0x55cc TextEndBattle ; 0x75503 FuchsiaGymTrainerHeader3: ; 0x75503 db $4 ; flag's bit db ($4 << 4) ; trainer's view range dw $d792 ; flag's byte dw FuchsiaGymBattleText3 ; 0x55e0 TextBeforeBattle dw FuchsiaGymAfterBattleText3 ; 0x55ea TextAfterBattle dw FuchsiaGymEndBattleText3 ; 0x55e5 TextEndBattle dw FuchsiaGymEndBattleText3 ; 0x55e5 TextEndBattle ; 0x7550f FuchsiaGymTrainerHeader4: ; 0x7550f db $5 ; flag's bit db ($2 << 4) ; trainer's view range dw $d792 ; flag's byte dw FuchsiaGymBattleText4 ; 0x55f9 TextBeforeBattle dw FuchsiaGymAfterBattleText4 ; 0x5603 TextAfterBattle dw FuchsiaGymEndBattleText4 ; 0x55fe TextEndBattle dw FuchsiaGymEndBattleText4 ; 0x55fe TextEndBattle ; 0x7551b FuchsiaGymTrainerHeader5: ; 0x7551b db $6 ; flag's bit db ($2 << 4) ; trainer's view range dw $d792 ; flag's byte dw FuchsiaGymBattleText5 ; 0x5612 TextBeforeBattle dw FuchsiaGymAfterBattleText5 ; 0x561c TextAfterBattle dw FuchsiaGymEndBattleText5 ; 0x5617 TextEndBattle dw FuchsiaGymEndBattleText5 ; 0x5617 TextEndBattle ; 0x75527 FuchsiaGymTrainerHeader6: ; 0x75527 db $7 ; flag's bit db ($2 << 4) ; trainer's view range dw $d792 ; flag's byte dw FuchsiaGymBattleText6 ; 0x562b TextBeforeBattle dw FuchsiaGymAfterBattleText6 ; 0x5635 TextAfterBattle dw FuchsiaGymEndBattleText6 ; 0x5630 TextEndBattle dw FuchsiaGymEndBattleText6 ; 0x5630 TextEndBattle ; 0x75533 db $ff FuchsiaGymText1: ; 0x75534 db $08 ; asm ld a, [$d792] bit 1, a jr z, .asm_181b6 ; 0x7553a bit 0, a jr nz, .asm_adc3b ; 0x7553e call z, $5497 call DisableWaitingAfterTextDisplay jr .asm_e84c6 ; 0x75546 .asm_adc3b ; 0x75548 ld hl, UnnamedText_7558b call PrintText jr .asm_e84c6 ; 0x7554e .asm_181b6 ; 0x75550 ld hl, UnnamedText_75581 call PrintText ld hl, $d72d set 6, [hl] set 7, [hl] ld hl, UnnamedText_75586 ld de, UnnamedText_75586 call $3354 ldh a, [$8c] ld [$cf13], a call $336a call $32d7 ld a, $5 ld [$d05c], a xor a ldh [$b4], a ld a, $3 ld [$d65b], a .asm_e84c6 ; 0x7557e jp TextScriptEnd UnnamedText_75581: ; 0x75581 TX_FAR _UnnamedText_75581 db $50 ; 0x75581 + 5 bytes UnnamedText_75586: ; 0x75586 TX_FAR _UnnamedText_75586 db $50 ; 0x75586 + 5 bytes UnnamedText_7558b: ; 0x7558b TX_FAR _UnnamedText_7558b db $50 ; 0x7558b + 5 bytes FuchsiaGymText9: ; 0x75590 TX_FAR _UnnamedText_75590 db $50 ; 0x75590 + 5 bytes FuchsiaGymText10: ; 0x75595 TX_FAR _ReceivedTM06Text ; 0xa00eb db $11 TM06ExplanationText: ; 0x7559a TX_FAR _TM06ExplanationText db $50 ; 0x7559a + 5 bytes FuchsiaGymText11: ; 0x7559f TX_FAR _TM06NoRoomText db $50 ; 0x7559f + 5 bytes FuchsiaGymText2: ; 0x755a4 db $08 ; asm ld hl, FuchsiaGymTrainerHeader0 call LoadTrainerHeader jp TextScriptEnd FuchsiaGymBattleText1: ; 0x755ae TX_FAR _FuchsiaGymBattleText1 db $50 ; 0x755ae + 5 bytes FuchsiaGymEndBattleText1: ; 0x755b3 TX_FAR _FuchsiaGymEndBattleText1 db $50 ; 0x755b3 + 5 bytes FuchsiaGymAfterBattleText1: ; 0x755b8 TX_FAR _FuchsiaGymAfterBattleText1 db $50 ; 0x755b8 + 5 bytes FuchsiaGymText3: ; 0x755bd db $08 ; asm ld hl, FuchsiaGymTrainerHeader2 call LoadTrainerHeader jp TextScriptEnd FuchsiaGymBattleText2: ; 0x755c7 TX_FAR _FuchsiaGymBattleText2 db $50 ; 0x755c7 + 5 bytes FuchsiaGymEndBattleText2: ; 0x755cc TX_FAR _FuchsiaGymEndBattleText2 db $50 ; 0x755cc + 5 bytes FuchsiaGymAfterBattleText2: ; 0x755d1 TX_FAR _FuchsiaGymAfterBattleText2 db $50 ; 0x755d1 + 5 bytes FuchsiaGymText4: ; 0x755d6 db $08 ; asm ld hl, FuchsiaGymTrainerHeader3 call LoadTrainerHeader jp TextScriptEnd FuchsiaGymBattleText3: ; 0x755e0 TX_FAR _FuchsiaGymBattleText3 db $50 ; 0x755e0 + 5 bytes FuchsiaGymEndBattleText3: ; 0x755e5 TX_FAR _FuchsiaGymEndBattleText3 db $50 ; 0x755e5 + 5 bytes FuchsiaGymAfterBattleText3: ; 0x755ea TX_FAR _FuchsiaGymAfterBattleText3 db $50 ; 0x755ea + 5 bytes FuchsiaGymText5: ; 0x755ef db $08 ; asm ld hl, FuchsiaGymTrainerHeader4 call LoadTrainerHeader jp TextScriptEnd FuchsiaGymBattleText4: ; 0x755f9 TX_FAR _FuchsiaGymBattleText4 db $50 ; 0x755f9 + 5 bytes FuchsiaGymEndBattleText4: ; 0x755fe TX_FAR _FuchsiaGymEndBattleText4 db $50 ; 0x755fe + 5 bytes FuchsiaGymAfterBattleText4: ; 0x75603 TX_FAR _FuchsiaGymAfterBattleText4 db $50 ; 0x75603 + 5 bytes FuchsiaGymText6: ; 0x75608 db $08 ; asm ld hl, FuchsiaGymTrainerHeader5 call LoadTrainerHeader jp TextScriptEnd FuchsiaGymBattleText5: ; 0x75612 TX_FAR _FuchsiaGymBattleText5 db $50 ; 0x75612 + 5 bytes FuchsiaGymEndBattleText5: ; 0x75617 TX_FAR _FuchsiaGymEndBattleText5 db $50 ; 0x75617 + 5 bytes FuchsiaGymAfterBattleText5: ; 0x7561c TX_FAR _FuchsiaGymAfterBattleText5 db $50 ; 0x7561c + 5 bytes FuchsiaGymText7: ; 0x75621 db $08 ; asm ld hl, FuchsiaGymTrainerHeader6 call LoadTrainerHeader jp TextScriptEnd FuchsiaGymBattleText6: ; 0x7562b TX_FAR _FuchsiaGymBattleText6 db $50 ; 0x7562b + 5 bytes FuchsiaGymEndBattleText6: ; 0x75630 TX_FAR _FuchsiaGymEndBattleText6 db $50 ; 0x75630 + 5 bytes FuchsiaGymAfterBattleText6: ; 0x75635 TX_FAR _FuchsiaGymAfterBattleText6 db $50 ; 0x75635 + 5 bytes FuchsiaGymText8: ; 0x7563a db $08 ; asm ld a, [$d792] bit 1, a ld hl, UnnamedText_75653 jr nz, .asm_50671 ; 0x75643 ld hl, UnnamedText_7564e .asm_50671 ; 0x75648 call PrintText jp TextScriptEnd UnnamedText_7564e: ; 0x7564e TX_FAR _UnnamedText_7564e db $50 ; 0x7564e + 5 bytes UnnamedText_75653: ; 0x75653 TX_FAR _UnnamedText_75653 db $50 ; 0x75653 + 5 bytes FuchsiaGymObject: ; 0x75658 (size=82) db $3 ; border tile db $2 ; warps db $11, $4, $5, $ff db $11, $5, $5, $ff db $0 ; signs db $8 ; people db SPRITE_BLACKBELT, $a + 4, $4 + 4, $ff, $d0, $41, KOGA + $C8, $1 ; trainer db SPRITE_ROCKER, $d + 4, $8 + 4, $ff, $d0, $42, JUGGLER + $C8, $7 ; trainer db SPRITE_ROCKER, $8 + 4, $7 + 4, $ff, $d3, $43, JUGGLER + $C8, $3 ; trainer db SPRITE_ROCKER, $c + 4, $1 + 4, $ff, $d0, $44, JUGGLER + $C8, $8 ; trainer db SPRITE_ROCKER, $5 + 4, $3 + 4, $ff, $d1, $45, TAMER + $C8, $1 ; trainer db SPRITE_ROCKER, $2 + 4, $8 + 4, $ff, $d0, $46, TAMER + $C8, $2 ; trainer db SPRITE_ROCKER, $7 + 4, $2 + 4, $ff, $d2, $47, JUGGLER + $C8, $4 ; trainer db SPRITE_GYM_HELPER, $f + 4, $7 + 4, $ff, $d0, $8 ; person ; warp-to EVENT_DISP $5, $11, $4 EVENT_DISP $5, $11, $5 FuchsiaGymBlocks: ; 0x756aa 45 INCBIN "maps/fuchsiagym.blk" FuchsiaMeetingRoom_h: ; 0x756d7 to 0x756e3 (12 bytes) (id=158) db $14 ; tileset db FUCHSIAMEETINGROOM_HEIGHT, FUCHSIAMEETINGROOM_WIDTH ; dimensions (y, x) dw FuchsiaMeetingRoomBlocks, FuchsiaMeetingRoomTexts, FuchsiaMeetingRoomScript ; blocks, texts, scripts db $00 ; connections dw FuchsiaMeetingRoomObject ; objects FuchsiaMeetingRoomScript: ; 0x756e3 call $3c3c ret ; 0x756e7 FuchsiaMeetingRoomTexts: ; 0x756e7 dw FuchsiaMeetingRoomText1, FuchsiaMeetingRoomText2, FuchsiaMeetingRoomText3 FuchsiaMeetingRoomText1: ; 0x756ed TX_FAR _FuchsiaMeetingRoomText1 db $50 FuchsiaMeetingRoomText2: ; 0x756f2 TX_FAR _FuchsiaMeetingRoomText2 db $50 FuchsiaMeetingRoomText3: ; 0x756f7 TX_FAR _FuchsiaMeetingRoomText3 db $50 FuchsiaMeetingRoomObject: ; 0x756fc (size=38) db $17 ; border tile db $2 ; warps db $7, $4, $6, $ff db $7, $5, $6, $ff db $0 ; signs db $3 ; people db SPRITE_WHITE_PLAYER, $1 + 4, $4 + 4, $ff, $d0, $1 ; person db SPRITE_WHITE_PLAYER, $2 + 4, $0 + 4, $ff, $d1, $2 ; person db SPRITE_WHITE_PLAYER, $1 + 4, $a + 4, $ff, $d0, $3 ; person ; warp-to EVENT_DISP $7, $7, $4 EVENT_DISP $7, $7, $5 FuchsiaMeetingRoomBlocks: ; 0x75722 28 INCBIN "maps/fuchsiameetingroom.blk" CinnabarGym_h: ; 0x7573e to 0x7574a (12 bytes) (id=166) db $16 ; tileset db CINNABAR_GYM_HEIGHT, CINNABAR_GYM_WIDTH ; dimensions (y, x) dw CinnabarGymBlocks, CinnabarGymTexts, CinnabarGymScript ; blocks, texts, scripts db $00 ; connections dw CinnabarGymObject ; objects CinnabarGymScript: ; 0x7574a call CinnabarGymScript_Unknown75759 call $3c3c ld hl, CinnabarGymScripts ld a, [$d65e] jp $3d97 ; 0x75759 CinnabarGymScript_Unknown75759: ; 0x75759 INCBIN "baserom.gbc",$75759,$7577B - $75759 Gym7CityName: ; 0x7577B db "CINNABAR ISLAND@" Gym7LeaderName: ; 0x7578b db "BLAINE@" INCBIN "baserom.gbc",$75792,$757a6 - $75792 CinnabarGymScripts: ; 0x757a6 dw CinnabarGymScript0, CinnabarGymScript1, CinnabarGymScript2, CinnabarGymScript3 CinnabarGymScript0: ; 0x757ae ld a, [$da38] and a ret z ld [$ff00+$8c], a cp $4 jr nz, .asm_757c3 ; 0x757b7 $a ld a, $4 ld [$d528], a ld de, $57d7 jr .asm_757cb ; 0x757c1 $8 .asm_757c3 ld de, $57da ld a, $1 ld [$d528], a .asm_757cb call $363a ld a, $1 ld [$d65e], a ld [$da39], a ret ; 0x757d7 INCBIN "baserom.gbc",$757d7,$757dc - $757d7 CinnabarGymScript1: ; 0x757dc ld a, [$d730] bit 0, a ret nz xor a ld [$cd6b], a ld a, [$da38] ld [$cc55], a ld [$ff00+$8c], a jp $2920 ; 0x757f1 INCBIN "baserom.gbc",$757f1,$757f6 - $757f1 CinnabarGymScript2: ; 0x757f6 ld a, [$d057] cp $ff jp z, $5792 ld a, [$cc55] ld [$ff00+$db], a ld c, a ld b, $2 ld hl, $d79a call $57f1 ld a, c and a jr nz, .asm_7581b ; 0x7580e $b call $3748 ld a, $ad call $23b1 call $3748 .asm_7581b ld a, [$cc55] ld [$ff00+$db], a ld c, a ld b, $1 ld hl, $d79a call $57f1 ld a, [$cc55] sub $2 ld c, a ld b, $1 ld hl, $d79c call $57f1 call $3ead xor a ld [$cd6b], a ld [$da38], a ld a, $0 ld [$d65e], a ld [$da39], a ret ; 0x7584a CinnabarGymScript3: ; 0x7584a ld a, [$d057] cp $ff jp z, $5792 ld a, $f0 ld [$cd6b], a ld a, $a ld [$ff00+$8c], a call $2920 ld hl, $d79a set 1, [hl] ld bc, $ee01 call GiveItem jr nc, .asm_75879 ; 0x75869 $e ld a, $b ld [$ff00+$8c], a call $2920 ld hl, $d79a set 0, [hl] jr .asm_75880 ; 0x75877 $7 .asm_75879 ld a, $c ld [$ff00+$8c], a call $2920 .asm_75880 ld hl, $d356 set 6, [hl] ld hl, $d72a set 6, [hl] ld a, [$d79a] or $fc ld [$d79a], a ld hl, $d79b set 0, [hl] ld hl, $d126 set 5, [hl] jp $5792 ; 0x7589f CinnabarGymTexts: ; 0x7589f dw CinnabarGymText1, CinnabarGymText2, CinnabarGymText3, CinnabarGymText4, CinnabarGymText5, CinnabarGymText6, CinnabarGymText7, CinnabarGymText8, CinnabarGymText9 ;CinnabarGymText 10: ; 0x75925 ;CinnabarGymText 11: ; 0x7592a ;CinnabarGymText 12: ; 0x75934 INCBIN "baserom.gbc",$758b1,$2e CinnabarGymText1: ; 0x758df db $8 ld a, [$d79a] bit 1, a jr z, .asm_d9332 ; 0x758e5 $16 bit 0, a jr nz, .asm_3012f ; 0x758e9 $9 call z, $5857 call DisableWaitingAfterTextDisplay jp TextScriptEnd .asm_3012f ; 0x758f4 ld hl, UnnamedText_75920 call PrintText jp TextScriptEnd .asm_d9332 ; 0x758fd ld hl, UnnamedText_75914 call PrintText ld hl, UnnamedText_75919 ld de, UnnamedText_75919 ; $5919 XXX call $3354 ld a, $7 ld [$d05c], a jp $58b7 ; 0x75914 UnnamedText_75914: ; 0x75914 TX_FAR _UnnamedText_75914 db $50 ; 0x75914 + 5 bytes UnnamedText_75919: ; 0x75919 TX_FAR UnnamedText_a08c7 db $11 db $d db $50 UnnamedText_75920: ; 0x75920 TX_FAR _UnnamedText_75920 db $50 ; 0x75920 + 5 bytes UnnamedText_75925: ; 0x75925 TX_FAR _UnnamedText_75925 db $50 ; 0x75925 + 5 bytes ReceivedTM38Text: ; 0x7592a TX_FAR _ReceivedTM38Text ; 0xa09a8 db $0B TX_FAR _TM38ExplanationText db $50 ; 0x75934 TM38NoRoomText: ; 0x75934 TX_FAR _TM38NoRoomText db $50 ; 0x75934 + 5 bytes CinnabarGymText2: ; 0x75939 db $08 ; asm call $57a0 ld a, [$d79a] bit 2, a jr nz, .asm_46bb4 ; 0x75942 ld hl, UnnamedText_7595f call PrintText ld hl, UnnamedText_75964 ld de, UnnamedText_75964 ; $5964 XXX call $3354 jp $58b7 .asm_46bb4 ; 0x75956 ld hl, UnnamedText_75969 call PrintText jp TextScriptEnd UnnamedText_7595f: ; 0x7595f TX_FAR _UnnamedText_7595f db $50 ; 0x7595f + 5 bytes UnnamedText_75964: ; 0x75964 TX_FAR _UnnamedText_75964 db $50 ; 0x75964 + 5 bytes UnnamedText_75969: ; 0x75969 TX_FAR _UnnamedText_75969 db $50 ; 0x75969 + 5 bytes CinnabarGymText3: ; 0x7596e db $08 ; asm call $57a0 ld a, [$d79a] bit 3, a jr nz, .asm_4b406 ; 0x75977 ld hl, UnnamedText_75994 call PrintText ld hl, UnnamedText_75999 ld de, UnnamedText_75999 ; $5999 XXX call $3354 jp $58b7 .asm_4b406 ; 0x7598b ld hl, UnnamedText_7599e call PrintText jp TextScriptEnd UnnamedText_75994: ; 0x75994 TX_FAR _UnnamedText_75994 db $50 ; 0x75994 + 5 bytes UnnamedText_75999: ; 0x75999 TX_FAR _UnnamedText_75999 db $50 ; 0x75999 + 5 bytes UnnamedText_7599e: ; 0x7599e TX_FAR _UnnamedText_7599e db $50 ; 0x7599e + 5 bytes CinnabarGymText4: ; 0x759a3 db $08 ; asm call $57a0 ld a, [$d79a] bit 4, a jr nz, .asm_c0673 ; 0x759ac ld hl, UnnamedText_759c9 call PrintText ld hl, UnnamedText_759ce ld de, UnnamedText_759ce ; $59ce XXX call $3354 jp $58b7 .asm_c0673 ; 0x759c0 ld hl, UnnamedText_759d3 call PrintText jp TextScriptEnd UnnamedText_759c9: ; 0x759c9 TX_FAR _UnnamedText_759c9 db $50 ; 0x759c9 + 5 bytes UnnamedText_759ce: ; 0x759ce TX_FAR _UnnamedText_759ce db $50 ; 0x759ce + 5 bytes UnnamedText_759d3: ; 0x759d3 TX_FAR _UnnamedText_759d3 db $50 ; 0x759d3 + 5 bytes CinnabarGymText5: ; 0x759d8 db $08 ; asm call $57a0 ld a, [$d79a] bit 5, a jr nz, .asm_5cfd7 ; 0x759e1 ld hl, UnnamedText_759fe call PrintText ld hl, UnnamedText_75a03 ld de, UnnamedText_75a03 ; $5a03 XXX call $3354 jp $58b7 .asm_5cfd7 ; 0x759f5 ld hl, UnnamedText_75a08 call PrintText jp TextScriptEnd UnnamedText_759fe: ; 0x759fe TX_FAR _UnnamedText_759fe db $50 ; 0x759fe + 5 bytes UnnamedText_75a03: ; 0x75a03 TX_FAR _UnnamedText_75a03 db $50 ; 0x75a03 + 5 bytes UnnamedText_75a08: ; 0x75a08 TX_FAR _UnnamedText_75a08 db $50 ; 0x75a08 + 5 bytes CinnabarGymText6: ; 0x75a0d db $08 ; asm call $57a0 ld a, [$d79a] bit 6, a jr nz, .asm_776b4 ; 0x75a16 ld hl, UnnamedText_75a33 call PrintText ld hl, UnnamedText_75a38 ld de, UnnamedText_75a38 call $3354 jp $58b7 .asm_776b4 ; 0x75a2a ld hl, UnnamedText_75a3d call PrintText jp TextScriptEnd UnnamedText_75a33: ; 0x75a33 TX_FAR _UnnamedText_75a33 db $50 ; 0x75a33 + 5 bytes UnnamedText_75a38: ; 0x75a38 TX_FAR _UnnamedText_75a38 db $50 ; 0x75a38 + 5 bytes UnnamedText_75a3d: ; 0x75a3d TX_FAR _UnnamedText_75a3d db $50 ; 0x75a3d + 5 bytes CinnabarGymText7: ; 0x75a42 db $08 ; asm call $57a0 ld a, [$d79a] bit 7, a jr nz, .asm_2f755 ; 0x75a4b ld hl, UnnamedText_75a68 call PrintText ld hl, UnnamedText_75a6d ld de, UnnamedText_75a6d call $3354 jp $58b7 .asm_2f755 ; 0x75a5f ld hl, $5a72 call PrintText jp TextScriptEnd UnnamedText_75a68: ; 0x75a68 TX_FAR _UnnamedText_75a68 db $50 ; 0x75a68 + 5 bytes UnnamedText_75a6d: ; 0x75a6d TX_FAR _UnnamedText_75a6d db $50 ; 0x75a6d + 5 bytes UnnamedText_75a72: ; 0x75a72 TX_FAR _UnnamedText_75a72 db $50 ; 0x75a72 + 5 bytes CinnabarGymText8: ; 0x75a77 db $08 ; asm call $57a0 ld a, [$d79b] bit 0, a jr nz, .asm_d87be ; 0x75a80 ld hl, UnnamedText_75a9d call PrintText ld hl, UnnamedText_75aa2 ld de, UnnamedText_75aa2 ; $5aa2 XXX call $3354 jp $58b7 .asm_d87be ; 0x75a94 ld hl, UnnamedText_75aa7 call PrintText jp TextScriptEnd UnnamedText_75a9d: ; 0x75a9d TX_FAR _UnnamedText_75a9d db $50 ; 0x75a9d + 5 bytes UnnamedText_75aa2: ; 0x75aa2 TX_FAR _UnnamedText_75aa2 db $50 ; 0x75aa2 + 5 bytes UnnamedText_75aa7: ; 0x75aa7 TX_FAR _UnnamedText_75aa7 db $50 ; 0x75aa7 + 5 bytes CinnabarGymText9: ; 0x75aac db $08 ; asm ld a, [$d79a] bit 1, a jr nz, .asm_627d9 ; 0x75ab2 ld hl, UnnamedText_75ac2 jr .asm_0b11d ; 0x75ab7 .asm_627d9 ; 0x75ab9 ld hl, UnnamedText_75ac7 .asm_0b11d ; 0x75abc call PrintText jp TextScriptEnd UnnamedText_75ac2: ; 0x75ac2 TX_FAR _UnnamedText_75ac2 db $50 ; 0x75ac2 + 5 bytes UnnamedText_75ac7: ; 0x75ac7 TX_FAR _UnnamedText_75ac7 db $50 ; 0x75ac7 + 5 bytes CinnabarGymObject: ; 0x75acc (size=90) db $2e ; border tile db $2 ; warps db $11, $10, $1, $ff db $11, $11, $1, $ff db $0 ; signs db $9 ; people db SPRITE_FAT_BALD_GUY, $3 + 4, $3 + 4, $ff, $d0, $41, BLAINE + $C8, $1 ; trainer db SPRITE_BLACK_HAIR_BOY_2, $2 + 4, $11 + 4, $ff, $d0, $42, SUPER_NERD + $C8, $9 ; trainer db SPRITE_BLACK_HAIR_BOY_2, $8 + 4, $11 + 4, $ff, $d0, $43, BURGLAR + $C8, $4 ; trainer db SPRITE_BLACK_HAIR_BOY_2, $4 + 4, $b + 4, $ff, $d0, $44, SUPER_NERD + $C8, $a ; trainer db SPRITE_BLACK_HAIR_BOY_2, $8 + 4, $b + 4, $ff, $d0, $45, BURGLAR + $C8, $5 ; trainer db SPRITE_BLACK_HAIR_BOY_2, $e + 4, $b + 4, $ff, $d0, $46, SUPER_NERD + $C8, $b ; trainer db SPRITE_BLACK_HAIR_BOY_2, $e + 4, $3 + 4, $ff, $d0, $47, BURGLAR + $C8, $6 ; trainer db SPRITE_BLACK_HAIR_BOY_2, $8 + 4, $3 + 4, $ff, $d0, $48, SUPER_NERD + $C8, $c ; trainer db SPRITE_GYM_HELPER, $d + 4, $10 + 4, $ff, $d0, $9 ; person ; warp-to EVENT_DISP $a, $11, $10 EVENT_DISP $a, $11, $11 CinnabarGymBlocks: ; 0x75b26 90 INCBIN "maps/cinnabargym.blk" Lab1_h: ; 0x75b80 to 0x75b8c (12 bytes) (id=167) db $14 ; tileset db CINNABAR_LAB_1_HEIGHT, CINNABAR_LAB_1_WIDTH ; dimensions (y, x) dw Lab1Blocks, Lab1Texts, Lab1Script ; blocks, texts, scripts db $00 ; connections dw Lab1Object ; objects Lab1Script: ; 0x75b8c call $3c3c ret ; 0x75b90 Lab1Texts: ; 0x75b90 dw Lab1Text1, Lab1Text2, Lab1Text3, Lab1Text4, Lab1Text5 Lab1Text1: ; 0x75b9a TX_FAR _Lab1Text1 db $50 Lab1Text2: ; 0x75b9f TX_FAR _Lab1Text2 db $50 Lab1Text3: ; 0x75ba4 TX_FAR _Lab1Text3 db $50 Lab1Text4: ; 0x75ba9 TX_FAR _Lab1Text4 db $50 Lab1Text5: ; 0x75bae TX_FAR _Lab1Text5 db $50 Lab1Object: ; 0x75bb3 (size=62) db $17 ; border tile db $5 ; warps db $7, $2, $2, $ff db $7, $3, $2, $ff db $4, $8, $0, CINNABAR_LAB_2 db $4, $c, $0, CINNABAR_LAB_3 db $4, $10, $0, CINNABAR_LAB_4 db $4 ; signs db $2, $3, $2 ; Lab1Text2 db $4, $9, $3 ; Lab1Text3 db $4, $d, $4 ; Lab1Text4 db $4, $11, $5 ; Lab1Text5 db $1 ; people db SPRITE_FISHER, $3 + 4, $1 + 4, $ff, $ff, $1 ; person ; warp-to EVENT_DISP $9, $7, $2 EVENT_DISP $9, $7, $3 EVENT_DISP $9, $4, $8 ; CINNABAR_LAB_2 EVENT_DISP $9, $4, $c ; CINNABAR_LAB_3 EVENT_DISP $9, $4, $10 ; CINNABAR_LAB_4 Lab1Blocks: ; 0x75bf1 36 INCBIN "maps/lab1.blk" Lab2_h: ; 0x75c15 to 0x75c21 (12 bytes) (id=168) db $14 ; tileset db CINNABAR_LAB_2_HEIGHT, CINNABAR_LAB_2_WIDTH ; dimensions (y, x) dw Lab2Blocks, Lab2Texts, Lab2Script ; blocks, texts, scripts db $00 ; connections dw Lab2Object ; objects Lab2Script: ; 0x75c21 jp $3c3c ; 0x75c24 Lab2Texts: ; 0x75c24 dw Lab2Text1, Lab2Text2, Lab2Text3 Lab2Text1: ; 0x75c2a TX_FAR _Lab2Text1 db $50 Lab2Text2: ; 0x75c2f db $8 ld a, $7 ld [W_WHICHTRADE], a jr asm_78552 ; 0x75c35 $6 Lab2Text3: ; 0x75c37 db $8 ld a, $8 ld [W_WHICHTRADE], a asm_78552: ; 0x75c3d ld a, $54 call Predef jp TextScriptEnd Lab2Object: ; 0x75c45 (size=38) db $17 ; border tile db $2 ; warps db $7, $2, $2, CINNABAR_LAB_1 db $7, $3, $2, CINNABAR_LAB_1 db $0 ; signs db $3 ; people db SPRITE_BLACK_HAIR_BOY_2, $2 + 4, $3 + 4, $ff, $d0, $1 ; person db SPRITE_OLD_PERSON, $4 + 4, $1 + 4, $ff, $ff, $2 ; person db SPRITE_FOULARD_WOMAN, $5 + 4, $5 + 4, $ff, $d1, $3 ; person ; warp-to EVENT_DISP $4, $7, $2 ; CINNABAR_LAB_1 EVENT_DISP $4, $7, $3 ; CINNABAR_LAB_1 Lab2Blocks: ; 0x75c6b 16 INCBIN "maps/lab2.blk" Lab3_h: ; 0x75c7b to 0x75c87 (12 bytes) (id=169) db $14 ; tileset db CINNABAR_LAB_3_HEIGHT, CINNABAR_LAB_3_WIDTH ; dimensions (y, x) dw Lab3Blocks, Lab3Texts, Lab3Script ; blocks, texts, scripts db $00 ; connections dw Lab3Object ; objects Lab3Script: ; 0x75c87 jp $3c3c ; 0x75c8a Lab3Texts: ; 0x75c8a dw Lab3Text1, Lab3Text2, Lab3Text3, Lab3Text4, Lab3Text5 Lab3Text1: ; 0x75c94 db $08 ; asm ld a, [$d7a1] bit 7, a jr nz, .asm_e551a ; 0x75c9a ld hl, TM35PreReceiveText call PrintText ld bc, (TM_35 << 8) | 1 call GiveItem jr nc, .asm_6c187 ; 0x75ca8 ld hl, ReceivedTM35Text call PrintText ld hl, $d7a1 set 7, [hl] jr .asm_eb896 ; 0x75cb5 .asm_6c187 ; 0x75cb7 ld hl, TM35NoRoomText call PrintText jr .asm_eb896 ; 0x75cbd .asm_e551a ; 0x75cbf ld hl, TM35ExplanationText call PrintText .asm_eb896 ; 0x75cc5 jp TextScriptEnd TM35PreReceiveText: ; 0x75cc8 TX_FAR _TM35PreReceiveText db $50 ; 0x75cc8 + 5 bytes ReceivedTM35Text: ; 0x75ccd TX_FAR _ReceivedTM35Text ; 0xa0f48 db $0B, $50 ; 0x75cd3 TM35ExplanationText: ; 0x75cd3 TX_FAR _TM35ExplanationText db $50 ; 0x75cd3 + 5 bytes TM35NoRoomText: ; 0x75cd8 TX_FAR _TM35NoRoomText db $50 ; 0x75cd8 + 5 bytes Lab3Text2: ; 0x75cdd TX_FAR _Lab3Text2 db $50 Lab3Text4: Lab3Text3: ; 0x75ce2 TX_FAR _Lab3Text3 db $50 Lab3Text5: ; 0x75ce7 TX_FAR _Lab3Text5 db $50 Lab3Object: ; 0x75cec (size=41) db $17 ; border tile db $2 ; warps db $7, $2, $3, CINNABAR_LAB_1 db $7, $3, $3, CINNABAR_LAB_1 db $3 ; signs db $4, $0, $3 ; Lab3Text3 db $4, $1, $4 ; Lab3Text4 db $1, $2, $5 ; Lab3Text5 db $2 ; people db SPRITE_OAK_AIDE, $2 + 4, $7 + 4, $ff, $d0, $1 ; person db SPRITE_OAK_AIDE, $3 + 4, $2 + 4, $fe, $2, $2 ; person ; warp-to EVENT_DISP $4, $7, $2 ; CINNABAR_LAB_1 EVENT_DISP $4, $7, $3 ; CINNABAR_LAB_1 Lab3Blocks: ; 0x75d15 16 INCBIN "maps/lab3.blk" Lab4_h: ; 0x75d25 to 0x75d31 (12 bytes) (id=170) db $14 ; tileset db CINNABAR_LAB_4_HEIGHT, CINNABAR_LAB_4_WIDTH ; dimensions (y, x) dw Lab4Blocks, Lab4Texts, Lab4Script ; blocks, texts, scripts db $00 ; connections dw Lab4Object ; objects Lab4Script: ; 0x75d31 jp $3c3c ; 0x75d34 Lab4Texts: ; 0x75d34 dw Lab4Text1, Lab4Text2 INCBIN "baserom.gbc",$75d34 + 4,$38 -4 Lab4Text1: ; 0x75d6c db $8 ld a, [$d7a3] bit 0, a jr nz, .asm_75d96 ; 0x75d72 $22 ld hl, UnnamedText_75dc6 call PrintText call $5d38 ld a, [$cd37] and a jr z, .asm_75d8d ; 0x75d81 $a ld b, $18 ld hl, $5006 call Bankswitch jr .asm_75d93 ; 0x75d8b $6 .asm_75d8d ld hl, UnnamedText_75dcb call PrintText .asm_75d93 jp TextScriptEnd .asm_75d96 bit 1, a jr z, .asm_75da2 ; 0x75d98 $8 ld hl, UnnamedText_75dd0 call PrintText jr .asm_75d93 ; 0x75da0 $f1 .asm_75da2 call $5de8 ld hl, UnnamedText_75dd5 call PrintText ld hl, $d7a3 set 2, [hl] ld a, [$d710] ld b, a ld c, $1e call GivePokemon jr nc, .asm_75d93 ; 0x75db9 $d8 ld hl, $d7a3 res 0, [hl] res 1, [hl] res 2, [hl] jr .asm_75d93 ; 0x75dc4 $cd ; 0x75dc6 UnnamedText_75dc6: ; 0x75dc6 TX_FAR _UnnamedText_75dc6 db $50 ; 0x75dc6 + 5 bytes UnnamedText_75dcb: ; 0x75dcb TX_FAR _UnnamedText_75dcb db $50 ; 0x75dcb + 5 bytes UnnamedText_75dd0: ; 0x75dd0 TX_FAR _UnnamedText_75dd0 db $50 ; 0x75dd0 + 5 bytes UnnamedText_75dd5: ; 0x75dd5 TX_FAR _UnnamedText_75dd5 db $50 ; 0x75dd5 + 5 bytes Lab4Text2: ; 0x75dda db $08 ; asm ld a, $3 ld [W_WHICHTRADE], a ld a, $54 call Predef jp TextScriptEnd ; 0x75de8 ; XXX todo ;db $6, $18, $21, $eb, $50 ;db $c3, $d6, $35 ld b, $18 ld hl, $50eb jp $35d6 ; 0x75df0 Lab4Object: ; 0x75df0 (size=32) db $17 ; border tile db $2 ; warps db $7, $2, $4, CINNABAR_LAB_1 db $7, $3, $4, CINNABAR_LAB_1 db $0 ; signs db $2 ; people db SPRITE_OAK_AIDE, $2 + 4, $5 + 4, $fe, $2, $1 ; person db SPRITE_OAK_AIDE, $6 + 4, $7 + 4, $ff, $d1, $2 ; person ; warp-to EVENT_DISP $4, $7, $2 ; CINNABAR_LAB_1 EVENT_DISP $4, $7, $3 ; CINNABAR_LAB_1 Lab4Blocks: ; 0x75e10 16 INCBIN "maps/lab4.blk" CinnabarPokecenter_h: ; 0x75e20 to 0x75e2c (12 bytes) (id=171) db $06 ; tileset db CINNABAR_POKECENTER_HEIGHT, CINNABAR_POKECENTER_WIDTH ; dimensions (y, x) dw CinnabarPokecenterBlocks, CinnabarPokecenterTexts, CinnabarPokecenterScript ; blocks, texts, scripts db $00 ; connections dw CinnabarPokecenterObject ; objects CinnabarPokecenterScript: ; 0x75e2c call $22fa jp $3c3c ; 0x75e32 CinnabarPokecenterTexts: ; 0x75e32 dw CinnabarPokecenterText1, CinnabarPokecenterText2, CinnabarPokecenterText3, CinnabarPokecenterText4 CinnabarPokecenterText1: ; 0x75e3a db $ff CinnabarPokecenterText2: ; 0x75e3b TX_FAR _CinnabarPokecenterText1 db $50 CinnabarPokecenterText3: ; 0x75e40 TX_FAR _CinnabarPokecenterText3 db $50 CinnabarPokecenterText4: ; 0x75e45 db $f6 CinnabarPokecenterObject: ; 0x75e46 (size=44) db $0 ; border tile db $2 ; warps db $7, $3, $3, $ff db $7, $4, $3, $ff db $0 ; signs db $4 ; people db SPRITE_NURSE, $1 + 4, $3 + 4, $ff, $d0, $1 ; person db SPRITE_LASS, $4 + 4, $9 + 4, $fe, $0, $2 ; person db SPRITE_GENTLEMAN, $6 + 4, $2 + 4, $ff, $ff, $3 ; person db SPRITE_CABLE_CLUB_WOMAN, $2 + 4, $b + 4, $ff, $d0, $4 ; person ; warp-to EVENT_DISP $7, $7, $3 EVENT_DISP $7, $7, $4 CinnabarMart_h: ; 0x75e72 to 0x75e7e (12 bytes) (id=172) db $02 ; tileset db CINNABAR_MART_HEIGHT, CINNABAR_MART_WIDTH ; dimensions (y, x) dw CinnabarMartBlocks, CinnabarMartTexts, CinnabarMartScript ; blocks, texts, scripts db $00 ; connections dw CinnabarMartObject ; objects CinnabarMartScript: ; 0x75e7e jp $3c3c ; 0x75e81 CinnabarMartTexts: ; 0x75e81 dw CinnabarMartText1, CinnabarMartText2, CinnabarMartText3 CinnabarMartText2: ; 0x75e87 TX_FAR _CinnabarMartText2 db $50 CinnabarMartText3: ; 0x75e8c TX_FAR _CinnabarMartText3 db $50 CinnabarMartObject: ; 0x75e91 (size=38) db $0 ; border tile db $2 ; warps db $7, $3, $4, $ff db $7, $4, $4, $ff db $0 ; signs db $3 ; people db SPRITE_MART_GUY, $5 + 4, $0 + 4, $ff, $d3, $1 ; person db SPRITE_ERIKA, $2 + 4, $6 + 4, $ff, $ff, $2 ; person db SPRITE_OAK_AIDE, $4 + 4, $3 + 4, $ff, $ff, $3 ; person ; warp-to EVENT_DISP $4, $7, $3 EVENT_DISP $4, $7, $4 CopycatsHouseF1_h: ; 0x75eb7 to 0x75ec3 (12 bytes) (id=175) db $01 ; tileset db COPYCATS_HOUSE_1F_HEIGHT, COPYCATS_HOUSE_1F_WIDTH ; dimensions (y, x) dw CopycatsHouseF1Blocks, CopycatsHouseF1Texts, CopycatsHouseF1Script ; blocks, texts, scripts db $00 ; connections dw CopycatsHouseF1Object ; objects CopycatsHouseF1Script: ; 0x75ec3 jp $3c3c ; 0x75ec6 CopycatsHouseF1Texts: ; 0x75ec6 dw CopycatsHouseF1Text1, CopycatsHouseF1Text2, CopycatsHouseF1Text3 CopycatsHouseF1Text1: ; 0x75ecc TX_FAR _CopycatsHouseF1Text1 db $50 CopycatsHouseF1Text2: ; 0x75ed1 TX_FAR _CopycatsHouseF1Text2 db $50 CopycatsHouseF1Text3: ; 0x75ed6 TX_FAR _CopycatsHouseF1Text3 db $8 ld a, $28 call $13d0 jp TextScriptEnd CopycatsHouseF1Object: ; 0x75ee3 (size=46) db $a ; border tile db $3 ; warps db $7, $2, $0, $ff db $7, $3, $0, $ff db $1, $7, $0, COPYCATS_HOUSE_2F db $0 ; signs db $3 ; people db SPRITE_MOM_GEISHA, $2 + 4, $2 + 4, $ff, $d0, $1 ; person db SPRITE_FAT_BALD_GUY, $4 + 4, $5 + 4, $ff, $d2, $2 ; person db SPRITE_CLEFAIRY, $4 + 4, $1 + 4, $fe, $1, $3 ; person ; warp-to EVENT_DISP $4, $7, $2 EVENT_DISP $4, $7, $3 EVENT_DISP $4, $1, $7 ; COPYCATS_HOUSE_2F Gary_h: ;0x75f11 db $7 ;tileset db $4, $4 ;Height, Width dw GaryBlocks, GaryTexts, GaryScript db $0 ;No Connections dw GaryObject GaryScript: ; 0x75f1d call $3c3c ld hl, GaryScripts ld a, [$d64c] jp $3d97 ; 0x75f29 INCBIN "baserom.gbc",$75f29,$75f31 - $75f29 GaryScripts: ; 0x75f31 dw GaryScript0, GaryScript1, GaryScript2 INCBIN "baserom.gbc",$75f33 + 4,$14 - 4 GaryScript0: ; 0x75f47 ret ; 0x75f48 GaryScript1: ; 0x75f48 ld a, $ff ld [$cd6b], a ld hl, $ccd3 ld de, $5f63 call $350c dec a ld [$cd38], a call $3486 ld a, $2 ld [$d64c], a ret ; 0x75f63 INCBIN "baserom.gbc",$75f63,$75f6a - $75f63 GaryScript2: ; 0x75f6a 5F6A ld a, [$cd38] and a ret nz call Delay3 xor a ld [$cd6b], a ld hl, $d355 res 7, [hl] ld a, $1 ld [$ff00+$8c], a call $2920 call Delay3 ld hl, $d72d set 6, [hl] set 7, [hl] ld hl, UnnamedText_760f9 ld de, UnnamedText_760fe call $3354 ld a, $f3 ld [$d059], a ; select which team to use during the encounter ld a, [W_RIVALSTARTER] cp SQUIRTLE jr nz, .NotSquirtle\@ ; 0x75f9f $4 ld a, $1 jr .done\@ .NotSquirtle\@ cp BULBASAUR jr nz, .Charmander\@ ; 0x75fa7 $4 ld a, $2 jr .done\@ .Charmander\@ ld a, $3 .done\@ ld [W_TRAINERNO], a xor a ld [$ff00+$b4], a ld a, $3 ld [$d64c], a ret ; 0x75fbb INCBIN "baserom.gbc",$75fbb,$760d6 - $75fbb GaryTexts: ; 0x760d6 dw GaryText1, GaryText2, GaryText3, GaryText4, GaryText5 GaryText1: ; 0x760e0 db $08 ; asm ld a, [$d867] bit 1, a ld hl, UnnamedText_760f4 jr z, .asm_17e9f ; 0x760e9 ld hl, UnnamedText_76103 .asm_17e9f ; 0x760ee call PrintText jp TextScriptEnd UnnamedText_760f4: ; 0x760f4 TX_FAR _UnnamedText_760f4 db $50 ; 0x760f4 + 5 bytes UnnamedText_760f9: ; 0x760f9 TX_FAR _UnnamedText_760f9 db $50 ; 0x760f9 + 5 bytes UnnamedText_760fe: ; 0x760fe TX_FAR _UnnamedText_760fe db $50 ; 0x760fe + 5 bytes UnnamedText_76103: ; 0x76103 TX_FAR _UnnamedText_76103 db $50 ; 0x76103 + 5 bytes GaryText2: ; 0x76108 TX_FAR _GaryText2 db $50 GaryText3: ; 0x7610d db $8 ld a, [$d717] ld [$d11e], a call GetMonName ld hl, UnnamedText_76120 call PrintText jp TextScriptEnd ; 0x76120 UnnamedText_76120: ; 0x76120 TX_FAR _UnnamedText_76120 db $50 ; 0x76120 + 5 bytes GaryText4: ; 0x76125 TX_FAR _UnnamedText_76125 db $50 ; 0x76125 + 5 bytes GaryText5: ; 0x7612a TX_FAR _UnnamedText_7612a db $50 ; 0x7612a + 5 bytes GaryObject: ; 0x7612f (size=48) db $3 ; border tile db $4 ; warps db $7, $3, $1, LANCES_ROOM db $7, $4, $2, LANCES_ROOM db $0, $3, $0, HALL_OF_FAME db $0, $4, $0, HALL_OF_FAME db $0 ; signs db $2 ; people db SPRITE_BLUE, $2 + 4, $4 + 4, $ff, $d0, $1 ; person db SPRITE_OAK, $7 + 4, $3 + 4, $ff, $d1, $2 ; person ; warp-to EVENT_DISP $4, $7, $3 ; LANCES_ROOM EVENT_DISP $4, $7, $4 ; LANCES_ROOM EVENT_DISP $4, $0, $3 ; HALL_OF_FAME EVENT_DISP $4, $0, $4 ; HALL_OF_FAME GaryBlocks: ; 0x7615f 16 INCBIN "maps/gary.blk" Lorelei_h: ; 0x7616f to 0x7617b (12 bytes) (id=245) db $07 ; tileset db LORELEIS_ROOM_HEIGHT, LORELEIS_ROOM_WIDTH ; dimensions (y, x) dw LoreleiBlocks, LoreleiTexts, LoreleiScript ; blocks, texts, scripts db $00 ; connections dw LoreleiObject ; objects LoreleiScript: ; 0x7617b call LoreleiScript_Unknown76191 call $3c3c ld hl, LoreleiTrainerHeaders ld de, $61bb ld a, [$d64d] call $3160 ld [$d64d], a ret ; 0x76191 LoreleiScript_Unknown76191: ; 0x76191 INCBIN "baserom.gbc",$76191,$c0 LoreleiTexts: ; 0x76251 dw LoreleiText1, LoreleiText2 LoreleiTrainerHeaders: LoreleiTrainerHeader0: ; 0x76255 db $1 ; flag's bit db ($0 << 4) ; trainer's view range dw $d863 ; flag's byte dw LoreleiBeforeBattleText ; 0x626c TextBeforeBattle dw LoreleiAfterBattleText ; 0x6276 TextAfterBattle dw LoreleiEndBattleText ; 0x6271 TextEndBattle dw LoreleiEndBattleText ; 0x6271 TextEndBattle ; 0x76261 db $ff LoreleiText1: ; 0x76262 db $08 ; asm ld hl, LoreleiTrainerHeader0 call LoadTrainerHeader jp TextScriptEnd LoreleiBeforeBattleText: ; 0x7626c TX_FAR _LoreleiBeforeBattleText db $50 ; 0x7626c + 5 bytes LoreleiEndBattleText: ; 0x76271 TX_FAR _LoreleiEndBattleText db $50 ; 0x76271 + 5 bytes LoreleiAfterBattleText: ; 0x76276 TX_FAR _LoreleiAfterBattleText db $50 ; 0x76276 + 5 bytes LoreleiText2: ; 0x7627b TX_FAR _UnnamedText_7627b db $50 ; 0x7627b + 5 bytes LoreleiObject: ; 0x76280 (size=44) db $3 ; border tile db $4 ; warps db $b, $4, $2, INDIGO_PLATEAU_LOBBY db $b, $5, $2, INDIGO_PLATEAU_LOBBY db $0, $4, $0, BRUNOS_ROOM db $0, $5, $1, BRUNOS_ROOM db $0 ; signs db $1 ; people db SPRITE_LORELEI, $2 + 4, $5 + 4, $ff, $d0, $41, LORELEI + $C8, $1 ; trainer ; warp-to EVENT_DISP $5, $b, $4 ; INDIGO_PLATEAU_LOBBY EVENT_DISP $5, $b, $5 ; INDIGO_PLATEAU_LOBBY EVENT_DISP $5, $0, $4 ; BRUNOS_ROOM EVENT_DISP $5, $0, $5 ; BRUNOS_ROOM LoreleiBlocks: ; 0x762ac 30 INCBIN "maps/loreli.blk" Bruno_h: ; 0x762ca to 0x762d6 (12 bytes) (id=246) db $07 ; tileset db BRUNOS_ROOM_HEIGHT, BRUNOS_ROOM_WIDTH ; dimensions (y, x) dw BrunoBlocks, BrunoTexts, BrunoScript ; blocks, texts, scripts db $00 ; connections dw BrunoObject ; objects BrunoScript: ; 0x762d6 call BrunoScript_Unknown762ec call $3c3c ld hl, BrunoTrainerHeaders ld de, $6312 ld a, [$d64e] call $3160 ld [$d64e], a ret ; 0x762ec BrunoScript_Unknown762ec: ; 0x762ec INCBIN "baserom.gbc",$762ec,$bc BrunoTexts: ; 0x763a8 dw BrunoText1, BrunoText2 BrunoTrainerHeaders: BrunoTrainerHeader0: ; 0x763ac db $1 ; flag's bit db ($0 << 4) ; trainer's view range dw $d864 ; flag's byte dw BrunoBeforeBattleText ; 0x63c3 TextBeforeBattle dw BrunoAfterBattleText ; 0x63cd TextAfterBattle dw BrunoEndBattleText ; 0x63c8 TextEndBattle dw BrunoEndBattleText ; 0x63c8 TextEndBattle ; 0x763b8 db $ff BrunoText1: ; 0x763b9 db $08 ; asm ld hl, BrunoTrainerHeader0 call LoadTrainerHeader jp TextScriptEnd BrunoBeforeBattleText: ; 0x763c3 TX_FAR _BrunoBeforeBattleText db $50 ; 0x763c3 + 5 bytes BrunoEndBattleText: ; 0x763c8 TX_FAR _BrunoEndBattleText db $50 ; 0x763c8 + 5 bytes BrunoAfterBattleText: ; 0x763cd TX_FAR _BrunoAfterBattleText db $50 ; 0x763cd + 5 bytes BrunoText2: ; 0x763d2 TX_FAR _UnnamedText_763d2 db $50 ; 0x763d2 + 5 bytes BrunoObject: ; 0x763d7 (size=44) db $3 ; border tile db $4 ; warps db $b, $4, $2, LORELEIS_ROOM db $b, $5, $3, LORELEIS_ROOM db $0, $4, $0, AGATHAS_ROOM db $0, $5, $1, AGATHAS_ROOM db $0 ; signs db $1 ; people db SPRITE_BRUNO, $2 + 4, $5 + 4, $ff, $d0, $41, BRUNO + $C8, $1 ; trainer ; warp-to EVENT_DISP $5, $b, $4 ; LORELEIS_ROOM EVENT_DISP $5, $b, $5 ; LORELEIS_ROOM EVENT_DISP $5, $0, $4 ; AGATHAS_ROOM EVENT_DISP $5, $0, $5 ; AGATHAS_ROOM BrunoBlocks: ; 0x76403 30 INCBIN "maps/bruno.blk" Agatha_h: ; 0x76421 to 0x7642d (12 bytes) (id=247) db $0f ; tileset db AGATHAS_ROOM_HEIGHT, AGATHAS_ROOM_WIDTH ; dimensions (y, x) dw AgathaBlocks, AgathaTexts, AgathaScript ; blocks, texts, scripts db $00 ; connections dw AgathaObject ; objects AgathaScript: ; 0x7642d call AgathaScript_Unknown76443 call $3c3c ld hl, AgathaTrainerHeaders ld de, $6469 ld a, [$d64f] call $3160 ld [$d64f], a ret ; 0x76443 AgathaScript_Unknown76443: ; 0x76443 INCBIN "baserom.gbc",$76443,$c2 AgathaTexts: ; 0x76505 dw AgathaText1, AgathaText2 AgathaTrainerHeaders: AgathaTrainerHeader0: ; 0x76509 db $1 ; flag's bit db ($0 << 4) ; trainer's view range dw $d865 ; flag's byte dw AgathaBeforeBattleText ; 0x6520 TextBeforeBattle dw AgathaAfterBattleText ; 0x652a TextAfterBattle dw AgathaEndBattleText ; 0x6525 TextEndBattle dw AgathaEndBattleText ; 0x6525 TextEndBattle ; 0x76515 db $ff AgathaText1: ; 0x76516 db $08 ; asm ld hl, AgathaTrainerHeader0 call LoadTrainerHeader jp TextScriptEnd AgathaBeforeBattleText: ; 0x76520 TX_FAR _AgathaBeforeBattleText db $50 ; 0x76520 + 5 bytes AgathaEndBattleText: ; 0x76525 TX_FAR _AgathaEndBattleText db $50 ; 0x76525 + 5 bytes AgathaAfterBattleText: ; 0x7652a TX_FAR _AgathaAfterBattleText db $50 ; 0x7652a + 5 bytes AgathaText2: ; 0x7652f TX_FAR _AgathaText2 db $50 ; 0x7652f + 5 bytes AgathaObject: ; 0x76534 (size=44) db $0 ; border tile db $4 ; warps db $b, $4, $2, BRUNOS_ROOM db $b, $5, $3, BRUNOS_ROOM db $0, $4, $0, LANCES_ROOM db $0, $5, $0, LANCES_ROOM db $0 ; signs db $1 ; people db SPRITE_AGATHA, $2 + 4, $5 + 4, $ff, $d0, $41, AGATHA + $C8, $1 ; trainer ; warp-to EVENT_DISP $5, $b, $4 ; BRUNOS_ROOM EVENT_DISP $5, $b, $5 ; BRUNOS_ROOM EVENT_DISP $5, $0, $4 ; LANCES_ROOM EVENT_DISP $5, $0, $5 ; LANCES_ROOM AgathaBlocks: ; 0x76560 30 INCBIN "maps/agatha.blk" INCBIN "baserom.gbc",$7657e,$76670 - $7657e HallOfFameNoText: ; 0x76670 db "HALL OF FAME No @" UnnamedText_76683: ; 0x76683 TX_FAR _UnnamedText_76683 db $50 ; 0x76683 + 5 bytes INCBIN "baserom.gbc",$76688,$76794 - $76688 UnnamedText_76794: ; 0x76794 TX_FAR _UnnamedText_76794 db $50 ; 0x76794 + 5 bytes INCBIN "baserom.gbc",$76799,$76852 - $76799 UnnamedText_76852: ; 0x76852 TX_FAR _UnnamedText_76852 db $50 ; 0x76852 + 5 bytes INCBIN "baserom.gbc",$76857,$76880 - $76857 ;I'm pretty sure that the rest of the bank is assembly and thus doesn't use any of the 0s, but I've included some to be sure SECTION "bank1E",DATA,BANK[$1E] ; Draws a "frame block". Frame blocks are blocks of tiles that are put ; together to form frames in battle animations. DrawFrameBlock: ; 4000 ld l,c ld h,b ld a,[hli] ld [W_NUMFBTILES],a ld a,[W_FBDESTADDR + 1] ld e,a ld a,[W_FBDESTADDR] ld d,a xor a ld [W_FBTILECOUNTER],a ; loop counter .loop\@ ld a,[W_FBTILECOUNTER] inc a ld [W_FBTILECOUNTER],a ld a,[W_SUBANIMTRANSFORM] dec a jr z,.flipHorizontalAndVertical\@ ; 1 dec a jp z,.flipHorizontalTranslateDown\@ ; 2 dec a jr z,.flipBaseCoords\@ ; 3 .noTransformation\@ ld a,[W_BASECOORDY] add [hl] ld [de],a ; store Y inc hl inc de ld a,[W_BASECOORDX] jr .finishCopying\@ .flipBaseCoords\@ ld a,[W_BASECOORDY] ld b,a ld a,136 sub b ; flip Y base coordinate add [hl] ; Y offset ld [de],a ; store Y inc hl inc de ld a,[W_BASECOORDX] ld b,a ld a,168 sub b ; flip X base coordinate .finishCopying\@ ; finish copying values to OAM (when [W_SUBANIMTRANSFORM] not 1 or 2) add [hl] ; X offset ld [de],a ; store X inc hl inc de ld a,[hli] add a,$31 ; base tile ID for battle animations ld [de],a ; store tile ID inc de ld a,[hli] ld [de],a ; store flags inc de jp .nextTile\@ .flipHorizontalAndVertical\@ ld a,[W_BASECOORDY] add [hl] ; Y offset ld b,a ld a,136 sub b ; flip Y coordinate ld [de],a ; store Y inc hl inc de ld a,[W_BASECOORDX] add [hl] ; X offset ld b,a ld a,168 sub b ; flip X coordinate ld [de],a ; store X inc hl inc de ld a,[hli] add a,$31 ; base tile ID for battle animations ld [de],a ; store tile ID inc de ; toggle horizontal and vertical flip ld a,[hli] ; flags and a ld b,OAM_VFLIP | OAM_HFLIP jr z,.storeFlags1\@ cp a,OAM_HFLIP ld b,OAM_VFLIP jr z,.storeFlags1\@ cp a,OAM_VFLIP ld b,OAM_HFLIP jr z,.storeFlags1\@ ld b,0 .storeFlags1\@ ld a,b ld [de],a inc de jp .nextTile\@ .flipHorizontalTranslateDown\@ ld a,[W_BASECOORDY] add [hl] add a,40 ; translate Y coordinate downwards ld [de],a ; store Y inc hl inc de ld a,[W_BASECOORDX] add [hl] ld b,a ld a,168 sub b ; flip X coordinate ld [de],a ; store X inc hl inc de ld a,[hli] add a,$31 ; base tile ID for battle animations ld [de],a ; store tile ID inc de ld a,[hli] bit 5,a ; is horizontal flip enabled? jr nz,.disableHorizontalFlip\@ .enableHorizontalFlip\@ set 5,a jr .storeFlags2\@ .disableHorizontalFlip\@ res 5,a .storeFlags2\@ ld [de],a inc de .nextTile\@ ld a,[W_FBTILECOUNTER] ld c,a ld a,[W_NUMFBTILES] cp c jp nz,.loop\@ ; go back up if there are more tiles to draw .afterDrawingTiles\@ ld a,[W_FBMODE] cp a,2 jr z,.advanceFrameBlockDestAddr\@; skip delay and don't clean OAM buffer ld a,[W_SUBANIMFRAMEDELAY] ld c,a call DelayFrames ld a,[W_FBMODE] cp a,3 jr z,.advanceFrameBlockDestAddr\@ ; skip cleaning OAM buffer cp a,4 jr z,.done\@ ; skip cleaning OAM buffer and don't advance the frame block destination address ld a,[W_ANIMATIONID] cp a,GROWL jr z,.resetFrameBlockDestAddr\@ call AnimationCleanOAM .resetFrameBlockDestAddr\@ ld hl,$C300 ; OAM buffer ld a,l ld [W_FBDESTADDR + 1],a ld a,h ld [W_FBDESTADDR],a ; set destination address to beginning of OAM buffer ret .advanceFrameBlockDestAddr\@ ld a,e ld [W_FBDESTADDR + 1],a ld a,d ld [W_FBDESTADDR],a .done\@ ret PlayAnimation: ; 40F1 xor a ld [$FF8B],a ld [W_SUBANIMTRANSFORM],a ld a,[W_ANIMATIONID] ; get animation number dec a ld l,a ld h,0 add hl,hl ld de,$607D ; animation command stream pointers add hl,de ld a,[hli] ld h,[hl] ld l,a .animationLoop\@ ld a,[hli] cp a,$FF jr z,.AnimationOver\@ cp a,$C0 ; is this subanimation or a special effect? jr c,.playSubanimation\@ .doSpecialEffect\@ ld c,a ld de,SpecialEffectPointers .searchSpecialEffectTableLoop\@ ld a,[de] cp c jr z,.foundMatch\@ inc de inc de inc de jr .searchSpecialEffectTableLoop\@ .foundMatch\@ ld a,[hli] cp a,$FF ; is there a sound to play? jr z,.skipPlayingSound\@ ld [W_ANIMSOUNDID],a ; store sound push hl push de call $586F call $23B1 pop de pop hl .skipPlayingSound\@ push hl inc de ld a,[de] ld l,a inc de ld a,[de] ld h,a ld de,.nextAnimationCommand\@ push de jp [hl] ; jump to special effect function .playSubanimation\@ ld c,a and a,63 ld [W_SUBANIMFRAMEDELAY],a xor a sla c rla sla c rla ld [$D09F],a ; tile select ld a,[hli] ; sound ld [W_ANIMSOUNDID],a ; store sound ld a,[hli] ; subanimation ID ld c,l ld b,h ld l,a ld h,0 add hl,hl ld de,$676D ; subanimation pointer table add hl,de ld a,l ld [W_SUBANIMADDRPTR],a ld a,h ld [W_SUBANIMADDRPTR + 1],a ld l,c ld h,b push hl ld a,[rOBP0] push af ld a,[$CC79] ld [rOBP0],a call LoadAnimationTileset call LoadSubanimation call PlaySubanimation pop af ld [rOBP0],a .nextAnimationCommand\@ pop hl jr .animationLoop\@ .AnimationOver\@ ; 417B ret LoadSubanimation: ; 417C ld a,[W_SUBANIMADDRPTR + 1] ld h,a ld a,[W_SUBANIMADDRPTR] ld l,a ld a,[hli] ld e,a ld a,[hl] ld d,a ; de = address of subanimation ld a,[de] ld b,a and a,31 ld [W_SUBANIMCOUNTER],a ; number of frame blocks ld a,b and a,%11100000 cp a,5 << 5 ; is subanimation type 5? jr nz,.isNotType5\@ .isType5\@ call GetSubanimationTransform2 jr .saveTransformation\@ .isNotType5\@ call GetSubanimationTransform1 .saveTransformation\@ ; place the upper 3 bits of a into bits 0-2 of a before storing srl a swap a ld [W_SUBANIMTRANSFORM],a cp a,4 ; is the animation reversed? ld hl,0 jr nz,.storeSubentryAddr\@ ; if the animation is reversed, then place the initial subentry address at the end of the list of subentries ld a,[W_SUBANIMCOUNTER] dec a ld bc,3 .loop\@ add hl,bc dec a jr nz,.loop\@ .storeSubentryAddr\@ inc de add hl,de ld a,l ld [W_SUBANIMSUBENTRYADDR],a ld a,h ld [W_SUBANIMSUBENTRYADDR + 1],a ret ; called if the subanimation type is not 5 ; sets the transform to 0 (i.e. no transform) if it's the player's turn ; sets the transform to the subanimation type if it's the enemy's turn GetSubanimationTransform1: ; 41C2 ld b,a ld a,[H_WHOSETURN] and a ld a,b ret nz xor a ret ; called if the subanimation type is 5 ; sets the transform to 2 (i.e. horizontal and vertical flip) if it's the player's turn ; sets the transform to 0 (i.e. no transform) if it's the enemy's turn GetSubanimationTransform2: ; 41CA ld a,[H_WHOSETURN] and a ld a,2 << 5 ret z xor a ret ; loads tile patterns for battle animations LoadAnimationTileset: ; 41D2 ld a,[$D09F] ; tileset select add a add a ld hl,AnimationTilesetPointers ld e,a ld d,0 add hl,de ld a,[hli] ld [$D07D],a ; number of tiles ld a,[hli] ld e,a ld a,[hl] ld d,a ; de = address of tileset ld hl,$8310 ; destination address in VRAM ld b,$1E ; ROM bank ld a,[$D07D] ld c,a ; number of tiles jp CopyVideoData ; load tileset AnimationTilesetPointers: ; 41F2 db 79 ; number of tiles dw AnimationTileset1 db $FF db 79 ; number of tiles dw AnimationTileset2 db $FF db 64 ; number of tiles dw AnimationTileset1 db $FF AnimationTileset1: ; 41FE INCBIN "baserom.gbc",$781FE,79 * 16 AnimationTileset2: ; 46EE INCBIN "baserom.gbc",$786EE,79 * 16 IF _RED INCBIN "gfx/red/slotmachine2.2bpp" ENDC IF _BLUE INCBIN "gfx/blue/slotmachine2.2bpp" ENDC MoveAnimation: ; 4D5E push hl push de push bc push af call $3748 call $4E23 ld a,[W_ANIMATIONID] and a jr z,.AnimationFinished\@ ; if throwing a Poké Ball, skip the regular animation code cp a,TOSS_ANIM jr nz,.MoveAnimation\@ ld de,.AnimationFinished\@ push de jp TossBallAnimation .MoveAnimation\@ ; check if battle animations are disabled in the options ld a,[$D355] bit 7,a jr nz,.AnimationsDisabled\@ call ShareMoveAnimations call PlayAnimation jr .next4\@ .AnimationsDisabled\@ ld c,30 call DelayFrames .next4\@ call $4DBD ; reload pic and flash the pic in and out (to show damage) .AnimationFinished\@ call $3748 xor a ld [$D096],a ld [$D09B],a ld [$D08B],a dec a ld [$CF07],a pop af pop bc pop de pop hl ret ShareMoveAnimations: ; 4DA6 ; some moves just reuse animations from status conditions ld a,[H_WHOSETURN] and a ret z ; opponent’s turn ld a,[W_ANIMATIONID] cp a,AMNESIA ld b,CONF_ANIM jr z,.Replace\@ cp a,REST ld b,SLP_ANIM ret nz .Replace\@ ld a,b ld [W_ANIMATIONID],a ret Function4DBD: ; 4DBD ld a,[$CC5B] and a ret z dec a add a ld c,a ld b,0 ld hl,Pointer4DCF add hl,bc ld a,[hli] ld h,[hl] ld l,a jp [hl] Pointer4DCF: ; 4DCF dw $4DDB,$4DE3,$4DEB,$4DF0,$4DF6,$4DFE INCBIN "baserom.gbc",$78DDB,$78E53-$78DDB PlaySubanimation: ; 4E53 ld a,[W_ANIMSOUNDID] cp a,$FF jr z,.skipPlayingSound\@ call $586F call $23B1 ; play sound effect .skipPlayingSound\@ ld hl,$C300 ; base address of OAM buffer ld a,l ld [W_FBDESTADDR + 1],a ld a,h ld [W_FBDESTADDR],a ld a,[W_SUBANIMSUBENTRYADDR + 1] ld h,a ld a,[W_SUBANIMSUBENTRYADDR] ld l,a .loop\@ push hl ld c,[hl] ; frame block ID ld b,0 ld hl,PointerTable6F74 add hl,bc add hl,bc ld a,[hli] ld c,a ld a,[hli] ld b,a pop hl inc hl push hl ld e,[hl] ; base coordinate ID ld d,0 ld hl,$7C85 ; base coordinate table add hl,de add hl,de ld a,[hli] ld [W_BASECOORDY],a ld a,[hl] ld [W_BASECOORDX],a pop hl inc hl ld a,[hl] ; frame block mode ld [W_FBMODE],a call DrawFrameBlock call $4ED7 ; run animation-specific function (if there is one) ld a,[W_SUBANIMCOUNTER] dec a ld [W_SUBANIMCOUNTER],a ret z ld a,[W_SUBANIMSUBENTRYADDR + 1] ld h,a ld a,[W_SUBANIMSUBENTRYADDR] ld l,a ld a,[W_SUBANIMTRANSFORM] cp a,4 ; is the animation reversed? ld bc,3 jr nz,.nextSubanimationSubentry\@ ld bc,-3 .nextSubanimationSubentry\@ add hl,bc ld a,h ld [W_SUBANIMSUBENTRYADDR + 1],a ld a,l ld [W_SUBANIMSUBENTRYADDR],a jp .loop\@ AnimationCleanOAM: ; 4EC8 push hl push de push bc push af call DelayFrame call CleanLCD_OAM pop af pop bc pop de pop hl ret ; this runs after each frame block is drawn in a subanimation ; it runs a particular special effect based on the animation ID DoSpecialEffectByAnimationId: ; 4ED7 push hl push de push bc ld a,[W_ANIMATIONID] ld hl,AnimationIdSpecialEffects ld de,3 call IsInArray jr nc,.done\@ inc hl ld a,[hli] ld h,[hl] ld l,a ld de,.done\@ push de jp [hl] .done\@ pop bc pop de pop hl ret ; Format: Animation ID (1 byte), Address (2 bytes) AnimationIdSpecialEffects: ; 4EF5 db MEGA_PUNCH dw AnimationFlashScreen db GUILLOTINE dw AnimationFlashScreen db MEGA_KICK dw AnimationFlashScreen db HEADBUTT dw AnimationFlashScreen db TAIL_WHIP dw Func50D0 db GROWL dw DoGrowlSpecialEffects db DISABLE dw AnimationFlashScreen db BLIZZARD dw DoBlizzardSpecialEffects db BUBBLEBEAM dw AnimationFlashScreen db HYPER_BEAM dw FlashScreenEveryFourFrameBlocks db THUNDERBOLT dw FlashScreenEveryEightFrameBlocks db REFLECT dw AnimationFlashScreen db SELFDESTRUCT dw DoExplodeSpecialEffects db SPORE dw AnimationFlashScreen db EXPLOSION dw DoExplodeSpecialEffects db ROCK_SLIDE dw DoRockSlideSpecialEffects db $AA dw Func5041 db $AB dw Func504C db $AC dw Func507C db TOSS_ANIM dw DoBallTossSpecialEffects db SHAKE_ANIM dw DoBallShakeSpecialEffects db POOF_ANIM dw DoPoofSpecialEffects db GREATTOSS_ANIM dw DoBallTossSpecialEffects db ULTRATOSS_ANIM dw DoBallTossSpecialEffects db $FF ; terminator DoBallTossSpecialEffects: ; 4F3E ld a,[$CF91] cp a,3 ; is it a Master Ball or Ultra Ball? jr nc,.skipFlashingEffect\@ .flashingEffect\@ ; do a flashing effect if it's Master Ball or Ultra Ball ld a,[rOBP0] xor a,%00111100 ; complement colors 1 and 2 ld [rOBP0],a .skipFlashingEffect\@ ld a,[W_SUBANIMCOUNTER] cp a,11 ; is it the beginning of the subanimation? jr nz,.skipPlayingSound\@ ; if it is the beginning of the subanimation, play a sound ld a,$91 call $23b1 ; play sound .skipPlayingSound\@ ld a,[W_ISINBATTLE] cp a,02 ; is it a trainer battle? jr z,.isTrainerBattle\@ ld a,[$d11e] cp a,$10 ; is the enemy pokemon the Ghost Marowak? ret nz ; if the enemy pokemon is the Ghost Marowak, make it dodge during the last 3 frames ld a,[W_SUBANIMCOUNTER] cp a,3 jr z,.moveGhostMarowakLeft\@ cp a,2 jr z,.moveGhostMarowakLeft\@ cp a,1 ret nz .moveGhostMarowakLeft\@ FuncCoord 17,0 ld hl,Coord ld de,20 ld bc,$0707 ; 7 rows and 7 columns .loop\@ push hl push bc call $5862 ; move row of tiles left pop bc pop hl add hl,de dec b jr nz,.loop\@ ld a,%00001000 ld [$ff10],a ; Channel 1 sweep register ret .isTrainerBattle\@ ; if it's a trainer battle, shorten the animation by one frame ld a,[W_SUBANIMCOUNTER] cp a,3 ret nz dec a ld [W_SUBANIMCOUNTER],a ret DoBallShakeSpecialEffects: ; 4F96 ld a,[W_SUBANIMCOUNTER] cp a,4 ; is it the beginning of a shake? jr nz,.skipPlayingSound\@ ; if it is the beginning of a shake, play a sound and wait 2/3 of a second ld a,$8c call $23b1 ; play sound ld c,40 call DelayFrames .skipPlayingSound\@ ld a,[W_SUBANIMCOUNTER] dec a ret nz ; if it's the end of the ball shaking subanimation, check if more shakes are left and restart the subanimation ld a,[$cd3d] ; number of shakes dec a ; decrement number of shakes ld [$cd3d],a ret z ; if there are shakes left, restart the subanimation ld a,[W_SUBANIMSUBENTRYADDR] ld l,a ld a,[W_SUBANIMSUBENTRYADDR + 1] ld h,a ld de,-(4 * 3) ; 4 subentries and 3 bytes per subentry add hl,de ld a,l ld [W_SUBANIMSUBENTRYADDR],a ld a,h ld [W_SUBANIMSUBENTRYADDR + 1],a ld a,5 ; number of subentries in the ball shaking subanimation plus one ld [W_SUBANIMCOUNTER],a ret ; plays a sound after the second frame of the poof animation DoPoofSpecialEffects: ; 4FCE ld a,[W_SUBANIMCOUNTER] cp a,5 ret nz ld a,$93 jp $23b1 DoRockSlideSpecialEffects: ; 4FD9 ld a,[W_SUBANIMCOUNTER] cp a,12 ret nc cp a,8 jr nc,.shakeScreen\@ cp a,1 jp z,AnimationFlashScreen ; if it's the end of the subanimation, flash the screen ret ; if the subaninmation counter is between 8 and 11, shake the screen horizontally and vertically .shakeScreen\@ ld b,1 ld a,$24 call Predef ; shake horizontally ld b,1 ld a,$21 jp Predef ; shake vertically FlashScreenEveryEightFrameBlocks: ; 4FF7 ld a,[W_SUBANIMCOUNTER] and a,7 ; is the subanimation counter exactly 8? call z,AnimationFlashScreen ; if so, flash the screen ret ; flashes the screen if the subanimation counter is divisible by 4 FlashScreenEveryFourFrameBlocks: ; 5000 ld a,[W_SUBANIMCOUNTER] and a,3 call z,AnimationFlashScreen ret ; used for Explosion and Selfdestruct DoExplodeSpecialEffects: ; 5009 ld a,[W_SUBANIMCOUNTER] cp a,1 ; is it the end of the subanimation? jr nz,FlashScreenEveryFourFrameBlocks ; if it's the end of the subanimation, make the attacking pokemon disappear ld hl,$C405 jp $5801 ; make pokemon disappear ; flashes the screen when subanimation counter is 1 modulo 4 DoBlizzardSpecialEffects: ; 5016 ld a,[W_SUBANIMCOUNTER] cp a,13 jp z,AnimationFlashScreen cp a,9 jp z,AnimationFlashScreen cp a,5 jp z,AnimationFlashScreen cp a,1 jp z,AnimationFlashScreen ret ; flashes the screen at 3 points in the subanimation ; XXX is this unused? Func502E: ; 502E ld a,[W_SUBANIMCOUNTER] cp a,14 jp z,AnimationFlashScreen cp a,9 jp z,AnimationFlashScreen cp a,2 jp z,AnimationFlashScreen ret ; function to make the pokemon disappear at the beginning of the animation ; XXX probably a trade-related animation Func5041: ld a,[W_SUBANIMCOUNTER] cp a,6 ret nz ld a,$2F jp $580C ; make pokemon disappear ; function to make a shaking pokeball jump up at the end of the animation ; XXX probably a trade-related animation Func504C: ld a,[W_SUBANIMCOUNTER] cp a,1 ret nz ; if it's the end of the animation, make the ball jump up ld de,BallMoveDistances1 .loop\@ ld hl,$c300 ; OAM buffer ld bc,4 .innerLoop\@ ld a,[de] cp a,$ff jr z,.done\@ add [hl] ; add to Y value of OAM entry ld [hl],a add hl,bc ld a,l cp a,4 * 4 ; there are 4 entries, each 4 bytes jr nz,.innerLoop\@ inc de push bc call Delay3 pop bc jr .loop\@ .done\@ call AnimationCleanOAM ld a,$98 jp $23B1 ; play sound BallMoveDistances1: ; 5078 db -12,-12,-8 db $ff ; terminator ; function to make the pokeball jump up ; XXX probably a trade-related animation Func507C ; 507C ld de,BallMoveDistances2 .loop\@ ld hl,$c300 ; OAM buffer ld bc,4 .innerLoop\@ ld a,[de] cp a,$ff jp z,ClearScreen add [hl] ld [hl],a add hl,bc ld a,l cp a,4 * 4 ; there are 4 entries, each 4 bytes jr nz,.innerLoop\@ inc de push de ld a,[de] cp a,12 jr z,.playSound\@ cp a,$ff jr nz,.skipPlayingSound\@ .playSound\@ ; play sound if next move distance is 12 or this is the last one ld a,$ae call $23b1 .skipPlayingSound\@ push bc ld c,5 call DelayFrames pop bc ld a,[$ffae] ; background scroll X sub a,8 ; scroll to the left ld [$ffae],a pop de jr .loop\@ BallMoveDistances2: ; 50B3 db 11,12,-12,-7,7,12,-8,8 db $ff ; terminator ; this function copies the current musical note graphic ; so that there are two musical notes flying towards the defending pokemon DoGrowlSpecialEffects: ; 50BC ld hl,$c300 ; OAM buffer ld de,$c310 ld bc,$10 call CopyData ; copy the musical note graphic ld a,[W_SUBANIMCOUNTER] dec a call z,AnimationCleanOAM ; clean up at the end of the subanimation ret ; this is associated with Tail Whip, but Tail Whip doesn't use any subanimations ; XXX why is this here? Func50D0: ; 50D0 ld a,1 ld [W_SUBANIMCOUNTER],a ld c,20 jp DelayFrames ; Format: Special Effect ID (1 byte), Address (2 bytes) SpecialEffectPointers: ; 50DA db $FE dw AnimationFlashScreen db $FD dw $51D6 db $FC dw $51EA db $FB dw $520E db $FA dw $5215 db $F9 dw $51DB db $F8 dw AnimationFlashScreenLong db $F7 dw $527A db $F6 dw $5297 db $F5 dw $5389 db $F4 dw $52AF db $F3 dw $536F db $F2 dw $53F9 db $F1 dw $5415 db $F0 dw $51F4 db $EF dw $5801 db $EE dw $54A1 db $ED dw $54F9 db $EC dw $5566 db $EB dw $577A db $EA dw $559F db $E9 dw $55C9 db $E8 dw $5787 db $E7 dw $5C74 db $E6 dw $5C8A db $E5 dw $5645 db $E4 dw $5D77 db $E3 dw $5D77 db $E2 dw $5424 db $E1 dw AnimationDelay10 db $E0 dw $5398 db $DF dw $57D8 db $DE dw $5369 db $DD dw $539E db $DC dw $53AB db $DB dw $52B9 db $DA dw $53B1 db $D9 dw $56E0 db $D8 dw $5666 db $FF AnimationDelay10: ; 5150 ld c,10 jp DelayFrames ; calls a function with the turn flipped from player to enemy or vice versa ; input - hl - address of function to call CallWithTurnFlipped: ; 5155 ld a,[H_WHOSETURN] push af xor a,1 ld [H_WHOSETURN],a ld de,.returnAddress\@ push de jp [hl] .returnAddress\@ pop af ld [H_WHOSETURN],a ret ; flashes the screen for an extended period (48 frames) AnimationFlashScreenLong: ; 5165 ld a,3 ; cycle through the palettes 3 times ld [$D08A],a ld a,[$cf1b] ; running on SGB? and a ld hl,FlashScreenLongMonochrome jr z,.loop\@ ld hl,FlashScreenLongSGB .loop\@ push hl .innerLoop\@ ld a,[hli] cp a,$01 ; is it the end of the palettes? jr z,.endOfPalettes\@ ld [rBGP],a call FlashScreenLongDelay jr .innerLoop\@ .endOfPalettes\@ ld a,[$D08A] dec a ld [$D08A],a pop hl jr nz,.loop\@ ret ; BG palettes FlashScreenLongMonochrome: ; 518E db %11111001 ; 3, 3, 2, 1 db %11111110 ; 3, 3, 3, 2 db %11111111 ; 3, 3, 3, 3 db %11111110 ; 3, 3, 3, 2 db %11111001 ; 3, 3, 2, 1 db %11100100 ; 3, 2, 1, 0 db %10010000 ; 2, 1, 0, 0 db %01000000 ; 1, 0, 0, 0 db %00000000 ; 0, 0, 0, 0 db %01000000 ; 1, 0, 0, 0 db %10010000 ; 2, 1, 0, 0 db %11100100 ; 3, 2, 1, 0 db $01 ; terminator ; BG palettes FlashScreenLongSGB: ; 519B db %11111000 ; 3, 3, 2, 0 db %11111100 ; 3, 3, 3, 0 db %11111111 ; 3, 3, 3, 3 db %11111100 ; 3, 3, 3, 0 db %11111000 ; 3, 3, 2, 0 db %11100100 ; 3, 2, 1, 0 db %10010000 ; 2, 1, 0, 0 db %01000000 ; 1, 0, 0, 0 db %00000000 ; 0, 0, 0, 0 db %01000000 ; 1, 0, 0, 0 db %10010000 ; 2, 1, 0, 0 db %11100100 ; 3, 2, 1, 0 db $01 ; terminator ; causes a delay of 2 frames for the first cycle ; causes a delay of 1 frame for the second and third cycles FlashScreenLongDelay: ; 51A8 ld a,[$D08A] cp a,4 ; never true since [$D08A] starts at 3 ld c,4 jr z,.delayFrames\@ cp a,3 ld c,2 jr z,.delayFrames\@ cp a,2 ; nothing is done with this ld c,1 .delayFrames\@ jp DelayFrames AnimationFlashScreen: ; 51BE ld a,[rBGP] push af ; save initial palette ld a,%00011011 ; 0, 1, 2, 3 (inverted colors) ld [rBGP],a ld c,2 call DelayFrames xor a ; white out background ld [rBGP],a ld c,2 call DelayFrames pop af ld [rBGP],a ; restore initial palette ret INCBIN "baserom.gbc",$791D6,$7986F - $791D6 Func586F: ; 0x7986F 586F ld hl,MoveSoundTable ld e,a ld d,0 add hl,de add hl,de add hl,de ld a,[hli] ld b,a call IsCryMove jr nc,.NotCryMove ld a,[H_WHOSETURN] and a jr nz,.next\@ ld a,[$D014] ; get number of current monster jr .Continue\@ .next\@ ld a,[$CFE5] .Continue\@ push hl call $13D9 ld b,a pop hl ld a,[$C0F1] add [hl] ld [$C0F1],a inc hl ld a,[$C0F2] add [hl] ld [$C0F2],a jr .done\@ .NotCryMove ld a,[hli] ld [$C0F1],a ld a,[hli] ld [$C0F2],a .done\@ ld a,b ret IsCryMove: ; 0x798ad ; set carry if the move animation involves playing a monster cry ld a,[W_ANIMATIONID] cp a,GROWL jr z,.CryMove cp a,ROAR jr z,.CryMove and a ; clear carry ret .CryMove scf ret MoveSoundTable: ; 0x798bc db $a0,$00,$80 db $a2,$10,$80 db $b3,$00,$80 db $a1,$01,$80 db $a3,$00,$40 db $e9,$00,$ff db $a3,$10,$60 db $a3,$20,$80 db $a3,$00,$a0 db $a6,$00,$80 db $a5,$20,$40 db $a5,$00,$80 db $a4,$00,$a0 db $a7,$10,$c0 db $a7,$00,$a0 db $a8,$00,$c0 db $a8,$10,$a0 db $a9,$00,$e0 db $a7,$20,$c0 db $aa,$00,$80 db $b9,$00,$80 db $ab,$01,$80 db $b7,$00,$80 db $ad,$f0,$40 db $b0,$00,$80 db $ad,$00,$80 db $b8,$10,$80 db $b1,$01,$a0 db $ae,$00,$80 db $b4,$00,$60 db $b4,$01,$40 db $b6,$00,$a0 db $b0,$10,$a0 db $b7,$00,$c0 db $aa,$10,$60 db $b0,$00,$a0 db $b9,$11,$c0 db $b0,$20,$c0 db $b8,$00,$80 db $b1,$00,$80 db $b1,$20,$c0 db $af,$00,$80 db $db,$ff,$40 db $b4,$00,$80 db $a1,$00,$c0 db $a1,$00,$40 db $e4,$00,$80 db $bf,$40,$60 db $bf,$00,$80 db $bf,$ff,$40 db $c7,$80,$c0 db $af,$10,$a0 db $af,$21,$e0 db $c5,$00,$80 db $bb,$20,$60 db $c7,$00,$80 db $cc,$00,$80 db $c2,$40,$80 db $c5,$f0,$e0 db $cf,$00,$80 db $c7,$f0,$60 db $c2,$00,$80 db $e6,$00,$80 db $9d,$01,$a0 db $a9,$f0,$20 db $ba,$01,$c0 db $ba,$00,$80 db $b0,$00,$e0 db $be,$01,$60 db $be,$20,$40 db $bb,$00,$80 db $bb,$40,$c0 db $b1,$03,$60 db $bd,$11,$e0 db $a8,$20,$e0 db $d2,$00,$80 db $b2,$00,$80 db $b2,$11,$a0 db $b2,$01,$c0 db $a9,$14,$c0 db $b1,$02,$a0 db $c5,$f0,$80 db $c5,$20,$c0 db $d5,$00,$20 db $d5,$20,$80 db $d2,$12,$60 db $be,$00,$80 db $aa,$01,$e0 db $c5,$0f,$e0 db $c5,$11,$20 db $a6,$10,$40 db $a5,$10,$c0 db $aa,$00,$20 db $d8,$00,$80 db $e4,$11,$18 db $9f,$20,$c0 db $9e,$20,$c0 db $bd,$00,$10 db $be,$f0,$20 db $df,$f0,$c0 db $a7,$f0,$e0 db $9f,$f0,$40 db $db,$00,$80 db $df,$80,$40 db $df,$00,$80 db $aa,$11,$20 db $aa,$22,$10 db $b1,$f1,$ff db $a9,$f1,$ff db $aa,$33,$30 db $dd,$40,$c0 db $a4,$20,$20 db $a4,$f0,$10 db $a5,$f8,$10 db $a7,$f0,$10 db $bd,$00,$80 db $ae,$00,$c0 db $dd,$c0,$ff db $9f,$f2,$20 db $e1,$00,$80 db $e1,$00,$40 db $9f,$00,$40 db $a7,$10,$ff db $c7,$20,$20 db $dd,$00,$80 db $c5,$1f,$20 db $bd,$2f,$80 db $a5,$1f,$ff db $ca,$1f,$60 db $be,$1e,$20 db $be,$1f,$18 db $aa,$0f,$80 db $9f,$f8,$10 db $9e,$18,$20 db $dd,$08,$40 db $ad,$01,$e0 db $a7,$09,$ff db $e4,$42,$01 db $b2,$00,$ff db $dd,$08,$e0 db $bb,$00,$80 db $9f,$88,$10 db $bd,$48,$ff db $9e,$ff,$ff db $bb,$ff,$10 db $9e,$ff,$04 db $b2,$01,$ff db $a9,$f8,$ff db $a2,$f0,$f0 db $a5,$08,$10 db $a3,$f0,$ff db $b0,$f0,$ff db $e1,$10,$ff db $a4,$f0,$20 db $ca,$f0,$60 db $b8,$12,$10 db $e6,$f0,$20 db $b4,$12,$ff db $db,$80,$04 db $df,$f0,$10 db $c5,$f8,$ff db $be,$f0,$ff db $a7,$01,$ff db $cc,$d8,$04 db $a1,$00,$80 db $a1,$00,$80 INCBIN "baserom.gbc",$79AAE,$79E16 - $79AAE TossBallAnimation: ; 5E16 ld a,[W_ISINBATTLE] cp a,2 jr z,.BlockBall\@ ; if in trainer battle, play different animation ld a,[$D11E] ld b,a ; upper nybble: how many animations (from PokeBallAnimations) to play ; this will be 4 for successful capture, 6 for breakout and a,$F0 swap a ld c,a ; lower nybble: number of shakes ; store these for later ld a,b and a,$F ld [$CD3D],a ld hl,.PokeBallAnimations ; choose which toss animation to use ld a,[$CF91] cp a,POKE_BALL ld b,TOSS_ANIM jr z,.done\@ cp a,GREAT_BALL ld b,GREATTOSS_ANIM jr z,.done\@ ld b,ULTRATOSS_ANIM .done\@ ld a,b .PlayNextAnimation\@ ld [W_ANIMATIONID],a push bc push hl call PlayAnimation pop hl ld a,[hli] pop bc dec c jr nz,.PlayNextAnimation\@ ret .PokeBallAnimations: ; 5E50 ; sequence of animations that make up the Poké Ball toss db POOF_ANIM,HIDEPIC_ANIM,$C2,POOF_ANIM,SHOWPIC_ANIM .BlockBall\@ ; 5E55 ld a,$C1 ld [W_ANIMATIONID],a call PlayAnimation ld a,$95 call $23B1 ; play sound effect ld a,BLOCKBALL_ANIM ld [W_ANIMATIONID],a jp PlayAnimation INCBIN "baserom.gbc",$79E6A,$7AF74 - $79E6A PointerTable6F74: ; 6F74 dw $7de7 dw $7068 dw $708d dw $70ce dw $70df dw $70f0 dw $7101 dw $7132 dw $7173 dw $71b4 dw $71e5 dw $7216 dw $7227 dw $7238 dw $7259 dw $726a dw $727b dw $729c dw $72bd dw $72ca dw $72db dw $72fc dw $732d dw $734e dw $735f dw $7364 dw $736d dw $7376 dw $737f dw $7388 dw $7391 dw $73ab dw $73b4 dw $73cd dw $73fe dw $744b dw $745c dw $7465 dw $7496 dw $74a7 dw $74bc dw $74d5 dw $74e6 dw $74f7 dw $7500 dw $7505 dw $7526 dw $7547 dw $7558 dw $7569 dw $756e dw $758b dw $75a8 dw $75ad dw $75c6 dw $75d7 dw $75e8 dw $75f9 dw $760a dw $761b dw $7630 dw $7649 dw $7666 dw $7687 dw $76a8 dw $76b5 dw $76c6 dw $76f3 dw $7720 dw $7731 dw $7742 dw $7753 dw $7764 dw $7775 dw $785a dw $786b dw $787c dw $788d dw $789e dw $78bf dw $78f0 dw $7911 dw $7932 dw $7943 dw $7950 dw $7961 dw $796e dw $7987 dw $79ac dw $79c9 dw $79ce dw $79ff dw $7a10 dw $7a31 dw $7a5e dw $7a9b dw $7aac dw $7acd dw $7afe dw $7b3f dw $7b58 dw $7b71 dw $7b8a dw $7b93 dw $7b98 dw $7ba9 dw $7bae dw $7bcf dw $7bf0 dw $7c11 dw $7c1a dw $7c2b dw $7c3c dw $77b6 dw $77f7 dw $7828 dw $7849 dw $739a dw $7c4d dw $7c6a dw $7c7b dw $7c80 INCBIN "baserom.gbc",$7B068,$7C000 - $7B068 SECTION "bank1F",DATA,BANK[$1F] INCBIN "baserom.gbc",$7C000,$4000 SECTION "bank20",DATA,BANK[$20] UnnamedText_80000: ; 0x80000 db $0, "Bingo!@@" ; 0xa80009 _UnnamedText_526f3: ; 0x80009 db $0, $4f db "The CARD KEY", $55 db "opened the door!", $57 ; 0x80009 + 32 bytes _UnnamedText_526f8: ; 0x80029 db $0, "Darn! It needs a", $4f db "CARD KEY!", $57 ; 0x80029 + 28 bytes UnnamedText_80045: ; 0x80045 TX_RAM $cd6d db $0, ": @@" ; 0xa8004d _UnnamedText_70847: ; 0x8004d db $0, "Not even a nibble!", $58 ; 0x8004d + 20 bytes _UnnamedText_7084c: ; 0x80061 db $0, "Looks like there's", $4f db "nothing here.", $58 ; 0x80061 + 33 bytes _UnnamedText_70851: ; 0x80082 db $0, "Oh!", $4f db "It's a bite!", $58 ; 0x80082 + 17 bytes _UnnamedText_24db: ; 0x80093 db $0, "!", $57 ; 0x80093 + 3 bytes _UnnamedText_24e0: ; 0x80096 db $0, "Ground rose up", $4f db "somewhere!", $57 ; 0x80096 + 27 bytes _VictoryRoad3Text10: _VictoryRoad3Text9: _VictoryRoad3Text8: _VictoryRoad3Text7: _VictoryRoad2Text13: _VictoryRoad2Text12: _VictoryRoad2Text11: _SeafoamIslands1Text2: _SeafoamIslands1Text1: _SeafoamIslands5Text2: _SeafoamIslands5Text1: _SeafoamIslands4Text6: _SeafoamIslands4Text5: _SeafoamIslands4Text4: _SeafoamIslands4Text3: _SeafoamIslands4Text2: _SeafoamIslands4Text1: _SeafoamIslands3Text2: _SeafoamIslands3Text1: _SeafoamIslands2Text2: _SeafoamIslands2Text1: _FuchsiaHouse2Text3: _VictoryRoad1Text7: _VictoryRoad1Text6: _VictoryRoad1Text5: ; 0x800b1 db $0, "This requires", $4f db "STRENGTH to move!", $57 _SaffronCityText19: _CinnabarIslandText4: _FuchsiaCityText14: _VermilionCityText9: _LavenderTownText6: _CeruleanCityText14: _PewterCityText8: _ViridianCityText11: ; 0x800d2 db $0, "All your item", $4f db "needs fulfilled!", $55 db "#MON MART", $57 _ViridianCityText12: ; 0x800fc db $0, "Heal Your #MON!", $4f db "#MON CENTER", $57 UnnamedText_80119: ; 0x80119 db $0, $52, " found", $4f db "@" TX_RAM $cf4b db $0, "!@@" ; 0x8012a _UnnamedText_4e2c: ; 0x8012a db $0, "No more room for", $4f db "items!", $57 ; 0x8012a + 25 bytes _UnnamedText_59091: ; 0x80143 db $0, "Hi! Remember me?", $4f db "I'm PROF.OAK's", $55 db "AIDE!", $51 db "If you caught @" ; 0x80143 + 52 bytes UnnamedText_80177: ; 0x80177 TX_NUM $ffdb, 1, 3 db $0, $4f db "kinds of #MON,", $55 db "I'm supposed to", $55 db "give you an", $55 db "@" TX_RAM $cc5b db $0, "!", $51 db "So, ", $52, "! Have", $4f db "you caught at", $55 db "least @" TX_NUM $ffdb, 1, 3 db $0, " kinds of", $55 db "#MON?", $57 ; 0x801e4 _UnnamedText_59096: ; 0x801e4 db $0, "Let's see...", $4f db "Uh-oh! You have", $55 db "caught only @" ; 0x801e4 + 42 bytes UnnamedText_8020e: ; 0x8020e TX_NUM $ffdd, 1, 3 db $0, $55 db "kinds of #MON!", $51 db "You need @" TX_NUM $ffdb, 1, 3 db $0, " kinds", $4f db "if you want the", $55 db "@" TX_RAM $cc5b db $0, ".", $57 ; 0x80250 _UnnamedText_5909b: ; 0x80250 db $0, "Oh. I see.", $51 db "When you get @" TX_NUM $ffdb, 1, 3 db $0, $4f db "kinds, come back", $55 db "for @" TX_RAM $cc5b db $0, ".", $57 ; 0x8028c _UnnamedText_590a0: ; 0x8028c db $0, "Great! You have", $4f db "caught @" ; 0x8028c + 25 bytes UnnamedText_802a5: ; 0x802a5 TX_NUM $ffdd, 1, 3 db $0, " kinds ", $55 db "of #MON!", $55 db "Congratulations!", $51 db "Here you go!", $58 ; 0x802a5 + 52 bytes = 0x802d9 UnnamedText_802d9: ; 0x802d9 db $0, $52, " got the", $4f db "@" TX_RAM $cc5b db $0, "!@@" ; 0xa802ec _UnnamedText_590ab: ; 0x802ec db $0, "Oh! I see you", $4f db "don't have any", $55 db "room for the", $55 db "@" ; 0x802ec + 43 bytes UnnamedText_80317: ; 0x80317 TX_RAM $cc5b db $0, ".", $57 ; 0x80317 + 6 bytes = 0x8031d _ViridianForestText1: ; 0x8031d db $0, "I came here with", $4f db "some friends!", $51 db "They're out for", $4f db "#MON fights!", $57 _ViridianForestBattleText1: ; 0x80359 db $0, "Hey! You have", $4f db "#MON! Come on!", $55 db "Let's battle'em!", $57 ; 0x80359 + 46 bytes _ViridianForestEndBattleText1: ; 0x80387 db $0, "No!", $4f db "CATERPIE can't", $55 db "cut it!", $58 ; 0x80387 + 27 bytes _ViridianForestAfterBattleText1: ; 0x803a2 db $0, "Ssh! You'll scare", $4f db "the bugs away!", $57 ; 0x803a2 + 33 bytes _ViridianForestBattleText2: ; 0x803c3 db $0, "Yo! You can't jam", $4f db "out if you're a", $55 db "#MON trainer!", $57 ; 0x803c3 + 47 bytes _ViridianForestEndBattleText2: ; 0x803f2 db $0, "Huh?", $4f db "I ran out of", $55 db "#MON!", $58 ; 0x803f2 + 25 bytes _ViridianForestAfterBattleText2: ; 0x8040b db $0, "Darn! I'm going", $4f db "to catch some", $55 db "stronger ones!", $57 ; 0x8040b + 45 bytes _ViridianForestBattleText3: ; 0x80438 db $0, "Hey, wait up!", $4f db "What's the hurry?", $57 ; 0x80438 + 32 bytes _ViridianForestEndBattleText3: ; 0x80458 db $0, "I", $4f db "give! You're good", $55 db "at this!", $58 ; 0x80458 + 29 bytes _ViridianForestAfterBattleText3: ; 0x80475 db $0, "Sometimes, you", $4f db "can find stuff on", $55 db "the ground!", $51 db "I'm looking for", $4f db "the stuff I", $55 db "dropped!", $57 ; 0x80475 + 82 bytes _ViridianForestText8: ; 0x804c7 db $0, "I ran out of #", $4f db "BALLs to catch", $55 db "#MON with!", $51 db "You should carry", $4f db "extras!", $57 _ViridianForestText9: ; 0x8050a db $0, "TRAINER TIPS", $51 db "If you want to", $4f db "avoid battles,", $55 db "stay away from", $55 db "grassy areas!", $57 _ViridianForestText10: ; 0x80553 db $0, "For poison, use", $4f db "ANTIDOTE! Get it", $55 db "at #MON MARTs!", $57 _ViridianForestText11: ; 0x80584 db $0, "TRAINER TIPS", $51 db "Contact PROF.OAK", $4f db "via PC to get", $55 db "your #DEX", $55 db "evaluated!", $57 _ViridianForestText12: ; 0x805c6 db $0, "TRAINER TIPS", $51 db "No stealing of", $4f db "#MON from", $55 db "other trainers!", $55 db "Catch only wild", $55 db "#MON!", $57 _ViridianForestText13: ; 0x80613 db $0, "TRAINER TIPS", $51 db "Weaken #MON", $4f db "before attempting", $55 db "capture!", $51 db "When healthy,", $4f db "they may escape!", $57 _ViridianForestText14: ; 0x80667 db $0, "LEAVING", $4f db "VIRIDIAN FOREST", $55 db "PEWTER CITY AHEAD", $57 _MtMoon1BattleText2: ; 0x80692 db $0, "WHOA! You shocked", $4f db "me! Oh, you're", $55 db "just a kid!", $57 ; 0x80692 + 45 bytes _MtMoon1EndBattleText2: ; 0x806bf db $0, "Wow!", $4f db "Shocked again!", $58 ; 0x806bf + 21 bytes _MtMoon1AfterBattleText2: ; 0x806d4 db $0, "Kids like you", $4f db "shouldn't be", $55 db "here!", $57 ; 0x806d4 + 33 bytes _MtMoon1BattleText3: ; 0x806f5 db $0, "Did you come to", $4f db "explore too?", $57 ; 0x806f5 + 30 bytes _MtMoon1EndBattleText3: ; 0x80713 db $0, "Losing", $4f db "stinks!", $58 ; 0x80713 + 16 bytes _MtMoon1AfterBattleText3: ; 0x80723 db $0, "I came down here", $4f db "to show off to", $55 db "girls.", $57 ; 0x80723 + 40 bytes _MtMoon1BattleText4: ; 0x8074b db $0, "Wow! It's way", $4f db "bigger in here", $55 db "than I thought!", $57 ; 0x8074b + 45 bytes _MtMoon1EndBattleText4: ; 0x80778 db $0, "Oh!", $4f db "I lost it!", $58 ; 0x80778 + 16 bytes _MtMoon1AfterBattleText4: ; 0x80788 db $0, "How do you get", $4f db "out of here?", $57 ; 0x80788 + 29 bytes _MtMoon1BattleText5: ; 0x807a5 db $0, "What! Don't sneak", $4f db "up on me!", $57 ; 0x807a5 + 28 bytes _MtMoon1EndBattleText5: ; 0x807c1 db $0, "My", $4f db "#MON won't do!", $58 ; 0x807c1 + 18 bytes _MtMoon1AfterBattleText5: ; 0x807d3 db $0, "I have to find", $4f db "stronger #MON.", $57 ; 0x807d3 + 31 bytes _MtMoon1BattleText6: ; 0x807f2 db $0, "What? I'm waiting", $4f db "for my friends to", $55 db "find me here.", $57 ; 0x807f2 + 50 bytes _MtMoon1EndBattleText6: ; 0x80824 db $0, "I lost?", $58 ; 0x80824 + 9 bytes _MtMoon1AfterBattleText6: ; 0x8082d db $0, "I heard there are", $4f db "some very rare", $55 db "fossils here.", $57 ; 0x8082d + 48 bytes _MtMoon1BattleText7: ; 0x8085d db $0, "Suspicious men", $4f db "are in the cave.", $55 db "What about you?", $57 ; 0x8085d + 49 bytes _MtMoon1EndBattleText7: ; 0x8088e db $0, "You", $4f db "got me!", $58 ; 0x8088e + 13 bytes _MtMoon1AfterBattleText7: ; 0x8089b db $0, "I saw them! I'm", $4f db "sure they're from", $55 db "TEAM ROCKET!", $57 ; 0x8089b + 46 bytes _MtMoon1BattleText8: ; 0x808c9 db $0, "Go through this", $4f db "cave to get to", $55 db "CERULEAN CITY!", $57 ; 0x808c9 + 47 bytes _MtMoon1EndBattleText8: ; 0x808f8 db $0, "I", $4f db "lost.", $58 ; 0x808f8 + 9 bytes _MtMoon1AfterBattleText8: ; 0x80901 db $0, "ZUBAT is tough!", $4f db "But, it can be", $55 db "useful if you", $55 db "catch one.", $57 ; 0x80901 + 57 bytes _MtMoon1Text14: ; 0x8093a db $0, "Beware! ZUBAT is", $4f db "a blood sucker!", $57 _UnnamedText_51a48: ; 0x8095c db $0, $57 ; 0x8095c + 2 bytes _UnnamedText_49f24: ; 0x8095e db $0, "You want the", $4f db "DOME FOSSIL?", $57 ; 0x8095e + 27 bytes _UnnamedText_49f64: ; 0x80979 db $0, "You want the", $4f db "HELIX FOSSIL?", $57 ; 0x80979 + 28 bytes _UnnamedText_49f6f: ; 0x80995 db $0, $52, " got the", $4f db "@" TX_RAM $cf4b db $0, "!@@" ; 0x809a8 _UnnamedText_49f7f: ; 0x809a8 db $0, "Look, you've got", $4f db "no room for this.@@" ; 0x809cc _UnnamedText_49f85: ; 0x809cc db $0, "Hey, stop!", $51 db "I found these", $4f db "fossils! They're", $55 db "both mine!", $57 ; 0x809cc + 53 bytes _UnnamedText_49f8a: ; 0x80a01 db $0, "OK!", $4f db "I'll share!", $58 ; 0x80a01 + 16 bytes _UnnamedText_49f8f: ; 0x80a11 db $0, "We'll each take", $4f db "one!", $55 db "No being greedy!", $57 ; 0x80a11 + 38 bytes _UnnamedText_49f94: ; 0x80a37 db $0, "Far away, on", $4f db "CINNABAR ISLAND,", $55 db "there's a #MON", $55 db "LAB.", $51 db "They do research", $4f db "on regenerating", $55 db "fossils.", $57 ; 0x80a37 + 92 bytes UnnamedText_80a93: ; 0x80a93 db $0, "All right. Then", $4f db "this is mine!@@" ; 0x80ab3 _MtMoon3BattleText2: ; 0x80ab3 db $0, "TEAM ROCKET will", $4f db "find the fossils,", $55 db "revive and sell", $55 db "them for cash!", $57 ; 0x80ab3 + 67 bytes _MtMoon3EndBattleText2: ; 0x80af6 db $0, "Urgh!", $4f db "Now I'm mad!", $58 ; 0x80af6 + 19 bytes _MtMoon3AfterBattleText2: ; 0x80b09 db $0, "You made me mad!", $4f db "TEAM ROCKET will", $55 db "blacklist you!", $57 ; 0x80b09 + 50 bytes _MtMoon3BattleText3: ; 0x80b3b db $0, "We, TEAM ROCKET,", $4f db "are #MON", $55 db "gangsters!", $57 ; 0x80b3b + 38 bytes _MtMoon3EndBattleText3: ; 0x80b61 db $0, "I blew", $4f db "it!", $58 ; 0x80b61 + 12 bytes _MtMoon3AfterBattleText3: ; 0x80b6d db $0, "Darn it all! My", $4f db "associates won't", $55 db "stand for this!", $57 ; 0x80b6d + 49 bytes _MtMoon3BattleText4: ; 0x80b9e db $0, "We're pulling a", $4f db "big job here!", $55 db "Get lost, kid!", $57 ; 0x80b9e + 45 bytes _MtMoon3EndBattleText4: ; 0x80bcb db $0, "So, you", $4f db "are good.", $58 ; 0x80bcb + 19 bytes _MtMoon3AfterBattleText4: ; 0x80bde db $0, "If you find a", $4f db "fossil, give it", $55 db "to me and scram!", $57 ; 0x80bde + 48 bytes _MtMoon3BattleText5: ; 0x80c0e db $0, "Little kids", $4f db "should leave", $55 db "grown-ups alone!", $57 ; 0x80c0e + 43 bytes _MtMoon3EndBattleText5: ; 0x80c39 db $0, "I'm", $4f db "steamed!", $58 ; 0x80c39 + 13 bytes _MtMoon3AfterBattleText5: ; 0x80c46 db $0, "#MON lived", $4f db "here long before", $55 db "people came.", $57 ; 0x80c46 + 42 bytes _SSAnne1Text1: ; 0x80c70 db $0, "Bonjour!", $4f db "I am le waiter on", $55 db "this ship!", $51 db "I will be happy", $4f db "to serve you any-", $55 db "thing you please!", $51 db "Ah! Le strong", $4f db "silent type!", $57 _SSAnne1Text2: ; 0x80ce6 db $0, "The passengers", $4f db "are restless!", $51 db "You might be", $4f db "challenged by the", $55 db "more bored ones!", $57 _SSAnne2Text1: ; 0x80d34 db $0, "This ship, she is", $4f db "a luxury liner", $55 db "for trainers!", $51 db "At every port, we", $4f db "hold parties with", $55 db "invited trainers!", $57 _SSAnneRivalBeforeBattleText: ; 0x80d9a db $0, $53, ": Bonjour!", $4f db $52, "!", $51 db "Imagine seeing", $4f db "you here!", $51 db $52, ", were you", $4f db "really invited?", $51 db "So how's your", $4f db "#DEX coming?", $51 db "I already caught", $4f db "40 kinds, pal!", $51 db "Different kinds", $4f db "are everywhere!", $51 db "Crawl around in", $4f db "grassy areas!", $57 ; 0x80d9a + 189 bytes _SSAnneRivalDefeatedText: ; 0x80e57 db $0, "Humph!", $51 db "At least you're", $4f db "raising your", $55 db "#MON!", $58 ; 0x80e57 + 42 bytes _SSAnneRivalWonText: ; 0x80e81 db $0, $52, "! What are", $4f db "you, seasick?", $51 db "You should shape", $4f db "up, pal!", $58 ; 0x80e81 + 53 bytes _SSAnneRivalCaptainText: ; 0x80eb6 db $0, $53, ": I heard", $4f db "there was a CUT", $55 db "master on board.", $51 db "But, he was just a", $4f db "seasick, old man!", $51 db "But, CUT itself is", $4f db "really useful!", $51 db "You should go see", $4f db "him! Smell ya!", $57 ; 0x80eb6 + 149 bytes _SSAnne3Text1: ; 0x80f4b db $0, "Our CAPTAIN is a", $4f db "sword master!", $51 db "He even teaches", $4f db "CUT to #MON!", $57 _SSAnne5Text1: ; 0x80f88 db $0, "The party's over.", $4f db "The ship will be", $55 db "departing soon.", $57 _SSAnne5Text2: ; 0x80fbb db $0, "Scrubbing decks", $4f db "is hard work!", $57 _SSAnne5Text3: ; 0x80fda db $0, "Urf. I feel ill.", $51 db "I stepped out to", $4f db "get some air.", $57 _SSAnneBattleText1: ; 0x8100b db $0, "Hey matey!", $51 db "Let's do a little", $4f db "jig!", $57 ; 0x8100b + 34 bytes _SSAnneEndBattleText1: ; 0x8102d db $0, "You're", $4f db "impressive!", $58 ; 0x8102d + 19 bytes _SSAnneAfterBattleText1: ; 0x81040 db $0, "How many kinds of", $4f db "#MON do you", $55 db "think there are?", $57 ; 0x81040 + 48 bytes _SSAnneBattleText2: ; 0x81070 db $0, "Ahoy there!", $4f db "Are you seasick?", $57 ; 0x81070 + 30 bytes _SSAnneEndBattleText2: ; 0x8108e db $0, "I was", $4f db "just careless!", $58 ; 0x8108e + 22 bytes _SSAnneAfterBattleText2: ; 0x810a4 db $0, "My Pa said there", $4f db "are 100 kinds of", $55 db "#MON. I think", $55 db "there are more.", $57 ; 0x810a4 + 65 bytes _SSAnne6Text1: ; 0x810e5 db $0, "You, mon petit!", $4f db "We're busy here!", $55 db "Out of the way!", $57 _SSAnne6Text2: ; 0x81116 db $0, "I saw an odd ball", $4f db "in the trash.", $57 _SSAnne6Text3: ; 0x81137 db $0, "I'm so busy I'm", $4f db "getting dizzy!", $57 _SSAnne6Text4: ; 0x81155 db $0, "Hum-de-hum-de-", $4f db "ho...", $51 db "I peel spuds", $4f db "every day!", $55 db "Hum-hum...", $57 _SSAnne6Text5: ; 0x8118e db $0, "Did you hear about", $4f db "SNORLAX?", $51 db "All it does is", $4f db "eat and sleep!", $57 _SSAnne6Text6: ; 0x811c9 db $0, "Snivel...Sniff...", $51 db "I only get to", $4f db "peel onions...", $55 db "Snivel...", $57 _UnnamedText_61807: ; 0x81203 db $0, "Er-hem! Indeed I", $4f db "am le CHEF!", $51 db "Le main course is", $58 ; 0x81203 + 48 bytes _UnnamedText_6180c: ; 0x81233 db $0, "Salmon du Salad!", $51 db "Les guests may", $4f db "gripe it's fish", $55 db "again, however!", $57 ; 0x81233 + 64 bytes _UnnamedText_61811: ; 0x81273 db $0, "Eels au Barbecue!", $51 db "Les guests will", $4f db "mutiny, I fear.", $57 ; 0x81273 + 51 bytes _UnnamedText_61816: ; 0x812a6 db $0, "Prime Beef Steak!", $51 db "But, have I enough", $4f db "fillets du beef?", $57 ; 0x812a6 + 55 bytes _SSAnne7RubText: ; 0x812dd db $0, "CAPTAIN: Ooargh...", $4f db "I feel hideous...", $55 db "Urrp! Seasick...", $51 db $52, " rubbed", $4f db "the CAPTAIN's", $55 db "back!", $51 db "Rub-rub...", $4f db "Rub-rub...@@" ; 0x81347 _ReceivingHM01Text: ; 0x81347 db $0, "CAPTAIN: Whew!", $4f db "Thank you! I", $55 db "feel much better!", $51 db "You want to see", $4f db "my CUT technique?", $51 db "I could show you", $4f db "if I wasn't ill...", $51 db "I know! You can", $4f db "have this!", $51 db "Teach it to your", $4f db "#MON and you", $55 db "can see it CUT", $55 db "any time!", $58 ; 0x81347 + 198 bytes _ReceivedHM01Text: ; 0x8140d db $0, $52, " got", $4f db "@" TX_RAM $cf4b db $0, "!@@" ; 0x8141c _UnnamedText_61932: ; 0x8141c db $0, "CAPTAIN: Whew!", $51 db "Now that I'm not", $4f db "sick any more, I", $55 db "guess it's time.", $57 ; 0x8141c + 65 bytes _HM01NoRoomText: ; 0x8145d db $0, "Oh no! You have", $4f db "no room for this!", $57 ; 0x8145d + 35 bytes _SSAnne7Text2: ; 0x81480 db $0, "Yuck! Shouldn't", $4f db "have looked!", $57 _SSAnne7Text3: ; 0x8149d db $0, "How to Conquer", $4f db "Seasickness...", $55 db "The CAPTAIN's", $55 db "reading this!", $57 _SSAnne8Text8: ; 0x814d7 db $0, "WIGGLYTUFF: Puup", $4f db "pupuu!@@" _SSAnne8BattleText1: ; 0x814f1 db $0, "I travel alone", $4f db "on my journeys!", $51 db "My #MON are my", $4f db "only friends!", $57 ; 0x814f1 + 61 bytes _SSAnne8EndBattleText1: ; 0x8152e db $0, "My, my", $4f db "friends...", $58 ; 0x8152e + 19 bytes _SSAnne8AfterBattleText1: ; 0x81541 db $0, "You should be", $4f db "nice to friends!", $57 ; 0x81541 + 32 bytes _SSAnne8BattleText2: ; 0x81561 db $0, "You pup! How dare", $4f db "you barge in!", $57 ; 0x81561 + 33 bytes _SSAnne8EndBattleText2: ; 0x81582 db $0, "Humph!", $4f db "You rude child!", $58 ; 0x81582 + 24 bytes _UnnamedText_61a24: ; 0x8159a db $0, "I wish to be left", $4f db "alone! Get out!", $57 ; 0x8159a + 35 bytes _SSAnne8BattleText3: ; 0x815bd db $0, "I love #MON!", $4f db "Do you?", $57 ; 0x815bd + 22 bytes _SSAnne8EndBattleText3: ; 0x815d3 db $0, "Wow! ", $4f db "You're great!", $58 ; 0x815d3 + 20 bytes _SSAnne8AfterBattleText3: ; 0x815e7 db $0, "Let me be your", $4f db "friend, OK?", $51 db "Then we can trade", $4f db "#MON!", $57 ; 0x815e7 + 52 bytes _SSAnne8BattleText4: ; 0x8161b db $0, "I collected these", $4f db "#MON from all", $55 db "around the world!", $57 ; 0x8161b + 51 bytes _SSAnne8EndBattleText4: ; 0x8164e db $0, "Oh no!", $4f db "I went around the", $55 db "world for these!", $58 ; 0x8164e + 43 bytes _SSAnne8AfterBattleText4: ; 0x81679 db $0, "You hurt my poor", $4f db "worldly #MON!", $51 db "I demand that you", $4f db "heal them at a", $55 db "#MON CENTER!", $57 ; 0x81679 + 78 bytes _SSAnne8Text5: ; 0x816c7 db $0, "Waiter, I would", $4f db "like a cherry pie", $55 db "please!", $57 _SSAnne8Text6: ; 0x816f2 db $0, "A cruise is so", $4f db "elegant yet cozy!", $57 _SSAnne8Text7: ; 0x81714 db $0, "I always travel", $4f db "with WIGGLYTUFF!", $57 _SSAnne8Text9: ; 0x81736 db $0, "We are cruising", $4f db "around the world.", $57 _SSAnne8Text11: ; 0x81759 db $0, "Ssh! I'm a GLOBAL", $4f db "POLICE agent!", $51 db "I'm on the trail", $4f db "of TEAM ROCKET!", $57 _UnnamedText_61bf2: ; 0x81799 db $0, "In all my travels", $4f db "I've never seen", $55 db "any #MON sleep", $55 db "like this one!", $51 db "It was something", $4f db "like this!", $58 ; 0x81799 + 92 bytes _UnnamedText_61c01: ; 0x817f5 db $0, "Ah yes, I have", $4f db "seen some #MON", $55 db "ferry people", $55 db "across the water!", $57 ; 0x817f5 + 62 bytes _UnnamedText_61c10: ; 0x81833 db $0, "#MON can CUT", $4f db "down small bushes.", $57 ; 0x81833 + 33 bytes _UnnamedText_61c1f: ; 0x81854 db $0, "Have you gone to", $4f db "the SAFARI ZONE", $55 db "in FUCHSIA CITY?", $51 db "It had many rare", $4f db "kinds of #MON!!", $57 ; 0x81854 + 84 bytes _UnnamedText_61c2e: ; 0x818a8 db $0, "Me and my Daddy", $4f db "think the SAFARI", $55 db "ZONE is awesome!", $57 ; 0x818a8 + 51 bytes _UnnamedText_61c3d: ; 0x818db db $0, "The CAPTAIN looked", $4f db "really sick and", $55 db "pale!", $57 ; 0x818db + 42 bytes _UnnamedText_61c4c: ; 0x81905 db $0, "I hear many people", $4f db "get seasick!", $57 ; 0x81905 + 33 bytes _SSAnne9BattleText1: ; 0x81926 db $0, "Competing against", $4f db "the young keeps", $55 db "me youthful.", $57 ; 0x81926 + 48 bytes _SSAnne9EndBattleText1: ; 0x81956 db $0, "Good", $4f db "fight! Ah, I feel", $55 db "young again!", $58 ; 0x81956 + 37 bytes _SSAnne9AfterBattleText1: ; 0x8197b db $0, "15 years ago, I", $4f db "would have won!", $57 ; 0x8197b + 33 bytes _SSAnne9BattleText2: ; 0x8199c db $0, "Check out what I", $4f db "fished up!", $57 ; 0x8199c + 29 bytes _SSAnne9EndBattleText2: ; 0x819b9 db $0, "I'm", $4f db "all out!", $58 ; 0x819b9 + 13 bytes _SSAnne9AfterBattleText2: ; 0x819c6 db $0, "Party?", $51 db "The cruise ship's", $4f db "party should be", $55 db "over by now.", $57 ; 0x819c6 + 54 bytes _SSAnne9BattleText3: ; 0x819fc db $0, "Which do you like,", $4f db "a strong or a", $55 db "rare #MON?", $57 ; 0x819fc + 45 bytes _SSAnne9EndBattleText3: ; 0x81a29 db $0, "I must", $4f db "salute you!", $58 ; 0x81a29 + 20 bytes _SSAnne9AfterBattleText3: ; 0x81a3d db $0, "I prefer strong", $4f db "and rare #MON.", $57 ; 0x81a3d + 32 bytes _SSAnne9BattleText4: ; 0x81a5d db $0, "I never saw you", $4f db "at the party.", $57 ; 0x81a5d + 31 bytes _SSAnne9EndBattleText4: ; 0x81a7c db $0, "Take", $4f db "it easy!", $58 ; 0x81a7c + 15 bytes _SSAnne9AfterBattleText4: ; 0x81a8b db $0, "Oh, I adore your", $4f db "strong #MON!", $57 ; 0x81a8b + 31 bytes _SSAnne10Text8: ; 0x81aaa db $0, "MACHOKE: Gwoh!", $4f db "Goggoh!@@" _SSAnne10BattleText1: ; 0x81ac3 db $0, "You know what they", $4f db "say about sailors", $55 db "and fighting!", $57 ; 0x81ac3 + 52 bytes _SSAnne10EndBattleText1: ; 0x81af7 db $0, "Right!", $4f db "Good fight, mate!", $58 ; 0x81af7 + 26 bytes _SSAnne10AfterBattleText1: ; 0x81b11 db $0, "Haha! Want to be", $4f db "a sailor, mate?", $57 ; 0x81b11 + 34 bytes _SSAnne10BattleText2: ; 0x81b33 db $0, "My sailor's pride", $4f db "is at stake!", $57 ; 0x81b33 + 31 bytes _SSAnne10EndBattleText2: ; 0x81b52 db $0, "Your", $4f db "spirit sank me!", $58 ; 0x81b52 + 22 bytes _SSAnne10AfterBattleText2: ; 0x81b68 db $0, "Did you see the", $4f db "FISHING GURU in", $55 db "VERMILION CITY?", $57 ; 0x81b68 + 49 bytes _SSAnne10BattleText3: ; 0x81b99 db $0, "Us sailors have", $4f db "#MON too!", $57 ; 0x81b99 + 27 bytes _SSAnne10EndBattleText3: ; 0x81bb4 db $0, "OK, ", $4f db "you're not bad.", $58 ; 0x81bb4 + 21 bytes _SSAnne10AfterBattleText3: ; 0x81bc9 db $0, "We caught all our", $4f db "#MON while", $55 db "out at sea!", $57 ; 0x81bc9 + 42 bytes _SSAnne10BattleText4: ; 0x81bf3 db $0, "I like feisty", $4f db "kids like you!@@" ; 0x81bf3 + 31 bytes _SSAnne10EndBattleText4: ; 0x81c12 db $0, "Argh!", $4f db "Lost it!", $58 ; 0x81c12 + 16 bytes _SSAnne10AfterBattleText4: ; 0x81c22 db $0, "Sea #MON live", $4f db "in deep water.", $55 db "You'll need a ROD!", $57 ; 0x81c22 + 48 bytes _SSAnne10BattleText5: ; 0x81c52 db $0, "Matey, you're", $4f db "walking the plank", $55 db "if you lose!", $57 ; 0x81c52 + 45 bytes _SSAnne10EndBattleText5: ; 0x81c7f db $0, "Argh!", $4f db "Beaten by a kid!", $58 ; 0x81c7f + 24 bytes _SSAnne10AfterBattleText5: ; 0x81c97 db $0, "Jellyfish some-", $4f db "times drift into", $55 db "the ship.", $57 ; 0x81c97 + 44 bytes _SSAnne10BattleText6: ; 0x81cc3 db $0, "Hello stranger!", $4f db "Stop and chat!", $51 db "All my #MON", $4f db "are from the sea!", $57 ; 0x81cc3 + 62 bytes _SSAnne10EndBattleText6: ; 0x81d01 db $0, "Darn!", $4f db "I let that one", $55 db "get away!", $58 ; 0x81d01 + 32 bytes _SSAnne10AfterBattleText6: ; 0x81d21 db $0, "I was going to", $4f db "make you my", $55 db "assistant too!", $57 ; 0x81d21 + 43 bytes _SSAnne10Text7: ; 0x81d4c db $0, "My buddy, MACHOKE,", $4f db "is super strong!", $51 db "He has enough", $4f db "STRENGTH to move", $55 db "big rocks!", $57 _VictoryRoad3BattleText2: ; 0x81d9b db $0, "I heard rumors of", $4f db "a child prodigy!", $57 ; 0x81d9b + 36 bytes _VictoryRoad3EndBattleText2: ; 0x81dbf db $0, "The", $4f db "rumors were true!", $58 ; 0x81dbf + 23 bytes _VictoryRoad3AfterBattleText2: ; 0x81dd6 db $0, "You beat GIOVANNI", $4f db "of TEAM ROCKET?", $57 ; 0x81dd6 + 35 bytes _VictoryRoad3BattleText3: ; 0x81df9 db $0, "I'll show you just", $4f db "how good you are!", $57 ; 0x81df9 + 37 bytes _VictoryRoad3EndBattleText3: ; 0x81e1e db $0, "I'm", $4f db "furious!", $58 ; 0x81e1e + 13 bytes _VictoryRoad3AfterBattleText3: ; 0x81e2b db $0, "You showed me just", $4f db "how good I was!", $57 ; 0x81e2b + 36 bytes _VictoryRoad3BattleText4: ; 0x81e4f db $0, "Only the chosen", $4f db "can pass here!", $57 ; 0x81e4f + 32 bytes _VictoryRoad3EndBattleText4: ; 0x81e6f db $0, "I", $4f db "don't believe it!", $58 ; 0x81e6f + 20 bytes _VictoryRoad3AfterBattleText4: ; 0x81e83 db $0, "All trainers here", $4f db "are headed to the", $55 db "#MON LEAGUE!", $55 db "Be careful!", $57 ; 0x81e83 + 62 bytes _VictoryRoad3BattleText5: ; 0x81ec1 db $0, "Trainers live to", $4f db "seek stronger", $55 db "opponents!", $57 ; 0x81ec1 + 43 bytes _VictoryRoad3EndBattleText5: ; 0x81eec db $0, "Oh!", $4f db "So strong!", $58 ; 0x81eec + 16 bytes _VictoryRoad3AfterBattleText5: ; 0x81efc db $0, "By fighting tough", $4f db "battles, you get", $55 db "stronger!", $57 ; 0x81efc + 46 bytes _RocketHideout1EndBattleText6: ; 0x81f2a db $0, "Why...?@@" ; 0x81f34 _RocketHideout1BattleText2: ; 0x81f34 db $0, "Who are you? How", $4f db "did you get here?", $57 ; 0x81f34 + 36 bytes _RocketHideout1EndBattleText2: ; 0x81f58 db $0, "Oww!", $4f db "Beaten!", $58 ; 0x81f58 + 14 bytes _RocketHideout1AfterBattleTxt2: ; 0x81f66 db $0, "Are you dissing", $4f db "TEAM ROCKET?", $57 ; 0x81f66 + 30 bytes _RocketHideout1BattleText3: ; 0x81f84 db $0, "You broke into", $4f db "our operation?", $57 ; 0x81f84 + 31 bytes _RocketHideout1EndBattleText3: ; 0x81fa3 db $0, "Burnt!", $58 ; 0x81fa3 + 8 bytes _RocketHideout1AfterBattleTxt3: ; 0x81fab db $0, "You're not going", $4f db "to get away with", $55 db "this, brat!", $57 ; 0x81fab + 46 bytes _RocketHideout1BattleText4: ; 0x81fd9 db $0, "Intruder alert!", $57 ; 0x81fd9 + 17 bytes _RocketHideout1EndBattleText4: ; 0x81fea db $0, "I", $4f db "can't do it!", $58 ; 0x81fea + 15 bytes _RocketHideout1AfterBattleTxt4: ; 0x81ff9 db $0, "SILPH SCOPE?", $4f db "I don't know", $55 db "where it is!", $57 ; 0x81ff9 + 39 bytes _RocketHideout1BattleText5: ; 0x82020 db $0, "Why did you come", $4f db "here?", $57 ; 0x82020 + 24 bytes _RocketHideout1EndBattleText5: ; 0x82038 db $0, "This", $4f db "won't do!", $58 ; 0x82038 + 15 bytes _RocketHideout1AfterBattleTxt5: ; 0x82047 db $0, "OK, I'll talk!", $4f db "Take the elevator", $55 db "to see my BOSS!", $57 ; 0x82047 + 49 bytes _RocketHideout1BattleText6: ; 0x82078 db $0, "Are you lost, you", $4f db "little rat?", $57 ; 0x82078 + 31 bytes _RocketHideout1AfterBattleTxt6: ; 0x82097 db $0, "Uh-oh, that fight", $4f db "opened the door!", $57 ; 0x82097 + 36 bytes _RocketHideout2BattleText2: ; 0x820bb db $0, "BOSS said you can", $4f db "see GHOSTs with", $55 db "the SILPH SCOPE!", $57 ; 0x820bb + 52 bytes _RocketHideout2EndBattleText2: ; 0x820ef db $0, "I", $4f db "surrender!", $58 ; 0x820ef + 14 bytes _RocketHideout2AfterBattleTxt2: ; 0x820fd db $0, "The TEAM ROCKET", $4f db "HQ has 4 basement", $55 db "floors. Can you", $55 db "reach the BOSS?", $57 ; 0x820fd + 67 bytes _RocketHideout3BattleText2: ; 0x82140 db $0, "Stop meddling in", $4f db "TEAM ROCKET's", $55 db "affairs!", $57 ; 0x82140 + 40 bytes _RocketHideout3EndBattleText2: ; 0x82168 db $0, "Oof!", $4f db "Taken down!", $58 ; 0x82168 + 18 bytes _RocketHideout3AfterBattleTxt2: ; 0x8217a db $0, "SILPH SCOPE?", $4f db "The machine the", $55 db "BOSS stole. It's", $55 db "here somewhere.", $57 ; 0x8217a + 62 bytes _RocketHideout3BattleTxt: ; 0x821b8 db $0, "We got word from", $4f db "upstairs that you", $55 db "were coming!", $57 ; 0x821b8 + 49 bytes _RocketHideout3EndBattleText3: ; 0x821e9 db $0, "What?", $4f db "I lost? No!", $58 ; 0x821e9 + 19 bytes _RocketHideout3AfterBattleText3: ; 0x821fc db $0, "Go ahead and go!", $4f db "But, you need the", $55 db "LIFT KEY to run", $55 db "the elevator!", $57 ; 0x821fc + 66 bytes _UnnamedText_4557a: ; 0x8223e db $0, "So! I must say, I", $4f db "am impressed you", $55 db "got here!", $57 ; 0x8223e + 46 bytes _UnnamedText_4557f: ; 0x8226c db $0, "WHAT!", $4f db "This cannot be!", $58 ; 0x8226c + 23 bytes _UnnamedText_45584: ; 0x82283 db $0, "I see that you", $4f db "raise #MON", $55 db "with utmost care.", $51 db "A child like you", $4f db "would never", $55 db "understand what I", $55 db "hope to achieve.", $51 db "I shall step", $4f db "aside this time!", $51 db "I hope we meet", $4f db "again...", $57 ; 0x82283 + 163 bytes _RocketHideout4BattleText2: ; 0x82326 db $0, "I know you! You", $4f db "ruined our plans", $55 db "at MT.MOON!", $57 ; 0x82326 + 46 bytes _RocketHideout4EndBattleText2: ; 0x82354 db $0, "Burned", $4f db "again!", $58 ; 0x82354 + 15 bytes _RocketHideout4AfterBattleText2: ; 0x82363 db $0, "Do you have", $4f db "something against", $55 db "TEAM ROCKET?", $57 ; 0x82363 + 44 bytes _RocketHideout4BattleText3: ; 0x8238f db $0, "How can you not", $4f db "see the beauty of", $55 db "our evil?", $57 ; 0x8238f + 45 bytes _RocketHideout4EndBattleText3: ; 0x823bc db $0, "Ayaya!", $58 ; 0x823bc + 8 bytes _RocketHideout4AfterBattleText3: ; 0x823c4 db $0, "BOSS! I'm sorry I", $4f db "failed you!", $57 ; 0x823c4 + 30 bytes _RocketHideout4BattleText4: ; 0x823e2 db $0, "The elevator", $4f db "doesn't work? Who", $55 db "has the LIFT KEY?", $57 ; 0x823e2 + 49 bytes _RocketHideout4EndBattleText4: ; 0x82413 db $0, "No!", $58 ; 0x82413 + 5 bytes _UnnamedText_455ec: ; 0x82418 db $0, "Oh no! I dropped", $4f db "the LIFT KEY!", $57 ; 0x82418 + 32 bytes _UnnamedText_4578b: ; 0x82438 db $0, "It appears to", $4f db "need a key.@@" ; 0xa82454 _UnnamedText_59ded: ; 0x82454 db $0, "Eeek!", $4f db "No! Stop! Help!", $51 db "Oh, you're not", $4f db "with TEAM ROCKET.", $55 db "I thought...", $55 db "I'm sorry. Here,", $55 db "please take this!", $58 ; 0x82454 + 102 bytes _ReceivedTM36Text: ; 0x824ba db $0, $52, " got", $4f db "@" TX_RAM $cf4b db $0, "!@@" ; 0x824c9 _TM36ExplanationText: ; 0x824c9 db $0, "TM36 is", $4f db "SELFDESTRUCT!", $51 db "It's powerful, but", $4f db "the #MON that", $55 db "uses it faints!", $55 db "Be careful.", $57 ; 0x824c9 + 83 bytes _TM36NoRoomText: ; 0x8251c db $0, "You don't have any", $4f db "room for this.", $57 ; 0x8251c + 34 bytes _SilphCo2BattleText1: ; 0x8253e db $0, "Help! I'm a SILPH", $4f db "employee.", $57 ; 0x8253e + 28 bytes _SilphCo2EndBattleText1: ; 0x8255a db $0, "How", $4f db "did you know I", $55 db "was a ROCKET?", $58 ; 0x8255a + 34 bytes _SilphCo2AfterBattleText1: ; 0x8257c db $0, "I work for both", $4f db "SILPH and TEAM", $55 db "ROCKET!", $57 ; 0x8257c + 40 bytes _SilphCo2BattleText2: ; 0x825a4 db $0, "It's off limits", $4f db "here! Go home!", $57 ; 0x825a4 + 31 bytes _SilphCo2EndBattleText2: ; 0x825c3 db $0, "You're", $4f db "good.", $58 ; 0x825c3 + 13 bytes _SilphCo2AfterBattleText2: ; 0x825d0 db $0, "Can you solve the", $4f db "maze in here?", $57 ; 0x825d0 + 33 bytes _SilphCo2BattleText3: ; 0x825f1 db $0, "No kids are", $4f db "allowed in here!", $57 ; 0x825f1 + 30 bytes _SilphCo2EndBattleText3: ; 0x8260f db $0, "Tough!", $58 ; 0x8260f + 8 bytes _SilphCo2AfterBattleText3: ; 0x82617 db $0, "Diamond shaped", $4f db "tiles are", $55 db "teleport blocks!", $51 db "They're hi-tech", $4f db "transporters!", $57 ; 0x82617 + 72 bytes _SilphCo2BattleText4: ; 0x8265f db $0, "Hey kid! What are", $4f db "you doing here?", $57 ; 0x8265f + 35 bytes _SilphCo2EndBattleText4: ; 0x82682 db $0, "I goofed!", $58 ; 0x82682 + 11 bytes _SilphCo2AfterBattleText4: ; 0x8268d db $0, "SILPH CO. will", $4f db "be merged with", $55 db "TEAM ROCKET!", $57 ; 0x8268d + 44 bytes _UnnamedText_59ff9: ; 0x826b9 db $0, "I work for SILPH.", $4f db "What should I do?", $57 ; 0x826b9 + 37 bytes _UnnamedText_59ffe: ; 0x826de db $0, $52, "! You and", $4f db "your #MON", $55 db "saved us!", $57 ; 0x826de + 32 bytes _SilphCo3BattleText1: ; 0x826fe db $0, "Quit messing with", $4f db "us, kid!", $57 ; 0x826fe + 28 bytes _SilphCo3EndBattleText1: ; 0x8271a db $0, "I give", $4f db "up!", $58 ; 0x8271a + 12 bytes _SilphCo3AfterBattleText1: ; 0x82726 db $0, "A hint? You can", $4f db "open doors with a", $55 db "CARD KEY!", $57 ; 0x82726 + 45 bytes _SilphCo3BattleText2: ; 0x82753 db $0, "I support TEAM", $4f db "ROCKET more than", $55 db "I support SILPH!", $57 ; 0x82753 + 50 bytes _SilphCo3EndBattleText2: ; 0x82785 db $0, "You", $4f db "really got me!", $58 ; 0x82785 + 20 bytes _SilphCo3AfterBattleText2: ; 0x82799 db $0, "Humph...", $51 db "TEAM ROCKET said", $4f db "that if I helped", $55 db "them, they'd let", $55 db "me study #MON!", $57 ; 0x82799 + 75 bytes _UnnamedText_19de0: ; 0x827e4 db $0, "Sssh! Can't you", $4f db "see I'm hiding?", $57 ; 0x827e4 + 31 bytes _UnnamedText_19de5: ; 0x82803 db $0, "Huh? TEAM ROCKET", $4f db "is gone?", $57 ; 0x82803 + 27 bytes _SilphCo4BattleText2: ; 0x8281e db $0, "TEAM ROCKET has", $4f db "taken command of", $55 db "SILPH CO.!", $57 ; 0x8281e + 45 bytes _SilphCo4EndBattleText2: ; 0x8284b db $0, "Arrgh!", $58 ; 0x8284b + 8 bytes _SilphCo4AfterBattleText2: ; 0x82853 db $0, "Fwahahaha!", $4f db "My BOSS has been", $55 db "after this place!", $57 ; 0x82853 + 47 bytes _SilphCo4BattleText3: ; 0x82882 db $0, "My #MON are my", $4f db "loyal soldiers!", $57 ; 0x82882 + 32 bytes _SilphCo4EndBattleText3: ; 0x828a2 db $0, "Darn!", $4f db "You weak #MON!", $58 ; 0x828a2 + 22 bytes _SilphCo4AfterBattleText3: ; 0x828b8 db $0, "The doors are", $4f db "electronically", $55 db "locked! A CARD", $55 db "KEY opens them!", $57 ; 0x828b8 + 61 bytes _SilphCo4BattleText4: ; 0x828f5 db $0, "Intruder spotted!", $57 ; 0x828f5 + 19 bytes _SilphCo4EndBattleText4: ; 0x82908 db $0, "Who", $4f db "are you?", $58 ; 0x82908 + 14 bytes _SilphCo4AfterBattleText4: ; 0x82916 db $0, "I better tell the", $4f db "BOSS on 11F!", $57 ; 0x82916 + 32 bytes _UnnamedText_1a010: ; 0x82936 db $0, "TEAM ROCKET is", $4f db "in an uproar over", $55 db "some intruder.", $55 db "That's you right?", $57 ; 0x82936 + 66 bytes _UnnamedText_1a015: ; 0x82978 db $0, "TEAM ROCKET took", $4f db "off! You're our", $55 db "hero! Thank you!", $57 ; 0x82978 + 50 bytes _SilphCo5BattleText2: ; 0x829aa db $0, "I heard a kid was", $4f db "wandering around.", $57 ; 0x829aa + 37 bytes _SilphCo5EndBattleText2: ; 0x829cf db $0, "Boom!", $58 ; 0x829cf + 7 bytes _SilphCo5AfterBattleText2: ; 0x829d6 db $0, "It's not smart", $4f db "to pick a fight", $55 db "with TEAM ROCKET!", $57 ; 0x829d6 + 49 bytes _SilphCo5BattleText3: ; 0x82a07 db $0, "We study #", $4f db "BALL technology", $55 db "on this floor!", $57 ; 0x82a07 + 43 bytes _SilphCo5EndBattleText3: ; 0x82a32 db $0, "Dang!", $4f db "Blast it!", $58 ; 0x82a32 + 17 bytes _SilphCo5AfterBattleText3: ; 0x82a43 db $0, "We worked on the", $4f db "ultimate #", $55 db "BALL which would", $55 db "catch anything!", $57 ; 0x82a43 + 62 bytes _SilphCo5BattleText4: ; 0x82a81 db $0, "Whaaat? There", $4f db "shouldn't be any", $55 db "children here?", $57 ; 0x82a81 + 46 bytes SECTION "bank21",DATA,BANK[$21] _SilphCo5EndBattleText4: ; 0x84000 db $0, "Oh", $4f db "goodness!", $58 ; 0x84000 + 14 bytes _SilphCo5AfterBattleText4: ; 0x8400e db $0, "You're only on 5F.", $4f db "It's a long way", $55 db "to my BOSS!", $57 ; 0x8400e + 46 bytes _SilphCo5BattleText5: ; 0x8403c db $0, "Show TEAM ROCKET", $4f db "a little respect!", $57 ; 0x8403c + 36 bytes _SilphCo5EndBattleText5: ; 0x84060 db $0, "Cough...", $4f db "Cough...", $58 ; 0x84060 + 19 bytes _SilphCo5AfterBattleText5: ; 0x84073 db $0, "Which reminds me.", $51 db "KOFFING evolves", $4f db "into WEEZING!", $57 ; 0x84073 + 49 bytes _SilphCo5Text9: ; 0x840a4 db $0, "It's a #MON", $4f db "REPORT!", $51 db "#MON LAB", $4f db "created PORYGON,", $55 db "the first virtual", $55 db "reality #MON.", $57 _SilphCo5Text10: ; 0x840f2 db $0, "It's a #MON", $4f db "REPORT!", $51 db "Over 160 #MON", $4f db "techniques have", $55 db "been confirmed.", $57 _SilphCo5Text11: ; 0x84134 db $0, "It's a #MON", $4f db "REPORT!", $51 db "4 #MON evolve", $4f db "only when traded", $55 db "by link-cable.", $57 _UnnamedText_1a24a: ; 0x84176 db $0, "The ROCKETs came", $4f db "and took over the", $55 db "building!", $57 ; 0x84176 + 46 bytes _UnnamedText_1a24f: ; 0x841a4 db $0, "Well, better get", $4f db "back to work!", $57 ; 0x841a4 + 32 bytes _UnnamedText_1a261: ; 0x841c4 db $0, "Oh dear, oh dear.", $4f db "Help me please!", $57 ; 0x841c4 + 35 bytes _UnnamedText_1a266: ; 0x841e7 db $0, "We got engaged!", $4f db "Heheh!", $57 ; 0x841e7 + 24 bytes _UnnamedText_1a278: ; 0x841ff db $0, "Look at him! He's", $4f db "such a coward!", $57 ; 0x841ff + 33 bytes _UnnamedText_1a27d: ; 0x84220 db $0, "I feel so sorry", $4f db "for him, I have", $55 db "to marry him!", $57 ; 0x84220 + 47 bytes _UnnamedText_1a28f: ; 0x8424f db $0, "TEAM ROCKET is", $4f db "trying to conquer", $55 db "the world with", $55 db "#MON!", $57 ; 0x8424f + 55 bytes _UnnamedText_1a294: ; 0x84286 db $0, "TEAM ROCKET ran", $4f db "because of you!", $57 ; 0x84286 + 33 bytes _UnnamedText_1a2a6: ; 0x842a7 db $0, "They must have", $4f db "targeted SILPH", $55 db "for our #MON", $55 db "products.", $57 ; 0x842a7 + 54 bytes _UnnamedText_1a2ab: ; 0x842dd db $0, "Come work for", $4f db "SILPH when you", $55 db "get older!", $57 ; 0x842dd + 41 bytes _SilphCo6BattleText2: ; 0x84306 db $0, "I am one of the 4", $4f db "ROCKET BROTHERS!", $57 ; 0x84306 + 36 bytes _SilphCo6EndBattleText2: ; 0x8432a db $0, "Flame", $4f db "out!", $58 ; 0x8432a + 12 bytes _SilphCo6AfterBattleText2: ; 0x84336 db $0, "No matter!", $4f db "My brothers will", $55 db "avenge me!", $57 ; 0x84336 + 40 bytes _SilphCo6BattleText3: ; 0x8435e db $0, "That rotten", $4f db "PRESIDENT!", $51 db "He shouldn't have", $4f db "sent me to the", $55 db "TIKSI BRANCH!", $57 ; 0x8435e + 70 bytes _SilphCo6EndBattleText3: ; 0x843a4 db $0, "Shoot!", $58 ; 0x843a4 + 8 bytes _SilphCo6AfterBattleText3: ; 0x843ac db $0, "TIKSI BRANCH?", $4f db "It's in Russian", $55 db "no man's land!", $57 ; 0x843ac + 44 bytes _SilphCo6BattleText4: ; 0x843d8 db $0, "You dare betray", $4f db "TEAM ROCKET?", $57 ; 0x843d8 + 30 bytes _SilphCo6EndBattleText4: ; 0x843f6 db $0, "You", $4f db "traitor!", $58 ; 0x843f6 + 14 bytes _SilphCo6AfterBattleText4: ; 0x84404 db $0, "If you stand for", $4f db "justice, you", $55 db "betray evil!", $57 ; 0x84404 + 44 bytes _UnnamedText_51dd3: ; 0x84430 db $0, "Oh! Hi! You're", $4f db "not a ROCKET! You", $55 db "came to save us?", $55 db "Why, thank you!", $51 db "I want you to", $4f db "have this #MON", $55 db "for saving us.", $58 ; 0x84430 + 110 bytes _UnnamedText_51dd8: ; 0x8449e db $0, "It's LAPRAS. It's", $4f db "very intelligent.", $51 db "We kept it in our", $4f db "lab, but it will", $55 db "be much better", $55 db "off with you!", $51 db "I think you will", $4f db "be a good trainer", $55 db "for LAPRAS!", $51 db "It's a good", $4f db "swimmer. It'll", $55 db "give you a lift!", $57 ; 0x8449e + 188 bytes _UnnamedText_51ddd: ; 0x8455a db $0, "TEAM ROCKET's", $4f db "BOSS went to the", $55 db "boardroom! Is our", $55 db "PRESIDENT OK?", $57 ; 0x8455a + 63 bytes _UnnamedText_51de2: ; 0x84599 db $0, "Saved at last!", $4f db "Thank you!", $57 ; 0x84599 + 27 bytes _UnnamedText_51e00: ; 0x845b4 db $0, "TEAM ROCKET was", $4f db "after the MASTER", $55 db "BALL which will", $55 db "catch any #MON!", $57 ; 0x845b4 + 66 bytes _UnnamedText_51e05: ; 0x845f6 db $0, "We canceled the", $4f db "MASTER BALL", $55 db "project because", $55 db "of TEAM ROCKET.", $57 ; 0x845f6 + 61 bytes _UnnamedText_51e23: ; 0x84633 db $0, "It would be bad", $4f db "if TEAM ROCKET", $55 db "took over SILPH", $55 db "or our #MON!", $57 ; 0x84633 + 61 bytes _UnnamedText_51e28: ; 0x84670 db $0, "Wow! You chased", $4f db "off TEAM ROCKET", $55 db "all by yourself?", $57 ; 0x84670 + 50 bytes _UnnamedText_51e46: ; 0x846a2 db $0, "You! It's really", $4f db "dangerous here!", $55 db "You came to save", $55 db "me? You can't!", $57 ; 0x846a2 + 64 bytes _UnnamedText_51e4b: ; 0x846e2 db $0, "Safe at last!", $4f db "Oh thank you!", $57 ; 0x846e2 + 29 bytes _SilphCo7BattleText1: ; 0x846ff db $0, "Oh ho! I smell a", $4f db "little rat!", $57 ; 0x846ff + 30 bytes _SilphCo7EndBattleText1: ; 0x8471d db $0, "Lights", $4f db "out!", $58 ; 0x8471d + 13 bytes _SilphCo7AfterBattleText1: ; 0x8472a db $0, "You won't find my", $4f db "BOSS by just", $55 db "scurrying around!", $57 ; 0x8472a + 49 bytes _SilphCo7BattleText2: ; 0x8475b db $0, "Heheh!", $51 db "You mistook me for", $4f db "a SILPH worker?", $57 ; 0x8475b + 43 bytes _SilphCo7EndBattleText2: ; 0x84786 db $0, "I'm", $4f db "done!", $58 ; 0x84786 + 10 bytes _SilphCo7AfterBattleText2: ; 0x84790 db $0, "Despite your age,", $4f db "you are a skilled", $55 db "trainer!", $57 ; 0x84790 + 46 bytes _SilphCo7BattleText3: ; 0x847be db $0, "I am one of the 4", $4f db "ROCKET BROTHERS!", $57 ; 0x847be + 36 bytes _SilphCo7EndBattleText3: ; 0x847e2 db $0, "Aack!", $4f db "Brothers, I lost!", $58 ; 0x847e2 + 25 bytes _SilphCo7AfterBattleText3: ; 0x847fb db $0, "Doesn't matter.", $4f db "My brothers will", $55 db "repay the favor!", $57 ; 0x847fb + 50 bytes _SilphCo7BattleText4: ; 0x8482d db $0, "A child intruder?", $4f db "That must be you!", $57 ; 0x8482d + 37 bytes _SilphCo7EndBattleText4: ; 0x84852 db $0, "Fine!", $4f db "I lost!", $58 ; 0x84852 + 15 bytes _SilphCo7AfterBattleText4: ; 0x84861 db $0, "Go on home", $4f db "before my BOSS", $55 db "gets ticked off!", $57 ; 0x84861 + 44 bytes _UnnamedText_51ebe: ; 0x8488d db $0, $53, ": What", $4f db "kept you ", $52, "?", $57 ; 0x8488d + 21 bytes _UnnamedText_51ec3: ; 0x848a2 db $0, $53, ": Hahaha!", $4f db "I thought you'd", $55 db "turn up if I", $55 db "waited here!", $51 db "I guess TEAM", $4f db "ROCKET slowed you", $55 db "down! Not that I", $55 db "care!", $51 db "I saw you in", $4f db "SAFFRON, so I", $55 db "decided to see if", $55 db "you got better!", $57 ; 0x848a2 + 168 bytes _UnnamedText_51ec8: ; 0x8494a db $0, "Oh ho!", $4f db "So, you are ready", $55 db "for BOSS ROCKET!", $58 ; 0x8494a + 43 bytes _UnnamedText_51ecd: ; 0x84975 db $0, $53, ": How can", $4f db "I put this?", $51 db "You're not good", $4f db "enough to play", $55 db "with us big boys!", $58 ; 0x84975 + 72 bytes _UnnamedText_51ed2: ; 0x849bd db $0, "Well, ", $52, "!", $51 db "I'm moving on up", $4f db "and ahead!", $51 db "By checking my", $4f db "#DEX, I'm", $55 db "starting to see", $55 db "what's strong and", $55 db "how they evolve!", $51 db "I'm going to the", $4f db "#MON LEAGUE", $55 db "to boot out the", $55 db "ELITE FOUR!", $51 db "I'll become the", $4f db "world's most", $55 db "powerful trainer!", $51 db $52, ", well", $4f db "good luck to you!", $55 db "Don't sweat it!", $55 db "Smell ya!", $57 ; 0x849bd + 263 bytes _UnnamedText_565be: ; 0x84ac4 db $0, "I wonder if SILPH", $4f db "is finished...", $57 ; 0x84ac4 + 34 bytes _UnnamedText_565c3: ; 0x84ae6 db $0, "Thanks for saving", $4f db "us!", $57 ; 0x84ae6 + 23 bytes _SilphCo8BattleText1: ; 0x84afd db $0, "That's as far as", $4f db "you'll go!", $57 ; 0x84afd + 27 bytes _SilphCo8EndBattleText1: ; 0x84b18 db $0, "Not", $4f db "enough grit!", $58 ; 0x84b18 + 18 bytes _SilphCo8AfterBattleText1: ; 0x84b2a db $0, "If you don't turn", $4f db "back, I'll call", $55 db "for backup!", $57 ; 0x84b2a + 45 bytes _SilphCo8BattleText2: ; 0x84b57 db $0, "You're causing us", $4f db "problems!", $57 ; 0x84b57 + 28 bytes _SilphCo8EndBattleText2: ; 0x84b73 db $0, "Huh?", $4f db "I lost?", $58 ; 0x84b73 + 14 bytes _SilphCo8AfterBattleText2: ; 0x84b81 db $0, "So, what do you", $4f db "think of SILPH", $55 db "BUILDING's maze?", $57 ; 0x84b81 + 48 bytes _SilphCo8BattleText3: ; 0x84bb1 db $0, "I am one of the 4", $4f db "ROCKET BROTHERS!", $57 ; 0x84bb1 + 36 bytes _SilphCo8EndBattleText3: ; 0x84bd5 db $0, "Whoo!", $4f db "Oh brothers!", $58 ; 0x84bd5 + 20 bytes _SilphCo8AfterBattleText3: ; 0x84be9 db $0, "I'll leave you up", $4f db "to my brothers!", $57 ; 0x84be9 + 34 bytes _UnnamedText_5d8e5: ; 0x84c0b db $0, "You look tired!", $4f db "You should take a", $55 db "quick nap!", $58 ; 0x84c0b + 46 bytes _UnnamedText_5d8ea: ; 0x84c39 db $0, "Don't give up!", $57 ; 0x84c39 + 15 bytes _UnnamedText_5d8ef: ; 0x84c48 db $0, "Thank you so", $4f db "much!", $57 ; 0x84c48 + 20 bytes _SilphCo9BattleText1: ; 0x84c5c db $0, "Your #MON seem", $4f db "to adore you, kid!", $57 ; 0x84c5c + 35 bytes _SilphCo9EndBattleText1: ; 0x84c7f db $0, "Ghaaah!", $58 ; 0x84c7f + 9 bytes _SilphCo9AfterBattleText1: ; 0x84c88 db $0, "If I had started", $4f db "as a trainer at", $55 db "your age...", $57 ; 0x84c88 + 46 bytes _SilphCo9BattleText2: ; 0x84cb6 db $0, "Your #MON have", $4f db "weak points! I", $55 db "can nail them!", $57 ; 0x84cb6 + 46 bytes _SilphCo9EndBattleText2: ; 0x84ce4 db $0, "You", $4f db "hammered me!", $58 ; 0x84ce4 + 18 bytes _SilphCo9AfterBattleText2: ; 0x84cf6 db $0, "Exploiting weak", $4f db "spots does work!", $55 db "Think about", $55 db "element types!", $57 ; 0x84cf6 + 61 bytes _SilphCo9BattleText3: ; 0x84d33 db $0, "I am one of the 4", $4f db "ROCKET BROTHERS!", $57 ; 0x84d33 + 36 bytes _SilphCo9EndBattleText3: ; 0x84d57 db $0, "Warg!", $4f db "Brothers, I lost!", $58 ; 0x84d57 + 25 bytes _SilphCo9AfterBattleText3: ; 0x84d70 db $0, "My brothers will", $4f db "avenge me!", $57 ; 0x84d70 + 29 bytes _UnnamedText_5a1d3: ; 0x84d8d db $0, "Waaaaa!", $55 db "I'm scared!", $57 ; 0x84d8d + 20 bytes _UnnamedText_5a1d8: ; 0x84da1 db $0, "Please keep quiet", $4f db "about my crying!", $57 ; 0x84da1 + 36 bytes _SilphCo10BattleText1: ; 0x84dc5 db $0, "Welcome to the", $4f db "10F! So good of", $55 db "you to join me!", $57 ; 0x84dc5 + 48 bytes _SilphCo10EndBattleText1: ; 0x84df5 db $0, "I'm", $4f db "stunned!", $58 ; 0x84df5 + 13 bytes _SilphCo10AfterBattleText1: ; 0x84e02 db $0, "Nice try, but the", $4f db "boardroom is up", $55 db "one more floor!", $57 ; 0x84e02 + 51 bytes _SilphCo10BattleText2: ; 0x84e35 db $0, "Enough of your", $4f db "silly games!", $57 ; 0x84e35 + 29 bytes _SilphCo10EndBattleText2: ; 0x84e52 db $0, "No", $4f db "continues left!", $58 ; 0x84e52 + 20 bytes _SilphCo10AfterBattleText2: ; 0x84e66 db $0, "Are you satisfied", $4f db "with beating me?", $55 db "Then go on home!", $57 ; 0x84e66 + 53 bytes _SilphCoPresidentText: ; 0x84e9b db $0, "PRESIDENT: Thank", $4f db "you for saving", $55 db "SILPH!", $51 db "I will never", $4f db "forget you saved", $55 db "us in our moment", $55 db "of peril!", $51 db "I have to thank", $4f db "you in some way!", $51 db "Because I am rich,", $4f db "I can give you", $55 db "anything!", $51 db "Here, maybe this", $4f db "will do!", $58 ; 0x84e9b + 200 bytes _ReceivedSilphCoMasterBallText: ; 0x84f63 db $0, $52, " got a", $4f db "@" TX_RAM $cf4b db $0, "!@@" ; 0x84f74 _UnnamedText_6231c: ; 0x84f74 db $0, "PRESIDENT: You", $4f db "can't buy that", $55 db "anywhere!", $51 db "It's our secret", $4f db "prototype MASTER", $55 db "BALL!", $51 db "It will catch any", $4f db "#MON without", $55 db "fail!", $51 db "You should be", $4f db "quiet about using", $55 db "it, though.", $57 ; 0x84f74 + 159 bytes _SilphCoMasterBallNoRoomText: ; 0x85013 db $0, "You have no", $4f db "room for this.", $57 ; 0x85013 + 28 bytes _SilphCo11Text2: ; 0x8502f db $0, "SECRETARY: Thank", $4f db "you for rescuing", $55 db "all of us!", $51 db "We admire your", $4f db "courage.", $57 _SilphCo11Text3: ; 0x85075 db $0, "Ah ", $52, "!", $4f db "So we meet again!", $51 db "The PRESIDENT and", $4f db "I are discussing", $55 db "a vital business", $55 db "proposition.", $51 db "Keep your nose", $4f db "out of grown-up", $55 db "matters...", $51 db "Or, experience a", $4f db "world of pain!", $57 _UnnamedText_62330: ; 0x85119 db $0, "Arrgh!!", $4f db "I lost again!?", $58 ; 0x85119 + 24 bytes _UnnamedText_62335: ; 0x85131 db $0, "Blast it all!", $4f db "You ruined our", $55 db "plans for SILPH!", $51 db "But, TEAM ROCKET", $4f db "will never fall!", $51 db $52, "! Never", $4f db "forget that all", $55 db "#MON exist", $55 db "for TEAM ROCKET!", $51 db "I must go, but I", $4f db "shall return!", $57 ; 0x85131 + 165 bytes _SilphCo11BattleText1: ; 0x851d6 db $0, "Stop right there!", $4f db "Don't you move!", $57 ; 0x851d6 + 34 bytes _SilphCo11EndBattleText1: ; 0x851f8 db $0, "Don't...", $4f db "Please!", $58 ; 0x851f8 + 17 bytes _SilphCo11AfterBattleText1: ; 0x85209 db $0, "So, you want to", $4f db "see my BOSS?", $57 ; 0x85209 + 30 bytes _SilphCo11BattleText2: ; 0x85227 db $0, "Halt! Do you have", $4f db "an appointment", $55 db "with my BOSS?", $57 ; 0x85227 + 48 bytes _SilphCo11EndBattleText2: ; 0x85257 db $0, "Gaah!", $4f db "Demolished!", $58 ; 0x85257 + 19 bytes _SilphCo11AfterBattleText2: ; 0x8526a db $0, "Watch your step,", $4f db "my BOSS likes his", $55 db "#MON tough!", $57 ; 0x8526a + 48 bytes _UnnamedText_6237b: ; 0x8529a db $0, "The monitor has", $4f db "#MON on it!", $57 ; 0x8529a + 29 bytes _Mansion2BattleText1: ; 0x852b7 db $0, "I can't get out!", $4f db "This old place is", $55 db "one big puzzle!", $57 ; 0x852b7 + 51 bytes _Mansion2EndBattleText1: ; 0x852ea db $0, "Oh no!", $4f db "My bag of loot!", $58 ; 0x852ea + 24 bytes _Mansion2AfterBattleText1: ; 0x85302 db $0, "Switches open and", $4f db "close alternating", $55 db "sets of doors!", $57 ; 0x85302 + 52 bytes _Mansion2Text3: ; 0x85336 db $0, "Diary: July 5", $4f db "Guyana,", $55 db "South America", $51 db "A new #MON was", $4f db "discovered deep", $55 db "in the jungle.", $57 _Mansion2Text4: ; 0x85389 db $0, "Diary: July 10", $4f db "We christened the", $55 db "newly discovered", $55 db "#MON, MEW.", $57 _UnnamedText_520c2: ; 0x853c7 db $0, "A secret switch!", $51 db "Press it?", $57 ; 0x853c7 + 28 bytes _UnnamedText_520c7: ; 0x853e3 db $0, "Who wouldn't?", $58 ; 0x853e3 + 14 bytes _UnnamedText_520cc: ; 0x853f1 db $0, "Not quite yet!", $57 ; 0x853f1 + 16 bytes _Mansion3BattleText1: ; 0x85401 db $0, "This place is", $4f db "like, huge!", $57 ; 0x85401 + 27 bytes _Mansion3EndBattleText1: ; 0x8541c db $0, "Ayah!", $58 ; 0x8541c + 7 bytes _Mansion3AfterBattleText1: ; 0x85423 db $0, "I wonder where", $4f db "my partner went.", $57 ; 0x85423 + 33 bytes _Mansion3BattleText2: ; 0x85444 db $0, "My mentor once", $4f db "lived here.", $57 ; 0x85444 + 28 bytes _Mansion3EndBattleText2: ; 0x85460 db $0, "Whew!", $4f db "Overwhelming!", $58 ; 0x85460 + 21 bytes _Mansion3AfterBattleText2: ; 0x85475 db $0, "So, you're stuck?", $4f db "Try jumping off", $55 db "over there!", $57 ; 0x85475 + 46 bytes _Mansion3Text5: ; 0x854a3 db $0, "Diary: Feb. 6", $4f db "MEW gave birth.", $51 db "We named the", $4f db "newborn MEWTWO.", $57 _Mansion4BattleText1: ; 0x854df db $0, "Uh-oh. Where am", $4f db "I now?", $57 ; 0x854df + 24 bytes _Mansion4EndBattleText1: ; 0x854f7 db $0, "Awooh!", $58 ; 0x854f7 + 8 bytes _Mansion4AfterBattleText1: ; 0x854ff db $0, "You can find stuff", $4f db "lying around.", $57 ; 0x854ff + 34 bytes _Mansion4BattleText2: ; 0x85521 db $0, "This place is", $4f db "ideal for a lab.", $57 ; 0x85521 + 32 bytes _Mansion4EndBattleText2: ; 0x85541 db $0, "What", $4f db "was that for?", $58 ; 0x85541 + 20 bytes _Mansion4AfterBattleText2: ; 0x85555 db $0, "I like it here!", $4f db "It's conducive to", $55 db "my studies!", $57 ; 0x85555 + 46 bytes _Mansion4Text7: ; 0x85583 db $0, "Diary; Sept. 1", $4f db "MEWTWO is far too", $55 db "powerful.", $51 db "We have failed to", $4f db "curb its vicious", $55 db "tendencies...", $57 _SafariZoneEastText5: ; 0x855e0 db $0, "REST HOUSE", $57 _SafariZoneEastText6: ; 0x855ec db $0, "TRAINER TIPS", $51 db "The remaining time", $4f db "declines only", $55 db "while you walk!", $57 _SafariZoneEastText7: ; 0x8562b db $0, "CENTER AREA", $4f db "NORTH: AREA 2", $57 _SafariZoneNorthText3: ; 0x85646 db $0, "REST HOUSE", $57 _SafariZoneNorthText4: ; 0x85652 db $0, "TRAINER TIPS", $51 db "The SECRET HOUSE", $4f db "is still ahead!", $57 _SafariZoneNorthText5: ; 0x85681 db $0, "AREA 2", $57 _SafariZoneNorthText6: ; 0x85689 db $0, "TRAINER TIPS", $51 db "#MON hide in", $4f db "tall grass!", $51 db "Zigzag through", $4f db "grassy areas to", $55 db "flush them out.", $57 _SafariZoneNorthText7: ; 0x856df db $0, "TRAINER TIPS", $51 db "Win a free HM for", $4f db "finding the", $55 db "SECRET HOUSE!", $57 _SafariZoneWestText5: ; 0x85719 db $0, "REST HOUSE", $57 _SafariZoneWestText6: ; 0x85725 db $0, "REQUEST NOTICE", $51 db "Please find the", $4f db "SAFARI WARDEN's", $55 db "lost GOLD TEETH.", $55 db "They're around", $55 db "here somewhere.", $51 db "Reward offered!", $4f db "Contact: WARDEN", $57 _SafariZoneWestText7: ; 0x857a3 db $0, "TRAINER TIPS", $51 db "Zone Exploration", $4f db "Campaign!", $51 db "The Search for", $4f db "the SECRET HOUSE!", $57 _SafariZoneWestText8: ; 0x857ed db $0, "AREA 3", $4f db "EAST: CENTER AREA", $57 _SafariZoneCenterText2: ; 0x85807 db $0, "REST HOUSE", $57 _SafariZoneCenterText3: ; 0x85813 db $0, "TRAINER TIPS", $51 db "Press the START", $4f db "Button to check", $55 db "remaining time!", $57 _SafariZoneRestHouse1Text1: ; 0x85851 db $0, "SARA: Where did", $4f db "my boy friend,", $55 db "ERIK, go?", $57 _SafariZoneRestHouse1Text2: ; 0x8587b db $0, "I'm catching", $4f db "#MON to take", $55 db "home as gifts!", $57 _UnnamedText_4a350: ; 0x858a4 db $0, "Ah! Finally!", $51 db "You're the first", $4f db "person to reach", $55 db "the SECRET HOUSE!", $51 db "I was getting", $4f db "worried that no", $55 db "one would win our", $55 db "campaign prize.", $51 db "Congratulations!", $4f db "You have won!", $58 ; 0x858a4 + 159 bytes _ReceivedHM03Text: ; 0x85943 db $0, $52, " received", $4f db "@" TX_RAM $cf4b db $0, "!@@" ; 0x85957 _HM03ExplanationText: ; 0x85957 db $0, "HM03 is SURF!", $51 db "#MON will be", $4f db "able to ferry you", $55 db "across water!", $51 db "And, this HM isn't", $4f db "disposable! You", $55 db "can use it over", $55 db "and over!", $51 db "You're super lucky", $4f db "for winning this", $55 db "fabulous prize!", $57 ; 0x85957 + 171 bytes _HM03NoRoomText: ; 0x85a02 db $0, "You don't have", $4f db "room for this", $55 db "fabulous prize!", $57 ; 0x85a02 + 45 bytes _SafariZoneRestHouse2Text1: ; 0x85a2f db $0, "Tossing ROCKs at", $4f db "#MON might", $55 db "make them run,", $55 db "but they'll be", $55 db "easier to catch.", $57 _SafariZoneRestHouse2Text2: ; 0x85a7a db $0, "Using BAIT will", $4f db "make #MON", $55 db "easier to catch.", $57 _SafariZoneRestHouse2Text3: ; 0x85aa6 db $0, "I hiked a lot, but", $4f db "I didn't see any", $55 db "#MON I wanted.", $57 _SafariZoneRestHouse3Text1: ; 0x85ad9 db $0, "How many did you", $4f db "catch? I'm bushed", $55 db "from the work!", $57 _SafariZoneRestHouse3Text2: ; 0x85b0b db $0, "I caught a", $4f db "CHANSEY!", $51 db "That makes this", $4f db "all worthwhile!", $57 _SafariZoneRestHouse3Text3: ; 0x85b40 db $0, "Whew! I'm tired", $4f db "from all the fun!", $57 _SafariZoneRestHouse4Text1: ; 0x85b62 db $0, "You can keep any", $4f db "item you find on", $55 db "the ground here.", $51 db "But, you'll run", $4f db "out of time if", $55 db "you try for all", $55 db "of them at once!", $57 _SafariZoneRestHouse4Text2: ; 0x85bd5 db $0, "Go to the deepest", $4f db "part of the", $55 db "SAFARI ZONE. You", $55 db "will win a prize!", $57 _SafariZoneRestHouse4Text3: ; 0x85c17 db $0, "My EEVEE evolved", $4f db "into FLAREON!", $51 db "But, a friend's", $4f db "EEVEE turned into", $55 db "a VAPOREON!", $55 db "I wonder why?", $57 _UnknownDungeon3MewtwoText: ; 0x85c72 db $0, "Mew!@@" ; 0x85c79 _VictoryRoad1BattleText1: ; 0x85c79 db $0, "I wonder if you", $4f db "are good enough", $55 db "for me!", $57 ; 0x85c79 + 41 bytes _VictoryRoad1EndBattleText1: ; 0x85ca2 db $0, "I", $4f db "lost out!", $58 ; 0x85ca2 + 13 bytes _VictoryRoad1AfterBattleText1: ; 0x85caf db $0, "I never wanted to", $4f db "lose to anybody!", $57 ; 0x85caf + 36 bytes _VictoryRoad1BattleText2: ; 0x85cd3 db $0, "I can see you're", $4f db "good! Let me see", $55 db "exactly how good!", $57 ; 0x85cd3 + 52 bytes _VictoryRoad1EndBattleText2: ; 0x85d07 db $0, "I", $4f db "had a chance...", $58 ; 0x85d07 + 19 bytes _VictoryRoad1AfterBattleText2: ; 0x85d1a db $0, "I concede, you're", $4f db "better than me!", $57 ; 0x85d1a + 34 bytes _LanceBeforeBattleText: ; 0x85d3c db $0, "Ah! I heard about", $4f db "you ", $52, "!", $51 db "I lead the ELITE", $4f db "FOUR! You can", $55 db "call me LANCE the", $55 db "dragon trainer!", $51 db "You know that", $4f db "dragons are", $55 db "mythical #MON!", $51 db "They're hard to", $4f db "catch and raise,", $55 db "but their powers", $55 db "are superior!", $51 db "They're virtually", $4f db "indestructible!", $51 db "Well, are you", $4f db "ready to lose?", $51 db "Your LEAGUE", $4f db "challenge ends", $55 db "with me, ", $52, "!", $57 ; 0x85d3c + 296 bytes _LanceEndBattleText: ; 0x85e64 db $0, "That's it!", $51 db "I hate to admit", $4f db "it, but you are a", $55 db "#MON master!", $58 ; 0x85e64 + 58 bytes _LanceAfterBattleText: ; 0x85e9e db $0, "I still can't", $4f db "believe my", $55 db "dragons lost to", $55 db "you, ", $52, "!", $51 db "You are now the", $4f db "#MON LEAGUE", $55 db "champion!", $51 db "...Or, you would", $4f db "have been, but", $55 db "you have one more", $55 db "challenge ahead.", $51 db "You have to face", $4f db "another trainer!", $55 db "His name is...", $51 db $53, "!", $4f db "He beat the ELITE", $55 db "FOUR before you!", $51 db "He is the real", $4f db "#MON LEAGUE", $55 db "champion!@@" ; 0x85e9e + 279 bytes = 0x85fb5 _HallofFameRoomText1: ; 0x85fb5 db $0, "OAK: Er-hem!", $4f db "Congratulations", $55 db $52, "!", $51 db "This floor is the", $4f db "#MON HALL OF", $55 db "FAME!", $51 db "#MON LEAGUE", $4f db "champions are", $55 db "honored for their", $55 db "exploits here!", $51 db "Their #MON are", $4f db "also recorded in", $55 db "the HALL OF FAME!", $51 db $52, "! You have", $4f db "endeavored hard", $55 db "to become the new", $55 db "LEAGUE champion!", $51 db "Congratulations,", $4f db $52, ", you and", $55 db "your #MON are", $55 db "HALL OF FAMERs!", $57 _UnnamedText_760f4: ; 0x860e1 db $0, $53, ": Hey!", $51 db "I was looking", $4f db "forward to seeing", $55 db "you, ", $52, "!", $51 db "My rival should", $4f db "be strong to keep", $55 db "me sharp!", $51 db "While working on", $4f db "#DEX, I looked", $55 db "all over for", $55 db "powerful #MON!", $51 db "Not only that, I", $4f db "assembled teams", $55 db "that would beat", $55 db "any #MON type!", $51 db "And now!", $51 db "I'm the #MON", $4f db "LEAGUE champion!", $51 db $52, "! Do you", $4f db "know what that", $55 db "means?", $51 db "I'll tell you!", $51 db "I am the most", $4f db "powerful trainer", $55 db "in the world!", $57 ; 0x860e1 + 346 bytes _UnnamedText_760f9: ; 0x8623b db $0, "NO!", $4f db "That can't be!", $55 db "You beat my best!", $51 db "After all that", $4f db "work to become", $55 db "LEAGUE champ?", $51 db "My reign is over", $4f db "already?", $55 db "It's not fair!", $58 ; 0x8623b + 121 bytes _UnnamedText_760fe: ; 0x862b4 db $0, "Hahaha!", $4f db "I won, I won!", $51 db "I'm too good for", $4f db "you, ", $52, "!", $51 db "You did well to", $4f db "even reach me,", $55 db $53, ", the", $55 db "#MON genius!", $51 db "Nice try, loser!", $4f db "Hahaha!", $58 ; 0x862b4 + 123 bytes _UnnamedText_76103: ; 0x8632f db $0, "Why?", $4f db "Why did I lose?", $51 db "I never made any", $4f db "mistakes raising", $55 db "my #MON...", $51 db "Darn it! You're", $4f db "the new #MON", $55 db "LEAGUE champion!", $51 db "Although I don't", $4f db "like to admit it.", $57 ; 0x8632f + 146 bytes _GaryText2: ; 0x863c1 db $0, "OAK: ", $52, "!", $57 _UnnamedText_76120: ; 0x863ca db $0, "OAK: So, you won!", $4f db "Congratulations!", $55 db "You're the new", $55 db "#MON LEAGUE", $55 db "champion!", $51 db "You've grown up so", $4f db "much since you", $55 db "first left with", $55 db "@" TX_RAM $cd6d db $0, "!", $51 db $52, ", you have", $4f db "come of age!", $57 ; 0xa86463 _UnnamedText_76125: ; 0x86463 db $0, "OAK: ", $53, "! I'm", $4f db "disappointed!", $51 db "I came when I", $4f db "heard you beat", $55 db "the ELITE FOUR!", $51 db "But, when I got", $4f db "here, you had", $55 db "already lost!", $51 db $53, "! Do you", $4f db "understand why", $55 db "you lost?", $51 db "You have forgotten", $4f db "to treat your", $55 db "#MON with", $55 db "trust and love!", $51 db "Without them, you", $4f db "will never become", $55 db "a champ again!", $57 ; 0x86463 + 260 bytes _UnnamedText_7612a: ; 0x86567 db $0, "OAK: ", $52, "!", $51 db "You understand", $4f db "that your victory", $55 db "was not just your", $55 db "own doing!", $51 db "The bond you share", $4f db "with your #MON", $55 db "is marvelous!", $51 db $52, "!", $4f db "Come with me!", $57 ; 0x86567 + 136 bytes _LoreleiBeforeBattleText: ; 0x865ef db $0, "Welcome to", $4f db "#MON LEAGUE!", $51 db "I am LORELEI of", $4f db "the ELITE FOUR!", $51 db "No one can best", $4f db "me when it comes", $55 db "to icy #MON!", $51 db "Freezing moves", $4f db "are powerful!", $51 db "Your #MON will", $4f db "be at my mercy", $55 db "when they are", $55 db "frozen solid!", $51 db "Hahaha!", $4f db "Are you ready?", $57 ; 0x865ef + 213 bytes _LoreleiEndBattleText: ; 0x866c4 db $0, "How", $4f db "dare you!", $58 ; 0x866c4 + 15 bytes _LoreleiAfterBattleText: ; 0x866d3 db $0, "You're better", $4f db "than I thought!", $55 db "Go on ahead!", $51 db "You only got a", $4f db "taste of #MON", $55 db "LEAGUE power!", $57 ; 0x866d3 + 86 bytes _UnnamedText_7627b: ; 0x86729 db $0, "Someone's voice:", $4f db "Don't run away!", $57 ; 0x86729 + 32 bytes _BrunoBeforeBattleText: ; 0x86749 db $0, "I am BRUNO of", $4f db "the ELITE FOUR!", $51 db "Through rigorous", $4f db "training, people", $55 db "and #MON can", $55 db "become stronger!", $51 db "I've weight", $4f db "trained with", $55 db "my #MON!", $51 db $52, "!", $51 db "We will grind you", $4f db "down with our", $55 db "superior power!", $51 db "Hoo hah!", $57 ; 0x86749 + 188 bytes _BrunoEndBattleText: ; 0x86805 db $0, "Why?", $4f db "How could I lose?", $58 ; 0x86805 + 24 bytes _BrunoAfterBattleText: ; 0x8681d db $0, "My job is done!", $4f db "Go face your next", $55 db "challenge!", $57 ; 0x8681d + 46 bytes _UnnamedText_763d2: ; 0x8684b db $0, "Someone's voice:", $4f db "Don't run away!", $57 ; 0x8684b + 32 bytes _AgathaBeforeBattleText: ; 0x8686b db $0, "I am AGATHA of", $4f db "the ELITE FOUR!", $51 db "OAK's taken a lot", $4f db "of interest in", $55 db "you, child!", $51 db "That old duff was", $4f db "once tough and", $55 db "handsome! That", $55 db "was decades ago!", $51 db "Now he just wants", $4f db "to fiddle with", $55 db "his #DEX! He's", $55 db "wrong! #MON", $55 db "are for fighting!", $51 db $52, "! I'll show", $4f db "you how a real", $55 db "trainer fights!", $57 ; 0x8686b + 261 bytes _AgathaEndBattleText: ; 0x86970 db $0, "Oh ho!", $4f db "You're something", $55 db "special, child!", $58 ; 0x86970 + 40 bytes _AgathaAfterBattleText: ; 0x86998 db $0, "You win! I see", $4f db "what the old duff", $55 db "sees in you now!", $51 db "I have nothing", $4f db "else to say! Run", $55 db "along now, child!", $57 ; 0x86998 + 101 bytes _AgathaText2: ; 0x869fd db $0, "Someone's voice:", $4f db "Don't run away!", $57 ; 0x869fd + 32 bytes _RockTunnel2BattleText2: ; 0x86a1d db $0, "Hikers leave twigs", $4f db "as trail markers.", $57 ; 0x86a1d + 38 bytes _RockTunnel2EndBattleText2: ; 0x86a43 db $0, "Ohhh!", $4f db "I did my best!", $58 ; 0x86a43 + 22 bytes _RockTunnel2AfterBattleText2: ; 0x86a59 db $0, "I want to go ", $4f db "home!", $57 ; 0x86a59 + 21 bytes _RockTunnel2BattleText3: ; 0x86a6e db $0, "Hahaha! Can you", $4f db "beat my power?", $57 ; 0x86a6e + 32 bytes _RockTunnel2EndBattleText3: ; 0x86a8e db $0, "Oops!", $4f db "Out-muscled!", $58 ; 0x86a8e + 20 bytes _RockTunnel2AfterBattleText3: ; 0x86aa2 db $0, "I go for power", $4f db "because I hate", $55 db "thinking!", $57 ; 0x86aa2 + 41 bytes _RockTunnel2BattleText4: ; 0x86acb db $0, "You have a", $4f db "#DEX?", $55 db "I want one too!", $57 ; 0x86acb + 34 bytes _RockTunnel2EndBattleText4: ; 0x86aed db $0, "Shoot!", $4f db "I'm so jealous!", $58 ; 0x86aed + 23 bytes _RockTunnel2AfterBattleText4: ; 0x86b04 db $0, "When you finish", $4f db "your #DEX, can", $55 db "I have it?", $57 ; 0x86b04 + 43 bytes _RockTunnel2BattleText5: ; 0x86b2f db $0, "Do you know about", $4f db "costume players?", $57 ; 0x86b2f + 36 bytes _RockTunnel2EndBattleText5: ; 0x86b53 db $0, "Well,", $4f db "that's that.", $58 ; 0x86b53 + 19 bytes _RockTunnel2AfterBattleText5: ; 0x86b66 db $0, "Costume players", $4f db "dress up as", $55 db "#MON for fun.", $57 ; 0x86b66 + 43 bytes _RockTunnel2BattleText6: ; 0x86b91 db $0, "My #MON", $4f db "techniques will", $55 db "leave you crying!", $57 ; 0x86b91 + 43 bytes _RockTunnel2EndBattleText6: ; 0x86bbc db $0, "I give!", $4f db "You're a better", $55 db "technician!", $58 ; 0x86bbc + 36 bytes _RockTunnel2AfterBattleText6: ; 0x86be0 db $0, "In mountains,", $4f db "you'll often find", $55 db "rock-type #MON.", $57 ; 0x86be0 + 48 bytes _RockTunnel2BattleText7: ; 0x86c10 db $0, "I don't often", $4f db "come here, but I", $55 db "will fight you.", $57 ; 0x86c10 + 47 bytes _RockTunnel2EndBattleText7: ; 0x86c3f db $0, "Oh!", $4f db "I lost!", $58 ; 0x86c3f + 13 bytes _RockTunnel2AfterBattleText7: ; 0x86c4c db $0, "I like tiny", $4f db "#MON, big ones", $55 db "are too scary!", $57 ; 0x86c4c + 43 bytes _RockTunnel2BattleText8: ; 0x86c77 db $0, "Hit me with your", $4f db "best shot!", $57 ; 0x86c77 + 29 bytes _RockTunnel2EndBattleText8: ; 0x86c94 db $0, "Fired", $4f db "away!", $58 ; 0x86c94 + 13 bytes SECTION "bank22",DATA,BANK[$22] _RockTunnel2AfterBattleText8: ; 0x88000 db $0, "I'll raise my", $4f db "#MON to beat", $55 db "yours, kid!", $57 ; 0x88000 + 39 bytes _RockTunnel2BattleText9: ; 0x88027 db $0, "I draw #MON", $4f db "when I'm home.", $57 ; 0x88027 + 27 bytes _RockTunnel2EndBattleText9: ; 0x88042 db $0, "Whew!", $4f db "I'm exhausted!", $58 ; 0x88042 + 21 bytes _RockTunnel2AfterBattleText9: ; 0x88057 db $0, "I'm an artist,", $4f db "not a fighter.", $57 ; 0x88057 + 30 bytes _SeafoamIslands5BattleText2: ; 0x88075 db $0, "Gyaoo!@@" _SeafoamIslands5Text4: ; 0x8807e db $0, "Boulders might", $4f db "change the flow", $55 db "of water!", $57 _SeafoamIslands5Text5: ; 0x880a8 db $0, "DANGER", $4f db "Fast current!", $57 _AIBattleWithdrawText: db 1 dw $D04A db 0," with-",$4F,"drew @",1 dw $CFDA db 0,"!",$58 _AIBattleUseItemText: db 1 dw $D04A db 0,$4F,"used @",1 dw $CD6D db 0,$55,"on @",1 dw $CFDA db 0,"!",$58 _UnnamedText_4160c: ; 0x880ef TX_RAM $cf4b db $0, " went", $4f db "to @" TX_RAM $d887 db $0, ".", $57 ; 0x88103 _UnnamedText_41623: ; 0x88103 db $0, "For ", $52, "'s", $4f db "@" TX_RAM $cf4b db $0, ",", $57 ; 0x88112 _UnnamedText_41628: ; 0x88112 TX_RAM $d887 db $0, " sends", $4f db "@" TX_RAM $cd6d db $0, ".", $57 ; 0x88124 _UnnamedText_41642: ; 0x88124 TX_RAM $d887 db $0, " waves", $4f db "farewell as", $57 _UnnamedText_41647: ; 0x8813b TX_RAM $cd6d db $0, " is", $4f db "transferred.", $57 ; 0x8813b + 21 bytes _UnnamedText_41655: ; 0x88150 db $0, "Take good care of", $4f db "@" ; 0x88150 + 20 bytes UnnamedText_88164: ; 0x88164 TX_RAM $cd6d db $0, ".", $57 ; 0x8816a _UnnamedText_4166c: ; 0x8816a TX_RAM $d887 db $0, " will", $4f db "trade @" ; 0x8816a + 17 bytes UnnamedText_8817b: ; 0x8817b TX_RAM $cd6d db $0, $57 _UnnamedText_41671: ; 0x88180 db $0, "for ", $52, "'s", $4f db "@" TX_RAM $cf4b db $0, ".", $57 ; 0x8818f _UnnamedText_37390: ; 0x8818f db $0, "A slot machine!", $4f db "Want to play?", $57 ; 0x8818f + 31 bytes _UnnamedText_37467: ; 0x881ae db $0, "Darn!", $4f db "Ran out of coins!", $57 ; 0x881ae + 25 bytes _UnnamedText_3746c: ; 0x881c7 db $0, "Bet how many", $4f db "coins?", $57 ; 0x881c7 + 21 bytes _UnnamedText_37471: ; 0x881dc db $0, "Start!", $57 ; 0x881dc + 8 bytes _UnnamedText_37476: ; 0x881e4 db $0, "Not enough", $4f db "coins!", $58 ; 0x881e4 + 19 bytes _UnnamedText_3747b: ; 0x881f7 db $0, "One more ", $4f db "go?", $57 ; 0x881f7 + 15 bytes _UnnamedText_37673: ; 0x88206 db $0, " lined up!", $4f db "Scored @" ; 0x88206 + 20 bytes UnnamedText_8821a: ; 0x8821a TX_RAM $cf4b db $0, " coins!", $57 ; 0x88226 _UnnamedText_3769d: ; 0x88226 db $0, "Not this time!", $58 ; 0x88226 + 16 bytes UnnamedText_88236: ; 0x88236 db $0, "Yeah!@@" ; 0x8823e _UnnamedText_703fa: ; 0x8823e db $0, "#DEX Seen:@" ; 0x8823e + 14 bytes UnnamedText_8824c: ; 0x8824c TX_NUM $cc5b, 1, 3 db $0, $4f db " Owned:@" TX_NUM $cc5c, 1, 3 db $50 ; 0x88267 _UnnamedText_703ff: ; 0x88267 db $0, "#DEX Rating", $6d, $57 ; 0x88267 + 14 bytes _UnnamedText_62453: ; 0x88275 TX_RAM $cf5f db $0, $4f db "#MON GYM", $55 db "LEADER: @" ; 0x88275 + 23 bytes UnnamedText_8828c: ; 0x8828c TX_RAM $cf70 db $0, $51 db "WINNING TRAINERS:", $4f db $53, $57 ; 0x882a5 _UnnamedText_62458: ; 0x882a5 TX_RAM $cf5f db $0, $4f db "#MON GYM", $55 db "LEADER: @" ; 0x882a5 + 23 bytes UnnamedText_882bc: ; 0x882bc TX_RAM $cf70 db $0, $51 db "WINNING TRAINERS:", $4f db $53, $55 db $52, $57 ; 0x882d7 _UnnamedText_624a3: ; 0x882d7 db $0, "#MON CENTERs", $4f db "heal your tired,", $55 db "hurt or fainted", $55 db "#MON!", $57 ; 0x882d7 + 53 bytes _UnnamedText_624a8: ; 0x8830c db $0, "Yawn!", $51 db "When JIGGLYPUFF", $4f db "sings, #MON", $55 db "get drowsy...", $51 db "...Me too...", $4f db "Snore...", $57 ; 0x8830c + 71 bytes _UnnamedText_624ad: ; 0x88353 db $0, "BILL has lots of", $4f db "#MON!", $51 db "He collects rare", $4f db "ones too!", $57 ; 0x88353 + 51 bytes _UnnamedText_624b2: ; 0x88386 db $0, "CUBONEs wear", $4f db "skulls, right?", $51 db "People will pay a", $4f db "lot for one!", $57 ; 0x88386 + 60 bytes _UnnamedText_624b7: ; 0x883c2 db $0, "If you have too", $4f db "many #MON, you", $55 db "should store them", $55 db "via PC!", $57 ; 0x883c2 + 58 bytes _UnnamedText_624bc: ; 0x883fc db $0, "I heard that", $4f db "GHOSTs haunt", $55 db "LAVENDER TOWN!", $57 ; 0x883fc + 42 bytes _UnnamedText_624c1: ; 0x88426 db $0, "I wish I could", $4f db "catch #MON.", $57 ; 0x88426 + 28 bytes _UnnamedText_624c6: ; 0x88442 db $0, "I'm tired from", $4f db "all the fun...", $57 ; 0x88442 + 30 bytes _UnnamedText_624cb: ; 0x88460 db $0, "SILPH's manager", $4f db "is hiding in the", $55 db "SAFARI ZONE.", $57 ; 0x88460 + 46 bytes _UnnamedText_624d0: ; 0x8848e db $0, "It is true that a", $4f db "higher level", $55 db "#MON will be", $55 db "more powerful...", $51 db "But, all #MON", $4f db "will have weak", $55 db "points against", $55 db "specific types.", $51 db "So, there is no", $4f db "universally", $55 db "strong #MON.", $57 ; 0x8848e + 163 bytes _UnnamedText_624d5: ; 0x88531 db $0, "If I had a BIKE,", $4f db "I would go to", $55 db "CYCLING ROAD!", $57 ; 0x88531 + 46 bytes _UnnamedText_624da: ; 0x8855f db $0, "If you're studying ", $4f db "#MON, visit", $55 db "the SAFARI ZONE.", $51 db "It has all sorts", $4f db "of rare #MON.", $57 ; 0x8855f + 80 bytes _UnnamedText_624df: ; 0x885af db $0, "#MON can still", $4f db "learn techniques", $55 db "after canceling", $55 db "evolution.", $51 db "Evolution can wait", $4f db "until new moves", $55 db "have been learned.", $57 ; 0x885af + 114 bytes _UnnamedText_624f8: ; 0x88621 db $0, "It would be great", $4f db "if the ELITE FOUR", $55 db "came and stomped", $55 db "TEAM ROCKET!", $57 ; 0x88621 + 67 bytes _UnnamedText_624fd: ; 0x88664 db $0, "TEAM ROCKET took", $4f db "off! We can go", $55 db "out safely again!", $55 db "That's great!", $57 ; 0x88664 + 64 bytes _UnnamedText_62502: ; 0x886a4 db $0, "My sis brought me", $4f db "on this vacation!", $57 ; 0x886a4 + 37 bytes _UnnamedText_62511: ; 0x886c9 db $0, "Crammed full of", $4f db "#MON books!", $57 ; 0x886c9 + 29 bytes _UnnamedText_1e953: ; 0x886e6 db $0, "A shiny new", $4f db "BICYCLE!", $57 ; 0x886e6 + 22 bytes _UnnamedText_1e960: ; 0x886fc db $0, "Push START to", $4f db "open the MENU!", $57 ; 0x886fc + 30 bytes _UnnamedText_1e97e: ; 0x8871a db $0, "The SAVE option is", $4f db "on the MENU", $55 db "screen.", $57 ; 0x8871a + 40 bytes _UnnamedText_1e983: ; 0x88742 db $0, "All #MON types", $4f db "have strong and", $55 db "weak points", $55 db "against others.", $57 ; 0x88742 + 60 bytes _UnnamedText_1ea0d: ; 0x8877e db $0, "PA: Ding-dong!", $51 db "Time's up!", $58 ; 0x8877e + 26 bytes _UnnamedText_1ea12: ; 0x88798 db $0, "PA: Your SAFARI", $4f db "GAME is over!", $57 ; 0x88798 + 31 bytes _UnnamedText_1ea5b: ; 0x887b7 db $0, "#MON Quiz!", $51 db "Get it right and", $4f db "the door opens to", $55 db "the next room!", $51 db "Get it wrong and", $4f db "face a trainer!", $51 db "If you want to", $4f db "conserve your", $55 db "#MON for the", $55 db "GYM LEADER...", $51 db "Then get it right!", $4f db "Here we go!", $58 ; 0x887b7 + 182 bytes _UnnamedText_1ea6c: ; 0x8886d db $0, "CATERPIE evolves", $4f db "into BUTTERFREE?", $57 ; 0x8886d + 35 bytes _UnnamedText_1ea71: ; 0x88890 db $0, "There are 9", $4f db "certified #MON", $55 db "LEAGUE BADGEs?", $57 ; 0x88890 + 43 bytes _UnnamedText_1ea76: ; 0x888bb db $0, "POLIWAG evolves 3", $4f db "times?", $57 ; 0x888bb + 26 bytes _UnnamedText_1ea7b: ; 0x888d5 db $0, "Are thunder moves", $4f db "effective against", $55 db "ground element-", $55 db "type #MON?", $57 ; 0x888d5 + 64 bytes _UnnamedText_1ea80: ; 0x88915 db $0, "#MON of the", $4f db "same kind and", $55 db "level are not", $55 db "identical?", $57 ; 0x88915 + 52 bytes _UnnamedText_1ea85: ; 0x88949 db $0, "TM28 contains", $4f db "TOMBSTONER?", $57 ; 0x88949 + 27 bytes UnnamedText_88964: ; 0x88964 db $0, "You're absolutely", $4f db "correct!", $51 db "Go on through!@@" ; 0x8898f _UnnamedText_1eb05: ; 0x8898f db $0, "Sorry! Bad call!", $58 ; 0x8898f + 18 bytes _UnnamedText_1eb69: ; 0x889a1 db $0, "#MON magazines!", $51 db "#MON notebooks!", $51 db "#MON graphs!", $57 ; 0x889a1 + 46 bytes _UnnamedText_1ebdd: ; 0x889cf db $0, "TELEPORTER is", $4f db "displayed on the", $55 db "PC monitor.", $57 ; 0x889cf + 44 bytes UnnamedText_889fb: ; 0x889fb db $0, $52, " initiated", $4f db "TELEPORTER's Cell", $55 db "Separator!@@" ; 0x88a25 _UnnamedText_1ec7f: ; 0x88a25 db $0, "BILL's favorite", $4f db "#MON list!", $58 ; 0x88a25 + 27 bytes _UnnamedText_1ecaa: ; 0x88a40 db $0, "Which #MON do", $4f db "you want to see?", $57 ; 0x88a40 + 32 bytes _UnnamedText_1ecbd: ; 0x88a60 db $0, "There's an e-mail", $4f db "message here!", $51 db "...", $51 db "Calling all", $4f db "#MON trainers!", $51 db "The elite trainers", $4f db "of #MON LEAGUE", $55 db "are ready to take", $55 db "on all comers!", $51 db "Bring your best", $4f db "#MON and see", $55 db "how you rate as a", $55 db "trainer!", $51 db "#MON LEAGUE HQ", $4f db "INDIGO PLATEAU", $51 db "PS: PROF.OAK,", $4f db "please visit us!", $55 db "...", $57 ; 0x88a60 + 251 bytes _UnnamedText_2ff32: ; 0x88b5b db $0, "A COIN CASE is", $4f db "required!", $57 ; 0x88b5b + 26 bytes _UnnamedText_2ff37: ; 0x88b75 db $0, "You don't have", $4f db "any coins!", $57 ; 0x88b75 + 26 bytes _UnnamedText_37e79: ; 0x88b8f db $0, "OUT OF ORDER", $4f db "This is broken.", $57 ; 0x88b8f + 30 bytes _UnnamedText_37e7e: ; 0x88bad db $0, "OUT TO LUNCH", $4f db "This is reserved.", $57 ; 0x88bad + 32 bytes _UnnamedText_37e83: ; 0x88bcd db $0, "Someone's keys!", $4f db "They'll be back.", $57 ; 0x88bcd + 32 bytes _UnnamedText_21865: ; 0x88bed db $0, "Just a moment.", $57 ; 0x88bed + 16 bytes UnnamedText_88bfd: ; 0x88bfd db $0, "It's a pamphlet", $4f db "on TMs.", $51 db "...", $51 db "There are 50 TMs", $4f db "in all.", $51 db "There are also 5", $4f db "HMs that can be", $55 db "used repeatedly.", $51 db "SILPH CO.@@" ; 0x88c6f _UnnamedText_529e9: ; 0x88c6f db $0, "Turn the page?", $57 ; 0x88c6f + 16 bytes UnnamedText_88c7f: ; 0x88c7f db $0, "GIRL: Hey! Don't", $4f db "look at my notes!@@" ; 0x88ca3 _UnnamedText_529f4: ; 0x88ca3 db $0, "Looked at the", $4f db "notebook!", $51 db "First page...", $51 db "# BALLs are", $4f db "used to catch", $55 db "#MON.", $51 db "Up to 6 #MON", $4f db "can be carried.", $51 db "People who raise", $4f db "and make #MON", $55 db "fight are called", $55 db "#MON trainers.", $58 ; 0x88ca3 + 163 bytes _UnnamedText_529f9: ; 0x88d46 db $0, "Second page...", $51 db "A healthy #MON", $4f db "may be hard to", $55 db "catch, so weaken", $55 db "it first!", $51 db "Poison, burns and", $4f db "other damage are", $55 db "effective!", $58 ; 0x88d46 + 119 bytes _UnnamedText_529fe: ; 0x88dbd db $0, "Third page...", $51 db "#MON trainers", $4f db "seek others to", $55 db "engage in #MON", $55 db "fights.", $51 db "Battles are", $4f db "constantly fought", $55 db "at #MON GYMs.", $58 ; 0x88dbd + 111 bytes _UnnamedText_52a03: ; 0x88e2c db $0, "Fourth page...", $51 db "The goal for", $4f db "#MON trainers", $55 db "is to beat the ", $55 db "top 8 #MON", $55 db "GYM LEADERs.", $51 db "Do so to earn the", $4f db "right to face...", $51 db "The ELITE FOUR of", $4f db "#MON LEAGUE!", $58 ; 0x88e2c + 149 bytes _UnnamedText_52a10: ; 0x88ec1 db $0, "Enemies on every", $4f db "side!", $57 ; 0x88ec1 + 24 bytes _UnnamedText_52a1d: ; 0x88ed9 db $0, "What goes around", $4f db "comes around!", $57 ; 0x88ed9 + 32 bytes _UnnamedText_52a2a: ; 0x88ef9 db $0, "FIGHTING DOJO", $57 ; 0x88ef9 + 15 bytes _UnnamedText_52a3d: ; 0x88f08 db $0, "INDIGO PLATEAU", $4f db "#MON LEAGUE HQ", $57 ; 0x88f08 + 31 bytes _UnnamedText_5db81: ; 0x88f27 db $0, $52, " is", $4f db "playing the SNES!", $55 db "...Okay!", $55 db "It's time to go!", $57 ; 0x88f27 + 49 bytes _UnnamedText_5dba8: ; 0x88f58 db $0, "Looked into the", $4f db "binoculars...", $51 db "A large, shining", $4f db "bird is flying", $55 db "toward the sea.", $57 ; 0x88f58 + 79 bytes _UnnamedText_5dbbe: ; 0x88fa7 db $0, "AERODACTYL Fossil", $4f db "A primitive and", $55 db "rare #MON.", $57 ; 0x88fa7 + 46 bytes _UnnamedText_5dbd4: ; 0x88fd5 db $0, "KABUTOPS Fossil", $4f db "A primitive and", $55 db "rare #MON.", $57 ; 0x88fd5 + 44 bytes _UnnamedText_5dc9e: ; 0x89001 db $0, "TRAINER TIPS", $51 db "Using a Game Link", $4f db "Cable", $58 ; 0x89001 + 38 bytes _UnnamedText_5dca3: ; 0x89027 db $0, "Which heading do", $4f db "you want to read?", $57 ; 0x89027 + 36 bytes _UnnamedText_5dcde: ; 0x8904b db $0, "When you have", $4f db "linked your GAME", $55 db "BOY with another", $55 db "GAME BOY, talk to", $55 db "the attendant on", $55 db "the right in any", $55 db "#MON CENTER.", $58 ; 0x8904b + 114 bytes _UnnamedText_5dce3: ; 0x890bd db $0, "COLOSSEUM lets", $4f db "you play against", $55 db "a friend.", $58 ; 0x890bd + 43 bytes _UnnamedText_5dce8: ; 0x890e8 db $0, "TRADE CENTER is", $4f db "used for trading", $55 db "#MON.", $58 ; 0x890e8 + 40 bytes _UnnamedText_5dda2: ; 0x89110 db $0, "The blackboard", $4f db "describes #MON", $55 db "STATUS changes", $55 db "during battles.", $58 ; 0x89110 + 62 bytes _UnnamedText_5dda7: ; 0x8914e db $0, "Which heading do", $4f db "you want to read?", $57 ; 0x8914e + 36 bytes _UnnamedText_5ddd6: ; 0x89172 db $0, "A #MON can't", $4f db "attack if it's", $55 db "asleep!", $51 db "#MON will stay", $4f db "asleep even after", $55 db "battles.", $51 db "Use AWAKENING to", $4f db "wake them up!", $58 ; 0x89172 + 108 bytes _UnnamedText_5dddb: ; 0x891de db $0, "When poisoned, a", $4f db "#MON's health", $55 db "steadily drops.", $51 db "Poison lingers", $4f db "after battles.", $51 db "Use an ANTIDOTE", $4f db "to cure poison!", $58 ; 0x891de + 109 bytes _UnnamedText_5dde0: ; 0x8924b db $0, "Paralysis could", $4f db "make #MON", $55 db "moves misfire!", $51 db "Paralysis remains", $4f db "after battles.", $51 db "Use PARLYZ HEAL", $4f db "for treatment!", $58 ; 0x8924b + 106 bytes _UnnamedText_5dde5: ; 0x892b5 db $0, "A burn reduces", $4f db "power and speed.", $55 db "It also causes", $55 db "ongoing damage.", $51 db "Burns remain", $4f db "after battles.", $51 db "Use BURN HEAL to", $4f db "cure a burn!", $58 ; 0x892b5 + 122 bytes _UnnamedText_5ddea: ; 0x8932f db $0, "If frozen, a", $4f db "#MON becomes", $55 db "totally immobile!", $51 db "It stays frozen", $4f db "even after the", $55 db "battle ends.", $51 db "Use ICE HEAL to", $4f db "thaw out #MON!", $58 ; 0x8932f + 120 bytes _UnnamedText_5ddf7: ; 0x893a7 db $0, "Nope, there's", $4f db "only trash here.", $57 ; 0x893a7 + 31 bytes UnnamedText_893c6: ; 0x893c6 db $0, "Hey! There's a", $4f db "switch under the", $55 db "trash!", $55 db "Turn it on!", $51 db "The 1st electric", $4f db "lock opened!@@" ; 0x89418 _UnnamedText_5dedb: ; 0x89418 db $0, "Hey! There's", $4f db "another switch", $55 db "under the trash!", $55 db "Turn it on!", $58 ; 0x89418 + 57 bytes UnnamedText_89451: ; 0x89451 db $0, "The 2nd electric", $4f db "lock opened!", $51 db "The motorized door", $4f db "opened!@@" ; 0x89451 + 59 bytes = 0x8948c UnnamedText_8948c: ; 0x8948c db $0, "Nope! There's", $4f db "only trash here.", $55 db "Hey! The electric", $55 db "locks were reset!@@" ; 0x8948c + 68 bytes = 0x894d0 UnnamedText_894d0: ; 0x894d0 db $0, $52, " found", $4f db "@" TX_RAM $cd6d db $0, "!@@" ; 0x894e1 _UnnamedText_76794: ; 0x894e1 db $0, "But, ", $52, " has", $4f db "no more room for", $55 db "other items!", $57 ; 0x894e1 + 42 bytes UnnamedText_8950b: ; 0x8950b db $0, $52, " found", $4f db "@" db $2, $a0, $ff, $c2 ; XXX $2 db $0, " coins!@@" ; 0x89523 UnnamedText_89523: ; 0x89523 db $0, $52, " found", $4f db "@" db $2, $a0, $ff, $c2 ; XXX $2 probably coins db $0, " coins!@@" ; 0x8953a _UnnamedText_76852: ; 0x8953b db $0, $51 db "Oops! Dropped", $4f db "some coins!", $57 ; 0x8953b + 28 bytes _UnnamedText_fbd9: ; 0x89557 db $0, "INDIGO PLATEAU", $58 ; 0x89557 + 16 bytes _UnnamedText_fbde: ; 0x89567 db $0, "The ultimate goal", $4f db "of trainers!", $55 db "#MON LEAGUE HQ", $57 ; 0x89567 + 47 bytes _UnnamedText_fbe3: ; 0x89596 db $0, "The highest", $4f db "#MON authority", $55 db "#MON LEAGUE HQ", $57 ; 0x89596 + 43 bytes _UnnamedText_fc03: ; 0x895c1 db $0, "Crammed full of", $4f db "#MON books!", $57 ; 0x895c1 + 29 bytes _UnnamedText_fc08: ; 0x895de db $0, "It's a sculpture", $4f db "of DIGLETT.", $57 ; 0x895de + 29 bytes _UnnamedText_fc0d: ; 0x895fb db $0, "This is an", $4f db "elevator.", $57 ; 0x895fb + 22 bytes UnnamedText_89611: ; 0x89611 db $0, "A TOWN MAP.@@" ; 0x89611 + 14 bytes = 0x8961f _UnnamedText_fc45: ; 0x8961f db $0, "Wow! Tons of", $4f db "#MON stuff!", $57 ; 0x8961f + 26 bytes _UnnamedText_3c1a8: ; 0x89639 db $0, "PA: Ding-dong!", $51 db "You are out of", $4f db "SAFARI BALLs!", $58 ; 0x89639 + 45 bytes _UnnamedText_3c229: ; 0x89666 db $0, "Wild @" TX_RAM $cfda db $0, $4f db "ran!", $58 ; 0x89666 + 17 bytes = 0x89677 _UnnamedText_3c22e: ; 0x89677 db $0, "Enemy @" TX_RAM $cfda db $0, $4f db "ran!", $58 ; 0x89677 + 18 bytes = 0x89689 _UnnamedText_3c42e: ; 0x89689 db $0, $5a, "'s", $4f db "hurt by poison!", $58 ; 0x89689 + 20 bytes _UnnamedText_3c433: ; 0x8969d db $0, $5a, "'s", $4f db "hurt by the burn!", $58 ; 0x8969d + 22 bytes _UnnamedText_3c438: ; 0x896b3 db $0, "LEECH SEED saps", $4f db $5a, "!", $58 ; 0x896b3 + 20 bytes _UnnamedText_3c63e: ; 0x896c7 db $0, "Enemy @" TX_RAM $cfda db $0, $4f db "fainted!", $58 ; 0x896c7 + 22 bytes = 0x896dd _UnnamedText_3c6e4: ; 0x896dd db $0, $52, " got ", $f0, "@" ;XXX $2 db $2, $79, $d0, $c3 db $0, $4f db "for winning!", $58 ; 0x896f9 _UnnamedText_3c6e9: ; 0x896f9 db $0, $52, " defeated", $4f db "@" TX_RAM $d04a ; 0x89706 db $0, "!", $58 ; 0x896f9 + 19 bytes = 0x8970c _UnnamedText_3c796: ; 0x8970c TX_RAM $d009 db $0, $4f db "fainted!", $58 ; 0x8970c + 14 bytes _UnnamedText_3c7d3: ; 0x8971a db $0, "Use next #MON?", $57 ; 0x8971a + 16 bytes _UnnamedText_3c884: ; 0x8972a db $0, $53, ": Yeah! Am", $4f db "I great or what?", $58 ; 0x8972a + 30 bytes _UnnamedText_3c889: ; 0x89748 db $0, $52, " is out of", $4f db "useable #MON!", $51 db $52, " blacked", $4f db "out!", $58 ; 0x89748 + 42 bytes _UnnamedText_3c88e: ; 0x89772 db $0, $52, " lost to", $4f db "@" TX_RAM $d04a ; 0x8977e db $0, "!", $58 ; 0x89772 + 18 bytes = 0x89784 _TrainerAboutToUseText: db 1 dw $D04A db 0," is",$4F db "about to use",$55,"@",1 dw $CFDA db 0,"!",$51 db "Will ",$52,$4F db "change #MON?",$57 _TrainerSentOutText: db 1 dw $D04A db 0," sent",$4F db "out @",1 dw $CFDA db 0,"!",$57 _UnnamedText_3cab4: ; 0x897c9 db $0, "There's no will", $4f db "to fight!", $58 ; 0x897c9 + 26 bytes _UnnamedText_3cb97: ; 0x897e3 db $0, "Can't escape!", $58 ; 0x897e3 + 14 bytes _UnnamedText_3cb9c: ; 0x897f1 db $0, "No! There's no", $4f db "running from a", $55 db "trainer battle!", $58 ; 0x897f1 + 46 bytes _UnnamedText_3cba1: ; 0x8981f db $0, "Got away safely!", $58 ; 0x8981f + 18 bytes _UnnamedText_3d0c5: ; 0x89831 db $0, "Items can't be", $4f db "used here.", $58 ; 0x89831 + 26 bytes _UnnamedText_3d1f5: ; 0x8984b TX_RAM $d009 db $0, " is", $4f db "already out!", $58 ; 0x8984b + 21 bytes _UnnamedText_3d3ae: ; 0x89860 db $0, "No PP left for", $4f db "this move!", $58 ; 0x89860 + 27 bytes _UnnamedText_3d3b3: ; 0x8987b db $0, "The move is", $4f db "disabled!", $58 ; 0x8987b + 23 bytes _UnnamedText_3d430: ; 0x89892 TX_RAM $d009 db $0, " has no", $4f db "moves left!", $57 ; 0x89892 + 24 bytes _MultiHitText: db 0,"Hit the enemy",$4F,"@" TX_NUM W_NUMHITS,1,1 db 0," times!",$58 _ScaredText: db 1 dw $D009 db 0," is too",$4F db "scared to move!",$58 _GetOutText: db 0,"GHOST: Get out...",$4F db "Get out...",$58 _FastAsleepText: db 0,$5A,$4F db "is fast asleep!",$58 _WokeUpText: db 0,$5A,$4F db "woke up!",$58 _FrozenText: db 0,$5A,$4F db "is frozen solid!",$58 _FullyParalyzedText: db 0,$5A,"'s",$4F db "fully paralyzed!",$58 _FlinchedText: db 0,$5A,$4F db "flinched!",$58 _MustRechargeText: db 0,$5A,$4F db "must recharge!",$58 _DisabledNoMoreText: db 0,$5A,"'s",$4F db "disabled no more!",$58 _IsConfusedText: db 0,$5A,$4F db "is confused!",$58 _HurtItselfText: db 0,"It hurt itself in",$4F db "its confusion!",$58 _ConfusedNoMoreText: db 0,$5A,"'s",$4F db "confused no more!",$58 _SavingEnergyText: db 0,$5A,$4F db "is saving energy!",$58 _UnleashedEnergyText: db 0,$5A,$4F db "unleashed energy!",$58 _ThrashingAboutText: db 0,$5A,"'s",$4F db "thrashing about!",$57 _AttackContinuesText: db 0,$5A,"'s",$4F db "attack continues!",$57 _CantMoveText: db 0,$5A,$4F db "can't move!",$58 _UnnamedText_3daa8: ; 0x89a29 db $0, $5a, "'s", $4f db "@" ; 0x89a29 + 5 bytes UnnamedText_89a2e: ; 0x89a2e TX_RAM $cd6d db $0, " is", $55 db "disabled!", $58 ; 0x89a2e + 18 bytes = 0x89a40 UnnamedText_89a40: ; 0x89a40 db $0, $5a, "@@" ; 0x89a40 + 4 bytes = 0x89a44 UnnamedText_89a44: ; 0x89a44 db $0, $4f db "used @@" ; 0x89a44 + 9 bytes = 0x89a4d UnnamedText_89a4d: ; 0x89a4d db $0, $4f db "used @@" ; 0x89a4d + 9 bytes = 0x89a56 UnnamedText_89a56: ; 0x89a56 db $0, "instead,", $55 db "@@" ; 0x89a56 + 12 bytes = 0x89a62 UnnamedText_89a62: ; 0x89a62 TX_RAM $cf4b db $0, "@" ; 0x89a62 + 5 bytes = 0x89a67 _UnnamedText_3db6c: ; 0x89a67 db $0, "!", $57 ; 0x89a67 + 3 bytes _UnnamedText_3db71: ; 0x89a6a db $0, "!", $57 ; 0x89a6a + 3 bytes _UnnamedText_3db76: ; 0x89a6d db $0, "!", $57 ; 0x89a6d + 3 bytes _UnnamedText_3db7b: ; 0x89a70 db $0, "!", $57 ; 0x89a70 + 3 bytes _UnnamedText_3db80: ; 0x89a73 db $0, "!", $57 ; 0x89a73 + 3 bytes _UnnamedText_3dc42: ; 0x89a76 db $0, $5a, "'s", $4f db "attack missed!", $58 ; 0x89a76 + 19 bytes _UnnamedText_3dc47: ; 0x89a89 db $0, $5a, $4f db "kept going and", $55 db "crashed!", $58 ; 0x89a89 + 27 bytes _UnnamedText_3dc4c: ; 0x89aa4 db $0, $59, "'s", $4f db "unaffected!", $58 ; 0x89aa4 + 16 bytes _UnnamedText_3dc57: ; 0x89ab4 db $0, "It doesn't affect", $4f db $59, "!", $58 ; 0x89ab4 + 21 bytes _UnnamedText_3dc7e: ; 0x89ac9 db $0, "Critical hit!", $58 ; 0x89ac9 + 15 bytes _UnnamedText_3dc83: ; 0x89ad8 db $0, "One-hit KO!", $58 ; 0x89ad8 + 13 bytes _UnnamedText_3ddb6: ; 0x89ae5 TX_RAM $d009 db $0, " is", $4f db "loafing around.", $58 ; 0x89ae5 + 24 bytes _UnnamedText_3ddbb: ; 0x89afd TX_RAM $d009 db $0, " began", $4f db "to nap!", $58 ; 0x89afd + 19 bytes _UnnamedText_3ddc0: ; 0x89b10 TX_RAM $d009 db $0, " won't", $4f db "obey!", $58 ; 0x89b10 + 16 bytes _UnnamedText_3ddc5: ; 0x89b20 TX_RAM $d009 db $0, " turned", $4f db "away!", $58 ; 0x89b20 + 18 bytes _UnnamedText_3ddca: ; 0x89b32 TX_RAM $d009 db $0, $4f db "ignored orders!", $58 ; 0x89b32 + 21 bytes _SubstituteTookDamageText: ; 0x89b47 db $0, "The SUBSTITUTE", $4f db "took damage for", $55 db $59, "!", $58 ; 0x89b47 + 35 bytes _SubstituteBrokeText: ; 0x89b6a db $0, $59, "'s", $4f db "SUBSTITUTE broke!", $58 ; 0x89b6a + 22 bytes _BuildingRageText: ; 0x89b80 db $0, $5a, "'s", $4f db "RAGE is building!", $58 ; 0x89b80 + 22 bytes _MirrorMoveFailedText: ; 0x89b96 db $0, "The MIRROR MOVE", $4e, "failed!", $58 ; 0x89b96 + 25 bytes _UnnamedText_3e887: ; 0x89baf db $0, "Hit @" ; 0x89baf + 6 bytes UnnamedText_89bb5: ; 0x89bb5 TX_NUM $cd05, 1, 1 db $0, " times!", $58 ; 0x89bb5 + 13 bytes = 0x89bc2 UnnamedText_89bc2: ; 0x89bc2 TX_RAM $cd6d db $0, " gained", $4f db "@@" ; 0x89bc2 + 14 bytes = 0x89bd0 UnnamedText_89bd0: ; 0x89bd0 db $0, "with EXP.ALL,", $55 db "@@" ; 0x89bd0 + 17 bytes = 0x89be1 UnnamedText_89be1: ; 0x89be1 db $0, "a boosted", $55 db "@@" _UnnamedText_554d8: TX_NUM $cf4b, 2, 4 db $0, " EXP. Points!", $58 ; 0x89be1 + 32 bytes = 0x89c01 UnnamedText_89c01: ; 0x89c01 TX_RAM $cd6d db $0, " grew", $4f db "to level @" TX_NUM $d127, 1, 3 db $0, "!@@" ; 0x89c01 + 28 bytes = 0x89c1d _UnnamedText_58e3b: ; 0x89c1d db $0, "Wild @" TX_RAM $cfda db $0, $4f db "appeared!", $58 ; 0x89c1d + 22 bytes _UnnamedText_58e40: ; 0x89c33 db $0, "The hooked", $4f db "@" TX_RAM $cfda db $0, $55 db "attacked!", $58 ; 0x89c33 + 28 bytes _UnnamedText_58e45: ; 0x89c4f TX_RAM $cfda db $0, $4f db "appeared!", $58 ; 0x89c4f + 15 bytes _UnnamedText_58e4a: ; 0x89c5e TX_RAM $d04a db $0, " wants", $4f db "to fight!", $58 ; 0x89c5e + 21 bytes _UnnamedText_58e4f: ; 0x89c73 db $0, "SILPH SCOPE", $4f db "unveiled the", $55 db "GHOST's identity!", $58 ; 0x89c73 + 43 bytes _UnnamedText_58e54: ; 0x89c9e db $0, "Darn! The GHOST", $4f db "can't be ID'd!", $58 ; 0x89c9e + 30 bytes UnknownText_89cbc: ; 0x89cbc db $0, "Go! @@" ; 0x89cbc + 7 bytes db $0, "Do it! @@" ; 0x89cc3 + 10 bytes db $0, "Get'm! @@" ; 0x89ccd + 9 bytes UnknownText_89cd6: ; 0x89cd6 db $0, "The enemy's weak!", $4f db "Get'm! @@" ; 0x89cd6 + 26 bytes _UnnamedText_58ecc: ; 0x89cf0 TX_RAM $d009 db $0, "!", $57 ; 0x89cf0 + 6 bytes TX_RAM $d009 db $0, " @@" db $0, "enough!@@" ; 0x89cf0 + 23 bytes _UnnamedText_89d07: ; 0x8d907 db $0, "OK!@@" ; 0x8d907 + 6 UnknownText_89d0d: ; 0x89d0d db $0, "good!@@" ; 0x89d0d + 8 bytes _UnnamedText_58f3e: ; 0x89d15 db $0, $4f db "Come back!", $57 ; 0x89d15 + 13 bytes _UnnamedText_2fb8e: ; 0x89d22 db $0, "It's super", $4f db "effective!", $58 ; 0x89d22 + 22 bytes _UnnamedText_2fb93: ; 0x89d38 db $0, "It's not very", $4f db "effective...", $58 ; 0x89d38 + 27 bytes SafariZoneEatingText: ; 0x89d53 db $0, "Wild @" TX_RAM $cfda db $0, $4f db "is eating!", $58 ; 0x89d53 + 23 bytes SafariZoneAngryText: ; 0x89d6a db $0, "Wild @" TX_RAM $cfda db $0, $4f db "is angry!", $58 ; 0x89d6a + 22 bytes ; money related ; XXX $2 BCD macro ; $2, pointer, byte _UnnamedText_1386b: ; 0x89d80 db $0, $52, " picked up", $4f db $f0, "@" db $2, $e5, $cc, $c3 db $0, "!", $58 _UnnamedText_1c9c1: ; 0x89d96 db $0, "Clear all saved", $4f db "data?", $57 ; 0x89d96 + 23 bytes _UnnamedText_1ca14: ; 0x89dad db $0, "Which floor do", $4f db "you want? ", $57 ; 0x89dad + 27 bytes _PartyMenuNormalText: ; 0x89dc8 db $0, "Choose a #MON.", $57 ; 0x89dc8 + 16 bytes _PartyMenuItemUseText: ; 0x89dd8 db $0, "Use item on which", $4f db "#MON?", $57 ; 0x89dd8 + 25 bytes _PartyMenuBattleText: ; 0x89df1 db $0, "Bring out which", $4f db "#MON?", $57 ; 0x89df1 + 23 bytes _PartyMenuUseTMText: ; 0x89e08 db $0, "Use TM on which", $4f db "#MON?", $57 ; 0x89e08 + 23 bytes _PartyMenuSwapMonText: ; 0x89e1f db $0, "Move #MON", $4f db "where?", $57 ; 0x89e1f + 18 bytes _PotionText: ; 0x89e31 TX_RAM $cd6d db $0, $4f db "recovered by @" TX_NUM $cefd, 2, 3 db $0, "!", $57 ; 0x89e31 + 26 bytes _AntidoteText: ; 0x89e4b TX_RAM $cd6d db $0, " was", $4f db "cured of poison!", $57 ; 0x89e4b + 26 bytes _ParlyzHealText: ; 0x89e65 TX_RAM $cd6d db $0, "'s", $4f db "rid of paralysis!", $57 ; 0x89e65 + 24 bytes _BurnHealText: ; 0x89e7d TX_RAM $cd6d db $0, "'s", $4f db "burn was healed!", $57 ; 0x89e7d + 23 bytes _IceHealText: ; 0x89e94 TX_RAM $cd6d db $0, " was", $4f db "defrosted!", $57 ; 0x89e94 + 20 bytes _AwakeningText: ; 0x89ea8 TX_RAM $cd6d db $0, $4f db "woke up!", $57 ; 0x89ea8 + 14 bytes _FullHealText: ; 0x89eb6 TX_RAM $cd6d db $0, "'s", $4f db "health returned!", $57 ; 0x89eb6 + 23 bytes _ReviveText: ; 0x89ecd TX_RAM $cd6d db $0, $4f db "is revitalized!", $57 ; 0x89ecd + 21 bytes _RareCandyText: ; 0x89ee2 TX_RAM $cd6d db $0, " grew", $4f db "to level @" TX_NUM $d127, $1,$3 db $0, "!@@" ; 0x89ee2 + 28 bytes _UnnamedText_17f23: ; 0x89efe db $0, $52, " turned on", $4f db "the PC.", $58 ; 0x89efe + 21 bytes _UnnamedText_17f28: ; 0x89f13 db $0, "Accessed BILL's", $4f db "PC.", $51 db "Accessed #MON", $4f db "Storage System.", $58 ; 0x89f13 + 50 bytes _UnnamedText_17f2d: ; 0x89f45 db $0, "Accessed someone's", $4f db "PC.", $51 db "Accessed #MON", $4f db "Storage System.", $58 ; 0x89f45 + 53 bytes _UnnamedText_17f32: ; 0x89f7a db $0, "Accessed my PC.", $51 db "Accessed Item", $4f db "Storage System.", $58 ; 0x89f7a + 47 bytes _UnnamedText_7b22: ; 0x89fa9 db $0, $52, " turned on", $4f db "the PC.", $58 ; 0x89fa9 + 21 bytes _UnnamedText_7b27: ; 0x89fbe db $0, "What do you want", $4f db "to do?", $57 ; 0x89fbe + 25 bytes _UnnamedText_7b2c: ; 0x89fd7 db $0, "What do you want", $4f db "to deposit?", $57 ; 0x89fd7 + 30 bytes _UnnamedText_7b31: ; 0x89ff5 db $0, "How many?", $57 ; 0x89ff5 + 11 bytes _UnnamedText_7b36: ; 0x8a000 TX_RAM $cd6d db $0, " was", $4f db "stored via PC.", $58 ; 0x8a000 + 24 bytes _UnnamedText_7b3b: ; 0x8a018 db $0, "You have nothing", $4f db "to deposit.", $58 ; 0x8a018 + 30 bytes _UnnamedText_7b40: ; 0x8a036 db $0, "No room left to", $4f db "store items.", $58 ; 0x8a036 + 30 bytes _UnnamedText_7b45: ; 0x8a054 db $0, "What do you want", $4f db "to withdraw?", $57 ; 0x8a054 + 31 bytes _UnnamedText_7b4a: ; 0x8a073 db $0, "How many?", $57 ; 0x8a073 + 11 bytes _UnnamedText_7b4f: ; 0x8a07e db $0, "Withdrew", $4f db "@" TX_RAM $cd6d db $0, ".", $58 ; 0x8a07e + 17 bytes _UnnamedText_7b54: ; 0x8a08f db $0, "There is nothing", $4f db "stored.", $58 ; 0x8a08f + 26 bytes _UnnamedText_7b59: ; 0x8a0a9 db $0, "You can't carry", $4f db "any more items.", $58 ; 0x8a0a9 + 32 bytes _UnnamedText_7b5e: ; 0x8a0c9 db $0, "What do you want", $4f db "to toss away?", $57 ; 0x8a0c9 + 32 bytes _UnnamedText_7b63: ; 0x8a0e9 db $0, "How many?", $57 ; 0x8a0e9 + 11 bytes _UnnamedText_76683: ; 0x8a0f4 db $0, "Accessed #MON", $4f db "LEAGUE's site.", $51 db "Accessed the HALL", $4f db "OF FAME List.", $58 ; 0x8a0f4 + 61 bytes _UnnamedText_217e9: ; 0x8a131 db $0, "Switch on!", $58 ; 0x8a131 + 12 bytes _UnnamedText_217ee: ; 0x8a13d db $0, "What?", $57 ; 0x8a13d + 7 bytes _UnnamedText_217f3: ; 0x8a144 db $0, "Deposit which", $4f db "#MON?", $57 ; 0x8a144 + 21 bytes _UnnamedText_217f8: ; 0x8a159 TX_RAM $cf4b db $0, " was", $4f db "stored in Box @" TX_RAM $cd3d db $0, ".", $58 ; 30 bytes _UnnamedText_217fd: ; 0x8a177 db $0, "You can't deposit", $4f db "the last #MON!", $58 ; 0x8a177 + 33 bytes _UnnamedText_21802: ; 0x8a198 db $0, "Oops! This Box is", $4f db "full of #MON.", $58 ; 0x8a198 + 33 bytes _UnnamedText_21807: ; 0x8a1b9 TX_RAM $cf4b db $0, " is", $4f db "taken out.", $55 db "Got @" ; 0x8a1b9 + 24 bytes UnknownText_8a1d1: ; 0x8a1d1 TX_RAM $cf4b db $0, ".", $58 ; 0x8a1d1 + 6 bytes _UnnamedText_2180c: ; 0x8a1d7 db $0, "What? There are", $4f db "no #MON here!", $58 ; 0x8a1d7 + 31 bytes _UnnamedText_21811: ; 0x8a1f6 db $0, "You can't take", $4f db "any more #MON.", $51 db "Deposit #MON", $4f db "first.", $58 ; 0x8a1f6 + 50 bytes _UnnamedText_21816: ; 0x8a228 db $0, "Release which", $4f db "#MON?", $57 ; 0x8a228 + 21 bytes _UnnamedText_2181b: ; 0x8a23d db $0, "Once released,", $4f db "@" ; 0x8a23d + 17 bytes UnknownText_8a24e: ; 0x8a24e TX_RAM $cf4b db $0, " is", $55 db "gone forever. OK?", $57 ; 0x8a24e + 26 bytes _UnnamedText_21820: ; 0x8a268 TX_RAM $cf4b db $0, " was", $4f db "released outside.", $55 db "Bye @" ; 0x8a268 + 32 bytes _UnnamedText_8a288: ; 0x8a288 TX_RAM $cf4b db $0, "!", $58 _RequireCoinCaseText: ; 22:628E db 0,"A COIN CASE is",$4F db "required!@@" _ExchangeCoinsForPrizesText: ; 22:62A9 db 0,"We exchange your",$4F db "coins for prizes.",$58 _WhichPrizeText: ; 22:62CD db 0,"Which prize do",$4F db "you want?",$57 _HereYouGoText: ; 22:62E7 db 0,"Here you go!@@" _SoYouWantPrizeText: ; 22:62F6 db 0,"So, you want",$4F db "@" db 1 dw $CD6D db 0,"?",$57 _SorryNeedMoreCoins: ; 22:630B db 0,"Sorry, you need",$4F db "more coins.@@" _OopsYouDontHaveEnoughRoomText: ; 22:6329 db 0,"Oops! You don't",$4F db "have enough room.@@" _OhFineThenText: ; 22:634C db 0,"Oh, fine then.@@" ;635d _UnnamedText_1e93b: ; 0x8a35d db $0, "Want to get your", $4f db "#DEX rated?", $57 ; 0x8a35d + 30 bytes UnknownText_8a37b: ; 0x8a37b db $0, "Closed link to", $4f db "PROF.OAK's PC.@@" ; 0x8a37b + 31 bytes _UnnamedText_1e946: ; 0x8a39a db $0, "Accessed PROF.", $4f db "OAK's PC.", $51 db "Accessed #DEX", $4f db "Rating System.", $58 ; 0x8a39a + 54 bytes _UnnamedText_5d43: ; 0x8a3d0 db $0, "Where would you", $4f db "like to go?", $57 ; 0x8a3d0 + 29 bytes _UnnamedText_5d48: ; 0x8a3ed db $0, "OK, please wait", $4f db "just a moment.", $57 ; 0x8a3ed + 32 bytes _UnnamedText_5d4d: ; 0x8a40d db $0, "The link was", $4f db "canceled.", $57 ; 0x8a40d + 24 bytes INCLUDE "text/oakspeech.tx" _UnnamedText_6557: ; 0x8a605 db $0, "Do you want to", $4f db "give a nickname", $55 db "to @" ; 0x8a605 + 36 bytes UnknownText_8a629: ; 0x8a629 TX_RAM $cd6d db $0, "?", $57 ; 0x8a629 + 6 bytes _UnnamedText_699f: ; 0x8a62f db $0, "Right! So your", $4f db "name is ", $52, "!", $58 ; 0x8a62f + 27 bytes _UnnamedText_69e7: ; 0x8a64a db $0, "That's right! I", $4f db "remember now! His", $55 db "name is ", $53, "!", $58 ; 0x8a64a + 45 bytes _SSAnne8AfterBattleText2: ; 0x8a677 TX_RAM $cd3f db $0, " and", $4f db "@" ; 0x8a677 + 10 bytes UnknownText_8a681: ; 0x8a681 TX_RAM $cd6d db $0, " will", $55 db "be traded.", $57 ; 0x8a681 + 21 bytes _Char00Text: TX_NUM $FF8C,1,2 db 0," ERROR.",$57 _Char55Text: db 0,$4B,"@@" _DiglettsCaveRoute2Text1: ; 0x8a6a7 db $0, "I went to ROCK", $4f db "TUNNEL, but it's", $55 db "dark and scary.", $51 db "If a #MON's", $4f db "FLASH could light", $55 db "it up...", $57 _ViridianForestexitText1: ; 0x8a6fd db $0, "Many #MON live", $4f db "only in forests ", $55 db "and caves.", $51 db "You need to look", $4f db "everywhere to get", $55 db "different kinds!", $57 _ViridianForestexitText2: ; 0x8a75d db $0, "Have you noticed", $4f db "the bushes on the", $55 db "roadside?", $51 db "They can be cut", $4f db "down by a special", $55 db "#MON move.", $57 _Route2HouseText1: ; 0x8a7b8 db $0, "A fainted #MON", $4f db "can't fight. But, ", $55 db "it can still use ", $55 db "moves like CUT!", $57 _UnnamedText_5d616: ; 0x8a7fc db $0, "The HM FLASH", $4f db "lights even the", $55 db "darkest dungeons.", $57 ; 0x8a7fc + 48 bytes _Route2GateText2: ; 0x8a82c db $0, "Once a #MON", $4f db "learns FLASH, you", $55 db "can get through", $55 db "ROCK TUNNEL.", $57 _ViridianForestEntranceText1: ; 0x8a868 db $0, "Are you going to", $4f db "VIRIDIAN FOREST?", $55 db "Be careful, it's", $55 db "a natural maze!", $57 _ViridianForestEntranceText2: ; 0x8a8ab db $0, "RATTATA may be", $4f db "small, but its", $55 db "bite is wicked!", $55 db "Did you get one?", $57 _MtMoonPokecenterText1: ; 0x8a8eb db $0, "I've 6 # BALLs", $4f db "set in my belt.", $51 db "At most, you can", $4f db "carry 6 #MON.", $57 _MtMoonPokecenterText3: ; 0x8a929 db $0, "TEAM ROCKET", $4f db "attacks CERULEAN", $55 db "citizens...", $51 db "TEAM ROCKET is", $4f db "always in the", $55 db "news!", $57 _UnnamedText_4935c: ; 0x8a976 db $0, "MAN: Hello, there!", $4f db "Have I got a deal", $55 db "just for you!", $51 db "I'll let you have", $4f db "a swell MAGIKARP", $55 db "for just ", $f0, "500!", $55 db "What do you say?", $57 ; 0x8a976 + 118 bytes _UnnamedText_49361: ; 0x8a9ec db $0, "No? I'm only", $4f db "doing this as a", $55 db "favor to you!", $57 ; 0x8a9ec + 43 bytes _UnnamedText_49366: ; 0x8aa17 db $0, "You'll need more", $4f db "money than that!", $57 ; 0x8aa17 + 34 bytes _UnnamedText_4936b: ; 0x8aa39 db $0, "MAN: Well, I don't", $4f db "give refunds!", $57 ; 0x8aa39 + 33 bytes _MtMoonPokecenterText5: ; 0x8aa5a db $0, $57 _UnnamedText_1dfe7: ; 0x8aa5c db $0, "I'm on guard duty.", $4f db "Gee, I'm thirsty,", $55 db "though!", $51 db "Oh wait there,", $4f db "the road's closed.", $57 ; 0x8aa5c + 77 bytes _UnnamedText_8aaa9: ; 0x8aaa9 db $0, "Whoa, boy!", $4f db "I'm parched!", $55 db "...", $55 db "Huh? I can have", $55 db "this drink?", $55 db "Gee, thanks!@@" ; 0x8aaa9 + 70 bytes _UnnamedText_1dff1: ; 0x8aaef db $0, $51 db "...", $4f db "Glug glug...", $55 db "...", $55 db "Gulp...", $55 db "If you want to go", $55 db "to SAFFRON CITY...", $55 db "...", $55 db "You can go on", $55 db "through. I'll", $55 db "share this with", $55 db "the other guards!", $57 ; 0x8aaef + 133 bytes _UnnamedText_1dff6: ; 0x8ab74 db $0, "Hi, thanks for", $4f db "the cool drinks!", $57 ; 0x8ab74 + 33 bytes _UnnamedText_5640f: ; 0x8ab95 db $0, "I run a DAYCARE.", $4f db "Would you like me", $55 db "to raise one of", $55 db "your #MON?", $57 ; 0x8ab95 + 63 bytes _UnnamedText_56414: ; 0x8abd4 db $0, "Which #MON", $4f db "should I raise?", $58 ; 0x8abd4 + 28 bytes _UnnamedText_56419: ; 0x8abf0 db $0, "Fine, I'll look", $4f db "after @" ; 0x8abf0 + 23 bytes UnknownText_8ac07: ; 0x8ac07 TX_RAM $cd6d db $0, $55 db "for a while.", $58 ; 0x8ac07 + 18 bytes _UnnamedText_5641e: ; 0x8ac19 db $0, "Come see me in", $4f db "a while.", $57 ; 0x8ac19 + 25 bytes _UnnamedText_56423: ; 0x8ac32 db $0, "Your @" ; 0x8ac32 + 7 bytes UnknownText_8ac39: ; 0x8ac39 TX_RAM $cd6d db $0, $4f db "has grown a lot!", $51 db "By level, it's", $4f db "grown by @" ; 0x8ac39 + 46 bytes UnknownText_8ac67: ; 0x8ac67 TX_NUM $cd3e,$1,$3 db $0, "!", $51 db "Aren't I great?", $58 ; 0x8ac67 + 22 bytes _UnnamedText_56428: ; 0x8ac7d db $0, "You owe me ", $f0, "@" ; 0x8ac7d + 14 bytes ;XXX ; 0x8ac8b db $2, $3f, $cd, $c2 UnknownText_8ac8f: ; 0x8ac8f db $0, $4f db "for the return", $55 db "of this #MON.", $57 ; 0x8ac8f + 31 bytes _UnnamedText_5642d: ; 0x8acae db $0, $52, " got", $4f db "@" ; 0x8acae + 8 bytes UnknownText_8acb6: ; 0x8acb6 TX_RAM $da49 db $0, " back!", $57 ; 0x8acb6 + 11 bytes _UnnamedText_56432: ; 0x8acc1 db $0, "Back already?", $4f db "Your @" ; 0x8acc1 + 21 bytes UnknownText_8acd6: ; 0x8acd6 TX_RAM $cd6d db $0, $55 db "needs some more", $55 db "time with me.", $58 ; 0x8acd6 + 35 bytes SECTION "bank23",DATA,BANK[$23] _UnnamedText_56437: ; 0x8c000 db $0, "All right then,", $4f db "@@" ; 0x8c000 + 19 bytes _UnnamedText_5643b: ; 0x8c013 db $0, "come again.", $57 ; 0x8c013 + 13 bytes _UnnamedText_56440: ; 0x8c020 db $0, "You have no room", $4f db "for this #MON!", $57 ; 0x8c020 + 33 bytes _UnnamedText_56445: ; 0x8c041 db $0, "You only have one", $4f db "#MON with you.", $57 ; 0x8c041 + 34 bytes _UnnamedText_5644a: ; 0x8c063 db $0, "I can't accept a", $4f db "#MON that", $55 db "knows an HM move.", $57 ; 0x8c063 + 45 bytes _UnnamedText_5644f: ; 0x8c090 db $0, "Thank you! Here's", $4f db "your #MON!", $58 ; 0x8c090 + 29 bytes _UnnamedText_56454: ; 0x8c0ad db $0, "Hey, you don't", $4f db "have enough ", $f0, "!", $57 ; 0x8c0ad + 30 bytes _UndergroundTunnelEntranceRoute6Text1: ; 0x8c0cb db $0, "People often lose", $4f db "things in that", $55 db "UNDERGROUND PATH.", $57 _UndergroundPathEntranceRoute7Text1: ; 0x8c0ff db $0, "I heard a sleepy", $4f db "#MON appeared", $55 db "near CELADON CITY.", $57 _UnnamedText_5d773: ; 0x8c132 db $0, "I want to shop at", $4f db "the dept. store", $55 db "in CELADON but...", $51 db "There are so many", $4f db "rough looking", $55 db "people there.", $57 ; 0x8c132 + 99 bytes _UnnamedText_5d778: ; 0x8c195 db $0, "TEAM ROCKET had a", $4f db "secret hideout in", $55 db "CELADON CITY?", $57 ; 0x8c195 + 51 bytes _UnnamedText_5d77d: ; 0x8c1c8 db $0, "You're here to", $4f db "shop in CELADON?", $51 db "Just step outside", $4f db "and head west!", $57 ; 0x8c1c8 + 65 bytes _UnnamedText_5d782: ; 0x8c209 db $0, "The UNDERGROUND", $4f db "PATH goes beneath", $55 db "SAFFRON and leads", $55 db "to LAVENDER.", $51 db "If you're heading", $4f db "to CERULEAN, go", $55 db "to the building", $55 db "across the road.", $57 ; 0x8c209 + 132 bytes _UndergroundPathEntranceRoute8Text1: ; 0x8c28d db $0, "The dept. store", $4f db "in CELADON has a", $55 db "great selection!", $57 _RockTunnelPokecenterText1: ; 0x8c2c0 db $0, "The element types", $4f db "of #MON make", $55 db "them stronger", $55 db "than some types", $55 db "and weaker than", $55 db "others!", $57 _RockTunnelPokecenterText3: ; 0x8c316 db $0, "I sold a useless", $4f db "NUGGET for ", $f0, "5000!", $57 _UnnamedText_44588: ; 0x8c33a db $0, "This tunnel goes", $4f db "a long way, kid!", $57 ; 0x8c33a + 35 bytes _UnnamedText_4458d: ; 0x8c35d db $0, "Doh!", $4f db "You win!", $58 ; 0x8c35d + 15 bytes _UnnamedText_44592: ; 0x8c36c db $0, "Watch for ONIX!", $4f db "It can put the", $55 db "squeeze on you!", $57 ; 0x8c36c + 48 bytes _UnnamedText_44597: ; 0x8c39c db $0, "Hmm. Maybe I'm", $4f db "lost in here...", $57 ; 0x8c39c + 31 bytes _UnnamedText_4459c: ; 0x8c3bb db $0, "Ease up!", $4f db "What am I doing?", $55 db "Which way is out?", $58 ; 0x8c3bb + 45 bytes _UnnamedText_445a1: ; 0x8c3e8 db $0, "That sleeping", $4f db "#MON on ROUTE", $55 db "12 forced me to", $55 db "take this detour.", $57 ; 0x8c3e8 + 63 bytes _UnnamedText_445a6: ; 0x8c427 db $0, "Outsiders like", $4f db "you need to show", $55 db "me some respect!", $57 ; 0x8c427 + 50 bytes _UnnamedText_445ab: ; 0x8c459 db $0, "I give!", $58 ; 0x8c459 + 9 bytes _UnnamedText_445b0: ; 0x8c462 db $0, "You're talented", $4f db "enough to hike!", $57 ; 0x8c462 + 32 bytes _UnnamedText_445b5: ; 0x8c482 db $0, "#MON fight!", $4f db "Ready, go!", $57 ; 0x8c482 + 24 bytes _UnnamedText_445ba: ; 0x8c49a db $0, "Game", $4f db "over!", $58 ; 0x8c49a + 12 bytes _UnnamedText_445bf: ; 0x8c4a6 db $0, "Oh well, I'll get", $4f db "a ZUBAT as I go!", $57 ; 0x8c4a6 + 35 bytes _UnnamedText_445c4: ; 0x8c4c9 db $0, "Eek! Don't try", $4f db "anything funny in", $55 db "the dark!", $57 ; 0x8c4c9 + 43 bytes _UnnamedText_445c9: ; 0x8c4f4 db $0, "It", $4f db "was too dark!", $58 ; 0x8c4f4 + 18 bytes _UnnamedText_445ce: ; 0x8c506 db $0, "I saw a MACHOP", $4f db "in this tunnel!", $57 ; 0x8c506 + 32 bytes _UnnamedText_445d3: ; 0x8c526 db $0, "I came this far", $4f db "for #MON!", $57 ; 0x8c526 + 27 bytes _UnnamedText_445d8: ; 0x8c541 db $0, "I'm", $4f db "out of #MON!", $58 ; 0x8c541 + 17 bytes _UnnamedText_445dd: ; 0x8c552 db $0, "You looked cute", $4f db "and harmless!", $57 ; 0x8c552 + 31 bytes _UnnamedText_445e2: ; 0x8c571 db $0, "You have #MON!", $4f db "Let's start!", $57 ; 0x8c571 + 28 bytes _UnnamedText_445e7: ; 0x8c58d db $0, "You", $4f db "play hard!", $58 ; 0x8c58d + 16 bytes _UnnamedText_445ec: ; 0x8c59d db $0, "Whew! I'm all", $4f db "sweaty now!", $57 ; 0x8c59d + 26 bytes _RockTunnel1Text8: ; 0x8c5b7 db $0, "ROCK TUNNEL", $4f db "CERULEAN CITY -", $55 db "LAVENDER TOWN", $57 _UnnamedText_1e3aa: ; 0x8c5e2 db $0, "Bzzzt!", $57 ; 0x8c5e2 + 8 bytes _UnnamedText_1e3af: ; 0x8c5ea db $0, "Gyaoo!@@" ; 0x8c5ea + 9 bytes _Route11GateText1: ; 0x8c5f3 db $0, "When you catch", $4f db "lots of #MON,", $55 db "isn't it hard to", $55 db "think up names?", $51 db "In LAVENDER TOWN,", $4f db "there's a man who", $55 db "rates #MON", $55 db "nicknames.", $51 db "He'll help you", $4f db "rename them too!", $57 _UnnamedText_494a3: ; 0x8c689 db $0, "There are items on", $4f db "the ground that", $55 db "can't be seen.", $51 db "ITEMFINDER will", $4f db "detect an item", $55 db "close to you.", $51 db "It can't pinpoint", $4f db "it, so you have", $55 db "to look yourself!", $57 ; 0x8c689 + 146 bytes _UnnamedText_494c4: ; 0x8c71b db $0, "Looked into the", $4f db "binoculars.", $51 db "A big #MON is", $4f db "asleep on a road!", $57 ; 0x8c71b + 61 bytes _UnnamedText_494c9: ; 0x8c758 db $0, "Looked into the", $4f db "binoculars.", $51 db "It's a beautiful", $4f db "view!", $57 ; 0x8c758 + 51 bytes _UnnamedText_494d5: ; 0x8c78b db $0, "Looked into the", $4f db "binoculars.", $51 db "The only way to", $4f db "get from CERULEAN", $55 db "CITY to LAVENDER", $55 db "is by way of the", $55 db "ROCK TUNNEL.", $57 ; 0x8c78b + 110 bytes _DiglettsCaveEntranceRoute11Text1: ; 0x8c7f9 db $0, "What a surprise!", $4f db "DIGLETTs dug this", $55 db "long tunnel!", $51 db "It goes right to", $4f db "VIRIDIAN CITY!", $57 _Route12GateText1: ; 0x8c84a db $0, "There's a lookout", $4f db "spot upstairs.", $57 _TM39PreReceiveText: ; 0x8c86b db $0, "My #MON's", $4f db "ashes are stored", $55 db "in #MON TOWER.", $51 db "You can have this", $4f db "TM. I don't need", $55 db "it any more...", $58 ; 0x8c86b + 91 bytes _ReceivedTM39Text: ; 0x8c8c6 db $0, $52, " received", $4f db "TM39!@@" ; 0x8c8c6 + 19 bytes _TM39ExplanationText: ; 0x8c8d9 db $0, "TM39 is a move", $4f db "called SWIFT.", $51 db "It's very accurate,", $4f db "so use it during", $55 db "battles you can't", $55 db "afford to lose.", $57 ; 0x8c8d9 + 99 bytes _TM39NoRoomText: ; 0x8c93c db $0, "You don't have", $4f db "room for this.", $57 ; 0x8c93c + 30 bytes _UnnamedText_495b8: ; 0x8c95a db $0, "Looked into the", $4f db "binoculars.", $51 db "A man fishing!", $57 ; 0x8c95a + 44 bytes _UnnamedText_495c4: ; 0x8c986 db $0, "Looked into the", $4f db "binoculars.", $51 db "It's #MON TOWER!", $57 ; 0x8c986 + 45 bytes _UnnamedText_564c0: ; 0x8c9b3 db $0, "I'm the FISHING", $4f db "GURU's brother!", $51 db "I simply Looove", $4f db "fishing!", $51 db "Do you like to", $4f db "fish?", $57 ; 0x8c9b3 + 77 bytes _UnnamedText_564c5: ; 0x8ca00 db $0, "Grand! I like", $4f db "your style!", $51 db "Take this and", $4f db "fish, young one!", $51 db $52, " received", $4f db "a @" ; 0x8ca00 + 72 bytes UnknownText_8ca48: ; 0x8ca48 TX_RAM $cf4b db $0, "!@@" ; 0x8ca48 + 7 bytes _UnnamedText_564ca: ; 0x8ca4f db $0, $51 db "Fishing is a way", $4f db "of life!", $51 db "From the seas to", $4f db "rivers, go out", $55 db "and land the big", $55 db "one!", $57 ; 0x8ca4f + 82 bytes _UnnamedText_564cf: ; 0x8caa1 db $0, "Oh... That's so", $4f db "disappointing...", $57 ; 0x8caa1 + 33 bytes _UnnamedText_564d4: ; 0x8cac2 db $0, "Hello there,", $4f db $52, "!", $51 db "Use the SUPER ROD", $4f db "in any water!", $55 db "You can catch", $55 db "different kinds", $55 db "of #MON.", $51 db "Try fishing", $4f db "wherever you can!", $57 ; 0x8cac2 + 118 bytes _UnnamedText_564d9: ; 0x8cb38 db $0, "Oh no!", $51 db "I had a gift for", $4f db "you, but you have", $55 db "no room for it!", $57 ; 0x8cb38 + 59 bytes _Route15GateText1: ; 0x8cb73 db $0, "Are you working", $4f db "on a #DEX?", $51 db "PROF.OAK's AIDE", $4f db "came by here.", $57 _UnnamedText_4968c: ; 0x8cbac db $0, "EXP.ALL gives", $4f db "EXP points to all", $55 db "the #MON with", $55 db "you, even if they", $55 db "don't fight.", $51 db "It does, however,", $4f db "reduce the amount", $55 db "of EXP for each", $55 db "#MON.", $51 db "If you don't need", $4f db "it, you should ", $55 db "store it via PC.", $57 ; 0x8cbac + 185 bytes _UnnamedText_49698: ; 0x8cc65 db $0, "Looked into the", $4f db "binoculars.", $51 db "It looks like a", $4f db "small island!", $57 ; 0x8cc65 + 59 bytes _UnnamedText_49777: ; 0x8cca0 db $0, "No pedestrians", $4f db "are allowed on", $55 db "CYCLING ROAD!", $57 ; 0x8cca0 + 45 bytes _UnnamedText_4977c: ; 0x8cccd db $0, "CYCLING ROAD is a", $4f db "downhill course", $55 db "by the sea. It's", $55 db "a great ride.", $57 ; 0x8cccd + 65 bytes _UnnamedText_49781: ; 0x8cd0e db $0, "Excuse me! Wait", $4f db "up please!", $57 ; 0x8cd0e + 28 bytes _Route16GateMapText2: ; 0x8cd2a db $0, "How'd you get in?", $4f db "Good effort!", $57 _UnnamedText_49820: ; 0x8cd49 db $0, "I'm going for a", $4f db "ride with my girl", $55 db "friend!", $57 ; 0x8cd49 + 42 bytes _UnnamedText_4982f: ; 0x8cd73 db $0, "We're going", $4f db "riding together!", $57 ; 0x8cd73 + 29 bytes _UnnamedText_4983b: ; 0x8cd90 db $0, "Looked into the", $4f db "binoculars.", $51 db "It's CELADON DEPT.", $4f db "STORE!", $57 ; 0x8cd90 + 54 bytes _UnnamedText_49847: ; 0x8cdc6 db $0, "Looked into the", $4f db "binoculars.", $51 db "There's a long", $4f db "path over water!", $57 ; 0x8cdc6 + 60 bytes _Route16HouseText3: ; 0x8ce02 db $0, "Oh, you found my", $4f db "secret retreat!", $51 db "Please don't tell", $4f db "anyone I'm here.", $55 db "I'll make it up", $55 db "to you with this!", $58 ; 0x8ce02 + 100 bytes _ReceivedHM02Text: ; 0x8ce66 db $0, $52, " received", $4f db "HM02!@@" ; 0x8ce66 + 19 bytes _HM02ExplanationText: ; 0x8ce79 db $0, "HM02 is FLY.", $4f db "It will take you", $55 db "back to any town.", $51 db "Put it to good", $4f db "use!", $57 ; 0x8ce79 + 69 bytes _HM02NoRoomText: ; 0x8cebe db $0, "You don't have any", $4f db "room for this.", $57 ; 0x8cebe + 34 bytes _UnnamedText_1e652: ; 0x8cee0 db $0, "FEAROW: Kyueen!", $57 ; 0x8cee0 + 17 bytes _UnnamedText_49928: ; 0x8cef1 db $0, "You need a BICYCLE", $4f db "for CYCLING ROAD!", $57 ; 0x8cef1 + 38 bytes _UnnamedText_4992d: ; 0x8cf17 db $0, "CYCLING ROAD is", $4f db "all uphill from", $55 db "here.", $57 ; 0x8cf17 + 39 bytes _UnnamedText_49932: ; 0x8cf3e db $0, "Excuse me!", $57 ; 0x8cf3e + 12 bytes _UnnamedText_49993: ; 0x8cf4a db $0, "Looked into the", $4f db "binoculars.", $51 db "PALLET TOWN is in", $4f db "the west!", $57 ; 0x8cf4a + 57 bytes _UnnamedText_4999f: ; 0x8cf83 db $0, "Looked into the", $4f db "binoculars.", $51 db "There are people", $4f db "swimming!", $57 ; 0x8cf83 + 56 bytes _UnnamedText_1e704: ; 0x8cfbb db $0, "Only truly skilled", $4f db "trainers are", $55 db "allowed through.", $51 db "You don't have the", $4f db "BOULDERBADGE yet!@@" ; 0x8d012 _UnnamedText_1e715: ; 0x8d012 db $0, $51 db "The rules are", $4f db "rules. I can't", $55 db "let you pass.", $57 ; 0x8d012 + 44 bytes _UnnamedText_1e71a: ; 0x8d03e db $0, "Oh! That is the", $4f db "BOULDERBADGE!", $55 db "Go right ahead!@@" ; 0x8d03e + 48 bytes _VictoryRoad2BattleText6: ; 0x8d06e db $0, "Gyaoo!@@" ; 0x8d06e + 9 bytes _VictoryRoad2BattleText1: ; 0x8d077 db $0, "VICTORY ROAD is", $4f db "the final test", $55 db "for trainers!", $57 ; 0x8d077 + 46 bytes _VictoryRoad2EndBattleText1: ; 0x8d0a5 db $0, "Aiyah!", $58 ; 0x8d0a5 + 8 bytes _VictoryRoad2AfterBattleText1: ; 0x8d0ad db $0, "If you get stuck,", $4f db "try moving some", $55 db "boulders around!", $57 ; 0x8d0ad + 52 bytes _VictoryRoad2BattleText2: ; 0x8d0e1 db $0, "Ah, so you wish", $4f db "to challenge the", $55 db "ELITE FOUR?", $57 ; 0x8d0e1 + 46 bytes _VictoryRoad2EndBattleText2: ; 0x8d10f db $0, "You", $4f db "got me!", $58 ; 0x8d10f + 13 bytes _VictoryRoad2AfterBattleText2: ; 0x8d11c db $0, $53, " also came", $4f db "through here!", $57 ; 0x8d11c + 27 bytes _VictoryRoad2BattleText3: ; 0x8d137 db $0, "Come on!", $4f db "I'll whip you!", $57 ; 0x8d137 + 24 bytes _VictoryRoad2EndBattleText3: ; 0x8d14f db $0, "I got", $4f db "whipped!", $58 ; 0x8d14f + 16 bytes _VictoryRoad2AfterBattleText3: ; 0x8d15f db $0, "You earned the", $4f db "right to be on", $55 db "VICTORY ROAD!", $57 ; 0x8d15f + 45 bytes _VictoryRoad2BattleText4: ; 0x8d18c db $0, "If you can get", $4f db "through here, you", $55 db "can go meet the", $55 db "ELITE FOUR!", $57 ; 0x8d18c + 62 bytes _VictoryRoad2EndBattleText4: ; 0x8d1ca db $0, "No!", $4f db "Unbelievable!", $58 ; 0x8d1ca + 19 bytes _VictoryRoad2AfterBattleText4: ; 0x8d1dd db $0, "I can beat you", $4f db "when it comes to", $55 db "knowledge about", $55 db "#MON!", $57 ; 0x8d1dd + 55 bytes _VictoryRoad2BattleText5: ; 0x8d214 db $0, "Is VICTORY ROAD", $4f db "too tough?", $57 ; 0x8d214 + 28 bytes _VictoryRoad2EndBattleText5: ; 0x8d230 db $0, "Well", $4f db "done!", $58 ; 0x8d230 + 12 bytes _VictoryRoad2AfterBattleText5: ; 0x8d23c db $0, "Many trainers give", $4f db "up the challenge", $55 db "here.", $57 ; 0x8d23c + 43 bytes _UnnamedText_1e865: ; 0x8d267 db $0, "Hiya! I'm a", $4f db "#MON...", $55 db "...No I'm not!", $51 db "Call me BILL!", $4f db "I'm a true blue", $55 db "#MANIAC! Hey!", $55 db "What's with that", $55 db "skeptical look?", $51 db "I'm not joshing", $4f db "you, I screwed up", $55 db "an experiment and", $55 db "got combined with", $55 db "a #MON!", $51 db "So, how about it?", $4f db "Help me out here!", $57 ; 0x8d267 + 222 bytes _UnnamedText_1e86a: ; 0x8d345 db $0, "When I'm in the", $4f db "TELEPORTER, go to", $55 db "my PC and run the", $55 db "Cell Separation", $55 db "System!", $57 ; 0x8d345 + 76 bytes _UnnamedText_1e86f: ; 0x8d391 db $0, "No!? Come on, you", $4f db "gotta help a guy", $55 db "in deep trouble!", $51 db "What do you say,", $4f db "chief? Please?", $55 db "OK? All right!", $58 ; 0x8d391 + 100 bytes _BillThankYouText: ; 0x8d3f5 db $0, "BILL: Yeehah!", $4f db "Thanks, bud! I", $55 db "owe you one!", $51 db "So, did you come", $4f db "to see my #MON", $55 db "collection?", $55 db "You didn't?", $55 db "That's a bummer.", $51 db "I've got to thank", $4f db "you... Oh here,", $55 db "maybe this'll do.", $58 ; 0x8d3f5 + 164 bytes _SSTicketReceivedText: ; 0x8d499 db $0, $52, " received", $4f db "an @" TX_RAM $cf4b db $0, "!@@" ; 0x8d4b0 _SSTicketNoRoomText: ; 0x8d4b0 db $0, "You've got too", $4f db "much stuff, bud!", $57 ; 0x8d4b0 + 32 bytes _UnnamedText_1e8cb: ; 0x8d4d0 db $0, "That cruise ship,", $4f db "S.S.ANNE, is in", $55 db "VERMILION CITY.", $55 db "Its passengers", $55 db "are all trainers!", $51 db "They invited me", $4f db "to their party,", $55 db "but I can't stand", $55 db "fancy do's. Why", $55 db "don't you go", $55 db "instead of me?", $57 ; 0x8d4d0 + 175 bytes _UnnamedText_1e8da: ; 0x8d57f db $0, "BILL: Look, bud,", $4f db "just check out", $55 db "some of my rare", $55 db "#MON on my PC!", $57 ; 0x8d57f + 64 bytes _Route1ViridianMartSampleText: ; 0x8d5bf db $0, "Hi! I work at a", $4f db "#MON MART.", $51 db "It's a convenient", $4f db "shop, so please", $55 db "visit us in", $55 db "VIRIDIAN CITY.", $51 db "I know, I'll give", $4f db "you a sample!", $55 db "Here you go!", $58 ; 0x8d5bf + 132 bytes UnknownText_8d643: ; 0x8d643 db $0, $52, " got", $4f db "@" ; 0x8d643 + 8 bytes UnknownText_8d64b: ; 0x8d64b TX_RAM $cf4b db $0, "!@@" ; 0x8d64b + 7 bytes _UnnamedText_1caee: ; 0x8d652 db $0, "We also carry", $4f db "# BALLs for", $55 db "catching #MON!", $57 ; 0x8d652 + 42 bytes _UnnamedText_1caf3: ; 0x8d67c db $0, "You have too much", $4f db "stuff with you!", $57 ; 0x8d67c + 35 bytes _Route1Text2: ; 0x8d69f db $0, "See those ledges", $4f db "along the road?", $51 db "It's a bit scary,", $4f db "but you can jump", $55 db "from them.", $51 db "You can get back", $4f db "to PALLET TOWN", $55 db "quicker that way.", $57 _Route1Text3: ; 0x8d720 db $0, "ROUTE 1", $4f db "PALLET TOWN -", $55 db "VIRIDIAN CITY", $57 _Route2Text3: ; 0x8d745 db $0, "ROUTE 2", $4f db "VIRIDIAN CITY -", $55 db "PEWTER CITY", $57 _Route2Text4: ; 0x8d76a db $0, "DIGLETT's CAVE", $57 _Route3Text1: ; 0x8d779 db $0, "Whew... I better", $4f db "take a rest...", $55 db "Groan...", $51 db "That tunnel from", $4f db "CERULEAN takes a", $55 db "lot out of you!", $57 _Route3BattleText1: ; 0x8d7d5 db $0, "Hey! I met you in", $4f db "VIRIDIAN FOREST!", $57 ; 0x8d7d5 + 36 bytes _Route3EndBattleText1: ; 0x8d7f9 db $0, "You", $4f db "beat me again!", $58 ; 0x8d7f9 + 20 bytes _Route3AfterBattleText1: ; 0x8d80d db $0, "There are other", $4f db "kinds of #MON", $55 db "than those found", $55 db "in the forest!", $57 ; 0x8d80d + 63 bytes _Route3BattleText2: ; 0x8d84c db $0, "Hi! I like shorts!", $4f db "They're comfy and", $55 db "easy to wear!", $57 ; 0x8d84c + 51 bytes _Route3EndBattleText2: ; 0x8d87f db $0, "I don't", $4f db "believe it!", $58 ; 0x8d87f + 20 bytes _Route3AfterBattleText2: ; 0x8d893 db $0, "Are you storing", $4f db "your #MON on", $55 db "PC? Each BOX can", $55 db "hold 20 #MON!", $57 ; 0x8d893 + 61 bytes _Route3BattleText3: ; 0x8d8d0 db $0, "You looked at me,", $4f db "didn't you?", $57 ; 0x8d8d0 + 30 bytes _Route3EndBattleText3: ; 0x8d8ee db $0, "You're", $4f db "mean!", $58 ; 0x8d8ee + 13 bytes _Route3AfterBattleText3: ; 0x8d8fb db $0, "Quit staring if", $4f db "you don't want to", $55 db "fight!", $57 ; 0x8d8fb + 41 bytes _Route3BattleText4: ; 0x8d924 db $0, "Are you a trainer?", $4f db "Let's fight!", $57 ; 0x8d924 + 32 bytes _Route3EndBattleText4: ; 0x8d944 db $0, "If I", $4f db "had new #MON I", $55 db "would've won!", $58 ; 0x8d944 + 34 bytes _Route3AfterBattleText4: ; 0x8d966 db $0, "If a #MON BOX", $4f db "on the PC gets", $55 db "full, just switch", $55 db "to another BOX!", $57 ; 0x8d966 + 64 bytes _Route3BattleText5: ; 0x8d9a6 db $0, "That look you", $4f db "gave me, it's so", $55 db "intriguing!", $57 ; 0x8d9a6 + 43 bytes _Route3EndBattleText5: ; 0x8d9d1 db $0, "Be nice!", $58 ; 0x8d9d1 + 10 bytes _Route3AfterBattleText5: ; 0x8d9db db $0, "Avoid fights by", $4f db "not letting", $55 db "people see you!", $57 ; 0x8d9db + 45 bytes _Route3BattleText6: ; 0x8da08 db $0, "Hey! You're not", $4f db "wearing shorts!", $57 ; 0x8da08 + 32 bytes _Route3EndBattleText6: ; 0x8da28 db $0, "Lost!", $4f db "Lost! Lost!", $58 ; 0x8da28 + 19 bytes _Route3AfterBattleText6: ; 0x8da3b db $0, "I always wear", $4f db "shorts, even in", $55 db "winter!", $57 ; 0x8da3b + 39 bytes _Route3BattleText7: ; 0x8da62 db $0, "You can fight my", $4f db "new #MON!", $57 ; 0x8da62 + 28 bytes _Route3EndBattleText7: ; 0x8da7e db $0, "Done", $4f db "like dinner!", $58 ; 0x8da7e + 19 bytes _Route3AfterBattleText7: ; 0x8da91 db $0, "Trained #MON", $4f db "are stronger than", $55 db "the wild ones!", $57 ; 0x8da91 + 47 bytes _Route3BattleText8: ; 0x8dac0 db $0, "Eek! Did you", $4f db "touch me?", $57 ; 0x8dac0 + 24 bytes _Route3EndBattleText8: ; 0x8dad8 db $0, "That's it?", $58 ; 0x8dad8 + 11 bytes _Route3AfterBattleText8: ; 0x8dae3 db $0, "ROUTE 4 is at the", $4f db "foot of MT.MOON.", $57 ; 0x8dae3 + 36 bytes _Route3Text10: ; 0x8db07 db $0, "ROUTE 3", $4f db "MT.MOON AHEAD", $57 _Route4Text1: ; 0x8db1e db $0, "Ouch! I tripped", $4f db "over a rocky", $55 db "#MON, GEODUDE!", $57 _Route4BattleText1: ; 0x8db4b db $0, "I came to get my", $4f db "mushroom #MON!", $57 ; 0x8db4b + 33 bytes _Route4EndBattleText1: ; 0x8db6c db $0, "Oh! My cute", $4f db "mushroom #MON!", $58 ; 0x8db6c + 28 bytes _Route4AfterBattleText1: ; 0x8db88 db $0, "There might not", $4f db "be any more", $55 db "mushrooms here.", $51 db "I think I got", $4f db "them all.", $57 ; 0x8db88 + 69 bytes _Route4Text5: ; 0x8dbcd db $0, "MT.MOON", $4f db "Tunnel Entrance", $57 _Route4Text6: ; 0x8dbe6 db $0, "ROUTE 4", $4f db "MT.MOON -", $55 db "CERULEAN CITY", $57 _Route5Text1: ; 0x8dc07 db $0, "UNDERGROUND PATH", $4f db "CERULEAN CITY -", $55 db "VERMILION CITY", $57 _Route6BattleText1: ; 0x8dc38 db $0, "Who's there?", $4f db "Quit listening in", $55 db "on us!", $57 ; 0x8dc38 + 38 bytes _Route6EndBattleText1: ; 0x8dc5e db $0, "I", $4f db "just can't win!", $58 ; 0x8dc5e + 18 bytes _Route6AfterBattleText1: ; 0x8dc70 db $0, "Whisper...", $4f db "whisper...", $57 ; 0x8dc70 + 23 bytes _Route6BattleText2: ; 0x8dc87 db $0, "Excuse me! This", $4f db "is a private", $55 db "conversation!", $57 ; 0x8dc87 + 44 bytes _Route6EndBattleText2: ; 0x8dcb3 db $0, "Ugh!", $4f db "I hate losing!", $58 ; 0x8dcb3 + 21 bytes _Route6BattleText3: ; 0x8dcc8 db $0, "There aren't many", $4f db "bugs out here.", $57 ; 0x8dcc8 + 33 bytes _Route6EndBattleText3: ; 0x8dce9 db $0, "No!", $4f db "You're kidding!", $58 ; 0x8dce9 + 20 bytes _Route6AfterBattleText3: ; 0x8dcfd db $0, "I like bugs, so", $4f db "I'm going back to", $55 db "VIRIDIAN FOREST.", $57 ; 0x8dcfd + 51 bytes _Route6BattleText4: ; 0x8dd30 db $0, "Huh? You want", $4f db "to talk to me?", $57 ; 0x8dd30 + 30 bytes _Route6EndBattleText4: ; 0x8dd4e db $0, "I", $4f db "didn't start it!", $58 ; 0x8dd4e + 19 bytes _Route6AfterBattleText4: ; 0x8dd61 db $0, "I should carry", $4f db "more #MON with", $55 db "me for safety.", $57 ; 0x8dd61 + 46 bytes _Route6BattleText5: ; 0x8dd8f db $0, "Me? Well, OK.", $4f db "I'll play!", $57 ; 0x8dd8f + 25 bytes _Route6EndBattleText5: ; 0x8dda8 db $0, "Just", $4f db "didn't work!", $58 ; 0x8dda8 + 18 bytes _Route6AfterBattleText5: ; 0x8ddba db $0, "I want to get", $4f db "stronger! What's", $55 db "your secret?", $57 ; 0x8ddba + 44 bytes _Route6BattleText6: ; 0x8dde6 db $0, "I've never seen", $4f db "you around!", $55 db "Are you good?", $57 ; 0x8dde6 + 42 bytes _Route6EndBattleText6: ; 0x8de10 db $0, "You", $4f db "are too good!", $58 ; 0x8de10 + 19 bytes _Route6AfterBattleText6: ; 0x8de23 db $0, "Are my #MON", $4f db "weak? Or, am I", $55 db "just bad?", $57 ; 0x8de23 + 38 bytes _Route6Text7: ; 0x8de49 db $0, "UNDERGROUND PATH", $4f db "CERULEAN CITY -", $55 db "VERMILION CITY", $57 _Route7Text1: ; 0x8de7a db $0, "UNDERGROUND PATH", $4f db "CELADON CITY -", $55 db "LAVENDER TOWN", $57 _Route8BattleText1: ; 0x8dea9 db $0, "You look good at", $4f db "#MON, but", $55 db "how's your chem?", $57 ; 0x8dea9 + 44 bytes _Route8EndBattleText1: ; 0x8ded5 db $0, "Ow!", $4f db "Meltdown!", $58 ; 0x8ded5 + 15 bytes _Route8AfterBattleText1: ; 0x8dee4 db $0, "I am better at", $4f db "school than this!", $57 ; 0x8dee4 + 34 bytes _Route8BattleText2: ; 0x8df06 db $0, "All right! Let's", $4f db "roll the dice!", $57 ; 0x8df06 + 32 bytes _Route8EndBattleText2: ; 0x8df26 db $0, "Drat!", $4f db "Came up short!", $58 ; 0x8df26 + 22 bytes _Route8AfterBattleText2: ; 0x8df3c db $0, "Lady Luck's not", $4f db "with me today!", $57 ; 0x8df3c + 31 bytes _Route8BattleText3: ; 0x8df5b db $0, "You need strategy", $4f db "to win at this!", $57 ; 0x8df5b + 35 bytes _Route8EndBattleText3: ; 0x8df7e db $0, "It's", $4f db "not logical!", $58 ; 0x8df7e + 18 bytes _Route8AfterBattleText3: ; 0x8df90 db $0, "Go with GRIMER", $4f db "first...and...", $55 db "...and...then...", $57 ; 0x8df90 + 48 bytes _Route8BattleText4: ; 0x8dfc0 db $0, "I like NIDORAN, so", $4f db "I collect them!", $57 ; 0x8dfc0 + 36 bytes _Route8EndBattleText4: ; 0x8dfe4 db $0, "Why? Why??", $58 ; 0x8dfe4 + 12 bytes _Route8AfterBattleText4: ; 0x8dff0 db $0, "When #MON grow", $4f db "up they get ugly!", $55 db "They shouldn't", $55 db "evolve!", $57 ; 0x8dff0 + 56 bytes _Route8BattleText5: ; 0x8e028 db $0, "School is fun, but", $4f db "so are #MON.", $57 ; 0x8e028 + 33 bytes _Route8EndBattleText5: ; 0x8e049 db $0, "I'll", $4f db "stay with school.", $58 ; 0x8e049 + 23 bytes _Route8AfterBattleText5: ; 0x8e060 db $0, "We're stuck here", $4f db "because of the", $55 db "gates at SAFFRON.", $57 ; 0x8e060 + 50 bytes _Route8BattleText6: ; 0x8e092 db $0, "MEOWTH is so cute,", $4f db "meow, meow, meow!", $57 ; 0x8e092 + 38 bytes _Route8EndBattleText6: ; 0x8e0b8 db $0, "Meow!", $58 ; 0x8e0b8 + 7 bytes _Route8AfterBattleText6: ; 0x8e0bf db $0, "I think PIDGEY", $4f db "and RATTATA", $55 db "are cute too!", $57 ; 0x8e0bf + 42 bytes _Route8BattleText7: ; 0x8e0e9 db $0, "We must look", $4f db "silly standing", $55 db "here like this!", $57 ; 0x8e0e9 + 45 bytes _Route8EndBattleText7: ; 0x8e116 db $0, "Look what", $4f db "you did!", $58 ; 0x8e116 + 20 bytes _Route8AfterBattleText7: ; 0x8e12a db $0, "SAFFRON's gate", $4f db "keeper won't let", $55 db "us through.", $55 db "He's so mean!", $57 ; 0x8e12a + 56 bytes _Route8BattleText8: ; 0x8e162 db $0, "I'm a rambling,", $4f db "gambling dude!", $57 ; 0x8e162 + 31 bytes _Route8EndBattleText8: ; 0x8e181 db $0, "Missed", $4f db "the big score!", $58 ; 0x8e181 + 23 bytes _Route8AfterBattleText8: ; 0x8e198 db $0, "Gambling and", $4f db "#MON are like", $55 db "eating peanuts!", $55 db "Just can't stop!", $57 ; 0x8e198 + 60 bytes _Route8BattleText9: ; 0x8e1d4 db $0, "What's a cute,", $4f db "round and fluffy", $55 db "#MON?", $57 ; 0x8e1d4 + 38 bytes _Route8EndBattleText9: ; 0x8e1fa db $0, "Stop!", $51 db "Don't be so mean", $4f db "to my CLEFAIRY!", $58 ; 0x8e1fa + 39 bytes _Route8AfterBattleText9: ; 0x8e221 db $0, "I heard that", $4f db "CLEFAIRY evolves", $55 db "when it's exposed", $55 db "to a MOON STONE.", $57 ; 0x8e221 + 65 bytes _Route8Text10: ; 0x8e262 db $0, "UNDERGROUND PATH", $4f db "CELADON CITY -", $55 db "LAVENDER TOWN", $57 _Route9BattleText1: ; 0x8e291 db $0, "You have #MON", $4f db "with you!", $55 db "You're mine!", $57 ; 0x8e291 + 37 bytes _Route9EndBattleText1: ; 0x8e2b6 db $0, "You", $4f db "deceived me!", $58 ; 0x8e2b6 + 18 bytes _Route9AfterBattleText1: ; 0x8e2c8 db $0, "You need light to", $4f db "get through that", $55 db "dark tunnel ahead.", $57 ; 0x8e2c8 + 55 bytes _Route9BattleText2: ; 0x8e2ff db $0, "Who's that walking", $4f db "with those good", $55 db "looking #MON?", $57 ; 0x8e2ff + 49 bytes _Route9EndBattleText2: ; 0x8e330 db $0, "Out", $4f db "like a light!", $58 ; 0x8e330 + 19 bytes _Route9AfterBattleText2: ; 0x8e343 db $0, "Keep walking!", $57 ; 0x8e343 + 15 bytes _Route9BattleText3: ; 0x8e352 db $0, "I'm taking ROCK", $4f db "TUNNEL to go to", $55 db "LAVENDER...", $57 ; 0x8e352 + 44 bytes _Route9EndBattleText3: ; 0x8e37e db $0, "Can't", $4f db "measure up!", $58 ; 0x8e37e + 18 bytes _Route9AfterBattleText3: ; 0x8e390 db $0, "Are you off to", $4f db "ROCK TUNNEL too?", $57 ; 0x8e390 + 33 bytes _Route9BattleText4: ; 0x8e3b1 db $0, "Don't you dare", $4f db "condescend me!", $57 ; 0x8e3b1 + 30 bytes _Route9EndBattleText4: ; 0x8e3cf db $0, "No!", $4f db "You're too much!", $58 ; 0x8e3cf + 21 bytes _Route9AfterBattleText4: ; 0x8e3e4 db $0, "You're obviously", $4f db "talented! Good", $55 db "luck to you!", $57 ; 0x8e3e4 + 45 bytes _Route9BattleText5: ; 0x8e411 db $0, "Bwahaha!", $4f db "Great! I was", $55 db "bored, eh!", $57 ; 0x8e411 + 34 bytes _Route9EndBattleText5: ; 0x8e433 db $0, "Keep it", $4f db "coming, eh!", $51 db "Oh wait. I'm out", $4f db "of #MON!", $58 ; 0x8e433 + 46 bytes _Route9AfterBattleText5: ; 0x8e461 db $0, "You sure had guts", $4f db "standing up to me", $55 db "there, eh?", $57 ; 0x8e461 + 48 bytes _Route9BattleText6: ; 0x8e491 db $0, "Hahaha!", $4f db "Aren't you a", $55 db "little toughie!", $57 ; 0x8e491 + 37 bytes _Route9EndBattleText6: ; 0x8e4b6 db $0, "What's", $4f db "that?", $58 ; 0x8e4b6 + 13 bytes _Route9AfterBattleText6: ; 0x8e4c3 db $0, "Hahaha! Kids", $4f db "should be tough!", $57 ; 0x8e4c3 + 31 bytes _Route9BattleText7: ; 0x8e4e2 db $0, "I got up early", $4f db "every day to", $55 db "raise my #MON", $55 db "from cocoons!", $57 ; 0x8e4e2 + 57 bytes _Route9EndBattleText7: ; 0x8e51b db $0, "WHAT?", $51 db "What a total", $4f db "waste of time!", $58 ; 0x8e51b + 35 bytes _Route9AfterBattleText7: ; 0x8e53e db $0, "I have to collect", $4f db "more than bugs to", $55 db "get stronger...", $57 ; 0x8e53e + 53 bytes _Route9BattleText8: ; 0x8e573 db $0, "Hahahaha!", $4f db "Come on, dude!", $57 ; 0x8e573 + 26 bytes _Route9EndBattleText8: ; 0x8e58d db $0, "Hahahaha!", $4f db "You beat me fair!", $58 ; 0x8e58d + 29 bytes _Route9AfterBattleText8: ; 0x8e5aa db $0, "Hahahaha!", $4f db "Us hearty guys", $55 db "always laugh!", $57 ; 0x8e5aa + 40 bytes _Route9BattleText9: ; 0x8e5d2 db $0, "Go, my super bug", $4f db "#MON!", $57 ; 0x8e5d2 + 24 bytes _Route9EndBattleText9: ; 0x8e5ea db $0, "My", $4f db "bugs...", $58 ; 0x8e5ea + 12 bytes _Route9AfterBattleText9: ; 0x8e5f6 db $0, "If you don't like", $4f db "bug #MON, you", $55 db "bug me!", $57 ; 0x8e5f6 + 40 bytes _Route9Text11: ; 0x8e61e db $0, "ROUTE 9", $4f db "CERULEAN CITY-", $55 db "ROCK TUNNEL", $57 _Route10BattleText1: ; 0x8e642 db $0, "Wow, are you a", $4f db "#MANIAC too?", $55 db "Want to see my", $55 db "collection?", $57 ; 0x8e642 + 56 bytes _Route10EndBattleText1: ; 0x8e67a db $0, "Humph.", $4f db "I'm not angry!", $58 ; 0x8e67a + 22 bytes _Route10AfterBattleText1: ; 0x8e690 db $0, "I have more rare", $4f db "#MON at home!", $57 ; 0x8e690 + 32 bytes _Route10BattleText2: ; 0x8e6b0 db $0, "Ha-hahah-ah-ha!", $57 ; 0x8e6b0 + 17 bytes _Route10EndBattleText2: ; 0x8e6c1 db $0, "Ha-haha!", $4f db "Not laughing!", $55 db "Ha-hay fever!", $55 db "Haha-ha-choo!", $58 ; 0x8e6c1 + 52 bytes _Route10AfterBattleText2: ; 0x8e6f5 db $0, "Haha-ha-choo!", $4f db "Ha-choo!", $55 db "Snort! Snivel!", $57 ; 0x8e6f5 + 39 bytes _Route10BattleText3: ; 0x8e71c db $0, "Hi kid, want to", $4f db "see my #MON?", $57 ; 0x8e71c + 30 bytes _Route10EndBattleText3: ; 0x8e73a db $0, "Oh no!", $4f db "My #MON!", $58 ; 0x8e73a + 17 bytes _Route10AfterBattleText3: ; 0x8e74b db $0, "I don't like you", $4f db "for beating me!", $57 ; 0x8e74b + 33 bytes _Route10BattleText4: ; 0x8e76c db $0, "I've been to a", $4f db "#MON GYM a few", $55 db "times. But, I", $55 db "lost each time.", $57 ; 0x8e76c + 60 bytes _Route10EndBattleText4: ; 0x8e7a8 db $0, "Ohh!", $4f db "Blew it again!", $58 ; 0x8e7a8 + 21 bytes _Route10AfterBattleText4: ; 0x8e7bd db $0, "I noticed some", $4f db "#MANIACs", $55 db "prowling around.", $57 ; 0x8e7bd + 42 bytes _Route10BattleText5: ; 0x8e7e7 db $0, "Ah! This mountain", $4f db "air is delicious!", $57 ; 0x8e7e7 + 37 bytes _Route10EndBattleText5: ; 0x8e80c db $0, "That", $4f db "cleared my head!", $58 ; 0x8e80c + 23 bytes _Route10AfterBattleText5: ; 0x8e823 db $0, "I feel bloated on", $4f db "mountain air!", $57 ; 0x8e823 + 33 bytes _Route10BattleText6: ; 0x8e844 db $0, "I'm feeling a bit", $4f db "faint from this", $55 db "tough hike.", $57 ; 0x8e844 + 46 bytes _Route10EndBattleText6: ; 0x8e872 db $0, "I'm", $4f db "not up to it!", $58 ; 0x8e872 + 18 bytes _Route10AfterBattleText6: ; 0x8e884 db $0, "The #MON here", $4f db "are so chunky!", $55 db "There should be a", $55 db "pink one with a", $55 db "floral pattern!", $57 ; 0x8e884 + 80 bytes _Route10Text9: ; 0x8e8d4 _Route10Text7: ; 0x8e8d4 db $0, "ROCK TUNNEL", $57 _Route10Text10: ; 0x8e8e1 db $0, "POWER PLANT", $57 _Route11BattleText1: ; 0x8e8ee db $0, "Win, lose or draw!", $57 ; 0x8e8ee + 20 bytes _Route11EndBattleText1: ; 0x8e902 db $0, "Atcha!", $4f db "Didn't go my way!", $58 ; 0x8e902 + 25 bytes _Route11AfterBattleText1: ; 0x8e91b db $0, "#MON is life!", $4f db "And to live is to", $55 db "gamble!", $57 ; 0x8e91b + 41 bytes _Route11BattleText2: ; 0x8e944 db $0, "Competition! I", $4f db "can't get enough!", $57 ; 0x8e944 + 33 bytes _Route11EndBattleText2: ; 0x8e965 db $0, "I had", $4f db "a chance!", $58 ; 0x8e965 + 17 bytes _Route11AfterBattleText2: ; 0x8e976 db $0, "You can't be a", $4f db "coward in the", $55 db "world of #MON!", $57 ; 0x8e976 + 44 bytes _Route11BattleText3: ; 0x8e9a2 db $0, "Let's go, but", $4f db "don't cheat!", $57 ; 0x8e9a2 + 26 bytes _Route11EndBattleText3: ; 0x8e9bc db $0, "Huh?", $4f db "That's not right!", $58 ; 0x8e9bc + 23 bytes _Route11AfterBattleText3: ; 0x8e9d3 db $0, "I did my best! I", $4f db "have no regrets!", $57 ; 0x8e9d3 + 35 bytes _Route11BattleText4: ; 0x8e9f6 db $0, "Careful!", $4f db "I'm laying down", $55 db "some cables!", $57 ; 0x8e9f6 + 38 bytes _Route11EndBattleText4: ; 0x8ea1c db $0, "That", $4f db "was electric!", $58 ; 0x8ea1c + 20 bytes _Route11AfterBattleText4: ; 0x8ea30 db $0, "Spread the word", $4f db "to save energy!", $57 ; 0x8ea30 + 33 bytes _Route11BattleText5: ; 0x8ea51 db $0, "I just became a", $4f db "trainer! But, I", $55 db "think I can win!", $57 ; 0x8ea51 + 50 bytes _Route11EndBattleText5: ; 0x8ea83 db $0, "My", $4f db "#MON couldn't!", $58 ; 0x8ea83 + 18 bytes _Route11AfterBattleText5: ; 0x8ea95 db $0, "What do you want?", $4f db "Leave me alone!", $57 ; 0x8ea95 + 35 bytes _Route11BattleText6: ; 0x8eab8 db $0, "Fwahaha! I have", $4f db "never lost!", $57 ; 0x8eab8 + 29 bytes _Route11EndBattleText6: ; 0x8ead5 db $0, "My", $4f db "first loss!", $58 ; 0x8ead5 + 16 bytes _Route11AfterBattleText6: ; 0x8eae5 db $0, "Luck of the draw!", $4f db "Just luck!", $57 ; 0x8eae5 + 30 bytes _Route11BattleText7: ; 0x8eb03 db $0, "I have never won", $4f db "before...", $57 ; 0x8eb03 + 28 bytes _Route11EndBattleText7: ; 0x8eb1f db $0, "I saw", $4f db "this coming...", $58 ; 0x8eb1f + 22 bytes _Route11AfterBattleText7: ; 0x8eb35 db $0, "It's just luck.", $4f db "Luck of the draw.", $57 ; 0x8eb35 + 34 bytes _Route11BattleText8: ; 0x8eb57 db $0, "I'm the best in", $4f db "my class!", $57 ; 0x8eb57 + 26 bytes _Route11EndBattleText8: ; 0x8eb71 db $0, "Darn!", $4f db "I need to make my", $55 db "#MON stronger!", $58 ; 0x8eb71 + 40 bytes _Route11AfterBattleText8: ; 0x8eb99 db $0, "There's a fat", $4f db "#MON that", $55 db "comes down from", $55 db "the mountains.", $51 db "It's strong if", $4f db "you can get it.", $57 ; 0x8eb99 + 85 bytes _Route11BattleText9: ; 0x8ebee db $0, "Watch out for", $4f db "live wires!", $57 ; 0x8ebee + 27 bytes SECTION "bank24",DATA,BANK[$24] _Route11EndBattleText9: ; 0x90000 db $0, "Whoa!", $4f db "You spark plug!", $58 ; 0x90000 + 23 bytes _Route11AfterBattleText9: ; 0x90017 db $0, "Well, better get", $4f db "back to work.", $57 ; 0x90017 + 32 bytes _Route11BattleText10: ; 0x90037 db $0, "My #MON should", $4f db "be ready by now!", $57 ; 0x90037 + 33 bytes _Route11EndBattleText10: ; 0x90058 db $0, "Too", $4f db "much, too young!", $58 ; 0x90058 + 22 bytes _Route11AfterBattleText10: ; 0x9006e db $0, "I better go find", $4f db "stronger ones!", $57 ; 0x9006e + 33 bytes _Route11Text11: ; 0x9008f db $0, "DIGLETT's CAVE", $57 _Route12Text1: ; 0x9009e db $0, "A sleeping #MON", $4f db "blocks the way!", $57 _UnnamedText_596eb: ; 0x900bf db $0, "SNORLAX woke up!", $51 db "It attacked in a", $4f db "grumpy rage!", $57 ; 0x900bf + 48 bytes _UnnamedText_596f0: ; 0x900ef db $0, "SNORLAX calmed", $4f db "down! With a big", $55 db "yawn, it returned", $55 db "to the mountains!", $57 ; 0x900ef + 69 bytes _Route12BattleText1: ; 0x90134 db $0, "Yeah! I got a", $4f db "bite, here!", $57 ; 0x90134 + 27 bytes _Route12EndBattleText1: ; 0x9014f db $0, "Tch!", $4f db "Just a small fry!", $58 ; 0x9014f + 24 bytes _Route12AfterBattleText1: ; 0x90167 db $0, "Hang on! My line's", $4f db "snagged!", $57 ; 0x90167 + 28 bytes _Route12BattleText2: ; 0x90183 db $0, "Be patient!", $4f db "Fishing is a", $55 db "waiting game!", $57 ; 0x90183 + 40 bytes _Route12EndBattleText2: ; 0x901ab db $0, "That", $4f db "one got away!", $58 ; 0x901ab + 20 bytes _Route12AfterBattleText2: ; 0x901bf db $0, "With a better ROD,", $4f db "I could catch", $55 db "better #MON!", $57 ; 0x901bf + 47 bytes _Route12BattleText3: ; 0x901ee db $0, "Have you found a", $4f db "MOON STONE?", $57 ; 0x901ee + 30 bytes _Route12EndBattleText3: ; 0x9020c db $0, "Oww!", $58 ; 0x9020c + 6 bytes _Route12AfterBattleText3: ; 0x90212 db $0, "I could have made", $4f db "my #MON evolve", $55 db "with MOON STONE!", $57 ; 0x90212 + 51 bytes _Route12BattleText4: ; 0x90245 db $0, "Electricity is my", $4f db "specialty!", $57 ; 0x90245 + 30 bytes _Route12EndBattleText4: ; 0x90263 db $0, "Unplugged!", $58 ; 0x90263 + 12 bytes _Route12AfterBattleText4: ; 0x9026f db $0, "Water conducts", $4f db "electricity, so", $55 db "you should zap", $55 db "sea #MON!", $57 ; 0x9026f + 57 bytes _Route12BattleText5: ; 0x902a8 db $0, "The FISHING FOOL", $4f db "vs. #MON KID!", $57 ; 0x902a8 + 32 bytes _Route12EndBattleText5: ; 0x902c8 db $0, "Too", $4f db "much!", $58 ; 0x902c8 + 11 bytes _Route12AfterBattleText5: ; 0x902d3 db $0, "You beat me at", $4f db "#MON, but I'm", $55 db "good at fishing!", $57 ; 0x902d3 + 46 bytes _Route12BattleText6: ; 0x90301 db $0, "I'd rather be", $4f db "working!", $57 ; 0x90301 + 23 bytes _Route12EndBattleText6: ; 0x90318 db $0, "It's", $4f db "not easy...", $58 ; 0x90318 + 17 bytes _Route12AfterBattleText6: ; 0x90329 db $0, "It's all right.", $4f db "Losing doesn't", $55 db "bug me any more.", $57 ; 0x90329 + 47 bytes _Route12BattleText7: ; 0x90358 db $0, "You never know", $4f db "what you could", $55 db "catch!", $57 ; 0x90358 + 38 bytes _Route12EndBattleText7: ; 0x9037e db $0, "Lost", $4f db "it!", $58 ; 0x9037e + 10 bytes _Route12AfterBattleText7: ; 0x90388 db $0, "I catch MAGIKARP", $4f db "all the time, but", $55 db "they're so weak!", $57 ; 0x90388 + 52 bytes _Route12Text11: ; 0x903bc db $0, "ROUTE 12 ", $4f db "North to LAVENDER", $57 _Route12Text12: ; 0x903d9 db $0, "SPORT FISHING AREA", $57 _Route13BattleText2: ; 0x903ed db $0, "My bird #MON", $4f db "want to scrap!", $57 ; 0x903ed + 29 bytes _Route13EndBattleText2: ; 0x9040a db $0, "My", $4f db "bird combo lost?", $58 ; 0x9040a + 21 bytes _Route13AfterBattleText2: ; 0x9041f db $0, "My #MON look", $4f db "happy even though", $55 db "they lost.", $57 ; 0x9041f + 43 bytes _Route13BattleText3: ; 0x9044a db $0, "I'm told I'm good", $4f db "for a kid!", $57 ; 0x9044a + 28 bytes _Route13EndBattleText3: ; 0x90466 db $0, "Ohh!", $4f db "I lost!", $58 ; 0x90466 + 14 bytes _Route13AfterBattleText3: ; 0x90474 db $0, "I want to become", $4f db "a good trainer.", $55 db "I'll train hard.", $57 ; 0x90474 + 50 bytes _Route13BattleText4: ; 0x904a6 db $0, "Wow! Your BADGEs", $4f db "are too cool!", $57 ; 0x904a6 + 32 bytes _Route13EndBattleText4: ; 0x904c6 db $0, "Not", $4f db "enough!", $58 ; 0x904c6 + 13 bytes _Route13AfterBattleText4: ; 0x904d3 db $0, "You got those", $4f db "BADGEs from GYM", $55 db "LEADERs. I know!", $57 ; 0x904d3 + 48 bytes _Route13BattleText5: ; 0x90503 db $0, "My cute #MON", $4f db "wish to make your", $55 db "acquaintance.", $57 ; 0x90503 + 46 bytes _Route13EndBattleText5: ; 0x90531 db $0, "Wow!", $4f db "You totally won!", $58 ; 0x90531 + 23 bytes _Route13AfterBattleText5: ; 0x90548 db $0, "You have to make", $4f db "#MON fight to", $55 db "toughen them up!", $57 ; 0x90548 + 49 bytes _Route13BattleText6: ; 0x90579 db $0, "I found CARBOS in", $4f db "a cave once.", $57 ; 0x90579 + 32 bytes _Route13EndBattleText6: ; 0x90599 db $0, "Just", $4f db "messed up!", $58 ; 0x90599 + 17 bytes _Route13AfterBattleText6: ; 0x905aa db $0, "CARBOS boosted", $4f db "the SPEED of my", $55 db "#MON.", $57 ; 0x905aa + 38 bytes _Route13BattleText7: ; 0x905d0 db $0, "The wind's blowing", $4f db "my way!", $57 ; 0x905d0 + 27 bytes _Route13EndBattleText7: ; 0x905eb db $0, "The", $4f db "wind turned!", $58 ; 0x905eb + 18 bytes _Route13AfterBattleText7: ; 0x905fd db $0, "I'm beat. I guess", $4f db "I'll FLY home.", $57 ; 0x905fd + 32 bytes _Route13BattleText8: ; 0x9061d db $0, "Sure, I'll play", $4f db "with you!", $57 ; 0x9061d + 26 bytes _Route13EndBattleText8: ; 0x90637 db $0, "Oh!", $4f db "You little brute!", $58 ; 0x90637 + 23 bytes _Route13AfterBattleText8: ; 0x9064e db $0, "I wonder which is", $4f db "stronger, male or", $55 db "female #MON?", $57 ; 0x9064e + 50 bytes _Route13BattleText9: ; 0x90680 db $0, "Do you want to", $4f db "#MON with me?", $57 ; 0x90680 + 30 bytes _Route13EndBattleText9: ; 0x9069e db $0, "It's over", $4f db "already?", $58 ; 0x9069e + 19 bytes _Route13AfterBattleText9: ; 0x906b1 db $0, "I don't know", $4f db "anything about", $55 db "#MON. I just", $55 db "like cool ones!", $57 ; 0x906b1 + 57 bytes _Route13BattleText10: ; 0x906ea db $0, "What're you", $4f db "lookin' at?", $57 ; 0x906ea + 24 bytes _Route13EndBattleText10: ; 0x90702 db $0, "Dang!", $4f db "Stripped gears!", $58 ; 0x90702 + 23 bytes _Route13AfterBattleText10: ; 0x90719 db $0, "Get lost!", $57 ; 0x90719 + 11 bytes _Route13BattleText11: ; 0x90724 db $0, "I always go with", $4f db "bird #MON!", $57 ; 0x90724 + 29 bytes _Route13EndBattleText11: ; 0x90741 db $0, "Out", $4f db "of power!", $58 ; 0x90741 + 15 bytes _Route13AfterBattleText11: ; 0x90750 db $0, "I wish I could", $4f db "fly like PIDGEY", $55 db "and PIDGEOTTO...", $57 ; 0x90750 + 49 bytes _Route13Text11: ; 0x90781 db $0, "TRAINER TIPS", $51 db "Look to the left", $4f db "of that post!", $57 _Route13Text12: ; 0x907ae db $0, "TRAINER TIPS", $51 db "Use SELECT to", $4f db "switch items in", $55 db "the ITEM window!", $57 _Route13Text13: ; 0x907eb db $0, "ROUTE 13", $4f db "North to SILENCE", $55 db "BRIDGE", $57 _Route14BattleText1: ; 0x9080d db $0, "You need to use", $4f db "TMs to teach good", $55 db "moves to #MON!", $57 ; 0x9080d + 50 bytes _Route14EndBattleText1: ; 0x9083f db $0, "Not", $4f db "good enough!", $58 ; 0x9083f + 18 bytes _Route14AfterBattleText1: ; 0x90851 db $0, "You have some HMs", $4f db "right? #MON", $55 db "can't ever forget", $55 db "those moves.", $57 ; 0x90851 + 61 bytes _Route14BattleText2: ; 0x9088e db $0, "My bird #MON", $4f db "should be ready", $55 db "for battle.", $57 ; 0x9088e + 42 bytes _Route14EndBattleText2: ; 0x908b8 db $0, "Not", $4f db "ready yet!", $58 ; 0x908b8 + 16 bytes _Route14AfterBattleText2: ; 0x908c8 db $0, "They need to learn", $4f db "better moves.", $57 ; 0x908c8 + 34 bytes _Route14BattleText3: ; 0x908ea db $0, "TMs are on sale", $4f db "in CELADON!", $55 db "But, only a few", $55 db "people have HMs!", $57 ; 0x908ea + 62 bytes _Route14EndBattleText3: ; 0x90928 db $0, "Aww,", $4f db "bummer!", $58 ; 0x90928 + 14 bytes _Route14AfterBattleText3: ; 0x90936 db $0, "Teach #MON", $4f db "moves of the same", $55 db "element type for", $55 db "more power.", $57 ; 0x90936 + 59 bytes _Route14BattleText4: ; 0x90971 db $0, "Have you taught", $4f db "your bird #MON", $55 db "how to FLY?", $57 ; 0x90971 + 44 bytes _Route14EndBattleText4: ; 0x9099d db $0, "Shot", $4f db "down in flames!", $58 ; 0x9099d + 22 bytes _Route14AfterBattleText4: ; 0x909b3 db $0, "Bird #MON are", $4f db "my true love!", $57 ; 0x909b3 + 29 bytes _Route14BattleText5: ; 0x909d0 db $0, "Have you heard of", $4f db "the legendary", $55 db "#MON?", $57 ; 0x909d0 + 39 bytes _Route14EndBattleText5: ; 0x909f7 db $0, "Why?", $4f db "Why'd I lose?", $58 ; 0x909f7 + 19 bytes _Route14AfterBattleText5: ; 0x90a0a db $0, "The 3 legendary", $4f db "#MON are all", $55 db "birds of prey.", $57 ; 0x90a0a + 45 bytes _Route14BattleText6: ; 0x90a37 db $0, "I'm not into it,", $4f db "but OK! Let's go!", $57 ; 0x90a37 + 34 bytes _Route14EndBattleText6: ; 0x90a59 db $0, "I", $4f db "knew it!", $58 ; 0x90a59 + 12 bytes _Route14AfterBattleText6: ; 0x90a65 db $0, "Winning, losing,", $4f db "it doesn't matter", $55 db "in the long run!", $57 ; 0x90a65 + 52 bytes _Route14BattleText7: ; 0x90a99 db $0, "C'mon, c'mon.", $4f db "Let's go, let's", $55 db "go, let's go!", $57 ; 0x90a99 + 40 bytes _Route14EndBattleText7: ; 0x90ac1 db $0, "Arrg!", $4f db "Lost! Get lost!", $58 ; 0x90ac1 + 23 bytes _Route14AfterBattleText7: ; 0x90ad8 db $0, "What, what, what?", $4f db "What do you want?", $57 ; 0x90ad8 + 37 bytes _Route14BattleText8: ; 0x90afd db $0, "Perfect! I need to", $4f db "burn some time!", $57 ; 0x90afd + 36 bytes _Route14EndBattleText8: ; 0x90b21 db $0, "What?", $4f db "You!?", $58 ; 0x90b21 + 13 bytes _Route14AfterBattleText8: ; 0x90b2e db $0, "Raising #MON", $4f db "is a drag, man.", $57 ; 0x90b2e + 30 bytes _Route14BattleText9: ; 0x90b4c db $0, "We ride out here", $4f db "because there's", $55 db "more room!", $57 ; 0x90b4c + 44 bytes _Route14EndBattleText9: ; 0x90b78 db $0, "Wipe out!", $58 ; 0x90b78 + 11 bytes _Route14AfterBattleText9: ; 0x90b83 db $0, "It's cool you", $4f db "made your #MON", $55 db "so strong!", $51 db "Might is right!", $4f db "And you know it!", $57 ; 0x90b83 + 73 bytes _Route14BattleText10: ; 0x90bcc db $0, "#MON fight?", $4f db "Cool! Rumble!", $57 ; 0x90bcc + 27 bytes _Route14EndBattleText10: ; 0x90be7 db $0, "Blown", $4f db "away!", $58 ; 0x90be7 + 13 bytes _Route14AfterBattleText10: ; 0x90bf4 db $0, "You know who'd", $4f db "win, you and me", $55 db "one on one!", $57 ; 0x90bf4 + 43 bytes _Route14Text11: ; 0x90c1f db $0, "ROUTE 14", $4f db "West to FUCHSIA", $55 db "CITY", $57 _Route15BattleText1: ; 0x90c3e db $0, "Let me try out the", $4f db "#MON I just", $55 db "got in a trade!", $57 ; 0x90c3e + 48 bytes _Route15EndBattleText1: ; 0x90c6e db $0, "Not", $4f db "good enough!", $58 ; 0x90c6e + 18 bytes _Route15AfterBattleText1: ; 0x90c80 db $0, "You can't change", $4f db "the nickname of", $55 db "any #MON you", $55 db "get in a trade.", $51 db "Only the Original", $4f db "Trainer can.", $57 ; 0x90c80 + 93 bytes _Route15BattleText2: ; 0x90cdd db $0, "You look gentle,", $4f db "so I think I can", $55 db "beat you!", $57 ; 0x90cdd + 45 bytes _Route15EndBattleText2: ; 0x90d0a db $0, "No,", $4f db "wrong!", $58 ; 0x90d0a + 12 bytes _Route15AfterBattleText2: ; 0x90d16 db $0, "I'm afraid of", $4f db "BIKERs, they look", $55 db "so ugly and mean!", $57 ; 0x90d16 + 50 bytes _Route15BattleText3: ; 0x90d48 db $0, "When I whistle, I", $4f db "can summon bird", $55 db "#MON!", $57 ; 0x90d48 + 41 bytes _Route15EndBattleText3: ; 0x90d71 db $0, "Ow!", $4f db "That's tragic!", $58 ; 0x90d71 + 19 bytes _Route15AfterBattleText3: ; 0x90d84 db $0, "Maybe I'm not cut", $4f db "out for battles.", $57 ; 0x90d84 + 35 bytes _Route15BattleText4: ; 0x90da7 db $0, "Hmm? My birds are", $4f db "shivering! You're", $55 db "good, aren't you?", $57 ; 0x90da7 + 53 bytes _Route15EndBattleText4: ; 0x90ddc db $0, "Just", $4f db "as I thought!", $58 ; 0x90ddc + 20 bytes _Route15AfterBattleText4: ; 0x90df0 db $0, "Did you know moves", $4f db "like EARTHQUAKE", $55 db "don't have any", $55 db "effect on birds?", $57 ; 0x90df0 + 67 bytes _Route15BattleText5: ; 0x90e33 db $0, "Oh, you're a", $4f db "little cutie!", $57 ; 0x90e33 + 27 bytes _Route15EndBattleText5: ; 0x90e4e db $0, "You looked", $4f db "so cute too!", $58 ; 0x90e4e + 25 bytes _Route15AfterBattleText5: ; 0x90e67 db $0, "I forgive you!", $4f db "I can take it!", $57 ; 0x90e67 + 31 bytes _Route15BattleText6: ; 0x90e86 db $0, "I raise #MON", $4f db "because I live", $55 db "alone!", $57 ; 0x90e86 + 36 bytes _Route15EndBattleText6: ; 0x90eaa db $0, "I didn't", $4f db "ask for this!", $58 ; 0x90eaa + 23 bytes _Route15AfterBattleText6: ; 0x90ec1 db $0, "I just like going", $4f db "home to be with", $55 db "my #MON!", $57 ; 0x90ec1 + 44 bytes _Route15BattleText7: ; 0x90eed db $0, "Hey kid! C'mon!", $4f db "I just got these!", $57 ; 0x90eed + 34 bytes _Route15EndBattleText7: ; 0x90f0f db $0, "Why", $4f db "not?", $58 ; 0x90f0f + 10 bytes _Route15AfterBattleText7: ; 0x90f19 db $0, "You only live", $4f db "once, so I live", $55 db "as an outlaw!", $55 db "TEAM ROCKET RULES!", $57 ; 0x90f19 + 64 bytes _Route15BattleText8: ; 0x90f59 db $0, "Fork over all your", $4f db "cash when you", $55 db "lose to me, kid!", $57 ; 0x90f59 + 51 bytes _Route15EndBattleText8: ; 0x90f8c db $0, "That", $4f db "can't be true!", $58 ; 0x90f8c + 20 bytes _Route15AfterBattleText8: ; 0x90fa0 db $0, "I was just joking", $4f db "about the money!", $57 ; 0x90fa0 + 36 bytes _Route15BattleText9: ; 0x90fc4 db $0, "What's cool?", $4f db "Trading #MON!", $57 ; 0x90fc4 + 27 bytes _Route15EndBattleText9: ; 0x90fdf db $0, "I", $4f db "said trade!", $58 ; 0x90fdf + 15 bytes _Route15AfterBattleText9: ; 0x90fee db $0, "I trade #MON", $4f db "with my friends!", $57 ; 0x90fee + 31 bytes _Route15BattleText10: ; 0x9100d db $0, "Want to play with", $4f db "my #MON?", $57 ; 0x9100d + 28 bytes _Route15EndBattleText10: ; 0x91029 db $0, "I was", $4f db "too impatient!", $58 ; 0x91029 + 22 bytes _Route15AfterBattleText10: ; 0x9103f db $0, "I'll go train with", $4f db "weaker people.@" db $50 ; 0x9103f + 34 bytes + 1 _Route15Text12: ; 0x91062 db $0, "ROUTE 15", $4f db "West to FUCHSIA", $55 db "CITY", $57 _Route16BattleText1: ; 0x91081 db $0, "What do you want?", $57 ; 0x91081 + 19 bytes _Route16EndBattleText1: ; 0x91094 db $0, "Don't you", $4f db "dare laugh!", $58 ; 0x91094 + 22 bytes _Route16AfterBattleText1: ; 0x910aa db $0, "We like just", $4f db "hanging here,", $55 db "what's it to you?", $57 ; 0x910aa + 45 bytes _Route16BattleText2: ; 0x910d7 db $0, "Nice BIKE!", $4f db "Hand it over!", $57 ; 0x910d7 + 26 bytes _Route16EndBattleText2: ; 0x910f1 db $0, "Knock", $4f db "out!", $58 ; 0x910f1 + 12 bytes _Route16AfterBattleText2: ; 0x910fd db $0, "Forget it, who", $4f db "needs your BIKE!", $57 ; 0x910fd + 33 bytes _Route16BattleText3: ; 0x9111e db $0, "Come out and play,", $4f db "little mouse!", $57 ; 0x9111e + 34 bytes _Route16EndBattleText3: ; 0x91140 db $0, "You", $4f db "little rat!", $58 ; 0x91140 + 17 bytes _Route16AfterBattleText3: ; 0x91151 db $0, "I hate losing!", $4f db "Get away from me!", $57 ; 0x91151 + 34 bytes _Route16BattleText4: ; 0x91173 db $0, "Hey, you just", $4f db "bumped me!", $57 ; 0x91173 + 26 bytes _Route16EndBattleText4: ; 0x9118d db $0, "Kaboom!", $58 ; 0x9118d + 9 bytes _Route16AfterBattleText4: ; 0x91196 db $0, "You can also get", $4f db "to FUCHSIA from", $55 db "VERMILION using a", $55 db "coastal road.", $57 ; 0x91196 + 66 bytes _Route16BattleText5: ; 0x911d8 db $0, "I'm feeling", $4f db "hungry and mean!", $57 ; 0x911d8 + 29 bytes _Route16EndBattleText5: ; 0x911f5 db $0, "Bad,", $4f db "bad, bad!", $58 ; 0x911f5 + 16 bytes _Route16AfterBattleText5: ; 0x91205 db $0, "I like my #MON", $4f db "ferocious! They", $55 db "tear up enemies!", $57 ; 0x91205 + 49 bytes _Route16BattleText6: ; 0x91236 db $0, "Sure, I'll go!", $57 ; 0x91236 + 15 bytes _Route16EndBattleText6: ; 0x91245 db $0, "Don't make", $4f db "me mad!", $58 ; 0x91245 + 19 bytes _Route16AfterBattleText6: ; 0x91258 db $0, "I like harassing", $4f db "people with my", $55 db "vicious #MON!", $57 ; 0x91258 + 47 bytes _Route16Text7: ; 0x91287 db $0, "A sleeping #MON", $4f db "blocks the way!", $57 _UnnamedText_59ab3: ; 0x912a8 db $0, "SNORLAX woke up!", $51 db "It attacked in a", $4f db "grumpy rage!", $57 ; 0x912a8 + 48 bytes _UnnamedText_59ab8: ; 0x912d8 db $0, "With a big yawn,", $4f db "SNORLAX returned", $55 db "to the mountains!", $57 ; 0x912d8 + 53 bytes _Route16Text8: ; 0x9130d db $0, "Enjoy the slope!", $4f db "CYCLING ROAD", $57 _Route16Text9: ; 0x9132c db $0, "ROUTE 16", $4f db "CELADON CITY -", $55 db "FUCHSIA CITY", $57 _Route17BattleText1: ; 0x91352 db $0, "There's no money", $4f db "in fighting kids!", $57 ; 0x91352 + 35 bytes _Route17EndBattleText1: ; 0x91375 db $0, "Burned", $4f db "out!", $58 ; 0x91375 + 13 bytes _Route17AfterBattleText1: ; 0x91382 db $0, "Good stuff is", $4f db "lying around on", $55 db "CYCLING ROAD!", $57 ; 0x91382 + 45 bytes _Route17BattleText2: ; 0x913af db $0, "What do you want,", $4f db "kiddo?", $57 ; 0x913af + 26 bytes _Route17EndBattleText2: ; 0x913c9 db $0, "Whoo!", $58 ; 0x913c9 + 7 bytes _Route17AfterBattleText2: ; 0x913d0 db $0, "I could belly-", $4f db "bump you outta", $55 db "here!", $57 ; 0x913d0 + 37 bytes _Route17BattleText3: ; 0x913f5 db $0, "You heading to", $4f db "FUCHSIA?", $57 ; 0x913f5 + 25 bytes _Route17EndBattleText3: ; 0x9140e db $0, "Crash and", $4f db "burn!", $58 ; 0x9140e + 17 bytes _Route17AfterBattleText3: ; 0x9141f db $0, "I love racing", $4f db "downhill!", $57 ; 0x9141f + 25 bytes _Route17BattleText4: ; 0x91438 db $0, "We're BIKERs!", $4f db "Highway stars!", $57 ; 0x91438 + 29 bytes _Route17EndBattleText4: ; 0x91455 db $0, "Smoked!", $58 ; 0x91455 + 9 bytes _Route17AfterBattleText4: ; 0x9145e db $0, "Are you looking", $4f db "for adventure?", $57 ; 0x9145e + 32 bytes _Route17BattleText5: ; 0x9147e db $0, "Let VOLTORB", $4f db "electrify you!", $57 ; 0x9147e + 28 bytes _Route17EndBattleText5: ; 0x9149a db $0, "Grounded", $4f db "out!", $58 ; 0x9149a + 15 bytes _Route17AfterBattleText5: ; 0x914a9 db $0, "I got my VOLTORB", $4f db "at the abandoned", $55 db "POWER PLANT.", $57 ; 0x914a9 + 48 bytes _Route17BattleText6: ; 0x914d9 db $0, "My #MON won't", $4f db "evolve! Why?", $57 ; 0x914d9 + 27 bytes _Route17EndBattleText6: ; 0x914f4 db $0, "Why,", $4f db "you!", $58 ; 0x914f4 + 11 bytes _Route17AfterBattleText6: ; 0x914ff db $0, "Maybe some #MON", $4f db "need element", $55 db "STONEs to evolve.", $57 ; 0x914ff + 48 bytes _Route17BattleText7: ; 0x9152f db $0, "I need a little", $4f db "exercise!", $57 ; 0x9152f + 27 bytes _Route17EndBattleText7: ; 0x9154a db $0, "Whew!", $4f db "Good workout!", $58 ; 0x9154a + 21 bytes _Route17AfterBattleText7: ; 0x9155f db $0, "I'm sure I lost", $4f db "weight there!", $57 ; 0x9155f + 30 bytes _Route17BattleText8: ; 0x9157d db $0, "Be a rebel!", $57 ; 0x9157d + 13 bytes _Route17EndBattleText8: ; 0x9158a db $0, "Aaaargh!", $58 ; 0x9158a + 10 bytes _Route17AfterBattleText8: ; 0x91594 db $0, "Be ready to fight", $4f db "for your beliefs!", $57 ; 0x91594 + 37 bytes _Route17BattleText9: ; 0x915b9 db $0, "Nice BIKE!", $4f db "How's it handle?", $57 ; 0x915b9 + 28 bytes _Route17EndBattleText9: ; 0x915d5 db $0, "Shoot!", $58 ; 0x915d5 + 8 bytes _Route17AfterBattleText9: ; 0x915dd db $0, "The slope makes", $4f db "it hard to steer!", $57 ; 0x915dd + 35 bytes _Route17BattleText10: ; 0x91600 db $0, "Get lost kid!", $4f db "I'm bushed!", $57 ; 0x91600 + 26 bytes _Route17EndBattleText10: ; 0x9161a db $0, "Are you", $4f db "satisfied?", $58 ; 0x9161a + 20 bytes _Route17AfterBattleText10: ; 0x9162e db $0, "I need to catch", $4f db "a few Zs!", $57 ; 0x9162e + 27 bytes _Route17Text11: ; 0x91649 db $0, "It's a notice!", $51 db "Watch out for", $4f db "discarded items!", $57 _Route17Text12: ; 0x91677 db $0, "TRAINER TIPS", $51 db "All #MON are", $4f db "unique.", $51 db "Even #MON of", $4f db "the same type and", $55 db "level grow at", $55 db "different rates.", $57 _Route17Text13: ; 0x916d8 db $0, "TRAINER TIPS", $51 db "Press the A or B", $4f db "Button to stay in", $55 db "place while on a", $55 db "slope.", $57 _Route17Text14: ; 0x91721 db $0, "ROUTE 17", $4f db "CELADON CITY -", $55 db "FUCHSIA CITY", $57 _Route17Text15: ; 0x91747 db $0, "It's a notice!", $51 db "Don't throw the", $4f db "game, throw #", $55 db "BALLs instead!", $57 _Route17Text16: ; 0x91782 db $0, "CYCLING ROAD", $4f db "Slope ends here!", $57 _Route18BattleText1: ; 0x917a1 db $0, "I always check", $4f db "every grassy area", $55 db "for new #MON.", $57 ; 0x917a1 + 48 bytes _Route18EndBattleText1: ; 0x917d1 db $0, "Tch!", $58 ; 0x917d1 + 6 bytes _Route18AfterBattleText1: ; 0x917d7 db $0, "I wish I had a", $4f db "BIKE!", $57 ; 0x917d7 + 22 bytes _Route18BattleText2: ; 0x917ed db $0, "Kurukkoo!", $4f db "How do you like", $55 db "my bird call?", $57 ; 0x917ed + 41 bytes _Route18EndBattleText2: ; 0x91816 db $0, "I", $4f db "had to bug you!", $58 ; 0x91816 + 19 bytes _Route18AfterBattleText2: ; 0x91829 db $0, "I also collect sea", $4f db "#MON on", $55 db "weekends!", $57 ; 0x91829 + 38 bytes _Route18BattleText3: ; 0x9184f db $0, "This is my turf!", $4f db "Get out of here!", $57 ; 0x9184f + 35 bytes _Route18EndBattleText3: ; 0x91872 db $0, "Darn!", $58 ; 0x91872 + 7 bytes _Route18AfterBattleText3: ; 0x91879 db $0, "This is my fave", $4f db "#MON hunting", $55 db "area!", $57 ; 0x91879 + 36 bytes _Route18Text4: ; 0x9189d db $0, "ROUTE 18", $4f db "CELADON CITY -", $55 db "FUCHSIA CITY", $57 _Route18Text5: ; 0x918c3 db $0, "CYCLING ROAD", $4f db "No pedestrians", $55 db "permitted!", $57 _Route19BattleText1: ; 0x918eb db $0, "Have to warm up", $4f db "before my swim!", $57 ; 0x918eb + 33 bytes _Route19EndBattleText1: ; 0x9190c db $0, "All", $4f db "warmed up!", $58 ; 0x9190c + 16 bytes _Route19AfterBattleText1: ; 0x9191c db $0, "Thanks, kid! I'm", $4f db "ready for a swim!", $57 ; 0x9191c + 35 bytes _Route19BattleText2: ; 0x9193f db $0, "Wait! You'll have", $4f db "a heart attack!", $57 ; 0x9193f + 34 bytes _Route19EndBattleText2: ; 0x91961 db $0, "Ooh!", $4f db "That's chilly!", $58 ; 0x91961 + 20 bytes _Route19AfterBattleText2: ; 0x91975 db $0, "Watch out for", $4f db "TENTACOOL!", $57 ; 0x91975 + 26 bytes _Route19BattleText3: ; 0x9198f db $0, "I love swimming!", $4f db "What about you?", $57 ; 0x9198f + 34 bytes _Route19EndBattleText3: ; 0x919b1 db $0, "Belly", $4f db "flop!", $58 ; 0x919b1 + 13 bytes _Route19AfterBattleText3: ; 0x919be db $0, "I can beat #MON", $4f db "at swimming!", $57 ; 0x919be + 30 bytes _Route19BattleText4: ; 0x919dc db $0, "What's beyond the", $4f db "horizon?", $57 ; 0x919dc + 27 bytes _Route19EndBattleText4: ; 0x919f7 db $0, "Glub!", $58 ; 0x919f7 + 7 bytes _Route19AfterBattleText4: ; 0x919fe db $0, "I see a couple of", $4f db "islands!", $57 ; 0x919fe + 28 bytes _Route19BattleText5: ; 0x91a1a db $0, "I tried diving", $4f db "for #MON, but", $55 db "it was a no go!", $57 ; 0x91a1a + 46 bytes _Route19EndBattleText5: ; 0x91a48 db $0, "Help!", $58 ; 0x91a48 + 7 bytes _Route19AfterBattleText5: ; 0x91a4f db $0, "You have to fish", $4f db "for sea #MON!", $57 ; 0x91a4f + 32 bytes _Route19BattleText6: ; 0x91a6f db $0, "I look at the", $4f db "sea to forget!", $57 ; 0x91a6f + 30 bytes _Route19EndBattleText6: ; 0x91a8d db $0, "Ooh!", $4f db "Traumatic!", $58 ; 0x91a8d + 17 bytes _Route19AfterBattleText6: ; 0x91a9e db $0, "I'm looking at the", $4f db "sea to forget!", $57 ; 0x91a9e + 34 bytes _Route19BattleText7: ; 0x91ac0 db $0, "Oh, I just love", $4f db "your ride! Can I", $55 db "have it if I win?", $57 ; 0x91ac0 + 52 bytes _Route19EndBattleText7: ; 0x91af4 db $0, "Oh!", $4f db "I lost!", $58 ; 0x91af4 + 13 bytes _Route19AfterBattleText7: ; 0x91b01 db $0, "It's still a long", $4f db "way to go to", $55 db "SEAFOAM ISLANDS.", $57 ; 0x91b01 + 48 bytes _Route19BattleText8: ; 0x91b31 db $0, "Swimming's great!", $4f db "Sunburns aren't!", $57 ; 0x91b31 + 34 bytes _Route19EndBattleText8: ; 0x91b53 db $0, "Shocker!", $58 ; 0x91b53 + 10 bytes _Route19AfterBattleText8: ; 0x91b5d db $0, "My boy friend", $4f db "wanted to swim to", $55 db "SEAFOAM ISLANDS.", $57 ; 0x91b5d + 50 bytes _Route19BattleText9: ; 0x91b8f db $0, "These waters are", $4f db "treacherous!", $57 ; 0x91b8f + 31 bytes _Route19EndBattleText9: ; 0x91bae db $0, "Ooh!", $4f db "Dangerous!", $58 ; 0x91bae + 17 bytes _Route19AfterBattleText9: ; 0x91bbf db $0, "I got a cramp!", $4f db "Glub, glub...", $57 ; 0x91bbf + 30 bytes _Route19BattleText10: ; 0x91bdd db $0, "I swam here, but", $4f db "I'm tired.", $57 ; 0x91bdd + 28 bytes _Route19EndBattleText10: ; 0x91bf9 db $0, "I'm", $4f db "exhausted...", $58 ; 0x91bf9 + 17 bytes _Route19AfterBattleText10: ; 0x91c0a db $0, "LAPRAS is so big,", $4f db "it must keep you", $55 db "dry on water.", $57 ; 0x91c0a + 50 bytes _Route19Text11: ; 0x91c3c db $0, "SEA ROUTE 19", $4f db "FUCHSIA CITY -", $55 db "SEAFOAM ISLANDS", $57 _Route20BattleText1: ; 0x91c69 db $0, "The water is", $4f db "shallow here.", $57 ; 0x91c69 + 28 bytes _Route20EndBattleText1: ; 0x91c85 db $0, "Splash!", $58 ; 0x91c85 + 9 bytes _Route20AfterBattleText1: ; 0x91c8e db $0, "I wish I could", $4f db "ride my #MON.", $57 ; 0x91c8e + 30 bytes _Route20BattleText2: ; 0x91cac db $0, "SEAFOAM is a", $4f db "quiet getaway!", $57 ; 0x91cac + 29 bytes _Route20EndBattleText2: ; 0x91cc9 db $0, "Quit it!", $58 ; 0x91cc9 + 10 bytes _Route20AfterBattleText2: ; 0x91cd3 db $0, "There's a huge", $4f db "cavern underneath", $55 db "this island.", $57 ; 0x91cd3 + 46 bytes _Route20BattleText3: ; 0x91d01 db $0, "I love floating", $4f db "with the fishes!", $57 ; 0x91d01 + 34 bytes _Route20EndBattleText3: ; 0x91d23 db $0, "Yowch!", $58 ; 0x91d23 + 8 bytes _Route20AfterBattleText3: ; 0x91d2b db $0, "Want to float", $4f db "with me?", $57 ; 0x91d2b + 24 bytes _Route20BattleText4: ; 0x91d43 db $0, "Are you on", $4f db "vacation too?", $57 ; 0x91d43 + 26 bytes _Route20EndBattleText4: ; 0x91d5d db $0, "No", $4f db "mercy at all!", $58 ; 0x91d5d + 18 bytes _Route20AfterBattleText4: ; 0x91d6f db $0, "SEAFOAM used to", $4f db "be one island!", $57 ; 0x91d6f + 32 bytes _Route20BattleText5: ; 0x91d8f db $0, "Check out my buff", $4f db "physique!", $57 ; 0x91d8f + 29 bytes _Route20EndBattleText5: ; 0x91dac db $0, "Wimpy!", $58 ; 0x91dac + 8 bytes _Route20AfterBattleText5: ; 0x91db4 db $0, "I should've been", $4f db "buffing up my", $55 db "#MON, not me!", $57 ; 0x91db4 + 45 bytes _Route20BattleText6: ; 0x91de1 db $0, "Why are you", $4f db "riding a #MON?", $55 db "Can't you swim?", $57 ; 0x91de1 + 43 bytes _Route20EndBattleText6: ; 0x91e0c db $0, "Ouch!", $4f db "Torpedoed!", $58 ; 0x91e0c + 18 bytes _Route20AfterBattleText6: ; 0x91e1e db $0, "Riding a #MON", $4f db "sure looks fun!", $57 ; 0x91e1e + 31 bytes _Route20BattleText7: ; 0x91e3d db $0, "I rode my bird", $4f db "#MON here!", $57 ; 0x91e3d + 27 bytes _Route20EndBattleText7: ; 0x91e58 db $0, "Oh", $4f db "no!", $58 ; 0x91e58 + 8 bytes _Route20AfterBattleText7: ; 0x91e60 db $0, "My birds can't", $4f db "FLY me back!", $57 ; 0x91e60 + 28 bytes _Route20BattleText8: ; 0x91e7c db $0, "My boy friend gave", $4f db "me big pearls!", $57 ; 0x91e7c + 35 bytes _Route20EndBattleText8: ; 0x91e9f db $0, "Don't", $4f db "touch my pearls!", $58 ; 0x91e9f + 23 bytes _Route20AfterBattleText8: ; 0x91eb6 db $0, "Will my pearls", $4f db "grow bigger", $55 db "inside CLOYSTER?", $57 ; 0x91eb6 + 45 bytes _Route20BattleText9: ; 0x91ee3 db $0, "I swam here from", $4f db "CINNABAR ISLAND!", $57 ; 0x91ee3 + 35 bytes _Route20EndBattleText9: ; 0x91f06 db $0, "I'm", $4f db "so disappointed!", $58 ; 0x91f06 + 21 bytes _Route20AfterBattleText9: ; 0x91f1b db $0, "#MON have", $4f db "taken over an", $55 db "abandoned mansion", $55 db "on CINNABAR!", $57 ; 0x91f1b + 56 bytes _Route20BattleText10: ; 0x91f53 db $0, "CINNABAR, in the", $4f db "west, has a LAB", $55 db "for #MON.", $57 ; 0x91f53 + 44 bytes _Route20EndBattleText10: ; 0x91f7f db $0, "Wait!", $58 ; 0x91f7f + 7 bytes _Route20AfterBattleText10: ; 0x91f86 db $0, "CINNABAR is a ", $4f db "volcanic island!", $57 ; 0x91f86 + 33 bytes _Route20Text12: ; 0x91fa7 _Route20Text11: ; 0x91fa7 db $0, "SEAFOAM ISLANDS", $57 _Route21BattleText1: ; 0x91fb8 db $0, "You want to know", $4f db "if the fish are", $55 db "biting?", $57 ; 0x91fb8 + 42 bytes _Route21EndBattleText1: ; 0x91fe2 db $0, "Dang!", $58 ; 0x91fe2 + 7 bytes _Route21AfterBattleText1: ; 0x91fe9 db $0, "I can't catch", $4f db "anything good!", $57 ; 0x91fe9 + 29 bytes _Route21BattleText2: ; 0x92006 db $0, "I got a big haul!", $4f db "Wanna go for it?", $57 ; 0x92006 + 36 bytes _Route21EndBattleText2: ; 0x9202a db $0, "Darn", $4f db "MAGIKARP!", $58 ; 0x9202a + 16 bytes _Route21AfterBattleText2: ; 0x9203a db $0, "I seem to only", $4f db "catch MAGIKARP!", $57 ; 0x9203a + 32 bytes _Route21BattleText3: ; 0x9205a db $0, "The sea cleanses", $4f db "my body and soul!", $57 ; 0x9205a + 36 bytes _Route21EndBattleText3: ; 0x9207e db $0, "Ayah!", $58 ; 0x9207e + 7 bytes _Route21AfterBattleText3: ; 0x92085 db $0, "I like the", $4f db "mountains too!", $57 ; 0x92085 + 27 bytes _Route21BattleText4: ; 0x920a0 db $0, "What's wrong with", $4f db "me swimming?", $57 ; 0x920a0 + 31 bytes _Route21EndBattleText4: ; 0x920bf db $0, "Cheap", $4f db "shot!", $58 ; 0x920bf + 13 bytes _Route21AfterBattleText4: ; 0x920cc db $0, "I look like what?", $4f db "A studded inner", $55 db "tube? Get lost!", $57 ; 0x920cc + 51 bytes _Route21BattleText5: ; 0x920ff db $0, "I caught all my", $4f db "#MON at sea!", $57 ; 0x920ff + 30 bytes _Route21EndBattleText5: ; 0x9211d db $0, "Diver!!", $4f db "Down!!", $58 ; 0x9211d + 16 bytes _Route21AfterBattleText5: ; 0x9212d db $0, "Where'd you catch", $4f db "your #MON?", $57 ; 0x9212d + 29 bytes _Route21BattleText6: ; 0x9214a db $0, "Right now, I'm in", $4f db "a triathlon meet!", $57 ; 0x9214a + 36 bytes _Route21EndBattleText6: ; 0x9216e db $0, "Pant...", $4f db "pant...pant...", $58 ; 0x9216e + 24 bytes _Route21AfterBattleText6: ; 0x92186 db $0, "I'm beat!", $4f db "But, I still have", $55 db "the bike race and", $55 db "marathon left!", $57 ; 0x92186 + 61 bytes _Route21BattleText7: ; 0x921c3 db $0, "Ahh! Feel the sun", $4f db "and the wind!", $57 ; 0x921c3 + 33 bytes _Route21EndBattleText7: ; 0x921e4 db $0, "Yow!", $4f db "I lost!", $58 ; 0x921e4 + 14 bytes _Route21AfterBattleText7: ; 0x921f2 db $0, "I'm sunburnt to a", $4f db "crisp!", $57 ; 0x921f2 + 25 bytes _Route21BattleText8: ; 0x9220b db $0, "Hey, don't scare", $4f db "away the fish!", $57 ; 0x9220b + 32 bytes _Route21EndBattleText8: ; 0x9222b db $0, "Sorry!", $4f db "I didn't mean it!", $58 ; 0x9222b + 25 bytes _Route21AfterBattleText8: ; 0x92244 db $0, "I was just angry", $4f db "that I couldn't", $55 db "catch anything.", $57 ; 0x92244 + 49 bytes _Route21BattleText9: ; 0x92275 db $0, "Keep me company", $4f db "'til I get a hit!", $57 ; 0x92275 + 34 bytes _Route21EndBattleText9: ; 0x92297 db $0, "That", $4f db "burned some time.", $58 ; 0x92297 + 24 bytes _Route21AfterBattleText9: ; 0x922af db $0, "Oh wait! I got a", $4f db "bite! Yeah!", $57 ; 0x922af + 30 bytes _UnnamedText_511ad: ; 0x922cd db $0, $53, ": Hey!", $4f db $52, "!", $51 db "You're going to", $4f db "#MON LEAGUE?", $51 db "Forget it! You", $4f db "probably don't", $55 db "have any BADGEs!", $51 db "The guard won't", $4f db "let you through!", $51 db "By the way, did", $4f db "your #MON", $55 db "get any stronger?", $57 ; 0x922cd + 162 bytes _UnnamedText_511b2: ; 0x9236f db $0, "I heard #MON", $4f db "LEAGUE has many", $55 db "tough trainers!", $51 db "I have to figure", $4f db "out how to get", $55 db "past them!", $51 db "You should quit", $4f db "dawdling and get", $55 db "a move on!", $57 ; 0x9236f + 133 bytes _UnnamedText_511b7: ; 0x923f4 db $0, "Awww!", $4f db "You just lucked", $55 db "out!", $58 ; 0x923f4 + 28 bytes _UnnamedText_511bc: ; 0x92410 db $0, $53, ": What?", $4f db "Why do I have 2", $55 db "#MON?", $51 db "You should catch", $55 db "some more too!", $58 ; 0x92410 + 64 bytes _UnnamedText_511c1: ; 0x92450 db $0, $53, ": What?", $4f db $52, "! What a", $55 db "surprise to see", $55 db "you here!", $51 db "So you're going to", $4f db "#MON LEAGUE?", $51 db "You collected all", $4f db "the BADGEs too?", $55 db "That's cool!", $51 db "Then I'll whip you", $4f db $52, " as a", $55 db "warm up for", $55 db "#MON LEAGUE!", $51 db "Come on!", $57 ; 0x92450 + 182 bytes _UnnamedText_511c6: ; 0x92506 db $0, "That loosened me", $4f db "up! I'm ready for", $55 db "#MON LEAGUE!", $51 db $52, ", you need", $4f db "more practice!", $51 db "But hey, you know", $4f db "that! I'm out of", $55 db "here. Smell ya!", $57 ; 0x92506 + 125 bytes _UnnamedText_511cb: ; 0x92583 db $0, "What!?", $51 db "I was just", $4f db "careless!", $58 ; 0x92583 + 29 bytes _UnnamedText_511d0: ; 0x925a0 db $0, $53, ": Hahaha!", $4f db $52, "! That's", $55 db "your best? You're", $55 db "nowhere near as", $55 db "good as me, pal!", $51 db "Go train some", $4f db "more! You loser!", $58 ; 0x925a0 + 102 bytes _Route22Text3: ; 0x92606 db $0, "#MON LEAGUE", $4f db "Front Gate", $57 UnknownText_9261e: ; 0x9261e db $0, "You can pass here", $4f db "only if you have", $55 db "the @" ; 0x9261e + 41 bytes UnknownText_92647: ; 0x92647 TX_RAM $cd6d db $0, "!", $51 db "You don't have the", $4f db "@" ; 0x92647 + 25 bytes (0x92660) UnknownText_92660: ; 0x92660 TX_RAM $cd6d db $0, " yet!", $51 db "You have to have", $4f db "it to get to", $55 db "#MON LEAGUE!@@" ; 0x92660 + 54 bytes UnknownText_92696: ; 0x92696 db $0, "You can pass here", $4f db "only if you have", $55 db "the @" ; 0x92696 + 41 bytes UnknownText_926bf: ; 0x926bf TX_RAM $cd6d db $0, "!", $51 db "Oh! That is the", $4f db "@" ; 0x926bf + 23 bytes UnknownText_926d6: ; 0x926d6 TX_RAM $cd6d db $0, "!@@" ; 0x926d6 + 7 bytes _UnnamedText_513a3: ; 0x926dd db $0, $51 db "OK then! Please,", $4f db "go right ahead!", $57 ; 0x926dd + 35 bytes _Route23Text8: ; 0x92700 db $0, "VICTORY ROAD GATE", $4f db "- #MON LEAGUE", $57 _UnnamedText_51510: ; 0x92721 db $0, "Congratulations!", $4f db "You beat our 5", $55 db "contest trainers!@@" ; 0x92721 + 52 bytes _UnnamedText_51515: ; 0x92755 db $0, $51 db "You just earned a", $4f db "fabulous prize!", $58 ; 0x92755 + 36 bytes _UnnamedText_5151a: ; 0x92779 db $0, $52, " received", $4f db "a @" ; 0x92779 + 15 bytes UnknownText_92788: ; 0x92788 TX_RAM $cf4b db $0, "!@@" ; 0x92788 + 7 bytes _UnnamedText_51521: ; 0x9278f db $0, "You don't have", $4f db "any room!", $57 ; 0x9278f + 25 bytes _UnnamedText_51526: ; 0x927a8 db $0, "By the way, would", $4f db "you like to join", $55 db "TEAM ROCKET?", $51 db "We're a group", $4f db "dedicated to evil", $55 db "using #MON!", $51 db "Want to join?", $51 db "Are you sure?", $51 db "Come on, join us!", $51 db "I'm telling you", $4f db "to join!", $51 db "OK, you need", $4f db "convincing!", $51 db "I'll make you an", $4f db "offer you can't", $55 db "refuse!", $57 ; 0x927a8 + 226 bytes _UnnamedText_5152b: ; 0x9288a db $0, "Arrgh!", $4f db "You are good!", $58 ; 0x9288a + 22 bytes _UnnamedText_51530: ; 0x928a0 db $0, "With your ability,", $4f db "you could become", $55 db "a top leader in", $55 db "TEAM ROCKET!", $57 ; 0x928a0 + 66 bytes _Route24BattleText1: ; 0x928e2 db $0, "I saw your feat", $4f db "from the grass!", $57 ; 0x928e2 + 33 bytes SECTION "bank25",DATA,BANK[$25] _Route24EndBattleText1: ; 0x94000 db $0, "I", $4f db "thought not!", $58 ; 0x94000 + 16 bytes _Route24AfterBattleText1: ; 0x94010 db $0, "I hid because the", $4f db "people on the", $55 db "bridge scared me!", $57 ; 0x94010 + 51 bytes _Route24BattleText2: ; 0x94043 db $0, "OK! I'm No. 5!", $4f db "I'll stomp you!", $57 ; 0x94043 + 30 bytes _Route24EndBattleText2: ; 0x94061 db $0, "Whoa!", $4f db "Too much!", $58 ; 0x94061 + 17 bytes _Route24AfterBattleText2: ; 0x94072 db $0, "I did my best, I", $4f db "have no regrets!", $57 ; 0x94072 + 35 bytes _Route24BattleText3: ; 0x94095 db $0, "I'm No. 4!", $4f db "Getting tired?", $57 ; 0x94095 + 26 bytes _Route24EndBattleText3: ; 0x940af db $0, "I lost", $4f db "too!", $58 ; 0x940af + 13 bytes _Route24AfterBattleText3: ; 0x940bc db $0, "I did my best, so", $4f db "I've no regrets!", $57 ; 0x940bc + 35 bytes _Route24BattleText4: ; 0x940df db $0, "Here's No. 3!", $4f db "I won't be easy!", $57 ; 0x940df + 30 bytes _Route24EndBattleText4: ; 0x940fd db $0, "Ow!", $4f db "Stomped flat!", $58 ; 0x940fd + 19 bytes _Route24AfterBattleText4: ; 0x94110 db $0, "I did my best, I", $4f db "have no regrets!", $57 ; 0x94110 + 35 bytes _Route24BattleText5: ; 0x94133 db $0, "I'm second!", $4f db "Now it's serious!", $57 ; 0x94133 + 29 bytes _Route24EndBattleText5: ; 0x94150 db $0, "How could I", $4f db "lose?", $58 ; 0x94150 + 19 bytes _Route24AfterBattleText5: ; 0x94163 db $0, "I did my best, I", $4f db "have no regrets!", $57 ; 0x94163 + 35 bytes _Route24BattleText6: ; 0x94186 db $0, "This is NUGGET", $4f db "BRIDGE! Beat us 5", $55 db "trainers and win", $55 db "a fabulous prize!", $51 db "Think you got", $4f db "what it takes?", $57 ; 0x94186 + 98 bytes _Route24EndBattleText6: ; 0x941e8 db $0, "Whoo!", $4f db "Good stuff!", $58 ; 0x941e8 + 19 bytes _Route24AfterBattleText6: ; 0x941fb db $0, "I did my best, I", $4f db "have no regrets!", $57 ; 0x941fb + 35 bytes _Route25BattleText1: ; 0x9421e db $0, "Local trainers", $4f db "come here to", $55 db "practice!", $57 ; 0x9421e + 39 bytes _Route25EndBattleText1: ; 0x94245 db $0, "You're", $4f db "decent.", $58 ; 0x94245 + 15 bytes _Route25AfterBattleText1: ; 0x94254 db $0, "All #MON have", $4f db "weaknesses. It's", $55 db "best to raise", $55 db "different kinds.", $57 ; 0x94254 + 62 bytes _Route25BattleText2: ; 0x94292 db $0, "Dad took me to a", $4f db "great party on", $55 db "S.S.ANNE at", $55 db "VERMILION CITY!", $57 ; 0x94292 + 61 bytes _Route25EndBattleText2: ; 0x942cf db $0, "I'm", $4f db "not mad!", $58 ; 0x942cf + 13 bytes _Route25AfterBattleText2: ; 0x942dc db $0, "On S.S.ANNE, I", $4f db "saw trainers from", $55 db "around the world.", $57 ; 0x942dc + 52 bytes _Route25BattleText3: ; 0x94310 db $0, "I'm a cool guy.", $4f db "I've got a girl", $55 db "friend!", $57 ; 0x94310 + 39 bytes _Route25EndBattleText3: ; 0x94337 db $0, "Aww,", $4f db "darn...", $58 ; 0x94337 + 14 bytes _Route25AfterBattleText3: ; 0x94345 db $0, "Oh well. My girl", $4f db "will cheer me up.", $57 ; 0x94345 + 36 bytes _Route25BattleText4: ; 0x94369 db $0, "Hi! My boy", $4f db "friend is cool!", $57 ; 0x94369 + 28 bytes _Route25EndBattleText4: ; 0x94385 db $0, "I was in", $4f db "bad condition!", $58 ; 0x94385 + 25 bytes _Route25AfterBattleText4: ; 0x9439e db $0, "I wish my guy was", $4f db "as good as you!", $57 ; 0x9439e + 35 bytes _Route25BattleText5: ; 0x943c1 db $0, "I knew I had to", $4f db "fight you!", $57 ; 0x943c1 + 28 bytes _Route25EndBattleText5: ; 0x943dd db $0, "I knew", $4f db "I'd lose too!", $58 ; 0x943dd + 21 bytes _Route25AfterBattleText5: ; 0x943f2 db $0, "If your #MON", $4f db "gets confused or", $55 db "falls asleep,", $55 db "switch it!", $57 ; 0x943f2 + 56 bytes _Route25BattleText6: ; 0x9442a db $0, "My friend has a", $4f db "cute #MON.", $55 db "I'm so jealous!", $57 ; 0x9442a + 43 bytes _Route25EndBattleText6: ; 0x94455 db $0, "I'm", $4f db "not so jealous!", $58 ; 0x94455 + 20 bytes _Route25AfterBattleText6: ; 0x94469 db $0, "You came from MT.", $4f db "MOON? May I have", $55 db "a CLEFAIRY?", $57 ; 0x94469 + 48 bytes _Route25BattleText7: ; 0x94499 db $0, "I just got down", $4f db "from MT.MOON,", $55 db "but I'm ready!", $57 ; 0x94499 + 45 bytes _Route25EndBattleText7: ; 0x944c6 db $0, "You", $4f db "worked hard!", $58 ; 0x944c6 + 18 bytes _Route25AfterBattleText7: ; 0x944d8 db $0, "Drat!", $4f db "A ZUBAT bit me", $55 db "back in there.", $57 ; 0x944d8 + 37 bytes _Route25BattleText8: ; 0x944fd db $0, "I'm off to see a", $4f db "#MON collector", $55 db "at the cape!", $57 ; 0x944fd + 45 bytes _Route25EndBattleText8: ; 0x9452a db $0, "You", $4f db "got me.", $58 ; 0x9452a + 13 bytes _Route25AfterBattleText8: ; 0x94537 db $0, "The collector has", $4f db "many rare kinds", $55 db "of #MON.", $57 ; 0x94537 + 44 bytes _Route25BattleText9: ; 0x94563 db $0, "You're going to", $4f db "see BILL? First,", $55 db "let's fight!", $57 ; 0x94563 + 45 bytes _Route25EndBattleText9: ; 0x94590 db $0, "You're", $4f db "something.", $58 ; 0x94590 + 18 bytes _Route25AfterBattleText9: ; 0x945a2 db $0, "The trail below", $4f db "is a shortcut to", $55 db "CERULEAN CITY.", $57 ; 0x945a2 + 49 bytes _Route25Text11: ; 0x945d3 db $0, "SEA COTTAGE", $4f db "BILL lives here!", $57 _UnnamedText_7361e: ; 0x945f1 db $0, "The file data is", $4f db "destroyed!", $58 ; 0x945f1 + 29 bytes _UnnamedText_7377d: ; 0x9460e db $0, "Would you like to", $4f db "SAVE the game?", $57 ; 0x9460e + 34 bytes _UnnamedText_73782: ; 0x94630 db $0, $52, " saved", $4f db "the game!", $57 ; 0x94630 + 19 bytes _UnnamedText_73787: ; 0x94643 db $0, "The older file", $4f db "will be erased to", $55 db "save. Okay?", $57 ; 0x94643 + 46 bytes _UnnamedText_73909: ; 0x94671 db $0, "When you change a", $4f db "#MON BOX, data", $55 db "will be saved.", $51 db "Is that okay?", $57 ; 0x94671 + 63 bytes _UnnamedText_739d4: ; 0x946b0 db $0, "Choose a", $4f db $4a, " BOX.@@" ; 0x946b0 + 17 bytes _UnnamedText_3af3e: ; 0x946c2 TX_RAM $cf4b db $0, " evolved", $57 ; 0x946c2 + 13 bytes _UnnamedText_3af43: ; 0x946cf db $0, $4f db "into @" ; 0x946cf + 8 bytes UnknownText_946d7: ; 0x946d7 TX_RAM $cd6d db $0, "!", $57 ; 0x946d7 + 6 bytes _UnnamedText_3af48: ; 0x946dd db $0, "Huh? @" ; 0x946dd + 7 bytes UnknownText_946e4: ; 0x946e4 TX_RAM $cf4b db $0, $4f db "stopped evolving!", $58 ; 0x946e4 + 23 bytes _UnnamedText_3af4d: ; 0x946fb db $0, "What? @" ; 0x946fb + 8 bytes UnknownText_94703: ; 0x94703 TX_RAM $cf4b db $0, $4f db "is evolving!", $57 ; 0x94703 + 18 bytes _UnnamedText_3f245: ; 0x94715 db $0, $59, $4f db "fell asleep!", $58 ; 0x94715 + 16 bytes _UnnamedText_3f24a: ; 0x94725 db $0, $59, "'s", $4f db "already asleep!", $58 ; 0x94725 + 20 bytes _UnnamedText_3f2df: ; 0x94739 db $0, $59, $4f db "was poisoned!", $58 ; 0x94739 + 17 bytes _UnnamedText_3f2e4: ; 0x9474a db $0, $59, "'s", $4f db "badly poisoned!", $58 ; 0x9474a + 20 bytes _UnnamedText_3f3d8: ; 0x9475e db $0, $59, $4f db "was burned!", $58 ; 0x9475e + 15 bytes _UnnamedText_3f3dd: ; 0x9476d db $0, $59, $4f db "was frozen solid!", $58 ; 0x9476d + 21 bytes _UnnamedText_3f423: ; 0x94782 db $0, "Fire defrosted", $4f db $59, "!", $58 ; 0x94782 + 19 bytes UnknownText_94795: ; 0x94795 db $0, $5a, "'s", $4f db "@" ; 0x94795 + 5 bytes UnknownText_9479a: ; 0x9479a TX_RAM $cf4b db $0, "@@" ; 0x9479a + 6 bytes UnknownText_947a0: ; 0x947a0 db $0, $4c, "greatly@@" ; 0x947a0 + 11 bytes _UnnamedText_3f547: ; 0x947ab db $0, " rose!", $58 ; 0x947ab + 8 bytes UnknownText_947b3: ; 0x947b3 db $0, $59, "'s", $4f db "@" ; 0x947b3 + 5 bytes UnknownText_947b8: ; 0x947b8 TX_RAM $cf4b db $0, "@@" ; 0x947b8 + 6 bytes UnknownText_947be: ; 0x947be db $0, $4c, "greatly@@" ; 0x947be + 11 bytes _UnnamedText_3f683: ; 0x947c9 db $0, " fell!", $58 ; 0x947c9 + 8 bytes _UnnamedText_3f802: ; 0x947d1 db $0, $5a, $4f db "ran from battle!", $58 ; 0x947d1 + 20 bytes _UnnamedText_3f807: ; 0x947e5 db $0, $59, $4f db "ran away scared!", $58 ; 0x947e5 + 20 bytes _UnnamedText_3f80c: ; 0x947f9 db $0, $59, $4f db "was blown away!", $58 ; 0x947f9 + 19 bytes UnnamedText_9480c: ; 0x9480c db $0, $5a, "@@" ; 0x9480c + 4 bytes _UnnamedText_3f8f9: ; 0x94810 db $0, $4f db "made a whirlwind!", $58 ; 0x94810 + 20 bytes _UnnamedText_3f8fe: ; 0x94824 db $0, $4f db "took in sunlight!", $58 ; 0x94824 + 20 bytes _UnnamedText_3f903: ; 0x94838 db $0, $4f db "lowered its head!", $58 ; 0x94838 + 20 bytes _UnnamedText_3f908: ; 0x9484c db $0, $4f db "is glowing!", $58 ; 0x9484c + 14 bytes _UnnamedText_3f90d: ; 0x9485a db $0, $4f db "flew up high!", $58 ; 0x9485a + 16 bytes _UnnamedText_3f912: ; 0x9486a db $0, $4f db "dug a hole!", $58 ; 0x9486a + 14 bytes _UnnamedText_3f9a1: ; 0x94878 db $0, $59, $4f db "became confused!", $58 ; 0x94878 + 20 bytes _UnnamedText_3fa77: ; 0x9488c db $0, $5a, $4f db "learned", $55 db "@" ; 0x9488c + 12 bytes UnnamedText_94898: ; 0x94898 TX_RAM $cd6d db $0, "!", $58 ; 0x94898 + 6 bytes _UnnamedText_3fb09: ; 0x9489e db $0, $59, "'s", $4f db "@" ; 0x9489e + 5 bytes UnnamedText_948a3: ; 0x948a3 TX_RAM $cd6d db $0, " was", $55 db "disabled!", $58 ; 0x948a3 + 19 bytes _UnnamedText_3fb3e: ; 0x948b6 db $0, "Nothing happened!", $58 ; 0x948b6 + 19 bytes _UnnamedText_3fb49: ; 0x948c9 db $0, "No effect!", $58 ; 0x948c9 + 12 bytes _UnnamedText_3fb59: ; 0x948d5 db $0, "But, it failed! ", $58 ; 0x948d5 + 18 bytes _UnnamedText_3fb64: ; 0x948e7 db $0, "It didn't affect", $4f db $59, "!", $58 ; 0x948e7 + 20 bytes _UnnamedText_3fb69: ; 0x948fb db $0, $59, $4f db "is unaffected!", $58 ; 0x948fb + 18 bytes _UnnamedText_3fb74: ; 0x9490d db $0, $59, "'s", $4f db "paralyzed! It may", $55 db "not attack!", $58 ; 0x9490d + 34 bytes _UnnamedText_17e1d: ; 0x9492f db $0, "It created a", $4f db "SUBSTITUTE!", $58 ; 0x9492f + 26 bytes _UnnamedText_17e22: ; 0x94949 db $0, $5a, $4f db "has a SUBSTITUTE!", $58 ; 0x94949 + 21 bytes _UnnamedText_17e27: ; 0x9495e db $0, "Too weak to make", $4f db "a SUBSTITUTE!", $58 ; 0x9495e + 32 bytes _UnnamedText_2ff04: ; 0x9497e db $0, "Coins scattered", $4f db "everywhere!", $58 ; 0x9497e + 29 bytes _UnnamedText_27fb3: ; 0x9499b db $0, $5a, "'s", $4f db "getting pumped!", $58 ; 0x9499b + 20 bytes _UnnamedText_2bef2: ; 0x949af db $0, $59, $4f db "was seeded!", $58 ; 0x949af + 15 bytes _UnnamedText_2bef7: ; 0x949be db $0, $59, $4f db "evaded attack!", $58 ; 0x949be + 18 bytes _UnnamedText_1399e: ; 0x949d0 db $0, $5a, "'s", $4f db "hit with recoil!", $58 ; 0x949d0 + 21 bytes _UnnamedText_139cd: ; 0x949e5 db $0, "Converted type to", $4f db $59, "'s!", $58 ; 0x949e5 + 23 bytes _UnnamedText_13a53: ; 0x949fc db $0, "All STATUS changes", $4f db "are eliminated!", $58 ; 0x949fc + 36 bytes _UnnamedText_3baa2: ; 0x94a20 db $0, $5a, $4f db "started sleeping!", $57 ; 0x94a20 + 21 bytes _UnnamedText_3baa7: ; 0x94a35 db $0, $5a, $4f db "fell asleep and", $55 db "became healthy!", $57 ; 0x94a35 + 35 bytes _UnnamedText_3baac: ; 0x94a58 db $0, $5a, $4f db "regained health!", $58 ; 0x94a58 + 20 bytes _UnnamedText_3bb92: ; 0x94a6c db $0, $5a, $4f db "transformed into", $55 db "@" ; 0x94a6c + 21 bytes UnnamedText_94a81: ; 0x94a81 TX_RAM $cd6d db $0, "!", $58 ; 0x94a81 + 6 bytes _UnnamedText_3bbd7: ; 0x94a87 db $0, $5a, "'s", $4f db "protected against", $55 db "special attacks!", $58 ; 0x94a87 + 39 bytes _UnnamedText_3bbdc: ; 0x94aae db $0, $5a, $4f db "gained armor!", $58 ; 0x94aae + 17 bytes _UnnamedText_33f52: ; 0x94abf db $0, $5a, "'s", $4f db "shrouded in mist!", $58 ; 0x94abf + 22 bytes _UnnamedText_78dc: ; 0x94ad5 db $0, "Sucked health from", $4f db $59, "!", $58 ; 0x94ad5 + 23 bytes _UnnamedText_78e1: ; 0x94aec db $0, $59, "'s", $4f db "dream was eaten!", $58 ; 0x94aec + 21 bytes _BattleCenterMText1: ; 0x94b01 db $0, "!", $57 _TradeCenterMText1: ; 0x94b04 db $0, "!", $57 INCLUDE "text/mapRedsHouse1F.tx" INCLUDE "text/mapBluesHouse.tx" _OaksLabGaryText1: ; 0x94d5b db $0, $53, ": Yo", $4f db $52, "! Gramps", $55 db "isn't around!", $57 ; 0x94d5b + 30 bytes _OaksLabText40: ; 0x94d79 db $0, $53, ": Heh, I", $4f db "don't need to be", $55 db "greedy like you!", $51 db "Go ahead and", $4f db "choose, ", $52, "!", $57 ; 0x94d79 + 68 bytes _OaksLabText41: ; 0x94dbd db $0, $53, ": My", $4f db "#MON looks a", $55 db "lot stronger.", $57 ; 0x94dbd + 34 bytes _OaksLabText39: ; 0x94ddf db $0 db "Those are #", $4f db "BALLs. They", $55 db "contain #MON!", $57 ; 0x94e06 _OaksLabCharmanderText: ; 0x94e06 db $0, "So! You want the", $4f db "fire #MON,", $55 db "CHARMANDER?", $57 ; 0x94e2f _OaksLabSquirtleText: ; 0x94e2f db $0, "So! You want the", $4f db "water #MON,", $55 db "SQUIRTLE?", $57 ; 0x94e57 _OaksLabBulbasaurText: ; 0x94e57 db $0, "So! You want the", $4f db "plant #MON,", $55 db "BULBASAUR?", $57 ; 0x94e80 _OaksLabMonEnergeticText: ; 0x94e80 db $0, "This #MON is", $4f db "really energetic!", $58 ; 0x94ea0 _OaksLabReceivedMonText: ; 0x94ea0 db $0, $52, " received", $4f db "a @" TX_RAM $cd6d db $0, "!@@" ; 0x94eb6 _OaksLabLastMonText: ; 0x94eb6 db $0, "That's PROF.OAK's", $4f db "last #MON!", $57 ; 0x94ed2 _UnnamedText_1d2f0: ; 0x94ed2 db $0, "OAK: Now, ", $52, ",", $4f db "which #MON do", $55 db "you want?", $57 ; 0x94ef8 _UnnamedText_1d2f5: ; 0x94ef8 db $0, "OAK: If a wild", $4f db "#MON appears,", $55 db "your #MON can", $55 db "fight against it!", $57 ; 0x94f36 _UnnamedText_1d2fa: ; 0x94f36 db $0, "OAK: ", $52, ",", $4f db "raise your young", $55 db "#MON by making", $55 db "it fight!", $57 ; 0x94f36 + 51 bytes _OaksLabDeliverParcelText1: ; 0x94f69 db $0, "OAK: Oh, ", $52, "!", $51 db "How is my old", $4f db "#MON?", $51 db "Well, it seems to", $4f db "like you a lot.", $51 db "You must be", $4f db "talented as a", $55 db "#MON trainer!", $51 db "What? You have", $4f db "something for me?", $51 db $52, " delivered", $4f db "OAK's PARCEL.@@" ; 0x94f69 + 166 bytes _OaksLabDeliverParcelText2: ; 0x9500f db $0, $51 db "Ah! This is the", $4f db "custom # BALL", $55 db "I ordered!", $55 db "Thank you!", $57 ; 0x9500f + 54 bytes _OaksLabAroundWorldText: ; 0x95045 db $0, "#MON around the", $4f db "world wait for", $55 db "you, ", $52, "!", $57 ; 0x95045 + 40 bytes _OaksLabGivePokeballsText1: ; 0x9506d db $0, "OAK: You can't get", $4f db "detailed data on", $55 db "#MON by just", $55 db "seeing them.", $51 db "You must catch", $4f db "them! Use these", $55 db "to capture wild", $55 db "#MON.", $51 db $52, " got 5", $4f db "# BALLs!@@" ; 0x9506d + 133 bytes _OaksLabGivePokeballsText2: ; 0x950f2 db $0, $51 db "When a wild", $4f db "#MON appears,", $55 db "it's fair game.", $51 db "Just throw a #", $4f db "BALL at it and try", $4f db "to catch it!", $51 db "This won't always", $4f db "work, though.", $51 db "A healthy #MON", $4f db "could escape. You", $55 db "have to be lucky!", $57 ; 0x950f2 + 172 bytes _OaksLabPleaseVisitText: ; 0x9519e db $0, "OAK: Come see me", $4f db "sometimes.", $51 db "I want to know how", $4f db "your #DEX is", $55 db "coming along.", $57 ; 0x9519e + 75 bytes _UnnamedText_1d31d: ; 0x951e9 db $0, "OAK: Good to see ", $4f db "you! How is your ", $55 db "#DEX coming? ", $55 db "Here, let me take", $55 db "a look!", $58 ; 0x951e9 + 77 bytes _UnnamedText_1d32c: ; 0x95236 db $0, "It's encyclopedia-", $4f db "like, but the", $55 db "pages are blank!", $57 ; 0x95236 + 50 bytes _OaksLabText8: ; 0x95268 db $0, "?", $57 _UnnamedText_1d340: ; 0x9526b db $0, "PROF.OAK is the", $4f db "authority on", $55 db "#MON!", $51 db "Many #MON", $4f db "trainers hold him", $55 db "in high regard!", $57 ; 0x9526b + 80 bytes _OaksLabRivalWaitingText: ; 0x952bb db $0, $53, ": Gramps!", $4f db "I'm fed up with", $55 db "waiting!", $57 ; 0x952bb + 36 bytes _OaksLabChooseMonText: ; 0x952df db $0, "OAK: ", $53, "?", $4f db "Let me think...", $51 db "Oh, that's right,", $4f db "I told you to", $55 db "come! Just wait!", $51 db "Here, ", $52, "!", $51 db "There are 3", $4f db "#MON here!", $51 db "Haha!", $51 db "They are inside", $4f db "the # BALLs.", $51 db "When I was young,", $4f db "I was a serious", $55 db "#MON trainer!", $51 db "In my old age, I", $4f db "have only 3 left,", $55 db "but you can have", $55 db "one! Choose!", $57 ; 0x952df + 253 bytes _OaksLabRivalInterjectionText: ; 0x953dc db $0, $53, ": Hey!", $4f db "Gramps! What", $55 db "about me?", $57 ; 0x953dc + 32 bytes _OaksLabBePatientText: ; 0x953fc db $0, "OAK: Be patient!", $4f db $53, ", you can", $55 db "have one too!", $57 ; 0x953fc + 43 bytes _OaksLabLeavingText: ; 0x95427 db $0, "OAK: Hey! Don't go", $4f db "away yet!", $57 ; 0x95427 + 29 bytes _OaksLabRivalPickingMonText: ; 0x95444 db $0, $53, ": I'll take", $4f db "this one, then!", $57 ; 0x95444 + 29 bytes _OaksLabRivalReceivedMonText: ; 0x95461 db $0, $53, " received", $4f db "a @" ; 0x95470 UnnamedText_95470: ; 0x95470 TX_RAM $cd6d db $0, "!@@" ; 0x95470 + 7 bytes _OaksLabRivalChallengeText: ; 0x95477 db $0, $53, ": Wait", $4f db $52, "!", $55 db "Let's check out", $55 db "our #MON!", $51 db "Come on, I'll take", $4f db "you on!", $57 ; 0x95477 + 63 bytes _UnnamedText_1d3be: ; 0x954b6 db $0, "WHAT?", $4f db "Unbelievable!", $55 db "I picked the", $55 db "wrong #MON!", $58 ; 0x954b6 + 46 bytes _UnnamedText_1d3c3: ; 0x954e4 db $0, $53, ": Yeah! Am", $4f db "I great or what?", $58 ; 0x954e4 + 30 bytes _OaksLabRivalToughenUpText: ; 0x95502 db $0, $53, ": Okay!", $4f db "I'll make my", $55 db "#MON fight to", $55 db "toughen it up!", $51 db $52, "! Gramps!", $4f db "Smell you later!", $57 ; 0x95502 + 79 bytes _OaksLabText21: ; 0x95551 db $0, $53, ": Gramps!", $57 ; 0x95551 + 12 bytes _OaksLabText22: ; 0x9555d db $0, $53, ": What did", $4f db "you call me for?", $57 ; 0x9555d + 30 bytes _OaksLabText23: ; 0x9557b db $0, "OAK: Oh right! I", $4f db "have a request", $55 db "of you two.", $57 ; 0x9557b + 45 bytes _OaksLabText24: ; 0x955a8 db $0, "On the desk there", $4f db "is my invention,", $55 db "#DEX!", $51 db "It automatically", $4f db "records data on", $55 db "#MON you've", $55 db "seen or caught!", $51 db "It's a hi-tech", $4f db "encyclopedia!", $57 ; 0x955a8 + 130 bytes _OaksLabText25: ; 0x9562a db $0, "OAK: ", $52, " and", $4f db $53, "! Take", $55 db "these with you!", $51 db $52, " got", $4f db "#DEX from OAK!@@" ; 0x9562a + 58 bytes _OaksLabText26: ; 0x95664 db $0, "To make a complete", $4f db "guide on all the", $55 db "#MON in the", $55 db "world...", $51 db "That was my dream!", $51 db "But, I'm too old!", $4f db "I can't do it!", $51 db "So, I want you two", $4f db "to fulfill my", $55 db "dream for me!", $51 db "Get moving, you", $4f db "two!", $51 db "This is a great", $4f db "undertaking in", $55 db "#MON history!", $57 ; 0x95664 + 221 bytes _OaksLabText27: ; 0x95741 db $0, $53, ": Alright", $4f db "Gramps! Leave it", $55 db "all to me!", $51 db $52, ", I hate to", $4f db "say it, but I", $55 db "don't need you!", $51 db "I know! I'll", $4f db "borrow a TOWN MAP", $55 db "from my sis!", $51 db "I'll tell her not", $4f db "to lend you one,", $55 db $52, "! Hahaha!", $57 ; 0x95741 + 170 bytes _UnnamedText_1d405: ; 0x957eb db $0, "I study #MON as", $4f db "PROF.OAK's AIDE.", $57 ; 0x957eb + 33 bytes _UnnamedText_441cc: ; 0x9580c db $0, "#DEX comp-", $4f db "letion is:", $51 db "@" ; 0x9580c + 24 bytes UnnamedText_95824: ; 0x95824 TX_NUM $ffdb, 1, 3 db $0, " #MON seen", $4f db "@" ; 0x95835 UnnamedText_95835: ; 0x95835 TX_NUM $ffdc, 1, 3 db $0, " #MON owned", $51 db "PROF.OAK's", $4f db "Rating:", $58 ; 0x95858 _UnnamedText_44201: ; 0x95858 db $0, "You still have", $4f db "lots to do.", $55 db "Look for #MON", $55 db "in grassy areas!", $57 ; 0x95858 + 59 bytes _UnnamedText_44206: ; 0x95893 db $0, "You're on the", $4f db "right track! ", $55 db "Get a FLASH HM", $55 db "from my AIDE!", $57 ; 0x95893 + 57 bytes _UnnamedText_4420b: ; 0x958cc db $0, "You still need", $4f db "more #MON!", $55 db "Try to catch", $55 db "other species!", $57 ; 0x958cc + 55 bytes _UnnamedText_44210: ; 0x95903 db $0, "Good, you're", $4f db "trying hard!", $55 db "Get an ITEMFINDER", $55 db "from my AIDE!", $57 ; 0x95903 + 58 bytes _UnnamedText_44215: ; 0x9593d db $0, "Looking good!", $4f db "Go find my AIDE", $55 db "when you get 50!", $57 ; 0x9593d + 48 bytes _UnnamedText_4421a: ; 0x9596d db $0, "You finally got at", $4f db "least 50 species!", $55 db "Be sure to get", $55 db "EXP.ALL from my", $55 db "AIDE!", $57 ; 0x9596d + 75 bytes _UnnamedText_4421f: ; 0x959b8 db $0, "Ho! This is geting", $4f db "even better!", $57 ; 0x959b8 + 33 bytes _UnnamedText_44224: ; 0x959d9 db $0, "Very good!", $4f db "Go fish for some", $55 db "marine #MON!", $57 ; 0x959d9 + 42 bytes _UnnamedText_44229: ; 0x95a03 db $0, "Wonderful!", $4f db "Do you like to", $55 db "collect things?", $57 ; 0x95a03 + 43 bytes _UnnamedText_4422e: ; 0x95a2e db $0, "I'm impressed!", $4f db "It must have been", $55 db "difficult to do!", $57 ; 0x95a2e + 50 bytes _UnnamedText_44233: ; 0x95a60 db $0, "You finally got at", $4f db "least 100 species!", $55 db "I can't believe", $55 db "how good you are!", $57 ; 0x95a60 + 72 bytes _UnnamedText_44238: ; 0x95aa8 db $0, "You even have the", $4f db "evolved forms of", $55 db "#MON! Super!", $57 ; 0x95aa8 + 49 bytes _UnnamedText_4423d: ; 0x95ad9 db $0, "Excellent! Trade", $4f db "with friends to", $55 db "get some more!", $57 ; 0x95ad9 + 49 bytes _UnnamedText_44242: ; 0x95b0a db $0, "Outstanding!", $4f db "You've become a", $55 db "real pro at this!", $57 ; 0x95b0a + 47 bytes _UnnamedText_44247: ; 0x95b39 db $0, "I have nothing", $4f db "left to say!", $55 db "You're the", $55 db "authority now!", $57 ; 0x95b39 + 54 bytes _UnnamedText_4424c: ; 0x95b6f db $0, "Your #DEX is", $4f db "entirely complete!", $55 db "Congratulations!", $57 ; 0x95b6f + 50 bytes _ViridianPokeCenterText2: ; 0x95ba1 _ViridianPokeCenterText1: ; 0x95ba1 db $0, "You can use that", $4f db "PC in the corner.", $51 db "The receptionist", $4f db "told me. So kind!", $57 _ViridianPokeCenterText3: ; 0x95be8 db $0, "There's a #MON", $4f db "CENTER in every", $55 db "town ahead.", $51 db "They don't charge", $4f db "any money either!", $57 _ViridianMartText1: ; 0x95c36 db $0, "Okay! Say hi to", $4f db "PROF.OAK for me!", $57 _UnnamedText_1d4f5: ; 0x95c58 db $0, "Hey! You came from", $4f db "PALLET TOWN?", $57 ; 0x95c58 + 33 bytes ViridianMartParcelQuestText: ; 0x95c79 db $0, "You know PROF.", $4f db "OAK, right?", $51 db "His order came in.", $4f db "Will you take it", $55 db "to him?", $51 db $52, " got", $4f db "OAK's PARCEL!@@" ; 0x95c79 + 92 bytes _ViridianMartText2: ; 0x95cd5 db $0, "This shop sells", $4f db "many ANTIDOTEs.", $57 _ViridianMartText3: ; 0x95cf6 db $0, "No! POTIONs are", $4f db "all sold out.", $57 _SchoolText1: ; 0x95d15 db $0, "Whew! I'm trying", $4f db "to memorize all", $55 db "my notes.", $57 _SchoolText2: ; 0x95d40 db $0, "Okay!", $51 db "Be sure to read", $4f db "the blackboard", $55 db "carefully!", $57 _ViridianHouseText1: ; 0x95d71 db $0, "Coming up with", $4f db "nicknames is fun,", $55 db "but hard.", $51 db "Simple names are", $4f db "the easiest to", $55 db "remember.", $57 _ViridianHouseText2: ; 0x95dc7 db $0, "My Daddy loves", $4f db "#MON too.", $57 _UnnamedText_1d5b1: ; 0x95de1 db $0, "SPEARY: Tetweet!", $57 ; 0x95de1 + 18 bytes _ViridianHouseText4: ; 0x95df3 db $0, "SPEAROW", $4f db "Name: SPEARY", $57 _UnnamedText_74ace: ; 0x95e09 db $0, "Fwahahaha! This is", $4f db "my hideout!", $51 db "I planned to", $4f db "resurrect TEAM", $55 db "ROCKET here!", $51 db "But, you have", $4f db "caught me again!", $55 db "So be it! This", $55 db "time, I'm not", $55 db "holding back!", $51 db "Once more, you", $4f db "shall face", $55 db "GIOVANNI, the", $55 db "greatest trainer!", $57 ; 0x95e09 + 204 bytes _UnnamedText_74ad3: ; 0x95ed5 db $0, "Ha!", $4f db "That was a truly", $55 db "intense fight!", $55 db "You have won!", $55 db "As proof, here is", $55 db "the EARTHBADGE!@@" ; 0x95ed5 + 85 bytes _UnnamedText_74ad9: ; 0x95f2b db $0, "Having lost, I", $4f db "cannot face my", $55 db "underlings!", $55 db "TEAM ROCKET is", $55 db "finished forever!", $51 db "I will dedicate my", $4f db "life to the study", $55 db "of #MON!", $51 db "Let us meet again", $4f db "some day!", $55 db "Farewell!@@" ; 0x95f2b + 160 bytes _ViridianGymText12: ; 0x95fcc db $0, "The EARTHBADGE", $4f db "makes #MON of", $55 db "any level obey!", $51 db "It is evidence of", $4f db "your mastery as a", $55 db "#MON trainer!", $51 db "With it, you can", $4f db "enter the #MON", $55 db "LEAGUE!", $51 db "It is my gift for", $4f db "your #MON", $55 db "LEAGUE challenge!", $57 ; 0x95fcc + 182 bytes _ReceivedTM27Text: ; 0x96082 db $0, $52, " received", $4f db "TM27!@@" ; 0x96082 + 19 bytes _TM27ExplanationText: ; 0x96095 db $0, $51 db "TM27 is FISSURE!", $4f db "It will take out", $55 db "#MON with just", $55 db "one hit!", $51 db "I made it when I", $4f db "ran the GYM here,", $55 db "too long ago...", $57 ; 0x96095 + 111 bytes _TM27NoRoomText: ; 0x96104 db $0, "You do not have", $4f db "space for this!", $57 ; 0x96104 + 33 bytes _ViridianGymBattleText1: ; 0x96125 db $0, "Heh! You must be", $4f db "running out of", $55 db "steam by now!", $57 ; 0x96125 + 47 bytes _ViridianGymEndBattleText1: ; 0x96154 db $0, "I", $4f db "ran out of gas!", $58 ; 0x96154 + 19 bytes _ViridianGymAfterBattleText1: ; 0x96167 db $0, "You need power to", $4f db "keep up with our", $55 db "GYM LEADER!", $57 ; 0x96167 + 48 bytes _ViridianGymBattleText2: ; 0x96197 db $0, "Rrrroar! I'm", $4f db "working myself", $55 db "into a rage!", $57 ; 0x96197 + 41 bytes _ViridianGymEndBattleText2: ; 0x961c0 db $0, "Wargh!", $58 ; 0x961c0 + 8 bytes _ViridianGymAfterBattleText2: ; 0x961c8 db $0, "I'm still not", $4f db "worthy!", $57 ; 0x961c8 + 22 bytes _ViridianGymBattleText3: ; 0x961de db $0, "#MON and I, we", $4f db "make wonderful", $55 db "music together!", $57 ; 0x961de + 47 bytes _ViridianGymEndBattleText3: ; 0x9620d db $0, "You are in", $4f db "perfect harmony!", $58 ; 0x9620d + 29 bytes _ViridianGymAfterBattleText3: ; 0x9622a db $0, "Do you know the", $4f db "identity of our", $55 db "GYM LEADER?", $57 ; 0x9622a + 45 bytes _ViridianGymBattleText4: ; 0x96257 db $0, "Karate is the", $4f db "ultimate form of", $55 db "martial arts!", $57 ; 0x96257 + 46 bytes _ViridianGymEndBattleText4: ; 0x96285 db $0, "Atcho!", $58 ; 0x96285 + 8 bytes _ViridianGymAfterBattleText4: ; 0x9628d db $0, "If my #MON", $4f db "were as good at", $55 db "Karate as I...", $57 ; 0x9628d + 43 bytes _ViridianGymBattleText5: ; 0x962b8 db $0, "The truly talented", $4f db "win with style!", $57 ; 0x962b8 + 36 bytes _ViridianGymEndBattleText5: ; 0x962dc db $0, "I", $4f db "lost my grip!", $58 ; 0x962dc + 17 bytes _ViridianGymAfterBattleText5: ; 0x962ed db $0, "The LEADER will", $4f db "scold me!", $57 ; 0x962ed + 27 bytes _ViridianGymBattleText6: ; 0x96308 db $0, "I'm the KARATE", $4f db "KING! Your fate", $55 db "rests with me!", $57 ; 0x96308 + 46 bytes _ViridianGymEndBattleText6: ; 0x96336 db $0, "Ayah!", $58 ; 0x96336 + 7 bytes _ViridianGymAfterBattleText6: ; 0x9633d db $0, "#MON LEAGUE?", $4f db "You? Don't get", $55 db "cocky!", $57 ; 0x9633d + 35 bytes _ViridianGymBattleText7: ; 0x96360 db $0, "Your #MON will", $4f db "cower at the", $55 db "crack of my whip!", $57 ; 0x96360 + 47 bytes _ViridianGymEndBattleText7: ; 0x9638f db $0, "Yowch!", $4f db "Whiplash!", $58 ; 0x9638f + 18 bytes _ViridianGymAfterBattleText7: ; 0x963a1 db $0, "Wait! I was just", $4f db "careless!", $57 ; 0x963a1 + 28 bytes _ViridianGymBattleText8: ; 0x963bd db $0, "VIRIDIAN GYM was", $4f db "closed for a long", $55 db "time, but now our", $55 db "LEADER is back!", $57 ; 0x963bd + 70 bytes _ViridianGymEndBattleText8: ; 0x96403 db $0, "I", $4f db "was beaten?", $58 ; 0x96403 + 15 bytes _ViridianGymAfterBattleText8: ; 0x96412 db $0, "You can go onto", $4f db "#MON LEAGUE", $55 db "only by defeating", $55 db "our GYM LEADER!", $57 ; 0x96412 + 63 bytes _UnnamedText_74bd4: ; 0x96451 db $0, "Yo! Champ in", $4f db "making!", $51 db "Even I don't know", $4f db "VIRIDIAN LEADER's", $55 db "identity!", $51 db "This will be the", $4f db "toughest of all", $55 db "the GYM LEADERs!", $51 db "I heard that the", $4f db "trainers here", $55 db "like ground-type", $55 db "#MON!", $57 ; 0x96451 + 170 bytes _UnnamedText_74bd9: ; 0x964fb db $0, "Blow me away!", $4f db "GIOVANNI was the", $55 db "GYM LEADER here?", $57 ; 0x964fb + 49 bytes _UnnamedText_5c21a: ; 0x9652c db $0, "Come again!", $57 ; 0x9652c + 13 bytes _UnnamedText_5c21f: ; 0x96539 db $0, "It's ", $f0, "50 for a", $4f db "child's ticket.", $51 db "Would you like to", $4f db "come in?", $57 ; 0x96539 + 57 bytes _UnnamedText_5c224: ; 0x96572 db $0, "Right, ", $f0, "50!", $4f db "Thank you!", $57 ; 0x96572 + 24 bytes _UnnamedText_5c229: ; 0x9658a db $0, "You don't have", $4f db "enough money.", $58 ; 0x9658a + 29 bytes _UnnamedText_5c22e: ; 0x965a7 db $0, "You can't sneak", $4f db "in the back way!", $51 db "Oh, whatever!", $4f db "Do you know what", $55 db "AMBER is?", $57 ; 0x965a7 + 74 bytes _UnnamedText_5c233: ; 0x965f1 db $0, "There's a lab", $4f db "somewhere trying", $55 db "to resurrect", $55 db "ancient #MON", $55 db "from AMBER.", $57 ; 0x965f1 + 69 bytes _UnnamedText_5c238: ; 0x96636 db $0, "AMBER is fossil-", $4f db "ized tree sap.", $57 ; 0x96636 + 33 bytes _UnnamedText_5c23d: ; 0x96657 db $0, "Please go to the", $4f db "other side!", $57 ; 0x96657 + 30 bytes _UnnamedText_5c242: ; 0x96675 db $0, "Take plenty of", $4f db "time to look!", $57 ; 0x96675 + 30 bytes _UnnamedText_5c251: ; 0x96693 db $0, "That is one", $4f db "magnificent", $55 db "fossil!", $57 ; 0x96693 + 33 bytes _UnnamedText_5c28e: ; 0x966b4 db $0, "Ssh! I think that", $4f db "this chunk of", $55 db "AMBER contains", $55 db "#MON DNA!", $51 db "It would be great", $4f db "if #MON could", $55 db "be resurrected", $55 db "from it!", $51 db "But, my colleagues", $4f db "just ignore me!", $51 db "So I have a favor", $4f db "to ask!", $51 db "Take this to a", $4f db "#MON LAB and", $55 db "get it examined!", $58 ; 0x966b4 + 220 bytes _ReceivedOldAmberText: ; 0x96790 db $0, $52, " received", $4f db "OLD AMBER!@@" ; 0x96790 + 24 bytes _UnnamedText_5c299: ; 0x967a8 db $0, "Ssh! Get the OLD", $4f db "AMBER checked!", $57 ; 0x967a8 + 33 bytes _UnnamedText_5c29e: ; 0x967c9 db $0, "You don't have", $4f db "space for this!", $57 ; 0x967c9 + 31 bytes _UnnamedText_5c2ad: ; 0x967e8 db $0, "We are proud of 2", $4f db "fossils of very", $55 db "rare, prehistoric", $55 db "#MON!", $57 ; 0x967e8 + 59 bytes _UnnamedText_5c2bc: ; 0x96823 db $0, "The AMBER is", $4f db "clear and gold!", $57 ; 0x96823 + 30 bytes _MuseumF2Text1: ; 0x96841 db $0, "MOON STONE?", $51 db "What's so special", $4f db "about it?", $57 _MuseumF2Text2: ; 0x96869 db $0, "July 20, 1969!", $51 db "The 1st lunar", $4f db "landing!", $51 db "I bought a color", $4f db "TV to watch it!", $57 _MuseumF2Text3: ; 0x968b1 db $0, "We have a space", $4f db "exhibit now.", $57 _MuseumF2Text4: ; 0x968cf db $0, "I want a PIKACHU!", $4f db "It's so cute!", $51 db "I asked my Daddy", $4f db "to catch me one!", $57 _MuseumF2Text5: ; 0x96911 db $0, "Yeah, a PIKACHU", $4f db "soon, I promise!", $57 _MuseumF2Text6: ; 0x96933 db $0, "SPACE SHUTTLE", $4f db "COLUMBIA", $57 _MuseumF2Text7: ; 0x9694b db $0, "Meteorite that", $4f db "fell on MT.MOON.", $55 db "(MOON STONE?)", $57 _UnnamedText_5c49e: ; 0x9697a db $0, "I'm BROCK!", $4f db "I'm PEWTER's GYM", $55 db "LEADER!", $51 db "I believe in rock", $4f db "hard defense and", $55 db "determination!", $51 db "That's why my", $4f db "#MON are all", $55 db "the rock-type!", $51 db "Do you still want", $4f db "to challenge me?", $55 db "Fine then! Show", $55 db "me your best!", $57 ; 0x9697a + 190 bytes SECTION "bank26",DATA,BANK[$26] _UnnamedText_5c4a3: ; 0x98000 db $0, "There are all", $4f db "kinds of trainers", $55 db "in the world!", $51 db "You appear to be", $4f db "very gifted as a", $55 db "#MON trainer!", $51 db "Go to the GYM in", $4f db "CERULEAN and test", $55 db "your abilities!", $57 ; 0x98000 + 146 bytes _TM34PreReceiveText: ; 0x98092 db $0, "Wait! Take this", $4f db "with you!", $57 ; 0x98092 + 27 bytes _ReceivedTM34Text: ; 0x980ad db $0, $52, " received", $4f db "TM34!@@" ; 0x980c0 _TM34ExplanationText: ; 0x980c0 db $0, $51 db "A TM contains a", $4f db "technique that", $55 db "can be taught to", $55 db "#MON!", $51 db "A TM is good only", $4f db "once! So when you", $55 db "use one to teach", $55 db "a new technique,", $55 db "pick the #MON", $55 db "carefully!", $51 db "TM34 contains", $4f db "BIDE!", $51 db "Your #MON will", $4f db "absorb damage in", $55 db "battle then pay", $55 db "it back double!", $57 ; 0x980c0 + 235 bytes _TM34NoRoomText: ; 0x981ab db $0, "You don't have", $4f db "room for this!", $57 ; 0x981ab + 30 bytes _UnnamedText_5c4bc: ; 0x981c9 db $0, "I took", $4f db "you for granted.", $51 db "As proof of your", $4f db "victory, here's", $55 db "the BOULDERBADGE!", $51 db $52, " received", $4f db "the BOULDERBADGE!@@" ; 0x98232 _UnnamedText_5c4c1: ; 0x98232 db $0, $51 db "That's an official", $4f db "#MON LEAGUE", $55 db "BADGE!", $51 db "Its bearer's", $4f db "#MON become", $55 db "more powerful!", $51 db "The technique", $4f db "FLASH can now be", $55 db "used any time!", $58 ; 0x98232 + 124 bytes _PewterGymBattleText1: ; 0x982ae db $0, "Stop right there,", $4f db "kid!", $51 db "You're still light", $4f db "years from facing", $55 db "BROCK!", $57 ; 0x982ae + 67 bytes _PewterGymEndBattleText1: ; 0x982f1 db $0, "Darn!", $51 db "Light years isn't", $4f db "time! It measures", $55 db "distance!", $58 ; 0x982f1 + 52 bytes _PewterGymAfterBattleText1: ; 0x98325 db $0, "You're pretty hot,", $4f db "but not as hot", $55 db "as BROCK!", $57 ; 0x98325 + 44 bytes _UnnamedText_5c515: ; 0x98351 db $0, "Hiya! I can tell", $4f db "you have what it", $55 db "takes to become a", $55 db "#MON champ!", $51 db "I'm no trainer,", $4f db "but I can tell", $55 db "you how to win!", $51 db "Let me take you", $4f db "to the top!", $57 ; 0x98351 + 139 bytes _UnnamedText_5c51a: ; 0x983dc db $0, "All right! Let's", $4f db "get happening!", $58 ; 0x983dc + 32 bytes _UnnamedText_5c51f: ; 0x983fc db $0, "The 1st #MON", $4f db "out in a match is", $55 db "at the top of the", $55 db "#MON LIST!", $51 db "By changing the", $4f db "order of #MON,", $55 db "matches could be", $55 db "made easier!", $57 ; 0x983fc + 122 bytes _UnnamedText_5c524: ; 0x98476 db $0, "It's a free", $4f db "service! Let's", $55 db "get happening!", $58 ; 0x98476 + 41 bytes _UnnamedText_5c529: ; 0x9849f db $0, "Just as I thought!", $4f db "You're #MON", $55 db "champ material!", $57 ; 0x9849f + 47 bytes _PewterHouse1Text1: ; 0x984ce db $0, "NIDORAN: Bowbow!@@" _PewterHouse1Text2: ; 0x984e1 db $0, "NIDORAN sit!", $57 _PewterHouse1Text3: ; 0x984ef db $0, "Our #MON's an", $4f db "outsider, so it's", $55 db "hard to handle.", $51 db "An outsider is a", $4f db "#MON that you", $55 db "get in a trade.", $51 db "It grows fast, but", $4f db "it may ignore an", $55 db "unskilled trainer", $55 db "in battle!", $51 db "If only we had", $4f db "some BADGEs...", $57 _UnnamedText_74cc6: ; 0x985ac db $0, "A shady, old man", $4f db "got me to buy", $55 db "this really weird", $55 db "fish #MON!", $51 db "It's totally weak", $4f db "and it cost ", $f0, "500!", $57 ; 0x985ac + 96 bytes _UnnamedText_74cd5: ; 0x9860c db $0, "Good things can", $4f db "happen if you", $55 db "raise #MON", $55 db "diligently, even", $55 db "the weak ones!", $57 ; 0x9860c + 74 bytes _PewterHouse2Text1: ; 0x98656 db $0, "#MON learn new", $4f db "techniques as", $55 db "they grow!", $51 db "But, some moves", $4f db "must be taught by", $55 db "the trainer!", $57 _PewterHouse2Text2: ; 0x986ae db $0, "#MON become", $4f db "easier to catch", $55 db "when they are", $55 db "hurt or asleep!", $51 db "But, it's not a", $4f db "sure thing!", $57 _PewterPokecenterText1: ; 0x98704 db $0, "What!?", $51 db "TEAM ROCKET is", $4f db "at MT.MOON? Huh?", $55 db "I'm on the phone!", $51 db "Scram!", $57 _PewterPokecenterText5: ; 0x98744 db $0, "JIGGLYPUFF: Puu", $4f db "pupuu!", $57 ; 0x9875c _UnnamedText_1d6ab: ; 0x9875c db $0, "Those miserable", $4f db "ROCKETs!", $51 db "Look what they", $4f db "did here!", $51 db "They stole a TM", $4f db "for teaching", $55 db "#MON how to", $55 db "DIG holes!", $51 db "That cost me a", $4f db "bundle, it did!", $57 ; 0x9875c + 134 bytes _UnnamedText_1d6b0: ; 0x987e2 db $0, "I figure what's", $4f db "lost is lost!", $51 db "I decided to teach", $4f db "DIGLETT how to", $55 db "DIG without a TM!", $57 ; 0x987e2 + 82 bytes _CeruleanHouseTrashedText2: ; 0x98834 db $0, "TEAM ROCKET must", $4f db "be trying to DIG", $55 db "their way into no", $55 db "good!", $57 _CeruleanHouseTrashedText3: ; 0x9886f db $0, "TEAM ROCKET left", $4f db "a way out!", $57 _CeruleanHouse2Text1: ; 0x9888c db $0, "My husband likes", $4f db "trading #MON.", $51 db "If you are a", $4f db "collector, would", $55 db "you please trade", $55 db "with him?", $57 _CeruleanPokecenterText1: ; 0x988e5 db $0, "That BILL!", $51 db "I heard that", $4f db "he'll do whatever", $55 db "it takes to get", $55 db "rare #MON!", $57 _CeruleanPokecenterText3: ; 0x9892a db $0, "Have you heard", $4f db "about BILL?", $51 db "Everyone calls", $4f db "him a #MANIAC!", $51 db "I think people", $4f db "are just jealous", $55 db "of BILL, though.", $51 db "Who wouldn't want", $4f db "to boast about", $55 db "their #MON?", $57 _UnnamedText_5c7be: ; 0x989c1 db $0, "Hi, you're a new", $4f db "face!", $51 db "Trainers who want", $4f db "to turn pro have", $55 db "to have a policy", $55 db "about #MON!", $51 db "What is your", $4f db "approach when you", $55 db "catch #MON?", $51 db "My policy is an", $4f db "all-out offensive", $55 db "with water-type", $55 db "#MON!", $57 ; 0x989c1 + 186 bytes _UnnamedText_5c7c3: ; 0x98a7b db $0, "TM11 teaches", $4f db "BUBBLEBEAM!", $51 db "Use it on an", $4f db "aquatic #MON!", $57 ; 0x98a7b + 53 bytes _UnnamedText_5c7c8: ; 0x98ab0 db $0, "The CASCADEBADGE", $4f db "makes all #MON", $55 db "up to L30 obey!", $51 db "That includes", $4f db "even outsiders!", $51 db "There's more, you", $4f db "can now use CUT", $55 db "any time!", $51 db "You can CUT down", $4f db "small bushes to", $55 db "open new paths!", $51 db "You can also have", $4f db "my favorite TM!", $57 ; 0x98ab0 + 205 bytes _ReceivedTM11Text: ; 0x98b7d db $0, $52, " received", $4f db "TM11!@@" ; 0x98b90 _UnnamedText_5c7d3: ; 0x98b90 db $0, "You better make", $4f db "room for this!", $57 ; 0x98b90 + 32 bytes _UnnamedText_5c7d8: ; 0x98bb0 db $0, "Wow!", $4f db "You're too much!", $51 db "All right!", $51 db "You can have the", $4f db "CASCADEBADGE to", $55 db "show you beat me!@@" ; 0x98c05 _CeruleanGymBattleText1: ; 0x98c05 db $0, "I'm more than good", $4f db "enough for you!", $51 db "MISTY can wait!", $57 ; 0x98c05 + 51 bytes _CeruleanGymEndBattleText1: ; 0x98c38 db $0, "You", $4f db "overwhelmed me!", $58 ; 0x98c38 + 21 bytes _CeruleanGymAfterBattleText1: ; 0x98c4d db $0, "You have to face", $4f db "other trainers to", $55 db "find out how good", $55 db "you really are.", $57 ; 0x98c4d + 70 bytes _CeruleanGymBattleText2: ; 0x98c93 db $0, "Splash!", $51 db "I'm first up!", $4f db "Let's do it!", $57 ; 0x98c93 + 34 bytes _CeruleanGymEndBattleText2: ; 0x98cb5 db $0, "That", $4f db "can't be!", $58 ; 0x98cb5 + 15 bytes _CeruleanGymAfterBattleText2: ; 0x98cc4 db $0, "MISTY is going to", $4f db "keep improving!", $51 db "She won't lose to", $4f db "someone like you!", $57 ; 0x98cc4 + 70 bytes _UnnamedText_5c82a: ; 0x98d0a db $0, "Yo! Champ in", $4f db "making!", $51 db "Here's my advice!", $51 db "The LEADER, MISTY,", $4f db "is a pro who uses", $55 db "water #MON!", $51 db "You can drain all", $4f db "their water with", $55 db "plant #MON!", $51 db "Or, zap them with", $4f db "electricity!", $57 ; 0x98d0a + 166 bytes _UnnamedText_5c82f: ; 0x98db0 db $0, "You beat MISTY!", $4f db "What'd I tell ya?", $51 db "You and me kid,", $4f db "we make a pretty", $55 db "darn good team!", $57 ; 0x98db0 + 83 bytes _UnnamedText_1d810: ; 0x98e03 db $0, "Hi! Welcome to", $4f db "our BIKE SHOP.", $51 db "Have we got just", $4f db "the BIKE for you!", $58 ; 0x98e03 + 66 bytes _UnnamedText_1d815: ; 0x98e45 db $0, "It's a cool BIKE!", $4f db "Do you want it?", $57 ; 0x98e45 + 34 bytes _UnnamedText_1d81a: ; 0x98e67 db $0, "Sorry! You can't", $4f db "afford it!", $58 ; 0x98e67 + 28 bytes _UnnamedText_1d81f: ; 0x98e83 db $0, "Oh, that's...", $51 db "A BIKE VOUCHER!", $51 db "OK! Here you go!", $58 ; 0x98e83 + 47 bytes _UnnamedText_1d824: ; 0x98eb2 db $0, $52, " exchanged", $4f db "the BIKE VOUCHER", $55 db "for a BICYCLE.@@" ; 0x98ee0 _UnnamedText_1d82a: ; 0x98ee0 db $0, "Come back again", $4f db "some time!", $57 ; 0x98ee0 + 28 bytes _UnnamedText_1d82f: ; 0x98efc db $0, "How do you like", $4f db "your new BICYCLE?", $51 db "You can take it", $4f db "on CYCLING ROAD", $55 db "and in caves!", $57 ; 0x98efc + 81 bytes _UnnamedText_1d834: ; 0x98f4d db $0, "You better make", $4f db "room for this!", $57 ; 0x98f4d + 32 bytes _UnnamedText_1d843: ; 0x98f6d db $0, "A plain city BIKE", $4f db "is good enough", $55 db "for me!", $51 db "You can't put a", $4f db "shopping basket", $55 db "on an MTB!", $57 ; 0x98f6d + 84 bytes _UnnamedText_1d85c: ; 0x98fc1 db $0, "These BIKEs are", $4f db "cool, but they're", $55 db "way expensive!", $57 ; 0x98fc1 + 49 bytes _UnnamedText_1d861: ; 0x98ff2 db $0, "Wow. Your BIKE is", $4f db "really cool!", $57 ; 0x98ff2 + 32 bytes _CeruleanMartText2: ; 0x99012 db $0, "Use REPEL to keep", $4f db "bugs and weak", $55 db "#MON away.", $51 db "Put your strongest", $4f db "#MON at the", $55 db "top of the list", $55 db "for best results!", $57 _CeruleanMartText3: ; 0x9907f db $0, "Have you seen any", $4f db "RARE CANDY?", $51 db "It's supposed to", $4f db "make #MON go", $55 db "up one level!", $57 _UnnamedText_74e77: ; 0x990c9 db $0, "#MON BADGEs", $4f db "are owned only by", $55 db "skilled trainers.", $51 db "I see you have", $4f db "at least one.", $51 db "Those BADGEs have", $4f db "amazing secrets!", $58 ; 0x990c9 + 113 bytes _UnnamedText_74e7c: ; 0x9913a db $0, "Now then...", $51 db "Which of the 8", $4f db "BADGEs should I", $55 db "describe?", $57 ; 0x9913a + 54 bytes _UnnamedText_74e81: ; 0x99170 db $0, "Come visit me any", $4f db "time you wish.", $57 ; 0x99170 + 34 bytes _UnnamedText_74e96: ; 0x99192 db $0, "The ATTACK of all", $4f db "#MON increases", $55 db "a little bit.", $51 db "It also lets you", $4f db "use FLASH any", $55 db "time you desire.", $58 ; 0x99192 + 96 bytes _UnnamedText_74e9b: ; 0x991f2 db $0, "#MON up to L30", $4f db "will obey you.", $51 db "Any higher, they", $4f db "become unruly!", $51 db "It also lets you", $4f db "use CUT outside", $55 db "of battle.", $58 ; 0x991f2 + 107 bytes _UnnamedText_74ea0: ; 0x9925d db $0, "The SPEED of all", $4f db "#MON increases", $55 db "a little bit.", $51 db "It also lets you", $4f db "use FLY outside", $55 db "of battle.", $58 ; 0x9925d + 91 bytes _UnnamedText_74ea5: ; 0x992b8 db $0, "#MON up to L50", $4f db "will obey you.", $51 db "Any higher, they", $4f db "become unruly!", $51 db "It also lets you", $4f db "use STRENGTH out-", $55 db "side of battle.", $58 ; 0x992b8 + 114 bytes _UnnamedText_74eaa: ; 0x9932a db $0, "The DEFENSE of all", $4f db "#MON increases", $55 db "a little bit.", $51 db "It also lets you", $4f db "use SURF outside", $55 db "of battle.", $58 ; 0x9932a + 94 bytes _UnnamedText_74eaf: ; 0x99388 db $0, "#MON up to L70", $4f db "will obey you.", $51 db "Any higher, they", $4f db "become unruly!", $58 ; 0x99388 + 63 bytes _UnnamedText_74eb4: ; 0x993c7 db $0, "Your #MON's", $4f db "SPECIAL abilities", $55 db "increase a bit.", $58 ; 0x993c7 + 46 bytes _UnnamedText_74eb9: ; 0x993f5 db $0, "All #MON will", $4f db "obey you!", $58 ; 0x993f5 + 25 bytes _LavenderPokecenterText4: _LavenderPokecenterText2: _LavenderPokecenterText1: ; 0x9940e db $0, "TEAM ROCKET will", $4f db "do anything for", $55 db "the sake of gold!", $57 _LavenderPokecenterText3: ; 0x99442 db $0, "I saw CUBONE's", $4f db "mother die trying", $55 db "to escape from", $55 db "TEAM ROCKET!", $57 _PokemonTower1Text1: ; 0x9947f db $0, "#MON TOWER was", $4f db "erected in the", $55 db "memory of #MON", $55 db "that had died.", $57 _PokemonTower1Text2: ; 0x994bc db $0, "Did you come to", $4f db "pay respects?", $55 db "Bless you!", $57 _PokemonTower1Text3: ; 0x994e6 db $0, "I came to pray", $4f db "for my CLEFAIRY.", $51 db "Sniff! I can't", $4f db "stop crying...", $57 _PokemonTower1Text4: ; 0x99524 db $0, "My GROWLITHE...", $4f db "Why did you die?", $57 _PokemonTower1Text5: ; 0x99546 db $0, "I am a CHANNELER!", $4f db "There are spirits", $55 db "up to mischief!", $57 _UnnamedText_6062d: ; 0x9957b db $0, $53, ": Hey,", $4f db $52, "! What", $55 db "brings you here?", $55 db "Your #MON", $55 db "don't look dead!", $51 db "I can at least", $4f db "make them faint!", $55 db "Let's go, pal!", $57 ; 0x9957b + 106 bytes _UnnamedText_60632: ; 0x995e5 db $0, "What?", $4f db "You stinker!", $51 db "I took it easy on", $4f db "you too!", $58 ; 0x995e5 + 47 bytes _UnnamedText_60637: ; 0x99614 db $0, $53, ": Well,", $4f db "look at all your", $55 db "wimpy #MON!", $51 db "Toughen them up a", $4f db "bit more!", $58 ; 0x99614 + 67 bytes _UnnamedText_6063c: ; 0x99657 db $0, "How's your #DEX", $4f db "coming, pal?", $55 db "I just caught a", $55 db "CUBONE!", $51 db "I can't find the", $4f db "grown-up MAROWAK", $55 db "yet!", $51 db "I doubt there are", $4f db "any left! Well, I", $55 db "better get going!", $55 db "I've got a lot to", $55 db "accomplish, pal!", $51 db "Smell ya later!", $57 ; 0x99657 + 195 bytes _PokemonTower2Text2: ; 0x9971a db $0, "Even we could not", $4f db "identify the", $55 db "wayward GHOSTs!", $51 db "A SILPH SCOPE", $4f db "might be able to", $55 db "unmask them.", $57 _PokemonTower3BattleText1: ; 0x99776 db $0, "Urrg...Awaa...", $4f db "Huhu...graa..", $57 ; 0x99776 + 30 bytes _PokemonTower3EndBattleText1: ; 0x99794 db $0, "Hwa!", $4f db "I'm saved!", $58 ; 0x99794 + 16 bytes _PokemonTower3AfterBattleText1: ; 0x997a4 db $0, "The GHOSTs can be", $4f db "identified by the", $55 db "SILPH SCOPE.", $57 ; 0x997a4 + 50 bytes _PokemonTower3BattleText2: ; 0x997d6 db $0, "Kekeke....", $4f db "Kwaaah!", $57 ; 0x997d6 + 20 bytes _PokemonTower3EndBattleText2: ; 0x997ea db $0, "Hmm?", $4f db "What am I doing?", $58 ; 0x997ea + 23 bytes _PokemonTower3AfterBattleText2: ; 0x99801 db $0, "Sorry! I was", $4f db "possessed!", $57 ; 0x99801 + 25 bytes _PokemonTower3BattleText3: ; 0x9981a db $0, "Be gone!", $4f db "Evil spirit!", $57 ; 0x9981a + 23 bytes _PokemonTower3EndBattleText3: ; 0x99831 db $0, "Whew!", $4f db "The spirit left!", $58 ; 0x99831 + 24 bytes _PokemonTower3AfterBattleText3: ; 0x99849 db $0, "My friends were", $4f db "possessed too!", $57 ; 0x99849 + 32 bytes _PokemonTower4BattleText1: ; 0x99869 db $0, "GHOST! No!", $4f db "Kwaaah!", $57 ; 0x99869 + 20 bytes _PokemonTower4EndBattleText1: ; 0x9987d db $0, "Where", $4f db "is the GHOST?", $58 ; 0x9987d + 21 bytes _PokemonTower4AfterBattleText1: ; 0x99892 db $0, "I must have been", $4f db "dreaming...", $57 ; 0x99892 + 30 bytes _PokemonTower4BattleText2: ; 0x998b0 db $0, "Be cursed with", $4f db "me! Kwaaah!", $57 ; 0x998b0 + 28 bytes _PokemonTower4EndBattleText2: ; 0x998cc db $0, "What!", $58 ; 0x998cc + 7 bytes _PokemonTower4AfterBattleText2: ; 0x998d3 db $0, "We can't crack", $4f db "the identity of", $55 db "the GHOSTs.", $57 ; 0x998d3 + 43 bytes _PokemonTower4BattleText3: ; 0x998fe db $0, "Huhuhu...", $4f db "Beat me not!", $57 ; 0x998fe + 24 bytes _PokemonTower4EndBattleText3: ; 0x99916 db $0, "Huh?", $4f db "Who? What?", $58 ; 0x99916 + 17 bytes _PokemonTower4AfterBattleText3: ; 0x99927 db $0, "May the departed", $4f db "souls of #MON", $55 db "rest in peace...", $57 ; 0x99927 + 49 bytes _PokemonTower5Text1: ; 0x99958 db $0, "Come, child! I", $4f db "sealed this space", $55 db "with white magic!", $51 db "You can rest here!", $57 _PokemonTower5BattleText1: ; 0x9999f db $0, "Give...me...", $4f db "your...soul...", $57 ; 0x9999f + 29 bytes _PokemonTower5EndBattleText1: ; 0x999bc db $0, "Gasp!", $58 ; 0x999bc + 7 bytes _PokemonTower5AfterBattleText1: ; 0x999c3 db $0, "I was under", $4f db "possession!", $57 ; 0x999c3 + 25 bytes _PokemonTower5BattleText2: ; 0x999dc db $0, "You...shall...", $4f db "join...us...", $57 ; 0x999dc + 29 bytes _PokemonTower5EndBattleText2: ; 0x999f9 db $0, "What", $4f db "a nightmare!", $58 ; 0x999f9 + 19 bytes _PokemonTower5AfterBattleText2: ; 0x99a0c db $0, "I was possessed!", $57 ; 0x99a0c + 18 bytes _PokemonTower5BattleText3: ; 0x99a1e db $0, "Zombies!", $57 ; 0x99a1e + 10 bytes _PokemonTower5EndBattleText3: ; 0x99a28 db $0, "Ha?", $58 ; 0x99a28 + 5 bytes _PokemonTower5AfterBattleText3: ; 0x99a2d db $0, "I regained my", $4f db "senses!", $57 ; 0x99a2d + 23 bytes _PokemonTower5BattleText4: ; 0x99a44 db $0, "Urgah...", $4f db "Urff....", $57 ; 0x99a44 + 19 bytes _PokemonTower5EndBattleText4: ; 0x99a57 db $0, "Whoo!", $58 ; 0x99a57 + 7 bytes _PokemonTower5AfterBattleText4: ; 0x99a5e db $0, "I fell to evil", $4f db "spirits despite", $55 db "my training!", $57 ; 0x99a5e + 45 bytes _UnnamedText_60a43: ; 0x99a8b db $0, "Entered purified,", $4f db "protected zone!", $51 db $52, "'s #MON", $4f db "are fully healed!", $57 ; 0x99a8b + 61 bytes _UnnamedText_60c1f: ; 0x99ac8 db $0, "The GHOST was the", $4f db "restless soul of", $55 db "CUBONE's mother!", $57 ; 0x99ac8 + 52 bytes _UnnamedText_60c24: ; 0x99afc db $0, "The mother's soul", $4f db "was calmed.", $51 db "It departed to", $4f db "the afterlife!", $57 ; 0x99afc + 60 bytes _PokemonTower6BattleText1: ; 0x99b38 db $0, "Give...me...", $4f db "blood...", $57 ; 0x99b38 + 23 bytes _PokemonTower6EndBattleText1: ; 0x99b4f db $0, "Groan!", $58 ; 0x99b4f + 8 bytes _PokemonTower6AfterBattleText1: ; 0x99b57 db $0, "I feel anemic and", $4f db "weak...", $57 ; 0x99b57 + 27 bytes _PokemonTower6BattleText2: ; 0x99b72 db $0, "Urff... Kwaah!", $57 ; 0x99b72 + 16 bytes _PokemonTower6EndBattleText2: ; 0x99b82 db $0, "Some-", $4f db "thing fell out!", $58 ; 0x99b82 + 23 bytes _PokemonTower6AfterBattleText2: ; 0x99b99 db $0, "Hair didn't fall", $4f db "out! It was an", $55 db "evil spirit!", $57 ; 0x99b99 + 45 bytes _PokemonTower6BattleText3: ; 0x99bc6 db $0, "Ke..ke...ke...", $4f db "ke..ke...ke!!", $57 ; 0x99bc6 + 30 bytes _PokemonTower6EndBattleText3: ; 0x99be4 db $0, "Keee!", $58 ; 0x99be4 + 7 bytes _PokemonTower6AfterBattleText3: ; 0x99beb db $0, "What's going on", $4f db "here?", $57 ; 0x99beb + 22 bytes _UnnamedText_60c56: ; 0x99c01 db $0, "Be gone...", $4f db "Intruders...", $57 ; 0x99c01 + 25 bytes _UnnamedText_60ec4: ; 0x99c1a db $0, "MR.FUJI: Heh? You", $4f db "came to save me?", $51 db "Thank you. But, I", $4f db "came here of my", $55 db "own free will.", $51 db "I came to calm", $4f db "the soul of", $55 db "CUBONE's mother.", $51 db "I think MAROWAK's", $4f db "spirit has gone", $55 db "to the afterlife.", $51 db "I must thank you", $4f db "for your kind", $55 db "concern!", $51 db "Follow me to my", $4f db "home, #MON", $55 db "HOUSE at the foot", $55 db "of this tower.", $57 ; 0x99c1a + 279 bytes _PokemonTower7BattleText1: ; 0x99d31 db $0, "What do you want?", $4f db "Why are you here?", $57 ; 0x99d31 + 37 bytes _PokemonTower7EndBattleText1: ; 0x99d56 db $0, "I give up!", $58 ; 0x99d56 + 12 bytes _PokemonTower7AfterBattleText1: ; 0x99d62 db $0, "I'm not going to", $4f db "forget this!", $57 ; 0x99d62 + 30 bytes _PokemonTower7BattleText2: ; 0x99d80 db $0, "This old guy came", $4f db "and complained", $55 db "about us harming", $55 db "useless #MON!", $51 db "We're talking it", $4f db "over as adults!", $57 ; 0x99d80 + 97 bytes _PokemonTower7EndBattleText2: ; 0x99de1 db $0, "Please!", $4f db "No more!", $58 ; 0x99de1 + 18 bytes _PokemonTower7AfterBattleText2: ; 0x99df3 db $0, "#MON are only", $4f db "good for making", $55 db "money!", $51 db "Stay out of our", $4f db "business!", $57 ; 0x99df3 + 64 bytes _PokemonTower7BattleText3: ; 0x99e33 db $0, "You're not saving", $4f db "anyone, kid!", $57 ; 0x99e33 + 31 bytes _PokemonTower7EndBattleText3: ; 0x99e52 db $0, "Don't", $4f db "fight us ROCKETs!", $58 ; 0x99e52 + 24 bytes _PokemonTower7AfterBattleText3: ; 0x99e6a db $0, "You're not getting", $4f db "away with this!", $57 ; 0x99e6a + 35 bytes _UnnamedText_1d8d1: ; 0x99e8d db $0, "That's odd, MR.FUJI", $4f db "isn't here.", $55 db "Where'd he go?", $57 ; 0x99e8d + 45 bytes _UnnamedText_1d8d6: ; 0x99eba db $0, "MR.FUJI had been", $4f db "praying alone for", $55 db "CUBONE's mother.", $57 ; 0x99eba + 52 bytes _UnnamedText_1d8f4: ; 0x99eee db $0, "This is really", $4f db "MR.FUJI's house.", $51 db "He's really kind!", $51 db "He looks after", $4f db "abandoned and", $55 db "orphaned #MON!", $57 ; 0x99eee + 93 bytes _UnnamedText_1d8f9: ; 0x99f4b db $0, "It's so warm!", $4f db "#MON are so", $55 db "nice to hug!", $57 ; 0x99f4b + 39 bytes _LavenderHouse1Text3: ; 0x99f72 db $0, "PSYDUCK: Gwappa!@@" _LavenderHouse1Text4: ; 0x99f85 db $0, "NIDORINO: Gaoo!@@" _UnnamedText_1d94c: ; 0x99f97 db $0, "MR.FUJI: ", $52, ".", $51 db "Your #DEX quest", $4f db "may fail without", $55 db "love for your", $55 db "#MON.", $51 db "I think this may", $4f db "help your quest.", $58 ; 0x99f97 + 100 bytes _ReceivedFluteText: ; 0x99ffb db $0, $52, " received", $4f db "a @" TX_RAM $cf4b db $0, "!@@" ; 0x9a011 _FluteExplanationText: ; 0x9a011 db $0, $51 db "Upon hearing #", $4f db "FLUTE, sleeping", $55 db "#MON will", $55 db "spring awake.", $51 db "It works on all", $4f db "sleeping #MON.", $57 ; 0x9a011 + 88 bytes _FluteNoRoomText: ; 0x9a069 db $0, "You must make", $4f db "room for this!", $57 ; 0x9a069 + 30 bytes _MrFujiAfterFluteText: ; 0x9a087 db $0, "MR.FUJI: Has my", $4f db "FLUTE helped you?", $57 ; 0x9a087 + 35 bytes _LavenderHouse1Text6: ; 0x9a0aa db $0, "#MON Monthly", $4f db "Grand Prize", $55 db "Drawing!", $51 db "The application", $4f db "form is...", $51 db "Gone! It's been", $4f db "clipped out!", $57 _LavenderMartText2: ; 0x9a104 db $0, "I'm searching for", $4f db "items that raise", $55 db "the abilities of", $55 db "#MON during a", $55 db "single battle.", $51 db "X ATTACK, X", $4f db "DEFEND, X SPEED", $55 db "and X SPECIAL are", $55 db "what I'm after.", $51 db "Do you know where", $4f db "I can get them?", $57 _UnnamedText_5c953: ; 0x9a1b4 db $0, "You know REVIVE?", $4f db "It revives any", $55 db "fainted #MON!", $57 ; 0x9a1b4 + 47 bytes _UnnamedText_5c958: ; 0x9a1e3 db $0, "I found a NUGGET", $4f db "in the mountains.", $51 db "I thought it was", $4f db "useless, but it", $55 db "sold for ", $f0, "5000!", $57 ; 0x9a1e3 + 85 bytes _LavenderHouse2Text1: ; 0x9a238 db $0, "CUBONE: Kyarugoo!@@" _UnnamedText_1d9dc: ; 0x9a24c db $0, "I hate those", $4f db "horrible ROCKETs!", $51 db "That poor CUBONE's", $4f db "mother...", $51 db "It was killed", $4f db "trying to escape", $55 db "from TEAM ROCKET!", $57 ; 0x9a24c + 109 bytes _UnnamedText_1d9e1: ; 0x9a2b9 db $0, "The GHOST of", $4f db "#MON TOWER is", $55 db "gone!", $51 db "Someone must have", $4f db "soothed its", $55 db "restless soul!", $57 ; 0x9a2b9 + 79 bytes _UnnamedText_1dab3: ; 0x9a308 db $0, "Hello, hello!", $4f db "I am the official", $55 db "NAME RATER!", $51 db "Want me to rate", $4f db "the nicknames of", $55 db "your #MON?", $57 ; 0x9a308 + 89 bytes _UnnamedText_1dab8: ; 0x9a361 db $0, "Which #MON", $4f db "should I look at?", $58 ; 0x9a361 + 30 bytes _UnnamedText_1dabd: ; 0x9a37f TX_RAM $cd6d db $0, ", is it?", $4f db "That is a decent", $55 db "nickname!", $51 db "But, would you", $4f db "like me to give", $55 db "it a nicer name?", $51 db "How about it?", $57 ; 0x9a37f + 102 bytes _UnnamedText_1dac2: ; 0x9a3e5 db $0, "Fine! What should", $4f db "we name it?", $58 ; 0x9a3e5 + 31 bytes _UnnamedText_1dac7: ; 0x9a404 db $0, "OK! This #MON", $4f db "has been renamed", $55 db "@" ; 0x9a404 + 33 bytes UnnamedText_9a425: ; 0x9a425 TX_RAM $cee9 db $0, "!", $51 db "That's a better", $4f db "name than before!", $57 ; 0x9a44c _UnnamedText_1dacc: ; 0x9a44c db $0, "Fine! Come any", $4f db "time you like!", $57 ; 0x9a44c + 31 bytes _UnnamedText_1dad1: ; 0x9a46b TX_RAM $cd6d db $0, ", is it?", $4f db "That is a truly", $55 db "impeccable name!", $51 db "Take good care of", $4f db "@" TX_RAM $cd6d db $0, "!", $57 ; 0x9a4b2 _VermilionPokecenterText2: _VermilionPokecenterText1: ; 0x9a4b2 db $0, "Even if they are", $4f db "the same level,", $55 db "#MON can have", $55 db "very different", $55 db "abilities.", $51 db "A #MON raised", $4f db "by a trainer is", $55 db "stronger than one", $55 db "in the wild.", $57 _VermilionPokecenterText3: ; 0x9a539 db $0, "My #MON was", $4f db "poisoned! It", $55 db "fainted while we", $55 db "were walking!", $57 _UnnamedText_59bb7: ; 0x9a572 db $0, "Won't you admire", $4f db "my PIKACHU's", $55 db "adorable tail?", $57 ; 0x9a572 + 44 bytes _UnnamedText_59bbc: ; 0x9a59e db $0, "Humph! My PIKACHU", $4f db "is twice as cute", $55 db "as that one!", $57 ; 0x9a59e + 49 bytes _UnnamedText_59be4: ; 0x9a5cf db $0, "I just love my", $4f db "SEEL!", $51 db "It squeals when I", $4f db "hug it!", $57 ; 0x9a5cf + 48 bytes _UnnamedText_59be9: ; 0x9a5ff db $0, "Oh dear!", $51 db "My SEEL is far", $4f db "more attractive!", $57 ; 0x9a5ff + 42 bytes _UnnamedText_59c00: ; 0x9a629 db $0, "PIKACHU: Chu!", $4f db "Pikachu!", $57 ; 0x9a629 + 24 bytes _UnnamedText_59c17: ; 0x9a641 db $0, "SEEL: Kyuoo!", $57 ; 0x9a641 + 14 bytes _UnnamedText_59c65: ; 0x9a64f db $0, "I chair the", $4f db "#MON Fan Club!", $51 db "I have collected", $4f db "over 100 #MON!", $51 db "I'm very fussy", $4f db "when it comes to", $55 db "#MON!", $51 db "So...", $51 db "Did you come", $4f db "visit to hear", $55 db "about my #MON?", $57 ; 0x9a64f + 145 bytes _UnnamedText_59c6a: ; 0x9a6e0 db $0, "Good!", $4f db "Then listen up!", $51 db "My favorite", $4f db "RAPIDASH...", $51 db "It...cute...", $4f db "lovely...smart...", $55 db "plus...amazing...", $55 db "you think so?...", $55 db "oh yes...it...", $55 db "stunning...", $55 db "kindly...", $55 db "love it!", $51 db "Hug it...when...", $55 db "sleeping...warm", $55 db "and cuddly...", $55 db "spectacular...", $55 db "ravishing...", $55 db "...Oops! Look at", $55 db "the time! I kept", $55 db "you too long!", $51 db "Thanks for hearing", $4f db "me out! I want", $55 db "you to have this!", $58 ; 0x9a6e0 + 334 bytes _ReceivedBikeVoucherText: ; 0x9a82e db $0, $52, " received", $4f db "a @" TX_RAM $cf4b db $0, "!@@" ; 0x9a844 _UnnamedText_59c74: ; 0x9a844 db $0, $51 db "Exchange that for", $4f db "a BICYCLE!", $51 db "Don't worry, my", $4f db "FEAROW will FLY", $55 db "me anywhere!", $51 db "So, I don't need a", $4f db "BICYCLE!", $51 db "I hope you like", $4f db "cycling!", $57 ; 0x9a844 + 127 bytes _UnnamedText_59c79: ; 0x9a8c3 db $0, "Oh. Come back", $4f db "when you want to", $55 db "hear my story!", $57 ; 0x9a8c3 + 47 bytes _UnnamedText_59c7e: ; 0x9a8f2 db $0, "Hello, ", $52, "!", $51 db "Did you come see", $4f db "me about my", $55 db "#MON again?", $51 db "No? Too bad!", $57 ; 0x9a8f2 + 65 bytes _UnnamedText_59c83: ; 0x9a933 db $0, "Make room for", $4f db "this!", $57 ; 0x9a933 + 21 bytes _FanClubText6: ; 0x9a948 db $0, "Our Chairman is", $4f db "very vocal about", $55 db "#MON.", $57 _FanClubText7: ; 0x9a970 db $0, "Let's all listen", $4f db "politely to other", $55 db "trainers!", $57 _FanClubText8: ; 0x9a99d db $0, "If someone brags,", $4f db "brag right back!", $57 _VermilionMartText2: ; 0x9a9c1 db $0, "There are evil", $4f db "people who will", $55 db "use #MON for", $55 db "criminal acts.", $51 db "TEAM ROCKET", $4f db "traffics in rare", $55 db "#MON.", $51 db "They also abandon", $4f db "#MON that they", $55 db "consider not to", $55 db "be popular or", $55 db "useful.", $57 _VermilionMartText3: ; 0x9aa67 db $0, "I think #MON", $4f db "can be good or", $55 db "evil. It depends", $55 db "on the trainer.", $57 _UnnamedText_5cb6d: ; 0x9aaa5 db $0, "Hey, kid! What do", $4f db "you think you're", $55 db "doing here?", $51 db "You won't live", $4f db "long in combat!", $55 db "That's for sure!", $51 db "I tell you kid,", $4f db "electric #MON", $55 db "saved me during", $55 db "the war!", $51 db "They zapped my", $4f db "enemies into", $55 db "paralysis!", $51 db "The same as I'll", $4f db "do to you!", $57 ; 0x9aaa5 + 214 bytes SECTION "bank27",DATA,BANK[$27] _UnnamedText_5cb72: ; 0x9c000 db $0, "A little word of", $4f db "advice, kid!", $51 db "Electricity is", $4f db "sure powerful!", $51 db "But, it's useless", $4f db "against ground-", $55 db "type #MON!", $57 ; 0x9c000 + 105 bytes _UnnamedText_5cb77: ; 0x9c069 db $0, "The THUNDERBADGE", $4f db "cranks up your", $55 db "#MON's SPEED!", $51 db "It also lets your", $4f db "#MON FLY any", $55 db "time, kid!", $51 db "You're special,", $4f db "kid! Take this!", $57 ; 0x9c069 + 119 bytes _ReceivedTM24Text: ; 0x9c0e0 db $0, $52, " received ", $4f db "@" TX_RAM $cf4b db $0, "!@@" ; 0x9c0f5 _TM24ExplanationText: ; 0x9c0f5 db $0, $51 db "TM24 contains", $4f db "THUNDERBOLT!", $51 db "Teach it to an", $4f db "electric #MON!", $57 ; 0x9c0f5 + 59 bytes _TM24NoRoomText: ; 0x9c130 db $0, "Yo kid, make room", $4f db "in your pack!", $57 ; 0x9c130 + 33 bytes _ReceivedThunderbadgeText: ; 0x9c151 db $0, "Whoa!", $51 db "You're the real", $4f db "deal, kid!", $51 db "Fine then, take", $4f db "the THUNDERBADGE!", $58 ; 0x9c151 + 67 bytes _VermilionGymBattleText1: ; 0x9c194 db $0, "When I was in the", $4f db "Army, LT.SURGE", $55 db "was my strict CO!", $57 ; 0x9c194 + 52 bytes _VermilionGymEndBattleText1: ; 0x9c1c8 db $0, "Stop!", $4f db "You're very good!", $58 ; 0x9c1c8 + 24 bytes _VermilionGymAfterBattleText1: ; 0x9c1e0 db $0, "The door won't", $4f db "open?", $51 db "LT.SURGE always", $4f db "was cautious!", $57 ; 0x9c1e0 + 51 bytes _VermilionGymBattleText2: ; 0x9c213 db $0, "I'm a lightweight,", $4f db "but I'm good with", $55 db "electricity!", $57 ; 0x9c213 + 49 bytes _VermilionGymEndBattleText2: ; 0x9c244 db $0, "Fried!", $58 ; 0x9c244 + 8 bytes _VermilionGymAfterBattleText2: ; 0x9c24c db $0, "OK, I'll talk!", $51 db "LT.SURGE said he", $4f db "hid door switches", $55 db "inside something!", $57 ; 0x9c24c + 68 bytes _VermilionGymBattleText3: ; 0x9c290 db $0, "This is no place", $4f db "for kids!", $57 ; 0x9c290 + 28 bytes _VermilionGymEndBattleText3: ; 0x9c2ac db $0, "Wow!", $4f db "Surprised me!", $58 ; 0x9c2ac + 20 bytes _VermilionGymAfterBattleText3: ; 0x9c2c0 db $0, "LT.SURGE set up", $4f db "double locks!", $55 db "Here's a hint!", $51 db "When you open the", $4f db "1st lock, the 2nd", $55 db "lock is right", $55 db "next to it!", $57 ; 0x9c2c0 + 107 bytes _UnnamedText_5cbf4: ; 0x9c32b db $0, "Yo! Champ in", $4f db "making!", $51 db "LT.SURGE has a", $4f db "nickname. People", $55 db "refer to him as", $55 db "the Lightning", $55 db "American!", $51 db "He's an expert on", $4f db "electric #MON!", $51 db "Birds and water", $4f db "#MON are at", $55 db "risk! Beware of", $55 db "paralysis too!", $51 db "LT.SURGE is very", $4f db "cautious!", $51 db "You'll have to", $4f db "break a code to", $55 db "get to him!", $57 ; 0x9c32b + 254 bytes _UnnamedText_5cbf9: ; 0x9c429 db $0, "Whew! That match", $4f db "was electric!", $57 ; 0x9c429 + 32 bytes _VermilionHouse1Text1: ; 0x9c449 db $0, "I'm getting my", $4f db "PIDGEY to fly a", $55 db "letter to SAFFRON", $55 db "in the north!", $57 _VermilionHouse1Text2: ; 0x9c488 db $0, "PIDGEY: Kurukkoo!@@" _VermilionHouse1Text3: ; 0x9c49c db $0, "Dear PIPPI, I hope", $4f db "to see you soon.", $51 db "I heard SAFFRON", $4f db "has problems with", $55 db "TEAM ROCKET.", $51 db "VERMILION appears", $4f db "to be safe.", $57 _UnnamedText_1dcc1: ; 0x9c50e db $0, $57 ; 0x9c50e + 2 bytes _UnnamedText_560b1: ; 0x9c510 db $0, "I'm the FISHING", $4f db "GURU!", $51 db "I simply Looove", $4f db "fishing!", $51 db "Do you like to", $4f db "fish?", $57 ; 0x9c510 + 68 bytes _UnnamedText_560b6: ; 0x9c554 db $0, "Grand! I like", $4f db "your style!", $51 db "Take this and", $4f db "fish, young one!", $51 db $52, " received", $4f db "an @" TX_RAM $cf4b db $0, "!@@" ; 0x9c5a4 _UnnamedText_560bb: ; 0x9c5a4 db $0, $51 db "Fishing is a way", $4f db "of life!", $51 db "From the seas to", $4f db "rivers, go out", $55 db "and land the big", $55 db "one, young one!", $57 ; 0x9c5a4 + 93 bytes _UnnamedText_560c0: ; 0x9c601 db $0, "Oh... That's so", $4f db "disappointing...", $57 ; 0x9c601 + 33 bytes _UnnamedText_560c5: ; 0x9c622 db $0, "Hello there,", $4f db $52, "!", $51 db "How are the fish", $4f db "biting?", $57 ; 0x9c622 + 42 bytes _UnnamedText_560ca: ; 0x9c64c db $0, "Oh no!", $51 db "You have no room", $4f db "for my gift!", $57 ; 0x9c64c + 38 bytes _CeladonMart1Text1: ; 0x9c672 db $0, "Hello! Welcome to", $4f db "CELADON DEPT.", $55 db "STORE.", $51 db "The board on the", $4f db "right describes", $55 db "the store layout.", $57 _CeladonMart1Text2: ; 0x9c6cd db $0, "1F: SERVICE", $4f db " COUNTER", $51 db "2F: TRAINER'S", $4f db " MARKET", $51 db "3F: TV GAME SHOP", $51 db "4F: WISEMAN GIFTS", $51 db "5F: DRUG STORE", $51 db "ROOFTOP SQUARE:", $4f db "VENDING MACHINES", $57 _CeladonMart1Text3: ; 0x9c752 db $0, "1F: SERVICE", $4f db " COUNTER", $57 _CeladonMart2Text3: ; 0x9c76b db $0, "SUPER REPEL keeps", $4f db "weak #MON at", $55 db "bay...", $51 db "Hmm, it's a more", $4f db "powerful REPEL!", $57 _CeladonMart2Text4: ; 0x9c7b2 db $0, "For long outings,", $4f db "you should buy", $55 db "REVIVE.", $57 _CeladonMart2Text5: ; 0x9c7dc db $0, "Top Grade Items", $4f db "for Trainers!", $51 db "2F: TRAINER'S", $4f db " MARKET", $57 _TM18PreReceiveText: ; 0x9c814 db $0, "Oh, hi! I finally", $4f db "finished #MON!", $51 db "Not done yet?", $4f db "This might be", $55 db "useful!", $58 ; 0x9c814 + 70 bytes _ReceivedTM18Text: ; 0x9c85a db $0, $52, " received", $4f db "@" TX_RAM $cf4b db $0, "!@@" ; 0x9c86e _TM18ExplanationText: ; 0x9c86e db $0, "TM18 is COUNTER!", $4f db "Not like the one", $55 db "I'm leaning on,", $55 db "mind you!", $57 ; 0x9c86e + 60 bytes _TM18NoRoomText: ; 0x9c8aa db $0, "Your pack is full", $4f db "of items!", $57 ; 0x9c8aa + 29 bytes _CeladonMart3Text2: ; 0x9c8c7 db $0, "Captured #MON", $4f db "are registered", $55 db "with an ID No.", $55 db "and OT, the name", $55 db "of the Original", $55 db "Trainer that", $55 db "caught it!", $57 _CeladonMart3Text3: ; 0x9c92d db $0, "All right!", $51 db "My buddy's going", $4f db "to trade me his", $55 db "KANGASKHAN for my", $55 db "GRAVELER!", $57 _CeladonMart3Text4: ; 0x9c975 db $0, "Come on GRAVELER!", $51 db "I love GRAVELER!", $4f db "I collect them!", $51 db "Huh?", $51 db "GRAVELER turned", $4f db "into a different", $55 db "#MON!", $57 _CeladonMart3Text5: ; 0x9c9d5 db $0, "You can identify", $4f db "#MON you got", $55 db "in trades by", $55 db "their ID Numbers!", $57 _CeladonMart3Text6: ; 0x9ca13 db $0, "It's an SNES!", $57 _CeladonMart3Text7: ; 0x9ca21 db $0, "An RPG! There's", $4f db "no time for that!", $57 _CeladonMart3Text9: ; 0x9ca43 db $0, "A sports game!", $4f db "Dad'll like that!", $57 _CeladonMart3Text11: ; 0x9ca64 db $0, "A puzzle game!", $4f db "Looks addictive!", $57 _CeladonMart3Text13: ; 0x9ca85 db $0, "A fighting game!", $4f db "Looks tough!", $57 _CeladonMart3Text14: ; 0x9caa4 db $0, "3F: TV GAME SHOP", $57 _CeladonMart3Text15: ; 0x9cab6 db $0, "Red and Blue!", $4f db "Both are #MON!", $57 _CeladonMart4Text2: ; 0x9cad4 db $0, "I'm getting a", $4f db "# DOLL for my", $55 db "girl friend!", $57 _CeladonMart4Text3: ; 0x9cafd db $0, "I heard something", $4f db "useful.", $51 db "You can run from", $4f db "wild #MON by", $55 db "distracting them", $55 db "with a # DOLL!", $57 _CeladonMart4Text4: ; 0x9cb56 db $0, "Express yourself", $4f db "with gifts!", $51 db "4F: WISEMAN GIFTS", $51 db "Evolution Special!", $4f db "Element STONEs on", $55 db "sale now!", $57 _UnnamedText_484ee: ; 0x9cbb5 db $0, "Give her which", $4f db "drink?", $57 ; 0x9cbb5 + 23 bytes UnnamedText_9cbcc: ; 0x9cbcc db $0, "Yay!", $51 db "FRESH WATER!", $51 db "Thank you!", $51 db "You can have this", $4f db "from me!@@" ; 0x9cc06 UnnamedText_9cc06: ; 0x9cc06 db $0, $52, " received", $4f db "@" TX_RAM $cf4b db $0, "!@@" ; 0x9cc1a UnnamedText_9cc1a: ; 0x9cc1a db $0, $51 db "@" TX_RAM $cf4b db $0, " contains", $4f db "ICE BEAM!", $51 db "It can freeze the", $4f db "target sometimes!@@" ; 0x9cc5a UnnamedText_9cc5a: ; 0x9cc5a db $0, "Yay!", $51 db "SODA POP!", $51 db "Thank you!", $51 db "You can have this", $4f db "from me!@@" ; 0x9cc91 UnnamedText_9cc91: ; 0x9cc91 db $0, $52, " received", $4f db "@" TX_RAM $cf4b db $0, "!@@" ; 0x9cca4 UnnamedText_9cca5: ; 0x9cca5 db $0, $51 db "@" TX_RAM $cf4b db $0, " contains", $4f db "ROCK SLIDE!", $51 db "It can spook the", $4f db "target sometimes!@@" ; 0x9cce6 UnnamedText_9cce6: ; 0x9cce6 db $0, "Yay!", $51 db "LEMONADE!", $51 db "Thank you!", $51 db "You can have this", $4f db "from me!@@" ; 0x9cd1d ReceivedTM49Text: ; 0x9cd1d db $0, $52, " received", $4f db "TM49!@@" ; 0x9cd30 UnnamedText_9cd30: ; 0x9cd30 db $0, $51 db "TM49 contains", $4f db "TRI ATTACK!@@" ; 0x9cd4d UnnamedText_9cd4d: ; 0x9cd4d db $0, "You don't have", $4f db "space for this!@@" ; 0x9cd6d UnnamedText_9cd6d: ; 0x9cd6d db $0, "No thank you!", $4f db "I'm not thirsty", $55 db "after all!@@" ; 0x9cd97 _CeladonMartRoofText1: ; 0x9cd97 db $0, "My sister is a", $4f db "trainer, believe", $55 db "it or not.", $51 db "But, she's so", $4f db "immature, she", $55 db "drives me nuts!", $57 _UnnamedText_48598: ; 0x9cdee db $0, "I'm thirsty!", $4f db "I want something", $55 db "to drink!", $57 ; 0x9cdee + 40 bytes _UnnamedText_4859d: ; 0x9ce16 db $0, "I'm thirsty!", $4f db "I want something", $55 db "to drink!", $51 db "Give her a drink?", $57 ; 0x9ce16 + 58 bytes _CeladonMartRoofText6: ; 0x9ce50 db $0, "ROOFTOP SQUARE:", $4f db "VENDING MACHINES", $57 _UnnamedText_74f99: ; 0x9ce72 db $0, "A vending machine!", $4f db "Here's the menu!", $58 ; 0x9ce72 + 36 bytes _UnnamedText_74fd3: ; 0x9ce96 db $0, "Oops, not enough", $4f db "money!", $57 ; 0x9ce96 + 25 bytes _UnnamedText_74fd8: ; 0x9ceaf TX_RAM $cf4b db $0, $4f db "popped out!", $57 ; 0x9ceaf + 17 bytes _UnnamedText_74fdd: ; 0x9cec0 db $0, "There's no more", $4f db "room for stuff!", $57 ; 0x9cec0 + 32 bytes _UnnamedText_74fe2: ; 0x9cee0 db $0, "Not thirsty!", $57 ; 0x9cee0 + 14 bytes _CeladonMansion1Text1: ; 0x9ceee db $0, "MEOWTH: Meow!@@" _CeladonMansion1Text2: ; 0x9cefe db $0, "My dear #MON", $4f db "keep me company.", $51 db "MEOWTH even brings", $4f db "money home!", $57 _CeladonMansion1Text3: ; 0x9cf3c db $0, "CLEFAIRY: Pi", $4f db "pippippi!@@" _CeladonMansion1Text4: ; 0x9cf55 db $0, "NIDORAN: Kya", $4f db "kyaoo!@@" _CeladonMansion1Text5: ; 0x9cf6b db $0, "CELADON MANSION", $4f db "Manager's Suite", $57 _CeladonMansion2Text1: ; 0x9cf8b db $0, "GAME FREAK", $4f db "Meeting Room", $57 _CeladonMansion3Text1: ; 0x9cfa4 db $0, "Me? I'm the", $4f db "programmer!", $57 _CeladonMansion3Text2: ; 0x9cfbc db $0, "I'm the graphic", $4f db "artist!", $55 db "I drew you!", $57 _CeladonMansion3Text3: ; 0x9cfe0 db $0, "I wrote the story!", $4f db "Isn't ERIKA cute?", $51 db "I like MISTY a", $4f db "lot too!", $51 db "Oh, and SABRINA,", $4f db "I like her!", $57 _UnnamedText_487d0: ; 0x9d03a db $0, "Is that right?", $51 db "I'm the game", $4f db "designer!", $51 db "Filling up your", $4f db "#DEX is tough,", $55 db "but don't quit!", $51 db "When you finish,", $4f db "come tell me!", $57 ; 0x9d03a + 115 bytes _UnnamedText_487d5: ; 0x9d0ad db $0, "Wow! Excellent!", $4f db "You completed", $55 db "your #DEX!", $55 db "Congratulations!", $55 db "...@@" ; 0x9d0ed _CeladonMansion3Text5: ; 0x9d0ed db $0, "It's the game", $4f db "program! Messing", $55 db "with it could bug", $55 db "out the game!", $57 _CeladonMansion3Text6: ; 0x9d12c db $0, "Someone's playing", $4f db "a game instead of", $55 db "working!", $57 _CeladonMansion3Text7: ; 0x9d159 db $0, "It's the script!", $4f db "Better not look", $55 db "at the ending!", $57 _CeladonMansion3Text8: ; 0x9d189 db $0, "GAME FREAK", $4f db "Development Room", $57 _CeladonMansion4Text1: ; 0x9d1a6 db $0, "I KNOW EVERYTHING!", $57 _CeladonMansion5Text1: ; 0x9d1ba db $0, "I know everything", $4f db "about the world", $55 db "of #MON in", $55 db "your GAME BOY!", $51 db "Get together with", $4f db "your friends and", $55 db "trade #MON!", $57 _CeladonPokecenterText2: ; 0x9d226 db $0, "# FLUTE awakens", $4f db "#MON with a", $55 db "sound that only", $55 db "they can hear!", $57 _CeladonPokecenterText3: ; 0x9d262 db $0, "I rode uphill on", $4f db "CYCLING ROAD from", $55 db "FUCHSIA!", $57 _UnnamedText_48a5e: ; 0x9d28f db $0, "Hello. Lovely", $4f db "weather isn't it?", $55 db "It's so pleasant.", $51 db "...Oh dear...", $4f db "I must have dozed", $55 db "off. Welcome.", $51 db "My name is ERIKA.", $4f db "I am the LEADER", $55 db "of CELADON GYM.", $51 db "I teach the art of", $4f db "flower arranging.", $55 db "My #MON are of", $55 db "the grass-type.", $51 db "Oh, I'm sorry, I", $4f db "had no idea that", $55 db "you wished to", $55 db "challenge me.", $51 db "Very well, but I", $4f db "shall not lose.", $57 ; 0x9d28f + 307 bytes _UnnamedText_48a63: ; 0x9d3c2 db $0, "Oh!", $4f db "I concede defeat.", $51 db "You are remarkably", $4f db "strong.", $51 db "I must confer you", $4f db "the RAINBOWBADGE.", $58 ; 0x9d3c2 + 86 bytes _UnnamedText_48a68: ; 0x9d418 db $0, "You are cataloging", $4f db "#MON? I must", $55 db "say I'm impressed.", $51 db "I would never", $4f db "collect #MON", $55 db "if they were", $55 db "unattractive.", $57 ; 0x9d418 + 105 bytes _UnnamedText_48a6d: ; 0x9d481 db $0, "The RAINBOWBADGE", $4f db "will make #MON", $55 db "up to L50 obey.", $51 db "It also allows", $4f db "#MON to use", $55 db "STRENGTH in and", $55 db "out of battle.", $51 db "Please also take", $4f db "this with you.", $57 ; 0x9d481 + 139 bytes _ReceivedTM21Text: ; 0x9d50c db $0, $52, " received", $4f db "@" TX_RAM $cf4b db $0, "!@@" ; 0x9d520 _TM21ExplanationText: ; 0x9d520 db $0, $51 db "TM21 contains", $4f db "MEGA DRAIN.", $51 db "Half the damage", $4f db "it inflicts is", $55 db "drained to heal", $55 db "your #MON!", $57 ; 0x9d520 + 86 bytes _TM21NoRoomText: ; 0x9d576 db $0, "You should make", $4f db "room for this.", $57 ; 0x9d576 + 32 bytes _CeladonGymBattleText2: ; 0x9d596 db $0, "Hey!", $51 db "You are not", $4f db "allowed in here!", $57 ; 0x9d596 + 35 bytes _CeladonGymEndBattleText2: ; 0x9d5b9 db $0, "You're", $4f db "too rough!", $58 ; 0x9d5b9 + 18 bytes _CeladonGymAfterBattleText2: ; 0x9d5cb db $0, "Bleaah!", $4f db "I hope ERIKA", $55 db "wipes you out!", $57 ; 0x9d5cb + 37 bytes _CeladonGymBattleText3: ; 0x9d5f0 db $0, "I was getting", $4f db "bored.", $57 ; 0x9d5f0 + 22 bytes _CeladonGymEndBattleText3: ; 0x9d606 db $0, "My", $4f db "makeup!", $58 ; 0x9d606 + 12 bytes _CeladonGymAfterBattleText3: ; 0x9d612 db $0, "Grass-type #MON", $4f db "are tough against", $55 db "the water-type!", $51 db "They also have an", $4f db "edge on rock and", $55 db "ground #MON!", $57 ; 0x9d612 + 99 bytes _CeladonGymBattleText4: ; 0x9d675 db $0, "Aren't you the", $4f db "peeping Tom?", $57 ; 0x9d675 + 28 bytes _CeladonGymEndBattleText4: ; 0x9d691 db $0, "I'm", $4f db "in shock!", $58 ; 0x9d691 + 14 bytes _CeladonGymAfterBattleText4: ; 0x9d69f db $0, "Oh, you weren't", $4f db "peeping? We get a", $55 db "lot of gawkers!", $57 ; 0x9d69f + 50 bytes _CeladonGymBattleText5: ; 0x9d6d1 db $0, "Look at my grass", $4f db "#MON!", $51 db "They're so easy", $4f db "to raise!", $57 ; 0x9d6d1 + 49 bytes _CeladonGymEndBattleText5: ; 0x9d702 db $0, "No!", $58 ; 0x9d702 + 5 bytes _CeladonGymAfterBattleText5: ; 0x9d707 db $0, "We only use grass-", $4f db "type #MON at", $55 db "our GYM!", $51 db "We also use them", $4f db "for making flower", $55 db "arrangements!", $57 ; 0x9d707 + 91 bytes _CeladonGymBattleText6: ; 0x9d762 db $0, "Don't bring any", $4f db "bugs or fire", $55 db "#MON in here!", $57 ; 0x9d762 + 43 bytes _CeladonGymEndBattleText6: ; 0x9d78d db $0, "Oh!", $4f db "You!", $58 ; 0x9d78d + 10 bytes _CeladonGymAfterBattleText6: ; 0x9d797 db $0, "Our LEADER, ERIKA,", $4f db "might be quiet,", $55 db "but she's also", $55 db "very skilled!", $57 ; 0x9d797 + 64 bytes _CeladonGymBattleText7: ; 0x9d7d7 db $0, "Pleased to meet", $4f db "you. My hobby is", $55 db "#MON training.", $57 ; 0x9d7d7 + 49 bytes _CeladonGymEndBattleText7: ; 0x9d808 db $0, "Oh!", $4f db "Splendid!", $58 ; 0x9d808 + 15 bytes _CeladonGymAfterBattleText7: ; 0x9d817 db $0, "I have a blind", $4f db "date coming up.", $55 db "I have to learn", $55 db "to be polite.", $57 ; 0x9d817 + 62 bytes _CeladonGymBattleText8: ; 0x9d855 db $0, "Welcome to", $4f db "CELADON GYM!", $51 db "You better not", $4f db "underestimate", $55 db "girl power!", $57 ; 0x9d855 + 66 bytes _CeladonGymEndBattleText8: ; 0x9d897 db $0, "Oh!", $4f db "Beaten!", $58 ; 0x9d897 + 13 bytes _CeladonGymAfterBattleText8: ; 0x9d8a4 db $0, "I didn't bring my", $4f db "best #MON!", $51 db "Wait 'til next", $4f db "time!", $57 ; 0x9d8a4 + 49 bytes _CeladonGameCornerText1: ; 0x9d8d5 db $0, "Welcome!", $51 db "You can exchange", $4f db "your coins for", $55 db "fabulous prizes", $55 db "next door.", $57 _UnnamedText_48d22: ; 0x9d91a db $0, "Welcome to ROCKET", $4f db "GAME CORNER!", $51 db "Do you need some", $4f db "game coins?", $51 db "It's ", $f0, "1000 for 50", $4f db "coins. Would you", $55 db "like some?", $57 ; 0x9d91a + 106 bytes _UnnamedText_48d27: ; 0x9d984 db $0, "Thanks! Here are", $4f db "your 50 coins!", $57 ; 0x9d984 + 33 bytes _UnnamedText_48d2c: ; 0x9d9a5 db $0, "No? Please come", $4f db "play sometime!", $57 ; 0x9d9a5 + 32 bytes _UnnamedText_48d31: ; 0x9d9c5 db $0, "You can't afford", $4f db "the coins!", $57 ; 0x9d9c5 + 28 bytes _UnnamedText_48d36: ; 0x9d9e1 db $0, "Oops! Your COIN", $4f db "CASE is full.", $57 ; 0x9d9e1 + 31 bytes _UnnamedText_48d3b: ; 0x9da00 db $0, "You don't have a", $4f db "COIN CASE!", $57 ; 0x9da00 + 28 bytes _CeladonGameCornerText3: ; 0x9da1c db $0, "Keep this quiet.", $51 db "It's rumored that", $4f db "this place is run", $55 db "by TEAM ROCKET.", $57 _CeladonGameCornerText4: ; 0x9da61 db $0, "I think these", $4f db "machines have", $55 db "different odds.", $57 _UnnamedText_48d9c: ; 0x9da8e db $0, "Kid, do you want", $4f db "to play?", $58 ; 0x9da8e + 27 bytes _Received10CoinsText: ; 0x9daa9 db $0, $52, " received", $4f db "10 coins!@@" ; 0x9dac0 _UnnamedText_48da7: ; 0x9dac0 db $0, "You don't need my", $4f db "coins!", $57 ; 0x9dac0 + 25 bytes _UnnamedText_48dac: ; 0x9dad9 db $0, "Wins seem to come", $4f db "and go.", $57 ; 0x9dad9 + 27 bytes _CeladonGameCornerText6: ; 0x9daf4 db $0, "I'm having a", $4f db "wonderful time!", $57 _UnnamedText_48dca: ; 0x9db11 db $0, "Hey!", $51 db "You have better", $4f db "things to do,", $55 db "champ in making!", $51 db "CELADON GYM's", $4f db "LEADER is ERIKA!", $55 db "She uses grass-", $55 db "type #MON!", $51 db "She might appear", $4f db "docile, but don't", $55 db "be fooled!", $57 ; 0x9db11 + 155 bytes _UnnamedText_48dcf: ; 0x9dbac db $0, "They offer rare", $4f db "#MON that can", $55 db "be exchanged for", $55 db "your coins.", $51 db "But, I just can't", $4f db "seem to win!", $57 ; 0x9dbac + 90 bytes _CeladonGameCornerText8: ; 0x9dc06 db $0, "Games are scary!", $4f db "It's so easy to", $55 db "get hooked!", $57 _UnnamedText_48e26: ; 0x9dc33 db $0, "What's up? Want", $4f db "some coins?", $58 ; 0x9dc33 + 28 bytes _Received20CoinsText: ; 0x9dc4f db $0, $52, " received", $4f db "20 coins!@@" ; 0x9dc66 _UnnamedText_48e31: ; 0x9dc66 db $0, "You have lots of", $4f db "coins!", $57 ; 0x9dc66 + 25 bytes _UnnamedText_48e36: ; 0x9dc7f db $0, "Darn! I need more", $4f db "coins for the", $55 db "#MON I want!", $57 ; 0x9dc7f + 46 bytes _UnnamedText_48e88: ; 0x9dcad db $0, "Hey, what? You're", $4f db "throwing me off!", $55 db "Here are some", $55 db "coins, shoo!", $58 ; 0x9dcad + 62 bytes _UnnamedText_48e8d: ; 0x9dceb db $0, $52, " received", $4f db "20 coins!@@" ; 0x9dd02 _UnnamedText_48e93: ; 0x9dd02 db $0, "You've got your", $4f db "own coins!", $57 ; 0x9dd02 + 27 bytes _UnnamedText_48e98: ; 0x9dd1d db $0, "The trick is to", $4f db "watch the reels", $55 db "closely!", $57 ; 0x9dd1d + 42 bytes _UnnamedText_48ece: ; 0x9dd47 db $0, "I'm guarding this", $4f db "poster!", $55 db "Go away, or else!", $57 ; 0x9dd47 + 44 bytes _UnnamedText_48ed3: ; 0x9dd73 db $0, "Dang!", $58 ; 0x9dd73 + 7 bytes _UnnamedText_48ed8: ; 0x9dd7a db $0, "Our hideout might", $4f db "be discovered! I", $55 db "better tell BOSS!", $57 ; 0x9dd7a + 54 bytes _UnnamedText_48f09: ; 0x9ddb0 db $0, "Hey!", $51 db "A switch behind", $4f db "the poster!?", $55 db "Let's push it!@@" ; 0x9dde2 _UnnamedText_48f19: ; 0x9dde2 db $0, "Oops! Forgot the", $4f db "COIN CASE!", $57 ; 0x9dde2 + 29 bytes _CeladonMart5Text1: ; 0x9ddff db $0, "#MON ability", $4f db "enhancers can be", $55 db "bought only here.", $51 db "Use CALCIUM to", $4f db "increase SPECIAL", $55 db "abilities.", $51 db "Use CARBOS to", $4f db "increase SPEED.", $57 _CeladonMart5Text2: ; 0x9de79 db $0, "I'm here for", $4f db "#MON ability", $55 db "enhancers.", $51 db "PROTEIN increases", $4f db "ATTACK power.", $51 db "IRON increases", $4f db "DEFENSE!", $57 _CeladonMart5Text5: ; 0x9ded6 db $0, "5F: DRUG STORE", $57 _CeladonPrizeRoomText1: ; 0x9dee6 db $0, "I sure do fancy", $4f db "that PORYGON!", $51 db "But, it's hard to", $4f db "win at slots!", $57 _CeladonPrizeRoomText2: ; 0x9df24 db $0, "I had a major", $4f db "haul today!", $57 _CeladonDinerText1: ; 0x9df3f db $0, "Hi!", $51 db "We're taking a", $4f db "break now.", $57 _CeladonDinerText2: ; 0x9df5d db $0, "My #MON are", $4f db "weak, so I often", $55 db "have to go to the", $55 db "DRUG STORE.", $57 _CeladonDinerText3: ; 0x9df99 db $0, "Psst! There's a", $4f db "basement under", $55 db "the GAME CORNER.", $57 _CeladonDinerText4: ; 0x9dfc9 db $0, "Munch...", $51 db "The man at that", $4f db "table lost it all", $55 db "at the slots.", $57 _UnnamedText_491a7: ; 0x9e003 db $0, "Go ahead! Laugh!", $51 db "I'm flat out", $4f db "busted!", $51 db "No more slots for", $4f db "me! I'm going", $55 db "straight!", $51 db "Here! I won't be", $4f db "needing this any-", $55 db "more!", $58 ; 0x9e003 + 119 bytes _ReceivedCoinCaseText: ; 0x9e07a db $0, $52, " received", $4f db "a @" TX_RAM $cf4b db $0, "!@@" ; 0x9e090 _CoinCaseNoRoomText: ; 0x9e090 db $0, "Make room for", $4f db "this!", $57 ; 0x9e090 + 21 bytes _UnnamedText_491b7: ; 0x9e0a5 db $0, "I always thought", $4f db "I was going to", $55 db "win it back...", $57 ; 0x9e0a5 + 48 bytes _CeladonHouseText1: ; 0x9e0d5 db $0, "Hehehe! The slots", $4f db "just reel in the", $55 db "dough, big time!", $57 _CeladonHouseText2: ; 0x9e10a db $0, "CHIEF!", $51 db "We just shipped", $4f db "2000 #MON as", $55 db "slot prizes!", $57 _CeladonHouseText3: ; 0x9e13c db $0, "Don't touch the", $4f db "poster at the", $55 db "GAME CORNER!", $51 db "There's no secret", $4f db "switch behind it!", $57 _CeladonHotelText1: ; 0x9e18a db $0, "#MON? No, this", $4f db "is a hotel for", $55 db "people.", $51 db "We're full up.", $57 _CeladonHotelText2: ; 0x9e1bf db $0, "I'm on vacation", $4f db "with my brother", $55 db "and boy friend.", $51 db "CELADON is such a", $4f db "pretty city!", $57 _CeladonHotelText3: ; 0x9e20e db $0, "Why did she bring", $4f db "her brother?", $57 _FuchsiaMartText2: ; 0x9e22e db $0, "Do you have a", $4f db "SAFARI ZONE flag?", $51 db "What about cards", $4f db "or calendars?", $57 _FuchsiaMartText3: ; 0x9e26e db $0, "Did you try X", $4f db "SPEED? It speeds", $55 db "up a #MON in", $55 db "battle!", $57 _FuchsiaHouse1Text1: ; 0x9e2a3 db $0, "SAFARI ZONE's", $4f db "WARDEN is old,", $55 db "but still active!", $51 db "All his teeth are", $4f db "false, though.", $57 _FuchsiaHouse1Text2: ; 0x9e2f3 db $0, "Hmm? You've met", $4f db "BILL?", $51 db "He's my grandson!", $51 db "He always liked", $4f db "collecting things", $55 db "even as a child!", $57 _FuchsiaHouse1Text3: ; 0x9e34d db $0, "BILL files his", $4f db "own #MON data", $55 db "on his PC!", $51 db "Did he show you?", $57 _FuchsiaPokecenterText1: ; 0x9e387 db $0, "You can't win", $4f db "with just one", $55 db "strong #MON.", $51 db "It's tough, but", $4f db "you have to raise", $55 db "them evenly.", $57 _FuchsiaPokecenterText3: ; 0x9e3de db $0, "There's a narrow", $4f db "trail west of", $55 db "VIRIDIAN CITY.", $51 db "It goes to #MON", $4f db "LEAGUE HQ.", $55 db "The HQ governs", $55 db "all trainers.", $57 _WardenGibberishText1: ; 0x9e444 db $0, "WARDEN: Hif fuff", $4f db "hefifoo!", $51 db "Ha lof ha feef ee", $4f db "hafahi ho. Heff", $55 db "hee fwee!", $57 ; 0x9e444 + 71 bytes _WardenGibberishText2: ; 0x9e48b db $0, "Ah howhee ho hoo!", $4f db "Eef ee hafahi ho!", $57 ; 0x9e48b + 37 bytes _WardenGibberishText3: ; 0x9e4b0 db $0, "Ha? He ohay heh", $4f db "ha hoo ee haheh!", $57 ; 0x9e4b0 + 34 bytes _WardenTeethText1: ; 0x9e4d2 db $0, $52, " gave the", $4f db "GOLD TEETH to the", $55 db "WARDEN!@@" ; 0x9e4f9 _WardenTeethText2: ; 0x9e4f9 db $0, $51 db "The WARDEN popped", $4f db "in his teeth!", $58 ; 0x9e4f9 + 34 bytes _WardenThankYouText: ; 0x9e51b db $0, "WARDEN: Thanks,", $4f db "kid! No one could", $55 db "understand a word", $55 db "that I said.", $51 db "I couldn't work", $4f db "that way.", $55 db "Let me give you", $55 db "something for", $55 db "your trouble.", $58 ; 0x9e51b + 135 bytes _ReceivedHM04Text: ; 0x9e5a2 db $0, $52, " received", $4f db "@" TX_RAM $cf4b db $0, "!@@" ; 0x9e5b6 _HM04ExplanationText: ; 0x9e5b6 db $0, "WARDEN: HM04", $4f db "teaches STRENGTH!", $51 db "It lets #MON", $4f db "move boulders", $55 db "when you're out-", $55 db "side of battle.", $51 db "Oh yes, did you", $4f db "find SECRET HOUSE", $55 db "in SAFARI ZONE?", $51 db "If you do, you", $4f db "win an HM!", $51 db "I hear it's the", $4f db "rare SURF HM.", $57 ; 0x9e5b6 + 196 bytes _HM04NoRoomText: ; 0x9e67a db $0, "Your pack is", $4f db "stuffed full!", $57 ; 0x9e67a + 28 bytes _UnnamedText_75176: ; 0x9e696 db $0, "#MON photos", $4f db "and fossils.", $57 ; 0x9e696 + 26 bytes _UnnamedText_7517b: ; 0x9e6b0 db $0, "Old #MON", $4f db "merchandise.", $57 ; 0x9e6b0 + 23 bytes _SafariZoneEntranceText1: ; 0x9e6c7 db $0, "Welcome to the", $4f db "SAFARI ZONE!", $57 UnnamedText_9e6e4: ; 0x9e6e4 db $0, "For just ", $f0, "500,", $4f db "you can catch all", $55 db "the #MON you", $55 db "want in the park!", $51 db "Would you like to", $4f db "join the hunt?@@" ; 0x9e747 UnnamedText_9e747: ; 0x9e747 db $0, "That'll be ", $f0, "500", $4f db "please!", $51 db "We only use a", $4f db "special # BALL", $55 db "here.", $51 db $52, " received", $4f db "30 SAFARI BALLs!@@" ; 0x9e79f _UnnamedText_75360: ; 0x9e79f db $0, $51 db "We'll call you on", $4f db "the PA when you", $55 db "run out of time", $55 db "or SAFARI BALLs!", $57 ; 0x9e79f + 68 bytes _UnnamedText_75365: ; 0x9e7e3 db $0, "OK! Please come", $4f db "again!", $57 ; 0x9e7e3 + 24 bytes _UnnamedText_7536a: ; 0x9e7fb db $0, "Oops! Not enough", $4f db "money!", $57 ; 0x9e7fb + 25 bytes UnnamedText_9e814: ; 0x9e814 db $0, "Leaving early?@@" ; 0x9e825 _UnnamedText_753bb: ; 0x9e825 db $0, "Please return any", $4f db "SAFARI BALLs you", $55 db "have left.", $57 ; 0x9e825 + 47 bytes _UnnamedText_753c0: ; 0x9e854 db $0, "Good Luck!", $57 ; 0x9e854 + 12 bytes _UnnamedText_753c5: ; 0x9e860 db $0, "Did you get a", $4f db "good haul?", $55 db "Come again!", $57 ; 0x9e860 + 38 bytes _UnnamedText_753e6: ; 0x9e886 db $0, "Hi! Is it your", $4f db "first time here?", $57 ; 0x9e886 + 33 bytes _UnnamedText_753eb: ; 0x9e8a7 db $0, "SAFARI ZONE has 4", $4f db "zones in it.", $51 db "Each zone has", $4f db "different kinds", $55 db "of #MON. Use", $55 db "SAFARI BALLs to", $55 db "catch them!", $51 db "When you run out", $4f db "of time or SAFARI", $55 db "BALLs, it's game", $55 db "over for you!", $51 db "Before you go,", $4f db "open an unused", $55 db "#MON BOX so", $55 db "there's room for", $55 db "new #MON!", $57 ; 0x9e8a7 + 236 bytes _UnnamedText_753f0: ; 0x9e993 db $0, "Sorry, you're a", $4f db "regular here!", $57 ; 0x9e993 + 30 bytes _UnnamedText_75581: ; 0x9e9b1 db $0, "KOGA: Fwahahaha!", $51 db "A mere child like", $4f db "you dares to", $55 db "challenge me?", $51 db "Very well, I", $4f db "shall show you", $55 db "true terror as a", $55 db "ninja master!", $51 db "You shall feel", $4f db "the despair of", $55 db "poison and sleep", $55 db "techniques!", $57 ; 0x9e9b1 + 181 bytes _UnnamedText_75586: ; 0x9ea66 db $0, "Humph!", $4f db "You have proven", $55 db "your worth!", $51 db "Here! Take the", $4f db "SOULBADGE!", $58 ; 0x9ea66 + 62 bytes SECTION "bank28",DATA,BANK[$28] _UnnamedText_7558b: ; 0xa0000 db $0, "When afflicted by", $4f db "TOXIC, #MON", $55 db "suffer more and", $55 db "more as battle", $55 db "progresses!", $51 db "It will surely", $4f db "terrorize foes!", $57 ; 0xa0000 + 105 bytes _UnnamedText_75590: ; 0xa0069 db $0, "Now that you have", $4f db "the SOULBADGE,", $55 db "the DEFENSE of", $55 db "your #MON", $55 db "increases!", $51 db "It also lets you", $4f db "SURF outside of", $55 db "battle!", $51 db "Ah! Take this", $4f db "too!", $57 ; 0xa0069 + 130 bytes _ReceivedTM06Text: ; 0xa00eb db $0, $52, " received", $4f db "@" TX_RAM $cf4b db $0, "!@@" _TM06ExplanationText: ; 0xa00ff db $0, $51 db "TM06 contains", $4f db "TOXIC!", $51 db "It is a secret", $4f db "technique over", $55 db "400 years old!", $57 ; 0xa00ff + 68 bytes _TM06NoRoomText: ; 0xa0143 db $0, "Make space for", $4f db "this, child!", $57 ; 0xa0143 + 29 bytes _FuchsiaGymBattleText1: ; 0xa0160 db $0, "Strength isn't", $4f db "the key for", $55 db "#MON!", $51 db "It's strategy!", $51 db "I'll show you how", $4f db "strategy can beat", $55 db "brute strength!", $57 ; 0xa0160 + 98 bytes _FuchsiaGymEndBattleText1: ; 0xa01c2 db $0, "What?", $4f db "Extraordinary!", $58 ; 0xa01c2 + 22 bytes _FuchsiaGymAfterBattleText1: ; 0xa01d8 db $0, "So, you mix brawn", $4f db "with brains?", $55 db "Good strategy!", $57 ; 0xa01d8 + 47 bytes _FuchsiaGymBattleText2: ; 0xa0207 db $0, "I wanted to become", $4f db "a ninja, so I", $55 db "joined this GYM!", $57 ; 0xa0207 + 51 bytes _FuchsiaGymEndBattleText2: ; 0xa023a db $0, "I'm done", $4f db "for!", $58 ; 0xa023a + 14 bytes _FuchsiaGymAfterBattleText2: ; 0xa0248 db $0, "I will keep on", $4f db "training under", $55 db "KOGA, my ninja", $55 db "master!", $57 ; 0xa0248 + 54 bytes _FuchsiaGymBattleText3: ; 0xa027e db $0, "Let's see you", $4f db "beat my special", $55 db "techniques!", $57 ; 0xa027e + 42 bytes _FuchsiaGymEndBattleText3: ; 0xa02a8 db $0, "You", $4f db "had me fooled!", $58 ; 0xa02a8 + 20 bytes _FuchsiaGymAfterBattleText3: ; 0xa02bc db $0, "I like poison and", $4f db "sleep techniques,", $55 db "as they linger", $55 db "after battle!", $57 ; 0xa02bc + 66 bytes _FuchsiaGymBattleText4: ; 0xa02fe db $0, "Stop right there!", $51 db "Our invisible", $4f db "walls have you", $55 db "frustrated?", $57 ; 0xa02fe + 60 bytes _FuchsiaGymEndBattleText4: ; 0xa033a db $0, "Whoa!", $4f db "He's got it!", $58 ; 0xa033a + 19 bytes _FuchsiaGymAfterBattleText4: ; 0xa034d db $0, "You impressed me!", $4f db "Here's a hint!", $51 db "Look very closely", $4f db "for gaps in the", $55 db "invisible walls!", $57 ; 0xa034d + 84 bytes _FuchsiaGymBattleText5: ; 0xa03a1 db $0, "I also study the", $4f db "way of the ninja", $55 db "with master KOGA!", $51 db "Ninja have a long", $4f db "history of using", $55 db "animals!", $57 ; 0xa03a1 + 97 bytes _FuchsiaGymEndBattleText5: ; 0xa0402 db $0, "Awoo!", $58 ; 0xa0402 + 7 bytes _FuchsiaGymAfterBattleText5: ; 0xa0409 db $0, "I still have much", $4f db "to learn!", $57 ; 0xa0409 + 29 bytes _FuchsiaGymBattleText6: ; 0xa0426 db $0, "Master KOGA comes", $4f db "from a long line", $55 db "of ninjas!", $51 db "What did you", $4f db "descend from?", $57 ; 0xa0426 + 74 bytes _FuchsiaGymEndBattleText6: ; 0xa0470 db $0, "Dropped", $4f db "my balls!", $58 ; 0xa0470 + 19 bytes _FuchsiaGymAfterBattleText6: ; 0xa0483 db $0, "Where there is", $4f db "light, there is", $55 db "shadow!", $51 db "Light and shadow!", $4f db "Which do you", $55 db "choose?", $57 ; 0xa0483 + 79 bytes _UnnamedText_7564e: ; 0xa04d2 db $0, "Yo! Champ in", $4f db "making!", $51 db "FUCHSIA GYM is", $4f db "riddled with", $55 db "invisible walls!", $51 db "KOGA might appear", $4f db "close, but he's", $55 db "blocked off!", $51 db "You have to find", $4f db "gaps in the walls", $55 db "to reach him!", $57 ; 0xa04d2 + 162 bytes _UnnamedText_75653: ; 0xa0574 db $0, "It's amazing how", $4f db "ninja can terrify", $55 db "even now!", $57 ; 0xa0574 + 45 bytes _FuchsiaMeetingRoomText1: ; 0xa05a1 db $0, "We nicknamed the", $4f db "WARDEN SLOWPOKE.", $51 db "He and SLOWPOKE", $4f db "both look vacant!", $57 _FuchsiaMeetingRoomText2: ; 0xa05e6 db $0, "SLOWPOKE is very", $4f db "knowledgeable", $55 db "about #MON!", $51 db "He even has some", $4f db "fossils of rare,", $55 db "extinct #MON!", $57 _FuchsiaMeetingRoomText3: ; 0xa0642 db $0, "SLOWPOKE came in,", $4f db "but I couldn't", $55 db "understand him.", $51 db "I think he's got", $4f db "a speech problem!", $57 _UnnamedText_561bd: ; 0xa0695 db $0, "I'm the FISHING", $4f db "GURU's older", $55 db "brother!", $51 db "I simply Looove", $4f db "fishing!", $51 db "Do you like to", $4f db "fish?", $57 ; 0xa0695 + 83 bytes _UnnamedText_561c2: ; 0xa06e8 db $0, "Grand! I like", $4f db "your style!", $51 db "Take this and", $4f db "fish, young one!", $51 db $52, " received", $4f db "a @" TX_RAM $cf4b db $0, "!@@" ; 0xa0737 _UnnamedText_56212: ; 0xa0737 db $0, "Oh... That's so", $4f db "disappointing...", $57 ; 0xa0737 + 33 bytes _UnnamedText_56217: ; 0xa0758 db $0, "Hello there,", $4f db $52, "!", $51 db "How are the fish", $4f db "biting?", $57 ; 0xa0758 + 42 bytes _UnnamedText_5621c: ; 0xa0782 db $0, "Oh no!", $51 db "You have no room", $4f db "for my gift!", $57 ; 0xa0782 + 38 bytes _Mansion1BattleText2: ; 0xa07a8 db $0, "Who are you? There", $4f db "shouldn't be", $55 db "anyone here.", $57 ; 0xa07a8 + 45 bytes _Mansion1EndBattleText2: ; 0xa07d5 db $0, "Ouch!", $58 ; 0xa07d5 + 7 bytes _Mansion1AfterBattleText2: ; 0xa07dc db $0, "A key? I don't", $4f db "know what you're", $55 db "talking about.", $57 ; 0xa07dc + 46 bytes _UnnamedText_44395: ; 0xa080a db $0, "A secret switch!", $51 db "Press it?", $57 ; 0xa080a + 28 bytes _UnnamedText_4439a: ; 0xa0826 db $0, "Who wouldn't?", $58 ; 0xa0826 + 14 bytes _UnnamedText_4439f: ; 0xa0834 db $0, "Not quite yet!", $57 ; 0xa0834 + 16 bytes _UnnamedText_75914: ; 0xa0844 db $0, "Hah!", $51 db "I am BLAINE! I", $4f db "am the LEADER of", $55 db "CINNABAR GYM!", $51 db "My fiery #MON", $4f db "will incinerate", $55 db "all challengers!", $51 db "Hah! You better", $4f db "have BURN HEAL!", $57 ; 0xa0844 + 131 bytes UnnamedText_a08c7: ; 0xa08c7 db $0, "I have", $4f db "burnt out!", $51 db "You have earned", $4f db "the VOLCANOBADGE!@@" ; 0xa08fd _UnnamedText_75920: ; 0xa08fd db $0, "FIRE BLAST is the", $4f db "ultimate fire", $55 db "technique!", $51 db "Don't waste it on", $4f db "water #MON!", $57 ; 0xa08fd + 73 bytes _UnnamedText_75925: ; 0xa0946 db $0, "Hah!", $51 db "The VOLCANOBADGE", $4f db "heightens the", $55 db "SPECIAL abilities", $55 db "of your #MON!", $51 db "Here, you can", $4f db "have this too!", $57 ; 0xa0946 + 98 bytes _ReceivedTM38Text: ; 0xa09a8 db $0, $52, " received", $4f db "@" TX_RAM $cf4b db $0, "!@@" ; 0xa09bc _TM38ExplanationText: ; 0xa09bc db $0, $51 db "TM38 contains", $4f db "FIRE BLAST!", $51 db "Teach it to fire-", $4f db "type #MON!", $51 db "CHARMELEON or", $4f db "PONYTA would be", $55 db "good bets!", $57 ; 0xa09bc + 98 bytes _TM38NoRoomText: ; 0xa0a1e db $0, "Make room for my", $4f db "gift!", $57 ; 0xa0a1e + 24 bytes _UnnamedText_7595f: ; 0xa0a36 db $0, "Do you know how", $4f db "hot #MON fire", $55 db "breath can get?", $57 ; 0xa0a36 + 47 bytes _UnnamedText_75964: ; 0xa0a65 db $0, "Yow!", $4f db "Hot, hot, hot!", $58 ; 0xa0a65 + 21 bytes _UnnamedText_75969: ; 0xa0a7a db $0, "Fire, or to be", $4f db "more precise,", $55 db "combustion...", $51 db "Blah, blah, blah,", $4f db "blah...", $57 ; 0xa0a7a + 70 bytes _UnnamedText_75994: ; 0xa0ac0 db $0, "I was a thief, but", $4f db "I became straight", $55 db "as a trainer!", $57 ; 0xa0ac0 + 52 bytes _UnnamedText_75999: ; 0xa0af4 db $0, "I", $4f db "surrender!", $58 ; 0xa0af4 + 14 bytes _UnnamedText_7599e: ; 0xa0b02 db $0, "I can't help", $4f db "stealing other", $55 db "people's #MON!", $57 ; 0xa0b02 + 42 bytes _UnnamedText_759c9: ; 0xa0b2c db $0, "You can't win!", $4f db "I have studied", $55 db "#MON totally!", $57 ; 0xa0b2c + 44 bytes _UnnamedText_759ce: ; 0xa0b58 db $0, "Waah!", $4f db "My studies!", $58 ; 0xa0b58 + 19 bytes _UnnamedText_759d3: ; 0xa0b6b db $0, "My theories are", $4f db "too complicated", $55 db "for you!", $57 ; 0xa0b6b + 42 bytes _UnnamedText_759fe: ; 0xa0b95 db $0, "I just like using", $4f db "fire #MON!", $57 ; 0xa0b95 + 30 bytes _UnnamedText_75a03: ; 0xa0bb3 db $0, "Too hot", $4f db "to handle!", $58 ; 0xa0bb3 + 20 bytes _UnnamedText_75a08: ; 0xa0bc7 db $0, "I wish there was", $4f db "a thief #MON!", $55 db "I'd use that!", $57 ; 0xa0bc7 + 45 bytes _UnnamedText_75a33: ; 0xa0bf4 db $0, "I know why BLAINE", $4f db "became a trainer!", $57 ; 0xa0bf4 + 37 bytes _UnnamedText_75a38: ; 0xa0c19 db $0, "Ow!", $58 ; 0xa0c19 + 5 bytes _UnnamedText_75a3d: ; 0xa0c1e db $0, "BLAINE was lost", $4f db "in the mountains", $55 db "when a fiery bird", $55 db "#MON appeared.", $51 db "Its light enabled", $4f db "BLAINE to find", $55 db "his way down!", $57 ; 0xa0c1e + 114 bytes _UnnamedText_75a68: ; 0xa0c90 db $0, "I've been to many", $4f db "GYMs, but this is", $55 db "my favorite!", $57 ; 0xa0c90 + 49 bytes _UnnamedText_75a6d: ; 0xa0cc1 db $0, "Yowza!", $4f db "Too hot!", $58 ; 0xa0cc1 + 17 bytes _UnnamedText_75a72: ; 0xa0cd2 db $0, "Us fire #MON", $4f db "fans like PONYTA", $55 db "and NINETALES!", $57 ; 0xa0cd2 + 46 bytes _UnnamedText_75a9d: ; 0xa0d00 db $0, "Fire is weak", $4f db "against H2O!", $57 ; 0xa0d00 + 27 bytes _UnnamedText_75aa2: ; 0xa0d1b db $0, "Oh!", $4f db "Snuffed out!", $58 ; 0xa0d1b + 18 bytes _UnnamedText_75aa7: ; 0xa0d2d db $0, "Water beats fire!", $4f db "But, fire melts", $55 db "ice #MON!", $57 ; 0xa0d2d + 45 bytes _UnnamedText_75ac2: ; 0xa0d5a db $0, "Yo! Champ in", $4f db "making!", $51 db "The hot-headed", $4f db "BLAINE is a fire", $55 db "#MON pro!", $51 db "Douse his spirits", $4f db "with water!", $51 db "You better take", $4f db "some BURN HEALs!", $57 ; 0xa0d5a + 127 bytes _UnnamedText_75ac7: ; 0xa0dd9 db $0, $52, "! You beat", $4f db "that fire brand!", $57 ; 0xa0dd9 + 30 bytes _Lab1Text1: ; 0xa0df7 db $0, "We study #MON", $4f db "extensively here.", $51 db "People often bring", $4f db "us rare #MON", $55 db "for examination.", $57 _Lab1Text2: ; 0xa0e49 db $0, "A photo of the", $4f db "LAB's founder,", $55 db "DR.FUJI!", $57 _Lab1Text3: ; 0xa0e70 db $0, "#MON LAB", $4f db "Meeting Room", $57 _Lab1Text4: ; 0xa0e87 db $0, "#MON LAB", $4f db "R-and-D Room", $57 _Lab1Text5: ; 0xa0e9e db $0, "#MON LAB", $4f db "Testing Room", $57 _Lab2Text1: ; 0xa0eb5 db $0, "I found this very", $4f db "strange fossil in", $55 db "MT.MOON!", $51 db "I think it's a", $4f db "rare, prehistoric", $55 db "#MON!", $57 _TM35PreReceiveText: ; 0xa0f09 db $0, "Tch-tch-tch!", $4f db "I made a cool TM!", $51 db "It can cause all", $4f db "kinds of fun!", $58 ; 0xa0f09 + 63 bytes _ReceivedTM35Text: ; 0xa0f48 db $0, $52, " received ", $4f db "@" TX_RAM $cf4b db $0, "!@@" ; 0xa0f5d _TM35ExplanationText: ; 0xa0f5d db $0, "Tch-tch-tch!", $4f db "That's the sound", $55 db "of a METRONOME!", $51 db "It tweaks your", $4f db "#MON's brain", $55 db "into using moves", $55 db "it doesn't know!", $57 ; 0xa0f5d + 106 bytes _TM35NoRoomText: ; 0xa0fc7 db $0, "Your pack is", $4f db "crammed full!", $57 ; 0xa0fc7 + 28 bytes _Lab3Text2: ; 0xa0fe3 db $0, "EEVEE can evolve", $4f db "into 1 of 3 kinds", $55 db "of #MON.", $57 _Lab3Text3: ; 0xa1010 db $0, "There's an e-mail", $4f db "message!", $51 db "...", $51 db "The 3 legendary", $4f db "bird #MON are", $55 db "ARTICUNO, ZAPDOS", $55 db "and MOLTRES.", $51 db "Their whereabouts", $4f db "are unknown.", $51 db "We plan to explore", $4f db "the cavern close", $55 db "to CERULEAN.", $51 db "From: #MON", $4f db "RESEARCH TEAM", $51 db "...", $57 _Lab3Text5: ; 0xa10d8 db $0, "An amber pipe!", $57 _UnnamedText_75dc6: ; 0xa10e8 db $0, "Hiya!", $51 db "I am important", $4f db "doctor!", $51 db "I study here rare", $4f db "#MON fossils!", $51 db "You! Have you a", $4f db "fossil for me?", $58 ; 0xa10e8 + 93 bytes _UnnamedText_75dcb: ; 0xa1145 db $0, "No! Is too bad!", $57 ; 0xa1145 + 17 bytes _UnnamedText_75dd0: ; 0xa1156 db $0, "I take a little", $4f db "time!", $51 db "You go for walk a", $4f db "little while!", $57 ; 0xa1156 + 55 bytes _UnnamedText_75dd5: ; 0xa118d db $0, "Where were you?", $51 db "Your fossil is", $4f db "back to life!", $51 db "It was @" ; 0xa118d + 54 bytes UnnamedText_a11c3: ; 0xa11c3 TX_RAM $cf4b db $0, $4f db "like I think!", $58 ; 0xa11d6 _UnnamedText_610ae: ; 0xa11d6 db $0, "Oh! That is", $4f db "@" ; 0xa11d6 + 14 bytes UnnamedText_a11e4: ; 0xa11e4 TX_RAM $cd6d db $0, "!", $51 db "It is fossil of", $4f db "@" TX_RAM $cf4b db $0, ", a", $55 db "#MON that is", $55 db "already extinct!", $51 db "My Resurrection", $4f db "Machine will make", $55 db "that #MON live", $55 db "again!", $57 ; 0xa1259 _UnnamedText_610b3: ; 0xa1259 db $0, "So! You hurry and", $4f db "give me that!", $51 db $52, " handed", $4f db "over @" TX_RAM $cd6d db $0, "!", $58 ; 0xa128f _UnnamedText_610b8: ; 0xa128f db $0, "I take a little", $4f db "time!", $51 db "You go for walk a", $4f db "little while!", $57 ; 0xa128f + 55 bytes _UnnamedText_610bd: ; 0xa12c6 db $0, "Aiyah! You come", $4f db "again!", $57 ; 0xa12c6 + 24 bytes _CinnabarPokecenterText2: _CinnabarPokecenterText1: ; 0xa12de db $0, "You can cancel", $4f db "evolution.", $51 db "When a #MON is", $4f db "evolving, you can", $55 db "stop it and leave", $55 db "it the way it is.", $57 _CinnabarPokecenterText3: ; 0xa133e db $0, "Do you have any", $4f db "friends?", $51 db "#MON you get", $4f db "in trades grow", $55 db "very quickly.", $51 db "I think it's", $4f db "worth a try!", $57 _CinnabarMartText2: ; 0xa139b db $0, "Don't they have X", $4f db "ATTACK? It's good", $55 db "for battles!", $57 _CinnabarMartText3: ; 0xa13cb db $0, "It never hurts to", $4f db "have extra items!", $57 _IndigoPlateauLobbyText1: ; 0xa13f0 db $0, "Yo! Champ in", $4f db "making!", $51 db "At #MON LEAGUE,", $4f db "you have to face", $55 db "the ELITE FOUR in", $55 db "succession.", $51 db "If you lose, you", $4f db "have to start all", $55 db "over again! This", $55 db "is it! Go for it!", $57 _IndigoPlateauLobbyText3: ; 0xa148b db $0, "From here on, you", $4f db "face the ELITE", $55 db "FOUR one by one!", $51 db "If you win, a", $4f db "door opens to the", $55 db "next trainer!", $55 db "Good luck!", $57 _CopycatsHouseF1Text1: ; 0xa14f7 db $0, "My daughter is so", $4f db "self-centered.", $55 db "She only has a", $55 db "few friends.", $57 _CopycatsHouseF1Text2: ; 0xa1535 db $0, "My daughter likes", $4f db "to mimic people.", $51 db "Her mimicry has", $4f db "earned her the", $55 db "nickname COPYCAT", $55 db "around here!", $57 _CopycatsHouseF1Text3: ; 0xa1596 db $0, "CHANSEY: Chaan!", $4f db "Sii!@@" _UnnamedText_5ccd4: ; 0xa15ad db $0, $52, ": Hi! Do", $4f db "you like #MON?", $51 db $52, ": Uh no, I", $4f db "just asked you.", $51 db $52, ": Huh?", $4f db "You're strange!", $51 db "COPYCAT: Hmm?", $4f db "Quit mimicking?", $51 db "But, that's my", $4f db "favorite hobby!", $58 ; 0xa15ad + 137 bytes _TM31PreReceiveText: ; 0xa1636 db $0, "Oh wow!", $4f db "A # DOLL!", $51 db "For me?", $4f db "Thank you!", $51 db "You can have", $4f db "this, then!", $58 ; 0xa1636 + 63 bytes _ReceivedTM31Text: ; 0xa1675 db $0, $52, " received", $4f db "@" TX_RAM $cf4b db $0, "!@@" ; 0xa1689 _TM31ExplanationText1: ; 0xa1689 db $0, $51 db "TM31 contains my", $4f db "favorite, MIMIC!", $51 db "Use it on a good", $4f db "#MON!@@" ; 0xa16c5 _TM31ExplanationText2: ; 0xa16c5 db $0, $52, ": Hi!", $4f db "Thanks for TM31!", $51 db $52, ": Pardon?", $51 db $52, ": Is it", $4f db "that fun to mimic", $55 db "my every move?", $51 db "COPYCAT: You bet!", $4f db "It's a scream!", $57 ; 0xa16c5 + 110 bytes _TM31NoRoomText: ; 0xa1733 db $0, "Don't you want", $4f db "this?@@" ; 0xa1749 _CopycatsHouseF2Text2: ; 0xa1749 db $0, "DODUO: Giiih!", $51 db "MIRROR MIRROR ON", $4f db "THE WALL, WHO IS", $55 db "THE FAIREST ONE", $55 db "OF ALL?", $57 _CopycatsHouseF2Text3: ; 0xa1792 db $0, "This is a rare", $4f db "#MON! Huh?", $55 db "It's only a doll!", $57 _CopycatsHouseF2Text6: ; 0xa17be db $0, "A game with MARIO", $4f db "wearing a bucket", $55 db "on his head!", $57 _UnnamedText_5cd17: ; 0xa17ef db $0, "...", $51 db "My Secrets!", $51 db "Skill: Mimicry!", $4f db "Hobby: Collecting", $55 db "dolls!", $55 db "Favorite #MON:", $55 db "CLEFAIRY!", $57 ; 0xa17ef + 83 bytes _UnnamedText_5cd1c: ; 0xa1842 db $0, "Huh? Can't see!", $57 ; 0xa1842 + 16 bytes _UnnamedText_5ce8e: ; 0xa1852 db $0, "Grunt!", $51 db "I am the KARATE", $4f db "MASTER! I am the", $55 db "LEADER here!", $51 db "You wish to", $4f db "challenge us?", $55 db "Expect no mercy!", $51 db "Fwaaa!", $57 ; 0xa1852 + 104 bytes _UnnamedText_5ce93: ; 0xa18ba db $0, "Hwa!", $4f db "Arrgh! Beaten!", $58 ; 0xa18ba + 21 bytes _UnnamedText_5ce98: ; 0xa18cf db $0, "Indeed, I have", $4f db "lost!", $51 db "But, I beseech", $4f db "you, do not take", $55 db "our emblem as", $55 db "your trophy!", $51 db "In return, I will", $4f db "give you a prized", $55 db "fighting #MON!", $51 db "Choose whichever", $4f db "one you like!", $57 ; 0xa18cf + 163 bytes _UnnamedText_5ce9d: ; 0xa1972 db $0, "Ho!", $51 db "Stay and train at", $4f db "Karate with us!", $57 ; 0xa1972 + 39 bytes _FightingDojoBattleText1: ; 0xa1999 db $0, "Hoargh! Take your", $4f db "shoes off!", $57 ; 0xa1999 + 30 bytes _FightingDojoEndBattleText1: ; 0xa19b7 db $0, "I give", $4f db "up!", $58 ; 0xa19b7 + 12 bytes _FightingDojoAfterBattleText1: ; 0xa19c3 db $0, "You wait 'til you", $4f db "see our Master!", $51 db "I'm a small fry", $4f db "compared to him!", $57 ; 0xa19c3 + 66 bytes _FightingDojoBattleText2: ; 0xa1a05 db $0, "I hear you're", $4f db "good! Show me!", $57 ; 0xa1a05 + 29 bytes _FightingDojoEndBattleText2: ; 0xa1a22 db $0, "Judge!", $4f db "1 point!", $58 ; 0xa1a22 + 17 bytes _FightingDojoAfterBattleText2: ; 0xa1a33 db $0, "Our Master is a", $4f db "pro fighter!", $57 ; 0xa1a33 + 30 bytes _FightingDojoBattleText3: ; 0xa1a51 db $0, "Nothing tough", $4f db "frightens me!", $51 db "I break boulders", $4f db "for training!", $57 ; 0xa1a51 + 60 bytes _FightingDojoEndBattleText3: ; 0xa1a8d db $0, "Yow!", $4f db "Stubbed fingers!", $58 ; 0xa1a8d + 23 bytes _FightingDojoAfterBattleText3: ; 0xa1aa4 db $0, "The only thing", $4f db "that frightens us", $55 db "is psychic power!", $57 ; 0xa1aa4 + 52 bytes _FightingDojoBattleText4: ; 0xa1ad8 db $0, "Hoohah!", $51 db "You're trespassing", $4f db "in our FIGHTING", $55 db "DOJO!", $57 ; 0xa1ad8 + 49 bytes _FightingDojoEndBattleText4: ; 0xa1b09 db $0, "Oof!", $4f db "I give up!", $58 ; 0xa1b09 + 17 bytes _FightingDojoAfterBattleText4: ; 0xa1b1a db $0, "The prime fighters", $4f db "across the land", $55 db "train here.", $57 ; 0xa1b1a + 48 bytes _UnnamedText_5cf49: ; 0xa1b4a db $0, "You want the", $4f db "hard kicking", $55 db "HITMONLEE?", $57 ; 0xa1b4a + 38 bytes _UnnamedText_5cf91: ; 0xa1b70 db $0, "You want the", $4f db "piston punching", $55 db "HITMONCHAN?", $57 ; 0xa1b70 + 42 bytes _UnnamedText_5cf96: ; 0xa1b9a db $0, "Better not get", $4f db "greedy...", $57 ; 0xa1b9a + 26 bytes _UnnamedText_5d162: ; 0xa1bb4 db $0, "I had a vision of", $4f db "your arrival!", $51 db "I have had psychic", $4f db "powers since I", $55 db "was a child.", $51 db "I first learned", $4f db "to bend spoons", $55 db "with my mind.", $51 db "I dislike fight-", $4f db "ing, but if you", $55 db "wish, I will show", $55 db "you my powers!", $57 ; 0xa1bb4 + 191 bytes _UnnamedText_5d167: ; 0xa1c73 db $0, "I'm", $4f db "shocked!", $55 db "But, a loss is a", $55 db "loss.", $51 db "I admit I didn't", $4f db "work hard enough", $55 db "to win!", $51 db "You earned the", $4f db "MARSHBADGE!@@" ; 0xa1cdc _UnnamedText_5d16e: ; 0xa1cdc db $0, "Everyone has", $4f db "psychic power!", $55 db "People just don't", $55 db "realize it!", $57 ; 0xa1cdc + 58 bytes _UnnamedText_5d173: ; 0xa1d16 db $0, "The MARSHBADGE", $4f db "makes #MON up", $55 db "to L70 obey you!", $51 db "Stronger #MON", $4f db "will become wild,", $55 db "ignoring your", $55 db "orders in battle!", $51 db "Just don't raise", $4f db "your #MON too", $55 db "much!", $51 db "Wait, please take", $4f db "this TM with you!", $57 ; 0xa1d16 + 183 bytes ReceivedTM46Text: ; 0xa1dcd db $0, $52, " received", $4f db "TM46!@@" ; 0xa1de0 _TM46ExplanationText: ; 0xa1de0 db $0, $51 db "TM46 is PSYWAVE!", $4f db "It uses powerful", $55 db "psychic waves to", $55 db "inflict damage!", $57 ; 0xa1de0 + 69 bytes _TM46NoRoomText: ; 0xa1e25 db $0, "Your pack is full", $4f db "of other items!", $57 ; 0xa1e25 + 35 bytes _UnnamedText_5d1e6: ; 0xa1e48 db $0, "Yo! Champ in", $4f db "making!", $51 db "SABRINA's #MON", $4f db "use psychic power", $55 db "instead of force!", $51 db "Fighting #MON", $4f db "are weak against", $55 db "psychic #MON!", $51 db "They get creamed", $4f db "before they can", $55 db "even aim a punch!", $57 ; 0xa1e48 + 168 bytes _UnnamedText_5d1eb: ; 0xa1ef0 db $0, "Psychic power,", $4f db "huh?", $51 db "If I had that,", $4f db "I'd make a bundle", $55 db "at the slots!", $57 ; 0xa1ef0 + 67 bytes _SaffronGymBattleText1: ; 0xa1f33 db $0, "SABRINA is younger", $4f db "than I, but I", $55 db "respect her!", $57 ; 0xa1f33 + 47 bytes _SaffronGymEndBattleText1: ; 0xa1f62 db $0, "Not", $4f db "good enough!", $58 ; 0xa1f62 + 18 bytes _SaffronGymAfterBattleText1: ; 0xa1f74 db $0, "In a battle of", $4f db "equals, the one", $55 db "with the stronger", $55 db "will wins!", $51 db "If you wish", $4f db "to beat SABRINA,", $55 db "focus on winning!", $57 ; 0xa1f74 + 108 bytes _SaffronGymBattleText2: ; 0xa1fe0 db $0, "Does our unseen", $4f db "power scare you?", $57 ; 0xa1fe0 + 34 bytes _SaffronGymEndBattleText2: ; 0xa2002 db $0, "I never", $4f db "foresaw this!", $58 ; 0xa2002 + 23 bytes _SaffronGymAfterBattleText2: ; 0xa2019 db $0, "Psychic #MON", $4f db "fear only ghosts", $55 db "and bugs!", $57 ; 0xa2019 + 41 bytes _SaffronGymBattleText3: ; 0xa2042 db $0, "#MON take on", $4f db "the appearance of", $55 db "their trainers.", $51 db "Your #MON must", $4f db "be tough, then!", $57 ; 0xa2042 + 79 bytes _SaffronGymEndBattleText3: ; 0xa2091 db $0, "I knew", $4f db "it!", $58 ; 0xa2091 + 12 bytes _SaffronGymAfterBattleText3: ; 0xa209d db $0, "I must teach", $4f db "better techniques", $55 db "to my #MON!", $57 ; 0xa209d + 44 bytes _SaffronGymBattleText4: ; 0xa20c9 db $0, "You know that", $4f db "power alone isn't", $55 db "enough!", $57 ; 0xa20c9 + 40 bytes _SaffronGymEndBattleText4: ; 0xa20f1 db $0, "I don't", $4f db "believe this!", $58 ; 0xa20f1 + 22 bytes _SaffronGymAfterBattleText4: ; 0xa2107 db $0, "SABRINA just wiped", $4f db "out the KARATE", $55 db "MASTER next door!", $57 ; 0xa2107 + 53 bytes _SaffronGymBattleText5: ; 0xa213c db $0, "You and I, our", $4f db "#MON shall", $55 db "fight!", $57 ; 0xa213c + 34 bytes _SaffronGymEndBattleText5: ; 0xa215e db $0, "I lost", $4f db "after all!", $58 ; 0xa215e + 19 bytes _SaffronGymAfterBattleText5: ; 0xa2171 db $0, "I knew that this", $4f db "was going to take", $55 db "place.", $57 ; 0xa2171 + 43 bytes _SaffronGymBattleText6: ; 0xa219c db $0, "SABRINA is young,", $4f db "but she's also", $55 db "our LEADER!", $51 db "You won't reach", $4f db "her easily!", $57 ; 0xa219c + 72 bytes _SaffronGymEndBattleText6: ; 0xa21e4 db $0, "I lost", $4f db "my concentration!", $58 ; 0xa21e4 + 26 bytes _SaffronGymAfterBattleText6: ; 0xa21fe db $0, "There used to be", $4f db "2 #MON GYMs in", $55 db "SAFFRON.", $51 db "The FIGHTING DOJO", $4f db "next door lost", $55 db "its GYM status", $55 db "when we went and", $55 db "creamed them!", $57 ; 0xa21fe + 121 bytes _SaffronGymBattleText7: ; 0xa2277 db $0, "SAFFRON #MON", $4f db "GYM is famous for", $55 db "its psychics!", $51 db "You want to see", $4f db "SABRINA!", $55 db "I can tell!", $57 ; 0xa2277 + 83 bytes _SaffronGymEndBattleText7: ; 0xa22ca db $0, "Arrrgh!", $58 ; 0xa22ca + 9 bytes _SaffronGymAfterBattleText7: ; 0xa22d3 db $0, "That's right! I", $4f db "used telepathy to", $55 db "read your mind!", $57 ; 0xa22d3 + 50 bytes _SaffronHouse1Text1: ; 0xa2305 db $0, "Thank you for", $4f db "writing. I hope", $55 db "to see you soon!", $51 db "Hey! Don't look", $4f db "at my letter!", $57 _SaffronHouse1Text2: ; 0xa2352 db $0, "PIDGEY: Kurukkoo!@@" _SaffronHouse1Text3: ; 0xa2366 db $0, "The COPYCAT is", $4f db "cute! I'm getting", $55 db "her a # DOLL!", $57 _SaffronHouse1Text4: ; 0xa2395 db $0, "I was given a PP", $4f db "UP as a gift.", $51 db "It's used for", $4f db "increasing the PP", $55 db "of techniques!", $57 _SaffronMartText2: ; 0xa23e3 db $0, "MAX REPEL lasts", $4f db "longer than SUPER", $55 db "REPEL for keeping", $55 db "weaker #MON", $55 db "away!", $57 _SaffronMartText3: ; 0xa242a db $0, "REVIVE is costly,", $4f db "but it revives", $55 db "fainted #MON!", $57 _SilphCo1Text1: ; 0xa245a db $0, "Welcome!", $51 db "The PRESIDENT is", $4f db "in the boardroom", $55 db "on 11F!", $57 _SaffronPokecenterText1: ; 0xa248e db $0, "#MON growth", $4f db "rates differ from", $55 db "specie to specie.", $57 _SaffronPokecenterText3: ; 0xa24bf db $0, "SILPH CO. is very", $4f db "famous. That's", $55 db "why it attracted", $55 db "TEAM ROCKET!", $57 _TM29PreReceiveText: ; 0xa24fe db $0, "...Wait! Don't", $4f db "say a word!", $51 db "You wanted this!", $58 ; 0xa24fe + 44 bytes _ReceivedTM29Text: ; 0xa252a db $0, $52, " received", $4f db "@" TX_RAM $cf4b db $0, "!@@" ; 0xa253e _TM29ExplanationText: ; 0xa253e db $0, "TM29 is PSYCHIC!", $51 db "It can lower the", $4f db "target's SPECIAL", $55 db "abilities.", $57 ; 0xa253e + 62 bytes _TM29NoRoomText: ; 0xa257c db $0, "Where do you plan", $4f db "to put this?", $57 ; 0xa257c + 32 bytes _PokemartGreetingText: ; 0xa259c db $0, "Hi there!", $4e, "May I help you?", $57 ; 0xa259c + 27 bytes _PokemonFaintedText: ; 0xa25b7 TX_RAM $cd6d db $0, $4f db "fainted!", $57 ; 0xa25b7 + 14 bytes _PlayerBlackedOutText: ; 0xa25c5 db $0, $52, " is out of", $4f db "useable #MON!", $51 db $52, " blacked", $4f db "out!", $58 ; 0xa25c5 + 42 bytes _RepelWoreOffText: ; 0xa25ef db $0, "REPEL's effect", $4f db "wore off.", $57 ; 0xa25ef + 25 bytes _PokemartBuyingGreetingText: ; 0xa2608 db $0, "Take your time.", $57 ; 0xa2608 + 17 bytes _PokemartTellBuyPrice: ; 0xa2619 TX_RAM $cf4b db $0, "?", $4f db "That will be", $55 db $f0, "@" db $2, $9f, $ff, $c3 db $0, ". OK?", $57 ; 0xa2639 _PokemartBoughtItemText: ; 0xa2639 db $0, "Here you are!", $4f db "Thank you!", $58 ; 0xa2639 + 26 bytes _PokemartNotEnoughMoneyText: ; 0xa2653 db $0, "You don't have", $4f db "enough money.", $58 ; 0xa2653 + 29 bytes _PokemartItemBagFullText: ; 0xa2670 db $0, "You can't carry", $4f db "any more items.", $58 ; 0xa2670 + 32 bytes _PokemonSellingGreetingText: ; 0xa2690 db $0, "What would you", $4f db "like to sell?", $57 ; 0xa2690 + 30 bytes _PokemartTellSellPrice: ; 0xa26ae db $0, "I can pay you", $4f db $f0, "@" db $2, $9f, $ff, $c3 ; XXX db $0, " for that.", $57 ; 0xa26cf _PokemartItemBagEmptyText: ; 0xa26cf db $0, "You don't have", $4f db "anything to sell.", $58 ; 0xa26cf + 33 bytes _PokemartUnsellableItemText: ; 0xa26f0 db $0, "I can't put a", $4f db "price on that.", $58 ; 0xa26f0 + 29 bytes _PokemartThankYouText: ; 0xa270d db $0, "Thank you!", $57 ; 0xa270d + 12 bytes _PokemartAnythingElseText: ; 0xa2719 db $0, "Is there anything", $4f db "else I can do?", $57 ; 0xa2719 + 34 bytes UnnamedText_a273b: ; 0xa273b TX_RAM $d036 db $0, " learned", $4f db "@" ; 0xa2749 UnnamedText_a2749: ; 0xa2749 TX_RAM $cf4b db $0, "!@@" ; 0xa2750 _UnnamedText_6fb4: ; 0xa2750 db $0, "Which move should", $4e, "be forgotten?", $57 ; 0xa2750 + 33 bytes _UnnamedText_6fb9: ; 0xa2771 db $0, "Abandon learning", $4f db "@" ; 0xa2771 + 19 bytes UnnamedText_a2784: ; 0xa2784 TX_RAM $cf4b db $0, "?", $57 ; 0xa278a _UnnamedText_6fbe: ; 0xa278a TX_RAM $d036 db $0, $4f db "did not learn", $55 db "@" ; 0xa278a + 20 bytes UnnamedText_a279e: ; 0xa279e TX_RAM $cf4b db $0, "!", $58 ; 0xa27a4 _UnnamedText_6fc3: ; 0xa27a4 TX_RAM $d036 db $0, " is", $4f db "trying to learn", $55 db "@" ; 0xa27a4 + 25 bytes UnnamedText_a27bd: ; 0xa27bd TX_RAM $cf4b db $0, "!", $51 db "But, @" TX_RAM $d036 db $0, $4f db "can't learn more", $55 db "than 4 moves!", $51 db "Delete an older", $4f db "move to make room", $55 db "for @" ; 0xa2813 UnnamedText_a2813: ; 0xa2813 TX_RAM $cf4b db $0, "?", $57 ; 0xa2819 _UnnamedText_6fc8: ; 0xa2819 db $0, "1, 2 and...@@" ; 0xa2827 _UnnamedText_6fd7: ; 0xa2827 db $0, " Poof!@@" ; 0xa2830 _UnnamedText_6fdc: ; 0xa2830 db $0, $51 db "@" ; 0xa2830 + 3 bytes UnnamedText_a2833: ; 0xa2833 TX_RAM $d036 db $0, " forgot", $4f db "@" TX_RAM $cd6d db $0, "!", $51 db "And...", $58 ; 0xa284d _UnnamedText_6fe1: ; 0xa284d db $0, "HM techniques", $4f db "can't be deleted!", $58 ; 0xa284d + 32 bytes _PokemonCenterWelcomeText: ; 0xa286d db $0, "Welcome to our", $4f db "#MON CENTER!", $51 db "We heal your", $4f db "#MON back to", $55 db "perfect health!", $58 ; 0xa286d + 71 bytes _ShallWeHealYourPokemonText: ; 0xa28b4 db $0, "Shall we heal your", $4f db "#MON?", $57 ; 0xa28b4 + 26 bytes _NeedYourPokemonText: ; 0xa28ce db $0, "OK. We'll need", $4f db "your #MON.", $57 ; 0xa28ce + 26 bytes _PokemonFightingFitText: ; 0xa28e8 db $0, "Thank you!", $4f db "Your #MON are", $55 db "fighting fit!", $58 ; 0xa28e8 + 40 bytes _PokemonCenterFarewellText: ; 0xa2910 db $0, "We hope to see", $4f db "you again!", $57 ; 0xa2910 + 27 bytes _UnnamedText_72b3: ; 0xa292b db $0, "This area is", $4f db "reserved for 2", $55 db "friends who are", $55 db "linked by cable.", $57 ; 0xa292b + 62 bytes _UnnamedText_72b8: ; 0xa2969 db $0, "Welcome to the", $4f db "Cable Club!", $57 ; 0xa2969 + 28 bytes _UnnamedText_72bd: ; 0xa2985 db $0, "Please apply here.", $51 db "Before opening", $4f db "the link, we have", $55 db "to save the game.", $57 ; 0xa2985 + 71 bytes UnnamedText_a29cc: ; 0xa29cc db $0, "Please wait.@@" ; 0xa29b _UnnamedText_72c8: ; 0xa29db db $0, "The link has been", $4f db "closed because of", $55 db "inactivity.", $51 db "Please contact", $4f db "your friend and", $55 db "come again!", $57 ; 0xa29db + 92 bytes SECTION "bank29",DATA,BANK[$29] _UnnamedText_72cd: ; 0xa4000 db $0, "Please come again!", $57 ; 0xa4000 + 20 bytes _UnnamedText_72d2: ; 0xa4014 db $0, "We're making", $4f db "preparations.", $55 db "Please wait.", $57 ; 0xa4014 + 40 bytes UnnamedText_a403c: ; 0xa403c TX_RAM $cd6d db $0, " used", $4f db "STRENGTH.@@" ; 0xa4051 _UnnamedText_cdbb: ; 0xa4051 TX_RAM $cd6d db $0, " can", $4f db "move boulders.", $58 ; 0xa4051 + 24 bytes _UnnamedText_cdfa: ; 0xa4069 db $0, "The current is", $4f db "much too fast!", $58 ; 0xa4069 + 31 bytes _UnnamedText_cdff: ; 0xa4088 db $0, "Cycling is fun!", $4f db "Forget SURFing!", $58 ; 0xa4088 + 33 bytes _FlashLightsAreaText: ; 0xa40a9 db $0, "A blinding FLASH", $4f db "lights the area!", $58 ; 0xa40a9 + 35 bytes _WarpToLastPokemonCenterText: ; 0xa40cc db $0, "Warp to the last", $4f db "#MON CENTER.", $57 ; 0xa40cc + 31 bytes _CannotUseTeleportNowText: ; 0xa40eb TX_RAM $cd6d db $0, " can't", $4f db "use TELEPORT now.", $58 ; 0xa40eb + 28 bytes _CannotFlyHereText: ; 0xa4107 TX_RAM $cd6d db $0, " can't", $4f db "FLY here.", $58 ; 0xa4107 + 20 bytes _NotHealthyEnoughText: ; 0xa411b db $0, "Not healthy", $4f db "enough.", $58 ; 0xa411b + 21 bytes _NewBadgeRequiredText: ; 0xa4130 db $0, "No! A new BADGE", $4f db "is required.", $58 ; 0xa4130 + 30 bytes _CannotUseItemsHereText: ; 0xa414e db $0, "You can't use items", $4f db "here.", $58 ; 0xa414e + 26 bytes _CannotGetOffHereText: ; 0xa4168 db $0, "You can't get off", $4f db "here.", $58 ; 0xa4168 + 24 bytes UnnamedText_a4180: ; 0xa4180 db $0, $52, " got", $4f db "@" TX_RAM $cd6d db $0, "!@@" ; 0xa418f _UnnamedText_4fe3f: ; 0xa418f db $0, "There's no more", $4f db "room for #MON!", $55 db "@" TX_RAM $de06 db $0, " was", $55 db "sent to #MON", $55 db "BOX @" TX_RAM $cf4b db $0, " on PC!", $57 _UnnamedText_4fe44: ; 0xa41d6 db $0, "There's no more", $4f db "room for #MON!", $51 db "The #MON BOX", $4f db "is full and can't", $55 db "accept any more!", $51 db "Change the BOX at", $4f db "a #MON CENTER!", $57 ; 0xa41d6 + 111 bytes INCLUDE "text/mapPalletTown.tx" _ViridianCityText1: db $0, "Those # BALLs", $4f db "at your waist!", $55 db "You have #MON!", $51 db "It's great that", $4f db "you can carry and", $55 db "use #MON any", $55 db "time, anywhere!", $57 _UnnamedText_19122: ; 0xa4437 db $0, "This #MON GYM", $4f db "is always closed.", $51 db "I wonder who the", $4f db "LEADER is?", $57 ; 0xa4437 + 61 bytes _UnnamedText_19127: ; 0xa4474 db $0, "VIRIDIAN GYM's", $4f db "LEADER returned!", $57 ; 0xa4474 + 32 bytes _UnnamedText_1914d: ; 0xa4494 db $0, "You want to know", $4f db "about the 2 kinds", $55 db "of caterpillar", $55 db "#MON?", $57 ; 0xa4494 + 57 bytes _UnnamedText_19152: ; 0xa44cd db $0, "Oh, OK then!", $57 ; 0xa44cd + 14 bytes _UnnamedText_19157: ; 0xa44db db $0, "CATERPIE has no", $4f db "poison, but", $55 db "WEEDLE does.", $51 db "Watch out for its", $4f db "POISON STING!", $57 ; 0xa44db + 74 bytes _UnnamedText_19175: ; 0xa4525 db $0, "Oh Grandpa! Don't", $4f db "be so mean!", $55 db "He hasn't had his", $55 db "coffee yet.", $57 ; 0xa4525 + 59 bytes _UnnamedText_1917a: ; 0xa4560 db $0, "When I go shop in", $4f db "PEWTER CITY, I", $55 db "have to take the", $55 db "winding trail in", $55 db "VIRIDIAN FOREST.", $57 ; 0xa4560 + 85 bytes _UnnamedText_19191: ; 0xa45b5 db $0, "You can't go", $4f db "through here!", $51 db "This is private", $4f db "property!", $57 ; 0xa45b5 + 53 bytes _UnnamedText_191ca: ; 0xa45ea db $0, "Yawn!", $4f db "I must have dozed", $55 db "off in the sun.", $51 db "I had this dream", $4f db "about a DROWZEE", $55 db "eating my dream.", $55 db "What's this?", $55 db "Where did this TM", $55 db "come from?", $51 db "This is spooky!", $4f db "Here, you can", $55 db "have this TM.", $58 ; 0xa45ea + 176 bytes _ReceivedTM42Text: ; 0xa469a db $0, $52, " received", $4f db "TM42!@@" ; 0xa46ad _TM42Explanation: ; 0xa46ad db $0, "TM42 contains", $4f db "DREAM EATER...", $55 db "...Snore...", $57 ; 0xa46ad + 42 bytes _TM42NoRoomText: ; 0xa46d7 db $0, "You have too much", $4f db "stuff already.", $57 ; 0xa46d7 + 34 bytes _UnnamedText_1920a: ; 0xa46f9 db $0, "Ahh, I've had my", $4f db "coffee now and I", $55 db "feel great!", $51 db "Sure you can go", $4f db "through!", $51 db "Are you in a", $4f db "hurry?", $57 ; 0xa46f9 + 91 bytes _UnnamedText_1920f: ; 0xa4754 db $0, "I see you're using", $4f db "a #DEX.", $51 db "When you catch a", $4f db "#MON, #DEX", $55 db "is automatically", $55 db "updated.", $51 db "What? Don't you", $4f db "know how to catch", $55 db "#MON?", $51 db "I'll show you", $4f db "how to then.", $57 ; 0xa4754 + 146 bytes _UnnamedText_19214: ; 0xa47e6 db $0, "Time is money...", $4f db "Go along then.", $57 ; 0xa47e6 + 33 bytes _UnnamedText_19219: ; 0xa4807 db $0, "First, you need", $4f db "to weaken the", $55 db "target #MON.", $57 ; 0xa4807 + 44 bytes _ViridianCityText8: ; 0xa4833 db $0, "VIRIDIAN CITY ", $4f db "The Eternally", $55 db "Green Paradise", $57 _ViridianCityText9: ; 0xa4860 db $0, "TRAINER TIPS", $51 db "Catch #MON", $4f db "and expand your", $55 db "collection!", $51 db "The more you have,", $4f db "the easier it is", $55 db "to fight!", $57 _ViridianCityText10: ; 0xa48c3 db $0, "TRAINER TIPS", $51 db "The battle moves", $4f db "of #MON are", $55 db "limited by their", $55 db "POWER POINTs, PP.", $51 db "To replenish PP,", $4f db "rest your tired", $55 db "#MON at a", $55 db "#MON CENTER!", $57 _ViridianCityText13: ; 0xa4949 db $0, "VIRIDIAN CITY", $4f db "#MON GYM", $57 _ViridianCityText14: ; 0xa4961 db $0, "The GYM's doors", $4f db "are locked...", $57 ; 0xa4961 + 30 bytes _PewterCityText1: ; 0xa497f db $0, "It's rumored that", $4f db "CLEFAIRYs came", $55 db "from the moon!", $51 db "They appeared ", $4f db "after MOON STONE", $55 db "fell on MT.MOON.", $57 _PewterCityText2: ; 0xa49e0 db $0, "There aren't many", $4f db "serious #MON", $55 db "trainers here!", $51 db "They're all like", $4f db "BUG CATCHERs,", $55 db "but PEWTER GYM's", $55 db "BROCK is totally", $55 db "into it!", $57 _UnnamedText_193f1: ; 0xa4a56 db $0, "Did you check out", $4f db "the MUSEUM?", $57 ; 0xa4a56 + 31 bytes _UnnamedText_193f6: ; 0xa4a75 db $0, "Weren't those", $4f db "fossils from MT.", $55 db "MOON amazing?", $57 ; 0xa4a75 + 45 bytes _UnnamedText_193fb: ; 0xa4aa2 db $0, "Really?", $4f db "You absolutely", $55 db "have to go!", $57 ; 0xa4aa2 + 36 bytes _UnnamedText_19400: ; 0xa4ac6 db $0, "It's right here!", $4f db "You have to pay", $55 db "to get in, but", $55 db "it's worth it!", $55 db "See you around!", $57 ; 0xa4ac6 + 78 bytes _UnnamedText_19427: ; 0xa4b14 db $0, "Psssst!", $4f db "Do you know what", $55 db "I'm doing?", $57 ; 0xa4b14 + 36 bytes _UnnamedText_1942c: ; 0xa4b38 db $0, "That's right!", $4f db "It's hard work!", $57 ; 0xa4b38 + 29 bytes _UnnamedText_19431: ; 0xa4b55 db $0, "I'm spraying REPEL", $4f db "to keep #MON", $55 db "out of my garden!", $57 ; 0xa4b55 + 50 bytes _UnnamedText_1945d: ; 0xa4b87 db $0, "You're a trainer", $4f db "right? BROCK's", $55 db "looking for new", $55 db "challengers!", $55 db "Follow me!", $57 ; 0xa4b87 + 71 bytes _UnnamedText_19462: ; 0xa4bce db $0, "If you have the", $4f db "right stuff, go", $55 db "take on BROCK!", $57 ; 0xa4bce + 48 bytes _PewterCityText6: ; 0xa4bfe db $0, "TRAINER TIPS", $51 db "Any #MON that", $4f db "takes part in", $55 db "battle, however", $55 db "short, earns EXP!", $57 _PewterCityText7: ; 0xa4c4a db $0, "NOTICE!", $51 db "Thieves have been", $4f db "stealing #MON", $55 db "fossils at MT.", $55 db "MOON! Please call", $55 db "PEWTER POLICE", $55 db "with any info!", $57 _PewterCityText10: ; 0xa4cb1 db $0, "PEWTER MUSEUM", $4f db "OF SCIENCE", $57 _PewterCityText11: ; 0xa4ccb db $0, "PEWTER CITY", $4f db "#MON GYM", $55 db "LEADER: BROCK", $51 db "The Rock Solid", $4f db "#MON Trainer!", $57 _PewterCityText12: ; 0xa4d0c db $0, "PEWTER CITY", $4f db "A Stone Gray", $55 db "City", $57 _UnnamedText_19668: ; 0xa4d2b db $0, $53, ": Yo!", $4f db $52, "!", $51 db "You're still", $4f db "struggling along", $55 db "back here?", $51 db "I'm doing great!", $4f db "I caught a bunch", $55 db "of strong and", $55 db "smart #MON!", $51 db "Here, let me see", $4f db "what you caught,", $55 db $52, "!", $57 ; 0xa4d2b + 147 bytes _UnnamedText_1966d: ; 0xa4dbe db $0, "Hey!", $4f db "Take it easy!", $55 db "You won already!", $58 ; 0xa4dbe + 37 bytes _UnnamedText_19672: ; 0xa4de3 db $0, "Heh!", $4f db "You're no match", $55 db "for my genius!", $58 ; 0xa4de3 + 36 bytes _UnnamedText_19677: ; 0xa4e07 db $0, $53, ": Hey,", $4f db "guess what?", $51 db "I went to BILL's", $4f db "and got him to", $55 db "show me his rare", $55 db "#MON!", $51 db "That added a lot", $4f db "of pages to my", $55 db "#DEX!", $51 db "After all, BILL's", $4f db "world famous as a", $55 db "#MANIAC!", $51 db "He invented the", $4f db "#MON Storage", $55 db "System on PC!", $51 db "Since you're using", $4f db "his system, go", $55 db "thank him!", $51 db "Well, I better", $4f db "get rolling!", $55 db "Smell ya later!", $57 ; 0xa4e07 + 288 bytes _UnnamedText_196d9: ; 0xa4f27 db $0, "Hey! Stay out!", $4f db "It's not your", $55 db "yard! Huh? Me?", $51 db "I'm an innocent", $4f db "bystander! Don't", $55 db "you believe me?", $57 ; 0xa4f27 + 91 bytes _ReceivedTM28Text: ; 0xa4f82 db $0, $52, " recovered", $4f db "TM28!@@" ; 0xa4f96 _ReceivedTM28Text2: ; 0xa4f96 db $0, $51 db "I better get", $4f db "moving! Bye!@@" ; 0xa4fb3 _TM28NoRoomText: ; 0xa4fb3 db $0, "Make room for", $4f db "this!", $51 db "I can't run until", $4f db "I give it to you!", $57 ; 0xa4fb3 + 56 bytes _UnnamedText_196ee: ; 0xa4feb db $0, "Stop!", $4f db "I give up! I'll", $55 db "leave quietly!", $58 ; 0xa4feb + 37 bytes _UnnamedText_196f3: ; 0xa5010 db $0, "OK! I'll return", $4f db "the TM I stole!", $58 ; 0xa5010 + 32 bytes _CeruleanCityText3: ; 0xa5030 db $0, "You're a trainer", $4f db "too? Collecting,", $55 db "fighting, it's a", $55 db "tough life.", $57 _CeruleanCityText4: ; 0xa506e db $0, "That bush in", $4f db "front of the shop", $55 db "is in the way.", $51 db "There might be a", $4f db "way around.", $57 _CeruleanCityText5: ; 0xa50ba db $0, "You're making an", $4f db "encyclopedia on", $55 db "#MON? That", $55 db "sounds amusing.", $57 _CeruleanCityText6: ; 0xa50f6 db $0, "The people here", $4f db "were robbed.", $51 db "It's obvious that", $4f db "TEAM ROCKET is", $55 db "behind this most", $55 db "heinous crime!", $51 db "Even our POLICE", $4f db "force has trouble", $55 db "with the ROCKETs!", $57 _UnnamedText_19730: ; 0xa5188 db $0, "OK! SLOWBRO!", $4f db "Use SONICBOOM!", $55 db "Come on, SLOWBRO", $55 db "pay attention!", $57 ; 0xa5188 + 61 bytes _UnnamedText_19735: ; 0xa51c5 db $0, "SLOWBRO punch!", $4f db "No! You blew it", $55 db "again!", $57 ; 0xa51c5 + 39 bytes _UnnamedText_1973a: ; 0xa51ec db $0, "SLOWBRO, WITHDRAW!", $4f db "No! That's wrong!", $51 db "It's so hard to", $4f db "control #MON!", $51 db "Your #MON's", $4f db "obedience depends", $55 db "on your abilities", $55 db "as a trainer!", $57 ; 0xa51ec + 127 bytes _UnnamedText_1976f: ; 0xa526b db $0, "SLOWBRO took a", $4f db "snooze...", $57 ; 0xa526b + 26 bytes _UnnamedText_19774: ; 0xa5285 db $0, "SLOWBRO is", $4f db "loafing around...", $57 ; 0xa5285 + 30 bytes _UnnamedText_19779: ; 0xa52a3 db $0, "SLOWBRO turned", $4f db "away...", $57 ; 0xa52a3 + 24 bytes _UnnamedText_1977e: ; 0xa52bb db $0, "SLOWBRO", $4f db "ignored orders...", $57 ; 0xa52bb + 27 bytes _CeruleanCityText9: ; 0xa52d6 db $0, "I want a bright", $4f db "red BICYCLE!", $51 db "I'll keep it at", $4f db "home, so it won't", $55 db "get dirty!", $57 _CeruleanCityText10: ; 0xa531f db $0, "This is CERULEAN", $4f db "CAVE! Horribly", $55 db "strong #MON", $55 db "live in there!", $51 db "The #MON LEAGUE", $4f db "champion is the", $55 db "only person who", $55 db "is allowed in!", $57 _CeruleanCityText12: ; 0xa539a db $0, "CERULEAN CITY", $4f db "A Mysterious,", $55 db "Blue Aura", $55 db "Surrounds It", $57 _CeruleanCityText13: ; 0xa53ce db $0, "TRAINER TIPS", $51 db "Pressing B Button", $4f db "during evolution", $55 db "cancels the whole", $55 db "process.", $57 _CeruleanCityText16: ; 0xa541a db $0, "Grass and caves", $4f db "handled easily!", $55 db "BIKE SHOP", $57 _CeruleanCityText17: ; 0xa5445 db $0, "CERULEAN CITY", $4f db "#MON GYM", $55 db "LEADER: MISTY", $51 db "The Tomboyish", $4f db "Mermaid!", $57 _UnnamedText_4413c: ; 0xa5482 db $0, "Do you believe in", $4f db "GHOSTs?", $57 ; 0xa5482 + 27 bytes _UnnamedText_44141: ; 0xa549d db $0, "Really? So there", $4f db "are believers...", $57 ; 0xa549d + 35 bytes _UnnamedText_44146: ; 0xa54c0 db $0, "Hahaha, I guess", $4f db "not.", $51 db "That white hand", $4f db "on your shoulder,", $55 db "it's not real.", $57 ; 0xa54c0 + 70 bytes _LavenderTownText2: ; 0xa5506 db $0, "This town is known", $4f db "as the grave site", $55 db "of #MON.", $51 db "Memorial services", $4f db "are held in", $55 db "#MON TOWER.", $57 _LavenderTownText3: ; 0xa555f db $0, "GHOSTs appeared", $4f db "in #MON TOWER.", $51 db "I think they're", $4f db "the spirits of", $55 db "#MON that the", $55 db "ROCKETs killed.", $57 _LavenderTownText4: ; 0xa55bb db $0, "LAVENDER TOWN", $4f db "The Noble Purple", $55 db "Town", $57 _LavenderTownText5: ; 0xa55e0 db $0, "New SILPH SCOPE!", $51 db "Make the Invisible", $4f db "Plain to See!", $51 db "SILPH CO.", $57 _LavenderTownText8: ; 0xa561d db $0, "LAVENDER VOLUNTEER", $4f db "#MON HOUSE", $57 _LavenderTownText9: ; 0xa563c db $0, "May the Souls of", $4f db "#MON Rest Easy", $55 db "#MON TOWER", $57 _VermilionCityText1: ; 0xa5668 db $0, "We're careful", $4f db "about pollution!", $51 db "We've heard GRIMER", $4f db "multiplies in", $55 db "toxic sludge!", $57 _UnnamedText_198a7: ; 0xa56b5 db $0, "Did you see S.S.", $4f db "ANNE moored in", $55 db "the harbor?", $57 ; 0xa56b5 + 45 bytes _UnnamedText_198ac: ; 0xa56e2 db $0, "So, S.S.ANNE has", $4f db "departed!", $51 db "She'll be back in", $4f db "about a year.", $57 ; 0xa56e2 + 59 bytes _SSAnneWelcomeText4: ; 0xa571d db $0, "Welcome to S.S.", $4f db "ANNE!", $57 ; 0xa571d + 23 bytes _SSAnneWelcomeText9: ; 0xa5734 db $0, "Welcome to S.S.", $4f db "ANNE!", $51 db "Excuse me, do you", $4f db "have a ticket?", $58 ; 0xa5734 + 56 bytes _SSAnneFlashedTicketText: ; 0xa576c db $0, $52, " flashed", $4f db "the S.S.TICKET!", $51 db "Great! Welcome to", $4f db "S.S.ANNE!", $57 ; 0xa576c + 55 bytes _SSAnneNoTicketText: ; 0xa57a3 db $0, $52, " doesn't", $4f db "have the needed", $55 db "S.S.TICKET.", $51 db "Sorry!", $51 db "You need a ticket", $4f db "to get aboard.", $57 ; 0xa57a3 + 78 bytes _SSAnneNotHereText: ; 0xa57f1 db $0, "The ship set sail.", $57 ; 0xa57f1 + 20 bytes _VermilionCityText4: ; 0xa5805 db $0, "I'm putting up a", $4f db "building on this", $55 db "plot of land.", $51 db "My #MON is", $4f db "tamping the land.", $57 _VermilionCityText5: ; 0xa5852 db $0, "MACHOP: Guoh!", $4f db "Gogogoh!@@" _VermilionCityText14: ; 0xa586b db $0, $51 db "A MACHOP is", $4f db "stomping the land", $55 db "flat.", $57 _VermilionCityText6: ; 0xa5891 db $0, "S.S.ANNE is a", $4f db "famous luxury", $55 db "cruise ship.", $51 db "We visit VERMILION", $4f db "once a year.", $57 _VermilionCityText7: ; 0xa58db db $0, "VERMILION CITY", $4f db "The Port of", $55 db "Exquisite Sunsets", $57 _VermilionCityText8: ; 0xa5909 db $0, "NOTICE!", $51 db "ROUTE 12 may be", $4f db "blocked off by a", $55 db "sleeping #MON.", $51 db "Detour through", $4f db "ROCK TUNNEL to", $55 db "LAVENDER TOWN.", $51 db "VERMILION POLICE", $57 _VermilionCityText11: ; 0xa5980 db $0, "#MON FAN CLUB", $4f db "All #MON fans", $55 db "welcome!", $57 _VermilionCityText12: ; 0xa59a6 db $0, "VERMILION CITY", $4f db "#MON GYM", $55 db "LEADER: LT.SURGE", $51 db "The Lightning ", $4f db "American!", $57 _VermilionCityText13: ; 0xa59e9 db $0, "VERMILION HARBOR", $57 _CeladonCityText1: ; 0xa59fb db $0, "I got my KOFFING", $4f db "in CINNABAR!", $51 db "It's nice, but it", $4f db "breathes poison", $55 db "when it's angry!", $57 _CeladonCityText2: ; 0xa5a4b db $0, "Heheh! This GYM", $4f db "is great! It's", $55 db "full of women!", $57 _CeladonCityText3: ; 0xa5a79 db $0, "The GAME CORNER", $4f db "is bad for our", $55 db "city's image!", $57 _CeladonCityText4: ; 0xa5aa6 db $0, "Moan! I blew it", $4f db "all at the slots!", $51 db "I knew I should", $4f db "have cashed in my", $55 db "coins for prizes!", $57 _TM41PreText: ; 0xa5afd db $0, "Hello, there!", $51 db "I've seen you,", $4f db "but I never had a", $55 db "chance to talk!", $51 db "Here's a gift for", $4f db "dropping by!", $58 ; 0xa5afd + 93 bytes _ReceivedTM41Text: ; 0xa5b5a db $0, $52, " received", $4f db "@" TX_RAM $cf4b db $0, "!@@" ; 0xa5b6e _TM41ExplanationText: ; 0xa5b6e db $0, "TM41 teaches", $4f db "SOFTBOILED!", $51 db "Only one #MON", $4f db "can use it!", $51 db "That #MON is", $4f db "CHANSEY!", $57 ; 0xa5b6e + 74 bytes _TM41NoRoomText: ; 0xa5bb8 db $0, "Oh, your pack is", $4f db "full of items!", $57 ; 0xa5bb8 + 33 bytes _CeladonCityText6: ; 0xa5bd9 db $0, "This is my trusted", $4f db "pal, POLIWRATH!", $51 db "It evolved from", $4f db "POLIWHIRL when I", $55 db "used WATER STONE!", $57 _CeladonCityText7: ; 0xa5c30 db $0, "POLIWRATH: Ribi", $4f db "ribit!@@" _CeladonCityText8: ; 0xa5c49 db $0, "What are you", $4f db "staring at?", $57 _CeladonCityText9: ; 0xa5c63 db $0, "Keep out of TEAM", $4f db "ROCKET's way!", $57 _CeladonCityText10: ; 0xa5c82 db $0, "TRAINER TIPS", $51 db "X ACCURACY boosts", $4f db "the accuracy of", $55 db "techniques!", $51 db "DIRE HIT jacks up", $4f db "the likelihood of", $55 db "critical hits!", $51 db "Get your items at", $4f db "CELADON DEPT.", $55 db "STORE!", $57 _CeladonCityText11: ; 0xa5d18 db $0, "CELADON CITY", $4f db "The City of", $55 db "Rainbow Dreams", $57 _CeladonCityText13: ; 0xa5d41 db $0, "CELADON CITY", $4f db "#MON GYM", $55 db "LEADER: ERIKA", $51 db "The Nature Loving", $4f db "Princess!", $57 _CeladonCityText14: ; 0xa5d82 db $0, "CELADON MANSION", $57 _CeladonCityText15: ; 0xa5d93 db $0, "Find what you", $4f db "need at CELADON", $55 db "DEPT. STORE!", $57 _CeladonCityText16: ; 0xa5dbf db $0, "TRAINER TIPS", $51 db "GUARD SPEC.", $4f db "protects #MON", $55 db "against SPECIAL", $55 db "attacks such as", $55 db "fire and water!", $51 db "Get your items at", $4f db "CELADON DEPT.", $55 db "STORE!", $57 _CeladonCityText17: ; 0xa5e3e db $0, "Coins exchanged", $4f db "for prizes!", $55 db "PRIZE EXCHANGE", $57 _CeladonCityText18: ; 0xa5e6a db $0, "ROCKET GAME CORNER", $4f db "The playground", $55 db "for grown-ups!", $57 _FuchsiaCityText1: ; 0xa5e9c db $0, "Did you try the", $4f db "SAFARI GAME? Some", $55 db "#MON can only", $55 db "be caught there.", $57 _FuchsiaCityText2: ; 0xa5ede db $0, "SAFARI ZONE has a", $4f db "zoo in front of", $55 db "the entrance.", $51 db "Out back is the", $4f db "SAFARI GAME for", $55 db "catching #MON.", $57 _FuchsiaCityText3: ; 0xa5f3e db $0, "ERIK: Where's", $4f db "SARA? I said I'd", $55 db "meet her here.", $57 _FuchsiaCityText4: ; 0xa5f6b db $0, "That item ball in", $4f db "there is really a", $55 db "#MON.", $57 _FuchsiaCityText5: ; 0xa5f96 db $0, "!", $57 _FuchsiaCityText11: ; 0xa5f99 db $0, "FUCHSIA CITY", $4f db "Behold! It's", $55 db "Passion Pink!", $57 _FuchsiaCityText13: ; 0xa5fc1 db $0, "SAFARI GAME", $4f db "#MON-U-CATCH!", $57 _FuchsiaCityText16: ; 0xa5fdc db $0, "SAFARI ZONE", $4f db "WARDEN's HOME", $57 _FuchsiaCityText17: ; 0xa5ff6 db $0, "#MON PARADISE", $4f db "SAFARI ZONE", $57 _FuchsiaCityText18: ; 0xa6011 db $0, "FUCHSIA CITY", $4f db "#MON GYM", $55 db "LEADER: KOGA", $51 db "The Poisonous", $4f db "Ninja Master", $57 _FuchsiaCityChanseyText: ; 0xa6050 db $0, "Name: CHANSEY", $51 db "Catching one is", $4f db "all up to chance.", $58 ; 0xa6050 + 49 bytes _FuchsiaCityVoltorbText: ; 0xa6081 db $0, "Name: VOLTORB", $51 db "The very image of", $4f db "a # BALL.", $58 ; 0xa6081 + 43 bytes _FuchsiaCityKangaskhanText: ; 0xa60ac db $0, "Name: KANGASKHAN", $51 db "A maternal #MON", $4f db "that raises its", $55 db "young in a pouch", $55 db "on its belly.", $58 ; 0xa60ac + 81 bytes _FuchsiaCitySlowpokeText: ; 0xa60fd db $0, "Name: SLOWPOKE", $51 db "Friendly and very", $4f db "slow moving.", $58 ; 0xa60fd + 47 bytes _FuchsiaCityLaprasText: ; 0xa612c db $0, "Name: LAPRAS", $51 db "A.K.A. the king", $4f db "of the seas.", $58 ; 0xa612c + 43 bytes _FuchsiaCityOmanyteText: ; 0xa6157 db $0, "Name: OMANYTE", $51 db "A #MON that", $4f db "was resurrected", $55 db "from a fossil.", $58 ; 0xa6157 + 58 bytes _FuchsiaCityKabutoText: ; 0xa6191 db $0, "Name: KABUTO", $51 db "A #MON that", $4f db "was resurrected", $55 db "from a fossil.", $58 ; 0xa6191 + 57 bytes _UnnamedText_19b2a: ; 0xa61ca db $0, "...", $57 ; 0xa61ca + 5 bytes _CinnabarIslandText8: ; 0xa61cf db $0, "The door is", $4f db "locked...", $57 ; 0xa61cf + 23 bytes _CinnabarIslandText1: ; 0xa61e6 db $0, "CINNABAR GYM's", $4f db "BLAINE is an odd", $55 db "man who has lived", $55 db "here for decades.", $57 _CinnabarIslandText2: ; 0xa622a db $0, "Scientists conduct", $4f db "experiments in", $55 db "the burned out", $55 db "building.", $57 _CinnabarIslandText3: ; 0xa6266 db $0, "CINNABAR ISLAND", $4f db "The Fiery Town of", $55 db "Burning Desire", $57 _CinnabarIslandText6: ; 0xa6298 db $0, "#MON LAB", $57 _CinnabarIslandText7: ; 0xa62a2 db $0, "CINNABAR ISLAND", $4f db "#MON GYM", $55 db "LEADER: BLAINE", $51 db "The Hot-Headed", $4f db "Quiz Master!", $57 _SaffronCityText1: ; 0xa62e7 db $0, "What do you want?", $4f db "Get lost!", $57 _SaffronCityText2: ; 0xa6304 db $0, "BOSS said he'll", $4f db "take this town!", $57 _SaffronCityText3: ; 0xa6324 db $0, "Get out of the", $4f db "way!", $57 _SaffronCityText4: ; 0xa6339 db $0, "SAFFRON belongs", $4f db "to TEAM ROCKET!", $57 _SaffronCityText5: ; 0xa635a db $0, "Being evil makes", $4f db "me feel so alive!", $57 _SaffronCityText6: ; 0xa637e db $0, "Ow! Watch where", $4f db "you're walking!", $57 _SaffronCityText7: ; 0xa639e db $0, "With SILPH under", $4f db "control, we can", $55 db "exploit #MON", $55 db "around the world!", $57 _SaffronCityText8: ; 0xa63df db $0, "You beat TEAM", $4f db "ROCKET all alone?", $55 db "That's amazing!", $57 _SaffronCityText9: ; 0xa640f db $0, "Yeah! TEAM ROCKET", $4f db "is gone!", $55 db "It's safe to go", $55 db "out again!", $57 _SaffronCityText10: ; 0xa6445 db $0, "People should be", $4f db "flocking back to", $55 db "SAFFRON now.", $57 _SaffronCityText11: ; 0xa6475 db $0, "I flew here on my", $4f db "PIDGEOT when I", $55 db "read about SILPH.", $51 db "It's already over?", $4f db "I missed the", $55 db "media action.", $57 _SaffronCityText12: ; 0xa64d6 db $0, "PIDGEOT: Bi bibii!@@" _SaffronCityText13: ; 0xa64eb db $0, "I saw ROCKET", $4f db "BOSS escaping", $55 db "SILPH's building.", $57 _SaffronCityText14: ; 0xa6518 db $0, "I'm a security", $4f db "guard.", $51 db "Suspicious kids I", $4f db "don't allow in!", $57 _SaffronCityText15: ; 0xa654f db $0, "...", $4f db "Snore...", $51 db "Hah! He's taking", $4f db "a snooze!", $57 _SaffronCityText16: ; 0xa6577 db $0, "SAFFRON CITY", $4f db "Shining, Golden", $55 db "Land of Commerce", $57 _SaffronCityText17: ; 0xa65a6 db $0, "FIGHTING DOJO", $57 _SaffronCityText18: ; 0xa65b5 db $0, "SAFFRON CITY", $4f db "#MON GYM", $55 db "LEADER: SABRINA", $51 db "The Master of", $4f db "Psychic #MON!", $57 _SaffronCityText20: ; 0xa65f8 db $0, "TRAINER TIPS", $51 db "FULL HEAL cures", $4f db "all ailments like", $55 db "sleep and burns.", $51 db "It costs a bit", $4f db "more, but it's", $55 db "more convenient.", $57 _SaffronCityText21: ; 0xa6667 db $0, "TRAINER TIPS", $51 db "New GREAT BALL", $4f db "offers improved", $55 db "capture rates.", $51 db "Try it on those", $4f db "hard-to-catch", $55 db "#MON.", $57 _SaffronCityText22: ; 0xa66c7 db $0, "SILPH CO.", $4f db "OFFICE BUILDING", $57 _SaffronCityText24: ; 0xa66e2 db $0, "MR.PSYCHIC's", $4f db "HOUSE", $57 _SaffronCityText25: ; 0xa66f5 db $0, "SILPH's latest", $4f db "product!", $51 db "Release to be", $4f db "determined...", $57 _ItemUseBallText00: db 0,"It dodged the",$4F db "thrown BALL!",$51 db "This #MON",$4F db "can't be caught!",$58 _ItemUseBallText01: db 0,"You missed the",$4F db "#MON!",$58 _ItemUseBallText02: db 0,"Darn! The #MON",$4F db "broke free!",$58 _ItemUseBallText03: db 0,"Aww! It appeared",$4F db "to be caught! ",$58 _ItemUseBallText04: db 0,"Shoot! It was so",$4F db "close too!",$58 _ItemUseBallText05: db 0,"All right!",$4F,"@",1 dw $CFDA db 0," was",$55 db "caught!@@" _ItemUseBallText07: db 1 dw $DE06 db 0," was",$4F db "transferred to",$55 db "BILL's PC!",$58 _ItemUseBallText08: db 1 dw $DE06 db 0," was",$4F db "transferred to",$55 db "someone's PC!",$58 _ItemUseBallText06: db 0,"New #DEX data",$4F db "will be added for",$55,"@" TX_RAM $cfda db 0,"!@@" _SurfingGotOnText: ; 0xa685e db $0, $52, " got on", $4f db "@" TX_RAM $cd6d db $0, "!", $58 _SurfingNoPlaceToGetOffText: ; 0xa686f db $0, "There's no place", $4f db "to get off!", $58 _VitaminStatRoseText: ; 0xa688c TX_RAM $cd6d db $0, "'s", $4f db "@" TX_RAM $cf4b db $0, " rose.", $58 _VitaminNoEffectText: ; 0xa689e db $0, "It won't have any", $4f db "effect.", $58 _ThrewBaitText: ; 0xa68b8 db $0, $52, " threw", $4f db "some BAIT.", $57 _ThrewRockText: ; 0xa68cc db $0, $52, " threw a", $4f db "ROCK.", $57 _PlayedFluteNoEffectText: ; 0xa68dd db $0, "Played the #", $4f db "FLUTE.", $51 db "Now, that's a", $4f db "catchy tune!", $58 _FluteWokeUpText: ; 0xa690c db $0, "All sleeping", $4f db "#MON woke up.", $58 _PlayedFluteHadEffectText: ; 0xa6928 db $0, $52, " played the", $4f db "# FLUTE.@@" _CoinCaseNumCoinsText: ; 0xa6940 db $0, "Coins", $4f db "@" db $2, $a4, $d5, $c2 ; print BCD number db $0, " ", $58 _ItemfinderFoundItemText: ; 0xa694f db $0, "Yes! ITEMFINDER", $4f db "indicates there's", $55 db "an item nearby.", $58 _ItemfinderFoundNothingText: ; 0xa6981 db $0, "Nope! ITEMFINDER", $4f db "isn't responding.", $58 _RaisePPWhichTechniqueText: ; 0xa69a4 db $0, "Raise PP of which", $4f db "technique?", $57 _RestorePPWhichTechniqueText: ; 0xa69c2 db $0, "Restore PP of", $4f db "which technique?", $57 _PPMaxedOutText: ; 0xa69e2 TX_RAM $cf4b db $0, "'s PP", $4f db "is maxed out.", $58 _PPIncreasedText: ; 0xa69f9 TX_RAM $cf4b db $0, "'s PP", $4f db "increased.", $58 _PPRestoredText: ; 0xa6a0d db $0, "PP was restored.", $58 _BootedUpTMText: ; 0xa6a1f db $0, "Booted up a TM!", $58 _BootedUpHMText: ; 0xa6a30 db $0, "Booted up an HM!", $58 _TeachMachineMoveText: ; 0xa6a42 db $0, "It contained", $4f db "@" TX_RAM $cf4b db $0, "!", $51 db "Teach @" TX_RAM $cf4b db $0, $4f db "to a #MON?", $57 _MonCannotLearnMachineMoveText: ; 0xa6a6e TX_RAM $cd6d db $0, " is not", $4f db "compatible with", $55 db "@" TX_RAM $cf4b db $0, ".", $51 db "It can't learn", $4f db "@" TX_RAM $cf4b db $0, ".", $58 _ItemUseNotTimeText: ; 0xa6aa6 db $0, "OAK: ", $52, "!", $4f db "This isn't the", $55 db "time to use that! ", $58 _ItemUseNotYoursToUseText: ; 0xa6ad0 db $0, "This isn't yours", $4f db "to use!", $58 _ItemUseNoEffectText: ; 0xa6ae9 db $0, "It won't have any", $4f db "effect.", $58 ; 0xa6ae9 + 26 bytes = 0xa6b03 _ThrowBallAtTrainerMonText1: ; 0xa6b03 db $0, "The trainer", $4f db "blocked the BALL!", $58 _ThrowBallAtTrainerMonText2: ; 0xa6b22 db $0, "Don't be a thief!", $58 _NoCyclingAllowedHereText: ; 0xa6b34 db $0, "No cycling", $4e, "allowed here.", $58 _NoSurfingHereText: ; 0xa6b4e db $0, "No SURFing on", $4f db "@" TX_RAM $cd6d db $0, " here!", $58 _BoxFullCannotThrowBallText: ; 0xa6b69 db $0, "The #MON BOX", $4f db "is full! Can't", $55 db "use that item!", $58 SECTION "bank2A",DATA,BANK[$2A] _ItemUseText001: db 0,$52," used@@" _ItemUseText002: ; 0xa8009 TX_RAM $cf4b db $0, "!", $57 _GotOnBicycleText1: ; 0xa800f db $0, $52, " got on the@@" _GotOnBicycleText2: ; 0xa801e TX_RAM $cf4b db $0, "!", $58 _GotOffBicycleText1: ; 0xa8024 db $0, $52, " got off@@" _GotOffBicycleText2: ; 0xa8030 db $0, "the @" TX_RAM $cf4b db $0, ".", $58 _ThrewAwayItemText: ; 0xa803c db $0, "Threw away", $4f db "@" UnnamedText_a8049: ; 0xa8049 TX_RAM $cd6d db $0, ".", $58 _IsItOKToTossItemText: ; 0xa804f db $0, "Is it OK to toss", $4f db "@" TX_RAM $cf4b db $0, "?", $58 _TooImportantToTossText: ; 0xa8068 db $0, "That's too impor-", $4f db "tant to toss!", $58 _UnnamedText_2fe3b: ; 0xa8088 TX_RAM $cd6d db $0, " knows", $4f db "@" TX_RAM $cf4b db $0, "!", $58 _UnnamedText_71d88: ; 0xa809a db $0, "Okay, connect the", $4f db "cable like so!", $58 ; 0xa809a + 34 bytes _UnnamedText_71d8d: ; 0xa80bc db $0, $52, " traded", $4f db "@" TX_RAM $cd13 db $0, " for", $55 db "@" TX_RAM $cd1e db $0, "!@@" _UnnamedText_71d94: ; 0xa80d8 db $0, "I'm looking for", $4f db "@" TX_RAM $cd13 db $0, "! Wanna", $51 db "trade one for", $4f db "@" TX_RAM $cd1e db $0, "? ", $57 _UnnamedText_71d99: ; 0xa810b db $0, "Awww!", $4f db "Oh well...", $57 ; 0xa810b + 18 bytes _UnnamedText_71d9e: ; 0xa811d db $0, "What? That's not", $4f db "@" ; 0xa811d + 18 bytes UnnamedText_a812f: ; 0xa812f TX_RAM $cd13 db $0, "!", $51 db "If you get one,", $4f db "come back here!", $57 ; 0xa8155 _UnnamedText_71da3: ; 0xa8155 db $0, "Hey thanks!", $57 ; 0xa8155 + 13 bytes _UnnamedText_71da8: ; 0xa8162 db $0, "Isn't my old", $4f db "@" TX_RAM $cd1e db $0, " great?", $57 _UnnamedText_71dad: ; 0xa817c db $0, "Hello there! Do", $4f db "you want to trade", $51 db "your @" TX_RAM $cd13 db $0, $4f db "for @" TX_RAM $cd1e db $0, "?", $57 _UnnamedText_71db2: ; 0xa81b5 db $0, "Well, if you", $4f db "don't want to...", $57 ; 0xa81b5 + 30 bytes _UnnamedText_71db7: ; 0xa81d3 db $0, "Hmmm? This isn't", $4f db "@" TX_RAM $cd13 db $0, ".", $51 db "Think of me when", $4f db "you get one.", $57 ; 0xa8209 _UnnamedText_71dbc: ; 0xa8209 db $0, "Thanks!", $57 ; 0xa8209 + 9 bytes _UnnamedText_71dc1: ; 0xa8212 db $0, "The @" TX_RAM $cd13 db $0, " you", $4f db "traded to me", $51 db "went and evolved!", $57 ; 0xa8240 _UnnamedText_71dc6: ; 0xa8240 db $0, "Hi! Do you have", $4f db "@" TX_RAM $cd13 db $0, "?", $51 db "Want to trade it", $4f db "for @" TX_RAM $cd1e db $0, "?", $57 ; 0xa8274 _UnnamedText_71dcb: ; 0xa8274 db $0, "That's too bad.", $57 ; 0xa8274 + 16 bytes _UnnamedText_71dd0: ; 0xa8284 db $0, "...This is no", $4f db "@" TX_RAM $cd13 db $0, ".", $51 db "If you get one,", $4f db "trade it with me!", $57 ; 0xa82bc _UnnamedText_71dd5: ; 0xa82bc db $0, "Thanks pal!", $57 ; 0xa82bc + 13 bytes _UnnamedText_71dda: ; 0xa82c9 db $0, "How is my old", $4f db "@" TX_RAM $cd1e db $0, "?", $51 db "My @" TX_RAM $cd13 db $0, " is", $4f db "doing great!", $57 ; 0xa82f8 ; XXX db $0, "There isn't", $4f db "anything to CUT!", $58 TX_RAM $cd6d db $0, " hacked", $4f db "away with CUT!", $58 SECTION "bank2B",DATA,BANK[$2B] INCLUDE "text/pokedex.tx" SECTION "bank2C",DATA,BANK[$2C] MoveNames: ; 4000 db "POUND@" db "KARATE CHOP@" db "DOUBLESLAP@" db "COMET PUNCH@" db "MEGA PUNCH@" db "PAY DAY@" db "FIRE PUNCH@" db "ICE PUNCH@" db "THUNDERPUNCH@" db "SCRATCH@" db "VICEGRIP@" db "GUILLOTINE@" db "RAZOR WIND@" db "SWORDS DANCE@" db "CUT@" db "GUST@" db "WING ATTACK@" db "WHIRLWIND@" db "FLY@" db "BIND@" db "SLAM@" db "VINE WHIP@" db "STOMP@" db "DOUBLE KICK@" db "MEGA KICK@" db "JUMP KICK@" db "ROLLING KICK@" db "SAND-ATTACK@" db "HEADBUTT@" db "HORN ATTACK@" db "FURY ATTACK@" db "HORN DRILL@" db "TACKLE@" db "BODY SLAM@" db "WRAP@" db "TAKE DOWN@" db "THRASH@" db "DOUBLE-EDGE@" db "TAIL WHIP@" db "POISON STING@" db "TWINEEDLE@" db "PIN MISSILE@" db "LEER@" db "BITE@" db "GROWL@" db "ROAR@" db "SING@" db "SUPERSONIC@" db "SONICBOOM@" db "DISABLE@" db "ACID@" db "EMBER@" db "FLAMETHROWER@" db "MIST@" db "WATER GUN@" db "HYDRO PUMP@" db "SURF@" db "ICE BEAM@" db "BLIZZARD@" db "PSYBEAM@" db "BUBBLEBEAM@" db "AURORA BEAM@" db "HYPER BEAM@" db "PECK@" db "DRILL PECK@" db "SUBMISSION@" db "LOW KICK@" db "COUNTER@" db "SEISMIC TOSS@" db "STRENGTH@" db "ABSORB@" db "MEGA DRAIN@" db "LEECH SEED@" db "GROWTH@" db "RAZOR LEAF@" db "SOLARBEAM@" db "POISONPOWDER@" db "STUN SPORE@" db "SLEEP POWDER@" db "PETAL DANCE@" db "STRING SHOT@" db "DRAGON RAGE@" db "FIRE SPIN@" db "THUNDERSHOCK@" db "THUNDERBOLT@" db "THUNDER WAVE@" db "THUNDER@" db "ROCK THROW@" db "EARTHQUAKE@" db "FISSURE@" db "DIG@" db "TOXIC@" db "CONFUSION@" db "PSYCHIC@" db "HYPNOSIS@" db "MEDITATE@" db "AGILITY@" db "QUICK ATTACK@" db "RAGE@" db "TELEPORT@" db "NIGHT SHADE@" db "MIMIC@" db "SCREECH@" db "DOUBLE TEAM@" db "RECOVER@" db "HARDEN@" db "MINIMIZE@" db "SMOKESCREEN@" db "CONFUSE RAY@" db "WITHDRAW@" db "DEFENSE CURL@" db "BARRIER@" db "LIGHT SCREEN@" db "HAZE@" db "REFLECT@" db "FOCUS ENERGY@" db "BIDE@" db "METRONOME@" db "MIRROR MOVE@" db "SELFDESTRUCT@" db "EGG BOMB@" db "LICK@" db "SMOG@" db "SLUDGE@" db "BONE CLUB@" db "FIRE BLAST@" db "WATERFALL@" db "CLAMP@" db "SWIFT@" db "SKULL BASH@" db "SPIKE CANNON@" db "CONSTRICT@" db "AMNESIA@" db "KINESIS@" db "SOFTBOILED@" db "HI JUMP KICK@" db "GLARE@" db "DREAM EATER@" db "POISON GAS@" db "BARRAGE@" db "LEECH LIFE@" db "LOVELY KISS@" db "SKY ATTACK@" db "TRANSFORM@" db "BUBBLE@" db "DIZZY PUNCH@" db "SPORE@" db "FLASH@" db "PSYWAVE@" db "SPLASH@" db "ACID ARMOR@" db "CRABHAMMER@" db "EXPLOSION@" db "FURY SWIPES@" db "BONEMERANG@" db "REST@" db "ROCK SLIDE@" db "HYPER FANG@" db "SHARPEN@" db "CONVERSION@" db "TRI ATTACK@" db "SUPER FANG@" db "SLASH@" db "SUBSTITUTE@" db "STRUGGLE@"