ref: 120235c3937fb47fc85388f8da5360178294d5d1
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 .waitVBlank ld a,[$ff44] cp a,$91 jr nz,.waitVBlank 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 .loop ld [hli],a dec b jr nz,.loop ret ResetLCD_OAM: ; $008d ld a,$a0 ld hl,$c300 ld de,$0004 ld b,$28 .loop ld [hl],a add hl,de dec b jr nz,.loop 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 Route15GateUpstairs_h 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,BANK(CheckForceBikeOrSurf) ld hl,CheckForceBikeOrSurf 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 DisplayTextID ; 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 Delay3 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 Func_c44: 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 ; known jump sources: 7af (0:7af) Func_12da: ; 12da (0:12da) ld a, $1e ld [$d13a], a ld hl, $d730 ld a, [hl] or $26 ld [hl], a ret ; known jump sources: 3c9 (0:3c9) Func_12e7: ; 12e7 (0:12e7) ld hl, $d728 res 0, [hl] ret ; 12ed (0:12ed) ;appears to be called twice inside function $C38B ;if $d700,$d11a == $1 then biking ;if $d700,$d11a == $2 then surfing ForceBikeOrSurf: ; 12ED ld b,5 ;graphics bank 5 ld hl,LoadPlayerSpriteGraphics ;load player sprite graphics call Bankswitch ;loads bank 5 and then calls LoadPlayerSpriteGraphics jp $2307 ;update map/player state? ; 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,$1384 - $137a ; known jump sources: 617a (1:617a), 12a6e (4:6a6e), 403b0 (10:43b0), 415c0 (10:55c0), 7bebf (1e:7ebf) Func_1384: ; 1384 (0:1384) ld a, $1 ld [$d0aa], a ; known jump sources: 4530 (1:4530), 702a3 (1c:42a3), 740ec (1d:40ec), 76643 (1d:6643), 797ab (1e:57ab) Func_1389: ; 1389 (0:1389) push hl ld a, [$d11e] push af ld a, [$cf91] ld [$d11e], a ld a, $3a call Predef ; indirect jump to IndexToPokedex (41010 (10:5010)) ld hl, $d11e ld a, [hl] pop bc ld [hl], b and a pop hl jr z, .asm_13a7 cp $98 jr c, .asm_13ad .asm_13a7 ld a, $1 ld [$cf91], a ret .asm_13ad push hl ld de, $9000 call Func_1665 pop hl ld a, [$FF00+$b8] push af ld a, $f ld [$FF00+$b8], a ld [$2000], a xor a ld [$FF00+$e1], a call asm_3f0d0 xor a ld [$d0aa], a pop af ld [$FF00+$b8], a ld [$2000], a ret ; 13d0 (0:13d0) ; 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,CryData add hl,bc add hl,bc add hl,bc ld a,Bank(CryData) 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,PrintStatusConditionNotFainted ; 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 PrintStatusConditionNotFainted ; 14f6 ld a,[$ffb8] push af ld a,BANK(Unknown_747de) ld [$ffb8],a ld [$2000],a call Unknown_747de ; 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,BANK(BulbasaurBaseStats) 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,MewBaseStats ld de,$d0b8 ld bc,28 ld a,BANK(MewBaseStats) 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],"¥" 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],"¥" 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],"¥" 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 ; known jump sources: 13b1 (0:13b1), 3ca4f (f:4a4f), 3d17d (f:517d), 3efce (f:6fce), 3efda (f:6fda), 5dbfd (17:5bfd) Func_1665: ; 1665 (0:1665) push de ld hl, $b call Unknown_1627 ld hl, $d0c2 ld a, [hli] ld c, a pop de ; known jump sources: 3f066 (f:7066) Func_1672: ; 1672 (0:1672) push de and $f ld [H_DOWNARROWBLINKCNT1], a ; $FF00+$8b ld b, a ld a, $7 sub b inc a srl a ld b, a add a add a add a sub b ld [$FF00+$8d], a ld a, c swap a and $f ld b, a add a add a add a ld [H_DOWNARROWBLINKCNT2], a ; $FF00+$8c ld a, $7 sub b ld b, a ld a, [$FF00+$8d] add b add a add a add a ld [$FF00+$8d], a xor a ld [$4000], a ld hl, $a000 call Func_16df ld de, $a188 ld hl, $a000 call Func_16c2 ld hl, $a188 call Func_16df ld de, $a310 ld hl, $a188 call Func_16c2 pop de jp Func_16ea ; known jump sources: 16ac (0:16ac), 16bb (0:16bb) Func_16c2: ; 16c2 (0:16c2) ld a, [$FF00+$8d] ld b, $0 ld c, a add hl, bc ld a, [H_DOWNARROWBLINKCNT1] ; $FF00+$8b .asm_16ca push af push hl ld a, [H_DOWNARROWBLINKCNT2] ; $FF00+$8c ld c, a .asm_16cf ld a, [de] inc de ld [hli], a dec c jr nz, .asm_16cf pop hl ld bc, $38 add hl, bc pop af dec a jr nz, .asm_16ca ret ; known jump sources: 16a3 (0:16a3), 16b2 (0:16b2) Func_16df: ; 16df (0:16df) ld bc, $188 .asm_16e2 xor a ld [hli], a dec bc ld a, b or c jr nz, .asm_16e2 ret ; known jump sources: 16bf (0:16bf), 62b8 (1:62b8), 3ecd8 (f:6cd8), 3f121 (f:7121), 70355 (1c:4355), 70368 (1c:4368) Func_16ea: ; 16ea (0:16ea) xor a ld [$4000], a push de ld hl, $a497 ld de, $a30f ld bc, $a187 ld a, $c4 ld [H_DOWNARROWBLINKCNT1], a ; $FF00+$8b .asm_16fc ld a, [de] dec de ld [hld], a ld a, [bc] dec bc ld [hld], a ld a, [de] dec de ld [hld], a ld a, [bc] dec bc ld [hld], a ld a, [H_DOWNARROWBLINKCNT1] ; $FF00+$8b dec a ld [H_DOWNARROWBLINKCNT1], a ; $FF00+$8b jr nz, .asm_16fc ld a, [$d0aa] and a jr z, .asm_1723 ld bc, $310 ld hl, $a188 .asm_171b swap [hl] inc hl dec bc ld a, b or c jr nz, .asm_171b .asm_1723 pop hl ld de, $a188 ld c, $31 ld a, [$FF00+$b8] ld b, a jp CopyVideoData ; 172f (0:172f) 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 ; known jump sources: 70fd (1:70fd), 1dbc2 (7:5bc2), 41265 (10:5265), 4129d (10:529d), 41324 (10:5324) Func_18d6: ; 18d6 (0:18d6) ld c, $6 ld hl, $0 ld de, $c3a0 call Func_18fc call DelayFrame ld hl, $600 ld de, $c418 call Func_18fc call DelayFrame ld hl, $c00 ld de, $c490 call Func_18fc jp DelayFrame ; known jump sources: 18de (0:18de), 18ea (0:18ea), 18f6 (0:18f6) Func_18fc: ; 18fc (0:18fc) ld a, d ld [$FF00+$c2], a call GetRowColAddressBgMap ld a, l ld [H_VBCOPYBGDEST], a ; $FF00+$c3 ld a, h ld [$FF00+$c4], a ld a, c ld [H_VBCOPYBGNUMROWS], a ; $FF00+$c5 ld a, e ld [H_VBCOPYBGSRC], a ; $FF00+$c1 ret ; 190f (0:190f) 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," " 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," " 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," " 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 ; known jump sources: c047 (3:4047) Func_1f49: ; 1f49 (0:1f49) call Func_200e call GBPalWhiteOut ld c, $20 call DelayFrames ; 1f54 (0:1f54) ; 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 ; known jump sources: 962 (0:962), 1f49 (0:1f49), 1fd0 (0:1fd0) Func_200e: ; 200e (0:200e) ld a, $2 ld [$c0ef], a ld [$c0f0], a xor a ld [$cfc7], a ld [$c0ee], a ld [$cfca], a dec a jp Func_23b1 ; 2024 (0:2024) 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 ; known jump sources: 58 (0:58) Func_2125: ; 2125 (0:2125) push af push bc push de push hl ld a, [$FF00+$aa] inc a jr z, .asm_2142 ld a, [$FF00+$1] ld [$FF00+$ad], a ld a, [$FF00+$ac] ld [$FF00+$1], a ld a, [$FF00+$aa] cp $2 jr z, .asm_2162 ld a, $80 ld [$FF00+$2], a jr .asm_2162 .asm_2142 ld a, [$FF00+$1] ld [$FF00+$ad], a ld [$FF00+$aa], a cp $2 jr z, .asm_215f xor a ld [$FF00+$1], a ld a, $3 ld [rDIV], a ; $FF00+$4 .asm_2153 ld a, [rDIV] ; $FF00+$4 bit 7, a jr nz, .asm_2153 ld a, $80 ld [$FF00+$2], a jr .asm_2162 .asm_215f xor a ld [$FF00+$1], a .asm_2162 ld a, $1 ld [$FF00+$a9], a ld a, $fe ld [$FF00+$ac], a pop hl pop de pop bc pop af reti ; known jump sources: 53e2 (1:53e2), 53f1 (1:53f1), 5400 (1:5400) Func_216f: ; 216f (0:216f) ld a, $1 ld [$FF00+$ab], a .asm_2173 ld a, [hl] ld [$FF00+$ac], a call Func_219a push bc ld b, a inc hl ld a, $30 .asm_217e dec a jr nz, .asm_217e ld a, [$FF00+$ab] and a ld a, b pop bc jr z, .asm_2192 dec hl cp $fd jr nz, .asm_2173 xor a ld [$FF00+$ab], a jr .asm_2173 .asm_2192 ld [de], a inc de dec bc ld a, b or c jr nz, .asm_2173 ret ; known jump sources: 2176 (0:2176), 222e (0:222e), 2259 (0:2259) Func_219a: ; 219a (0:219a) xor a ld [$FF00+$a9], a ld a, [$FF00+$aa] cp $2 jr nz, .asm_21a7 ld a, $81 ld [$FF00+$2], a .asm_21a7 ld a, [$FF00+$a9] and a jr nz, .asm_21f1 ld a, [$FF00+$aa] cp $1 jr nz, .asm_21cc call Func_2237 jr z, .asm_21cc call Func_2231 push hl ld hl, $cc48 inc [hl] jr nz, .asm_21c3 dec hl inc [hl] .asm_21c3 pop hl call Func_2237 jr nz, .asm_21a7 jp Func_223f .asm_21cc ld a, [rIE] ; $FF00+$ff and $f cp $8 jr nz, .asm_21a7 ld a, [W_NUMHITS] ; $d074 dec a ld [W_NUMHITS], a ; $d074 jr nz, .asm_21a7 ld a, [$d075] dec a ld [$d075], a jr nz, .asm_21a7 ld a, [$FF00+$aa] cp $1 jr z, .asm_21f1 ld a, $ff .asm_21ee dec a jr nz, .asm_21ee .asm_21f1 xor a ld [$FF00+$a9], a ld a, [rIE] ; $FF00+$ff and $f sub $8 jr nz, .asm_2204 ld [W_NUMHITS], a ; $d074 ld a, $50 ld [$d075], a .asm_2204 ld a, [$FF00+$ad] cp $fe ret nz call Func_2237 jr z, .asm_221f push hl ld hl, $cc48 ld a, [hl] dec a ld [hld], a inc a jr nz, .asm_2219 dec [hl] .asm_2219 pop hl call Func_2237 jr z, Func_223f .asm_221f ld a, [rIE] ; $FF00+$ff and $f cp $8 ld a, $fe ret z ld a, [hl] ld [$FF00+$ac], a call DelayFrame jp Func_219a ; known jump sources: 21b7 (0:21b7) Func_2231: ; 2231 (0:2231) ld a, $f .asm_2233 dec a jr nz, .asm_2233 ret ; known jump sources: 21b2 (0:21b2), 21c4 (0:21c4), 2209 (0:2209), 221a (0:221a), 228a (0:228a) Func_2237: ; 2237 (0:2237) push hl ld hl, $cc47 ld a, [hli] or [hl] pop hl ret ; known jump sources: 21c9 (0:21c9), 221d (0:221d), 229c (0:229c) Func_223f: ; 223f (0:223f) dec a ld [$cc47], a ld [$cc48], a ret ; known jump sources: 5c66 (1:5c66) Func_2247: ; 2247 (0:2247) ld hl, $cc42 ld de, $cc3d ld c, $2 ld a, $1 ld [$FF00+$ab], a .asm_2253 call DelayFrame ld a, [hl] ld [$FF00+$ac], a call Func_219a ld b, a inc hl ld a, [$FF00+$ab] and a ld a, $0 ld [$FF00+$ab], a jr nz, .asm_2253 ld a, b ld [de], a inc de dec c jr nz, .asm_2253 ret INCBIN "baserom.gbc",$226e,$227f - $226e ; known jump sources: 53b5 (1:53b5), 7263 (1:7263) Func_227f: ; 227f (0:227f) ld a, $ff ld [$cc3e], a .asm_2284 call Func_22c3 call DelayFrame call Func_2237 jr z, .asm_22a0 push hl ld hl, $cc48 dec [hl] jr nz, .asm_229f dec hl dec [hl] jr nz, .asm_229f pop hl xor a jp Func_223f .asm_229f pop hl .asm_22a0 ld a, [$cc3e] inc a jr z, .asm_2284 ld b, $a .asm_22a8 call DelayFrame call Func_22c3 dec b jr nz, .asm_22a8 ld b, $a .asm_22b3 call DelayFrame call Func_22ed dec b jr nz, .asm_22b3 ld a, [$cc3e] ld [$cc3d], a ret ; known jump sources: 2284 (0:2284), 22ab (0:22ab), 3d63b (f:563b), 3d64c (f:564c) Func_22c3: ; 22c3 (0:22c3) call asm_22d7 ld a, [$cc42] add $60 ld [$FF00+$ac], a ld a, [$FF00+$aa] cp $2 jr nz, asm_22d7 ld a, $81 ld [$FF00+$2], a asm_22d7: ; 22d7 (0:22d7) ld a, [$FF00+$ad] ld [$cc3d], a and $f0 cp $60 ret nz xor a ld [$FF00+$ad], a ld a, [$cc3d] and $f ld [$cc3e], a ret ; known jump sources: 22b6 (0:22b6), 721a (1:721a), 7220 (1:7220), 7276 (1:7276), 3d657 (f:5657) Func_22ed: ; 22ed (0:22ed) xor a ld [$FF00+$ac], a ld a, [$FF00+$aa] cp $2 ret nz ld a, $81 ld [$FF00+$2], a ret ; known jump sources: 19c5b (6:5c5b), 4425d (11:425d), 488b8 (12:48b8), 492cf (12:52cf), 493ba (12:53ba), 5c587 (17:4587), 5c645 (17:4645), 5c8da (17:48da), 5c98f (17:498f), 5d535 (17:5535), 75063 (1d:5063), 75e2c (1d:5e2c) Func_22fa: ; 22fa (0:22fa) ld a, $2 ld [$FF00+$1], a xor a ld [$FF00+$ad], a ld a, $80 ld [$FF00+$2], a ret INCBIN "baserom.gbc",$2306,$2307 - $2306 ; known jump sources: 100d (0:100d), 12f5 (0:12f5), d993 (3:5993), d9ae (3:59ae), d9da (3:59da), da22 (3:5a22), e234 (3:6234), 17daa (5:7daa), 19624 (6:5624), 1cbf4 (7:4bf4), 1ce82 (7:4e82), 1cf1b (7:4f1b), 1cfda (7:4fda), 1ebc9 (7:6bc9), 3aef3 (e:6ef3), 51165 (14:5165), 51d35 (14:5d35), 605cf (18:45cf), 614d2 (18:54d2), 61917 (18:5917), 70558 (1c:4558), 7bf61 (1e:7f61), 7d15f (1f:515f) Func_2307: ; 2307 (0:2307) call Func_3748 xor a ld c, a ld d, a ld [$cfca], a jr asm_2324 ; known jump sources: 8b0 (0:8b0), 94b (0:94b), 12b2 (0:12b2) Func_2312: ; 2312 (0:2312) ld c, $a ld d, $0 ld a, [$d72e] bit 5, a jr z, asm_2324 xor a ld [$cfca], a ld c, $8 ld d, c asm_2324: ; 2324 (0:2324) ld a, [$d700] and a jr z, .asm_2343 cp $2 jr z, .asm_2332 ld a, $d2 jr .asm_2334 .asm_2332 ld a, $d6 .asm_2334 ld b, a ld a, d and a ld a, $1f jr nz, .asm_233e ld [$c0ef], a .asm_233e ld [$c0f0], a jr .asm_234c .asm_2343 ld a, [$d35b] ld b, a call Func_2385 jr c, .asm_2351 .asm_234c ld a, [$cfca] cp b ret z .asm_2351 ld a, c ld [$cfc7], a ld a, b ld [$cfca], a ld [$c0ee], a jp Func_23b1 ; known jump sources: 12af (0:12af) Func_235f: ; 235f (0:235f) ld a, [$c0ef] ld b, a cp $2 jr nz, .asm_236c ld hl, $5103 jr .asm_2378 .asm_236c cp $8 jr nz, .asm_2375 ld hl, $5879 jr .asm_2378 .asm_2375 ld hl, $5177 .asm_2378 ld c, $6 .asm_237a push bc push hl call Bankswitch pop hl pop bc dec c jr nz, .asm_237a ret ; known jump sources: 2347 (0:2347) Func_2385: ; 2385 (0:2385) ld a, [$d35c] ld e, a ld a, [$c0ef] cp e jr nz, .asm_2394 ld [$c0f0], a and a ret .asm_2394 ld a, c and a ld a, e jr nz, .asm_239c ld [$c0ef], a .asm_239c ld [$c0f0], a scf ret ; known jump sources: 550a (1:550a), 611f (1:611f), 9100 (2:5100), 9b4b (2:5b4b), 9b69 (2:5b69), 9b97 (2:5b97), e22a (3:622a), 18e9f (6:4e9f), 19516 (6:5516), 1cd86 (7:4d86), 1dbac (7:5bac), 1e9bf (7:69bf), 3c6fa (f:46fa), 50f52 (14:4f52), 51c4d (14:5c4d), 60528 (18:4528), 613d1 (18:53d1), 701f3 (1c:41f3), 740a8 (1d:40a8), 7be53 (1e:7e53), 7bf3c (1e:7f3c), 7bf54 (1e:7f54), 7d15c (1f:515c) Func_23a1: ; 23a1 (0:23a1) ld b, a ld [$c0ee], a xor a ld [$cfc7], a ld a, c ld [$c0ef], a ld [$c0f0], a ld a, b ; known jump sources: 8d6 (0:8d6), 959 (0:959), c09 (0:c09), ffe (0:ffe), 13d3 (0:13d3), 1c4e (0:1c4e), 2021 (0:2021), 235c (0:235c), 2910 (0:2910), 291d (0:291d), 2adc (0:2adc), 33ff (0:33ff), 3431 (0:3431), 3745 (0:3745), 38a4 (0:38a4), 3b64 (0:3b64), 43d1 (1:43d1), 43fe (1:43fe), 4434 (1:4434), 5409 (1:5409), 54cc (1:54cc), 5aac (1:5aac), 5f14 (1:5f14), 6117 (1:6117), 61df (1:61df), 6228 (1:6228), 66f2 (1:66f2), 703d (1:703d), 75fe (1:75fe), 7903 (1:7903), 7976 (1:7976), 7a03 (1:7a03), 7a80 (1:7a80), 90d1 (2:50d1), c730 (3:4730), de5e (3:5e5e), e223 (3:6223), e2d2 (3:62d2), e3d3 (3:63d3), e56b (3:656b), efe5 (3:6fe5), f2a4 (3:72a4), f2da (3:72da), 13650 (4:7650), 17e31 (5:7e31), 17eaa (5:7eaa), 17ec2 (5:7ec2), 17ed4 (5:7ed4), 17ee6 (5:7ee6), 17f15 (5:7f15), 18e97 (6:4e97), 1950f (6:550f), 195d2 (6:55d2), 1a6cb (6:66cb), 1cebb (7:4ebb), 1cfb9 (7:4fb9), 1dba5 (7:5ba5), 1dcb6 (7:5cb6), 1e9b8 (7:69b8), 1eabd (7:6abd), 1eafc (7:6afc), 1eb9c (7:6b9c), 1eba9 (7:6ba9), 1ebb6 (7:6bb6), 1ebc3 (7:6bc3), 1ebed (7:6bed), 1ebf7 (7:6bf7), 214df (8:54df), 21594 (8:5594), 3c5cb (f:45cb), 40103 (10:4103), 412c3 (10:52c3), 41313 (10:5313), 416cb (10:56cb), 416da (10:56da), 416eb (10:56eb), 416f6 (10:56f6), 4170c (10:570c), 41722 (10:5722), 4172d (10:572d), 41754 (10:5754), 41763 (10:5763), 41785 (10:5785), 418dd (10:58dd), 50f4b (14:4f4b), 51067 (14:5067), 5106f (14:506f), 5111d (14:511d), 51c46 (14:5c46), 51cf6 (14:5cf6), 520a9 (14:60a9), 526d9 (14:66d9), 58e34 (16:4e34), 5a338 (16:6338), 5ca7a (17:4a7a), 5ded2 (17:5ed2), 5def9 (17:5ef9), 5df0c (17:5f0c), 60521 (18:4521), 60595 (18:4595), 613ca (18:53ca), 614a6 (18:54a6), 61900 (18:5900), 6190d (18:590d), 70049 (1c:4049), 70461 (1c:4461), 70473 (1c:4473), 7048d (1c:448d), 7049a (1c:449a), 7052a (1c:452a), 7053c (1c:453c), 7057a (1c:457a), 705ca (1c:45ca), 70623 (1c:4623), 70740 (1c:4740), 70ed7 (1c:4ed7), 71019 (1c:5019), 71028 (1c:5028), 74908 (1d:4908), 74f6b (1d:4f6b), 75815 (1d:5815), 78129 (1e:4129), 78e5d (1e:4e5d), 78f54 (1e:4f54), 78f9f (1e:4f9f), 78fd6 (1e:4fd6), 79075 (1e:5075), 790a0 (1e:50a0), 79e5f (1e:5e5f), 79e93 (1e:5e93), 7bdff (1e:7dff), 7be08 (1e:7e08), 7be89 (1e:7e89), 7bf26 (1e:7f26), 7bf4d (1e:7f4d) Func_23b1: ; 23b1 (0:23b1) push hl push de push bc ld b, a ld a, [$c0ee] and a jr z, .asm_23c8 xor a ld [$c02a], a ld [$c02b], a ld [$c02c], a ld [$c02d], a .asm_23c8 ld a, [$cfc7] and a jr z, .asm_23e3 ld a, [$c0ee] and a jr z, .asm_2425 xor a ld [$c0ee], a ld a, [$cfca] cp $ff jr nz, .asm_2414 xor a ld [$cfc7], a .asm_23e3 xor a ld [$c0ee], a ld a, [$FF00+$b8] ld [$FF00+$b9], a ld a, [$c0ef] ld [$FF00+$b8], a ld [$2000], a cp $2 jr nz, .asm_23fd ld a, b call $5876 jr .asm_240b .asm_23fd cp $8 jr nz, .asm_2407 ld a, b call $6035 jr .asm_240b .asm_2407 ld a, b call $58ea .asm_240b ld a, [$FF00+$b9] ld [$FF00+$b8], a ld [$2000], a jr .asm_2425 .asm_2414 ld a, b ld [$cfca], a ld a, [$cfc7] ld [$cfc8], a ld [$cfc9], a ld a, b ld [$cfc7], a .asm_2425 pop bc pop de pop hl ret ; known jump sources: 3e1 (0:3e1), 3f1 (0:3f1), 482 (0:482), 4d2 (0:4d2), 584 (0:584), 5c4 (0:5c4), 965 (0:965), 2a2b (0:2a2b), 2aef (0:2aef), 2c1c (0:2c1c), 2c2b (0:2c2b), 3c52 (0:3c52), 3e2b (0:3e2b), 531f (1:531f), 5b64 (1:5b64), 5c2c (1:5c2c), 65a2 (1:65a2), 6a87 (1:6a87), 6c26 (1:6c26), 6e02 (1:6e02), 705a (1:705a), 70d5 (1:70d5), 7348 (1:7348), 75bc (1:75bc), 766d (1:766d), 76ff (1:76ff), 7733 (1:7733), 7924 (1:7924), e9c8 (3:69c8), efec (3:6fec), f1d4 (3:71d4), f1e3 (3:71e3), 12980 (4:6980), 12cd8 (4:6cd8), 130a3 (4:70a3), 13339 (4:7339), 13466 (4:7466), 135fc (4:75fc), 1360d (4:760d), 17cac (5:7cac), 17f0d (5:7f0d), 1cbec (7:4bec), 1cc50 (7:4c50), 1ce0d (7:4e0d), 1d49b (7:549b), 1d7bc (7:57bc), 213fd (8:53fd), 40006 (10:4006), 402d7 (10:42d7), 48448 (12:4448), 49da2 (12:5da2), 5142a (14:542a), 59653 (16:5653), 59983 (16:5983), 59997 (16:5997), 5c1ed (17:41ed), 5dbee (17:5bee), 60b5b (18:4b5b), 6103c (18:503c), 62255 (18:6255), 704b4 (1c:44b4), 7089b (1c:489b), 710a1 (1c:50a1), 711be (1c:51be), 738ba (1c:78ba), 74a95 (1d:4a95), 74f18 (1d:4f18), 75230 (1d:5230), 7525e (1d:525e), 75fc3 (1d:5fc3), 7bf5e (1e:7f5e) Func_2429: ; 2429 (0:2429) ld a, [$cfcb] dec a ret nz ld a, [$FF00+$b8] push af ld a, $1 ld [$FF00+$b8], a ld [$2000], a call Func_4c34 pop af ld [$FF00+$b8], a ld [$2000], a ret ; 2442 (0:2442) ; mart inventories are below ; they are texts ; first byte $FE, next byte # of items, last byte $FF ; Viridian ViridianMartText6: ; 2442 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 "@" ; 0x24db + 5 bytes UnnamedText_24e0: ; 0x24e0 TX_FAR _UnnamedText_24e0 db "@" ; 0x24e0 + 5 bytes BoulderText: ; 0x24e5 TX_FAR _BoulderText db "@" MartSignText: ; 0x24ea TX_FAR _MartSignText db "@" PokeCenterSignText: ; 0x24ef TX_FAR _PokeCenterSignText db "@" Predef5CText: ; 0x24f4 ; XXX better label (what does predef $5C do?) db $08 ; asm ld a, $5c call Predef jp TextScriptEnd ; known jump sources: 1662 (0:1662), 36f1 (0:36f1) Func_24fd: ; 24fd (0:24fd) ld b, a ld a, [$FF00+$b8] push af ld a, b ld [$FF00+$b8], a ld [$2000], a ld a, $a ld [$0], a xor a ld [$4000], a call Func_251a pop af ld [$FF00+$b8], a ld [$2000], a ret ; known jump sources: 2510 (0:2510) Func_251a: ; 251a (0:251a) ld hl, $a188 ld c, $10 ld b, $3 xor a call FillMemory ld a, $1 ld [$d0a6], a ld a, $3 ld [$d0a7], a xor a ld [$d0a1], a ld [$d0a2], a ld [$d0a8], a call Func_268b ld b, a and $f add a add a add a ld [$d0a4], a ld a, b swap a and $f add a add a add a ld [$d0a3], a call Func_2670 ld [$d0a8], a ; known jump sources: 2643 (0:2643) Func_2556: ; 2556 (0:2556) ld hl, $a188 ld a, [$d0a8] bit 0, a jr z, .asm_2563 ld hl, $a310 .asm_2563 call Func_2897 ld a, [$d0a8] bit 1, a jr z, .asm_257a call Func_2670 and a jr z, .asm_2577 call Func_2670 inc a .asm_2577 ld [$d0a9], a .asm_257a call Func_2670 and a jr z, .asm_2595 .asm_2580 call Func_2670 ld c, a call Func_2670 sla c or c and a jr z, .asm_2595 call Func_2649 call Func_25d8 jr .asm_2580 .asm_2595 ld c, $0 .asm_2597 call Func_2670 and a jr z, .asm_25a0 inc c jr .asm_2597 .asm_25a0 ld a, c add a ld hl, $269f add l ld l, a jr nc, .asm_25aa inc h .asm_25aa ld a, [hli] ld e, a ld d, [hl] push de inc c ld e, $0 ld d, e .asm_25b2 call Func_2670 or e ld e, a dec c jr z, .asm_25c0 sla e rl d jr .asm_25b2 .asm_25c0 pop hl add hl, de ld e, l ld d, h .asm_25c4 ld b, e xor a call Func_2649 ld e, b call Func_25d8 dec de ld a, d and a jr nz, .asm_25d4 ld a, e and a .asm_25d4 jr nz, .asm_25c4 jr .asm_2580 ; known jump sources: 2590 (0:2590), 25ca (0:25ca) Func_25d8: ; 25d8 (0:25d8) ld a, [$d0a4] ld b, a ld a, [$d0a2] inc a cp b jr z, .asm_25f6 ld [$d0a2], a ld a, [$d0ad] inc a ld [$d0ad], a ret nz ld a, [$d0ae] inc a ld [$d0ae], a ret .asm_25f6 xor a ld [$d0a2], a ld a, [$d0a7] and a jr z, .asm_2610 dec a ld [$d0a7], a ld hl, $d0af ld a, [hli] ld [$d0ad], a ld a, [hl] ld [$d0ae], a ret .asm_2610 ld a, $3 ld [$d0a7], a ld a, [$d0a1] add $8 ld [$d0a1], a ld b, a ld a, [$d0a3] cp b jr z, .asm_2630 ld a, [$d0ad] ld l, a ld a, [$d0ae] ld h, a inc hl jp Func_2897 .asm_2630 pop hl xor a ld [$d0a1], a ld a, [$d0a8] bit 1, a jr nz, .asm_2646 xor $1 set 1, a ld [$d0a8], a jp Func_2556 .asm_2646 jp Func_26bf ; known jump sources: 258d (0:258d), 25c6 (0:25c6) Func_2649: ; 2649 (0:2649) ld e, a ld a, [$d0a7] and a jr z, .asm_2664 cp $2 jr c, .asm_265c jr z, .asm_2662 rrc e rrc e jr .asm_2664 .asm_265c sla e sla e jr .asm_2664 .asm_2662 swap e .asm_2664 ld a, [$d0ad] ld l, a ld a, [$d0ae] ld h, a ld a, [hl] or e ld [hl], a ret ; known jump sources: 2550 (0:2550), 256d (0:256d), 2573 (0:2573), 257a (0:257a), 2580 (0:2580), 2584 (0:2584), 2597 (0:2597), 25b2 (0:25b2) Func_2670: ; 2670 (0:2670) ld a, [$d0a6] dec a jr nz, .asm_267e call Func_268b ld [$d0a5], a ld a, $8 .asm_267e ld [$d0a6], a ld a, [$d0a5] rlca ld [$d0a5], a and $1 ret ; known jump sources: 2539 (0:2539), 2676 (0:2676) Func_268b: ; 268b (0:268b) ld a, [$d0ab] ld l, a ld a, [$d0ac] ld h, a ld a, [hli] ld b, a ld a, l ld [$d0ab], a ld a, h ld [$d0ac], a ld a, b ret INCBIN "baserom.gbc",$269f,$26bf - $269f ; known jump sources: 2646 (0:2646) Func_26bf: ; 26bf (0:26bf) ld a, [$d0a9] cp $2 jp z, Func_2877 and a jp nz, Func_27c7 ld hl, $a188 call Func_26d4 ld hl, $a310 ; known jump sources: 26ce (0:26ce), 27d9 (0:27d9), 288a (0:288a) Func_26d4: ; 26d4 (0:26d4) xor a ld [$d0a1], a ld [$d0a2], a call Func_2897 ld a, [$d0aa] and a jr z, .asm_26ec ld hl, $27b7 ld de, $27bf jr .asm_26f2 .asm_26ec ld hl, $27a7 ld de, $27af .asm_26f2 ld a, l ld [$d0b1], a ld a, h ld [$d0b2], a ld a, e ld [$d0b3], a ld a, d ld [$d0b4], a ld e, $0 .asm_2704 ld a, [$d0ad] ld l, a ld a, [$d0ae] ld h, a ld a, [hl] ld b, a swap a and $f call Func_276d swap a ld d, a ld a, b and $f call Func_276d or d ld b, a ld a, [$d0ad] ld l, a ld a, [$d0ae] ld h, a ld a, b ld [hl], a ld a, [$d0a4] add l jr nc, .asm_2731 inc h .asm_2731 ld [$d0ad], a ld a, h ld [$d0ae], a ld a, [$d0a1] add $8 ld [$d0a1], a ld b, a ld a, [$d0a3] cp b jr nz, .asm_2704 xor a ld e, a ld [$d0a1], a ld a, [$d0a2] inc a ld [$d0a2], a ld b, a ld a, [$d0a4] cp b jr z, .asm_2768 ld a, [$d0af] ld l, a ld a, [$d0b0] ld h, a inc hl call Func_2897 jr .asm_2704 .asm_2768 xor a ld [$d0a2], a ret ; known jump sources: 2712 (0:2712), 271b (0:271b) Func_276d: ; 276d (0:276d) srl a ld c, $0 jr nc, .asm_2775 ld c, $1 .asm_2775 ld l, a ld a, [$d0aa] and a jr z, .asm_2780 bit 3, e jr .asm_2782 .asm_2780 bit 0, e .asm_2782 ld e, l jr nz, .asm_278e ld a, [$d0b1] ld l, a ld a, [$d0b2] jr .asm_2795 .asm_278e ld a, [$d0b3] ld l, a ld a, [$d0b4] .asm_2795 ld h, a ld a, e add l ld l, a jr nc, .asm_279c inc h .asm_279c ld a, [hl] bit 0, c jr nz, .asm_27a3 swap a .asm_27a3 and $f ld e, a ret INCBIN "baserom.gbc",$27a7,$27c7 - $27a7 ; known jump sources: 26c8 (0:26c8), 2894 (0:2894) Func_27c7: ; 27c7 (0:27c7) xor a ld [$d0a1], a ld [$d0a2], a call Func_2841 ld a, [$d0ad] ld l, a ld a, [$d0ae] ld h, a call Func_26d4 call Func_2841 ld a, [$d0ad] ld l, a ld a, [$d0ae] ld h, a ld a, [$d0af] ld e, a ld a, [$d0b0] ld d, a .asm_27ef ld a, [$d0aa] and a jr z, .asm_280b push de ld a, [de] ld b, a swap a and $f call Func_2837 swap a ld c, a ld a, b and $f call Func_2837 or c pop de ld [de], a .asm_280b ld a, [hli] ld b, a ld a, [de] xor b ld [de], a inc de ld a, [$d0a2] inc a ld [$d0a2], a ld b, a ld a, [$d0a4] cp b jr nz, .asm_27ef xor a ld [$d0a2], a ld a, [$d0a1] add $8 ld [$d0a1], a ld b, a ld a, [$d0a3] cp b jr nz, .asm_27ef xor a ld [$d0a1], a ret ; known jump sources: 27fc (0:27fc), 2805 (0:2805) Func_2837: ; 2837 (0:2837) ld de, $2867 add e ld e, a jr nc, .asm_283f inc d .asm_283f ld a, [de] ret ; known jump sources: 27ce (0:27ce), 27dc (0:27dc), 2877 (0:2877), 288d (0:288d) Func_2841: ; 2841 (0:2841) ld a, [$d0a8] bit 0, a jr nz, .asm_2850 ld de, $a188 ld hl, $a310 jr .asm_2856 .asm_2850 ld de, $a310 ld hl, $a188 .asm_2856 ld a, l ld [$d0ad], a ld a, h ld [$d0ae], a ld a, e ld [$d0af], a ld a, d ld [$d0b0], a ret INCBIN "baserom.gbc",$2867,$2877 - $2867 ; known jump sources: 26c4 (0:26c4) Func_2877: ; 2877 (0:2877) call Func_2841 ld a, [$d0aa] push af xor a ld [$d0aa], a ld a, [$d0af] ld l, a ld a, [$d0b0] ld h, a call Func_26d4 call Func_2841 pop af ld [$d0aa], a jp Func_27c7 ; known jump sources: 2563 (0:2563), 262d (0:262d), 26db (0:26db), 2763 (0:2763) Func_2897: ; 2897 (0:2897) ld a, l ld [$d0ad], a ld [$d0af], a ld a, h ld [$d0ae], a ld [$d0b0], a ret ; known jump sources: 5d6e (1:5d6e), 6210 (1:6210) Func_28a6: ; 28a6 (0:28a6) ld hl, $c100 call Func_28c4 ld hl, $c200 call Func_28c4 ld a, $1 ld [$c100], a ld [$c20e], a ld hl, $c104 ld [hl], $3c inc hl inc hl ld [hl], $40 ret ; known jump sources: 28a9 (0:28a9), 28af (0:28af) Func_28c4: ; 28c4 (0:28c4) ld bc, $10 xor a jp FillMemory ; known jump sources: 2071 (0:2071) Func_28cb: ; 28cb (0:28cb) ld a, [$cfc7] and a jr nz, .asm_28dc ld a, [$d72c] bit 1, a ret nz ld a, $77 ld [$FF00+$24], a ret .asm_28dc ld a, [$cfc9] and a jr z, .asm_28e7 dec a ld [$cfc9], a ret .asm_28e7 ld a, [$cfc8] ld [$cfc9], a ld a, [$FF00+$24] and a jr z, .asm_2903 ld b, a and $f dec a ld c, a ld a, b and $f0 swap a dec a swap a or c ld [$FF00+$24], a ret .asm_2903 ld a, [$cfc7] ld b, a xor a ld [$cfc7], a ld a, $ff ld [$c0ee], a call Func_23b1 ld a, [$c0f0] ld [$c0ef], a ld a, b ld [$c0ee], a jp Func_23b1 ; 2920 (0:2920) ; 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,"▶" 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 "×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,"×" 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 ; known jump sources: 466 (0:466), 68a (0:68a) Func_30fd: ; 30fd (0:30fd) ld a, [$cc57] and a ret nz ld a, [$d736] bit 1, a ret nz ld a, [$d730] and $80 ret ; known jump sources: 1038 (0:1038) Func_310e: ; 310e (0:310e) ld hl, $d736 bit 0, [hl] res 0, [hl] jr nz, .asm_3146 ld a, [$cc57] and a ret z dec a add a ld d, $0 ld e, a ld hl, $3140 add hl, de ld a, [hli] ld h, [hl] ld l, a ld a, [$FF00+$b8] push af ld a, [$cc58] ld [$FF00+$b8], a ld [$2000], a ld a, [$cf10] call CallFunctionInTable pop af ld [$FF00+$b8], a ld [$2000], a ret INCBIN "baserom.gbc",$3140,$3146 - $3140 .asm_3146 ld b, BANK(Func_1a3e0) ld hl, Func_1a3e0 jp Bankswitch ; indirect jump to Func_1a3e0 (1a3e0 (6:63e0)) ; known jump sources: 1a50d (6:650d) Func_314e: ; 314e (0:314e) ld b, BANK(Func_1a41d) ld hl, Func_1a41d jp Bankswitch ; indirect jump to Func_1a41d (1a41d (6:641d)) INCBIN "baserom.gbc",$3156,$3157 - $3156 ; known jump sources: 3162 (0:3162), 31cc (0:31cc), 330c (0:330c) Func_3157: ; 3157 (0:3157) ld a, h ld [$da30], a ld a, l ld [$da31], a ret ; known jump sources: 19f46 (6:5f46), 1a1b8 (6:61b8), 442be (11:42be), 444e8 (11:44e8), 4498f (11:498f), 45efc (11:5efc), 45ff7 (11:5ff7), 48920 (12:4920), 499d4 (12:59d4), 49d17 (12:5d17), 50cbf (14:4cbf), 513b9 (14:53b9), 515da (14:55da), 517bd (14:57bd), 51b70 (14:5b70), 51fe7 (14:5fe7), 521fd (14:61fd), 523c8 (14:63c8), 55504 (15:5504), 55664 (15:5664), 556c8 (15:56c8), 5582a (15:582a), 559df (15:59df), 55b86 (15:5b86), 55d50 (15:5d50), 55ef7 (15:5ef7), 56513 (15:6513), 590bc (16:50bc), 591c2 (16:51c2), 59342 (16:5342), 59458 (16:5458), 595ff (16:55ff), 597ba (16:57ba), 5993f (16:593f), 59ad3 (16:5ad3), 59f6a (16:5f6a), 5a148 (16:6148), 5a2bd (16:62bd), 5c39d (17:439d), 5c6c9 (17:46c9), 5ca45 (17:4a45), 5d023 (17:5023), 5d7ca (17:57ca), 5da20 (17:5a20), 606d8 (18:46d8), 60802 (18:4802), 6093e (18:493e), 60afb (18:4afb), 60d11 (18:4d11), 61119 (18:5119), 62109 (18:6109), 748b8 (1d:48b8), 7544c (1d:544c), 7618a (1d:618a), 762e5 (1d:62e5), 7643c (1d:643c) Func_3160: ; 3160 (0:3160) push af push de call Func_3157 pop hl pop af push hl ld hl, $d733 bit 4, [hl] res 4, [hl] jr z, .asm_3174 ld a, [$da39] .asm_3174 pop hl ld [$da39], a call CallFunctionInTable ld a, [$da39] ret ; known jump sources: 4892d (12:492d), 5c3aa (17:43aa), 5c6d6 (17:46d6), 5ca52 (17:4a52), 5d030 (17:5030), 748a9 (1d:48a9), 75461 (1d:5461), 75778 (1d:5778) Func_317f: ; 317f (0:317f) push de ld de, $cf5f ld bc, $11 call CopyData pop hl ld de, $cf70 ld bc, $b jp CopyData ; known jump sources: 31d0 (0:31d0), 31d5 (0:31d5), 31e7 (0:31e7), 31ef (0:31ef), 31f7 (0:31f7), 31fd (0:31fd), 3290 (0:3290), 3307 (0:3307), 331b (0:331b), 332f (0:332f) Func_3193: ; 3193 (0:3193) push de push af ld d, $0 ld e, a ld hl, $da30 ld a, [hli] ld l, [hl] ld h, a add hl, de pop af and a jr nz, .asm_31a9 ld a, [hl] ld [$cc55], a jr .asm_31c5 .asm_31a9 cp $2 jr z, .asm_31c2 cp $4 jr z, .asm_31c2 cp $6 jr z, .asm_31c2 cp $8 jr z, .asm_31c2 cp $a jr nz, .asm_31c5 ld a, [hli] ld d, [hl] ld e, a jr .asm_31c5 .asm_31c2 ld a, [hli] ld h, [hl] ld l, a .asm_31c5 pop de ret ; known jump sources: 31de (0:31de), 3299 (0:3299), 3324 (0:3324) Func_31c7: ; 31c7 (0:31c7) ld a, $10 jp Predef ; indirect jump to Func_f666 (f666 (3:7666)) ; 31cc (0:31cc) 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 Func_3219: 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 ld a, [$d730] and $1 ret nz ld [$cd6b], a ld a, [$cf13] ld [H_DOWNARROWBLINKCNT2], a ; $FF00+$8c call DisplayTextID ; known jump sources: 3216 (0:3216) Func_325d: ; 325d (0:325d) xor a ld [$cd6b], a call Func_32d7 ld hl, $d72d set 6, [hl] set 7, [hl] ld hl, $d72e set 1, [hl] ld hl, $da39 inc [hl] ret ; known jump sources: 5a349 (16:6349), 60d3a (18:4d3a), 7623f (1d:623f), 76396 (1d:6396), 764ed (1d:64ed) Func_3275: ; 3275 (0:3275) ld hl, $d126 set 5, [hl] set 6, [hl] ld hl, $d72d res 7, [hl] ld hl, $cd60 res 0, [hl] ld a, [W_ISINBATTLE] ; $d057 cp $ff jp z, Func_32c1 ld a, $2 call Func_3193 ld a, [$cc55] ld c, a ld b, $1 call Func_31c7 ld a, [$d713] cp $c8 jr nc, .asm_32b9 ld hl, $d5ce ld de, $2 ld a, [$cf13] call IsInArray inc hl ld a, [hl] ld [$cc4d], a ld a, $11 call Predef ; indirect jump to Func_f1d7 (f1d7 (3:71d7)) .asm_32b9 ld hl, $d730 bit 4, [hl] res 4, [hl] ret nz ; known jump sources: 328b (0:328b) Func_32c1: ; 32c1 (0:32c1) xor a ld [$cd6b], a ld [$FF00+$b4], a ld [$FF00+$b3], a ld [$FF00+$b2], a ld [$da39], a ret ; known jump sources: 3244 (0:3244) Func_32cf: ; 32cf (0:32cf) ld b, BANK(Func_56881) ld hl, Func_56881 jp Bankswitch ; indirect jump to Func_56881 (56881 (15:6881)) ; known jump sources: 3261 (0:3261), 196a2 (6:56a2), 48a4b (12:4a4b), 49eab (12:5eab), 514e8 (14:54e8), 5c488 (17:4488), 5c7ab (17:47ab), 5cb57 (17:4b57), 5d152 (17:5152), 622ab (18:62ab), 74abe (1d:4abe), 7556e (1d:556e), 758bf (1d:58bf) Func_32d7: ; 32d7 (0:32d7) ld a, [$cd2d] ld [W_CUROPPONENT], a ; $d059 ld [$d713], a cp $c8 ld a, [W_ENEMYMONATTACKMOD] ; $cd2e jr c, .asm_32eb ld [W_TRAINERNO], a ; $d05d ret .asm_32eb ld [W_CURENEMYLVL], a ; $d127 ret ; known jump sources: 1cde1 (7:4de1) Func_32ef: ; 32ef (0:32ef) ld hl, Func_567f9 jr asm_3301 INCBIN "baserom.gbc",$32f4,$32f9 - $32f4 ; known jump sources: 1ce15 (7:4e15), 1d072 (7:5072), 1e7e5 (7:67e5) Func_32f9: ; 32f9 (0:32f9) ld hl, $683d jr asm_3301 INCBIN "baserom.gbc",$32fe,$3301 - $32fe asm_3301: ; 3301 (0:3301) ld b, BANK(Func_567f9) jp Bankswitch ; indirect jump to Func_567f9 (567f9 (15:67f9)) ; known jump sources: 3219 (0:3219) Func_3306: ; 3306 (0:3306) xor a call Func_3193 ld d, h ld e, l .asm_330c call Func_3157 ld a, [de] ld [$cf13], a ld [$cc55], a cp $ff ret z ld a, $2 call Func_3193 ld b, $2 ld a, [$cc55] ld c, a call Func_31c7 ld a, c and a jr nz, .asm_334c push hl push de push hl xor a call Func_3193 inc hl ld a, [hl] pop hl ld [$cd3e], a ld a, [$cf13] swap a ld [W_WHICHTRADE], a ; $cd3d ld a, $39 call Predef ; indirect jump to Func_5690f (5690f (15:690f)) pop de pop hl ld a, [W_WHICHTRADE] ; $cd3d and a ret nz .asm_334c ld hl, $c add hl, de ld d, h ld e, l jr .asm_330c ; known jump sources: 3201 (0:3201), 19585 (6:5585), 19697 (6:5697), 1cdea (7:4dea), 48a40 (12:4a40), 49ea0 (12:5ea0), 510c5 (14:50c5), 514dd (14:54dd), 51ca3 (14:5ca3), 5c47d (17:447d), 5c7a0 (17:47a0), 5cb4c (17:4b4c), 5d147 (17:5147), 60602 (18:4602), 614fa (18:54fa), 622a0 (18:62a0), 74ab3 (1d:4ab3), 75563 (1d:5563), 75909 (1d:5909), 75985 (1d:5985), 75f92 (1d:5f92) Func_3354: ; 3354 (0:3354) ld a, [$FF00+$b8] ld [$d092], a ld a, h ld [$d08c], a ld a, l ld [$d08d], a ld a, d ld [$d08e], a ld a, e ld [$d08f], a ret ; known jump sources: 320f (0:320f), 1969f (6:569f), 48a48 (12:4a48), 49ea8 (12:5ea8), 514e5 (14:54e5), 56983 (15:6983), 5c485 (17:4485), 5c7a8 (17:47a8), 5cb54 (17:4b54), 5d14f (17:514f), 622a8 (18:62a8), 74abb (1d:4abb), 7556b (1d:556b), 758bc (1d:58bc) Func_336a: ; 336a (0:336a) ld hl, $d504 ld d, $0 ld a, [$cf13] dec a add a ld e, a add hl, de ld a, [hli] ld [$cd2d], a ld a, [hl] ld [W_ENEMYMONATTACKMOD], a ; $cd2e jp Func_33e8 ; known jump sources: 3c6ce (f:46ce) Func_3381: ; 3381 (0:3381) push hl ld hl, $d72d bit 7, [hl] res 7, [hl] pop hl ret z ld a, [$FF00+$b8] push af ld a, [$d092] ld [$FF00+$b8], a ld [$2000], a push hl ld b, BANK(SaveTrainerName) ld hl, SaveTrainerName call Bankswitch ; indirect jump to SaveTrainerName (27e4a (9:7e4a)) ld hl, $33cf call PrintText pop hl pop af ld [$FF00+$b8], a ld [$2000], a ld b, BANK(Func_1a5e7) ld hl, Func_1a5e7 call Bankswitch ; indirect jump to Func_1a5e7 (1a5e7 (6:65e7)) jp Func_3748 ; known jump sources: 33d4 (0:33d4) Func_33b7: ; 33b7 (0:33b7) ld a, [$cf0b] and a jr nz, .asm_33c6 ld a, [$d08c] ld h, a ld a, [$d08d] ld l, a ret .asm_33c6 ld a, [$d08e] ld h, a ld a, [$d08f] ld l, a ret INCBIN "baserom.gbc",$33cf,$33d4 - $33cf call Func_33b7 call TextCommandProcessor jp TextScriptEnd INCBIN "baserom.gbc",$33dd,$33e8 - $33dd ; known jump sources: 337e (0:337e) Func_33e8: ; 33e8 (0:33e8) ld a, [$cd2d] cp $e1 ret z cp $f2 ret z cp $f3 ret z ld a, [W_LONEATTACKNO] ; $d05c and a ret nz xor a ld [$cfc7], a ld a, $ff call Func_23b1 ld a, $1f ld [$c0ef], a ld [$c0f0], a ld a, [$cd2d] ld b, a ld hl, $3439 .asm_3411 ld a, [hli] cp $ff jr z, .asm_341d cp b jr nz, .asm_3411 ld a, $f6 jr .asm_342e .asm_341d ld hl, $3434 .asm_3420 ld a, [hli] cp $ff jr z, .asm_342c cp b jr nz, .asm_3420 ld a, $f9 jr .asm_342e .asm_342c ld a, $fc .asm_342e ld [$c0ee], a jp Func_23b1 INCBIN "baserom.gbc",$3434,$3442 - $3434 ; known jump sources: 345e (0:345e), 748f6 (1d:48f6) Func_3442: ; 3442 (0:3442) ld a, [hli] cp $ff ret z cp b jr nz, .asm_345b ld a, [hli] cp c jr nz, .asm_345c ld a, [hli] ld d, [hl] ld e, a ld hl, $ccd3 call Func_350c dec a ld [$cd38], a ret .asm_345b inc hl .asm_345c inc hl inc hl jr Func_3442 ; known jump sources: 299f (0:299f) Func_3460: ; 3460 (0:3460) call Func_36f4 ld b, BANK(Func_78e6) ld hl, Func_78e6 jr asm_3479 ; known jump sources: 29a4 (0:29a4) Func_346a: ; 346a (0:346a) call Func_36f4 ld b, $8 ld hl, $54c2 jr asm_3479 ; 3474 (0:3474) FuncTX_F7: ; 3474 ; XXX find a better name for this function ; special_F7 ld b,BANK(CeladonPrizeMenu) ld hl,CeladonPrizeMenu asm_3479: call Bankswitch jp $29DF ; continue to main text-engine function ; known jump sources: 29a9 (0:29a9) Func_347f: ; 347f (0:347f) ld b, $5 ld hl, $7e2c jr asm_3479 ; known jump sources: 190cf (6:50cf), 1981a (6:581a), 19845 (6:5845), 1a402 (6:6402), 1a6b7 (6:66b7), 1ca63 (7:4a63), 1cbb2 (7:4bb2), 1cc64 (7:4c64), 1d4b2 (7:54b2), 1e6ca (7:66ca), 49705 (12:5705), 498bd (12:58bd), 512e9 (14:52e9), 51402 (14:5402), 5a36d (16:636d), 5a51f (16:651f), 5c1ea (17:41ea), 748fe (1d:48fe), 752b1 (1d:52b1), 75f5a (1d:5f5a), 760ab (1d:60ab), 761d6 (1d:61d6), 76217 (1d:6217), 7632d (1d:632d), 7636e (1d:636e), 76484 (1d:6484), 764c5 (1d:64c5) Func_3486: ; 3486 (0:3486) xor a ld [$cd3b], a ld [$c206], a ld hl, $d730 set 7, [hl] ret ; 3493 (0:3493) 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,$34a6 - $349b ; known jump sources: 18eda (6:4eda), 19564 (6:5564), 1cbbc (7:4bbc), 1cbc6 (7:4bc6), 1cbe9 (7:4be9), 1cc43 (7:4c43), 1cc4d (7:4c4d), 1cd13 (7:4d13), 1cd54 (7:4d54), 1cd7a (7:4d7a), 1ce1f (7:4e1f), 1cf05 (7:4f05), 1cf0f (7:4f0f), 1cf7a (7:4f7a), 50ef8 (14:4ef8), 510aa (14:50aa), 51104 (14:5104), 51ce7 (14:5ce7), 5a540 (16:6540), 6054e (18:454e), 6142d (18:542d), 62224 (18:6224), 7602d (1d:602d), 76037 (1d:6037), 7604f (1d:604f), 76066 (1d:6066) Func_34a6: ; 34a6 (0:34a6) call Func_34ae ld c, $6 jp DelayFrames ; known jump sources: 34a6 (0:34a6) Func_34ae: ; 34ae (0:34ae) ld a, $9 ld [H_DOWNARROWBLINKCNT1], a ; $FF00+$8b call Func_34fc ld a, [$FF00+$8d] ld [hl], a ret INCBIN "baserom.gbc",$34b9,$34bf - $34b9 ; 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: ; 0x34bf ld a,[W_YCOORD] ld b,a ld a,[W_XCOORD] ld c,a ; fallthrough CheckCoords: ; 0x34c7 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 ; tests if a boulder's coordinates are in a specified array ; INPUT: ; hl = address of array ; ff8c = which boulder to check? XXX ; OUTPUT: ; [$cd3d] = if there is match, the matching array index ; sets carry if the coordinates are in the array, clears carry if not CheckBoulderCoords: ; 0x34e4 push hl ld hl, $c204 ld a, [$ff00+$8c] swap a ld d, $0 ld e, a add hl, de ld a, [hli] sub $4 ; because sprite coordinates are offset by 4 ld b, a ld a, [hl] sub $4 ; because sprite coordinates are offset by 4 ld c, a pop hl jp CheckCoords ; 0x34fc ; known jump sources: 34b2 (0:34b2), 1ccd8 (7:4cd8), 1d15f (7:515f), 1d16c (7:516c), 1d235 (7:5235) Func_34fc: ; 34fc (0:34fc) ld h, $c1 jr asm_3502 ; known jump sources: 19530 (6:5530) Func_3500: ; 3500 (0:3500) ld h, $c2 asm_3502: ; 3502 (0:3502) ld a, [H_DOWNARROWBLINKCNT1] ; $FF00+$8b ld b, a ld a, [H_DOWNARROWBLINKCNT2] ; $FF00+$8c swap a add b ld l, a ret ; known jump sources: 3453 (0:3453), 1a4bc (6:64bc), 1a4c9 (6:64c9), 1cbab (7:4bab), 1d4ab (7:54ab), 5a366 (16:6366), 5a518 (16:6518), 75f53 (1d:5f53), 760a4 (1d:60a4) Func_350c: ; 350c (0:350c) xor a ld [$ccd2], a .asm_3510 ld a, [de] cp $ff jr z, .asm_352b ld [H_DOWNARROWBLINKCNT1], a ; $FF00+$8b inc de ld a, [de] ld b, $0 ld c, a ld a, [$ccd2] add c ld [$ccd2], a ld a, [H_DOWNARROWBLINKCNT1] ; $FF00+$8b call FillMemory inc de jr .asm_3510 .asm_352b ld a, $ff ld [hl], a ld a, [$ccd2] inc a ret INCBIN "baserom.gbc",$3533,$3541 - $3533 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 ; known jump sources: 3ef5b (f:6f5b) Func_3566: ; 3566 (0:3566) call Func_359e ld a, [W_ISLINKBATTLE] ; $d12b and a jr nz, .asm_3594 ld a, $e call BankswitchHome ld a, [W_TRAINERCLASS] ; $d031 dec a ld hl, $5914 ld bc, $5 call AddNTimes ld de, $d033 ld a, [hli] ld [de], a inc de ld a, [hli] ld [de], a ld de, $d046 ld a, [hli] ld [de], a inc de ld a, [hli] ld [de], a jp BankswitchBack .asm_3594 ld hl, $d033 ld de, $6ede ld [hl], e inc hl ld [hl], d ret ; known jump sources: 3566 (0:3566) Func_359e: ; 359e (0:359e) ld b, BANK(Func_13a58) ld hl, Func_13a58 jp Bankswitch ; indirect jump to Func_13a58 (13a58 (4:7a58)) ; known jump sources: 40ce (1:40ce), 5c196 (17:4196), 74f49 (1d:4f49), 752ec (1d:52ec) Func_35a6: ; 35a6 (0:35a6) ld de, W_PLAYERMONEY3 ; $d347 ld hl, $ff9f ld c, $3 jp StringCmp INCBIN "baserom.gbc",$35b1,$35bc - $35b1 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: ; 0x35d6 ; 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 ; known jump sources: 7232 (1:7232), 1d1bb (7:51bb), 1da18 (7:5a18), 1e844 (7:6844), 1e924 (7:6924), 1ea92 (7:6a92), 21691 (8:5691), 48581 (12:4581), 49f35 (12:5f35), 5208e (14:608e), 56083 (15:6083), 59c28 (16:5c28), 5c184 (17:4184), 5c1ff (17:41ff), 6107d (18:507d), 71b44 (1c:5b44), 738a7 (1c:78a7), 750de (1d:50de), 752d7 (1d:52d7), 75374 (1d:5374) Func_35ec: ; 35ec (0:35ec) call Func_3719 call Func_35ff jr asm_3628 INCBIN "baserom.gbc",$35f4,$35ff - $35f4 ; known jump sources: 35ef (0:35ef) Func_35ff: ; 35ff (0:35ff) xor a ld [$d12c], a ld hl, $c43a ld bc, $80f ret ; known jump sources: 7000 (1:7000) Func_360a: ; 360a (0:360a) call Func_3719 ld a, $6 ld [$d12c], a ld hl, $c423 ld bc, $80c jr asm_3628 INCBIN "baserom.gbc",$361a,$3628 - $361a asm_3628: ; 3628 (0:3628) ld a, $14 ld [$d125], a call DisplayTextBoxID jp Func_3725 ; known jump sources: f8cd (3:78cd), f8df (3:78df), f943 (3:7943), f96e (3:796e), 568a2 (15:68a2), 568b6 (15:68b6), 568cc (15:68cc), 568e2 (15:68e2), 56954 (15:6954), 56967 (15:6967) Func_3633: ; 3633 (0:3633) sub b ret nc cpl add $1 scf ret ; 363a (0:363a) 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 Func_363d: 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 ; known jump sources: f964 (3:7964), f98d (3:798d) Func_366b: ; 366b (0:366b) push hl ld hl, $ffe7 xor a ld [hld], a ld a, [hld] and a jr z, .asm_367e ld a, [hli] .asm_3676 sub [hl] jr c, .asm_367e inc hl inc [hl] dec hl jr .asm_3676 .asm_367e pop hl ret ; 3680 (0:3680) ; 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,FontGraphics ld de,$8800 ld bc,(BANK(FontGraphics) << 8 | $00) ld a,$04 jp FarCopyDataDouble ; if LCD is off, transfer all at once .lcdEnabled ld de,FontGraphics ld hl,$8800 ld bc,(BANK(FontGraphics) << 8 | $80) 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,TextBoxGraphics ld de,$9600 ld bc,$0200 ld a,BANK(TextBoxGraphics) jp FarCopyData2 ; if LCD is off, transfer all at once .lcdEnabled ld de,TextBoxGraphics ld hl,$9600 ld bc,(BANK(TextBoxGraphics) << 8 | $20) 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,HpBarAndStatusGraphics ld de,$9620 ld bc,$01e0 ld a,BANK(HpBarAndStatusGraphics) jp FarCopyData2 ; if LCD is off, transfer all at once .lcdEnabled ld de,HpBarAndStatusGraphics ld hl,$9620 ld bc,(BANK(HpBarAndStatusGraphics) << 8 | $1e) jp CopyVideoData ; if LCD is on, transfer during V-blank ;Fills memory range with the specified byte. ;input registers a = fill_byte, bc = length, hl = address FillMemory: ;36E0 push de ld d, a .loop ld a, d ldi [hl], a dec bc ld a, b or c jr nz, .loop pop de ret ; known jump sources: 62a6 (1:62a6), 3eca0 (f:6ca0), 3f05d (f:705d), 70343 (1c:4343), 7035d (1c:435d) Func_36eb: ; 36eb (0:36eb) ld hl, $d0ab ld [hl], e inc hl ld [hl], d jp Func_24fd ; known jump sources: 2b44 (0:2b44), 3460 (0:3460), 346a (0:346a), 438f (1:438f), efae (3:6fae), 17e2c (5:7e2c), 1da57 (7:5a57), 1e915 (7:6915), 213cb (8:53cb), 3cffd (f:4ffd), 3d0ce (f:50ce), 71ad9 (1c:5ad9) Func_36f4: ; 36f4 (0:36f4) ld hl, $c3a0 ld de, $cd81 ld bc, $168 call CopyData ret ; known jump sources: 3dc9 (0:3dc9), 4392 (1:4392), 43ac (1:43ac), 4423 (1:4423), 7917 (1:7917), 7981 (1:7981), e1b4 (3:61b4), efbd (3:6fbd), 1309a (4:709a), 13333 (4:7333), 13488 (4:7488), 13607 (4:7607), 17e42 (5:7e42), 1e938 (7:6938), 2159f (8:559f), 3d0f9 (f:50f9), 71cab (1c:5cab) Func_3701: ; 3701 (0:3701) call Func_3709 ld a, $1 ld [H_AUTOBGTRANSFERENABLED], a ; $FF00+$ba ret ; known jump sources: 3701 (0:3701), 132fc (4:72fc), 214fa (8:54fa) Func_3709: ; 3709 (0:3709) xor a ld [H_AUTOBGTRANSFERENABLED], a ; $FF00+$ba ld hl, $cd81 ld de, $c3a0 ld bc, $168 call CopyData ret ; known jump sources: 35ec (0:35ec), 360a (0:360a), 43a5 (1:43a5), 5c19 (1:5c19), 64eb (1:64eb), 6c86 (1:6c86), 6d18 (1:6d18), 6d36 (1:6d36), 6e43 (1:6e43), 6fe6 (1:6fe6), 78f0 (1:78f0), 130d7 (4:70d7), 217a3 (8:57a3), 3c14c (f:414c), 3c1dc (f:41dc), 3c246 (f:4246), 3c5fa (f:45fa), 3c79e (f:479e), 3c955 (f:4955), 3ca73 (f:4a73), 3cb57 (f:4b57), 3cb65 (f:4b65), 3cb92 (f:4b92), 3ccf7 (f:4cf7), 3cec2 (f:4ec2), 3d1eb (f:51eb), 3d56b (f:556b), 3effc (f:6ffc), 553f4 (15:53f4), 5dbe3 (17:5be3), 740ce (1d:40ce) Func_3719: ; 3719 (0:3719) ld hl, $c3a0 ld de, $c508 ld bc, $168 jp CopyData ; known jump sources: 3630 (0:3630), 42a0 (1:42a0), 43f4 (1:43f4), 5cdd (1:5cdd), 653e (1:653e), 6c89 (1:6c89), 6d39 (1:6d39), 6dc8 (1:6dc8), 6f82 (1:6f82), 700c (1:700c), 7051 (1:7051), d6be (3:56be), e129 (3:6129), e507 (3:6507), e58e (3:658e), 1310c (4:710c), 217bd (8:57bd), 3c157 (f:4157), 3c171 (f:4171), 3c1d1 (f:41d1), 3c1fa (f:41fa), 3c202 (f:4202), 3c29d (f:429d), 3c684 (f:4684), 3c825 (f:4825), 3ca23 (f:4a23), 3cae9 (f:4ae9), 3cb74 (f:4b74), 3ceb3 (f:4eb3), 3cfde (f:4fde), 3d00e (f:500e), 3d0a9 (f:50a9), 3d0e0 (f:50e0), 3d1b1 (f:51b1), 3d1fa (f:51fa), 3d3a8 (f:53a8), 3d571 (f:5571), 3f011 (f:7011), 55411 (15:5411), 5dc0f (17:5c0f), 740f8 (1d:40f8) Func_3725: ; 3725 (0:3725) xor a ld [H_AUTOBGTRANSFERENABLED], a ; $FF00+$ba ld hl, $c508 ld de, $c3a0 ld bc, $168 call CopyData ld a, $1 ld [H_AUTOBGTRANSFERENABLED], a ; $FF00+$ba ret ; 3739 (0:3739) DelayFrames: ; 3739 ; wait n frames, where n is the value in c call DelayFrame dec c jr nz,DelayFrames ret ; known jump sources: 2bb5 (0:2bb5), 6db9 (1:6db9), 6fd0 (1:6fd0), 724d (1:724d), dc9d (3:5c9d), dd91 (3:5d91), ddc3 (3:5dc3), e520 (3:6520), 1dbee (7:5bee), 215e0 (8:55e0), 21655 (8:5655), 22308 (8:6308), 3a69d (e:669d), 3ae24 (e:6e24), 3c21b (f:421b), 3c5bf (f:45bf), 3c6f4 (f:46f4), 3cb86 (f:4b86), 5c1d2 (17:41d2), 73902 (1c:7902), 740a1 (1d:40a1), 7677b (1d:677b), 7d14f (1f:514f) Func_3740: ; 3740 (0:3740) push af call Func_3748 pop af jp Func_23b1 ; known jump sources: 13d6 (0:13d6), 1c51 (0:1c51), 2307 (0:2307), 2bb8 (0:2bb8), 33b4 (0:33b4), 3741 (0:3741), 442c (1:442c), 445f (1:445f), 6dbc (1:6dbc), 7248 (1:7248), 7979 (1:7979), 79fe (1:79fe), 7a06 (1:7a06), 7a7b (1:7a7b), 7a83 (1:7a83), e1ce (3:61ce), 1364b (4:764b), 13847 (4:7847), 17e3a (5:7e3a), 17ead (5:7ead), 17ec5 (5:7ec5), 17ed7 (5:7ed7), 17ee9 (5:7ee9), 17f18 (5:7f18), 1eab8 (7:6ab8), 1eac0 (7:6ac0), 1eaf7 (7:6af7), 1eaff (7:6aff), 1eb9f (7:6b9f), 1ebac (7:6bac), 1ebb9 (7:6bb9), 1ebc6 (7:6bc6), 1ebfa (7:6bfa), 21597 (8:5597), 215f2 (8:55f2), 21667 (8:5667), 216a1 (8:56a1), 3ae27 (e:6e27), 3c5ce (f:45ce), 3c760 (f:4760), 3cb8f (f:4b8f), 45f30 (11:5f30), 58e37 (16:4e37), 5c1d5 (17:41d5), 5decd (17:5ecd), 5ded5 (17:5ed5), 5def4 (17:5ef4), 5defc (17:5efc), 5df07 (17:5f07), 5df0f (17:5f0f), 60c0e (18:4c0e), 73905 (1c:7905), 75810 (1d:5810), 75818 (1d:5818), 7677e (1d:677e), 78d62 (1e:4d62), 78d90 (1e:4d90), 79e6a (1e:5e6a), 7be4c (1e:7e4c) Func_3748: ; 3748 (0:3748) ld a, [$d083] and $80 ret nz push hl .asm_374f ld hl, $c02a xor a or [hl] inc hl or [hl] inc hl inc hl or [hl] jr nz, .asm_374f pop hl ret ; 375d (0:375d) 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 ; known jump sources: 2cdc (0:2cdc), 2ee0 (0:2ee0) Func_37df: ; 37df (0:37df) ld a, [$FF00+$b8] push af ld a, [W_LISTMENUID] ; $cf94 cp $1 ld a, $1 jr nz, .asm_37ed ld a, $f .asm_37ed ld [$FF00+$b8], a ld [$2000], a ld hl, $cf8f ld a, [hli] ld h, [hl] ld l, a ld a, [$cf91] cp $c4 jr nc, .asm_3812 ld bc, $3 .asm_3802 add hl, bc dec a jr nz, .asm_3802 dec hl ld a, [hld] ld [$FF00+$8d], a ld a, [hld] ld [H_DOWNARROWBLINKCNT2], a ; $FF00+$8c ld a, [hl] ld [H_DOWNARROWBLINKCNT1], a ; $FF00+$8b jr .asm_381c .asm_3812 ld a, $1e ld [$FF00+$b8], a ld [$2000], a call Func_7bf86 .asm_381c ld de, H_DOWNARROWBLINKCNT1 ; $ff8b pop af ld [$FF00+$b8], a ld [$2000], a ret ; known jump sources: 2d14 (0:2d14), 3e43 (0:3e43), 6d77 (1:6d77), e37a (3:637a), e49c (3:649c), e710 (3:6710), e73f (3:673f), 1338d (4:738d), 3adcc (e:6dcc), 3afa9 (e:6fa9), 3d068 (f:5068), 3da2a (f:5a2a), 3e341 (f:6341), 3e728 (f:6728), 3eaab (f:6aab), 3eafe (f:6afe), 610f4 (18:50f4) Func_3826: ; 3826 (0:3826) ld hl, $cf4b .asm_3829 ld a, [de] inc de ld [hli], a cp $50 jr nz, .asm_3829 ret ; 3831 (0:3831) ; 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 ; known jump sources: 29dc (0:29dc), 389f (0:389f), dddc (3:5ddc), defc (3:5efc), e56e (3:656e), 12a77 (4:6a77), 12c71 (4:6c71), 1347f (4:747f), 441b3 (11:41b3), 5540e (15:540e), 5a507 (16:6507), 5dc0c (17:5c0c), 70f7f (1c:4f7f), 765eb (1d:65eb), 76784 (1d:6784) Func_3865: ; 3865 (0:3865) ld a, [H_DOWNARROWBLINKCNT1] ; $FF00+$8b push af ld a, [H_DOWNARROWBLINKCNT2] ; $FF00+$8c push af xor a ld [H_DOWNARROWBLINKCNT1], a ; $FF00+$8b ld a, $6 ld [H_DOWNARROWBLINKCNT2], a ; $FF00+$8c .asm_3872 push hl ld a, [$d09b] and a jr z, .asm_387c call $56c6 .asm_387c ld hl, $c4f2 call HandleDownArrowBlinkTiming pop hl call GetJoypadStateLowSensitivity ld a, $2d call Predef ; indirect jump to Func_5a5f (5a5f (1:5a5f)) ld a, [$FF00+$b5] and $3 jr z, .asm_3872 pop af ld [H_DOWNARROWBLINKCNT2], a ; $FF00+$8c pop af ld [H_DOWNARROWBLINKCNT1], a ; $FF00+$8b ret ; known jump sources: 1aa5 (0:1aa5), 1abd (0:1abd), 1ade (0:1ade), 1b01 (0:1b01), 1bda (0:1bda), 1c9b (0:1c9b) Func_3898: ; 3898 (0:3898) ld a, [W_ISLINKBATTLE] ; $d12b cp $4 jr z, .asm_38a7 call Func_3865 ld a, $90 jp Func_23b1 .asm_38a7 ld c, $41 jp DelayFrames ; 38ac (0:38ac) ; 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 ; known jump sources: de80 (3:5e80), f46e (3:746e), f661 (3:7661), 1296e (4:696e), 3ae69 (e:6e69), 3eb46 (f:6b46), 55382 (15:5382) Func_3936: ; 3936 (0:3936) ld c, $0 .asm_3938 inc c call Func_394a ld a, [$FF00+$97] ld [de], a inc de ld a, [$FF00+$98] ld [de], a inc de ld a, c cp $5 jr nz, .asm_3938 ret ; known jump sources: 3939 (0:3939), f3c4 (3:73c4), 3df60 (f:5f60) Func_394a: ; 394a (0:394a) push hl push de push bc ld a, b ld d, a push hl ld hl, $d0b8 ld b, $0 add hl, bc ld a, [hl] ld e, a pop hl push hl sla c ld a, d and a jr z, .asm_397f add hl, bc .asm_3961 xor a ld [H_NUMTOPRINT], a ; $FF00+$96 (aliases: H_MULTIPLICAND) ld [$FF00+$97], a inc b ld a, b cp $ff jr z, .asm_397f ld [$FF00+$98], a ld [H_REMAINDER], a ; $FF00+$99 (aliases: H_DIVISOR, H_MULTIPLIER, H_POWEROFTEN) call Multiply ld a, [hld] ld d, a ld a, [$FF00+$98] sub d ld a, [hli] ld d, a ld a, [$FF00+$97] sbc d jr c, .asm_3961 .asm_397f srl c pop hl push bc ld bc, $b add hl, bc pop bc ld a, c cp $2 jr z, .asm_39bf cp $3 jr z, .asm_39c6 cp $4 jr z, .asm_39cb cp $5 jr z, .asm_39d3 push bc ld a, [hl] swap a and $1 sla a sla a sla a ld b, a ld a, [hli] and $1 sla a sla a add b ld b, a ld a, [hl] swap a and $1 sla a add b ld b, a ld a, [hl] and $1 add b pop bc jr .asm_39d7 .asm_39bf ld a, [hl] swap a and $f jr .asm_39d7 .asm_39c6 ld a, [hl] and $f jr .asm_39d7 .asm_39cb inc hl ld a, [hl] swap a and $f jr .asm_39d7 .asm_39d3 inc hl ld a, [hl] and $f .asm_39d7 ld d, $0 add e ld e, a jr nc, .asm_39de inc d .asm_39de sla e rl d srl b srl b ld a, b add e jr nc, .asm_39eb inc d .asm_39eb ld [$FF00+$98], a ld a, d ld [$FF00+$97], a xor a ld [H_NUMTOPRINT], a ; $FF00+$96 (aliases: H_MULTIPLICAND) ld a, [W_CURENEMYLVL] ; $d127 ld [H_REMAINDER], a ; $FF00+$99 (aliases: H_DIVISOR, H_MULTIPLIER, H_POWEROFTEN) call Multiply ld a, [H_NUMTOPRINT] ; $FF00+$96 (aliases: H_MULTIPLICAND) ld [H_DIVIDEND], a ; $FF00+$95 (aliases: H_PRODUCT, H_PASTLEADINGZEROES, H_QUOTIENT) ld a, [$FF00+$97] ld [H_NUMTOPRINT], a ; $FF00+$96 (aliases: H_MULTIPLICAND) ld a, [$FF00+$98] ld [$FF00+$97], a ld a, $64 ld [H_REMAINDER], a ; $FF00+$99 (aliases: H_DIVISOR, H_MULTIPLIER, H_POWEROFTEN) ld a, $3 ld b, a call Divide ld a, c cp $1 ld a, $5 jr nz, .asm_3a2a ld a, [W_CURENEMYLVL] ; $d127 ld b, a ld a, [$FF00+$98] add b ld [$FF00+$98], a jr nc, .asm_3a28 ld a, [$FF00+$97] inc a ld [$FF00+$97], a .asm_3a28 ld a, $a .asm_3a2a ld b, a ld a, [$FF00+$98] add b ld [$FF00+$98], a jr nc, .asm_3a37 ld a, [$FF00+$97] inc a ld [$FF00+$97], a .asm_3a37 ld a, [$FF00+$97] cp $4 jr nc, .asm_3a47 cp $3 jr c, .asm_3a4f ld a, [$FF00+$98] cp $e8 jr c, .asm_3a4f .asm_3a47 ld a, $3 ld [$FF00+$97], a ld a, $e7 ld [$FF00+$98], a .asm_3a4f pop bc pop de pop hl ret INCBIN "baserom.gbc",$3a53,$3a68 - $3a53 ; known jump sources: 215e8 (8:55e8), 2165c (8:565c) Func_3a68: ; 3a68 (0:3a68) ld a, [$FF00+$b8] push af ld a, $3 ld [$FF00+$b8], a ld [$2000], a call Func_f51e pop bc ld a, b ld [$FF00+$b8], a ld [$2000], a ret ; known jump sources: 15bc (0:15bc), 7b9a (1:7b9a), f318 (3:7318), f332 (3:7332), f5ce (3:75ce), f5e9 (3:75e9), f60c (3:760c), f627 (3:7627), 12a92 (4:6a92), 136d8 (4:76d8), 136eb (4:76eb), 13706 (4:7706), 13719 (4:7719), 3cbe9 (f:4be9), 3cc56 (f:4c56) Func_3a7d: ; 3a7d (0:3a7d) and a ret z ld bc, $b .asm_3a82 add hl, bc dec a jr nz, .asm_3a82 ret ; 3a87 (0:3a87) 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,"▶" ; 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,"▶" ; 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,"▶" ; 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]," " 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," " 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: ; 0x3c3c xor a jr AutoTextBoxDrawingCommon DisableAutoTextBoxDrawing: ; 0x3c3f ld a,$01 AutoTextBoxDrawingCommon: ; 0x3c41 ld [$cf0c],a ; control text box drawing xor a ld [$cc3c],a ; make DisplayTextID wait for button press ret PrintText: ; 0x3c49 ; 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 Func_3c59: 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: ; 0x3c5f 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 ; known jump sources: 656e (1:656e), ef9e (3:6f9e), 130ce (4:70ce), 132d9 (4:72d9), 133f9 (4:73f9), 1da79 (7:5a79), 71ca5 (1c:5ca5) Func_3dbe: ; 3dbe (0:3dbe) call CleanLCD_OAM ld a, $1 ld [$cfcb], a call Func_3e08 call Func_3701 call LoadTextBoxTilePatterns call GoPAL_SET_CF1C jr Delay3 ; 3dd4 (0:3dd4) ; calls GBPalWhiteOut and then Delay3 GBPalWhiteOutWithDelay3: ; 3DD4 call GBPalWhiteOut Delay3: ; 0x3dd7 ; 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 ; known jump sources: 129eb (4:69eb), 12ed1 (4:6ed1), 3ce91 (f:4e91) Func_3df9: ; 3df9 (0:3df9) ld a, e cp $1b ld d, $0 jr nc, .asm_3e06 cp $a inc d jr nc, .asm_3e06 inc d .asm_3e06 ld [hl], d ret ; known jump sources: 3dc6 (0:3dc6), 653b (1:653b) Func_3e08: ; 3e08 (0:3e08) ld hl, $cfc4 ld a, [hl] push af res 0, [hl] push hl xor a ld [W_SPRITESETID], a ; $d3a8 call DisableLCD ld b, BANK(InitMapSprites) ld hl, InitMapSprites call Bankswitch ; indirect jump to InitMapSprites (1785b (5:785b)) call EnableLCD pop hl pop af ld [hl], a call LoadPlayerSpriteGraphics call LoadFontTilePatterns jp Func_2429 ; 3e2e (0:3e2e) 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: ; 0x3e5c ; 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: ; 0x3e6d ; 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 ;loads hl from cc4f, de from cc51, and bc from cc53 Load16BitRegisters: ;3e94 ld a, [$cc4f] ld h, a ld a, [$cc50] ld l, a ld a, [$cc51] ld d, a ld a, [$cc52] ld e, a ld a, [$cc53] ld b, a ld a, [$cc54] ld c, a ret ; 0x3ead ; known jump sources: 75769 (1d:5769), 75837 (1d:5837) Func_3ead: ; 3ead (0:3ead) ld b, BANK(Func_1eb0a) ld hl, Func_1eb0a jp Bankswitch ; indirect jump to Func_1eb0a (1eb0a (7:6b0a)) ; known jump sources: 46b (0:46b) Func_3eb5: ; 3eb5 (0:3eb5) ld a, [$FF00+$b8] push af ld a, [$FF00+$b4] bit 0, a jr z, .asm_3eea ld a, $11 ld [$2000], a ld [$FF00+$b8], a call Func_469a0 ld a, [$FF00+$ee] and a jr nz, .asm_3edd ld a, [$cd3e] ld [$2000], a ld [$FF00+$b8], a ld de, $3eda push de jp [hl] xor a jr .asm_3eec .asm_3edd ld b, BANK(Func_fb50) ld hl, Func_fb50 call Bankswitch ; indirect jump to Func_fb50 (fb50 (3:7b50)) ld a, [$FF00+$db] and a jr z, .asm_3eec .asm_3eea ld a, $ff .asm_3eec ld [$FF00+$eb], a pop af ld [$2000], a ld [$FF00+$b8], a ret ; known jump sources: fb74 (3:7b74), 1ea22 (7:6a22), 1eb88 (7:6b88), 1eb92 (7:6b92), 1ebd9 (7:6bd9), 526ab (14:66ab), 526e0 (14:66e0), 5dbba (17:5bba), 5dbd0 (17:5bd0), 5de0e (17:5e0e), 5de7a (17:5e7a), 62526 (18:6526), 766b5 (1d:66b5) Func_3ef5: ; 3ef5 (0:3ef5) ld [H_DOWNARROWBLINKCNT2], a ; $FF00+$8c ld hl, $3f22 call Func_3f0f ld hl, $cf11 set 0, [hl] call DisplayTextID ; known jump sources: 738f4 (1c:78f4) Func_3f05: ; 3f05 (0:3f05) ld hl, W_MAPTEXTPTR ; $d36c ld a, [$FF00+$ec] ld [hli], a ld a, [$FF00+$ed] ld [hl], a ret ; known jump sources: 3efa (0:3efa), 738fd (1c:78fd) Func_3f0f: ; 3f0f (0:3f0f) ld a, [W_MAPTEXTPTR] ; $d36c ld [$FF00+$ec], a ld a, [$d36d] ld [$FF00+$ed], a ld a, l ld [W_MAPTEXTPTR], a ; $d36c ld a, h ld [$d36d], a ret ; 3f22 (0:3f22) ; 0x3F22 dw $66ee dw $66f8 dw $5b8e dw $5b81 dw $6960 dw $697e dw $6983 dw $6cbd dw $5bbe dw $5ba8 dw $5bd4 dw $6453 dw $6458 dw $6511 dw $64a3 dw $64a8 dw $64ad dw $64b2 dw $64d0 dw $64d5 dw $6502 dw $64da dw $64df dw $64e4 dw $64b7 dw $64bc dw $64c1 dw $64c6 dw $64cb dw $6508 dw $6529 dw $69aa dw $5ced dw $5865 dw $5878 dw FoundHiddenItemText dw HiddenItemBagFullText dw $5df7 dw $6a3d dw $7e79 dw $7e7e dw $7e83 dw FoundHiddenCoinsText dw DroppedHiddenCoinsText dw $6bdd dw $6be2 dw $6c05 dw $6b69 dw $6a25 dw $7f37 dw $7f32 dw $5c29 dw $69a4 dw $6a2a dw $6a10 dw $6a1d dw $6953 dw $7bbf dw $5ec8 dw $5edb dw $5eef dw $5f02 dw $7c12 dw $7be8 dw $7c0d dw $7c45 SECTION "bank1",DATA,BANK[$1] INCBIN "baserom.gbc",$4000,$40b0 - $4000 ; known jump sources: 945 (0:945) Func_40b0: ; 40b0 (1:40b0) xor a ld [$cf0b], a ld [$d700], a ld [W_ISINBATTLE], a ; $d057 ld [$d35d], a ld [$cf10], a ld [$FF00+$b4], a ld [$cc57], a ld [$cd60], a ld [$FF00+$9f], a ld [$FF00+$a0], a ld [$FF00+$a1], a call Func_35a6 jr c, .asm_40ff ld a, [W_PLAYERMONEY3] ; $d347 ld [$FF00+$9f], a ld a, [W_PLAYERMONEY2] ; $d348 ld [$FF00+$a0], a ld a, [W_PLAYERMONEY1] ; $d349 ld [$FF00+$a1], a xor a ld [$FF00+$a2], a ld [$FF00+$a3], a ld a, $2 ld [$FF00+$a4], a ld a, $d call Predef ; indirect jump to Func_f71e (f71e (3:771e)) ld a, [$FF00+$a2] ld [W_PLAYERMONEY3], a ; $d347 ld a, [$FF00+$a3] ld [W_PLAYERMONEY2], a ; $d348 ld a, [$FF00+$a4] ld [W_PLAYERMONEY1], a ; $d349 .asm_40ff ld hl, $d732 set 2, [hl] res 3, [hl] set 6, [hl] ld a, $ff ld [$cd6b], a ld a, $7 jp Predef ; indirect jump to HealParty (f6a5 (3:76a5)) ; 4112 (1:4112) 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 ; known jump sources: 3c17f (f:417f) Func_4277: ; 4277 (1:4277) ld hl, $cce9 ld a, [hl] and a jr z, .asm_4284 dec [hl] ld hl, $42a7 jr .asm_429f .asm_4284 dec hl ld a, [hl] and a ret z dec [hl] ld hl, $42ac jr nz, .asm_429f push hl ld a, [$cfe5] ld [$d0b5], a call GetBaseStats ld a, [$d0c0] ld [$d007], a pop hl .asm_429f push hl call Func_3725 pop hl jp PrintText ; 42a7 (1:42a7) UnnamedText_42a7: ; 0x42a7 TX_FAR SafariZoneEatingText db $50 ; 0x42a7 + 5 bytes UnnamedText_42ac: ; 0x42ac TX_FAR SafariZoneAngryText db $50 ; 0x42ac + 5 bytes ; known jump sources: 42bd (1:42bd), 42c6 (1:42c6) Func_42b1: ; 42b1 (1:42b1) ld bc, $b jp CopyData ld hl, $45aa ld de, W_PLAYERNAME ; $d158 call Func_42b1 ld hl, $45b1 ld de, W_RIVALNAME ; $d34a call Func_42b1 xor a ld [$FF00+$b0], a ld [$d358], a ld hl, $d732 ld [hli], a ld [hli], a ld [hl], a ld a, $1f ld [$c0ef], a ld [$c0f0], a ; known jump sources: 5526 (1:5526), 5b89 (1:5b89) Func_42dd: ; 42dd (1:42dd) call GBPalWhiteOut ld a, $1 ld [H_AUTOBGTRANSFERENABLED], a ; $FF00+$ba xor a ld [$FF00+$d7], a ld [$FF00+$ae], a ld a, $40 ld [$FF00+$af], a ld a, $90 ld [$FF00+$b0], a call ClearScreen call DisableLCD call LoadFontTilePatterns ld hl, $60c8 ld de, $9410 ld bc, $50 ld a, $4 call FarCopyData2 ld hl, $61f8 ld de, $9460 ld bc, $90 ld a, $4 call FarCopyData2 ld hl, $5380 ld de, $8800 ld bc, $600 ld a, $4 call FarCopyData2 ld hl, $5980 ld de, $9310 ld bc, $100 ld a, $4 call FarCopyData2 ld hl, $402f ; 4335 (1:4335) ; 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 ld a, $1a call FarCopyDataDouble call Func_4519 ld hl, $c3b6 ld a, $80 ld de, $14 ld c, $6 .asm_434d ld b, $10 push hl .asm_4350 ld [hli], a inc a dec b jr nz, .asm_4350 pop hl add hl, de dec c jr nz, .asm_434d ld hl, $c42e ld a, $31 ld b, $10 .asm_4361 ld [hli], a inc a dec b jr nz, .asm_4361 call Func_44dd ld hl, $c328 ld a, $74 ld [hl], a ld hl, $c4f6 ld de, $437f ld b, $10 .asm_4377 ld a, [de] ld [hli], a inc de dec b jr nz, .asm_4377 jr .asm_438f INCBIN "baserom.gbc",$437f,$438f - $437f .asm_438f call Func_36f4 call Func_3701 call EnableLCD ; 4398 (1:4398) 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 ld [W_WHICHTRADE], a ; $cd3d call Func_4524 ld a, $9b call Func_4533 call Func_3719 ld a, $40 ld [$FF00+$b0], a call Func_3701 ld a, $98 call Func_4533 ld b, $6 call GoPAL_SET call GBPalNormal ld a, $e4 ld [rOBP0], a ; $FF00+$48 ld bc, $ffaf ld hl, $43db .asm_43c6 ld a, [hli] and a jr z, .asm_43f4 ld d, a cp $fd jr nz, .asm_43d4 ld a, $bc call Func_23b1 .asm_43d4 ld a, [hli] ld e, a call .asm_43ea jr .asm_43c6 INCBIN "baserom.gbc",$43db,$43ea - $43db .asm_43ea call DelayFrame ld a, [bc] add d ld [bc], a dec e jr nz, .asm_43ea ret .asm_43f4 call Func_3725 ld c, $24 call DelayFrames ld a, $bd call Func_23b1 call Func_4598 ld a, $90 ld [$FF00+$b0], a ld d, $90 .asm_440a ld h, d ld l, $40 call Func_44cf ld h, $0 ld l, $50 call Func_44cf ld a, d add $4 ld d, a and a jr nz, .asm_440a ld a, $9c call Func_4533 call Func_3701 call Func_4598 call Delay3 call Func_3748 ld a, $c3 ld [$c0ee], a call Func_23b1 xor a ld [$cc5b], a .asm_443b ld c, $c8 call CheckForUserInterruption jr c, .asm_4459 call Func_44c1 ld c, $1 call CheckForUserInterruption jr c, .asm_4459 ld b, BANK(Func_372ac) ld hl, Func_372ac call Bankswitch ; indirect jump to Func_372ac (372ac (d:72ac)) call Func_4496 jr .asm_443b .asm_4459 ld a, [W_WHICHTRADE] ; $cd3d call PlayCry call Func_3748 call GBPalWhiteOutWithDelay3 call CleanLCD_OAM xor a ld [$FF00+$b0], a inc a ld [H_AUTOBGTRANSFERENABLED], a ; $FF00+$ba call ClearScreen ld a, $98 call Func_4533 ld a, $9c call Func_4533 call Delay3 call LoadGBPal ld a, [$FF00+$b4] ld b, a and $46 cp $46 jp z, Func_448e jp MainMenu ; known jump sources: 4488 (1:4488) Func_448e: ; 448e (1:448e) ld b, BANK(Func_1c98a) ld hl, Func_1c98a jp Bankswitch ; indirect jump to Func_1c98a (1c98a (7:498a)) ; known jump sources: 4454 (1:4454) Func_4496: ; 4496 (1:4496) ld a, $98 call Func_4533 .asm_449b call GenRandom and $f ld c, a ld b, $0 ld hl, $4588 add hl, bc ld a, [hl] ld hl, W_WHICHTRADE ; $cd3d cp [hl] jr z, .asm_449b ld [hl], a call Func_4524 ld a, $90 ld [$FF00+$b0], a ld d, $1 ld b, BANK(Func_37258) ld hl, Func_37258 call Bankswitch ; indirect jump to Func_37258 (37258 (d:7258)) ret ; known jump sources: 4442 (1:4442) Func_44c1: ; 44c1 (1:44c1) ld d, $0 ld b, BANK(Func_37258) ld hl, Func_37258 call Bankswitch ; indirect jump to Func_37258 (37258 (d:7258)) xor a ld [$FF00+$b0], a ret ; known jump sources: 440d (1:440d), 4414 (1:4414), 44d2 (1:44d2) Func_44cf: ; 44cf (1:44cf) ld a, [$FF00+$44] cp l jr nz, Func_44cf ld a, h ld [rSCX], a ; $FF00+$43 .asm_44d7 ld a, [$FF00+$44] cp h jr z, .asm_44d7 ret ; known jump sources: 4366 (1:4366) Func_44dd: ; 44dd (1:44dd) ld hl, $66a8 ld de, $8000 ld bc, $230 ld a, $4 call FarCopyData2 call CleanLCD_OAM xor a ld [W_WHICHTRADE], a ; $cd3d ld hl, $c300 ld de, $605a ld b, $7 .asm_44fa push de ld c, $5 .asm_44fd ld a, d ld [hli], a ld a, e ld [hli], a add $8 ld e, a ld a, [W_WHICHTRADE] ; $cd3d ld [hli], a inc a ld [W_WHICHTRADE], a ; $cd3d inc hl dec c jr nz, .asm_44fd pop de ld a, $8 add d ld d, a dec b jr nz, .asm_44fa ret ; known jump sources: 4340 (1:4340) Func_4519: ; 4519 (1:4519) ld hl, $9800 ld bc, $800 ld a, $7f jp FillMemory ; known jump sources: 439d (1:439d), 44af (1:44af) Func_4524: ; 4524 (1:4524) ld [$cf91], a ld [$d0b5], a ld hl, $c46d call GetBaseStats jp Func_1389 ; known jump sources: 43a2 (1:43a2), 43b1 (1:43b1), 4420 (1:4420), 4473 (1:4473), 4478 (1:4478), 4498 (1:4498) Func_4533: ; 4533 (1:4533) ld [$FF00+$bd], a jp Delay3 ; known jump sources: 41894 (10:5894) Func_4538: ; 4538 (1:4538) xor a ld [$FF00+$b0], a call ClearScreen call LoadTextBoxTilePatterns ; known jump sources: 741fa (1d:41fa) Func_4541: ; 4541 (1:4541) ld de, $60c8 ld hl, $9600 ld bc, $41c call CopyVideoData ld hl, $c42e ld de, $4556 jp PlaceString INCBIN "baserom.gbc",$4556,$4588 - $4556 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 ; known jump sources: 4401 (1:4401), 4426 (1:4426) Func_4598: ; 4598 (1:4598) ld hl, $c447 ld de, $45a1 jp PlaceString ; 45a1 (1:45a1) ; 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,$4b0f - $4b09 ; known jump sources: 205b (0:205b) Func_4b0f: ; 4b0f (1:4b0f) ld a, [$cfcb] dec a jr z, .asm_4b1e cp $ff ret nz ld [$cfcb], a jp ResetLCD_OAM .asm_4b1e xor a ld [$FF00+$90], a ; known jump sources: 4bb3 (1:4bb3) Func_4b21: ; 4b21 (1:4b21) ld [$FF00+$8f], a ld d, $c1 ld a, [$FF00+$8f] ld e, a ld a, [de] and a jp z, .asm_4bad inc e inc e ld a, [de] ld [$d5cd], a cp $ff jr nz, .asm_4b3c call Func_4bd1 jr .asm_4bad .asm_4b3c cp $a0 jr c, .asm_4b46 and $f add $10 jr .asm_4b48 .asm_4b46 and $f .asm_4b48 ld l, a push de inc d ld a, e add $5 ld e, a ld a, [de] and $80 ld [$FF00+$94], a pop de ld h, $0 ld bc, $4000 add hl, hl add hl, hl add hl, bc ld a, [hli] ld c, a ld a, [hli] ld b, a ld a, [hli] ld h, [hl] ld l, a call Func_4bd1 ld a, [$FF00+$90] ld e, a ld d, $c3 .asm_4b6c ld a, [$FF00+$92] add $10 add [hl] ld [de], a inc hl ld a, [$FF00+$91] add $8 add [hl] inc e ld [de], a inc e ld a, [bc] inc bc push bc ld b, a ld a, [$d5cd] swap a and $f cp $b jr nz, .asm_4b8e ld a, $7c jr .asm_4b96 .asm_4b8e sla a sla a ld c, a sla a add c .asm_4b96 add b pop bc ld [de], a inc hl inc e ld a, [hl] bit 1, a jr z, .asm_4ba3 ld a, [$FF00+$94] or [hl] .asm_4ba3 inc hl ld [de], a inc e bit 0, a jr z, .asm_4b6c ld a, e ld [$FF00+$90], a .asm_4bad ld a, [$FF00+$8f] add $10 cp $0 jp nz, Func_4b21 ld a, [$FF00+$90] ld l, a ld h, $c3 ld de, $4 ld b, $a0 ld a, [$d736] bit 6, a ld a, $a0 jr z, .asm_4bcb ld a, $90 .asm_4bcb cp l ret z ld [hl], b add hl, de jr .asm_4bcb ; known jump sources: 4b37 (1:4b37), 4b64 (1:4b64) Func_4bd1: ; 4bd1 (1:4bd1) inc e inc e ld a, [de] ld [$FF00+$92], a inc e inc e ld a, [de] ld [$FF00+$91], a ld a, $4 add e ld e, a ld a, [$FF00+$92] add $4 and $f0 ld [de], a inc e ld a, [$FF00+$91] and $f0 ld [de], a ret ; known jump sources: 1f9e (0:1f9e) Func_4bed: ; 4bed (1:4bed) ld c, $80 ld b, $a ld hl, $4bfb .asm_4bf4 ld a, [hli] ld [$ff00+c], a inc c dec b jr nz, .asm_4bf4 ret INCBIN "baserom.gbc",$4bfb,$4c05 - $4bfb ; known jump sources: 3d638 (f:5638) Func_4c05: ; 4c05 (1:4c05) ld hl, $c46b ld b, $1 ld c, $b ld a, [W_ISINBATTLE] ; $d057 and a jr z, .asm_4c17 call TextBoxBorder jr .asm_4c1a .asm_4c17 call Func_5ab3 .asm_4c1a ld hl, $c480 ld de, $4c28 call PlaceString ld c, $32 jp DelayFrames INCBIN "baserom.gbc",$4c28,$4c34 - $4c28 ; known jump sources: 2438 (0:2438) Func_4c34: ; 4c34 (1:4c34) ld h, $c1 inc h ld a, $e .asm_4c39 ld l, a sub $e ld c, a ld [$FF00+$da], a ld a, [hl] and a jr z, .asm_4c4c push hl push de push bc call Func_4c54 pop bc pop de pop hl .asm_4c4c ld a, l add $10 cp $e jr nz, .asm_4c39 ret ; known jump sources: 4c46 (1:4c46) Func_4c54: ; 4c54 (1:4c54) cp $1 jp nz, Func_4c5c jp Func_4e31 ; known jump sources: 4c56 (1:4c56) Func_4c5c: ; 4c5c (1:4c5c) dec a swap a ld [$FF00+$93], a ld a, [$cf17] ld b, a ld a, [$FF00+$da] cp b jr nz, .asm_4c6d jp Func_5236 .asm_4c6d jp Func_4ed1 ; known jump sources: 4e50 (1:4e50), 51af (1:51af) Func_4c70: ; 4c70 (1:4c70) nop ld h, $c1 ld a, [$FF00+$da] add $0 ld l, a ld a, [hl] and a ret z ld a, l add $3 ld l, a ld a, [hli] call Func_4d72 ld a, [hli] add $4 add b and $f0 or c ld [$FF00+$90], a ld a, [hli] call Func_4d72 ld a, [hl] add b and $f0 or c ld [$FF00+$91], a ld a, l add $7 ld l, a xor a ld [hld], a ld [hld], a ld a, [$FF00+$91] ld [hld], a ld a, [$FF00+$90] ld [hl], a xor a ; known jump sources: 4d6e (1:4d6e) Func_4ca5: ; 4ca5 (1:4ca5) ld [$FF00+$8f], a swap a ld e, a ld a, [$FF00+$da] cp e jp z, .asm_4d69 ld d, h ld a, [de] and a jp z, .asm_4d69 inc e inc e ld a, [de] inc a jp z, .asm_4d69 ld a, [$FF00+$da] add $a ld l, a inc e ld a, [de] call Func_4d72 inc e ld a, [de] add $4 add b and $f0 or c sub [hl] jr nc, .asm_4cd4 cpl inc a .asm_4cd4 ld [$FF00+$90], a push af rl c pop af ccf rl c ld b, $7 ld a, [hl] and $f jr z, .asm_4ce6 ld b, $9 .asm_4ce6 ld a, [$FF00+$90] sub b ld [$FF00+$92], a ld a, b ld [$FF00+$90], a jr c, .asm_4d01 ld b, $7 dec e ld a, [de] inc e and a jr z, .asm_4cfa ld b, $9 .asm_4cfa ld a, [$FF00+$92] sub b jr z, .asm_4d01 jr nc, .asm_4d69 .asm_4d01 inc e inc l ld a, [de] push bc call Func_4d72 inc e ld a, [de] add b and $f0 or c pop bc sub [hl] jr nc, .asm_4d14 cpl inc a .asm_4d14 ld [$FF00+$91], a push af rl c pop af ccf rl c ld b, $7 ld a, [hl] and $f jr z, .asm_4d26 ld b, $9 .asm_4d26 ld a, [$FF00+$91] sub b ld [$FF00+$92], a ld a, b ld [$FF00+$91], a jr c, .asm_4d41 ld b, $7 dec e ld a, [de] inc e and a jr z, .asm_4d3a ld b, $9 .asm_4d3a ld a, [$FF00+$92] sub b jr z, .asm_4d41 jr nc, .asm_4d69 .asm_4d41 ld a, [$FF00+$91] ld b, a ld a, [$FF00+$90] inc l cp b jr c, .asm_4d4e ld b, $c jr .asm_4d50 .asm_4d4e ld b, $3 .asm_4d50 ld a, c and b or [hl] ld [hl], a ld a, c inc l inc l ld a, [$FF00+$8f] ld de, $4d85 add a add e ld e, a jr nc, .asm_4d62 inc d .asm_4d62 ld a, [de] or [hl] ld [hli], a inc de ld a, [de] or [hl] ld [hl], a .asm_4d69 ld a, [$FF00+$8f] inc a cp $10 jp nz, Func_4ca5 ret ; known jump sources: 4c80 (1:4c80), 4c8d (1:4c8d), 4cc4 (1:4cc4), 4d05 (1:4d05) Func_4d72: ; 4d72 (1:4d72) and a ld b, $0 ld c, $0 jr z, .asm_4d84 ld c, $9 cp $ff jr z, .asm_4d83 ld c, $7 ld a, $0 .asm_4d83 ld b, a .asm_4d84 ret INCBIN "baserom.gbc",$4d85,$4de1 - $4d85 ; known jump sources: 24f7 (0:24f7) Func_4de1: ; 4de1 (1:4de1) call EnableAutoTextBoxDrawing ld a, [H_DOWNARROWBLINKCNT2] ; $FF00+$8c ld b, a ld hl, $d5ce .asm_4dea ld a, [hli] cp $ff ret z cp b jr z, .asm_4df4 inc hl jr .asm_4dea .asm_4df4 ld a, [hl] ld [$FF00+$db], a ld hl, $d504 ld a, [H_DOWNARROWBLINKCNT2] ; $FF00+$8c dec a add a ld d, $0 ld e, a add hl, de ld a, [hl] ld b, a ld c, $1 call GiveItem jr nc, .asm_4e1f ld a, [$FF00+$db] ld [$cc4d], a ld a, $11 call Predef ; indirect jump to Func_f1d7 (f1d7 (3:71d7)) ld a, $1 ld [$cc3c], a ld hl, $4e26 jr .asm_4e22 .asm_4e1f ld hl, $4e2c .asm_4e22 call PrintText ret INCBIN "baserom.gbc",$4e26,$4e2c - $4e26 UnnamedText_4e2c: ; 0x4e2c TX_FAR _UnnamedText_4e2c db $50 ; 0x4e2c + 5 bytes ; known jump sources: 4c59 (1:4c59) Func_4e31: ; 4e31 (1:4e31) ld a, [$c200] and a jr z, .asm_4e41 cp $ff jr z, .asm_4e4a dec a ld [$c200], a jr .asm_4e4a .asm_4e41 ld a, [$c45c] ld [$FF00+$93], a cp $60 jr c, .asm_4e50 .asm_4e4a ld a, $ff ld [$c102], a ret .asm_4e50 call Func_4c70 ld h, $c1 ld a, [W_WALKCOUNTER] ; $cfc5 and a jr nz, .asm_4e90 ld a, [$d528] bit 2, a jr z, .asm_4e65 xor a jr .asm_4e86 .asm_4e65 bit 3, a jr z, .asm_4e6d ld a, $4 jr .asm_4e86 .asm_4e6d bit 1, a jr z, .asm_4e75 ld a, $8 jr .asm_4e86 .asm_4e75 bit 0, a jr z, .asm_4e7d ld a, $c jr .asm_4e86 .asm_4e7d xor a ld [$c107], a ld [$c108], a jr .asm_4eab .asm_4e86 ld [$c109], a ld a, [$cfc4] bit 0, a jr nz, .asm_4e7d .asm_4e90 ld a, [$d736] bit 7, a jr nz, .asm_4eb6 ld a, [$FF00+$da] add $7 ld l, a ld a, [hl] inc a ld [hl], a cp $4 jr nz, .asm_4eab xor a ld [hl], a inc hl ld a, [hl] inc a and $3 ld [hl], a .asm_4eab ld a, [$c108] ld b, a ld a, [$c109] add b ld [$c102], a .asm_4eb6 ld a, [$FF00+$93] ld c, a ld a, [$d535] cp c ld a, $0 jr nz, .asm_4ec3 ld a, $80 .asm_4ec3 ld [$c207], a ret INCBIN "baserom.gbc",$4ec7,$4ed1 - $4ec7 ; known jump sources: 4c6d (1:4c6d) Func_4ed1: ; 4ed1 (1:4ed1) ld a, [$FF00+$da] swap a dec a add a ld hl, W_PEOPLEMOVEPERMISSIONS ; $d4e4 add l ld l, a ld a, [hl] ld [$cf14], a ld h, $c1 ld a, [$FF00+$da] ld l, a inc l ld a, [hl] and a jp z, Func_50ad call Func_50dc ret c ld h, $c1 ld a, [$FF00+$da] ld l, a inc l ld a, [hl] bit 7, a jp nz, Func_507f ld b, a ld a, [$cfc4] bit 0, a jp nz, asm_5073 ld a, b cp $2 jp z, Func_5057 cp $3 jp z, Func_4ffe ld a, [W_WALKCOUNTER] ; $cfc5 and a ret nz call Func_50bd ld h, $c2 ld a, [$FF00+$da] add $6 ld l, a ld a, [hl] inc a jr z, .asm_4f59 inc a jr z, .asm_4f59 dec a ld [hl], a dec a push hl ld hl, $cf0f dec [hl] pop hl ld de, $cc5b call Func_522f cp $e0 jp z, Func_4fc8 cp $ff jr nz, .asm_4f4b ld [hl], a ld hl, $d730 res 0, [hl] xor a ld [$cd38], a ld [$cd3a], a ret .asm_4f4b cp $fe jr nz, .asm_4f5f ld [hl], $1 ld de, $cc5b call Func_522f jr .asm_4f5f .asm_4f59 call Func_5207 call GenRandom .asm_4f5f ld b, a ld a, [$cf14] cp $d0 jr z, .asm_4f7f cp $d1 jr z, .asm_4f96 cp $d2 jr z, .asm_4fad cp $d3 jr z, .asm_4fbe ld a, b cp $40 jr nc, .asm_4f8b ld a, [$cf14] cp $2 jr z, .asm_4fad .asm_4f7f ld de, $28 add hl, de ld de, $100 ld bc, $400 jr asm_4fcb .asm_4f8b cp $80 jr nc, .asm_4fa2 ld a, [$cf14] cp $2 jr z, .asm_4fbe .asm_4f96 ld de, $ffd8 add hl, de ld de, rJOYP ; $ff00 ld bc, $804 jr asm_4fcb .asm_4fa2 cp $c0 jr nc, .asm_4fb7 ld a, [$cf14] cp $1 jr z, .asm_4f96 .asm_4fad dec hl dec hl ld de, $ff ld bc, $208 jr asm_4fcb .asm_4fb7 ld a, [$cf14] cp $1 jr z, .asm_4f7f .asm_4fbe inc hl inc hl ld de, $1 ld bc, $10c jr asm_4fcb ; known jump sources: 4f36 (1:4f36) Func_4fc8: ; 4fc8 (1:4fc8) ld de, $0 asm_4fcb: ; 4fcb (1:4fcb) push hl ld h, $c1 ld a, [$FF00+$da] add $9 ld l, a ld [hl], c ld a, [$FF00+$da] add $3 ld l, a ld [hl], d inc l inc l ld [hl], e pop hl push de ld c, [hl] call Func_516e pop de ret c ld h, $c2 ld a, [$FF00+$da] add $4 ld l, a ld a, [hl] add d ld [hli], a ld a, [hl] add e ld [hl], a ld a, [$FF00+$da] ld l, a ld [hl], $10 dec h inc l ld [hl], $3 jp Func_5157 ; known jump sources: 4f0c (1:4f0c) Func_4ffe: ; 4ffe (1:4ffe) ld a, [$FF00+$da] add $7 ld l, a ld a, [hl] inc a ld [hl], a cp $4 jr nz, .asm_5012 xor a ld [hl], a inc l ld a, [hl] inc a and $3 ld [hl], a .asm_5012 ld a, [$FF00+$da] add $3 ld l, a ld a, [hli] ld b, a ld a, [hl] add b ld [hli], a ld a, [hli] ld b, a ld a, [hl] add b ld [hl], a ld a, [$FF00+$da] ld l, a inc h ld a, [hl] dec a ld [hl], a ret nz ld a, $6 add l ld l, a ld a, [hl] cp $fe jr nc, .asm_503a ld a, [$FF00+$da] inc a ld l, a dec h ld [hl], $1 ret .asm_503a call GenRandom ld a, [$FF00+$da] add $8 ld l, a ld a, [H_RAND1] ; $FF00+$d3 and $7f ld [hl], a dec h ld a, [$FF00+$da] inc a ld l, a ld [hl], $2 inc l inc l xor a ld b, [hl] ld [hli], a inc l ld c, [hl] ld [hl], a ret ; known jump sources: 4f07 (1:4f07) Func_5057: ; 5057 (1:5057) ld h, $c2 ld a, [$FF00+$da] add $6 ld l, a ld a, [hl] inc l inc l cp $fe jr nc, .asm_5069 ld [hl], $0 jr .asm_506c .asm_5069 dec [hl] jr nz, asm_5073 .asm_506c dec h ld a, [$FF00+$da] inc a ld l, a ld [hl], $1 asm_5073: ; 5073 (1:5073) ld h, $c1 ld a, [$FF00+$da] add $8 ld l, a ld [hl], $0 jp Func_5157 ; known jump sources: 4ef8 (1:4ef8) Func_507f: ; 507f (1:507f) ld a, [$d72d] bit 5, a jr nz, asm_5073 res 7, [hl] ld a, [$d52a] bit 3, a jr z, .asm_5093 ld c, $0 jr .asm_50a5 .asm_5093 bit 2, a jr z, .asm_509b ld c, $4 jr .asm_50a5 .asm_509b bit 1, a jr z, .asm_50a3 ld c, $c jr .asm_50a5 .asm_50a3 ld c, $8 .asm_50a5 ld a, [$FF00+$da] add $9 ld l, a ld [hl], c jr asm_5073 ; known jump sources: 4ee8 (1:4ee8) Func_50ad: ; 50ad (1:50ad) ld [hl], $1 inc l ld [hl], $ff inc h ld a, [$FF00+$da] add $2 ld l, a ld a, $8 ld [hli], a ld [hl], a ret ; known jump sources: 4f14 (1:4f14) Func_50bd: ; 50bd (1:50bd) ld h, $c2 ld a, [$FF00+$da] add $4 ld l, a ld a, [W_YCOORD] ; $d361 ld b, a ld a, [hl] sub b swap a sub $4 dec h ld [hli], a inc h ld a, [W_XCOORD] ; $d362 ld b, a ld a, [hli] sub b swap a dec h ld [hl], a ret ; known jump sources: 4eeb (1:4eeb) Func_50dc: ; 50dc (1:50dc) ld a, $12 call Predef ; indirect jump to Func_f1a6 (f1a6 (3:71a6)) ld a, [$FF00+$e5] and a jp nz, .asm_512e ld h, $c2 ld a, [$FF00+$da] add $6 ld l, a ld a, [hl] cp $fe jr c, .asm_5115 ld a, [$FF00+$da] add $4 ld l, a ld b, [hl] ld a, [W_YCOORD] ; $d361 cp b jr z, .asm_5106 jr nc, .asm_512e add $8 cp b jr c, .asm_512e .asm_5106 inc l ld b, [hl] ld a, [W_XCOORD] ; $d362 cp b jr z, .asm_5115 jr nc, .asm_512e add $9 cp b jr c, .asm_512e .asm_5115 call Func_5207 ld d, $60 ld a, [hli] cp d jr nc, .asm_512e ld a, [hld] cp d jr nc, .asm_512e ld bc, $ffec add hl, bc ld a, [hli] cp d jr nc, .asm_512e ld a, [hl] cp d jr c, .asm_513a .asm_512e ld h, $c1 ld a, [$FF00+$da] add $2 ld l, a ld [hl], $ff scf jr .asm_5156 .asm_513a ld c, a ld a, [W_WALKCOUNTER] ; $cfc5 and a jr nz, .asm_5156 call Func_5157 inc h ld a, [$FF00+$da] add $7 ld l, a ld a, [$d535] cp c ld a, $0 jr nz, .asm_5154 ld a, $80 .asm_5154 ld [hl], a and a .asm_5156 ret ; known jump sources: 4ffb (1:4ffb), 507c (1:507c), 5141 (1:5141) Func_5157: ; 5157 (1:5157) ld h, $c1 ld a, [$FF00+$da] add $8 ld l, a ld a, [hli] ld b, a ld a, [hl] add b ld b, a ld a, [$FF00+$93] add b ld b, a ld a, [$FF00+$da] add $2 ld l, a ld [hl], b ret ; known jump sources: 4fe0 (1:4fe0) Func_516e: ; 516e (1:516e) ld h, $c2 ld a, [$FF00+$da] add $6 ld l, a ld a, [hl] cp $fe jr nc, .asm_517c and a ret .asm_517c ld a, [$d530] ld l, a ld a, [$d531] ld h, a .asm_5184 ld a, [hli] cp $ff jr z, .asm_51e9 cp c jr nz, .asm_5184 ld h, $c2 ld a, [$FF00+$da] add $6 ld l, a ld a, [hl] inc a jr z, .asm_51e9 ld h, $c1 ld a, [$FF00+$da] add $4 ld l, a ld a, [hli] add $4 add d cp $80 jr nc, .asm_51e9 inc l ld a, [hl] add e cp $90 jr nc, .asm_51e9 push de push bc call Func_4c70 pop bc pop de ld h, $c1 ld a, [$FF00+$da] add $c ld l, a ld a, [hl] and b jr nz, .asm_51e9 ld h, $c2 ld a, [$FF00+$da] add $2 ld l, a ld a, [hli] bit 7, d jr nz, .asm_51d2 add d cp $5 jr c, .asm_51e9 jr .asm_51d6 .asm_51d2 sub $1 jr c, .asm_51e9 .asm_51d6 ld d, a ld a, [hl] bit 7, e jr nz, .asm_51e1 add e cp $5 jr .asm_51e5 .asm_51e1 sub $1 jr c, .asm_51e9 .asm_51e5 ld [hld], a ld [hl], d and a ret .asm_51e9 ld h, $c1 ld a, [$FF00+$da] inc a ld l, a ld [hl], $2 inc l inc l xor a ld [hli], a inc l ld [hl], a inc h ld a, [$FF00+$da] add $8 ld l, a call GenRandom ld a, [H_RAND1] ; $FF00+$d3 and $7f ld [hl], a scf ret ; known jump sources: 4f59 (1:4f59), 5115 (1:5115) Func_5207: ; 5207 (1:5207) ld h, $c1 ld a, [$FF00+$da] add $4 ld l, a ld a, [hli] add $4 and $f0 srl a ld c, a ld b, $0 inc l ld a, [hl] srl a srl a srl a add $14 ld d, $0 ld e, a ld hl, $c3a0 add hl, bc add hl, bc add hl, bc add hl, bc add hl, bc add hl, de ret ; known jump sources: 4f31 (1:4f31), 4f54 (1:4f54) Func_522f: ; 522f (1:522f) add e ld e, a jr nc, .asm_5234 inc d .asm_5234 ld a, [de] ret ; known jump sources: 4c6a (1:4c6a) Func_5236: ; 5236 (1:5236) ld a, [$d730] bit 7, a ret z ld hl, $d72e bit 7, [hl] set 7, [hl] jp z, Func_52a6 ld hl, $cc97 ld a, [$cd37] add l ld l, a jr nc, .asm_5251 inc h .asm_5251 ld a, [hl] cp $40 jr nz, .asm_525f call Func_52b2 ld c, $4 ld a, $fe jr .asm_5289 .asm_525f cp $0 jr nz, .asm_526c call Func_52b2 ld c, $0 ld a, $2 jr .asm_5289 .asm_526c cp $80 jr nz, .asm_5279 call Func_52b7 ld c, $8 ld a, $fe jr .asm_5289 .asm_5279 cp $c0 jr nz, .asm_5286 call Func_52b7 ld c, $c ld a, $2 jr .asm_5289 .asm_5286 cp $ff ret .asm_5289 ld b, a ld a, [hl] add b ld [hl], a ld a, [$FF00+$da] add $9 ld l, a ld a, c ld [hl], a call Func_52c3 ld hl, $cf18 dec [hl] ret nz ld a, $8 ld [$cf18], a ld hl, $cd37 inc [hl] ret ; known jump sources: 5243 (1:5243) Func_52a6: ; 52a6 (1:52a6) xor a ld [$cd37], a ld a, $8 ld [$cf18], a jp Func_52c3 ; known jump sources: 5256 (1:5256), 5263 (1:5263) Func_52b2: ; 52b2 (1:52b2) ld a, $4 ld b, a jr asm_52ba ; known jump sources: 5270 (1:5270), 527d (1:527d) Func_52b7: ; 52b7 (1:52b7) ld a, $6 ld b, a asm_52ba: ; 52ba (1:52ba) ld hl, $c100 ld a, [$FF00+$da] add l add b ld l, a ret ; known jump sources: 5294 (1:5294), 52af (1:52af) Func_52c3: ; 52c3 (1:52c3) ld hl, $c200 ld a, [$FF00+$da] add $e ld l, a ld a, [hl] dec a swap a ld b, a ld hl, $c100 ld a, [$FF00+$da] add $9 ld l, a ld a, [hl] cp $0 jr z, .asm_52ea cp $4 jr z, .asm_52ea cp $8 jr z, .asm_52ea cp $c jr z, .asm_52ea ret .asm_52ea add b ld b, a ld [$FF00+$e9], a call Func_5301 ld hl, $c100 ld a, [$FF00+$da] add $2 ld l, a ld a, [$FF00+$e9] ld b, a ld a, [$FF00+$ea] add b ld [hl], a ret ; known jump sources: 52ee (1:52ee) Func_5301: ; 5301 (1:5301) ld a, [$FF00+$da] add $7 ld l, a ld a, [hl] inc a ld [hl], a cp $4 ret nz xor a ld [hl], a inc l ld a, [hl] inc a and $3 ld [hl], a ld [$FF00+$ea], a ret ; known jump sources: 5a75 (1:5a75) Func_5317: ; 5317 (1:5317) ld c, $50 call DelayFrames call ClearScreen call Func_2429 call LoadFontTilePatterns call LoadHpBarAndStatusTilePatterns call Func_5ae6 ld hl, $c443 ld b, $2 ld c, $c call Func_5ab3 ld hl, $c46c ld de, $550f call PlaceString ld hl, W_NUMHITS ; $d074 xor a ld [hli], a ld [hl], $50 ld hl, $d152 ld a, $fd ld b, $6 .asm_534c ld [hli], a dec b jr nz, .asm_534c ld hl, $d141 ld a, $fd ld b, $7 .asm_5357 ld [hli], a dec b jr nz, .asm_5357 ld b, $a .asm_535d call GenRandom cp $fd jr nc, .asm_535d ld [hli], a dec b jr nz, .asm_535d ld hl, $c508 ld a, $fd ld [hli], a ld [hli], a ld [hli], a ld b, $c8 xor a .asm_5373 ld [hli], a dec b jr nz, .asm_5373 ld hl, W_GRASSRATE ; $d887 ld bc, $1a9 .asm_537d xor a ld [hli], a dec bc ld a, b or c jr nz, .asm_537d ld hl, W_PARTYMONEND ; $d16a ld de, $c512 ld bc, $0 .asm_538d inc c ld a, c cp $fd jr z, .asm_53a9 ld a, b dec a jr nz, .asm_539c ld a, c cp $d jr z, .asm_53b2 .asm_539c inc hl ld a, [hl] cp $fe jr nz, .asm_538d ld a, c ld [de], a inc de ld [hl], $ff jr .asm_538d .asm_53a9 ld a, $ff ld [de], a inc de ld bc, $100 jr .asm_538d .asm_53b2 ld a, $ff ld [de], a call Func_227f ld a, [$FF00+$aa] cp $2 jr nz, .asm_53d2 call Delay3 xor a ld [$FF00+$ac], a ld a, $81 ld [$FF00+$2], a call DelayFrame xor a ld [$FF00+$ac], a ld a, $81 ld [$FF00+$2], a .asm_53d2 call Delay3 ld a, $8 ld [rIE], a ; $FF00+$ff ld hl, $d141 ld de, $cd81 ld bc, $11 call Func_216f ld a, $fe ld [de], a ld hl, $d152 ld de, $d893 ld bc, $1a8 call Func_216f ld a, $fe ld [de], a ld hl, $c508 ld de, $c5d0 ld bc, $c8 call Func_216f ld a, $d ld [rIE], a ; $FF00+$ff ld a, $ff call Func_23b1 ld a, [$FF00+$aa] cp $2 jr z, .asm_5431 ld hl, $cd81 .asm_5415 ld a, [hli] and a jr z, .asm_5415 cp $fd jr z, .asm_5415 cp $fe jr z, .asm_5415 dec hl ld de, $d148 ld c, $a .asm_5427 ld a, [hli] cp $fe jr z, .asm_5427 ld [de], a inc de dec c jr nz, .asm_5427 .asm_5431 ld hl, $d896 .asm_5434 ld a, [hli] and a jr z, .asm_5434 cp $fd jr z, .asm_5434 cp $fe jr z, .asm_5434 dec hl ld de, W_GRASSRATE ; $d887 ld c, $b .asm_5446 ld a, [hli] cp $fe jr z, .asm_5446 ld [de], a inc de dec c jr nz, .asm_5446 ld de, W_ENEMYMONCOUNT ; $d89c ld bc, $194 .asm_5456 ld a, [hli] cp $fe jr z, .asm_5456 ld [de], a inc de dec bc ld a, b or c jr nz, .asm_5456 ld de, $c508 ld hl, W_PARTYMON1_NUM ; $d16b (aliases: W_PARTYMON1DATA) ld c, $2 .asm_546a ld a, [de] inc de and a jr z, .asm_546a cp $fd jr z, .asm_546a cp $fe jr z, .asm_546a cp $ff jr z, .asm_5489 push hl push bc ld b, $0 dec a ld c, a add hl, bc ld a, $fe ld [hl], a pop bc pop hl jr .asm_546a .asm_5489 ld hl, W_PARTYMON6_MOVE4PP ; $d267 dec c jr nz, .asm_546a ld de, $c5d0 ld hl, W_WATERRATE ; $d8a4 ld c, $2 .asm_5497 ld a, [de] inc de and a jr z, .asm_5497 cp $fd jr z, .asm_5497 cp $fe jr z, .asm_5497 cp $ff jr z, .asm_54b6 push hl push bc ld b, $0 dec a ld c, a add hl, bc ld a, $fe ld [hl], a pop bc pop hl jr .asm_5497 .asm_54b6 ld hl, $d9a0 dec c jr nz, .asm_5497 ld a, $ac ld [$cf8d], a ld a, $d9 ld [$cf8e], a xor a ld [$cc38], a ld a, $ff call Func_23b1 ld a, [$FF00+$aa] cp $2 ld c, $42 call z, DelayFrames ld a, [W_ISLINKBATTLE] ; $d12b cp $3 ld a, $32 ld [W_ISLINKBATTLE], a ; $d12b jr nz, .asm_5506 ld a, $4 ld [W_ISLINKBATTLE], a ; $d12b ld a, $e1 ld [W_CUROPPONENT], a ; $d059 call ClearScreen call Delay3 ld hl, W_OPTIONS ; $d355 res 7, [hl] ld a, $2c call Predef ; indirect jump to Func_3ef18 (3ef18 (f:6f18)) ld a, $7 call Predef ; indirect jump to HealParty (f6a5 (3:76a5)) jp Func_577d .asm_5506 ld c, $1f ld a, $d9 call Func_23a1 jr .asm_551c INCBIN "baserom.gbc",$550f,$551c - $550f .asm_551c ld hl, $5a5b ld b, $0 ld a, [$cc38] cp $ff jp z, Func_42dd add a ld c, a add hl, bc ld a, [hli] ld h, [hl] ld l, a jp [hl] INCBIN "baserom.gbc",$5530,$577d - $5530 ; known jump sources: 5503 (1:5503) Func_577d: ; 577d (1:577d) call GBPalWhiteOutWithDelay3 ld hl, $cfc4 ld a, [hl] push af push hl res 0, [hl] xor a ld [$d72d], a dec a ld [$d42f], a call LoadMapData ld b, BANK(Func_c335) ld hl, Func_c335 call Bankswitch ; indirect jump to Func_c335 (c335 (3:4335)) pop hl pop af ld [hl], a call GBFadeIn2 ret INCBIN "baserom.gbc",$57a2,$5a24 - $57a2 SSAnne8AfterBattleText2: ; 0x5a24 TX_FAR _SSAnne8AfterBattleText2 db $50 ; 0x5a24 + 5 bytes INCBIN "baserom.gbc",$5a29,$5a5f - $5a29 ; known jump sources: 3888 (0:3888) Func_5a5f: ; 5a5f (1:5a5f) ld a, [W_ISLINKBATTLE] ; $d12b cp $2 jr z, .asm_5a75 cp $3 jr z, .asm_5a75 cp $5 ret nz ld a, $4d call Predef ; indirect jump to Func_5aaf (5aaf (1:5aaf)) jp InitGame .asm_5a75 call Func_5317 ld hl, $7670 ld a, h ld [$d52f], a ld a, l ld [$d52e], a ld a, $1b ld [$d52b], a ld hl, $17d1 ld a, h ld [$d531], a ld a, l ld [$d530], a xor a ld [W_GRASSRATE], a ; $d887 inc a ld [W_ISLINKBATTLE], a ; $d12b ld [$FF00+$b5], a ld a, $a ld [$cfc7], a ld a, $2 ld [$c0f0], a ld a, $ca ld [$c0ee], a jp Func_23b1 ; known jump sources: 5a6f (1:5a6f) Func_5aaf: ; 5aaf (1:5aaf) ret INCBIN "baserom.gbc",$5ab0,$5ab3 - $5ab0 ; known jump sources: 4c17 (1:4c17), 5332 (1:5332), 75b4 (1:75b4) Func_5ab3: ; 5ab3 (1:5ab3) push hl ld a, $78 ld [hli], a inc a call Func_5ae0 inc a ld [hl], a pop hl ld de, $14 add hl, de .asm_5ac2 push hl ld a, $7b ld [hli], a ld a, $7f call Func_5ae0 ld [hl], $77 pop hl ld de, $14 add hl, de dec b jr nz, .asm_5ac2 ld a, $7c ld [hli], a ld a, $76 call Func_5ae0 ld [hl], $7d ret ; known jump sources: 5ab8 (1:5ab8), 5ac8 (1:5ac8), 5ada (1:5ada) Func_5ae0: ; 5ae0 (1:5ae0) ld d, c .asm_5ae1 ld [hli], a dec d jr nz, .asm_5ae1 ret ; known jump sources: 5328 (1:5328) Func_5ae6: ; 5ae6 (1:5ae6) ld de, $7b98 ld hl, $9760 ld bc, $b09 jp CopyVideoData ; 5af2 (1:5af2) 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 GoPAL_SET_CF1C 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 GBPalWhiteOutWithDelay3 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 ; known jump sources: 72b0 (1:72b0) Func_5c0a: ; 5c0a (1:5c0a) xor a ld [$d358], a ld hl, $d72e set 6, [hl] ld hl, $6b20 call PrintText call Func_3719 ld hl, $5d43 call PrintText ld hl, $c409 ld b, $6 ld c, $d call TextBoxBorder call Func_2429 ld hl, $c433 ld de, $5d97 call PlaceString xor a ld [$cd37], a ld [$d72d], a ld hl, W_TOPMENUITEMY ; $cc24 ld a, $7 ld [hli], a ld a, $6 ld [hli], a xor a ld [hli], a inc hl ld a, $2 ld [hli], a inc a ld [hli], a xor a ld [hl], a .asm_5c52 call HandleMenuInput and $3 add a add a ld b, a ld a, [W_CURMENUITEMID] ; $cc26 add b add $d0 ld [$cc42], a ld [$cc43], a .asm_5c66 call Func_2247 ld a, [$cc3d] ld b, a and $f0 cp $d0 jr z, .asm_5c7d ld a, [$cc3e] ld b, a and $f0 cp $d0 jr nz, .asm_5c66 .asm_5c7d ld a, b and $c jr nz, .asm_5c8b ld a, [$cc42] and $c jr z, .asm_5c52 jr .asm_5ca1 .asm_5c8b ld a, [$cc42] and $c jr z, .asm_5c98 ld a, [$FF00+$aa] cp $2 jr z, .asm_5ca1 .asm_5c98 ld a, b ld [$cc42], a and $3 ld [W_CURMENUITEMID], a ; $cc26 .asm_5ca1 ld a, [$FF00+$aa] cp $2 jr nz, .asm_5cb1 call DelayFrame call DelayFrame ld a, $81 ld [$FF00+$2], a .asm_5cb1 ld b, $7f ld c, $7f ld d, $ec ld a, [$cc42] and $8 jr nz, .asm_5ccc ld a, [W_CURMENUITEMID] ; $cc26 cp $2 jr z, .asm_5ccc ld c, d ld d, b dec a jr z, .asm_5ccc ld b, c ld c, d .asm_5ccc ld a, b ld [$c432], a ld a, c ld [$c45a], a ld a, d ld [$c482], a ld c, $28 call DelayFrames call Func_3725 ld a, [$cc42] and $8 jr nz, .asm_5d2d ld a, [W_CURMENUITEMID] ; $cc26 cp $2 jr z, .asm_5d2d xor a ld [$d700], a ld a, [W_CURMENUITEMID] ; $cc26 and a ld a, $f0 jr nz, .asm_5cfc ld a, $ef .asm_5cfc ld [$d72d], a ld hl, $5d48 call PrintText ld c, $32 call DelayFrames ld hl, $d732 res 1, [hl] ld a, [W_ANIMATIONID] ; $d07c ld [$d71a], a call Function62CE ld c, $14 call DelayFrames xor a ld [W_MENUJOYPADPOLLCOUNT], a ; $cc34 ld [$cc42], a inc a ld [W_ISLINKBATTLE], a ; $d12b ld [$cc47], a jr Func_5d5f .asm_5d2d xor a ld [W_MENUJOYPADPOLLCOUNT], a ; $cc34 call Delay3 call Func_72d7 ld hl, $5d4d call PrintText ld hl, $d72e res 6, [hl] ret ; 5d43 (1:5d43) 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 ; known jump sources: 5ba4 (1:5ba4) Func_5d52: ; 5d52 (1:5d52) ld hl, $d732 res 1, [hl] call OakSpeech ld c, $14 call DelayFrames ; known jump sources: 5be5 (1:5be5), 5bed (1:5bed), 5bfc (1:5bfc), 5d2b (1:5d2b) Func_5d5f: ; 5d5f (1:5d5f) xor a ld [$FF00+$b3], a ld [$FF00+$b4], a ld [$FF00+$b5], a ld [$d72d], a ld hl, $d732 set 0, [hl] call Func_28a6 ld c, $14 call DelayFrames ld a, [$cc47] and a ret nz jp EnterMap INCBIN "baserom.gbc",$5d7e,$5db5 - $5d7e ; known jump sources: 5bb2 (1:5bb2) Func_5db5: ; 5db5 (1:5db5) xor a ld [H_AUTOBGTRANSFERENABLED], a ; $FF00+$ba ld hl, $c430 ld b, $8 ld c, $e call TextBoxBorder ld hl, $c459 ld de, $5e6a call PlaceString ld hl, $c460 ld de, W_PLAYERNAME ; $d158 call PlaceString ld hl, $c48d call Func_5e2f ld hl, $c4b4 call Func_5e42 ld hl, $c4d9 call Func_5e55 ld a, $1 ld [H_AUTOBGTRANSFERENABLED], a ; $FF00+$ba ld c, $1e jp DelayFrames INCBIN "baserom.gbc",$5def,$5e2f - $5def ; known jump sources: 5dd7 (1:5dd7) Func_5e2f: ; 5e2f (1:5e2f) push hl ld hl, W_OBTAINEDBADGES ; $d356 ld b, $1 call CountSetBits pop hl ld de, $d11e ld bc, $102 jp PrintNumber ; known jump sources: 5ddd (1:5ddd) Func_5e42: ; 5e42 (1:5e42) push hl ld hl, W_OWNEDPOKEMON ; $d2f7 ld b, $13 call CountSetBits pop hl ld de, $d11e ld bc, $103 jp PrintNumber ; known jump sources: 5de3 (1:5de3) Func_5e55: ; 5e55 (1:5e55) ld de, $da41 ld bc, $103 call PrintNumber ld [hl], $6d inc hl ld de, $da43 ld bc, $8102 jp PrintNumber INCBIN "baserom.gbc",$5e6a,$5e8a - $5e6a 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 ; known jump sources: 5afd (1:5afd) Func_609e: ; 609e (1:609e) ld a, $a ld [$0], a ld a, $1 ld [$6000], a ld [$4000], a ld b, $b ld hl, $a598 .asm_60b0 ld a, [hli] cp $50 jr z, .asm_60c1 dec b jr nz, .asm_60b0 xor a ld [$0], a ld [$6000], a and a ret .asm_60c1 xor a ld [$0], a ld [$6000], a scf ret ; known jump sources: 6128 (1:6128) Func_60ca: ; 60ca (1:60ca) ld a, [$d358] push af ld a, [W_OPTIONS] ; $d355 push af ld a, [$d732] push af ld hl, W_PLAYERNAME ; $d158 ld bc, $d8a xor a call FillMemory ld hl, $c100 ld bc, $200 xor a call FillMemory pop af ld [$d732], a pop af ld [W_OPTIONS], a ; $d355 pop af ld [$d358], a ld a, [$d08a] and a call z, Func_5bff ld hl, $45aa ld de, W_PLAYERNAME ; $d158 ld bc, $b call CopyData ld hl, $45b1 ld de, W_RIVALNAME ; $d34a ld bc, $b jp CopyData ; 6115 (1:6115) 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,ProfOakPic 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,RedPicFront 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,Rival1Pic 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,RedPicFront 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,ShrinkPic1 ld bc,$0400 call IntroPredef3B ld c,4 call DelayFrames ld de,ShrinkPic2 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 Predef Function62CE: ; 62CE XXX called by 4B2 948 989 5BF9 5D15 call $62FF ld a,$19 call Predef 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 ; known jump sources: 62ce (1:62ce) Func_62ff: ; 62ff (1:62ff) ld a, [$d72d] cp $ef jr nz, .asm_6314 ld hl, $6428 ld a, [$FF00+$aa] cp $2 jr z, .asm_6334 ld hl, $6430 jr .asm_6334 .asm_6314 cp $f0 jr nz, .asm_6326 ld hl, $6438 ld a, [$FF00+$aa] cp $2 jr z, .asm_6334 ld hl, $6440 jr .asm_6334 .asm_6326 ld a, [$d732] bit 1, a jr nz, .asm_6346 bit 2, a jr nz, .asm_6346 ld hl, $6420 .asm_6334 ld de, W_CURMAP ; $d35e ld c, $7 .asm_6339 ld a, [hli] ld [de], a inc de dec c jr nz, .asm_6339 ld a, [hli] ld [W_CURMAPTILESET], a ; $d367 xor a jr .asm_63b3 .asm_6346 ld a, [$d365] ld hl, $d732 bit 4, [hl] jr nz, .asm_635b bit 6, [hl] res 6, [hl] jr z, .asm_638e ld a, [$d719] jr .asm_6391 .asm_635b ld hl, $d72d res 4, [hl] ld a, [$d71d] ld b, a ld [W_CURMAP], a ; $d35e ld a, [$d71e] ld c, a ld hl, $63bf ld de, $0 ld a, $6 ld [$d12f], a .asm_6376 ld a, [hli] cp b jr z, .asm_637d inc hl jr .asm_6381 .asm_637d ld a, [hli] cp c jr z, .asm_6388 .asm_6381 ld a, [$d12f] add e ld e, a jr .asm_6376 .asm_6388 ld hl, $63d8 add hl, de jr .asm_63a4 .asm_638e ld a, [$d71a] .asm_6391 ld b, a ld [W_CURMAP], a ; $d35e ld hl, $6448 .asm_6398 ld a, [hli] inc hl cp b jr z, .asm_63a1 inc hl inc hl jr .asm_6398 .asm_63a1 ld a, [hli] ld h, [hl] ld l, a .asm_63a4 ld de, $d35f ld c, $6 .asm_63a9 ld a, [hli] ld [de], a inc de dec c jr nz, .asm_63a9 xor a ld [W_CURMAPTILESET], a ; $d367 .asm_63b3 ld [$d4e2], a ld [$d4e3], a ld a, $ff ld [$d42f], a ret INCBIN "baserom.gbc",$63bf,$6420 - $63bf 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,$64ea - $64ca ; known jump sources: 62e8 (1:62e8) Func_64ea: ; 64ea (1:64ea) ret ; known jump sources: e834 (3:6834), f33c (3:733c) Func_64eb: ; 64eb (1:64eb) call Func_3719 call Load16BitRegisters push hl ld a, [W_ISINBATTLE] ; $d057 dec a ld hl, $c3a0 ld b, $4 ld c, $b call z, ClearScreenArea ld a, [$cf91] ld [$d11e], a call GetMonName ld hl, $6557 call PrintText ld hl, $c43a ld bc, $80f ld a, $14 ld [$d125], a call DisplayTextBoxID pop hl ld a, [W_CURMENUITEMID] ; $cc26 and a jr nz, .asm_654c ld a, [$cfcb] push af xor a ld [$cfcb], a push hl ld a, $2 ld [$d07d], a call Func_6596 ld a, [W_ISINBATTLE] ; $d057 and a jr nz, .asm_653e call Func_3e08 .asm_653e call Func_3725 pop hl pop af ld [$cfcb], a ld a, [$cf4b] cp $50 ret nz .asm_654c ld d, h ld e, l ld hl, $cd6d ld bc, $b jp CopyData ; 6557 (1:6557) UnnamedText_6557: ; 0x6557 TX_FAR _UnnamedText_6557 db $50 ; 0x6557 + 5 bytes ; known jump sources: 1daa0 (7:5aa0) Func_655c: ; 655c (1:655c) ld hl, $cee9 xor a ld [$cfcb], a ld a, $2 ld [$d07d], a call Func_6596 call GBPalWhiteOutWithDelay3 call Func_3dbe call LoadGBPal ld a, [$cf4b] cp $50 jr z, .asm_6594 ld hl, W_PARTYMON1NAME ; $d2b5 ld bc, $b ld a, [W_WHICHPOKEMON] ; $cf92 call AddNTimes ld e, l ld d, h ld hl, $cee9 ld bc, $b call CopyData and a ret .asm_6594 scf ret ; known jump sources: 6532 (1:6532), 6568 (1:6568), 6981 (1:6981), 69c9 (1:69c9) Func_6596: ; 6596 (1:6596) push hl ld hl, $d730 set 6, [hl] call GBPalWhiteOutWithDelay3 call ClearScreen call Func_2429 ld b, $8 call GoPAL_SET call LoadHpBarAndStatusTilePatterns call Func_675b ld b, BANK(Func_7176c) ld hl, Func_7176c call Bankswitch ; indirect jump to Func_7176c (7176c (1c:576c)) ld hl, $c3f0 ld b, $9 ld c, $12 call TextBoxBorder call Func_68f8 ld a, $3 ld [W_TOPMENUITEMY], a ; $cc24 ld a, $1 ld [W_TOPMENUITEMX], a ; $cc25 ld [W_OLDMENUITEMID], a ; $cc2a ld [W_CURMENUITEMID], a ; $cc26 ld a, $ff ld [W_MENUWATCHEDKEYS], a ; $cc29 ld a, $7 ld [W_MAXMENUITEMID], a ; $cc28 ld a, $50 ld [$cf4b], a xor a ld hl, $ceea ld [hli], a ld [hli], a ld [W_SUBANIMTRANSFORM], a ; $d08b call Func_676f call GBPalNormal ld a, [$ceea] and a jr nz, .asm_662d call Func_680e call PlaceMenuCursor .asm_65ff ld a, [W_CURMENUITEMID] ; $cc26 push af ld b, BANK(Func_716f7) ld hl, Func_716f7 call Bankswitch ; indirect jump to Func_716f7 (716f7 (1c:56f7)) pop af ld [W_CURMENUITEMID], a ; $cc26 call GetJoypadStateLowSensitivity ld a, [$FF00+$b3] and a jr z, .asm_65ff ld hl, $665e .asm_661a sla a jr c, .asm_6624 inc hl inc hl inc hl inc hl jr .asm_661a .asm_6624 ld a, [hli] ld e, a ld a, [hli] ld d, a ld a, [hli] ld h, [hl] ld l, a push de jp [hl] .asm_662d pop de ld hl, $cf4b ld bc, $b call CopyData call GBPalWhiteOutWithDelay3 call ClearScreen call CleanLCD_OAM call GoPAL_SET_CF1C call GBPalNormal xor a ld [W_SUBANIMTRANSFORM], a ; $d08b ld hl, $d730 res 6, [hl] ld a, [W_ISINBATTLE] ; $d057 and a jp z, LoadTextBoxTilePatterns ld hl, Func_3ee5b ld b, BANK(Func_3ee5b) jp Bankswitch ; indirect jump to Func_3ee5b (3ee5b (f:6e5b)) INCBIN "baserom.gbc",$665e,$667e - $665e .asm_667e pop de ld de, $65ed push de ld a, [$ceeb] xor $1 ld [$ceeb], a ret .asm_668c ld a, $1 ld [$ceea], a ret ld a, [W_CURMENUITEMID] ; $cc26 cp $5 jr nz, .asm_66a0 ld a, [W_TOPMENUITEMX] ; $cc25 cp $11 jr z, .asm_668c .asm_66a0 ld a, [W_CURMENUITEMID] ; $cc26 cp $6 jr nz, .asm_66ae ld a, [W_TOPMENUITEMX] ; $cc25 cp $1 jr z, .asm_667e .asm_66ae ld hl, W_MENUCURSORLOCATION ; $cc30 ld a, [hli] ld h, [hl] ld l, a inc hl ld a, [hl] ld [$ceed], a call Func_68eb ld a, [$ceed] cp $e5 ld de, $6885 jr z, .asm_66e3 cp $e4 ld de, $68d6 jr z, .asm_66e3 ld a, [$d07d] cp $2 jr nc, .asm_66db ld a, [$cee9] cp $7 jr .asm_66e0 .asm_66db ld a, [$cee9] cp $a .asm_66e0 jr c, .asm_66ea ret .asm_66e3 push hl call Func_6871 pop hl ret nc dec hl .asm_66ea ld a, [$ceed] ld [hli], a ld [hl], $50 ld a, $90 call Func_23b1 ret ld a, [$cee9] and a ret z call Func_68eb dec hl ld [hl], $50 ret ld a, [W_CURMENUITEMID] ; $cc26 cp $6 ret z ld a, [W_TOPMENUITEMX] ; $cc25 cp $11 jp z, Func_6714 inc a inc a jr asm_6755 ; known jump sources: 670d (1:670d) Func_6714: ; 6714 (1:6714) ld a, $1 jr asm_6755 ld a, [W_CURMENUITEMID] ; $cc26 cp $6 ret z ld a, [W_TOPMENUITEMX] ; $cc25 dec a jp z, Func_6728 dec a jr asm_6755 ; known jump sources: 6722 (1:6722) Func_6728: ; 6728 (1:6728) ld a, $11 jr asm_6755 ld a, [W_CURMENUITEMID] ; $cc26 dec a ld [W_CURMENUITEMID], a ; $cc26 and a ret nz ld a, $6 ld [W_CURMENUITEMID], a ; $cc26 ld a, $1 jr asm_6755 ld a, [W_CURMENUITEMID] ; $cc26 inc a ld [W_CURMENUITEMID], a ; $cc26 cp $7 jr nz, .asm_6750 ld a, $1 ld [W_CURMENUITEMID], a ; $cc26 jr asm_6755 .asm_6750 cp $6 ret nz ld a, $1 asm_6755: ; 6755 (1:6755) ld [W_TOPMENUITEMX], a ; $cc25 jp EraseMenuCursor ; known jump sources: 65ad (1:65ad) Func_675b: ; 675b (1:675b) ld de, $6767 ld hl, $8f00 ld bc, $1 jp CopyVideoDataDouble INCBIN "baserom.gbc",$6767,$676f - $6767 ; known jump sources: 65ed (1:65ed) Func_676f: ; 676f (1:676f) xor a ld [H_AUTOBGTRANSFERENABLED], a ; $FF00+$ba ld a, [$ceeb] and a ld de, $679e jr nz, .asm_677e ld de, $67d6 .asm_677e ld hl, $c406 ld bc, $509 .asm_6784 push bc .asm_6785 ld a, [de] ld [hli], a inc hl inc de dec c jr nz, .asm_6785 ld bc, $16 add hl, bc pop bc dec b jr nz, .asm_6784 call PlaceString ld a, $1 ld [H_AUTOBGTRANSFERENABLED], a ; $FF00+$ba jp Delay3 INCBIN "baserom.gbc",$679e,$680e - $679e ; known jump sources: 65f9 (1:65f9) Func_680e: ; 680e (1:680e) call Func_68eb ld a, c ld [$cee9], a ld hl, $c3d2 ld bc, $10a call ClearScreenArea ld hl, $c3d2 ld de, $cf4b call PlaceString ld hl, $c3e6 ld a, [$d07d] cp $2 jr nc, .asm_6835 ld b, $7 jr .asm_6837 .asm_6835 ld b, $a .asm_6837 ld a, $76 .asm_6839 ld [hli], a dec b jr nz, .asm_6839 ld a, [$d07d] cp $2 ld a, [$cee9] jr nc, .asm_684b cp $7 jr .asm_684d .asm_684b cp $a .asm_684d jr nz, .asm_6867 call EraseMenuCursor ld a, $11 ld [W_TOPMENUITEMX], a ; $cc25 ld a, $5 ld [W_CURMENUITEMID], a ; $cc26 ld a, [$d07d] cp $2 ld a, $9 jr nc, .asm_6867 ld a, $6 .asm_6867 ld c, a ld b, $0 ld hl, $c3e6 add hl, bc ld [hl], $77 ret ; known jump sources: 66e4 (1:66e4) Func_6871: ; 6871 (1:6871) push de call Func_68eb dec hl ld a, [hl] pop hl ld de, $2 call IsInArray ret nc inc hl ld a, [hl] ld [$ceed], a ret INCBIN "baserom.gbc",$6885,$68eb - $6885 ; known jump sources: 66b9 (1:66b9), 66fb (1:66fb), 680e (1:680e), 6872 (1:6872) Func_68eb: ; 68eb (1:68eb) ld hl, $cf4b ld c, $0 .asm_68f0 ld a, [hl] cp $50 ret z inc hl inc c jr .asm_68f0 ; known jump sources: 65c2 (1:65c2) Func_68f8: ; 68f8 (1:68f8) ld hl, $c3b4 ld a, [$d07d] ld de, $693f and a jr z, .asm_6934 ld de, $6945 dec a jr z, .asm_6934 ld a, [$cf91] ld [$cd5d], a push af ld b, BANK(Func_71882) ld hl, Func_71882 call Bankswitch ; indirect jump to Func_71882 (71882 (1c:5882)) pop af ld [$d11e], a call GetMonName ld hl, $c3b8 call PlaceString ld hl, $1 add hl, bc ld [hl], $c9 ld hl, $c3dd ld de, $6953 jr .asm_693c .asm_6934 call PlaceString ld l, c ld h, b ld de, $694d .asm_693c jp PlaceString INCBIN "baserom.gbc",$693f,$695d - $693f ; known jump sources: 619e (1:619e) Func_695d: ; 695d (1:695d) call Unnamed_6a12 ld de, $6aa8 call Func_6a6c ld a, [W_CURMENUITEMID] ; $cc26 and a jr z, .asm_697a ld hl, $6af2 call Func_6ad6 ld de, W_PLAYERNAME ; $d158 call Func_69ec jr .asm_6999 .asm_697a ld hl, W_PLAYERNAME ; $d158 xor a ld [$d07d], a call Func_6596 ld a, [$cf4b] cp $50 jr z, .asm_697a call ClearScreen call Delay3 ld de, $6ede ld b, $4 call IntroPredef3B .asm_6999 ld hl, $699f jp PrintText ; 699f (1:699f) UnnamedText_699f: ; 0x699f TX_FAR _UnnamedText_699f db $50 ; 0x699f + 5 bytes ; 0x69a4 call Unnamed_6a12 ; 0x69a4 call 0x6a12 ld de, DefaultNamesRival ; 0x69aa call Func_6a6c ld a, [W_CURMENUITEMID] ; $cc26 and a jr z, .asm_69c1 ; 69b3 (1:69b3) ld hl, DefaultNamesRivalList call Func_6ad6 ld de, W_RIVALNAME ; $d34a call Func_69ec jr .asm_69e1 .asm_69c1 ld hl, W_RIVALNAME ; $d34a ld a, $1 ld [$d07d], a call Func_6596 ld a, [$cf4b] cp $50 jr z, .asm_69c1 call ClearScreen call Delay3 ld de, $6049 ld b, $13 call IntroPredef3B .asm_69e1 ld hl, $69e7 jp PrintText ; 69e7 (1:69e7) UnnamedText_69e7: ; 0x69e7 TX_FAR _UnnamedText_69e7 db $50 ; 0x69e7 + 5 bytes ; known jump sources: 6975 (1:6975), 69bc (1:69bc) Func_69ec: ; 69ec (1:69ec) push de ld hl, $c3a0 ld bc, $c0b call ClearScreenArea ld c, $a call DelayFrames pop de ld hl, $cd6d ld bc, $b call CopyData call Delay3 ld hl, $c3fc ld de, $67d ld a, $ff jr asm_6a19 ; 6a12 (1:6a12) Unnamed_6a12: ; 0x6a12 ld hl, $c3f5 ld de, $67d xor a asm_6a19: ; 6a19 (1:6a19) push hl push de push bc ld [$FF00+$8d], a ld a, d ld [H_DOWNARROWBLINKCNT1], a ; $FF00+$8b ld a, e ld [H_DOWNARROWBLINKCNT2], a ; $FF00+$8c ld c, a ld a, [$FF00+$8d] and a jr nz, .asm_6a2d ld d, $0 add hl, de .asm_6a2d ld d, h ld e, l .asm_6a2f xor a ld [H_AUTOBGTRANSFERENABLED], a ; $FF00+$ba ld a, [$FF00+$8d] and a jr nz, .asm_6a3c ld a, [hli] ld [hld], a dec hl jr .asm_6a3f .asm_6a3c ld a, [hld] ld [hli], a inc hl .asm_6a3f dec c jr nz, .asm_6a2f ld a, [$FF00+$8d] and a jr z, .asm_6a4a xor a dec hl ld [hl], a .asm_6a4a ld a, $1 ld [H_AUTOBGTRANSFERENABLED], a ; $FF00+$ba call Delay3 ld a, [H_DOWNARROWBLINKCNT2] ; $FF00+$8c ld c, a ld h, d ld l, e ld a, [$FF00+$8d] and a jr nz, .asm_6a5e inc hl jr .asm_6a5f .asm_6a5e dec hl .asm_6a5f ld d, h ld e, l ld a, [H_DOWNARROWBLINKCNT1] ; $FF00+$8b dec a ld [H_DOWNARROWBLINKCNT1], a ; $FF00+$8b jr nz, .asm_6a2f pop bc pop de pop hl ret ; known jump sources: 6963 (1:6963), 69aa (1:69aa) Func_6a6c: ; 6a6c (1:6a6c) push de ld hl, $c3a0 ld b, $a ld c, $9 call TextBoxBorder ld hl, $c3a3 ld de, $6aa3 call PlaceString pop de ld hl, $c3ca call PlaceString call Func_2429 xor a ld [W_CURMENUITEMID], a ; $cc26 ld [W_OLDMENUITEMID], a ; $cc2a inc a ld [W_TOPMENUITEMX], a ; $cc25 ld [W_MENUWATCHEDKEYS], a ; $cc29 inc a ld [W_TOPMENUITEMY], a ; $cc24 inc a ld [W_MAXMENUITEMID], a ; $cc28 jp HandleMenuInput INCBIN "baserom.gbc",$6aa3,$6aa8 - $6aa3 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 ; known jump sources: 696f (1:696f), 69b6 (1:69b6) Func_6ad6: ; 6ad6 (1:6ad6) ld b, a ld c, $0 .asm_6ad9 ld d, h ld e, l .asm_6adb ld a, [hli] cp $50 jr nz, .asm_6adb ld a, b cp c jr z, .asm_6ae7 inc c jr .asm_6ad9 .asm_6ae7 ld h, d ld l, e ld de, $cd6d ld bc, $14 jp CopyData ; 6af2 (1:6af2) 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 ; known jump sources: e537 (3:6537), 3afae (e:6fae) Func_6e43: ; 6e43 (1:6e43) call Func_3719 ld a, [W_WHICHPOKEMON] ; $cf92 ld hl, W_PARTYMON1NAME ; $d2b5 call GetPartyMonName ld hl, $cd6d ld de, $d036 ld bc, $b call CopyData ; known jump sources: 6ef2 (1:6ef2) Func_6e5b: ; 6e5b (1:6e5b) ld hl, W_PARTYMON1_MOVE1 ; $d173 ld bc, $2c ld a, [W_WHICHPOKEMON] ; $cf92 call AddNTimes ld d, h ld e, l ld b, $4 .asm_6e6b ld a, [hl] and a jr z, .asm_6e8b inc hl dec b jr nz, .asm_6e6b push de call Func_6f07 pop de jp c, Func_6eda push hl push de ld [$d11e], a call GetMoveName ld hl, $6fc8 call PrintText pop de pop hl .asm_6e8b ld a, [$d0e0] ld [hl], a ld bc, $15 add hl, bc push hl push de dec a ld hl, $4000 ld bc, $6 call AddNTimes ld de, $cee9 ld a, $e call FarCopyData ld a, [$ceee] pop de pop hl ld [hl], a ld a, [W_ISINBATTLE] ; $d057 and a jp z, Func_6efe ld a, [W_WHICHPOKEMON] ; $cf92 ld b, a ld a, [W_PLAYERMONNUMBER] ; $cc2f cp b jp nz, Func_6efe ld h, d ld l, e ld de, $d01c ld bc, $4 call CopyData ld bc, $11 add hl, bc ld de, W_PLAYERMONPP ; $d02d ld bc, $4 call CopyData jp Func_6efe ; known jump sources: 6e78 (1:6e78) Func_6eda: ; 6eda (1:6eda) ld hl, $6fb9 call PrintText ld hl, $c43a ld bc, $80f ld a, $14 ld [$d125], a call DisplayTextBoxID ld a, [W_CURMENUITEMID] ; $cc26 and a jp nz, Func_6e5b ld hl, $6fbe call PrintText ld b, $0 ret ; known jump sources: 6eb1 (1:6eb1), 6ebc (1:6ebc), 6ed7 (1:6ed7) Func_6efe: ; 6efe (1:6efe) ld hl, $6fad call PrintText ld b, $1 ret ; known jump sources: 6e74 (1:6e74) Func_6f07: ; 6f07 (1:6f07) push hl ld hl, $6fc3 call PrintText ld hl, $c43a ld bc, $80f ld a, $14 ld [$d125], a call DisplayTextBoxID pop hl ld a, [W_CURMENUITEMID] ; $cc26 rra ret c ld bc, $fffc add hl, bc push hl ld de, $d0dc ld bc, $4 call CopyData ld hl, Func_39b87 ld b, BANK(Func_39b87) call Bankswitch ; indirect jump to Func_39b87 (39b87 (e:5b87)) pop hl .asm_6f39 push hl ld hl, $6fb4 call PrintText ld hl, $c430 ld b, $4 ld c, $e call TextBoxBorder ld hl, $c446 ld de, $d0e1 ld a, [$FF00+$f6] set 2, a ld [$FF00+$f6], a call PlaceString ld a, [$FF00+$f6] res 2, a ld [$FF00+$f6], a ld hl, W_TOPMENUITEMY ; $cc24 ld a, $8 ld [hli], a ld a, $5 ld [hli], a xor a ld [hli], a inc hl ld a, [$cd6c] ld [hli], a ld a, $3 ld [hli], a ld [hl], $0 ld hl, $fff6 set 1, [hl] call HandleMenuInput ld hl, $fff6 res 1, [hl] push af call Func_3725 pop af pop hl bit 1, a jr nz, .asm_6fab push hl ld a, [W_CURMENUITEMID] ; $cc26 ld c, a ld b, $0 add hl, bc ld a, [hl] push af push bc call IsMoveHM pop bc pop de ld a, d jr c, .asm_6fa2 pop hl add hl, bc and a ret .asm_6fa2 ld hl, $6fe1 call PrintText pop hl jr .asm_6f39 .asm_6fab scf ret INCBIN "baserom.gbc",$6fad,$6fb4 - $6fad 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 PREDEF HealPartyPredef 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 ; known jump sources: 5d34 (1:5d34), 727c (1:727c), 728f (1:728f) Func_72d7: ; 72d7 (1:72d7) call Delay3 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 ret ; 72ea (1:72ea) ; 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 "キャンセル@" ld hl, $d730 set 6, [hl] ld a, $f ld [$d125], a call DisplayTextBoxID ld hl, $c3c1 ld b, $1 ld c, $6 call ClearScreenArea ld hl, $c3c0 ld de, W_PLAYERMONEY3 ; $d347 ld c, $a3 call PrintBCDNumber ld hl, $d730 res 6, [hl] ret INCBIN "baserom.gbc",$74e2,$74ea - $74e2 ld a, [$d730] set 6, a ld [$d730], a xor a ld [$d12d], a ld a, $e ld [$d125], a call DisplayTextBoxID ld a, $3 ld [W_MENUWATCHEDKEYS], a ; $cc29 ld a, $2 ld [W_MAXMENUITEMID], a ; $cc28 ld a, $1 ld [W_TOPMENUITEMY], a ; $cc24 ld a, $1 ld [W_TOPMENUITEMX], a ; $cc25 xor a ld [W_CURMENUITEMID], a ; $cc26 ld [W_OLDMENUITEMID], a ; $cc2a ld [$cc37], a ld a, [$d730] res 6, a ld [$d730], a call HandleMenuInput call PlaceUnfilledArrowMenuCursor bit 0, a jr nz, .asm_7539 bit 1, a jr z, .asm_7539 ld a, $2 ld [$d12e], a jr .asm_754c .asm_7539 ld a, $1 ld [$d12e], a ld a, [W_CURMENUITEMID] ; $cc26 ld [$d12d], a ld b, a ld a, [W_MAXMENUITEMID] ; $cc28 cp b jr z, .asm_754c ret .asm_754c ld a, $2 ld [$d12e], a ld a, [W_CURMENUITEMID] ; $cc26 ld [$d12d], a scf ret ; known jump sources: 72ef (1:72ef) Func_7559: ; 7559 (1:7559) push hl ld a, [$d730] set 6, a ld [$d730], a xor a ld [$d12d], a ld [$d12e], a ld a, $3 ld [W_MENUWATCHEDKEYS], a ; $cc29 ld a, $1 ld [W_MAXMENUITEMID], a ; $cc28 ld a, b ld [W_TOPMENUITEMY], a ; $cc24 ld a, c ld [W_TOPMENUITEMX], a ; $cc25 xor a ld [W_OLDMENUITEMID], a ; $cc2a ld [$cc37], a push hl ld hl, $d12c bit 7, [hl] res 7, [hl] jr z, .asm_758d inc a .asm_758d ld [W_CURMENUITEMID], a ; $cc26 pop hl push hl push hl call Func_763e ld a, [$d12c] ld hl, $7671 ld e, a ld d, $0 ld a, $5 .asm_75a1 add hl, de dec a jr nz, .asm_75a1 ld a, [hli] ld c, a ld a, [hli] ld b, a ld e, l ld d, h pop hl push de ld a, [$d12c] cp $5 jr nz, .asm_75b9 call Func_5ab3 jr .asm_75bc .asm_75b9 call TextBoxBorder .asm_75bc call Func_2429 pop hl ld a, [hli] and a ld bc, $16 jr z, .asm_75ca ld bc, $2a .asm_75ca ld a, [hli] ld e, a ld a, [hli] ld d, a pop hl add hl, bc call PlaceString ld hl, $d730 res 6, [hl] ld a, [$d12c] cp $7 jr nz, .asm_7603 xor a ld [$d12c], a ld a, [$cd60] push af push hl ld hl, $cd60 bit 5, [hl] set 5, [hl] pop hl .asm_75f0 call HandleMenuInput bit 1, a jr nz, .asm_75f0 pop af pop hl ld [$cd60], a ld a, $90 call Func_23b1 jr .asm_760f .asm_7603 xor a ld [$d12c], a call HandleMenuInput pop hl bit 1, a jr nz, .asm_7627 .asm_760f ld a, [W_CURMENUITEMID] ; $cc26 ld [$d12d], a and a jr nz, .asm_7627 ld a, $1 ld [$d12e], a ld c, $f call DelayFrames call Func_7656 and a ret .asm_7627 ld a, $1 ld [W_CURMENUITEMID], a ; $cc26 ld [$d12d], a ld a, $2 ld [$d12e], a ld c, $f call DelayFrames call Func_7656 scf ret ; known jump sources: 7593 (1:7593) Func_763e: ; 763e (1:763e) ld de, $cee9 ld bc, $506 .asm_7644 ld a, [hli] ld [de], a inc de dec c jr nz, .asm_7644 push bc ld bc, $e add hl, bc pop bc ld c, $6 dec b jr nz, .asm_7644 ret ; known jump sources: 7622 (1:7622), 7639 (1:7639) Func_7656: ; 7656 (1:7656) ld de, $cee9 ld bc, $506 .asm_765c ld a, [de] inc de ld [hli], a dec c jr nz, .asm_765c push bc ld bc, $e add hl, bc pop bc ld c, $6 dec b jr nz, .asm_765c call Func_2429 ret INCBIN "baserom.gbc",$7671,$76e1 - $7671 xor a ld hl, W_WHICHTRADE ; $cd3d ld [hli], a ld [hli], a ld [hli], a ld [hli], a ld [hli], a ld [hl], $c call Func_77d6 ld a, [$cd41] and a jr nz, .asm_770f ld hl, $c487 ld b, $5 ld c, $7 call TextBoxBorder call Func_2429 ld a, $c ld [$FF00+$f7], a ld hl, $c49d ld de, $77c2 jp PlaceString .asm_770f push af ld hl, $c47c ld a, [$cd42] dec a ld e, a ld d, $0 add hl, de ld b, $5 ld a, $12 sub e ld c, a pop af ld de, $ffd8 .asm_7725 add hl, de inc b inc b dec a jr nz, .asm_7725 ld de, $ffec add hl, de inc b call TextBoxBorder call Func_2429 ld hl, $c490 ld a, [$cd42] inc a ld e, a ld d, $0 add hl, de ld de, $ffd8 ld a, [$cd41] .asm_7747 add hl, de dec a jr nz, .asm_7747 xor a ld [$cd41], a ld de, W_WHICHTRADE ; $cd3d .asm_7752 push hl ld hl, $778d ld a, [de] and a jr z, .asm_7776 inc de ld b, a .asm_775c dec b jr z, .asm_7766 .asm_775f ld a, [hli] cp $50 jr nz, .asm_775f jr .asm_775c .asm_7766 ld b, h ld c, l pop hl push de ld d, b ld e, c call PlaceString ld bc, $28 add hl, bc pop de jr .asm_7752 .asm_7776 pop hl ld a, [$cd42] ld [$FF00+$f7], a ld hl, $c490 ld a, [$cd42] inc a ld e, a ld d, $0 add hl, de ld de, $77c2 jp PlaceString ; 778d (1:778d) 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@" ; known jump sources: 76ec (1:76ec) Func_77d6: ; 77d6 (1:77d6) ld a, [W_WHICHPOKEMON] ; $cf92 ld hl, W_PARTYMON1_MOVE1 ; $d173 ld bc, $2c call AddNTimes ld d, h ld e, l ld c, $5 ld hl, W_WHICHTRADE ; $cd3d .asm_77e9 push hl .asm_77ea dec c jr z, .asm_7821 ld a, [de] and a jr z, .asm_7821 ld b, a inc de ld hl, $7823 .asm_77f6 ld a, [hli] cp $ff jr z, .asm_77ea cp b jr z, .asm_7802 inc hl inc hl jr .asm_77f6 .asm_7802 ld a, b ld [$cd43], a ld a, [hli] ld b, [hl] pop hl ld [hli], a ld a, [$cd41] inc a ld [$cd41], a ld a, [$cd42] cp b jr c, .asm_781b ld a, b ld [$cd42], a .asm_781b ld a, [$cd43] ld b, a jr .asm_77e9 .asm_7821 pop hl ret INCBIN "baserom.gbc",$7823,$783f - $7823 ; known jump sources: 3f2ee (f:72ee) Func_783f: ; 783f (1:783f) ld hl, W_DAMAGE ; $d0d7 ld a, [hl] srl a ld [hli], a ld a, [hl] rr a ld [hld], a or [hl] jr nz, .asm_784f inc hl inc [hl] .asm_784f ld hl, W_PLAYERMONCURHP ; $d015 ld de, W_PLAYERMONMAXHP ; $d023 ld a, [H_WHOSETURN] ; $FF00+$f3 and a jp z, Func_7861 ld hl, W_ENEMYMONCURHP ; $cfe6 ld de, W_ENEMYMONMAXHP ; $cff4 ; known jump sources: 7858 (1:7858) Func_7861: ; 7861 (1:7861) ld bc, $ceec ld a, [hli] ld [bc], a ld a, [hl] dec bc ld [bc], a ld a, [de] dec bc ld [bc], a inc de ld a, [de] dec bc ld [bc], a ld a, [$d0d8] ld b, [hl] add b ld [hld], a ld [$ceed], a ld a, [W_DAMAGE] ; $d0d7 ld b, [hl] adc b ld [hli], a ld [$ceee], a jr c, .asm_7890 ld a, [hld] ld b, a ld a, [de] dec de sub b ld a, [hli] ld b, a ld a, [de] inc de sbc b jr nc, .asm_789c .asm_7890 ld a, [de] ld [hld], a ld [$ceed], a dec de ld a, [de] ld [hli], a ld [$ceee], a inc de .asm_789c ld a, [H_WHOSETURN] ; $FF00+$f3 and a ld hl, $c45e ld a, $1 jr z, .asm_78aa ld hl, $c3ca xor a .asm_78aa ld [W_LISTMENUID], a ; $cf94 ld a, $48 call Predef ; indirect jump to Func_fa1d (fa1d (3:7a1d)) ld a, $0 call Predef ; indirect jump to Func_3cd60 (3cd60 (f:4d60)) ld a, $49 call Predef ; indirect jump to Func_3cdec (3cdec (f:4dec)) ld hl, Func_3cd43 ld b, BANK(Func_3cd43) call Bankswitch ; indirect jump to Func_3cd43 (3cd43 (f:4d43)) ld hl, $78dc ld a, [H_WHOSETURN] ; $FF00+$f3 and a ld a, [W_PLAYERMOVEEFFECT] ; $cfd3 jr z, .asm_78d2 ld a, [W_ENEMYMOVEEFFECT] ; $cfcd .asm_78d2 cp $8 jr nz, .asm_78d9 ld hl, $78e1 .asm_78d9 jp PrintText ; 78dc (1:78dc) UnnamedText_78dc: ; 0x78dc TX_FAR _UnnamedText_78dc db $50 ; 0x78dc + 5 bytes UnnamedText_78e1: ; 0x78e1 TX_FAR _UnnamedText_78e1 db $50 ; 0x78e1 + 5 bytes ; known jump sources: 3479 (0:3479), 17ebb (5:7ebb) Func_78e6: ; 78e6 (1:78e6) ld hl, $d730 set 6, [hl] ld a, $4 ld [$d0b6], a call Func_3719 xor a ld [$cc2c], a ld [$ccd3], a ld a, [$cd60] bit 3, a jr nz, Func_790c ld a, $99 call Func_23b1 ld hl, $7b22 call PrintText ; known jump sources: 78ff (1:78ff), 79a8 (1:79a8), 79c8 (1:79c8), 7a25 (1:7a25), 7a45 (1:7a45), 7aa2 (1:7aa2), 7ac4 (1:7ac4) Func_790c: ; 790c (1:790c) ld a, [$ccd3] ld [W_CURMENUITEMID], a ; $cc26 ld hl, $cd60 set 5, [hl] call Func_3701 ld hl, $c3a0 ld b, $8 ld c, $e call TextBoxBorder call Func_2429 ld hl, $c3ca ld de, $7af5 call PlaceString ld hl, W_TOPMENUITEMY ; $cc24 ld a, $2 ld [hli], a dec a ld [hli], a inc hl inc hl ld a, $3 ld [hli], a ld a, $3 ld [hli], a xor a ld [hl], a ld hl, W_LISTSCROLLOFFSET ; $cc36 ld [hli], a ld [hl], a ld [W_PLAYERMONNUMBER], a ; $cc2f ld hl, $7b27 call PrintText call HandleMenuInput bit 1, a jp nz, Func_796d call PlaceUnfilledArrowMenuCursor ld a, [W_CURMENUITEMID] ; $cc26 ld [$ccd3], a and a jp z, Func_7a12 dec a jp z, Func_7995 dec a jp z, Func_7a8f ; known jump sources: 7955 (1:7955) Func_796d: ; 796d (1:796d) ld a, [$cd60] bit 3, a jr nz, .asm_797c ld a, $9a call Func_23b1 call Func_3748 .asm_797c ld hl, $cd60 res 5, [hl] call Func_3701 xor a ld [W_LISTSCROLLOFFSET], a ; $cc36 ld [$cc2c], a ld hl, $d730 res 6, [hl] xor a ld [$cc3c], a ret ; known jump sources: 7966 (1:7966) Func_7995: ; 7995 (1:7995) xor a ld [W_CURMENUITEMID], a ; $cc26 ld [W_LISTSCROLLOFFSET], a ; $cc36 ld a, [W_NUMBAGITEMS] ; $d31d and a jr nz, Func_79ab ld hl, $7b3b call PrintText jp Func_790c ; known jump sources: 79a0 (1:79a0), 79e4 (1:79e4), 79f5 (1:79f5), 7a0f (1:7a0f) Func_79ab: ; 79ab (1:79ab) ld hl, $7b2c call PrintText ld hl, W_NUMBAGITEMS ; $d31d ld a, l ld [$cf8b], a ld a, h ld [$cf8c], a xor a ld [$cf93], a ld a, $3 ld [W_LISTMENUID], a ; $cf94 call DisplayListMenuID jp c, Func_790c call IsKeyItem ld a, $1 ld [$cf96], a ld a, [$d124] and a jr nz, .asm_79e7 ld hl, $7b31 call PrintText call DisplayChooseQuantityMenu cp $ff jp z, Func_79ab .asm_79e7 ld hl, W_NUMBOXITEMS ; $d53a call AddItemToInventory jr c, .asm_79f8 ld hl, $7b40 call PrintText jp Func_79ab .asm_79f8 ld hl, W_NUMBAGITEMS ; $d31d call RemoveItemFromInventory call Func_3748 ld a, $ab call Func_23b1 call Func_3748 ld hl, $7b36 call PrintText jp Func_79ab ; known jump sources: 7962 (1:7962) Func_7a12: ; 7a12 (1:7a12) xor a ld [W_CURMENUITEMID], a ; $cc26 ld [W_LISTSCROLLOFFSET], a ; $cc36 ld a, [W_NUMBOXITEMS] ; $d53a and a jr nz, Func_7a28 ld hl, $7b54 call PrintText jp Func_790c ; known jump sources: 7a1d (1:7a1d), 7a61 (1:7a61), 7a72 (1:7a72), 7a8c (1:7a8c) Func_7a28: ; 7a28 (1:7a28) ld hl, $7b45 call PrintText ld hl, W_NUMBOXITEMS ; $d53a ld a, l ld [$cf8b], a ld a, h ld [$cf8c], a xor a ld [$cf93], a ld a, $3 ld [W_LISTMENUID], a ; $cf94 call DisplayListMenuID jp c, Func_790c call IsKeyItem ld a, $1 ld [$cf96], a ld a, [$d124] and a jr nz, .asm_7a64 ld hl, $7b4a call PrintText call DisplayChooseQuantityMenu cp $ff jp z, Func_7a28 .asm_7a64 ld hl, W_NUMBAGITEMS ; $d31d call AddItemToInventory jr c, .asm_7a75 ld hl, $7b59 call PrintText jp Func_7a28 .asm_7a75 ld hl, W_NUMBOXITEMS ; $d53a call RemoveItemFromInventory call Func_3748 ld a, $ab call Func_23b1 call Func_3748 ld hl, $7b4f call PrintText jp Func_7a28 ; known jump sources: 796a (1:796a) Func_7a8f: ; 7a8f (1:7a8f) xor a ld [W_CURMENUITEMID], a ; $cc26 ld [W_LISTSCROLLOFFSET], a ; $cc36 ld a, [W_NUMBOXITEMS] ; $d53a and a jr nz, Func_7aa5 ld hl, $7b54 call PrintText jp Func_790c ; known jump sources: 7a9a (1:7a9a), 7aec (1:7aec), 7af2 (1:7af2) Func_7aa5: ; 7aa5 (1:7aa5) ld hl, $7b5e call PrintText ld hl, W_NUMBOXITEMS ; $d53a ld a, l ld [$cf8b], a ld a, h ld [$cf8c], a xor a ld [$cf93], a ld a, $3 ld [W_LISTMENUID], a ; $cf94 push hl call DisplayListMenuID pop hl jp c, Func_790c push hl call IsKeyItem pop hl ld a, $1 ld [$cf96], a ld a, [$d124] and a jr nz, .asm_7aef ld a, [$cf91] call IsItemHM jr c, .asm_7aef push hl ld hl, $7b63 call PrintText call DisplayChooseQuantityMenu pop hl cp $ff jp z, Func_7aa5 .asm_7aef call TossItem jp Func_7aa5 ; 7af5 (1:7af5) 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 ; known jump sources: 3924 (0:3924) Func_7b68: ; 7b68 (1:7b68) ld hl, W_NUMINPARTY ; $d163 ld a, [$cf95] and a jr z, .asm_7b74 ld hl, W_NUMINBOX ; $da80 .asm_7b74 ld a, [hl] dec a ld [hli], a ld a, [W_WHICHPOKEMON] ; $cf92 ld c, a ld b, $0 add hl, bc ld e, l ld d, h inc de .asm_7b81 ld a, [de] inc de ld [hli], a inc a jr nz, .asm_7b81 ld hl, W_PARTYMON1OT ; $d273 ld d, $5 ld a, [$cf95] and a jr z, .asm_7b97 ld hl, $dd2a ld d, $13 .asm_7b97 ld a, [W_WHICHPOKEMON] ; $cf92 call Func_3a7d ld a, [W_WHICHPOKEMON] ; $cf92 cp d jr nz, .asm_7ba6 ld [hl], $ff ret .asm_7ba6 ld d, h ld e, l ld bc, $b add hl, bc ld bc, W_PARTYMON1NAME ; $d2b5 ld a, [$cf95] and a jr z, .asm_7bb8 ld bc, $de06 .asm_7bb8 call CopyDataUntil ld hl, W_PARTYMON1_NUM ; $d16b (aliases: W_PARTYMON1DATA) ld bc, $2c ld a, [$cf95] and a jr z, .asm_7bcd ld hl, $da96 ld bc, $21 .asm_7bcd ld a, [W_WHICHPOKEMON] ; $cf92 call AddNTimes ld d, h ld e, l ld a, [$cf95] and a jr z, .asm_7be4 ld bc, $21 add hl, bc ld bc, $dd2a jr .asm_7beb .asm_7be4 ld bc, $2c add hl, bc ld bc, W_PARTYMON1OT ; $d273 .asm_7beb call CopyDataUntil ld hl, W_PARTYMON1NAME ; $d2b5 ld a, [$cf95] and a jr z, .asm_7bfa ld hl, $de06 .asm_7bfa ld bc, $b ld a, [W_WHICHPOKEMON] ; $cf92 call AddNTimes ld d, h ld e, l ld bc, $b add hl, bc ld bc, W_OWNEDPOKEMON ; $d2f7 ld a, [$cf95] and a jr z, .asm_7c15 ld bc, $dee2 .asm_7c15 jp CopyDataUntil INCBIN "baserom.gbc",$7c18,$7c49 - $7c18 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] ; known jump sources: 1a4 (0:1a4) Func_c000: ; c000 (3:4000) ld a, [$FF00+$f8] cp $f jp z, Func_c03c ld b, a ld a, [$FF00+$b1] ld e, a xor b ld d, a and e ld [$FF00+$b2], a ld a, d and b ld [$FF00+$b3], a ld a, b ld [$FF00+$b1], a ld a, [$d730] bit 5, a jr nz, Func_c034 ld a, [$FF00+$b1] ld [$FF00+$b4], a ld a, [$cd6b] and a ret z cpl ld b, a ld a, [$FF00+$b4] and b ld [$FF00+$b4], a ld a, [$FF00+$b3] and b ld [$FF00+$b3], a ret ; known jump sources: c01c (3:401c), f2c3 (3:72c3) Func_c034: ; c034 (3:4034) xor a ld [$FF00+$b4], a ld [$FF00+$b3], a ld [$FF00+$b2], a ret ; known jump sources: c004 (3:4004) Func_c03c: ; c03c (3:403c) call DelayFrame ld a, $30 ld [rJOYP], a ; $FF00+$0 ld hl, $ff8a dec [hl] jp z, Func_1f49 jp GetJoypadState INCBIN "baserom.gbc",$c04d,$c23d - $c04d ; 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 BANK(Route15GateUpstairs_h) 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) ; known jump sources: 3b3 (0:3b3), 5798 (1:5798) Func_c335: ; c335 (3:4335) ld a, $90 ld [$FF00+$b0], a ld [rWY], a ; $FF00+$4a xor a ld [H_AUTOBGTRANSFERENABLED], a ; $FF00+$ba ld [$d13b], a ld [W_LONEATTACKNO], a ; $d05c ld [$FF00+$b3], a ld [$FF00+$b2], a ld [$FF00+$b4], a ld [$cd6a], a ld [$d5a3], a ld hl, $d73f ld [hli], a ld [hl], a ld hl, W_WHICHTRADE ; $cd3d ld bc, $1e call FillMemory ret ; known jump sources: 924 (0:924) Func_c35f: ; c35f (3:435f) ld a, [$d3ae] and a ret z ld c, a ld hl, $d3af .asm_c368 ld a, [W_YCOORD] ; $d361 cp [hl] jr nz, .asm_c383 inc hl ld a, [W_XCOORD] ; $d362 cp [hl] jr nz, .asm_c384 inc hl ld a, [hli] ld [$d42f], a ld a, [hl] ld [H_DOWNARROWBLINKCNT1], a ; $FF00+$8b ld hl, $d736 set 2, [hl] ret .asm_c383 inc hl .asm_c384 inc hl inc hl inc hl dec c jr nz, .asm_c368 ret ; c38b (3:438b) CheckForceBikeOrSurf: ; C38B ld hl, $D732 bit 5, [hl] ret nz ld hl, ForcedBikeOrSurfMaps ld a, [W_YCOORD] ld b, a ld a, [W_XCOORD] ld c, a ld a, [W_CURMAP] ld d, a .loop ld a, [hli] cp $ff ret z ;if we reach FF then it's not part of the list cp d ;compare to current map jr nz, .incorrectMap ld a, [hli] cp b ;compare y-coord jr nz, .incorrectY ld a, [hli] cp c ;compare x-coord jr nz, .loop ; incorrect x-coord, check next item ld a, [W_CURMAP] cp SEAFOAM_ISLANDS_4 ld a, $2 ld [$d666], a jr z, .forceSurfing ld a, [$d35e] cp SEAFOAM_ISLANDS_5 ld a, $2 ld [$d668], a jr z, .forceSurfing ;force bike riding ld hl, $d732 set 5, [hl] ld a, $1 ld [$d700], a ld [$d11a], a jp ForceBikeOrSurf .incorrectMap inc hl .incorrectY inc hl jr .loop .forceSurfing ld a, $2 ld [$d700], a ld [$d11a], a jp ForceBikeOrSurf ; 0xc3e6 ForcedBikeOrSurfMaps: ;C3e6 ; map id, y, x db ROUTE_16,$0A,$11 db ROUTE_16,$0B,$11 db ROUTE_18,$08,$21 db ROUTE_18,$09,$21 db SEAFOAM_ISLANDS_4,$07,$12 db SEAFOAM_ISLANDS_4,$07,$13 db SEAFOAM_ISLANDS_5,$0E,$04 db SEAFOAM_ISLANDS_5,$0E,$05 db $FF ;end ; 0xc3ff ; known jump sources: 91c (0:91c) Func_c3ff: ; c3ff (3:43ff) push hl push de push bc ld a, [$c109] srl a ld c, a ld b, $0 ld hl, $4422 add hl, bc ld a, [hli] ld h, [hl] ld l, a ld a, [W_YCOORD] ; $d361 ld b, a ld a, [W_XCOORD] ; $d362 ld c, a ld de, $441e push de jp [hl] pop bc pop de pop hl ret INCBIN "baserom.gbc",$c422,$c42a - $c422 ld a, [W_CURMAPHEIGHT] ; $d368 add a dec a cp b jr z, .asm_c44c jr .asm_c44a ld a, b and a jr z, .asm_c44c jr .asm_c44a ld a, c and a jr z, .asm_c44c jr .asm_c44a ld a, [W_CURMAPWIDTH] ; $d369 add a dec a cp c jr z, .asm_c44c jr .asm_c44a .asm_c44a and a ret .asm_c44c scf ret push hl push de push bc call Func_c589 ld a, [W_CURMAP] ; $d35e cp $63 jr z, .asm_c490 ld a, [$c109] srl a ld c, a ld b, $0 ld hl, $4477 add hl, bc ld a, [hli] ld h, [hl] ld l, a ld a, [$cfc6] ld de, $1 call IsInArray .asm_c473 pop bc pop de pop hl ret INCBIN "baserom.gbc",$c477,$c490 - $c477 .asm_c490 ld a, [$cfc6] cp $15 jr nz, .asm_c49a scf jr .asm_c473 .asm_c49a and a jr .asm_c473 ; known jump sources: 6e0 (0:6e0), 1387f (4:787f) Func_c49d: ; c49d (3:449d) push hl push de push bc ld b, BANK(Func_1a609) ld hl, Func_1a609 call Bankswitch ; indirect jump to Func_1a609 (1a609 (6:6609)) jr c, .asm_c4c8 ld a, [W_CURMAPTILESET] ; $d367 add a ld c, a ld b, $0 ld hl, $44cc add hl, bc ld a, [hli] ld h, [hl] ld l, a ld de, $1 ld a, [$c45c] call IsInArray jr nc, .asm_c4c8 ld hl, $d736 res 2, [hl] .asm_c4c8 pop bc pop de pop hl ret INCBIN "baserom.gbc",$c4cc,$c52f - $c4cc ; known jump sources: 2aec (0:2aec) Func_c52f: ; c52f (3:452f) ld a, [W_CURMAP] ; $d35e cp $d9 ret c cp $e2 ret nc ld hl, $c3a0 ld b, $3 ld c, $7 call TextBoxBorder ld hl, $c3b5 ld de, W_SAFARITIMER1 ; $d70d ld bc, $203 call PrintNumber ld hl, $c3b8 ld de, $4579 call PlaceString ld hl, $c3dd ld de, $457e call PlaceString ld a, [W_NUMSAFARIBALLS] ; $da47 cp $a jr nc, .asm_c56d ld hl, $c3e1 ld a, $7f ld [hl], a .asm_c56d ld hl, $c3e2 ld de, W_NUMSAFARIBALLS ; $da47 ld bc, $102 jp PrintNumber INCBIN "baserom.gbc",$c579,$c586 - $c579 ; known jump sources: 47f (0:47f), b2e (0:b2e), b5a (0:b5a), c12 (0:c12), c2d (0:c2d), fd3 (0:fd3), 1a67f (6:667f), 52683 (14:6683) Func_c586: ; c586 (3:4586) call Load16BitRegisters ; known jump sources: c451 (3:4451) Func_c589: ; c589 (3:4589) ld a, [W_YCOORD] ; $d361 ld d, a ld a, [W_XCOORD] ; $d362 ld e, a ld a, [$c109] and a jr nz, .asm_c59d ld a, [$c484] inc d jr .asm_c5b9 .asm_c59d cp $4 jr nz, .asm_c5a7 ld a, [$c434] dec d jr .asm_c5b9 .asm_c5a7 cp $8 jr nz, .asm_c5b1 ld a, [$c45a] dec e jr .asm_c5b9 .asm_c5b1 cp $c jr nz, .asm_c5b9 ld a, [$c45e] inc e .asm_c5b9 ld c, a ld [$cfc6], a ret ; known jump sources: c60b (3:460b) Func_c5be: ; c5be (3:45be) xor a ld [$FF00+$db], a ld hl, W_YCOORD ; $d361 ld a, [hli] ld d, a ld e, [hl] ld a, [$c109] and a jr nz, .asm_c5d8 ld hl, $ffdb set 0, [hl] ld a, [$c4ac] inc d jr .asm_c603 .asm_c5d8 cp $4 jr nz, .asm_c5e7 ld hl, $ffdb set 1, [hl] ld a, [$c40c] dec d jr .asm_c603 .asm_c5e7 cp $8 jr nz, .asm_c5f6 ld hl, $ffdb set 2, [hl] ld a, [$c458] dec e jr .asm_c603 .asm_c5f6 cp $c jr nz, .asm_c603 ld hl, $ffdb set 3, [hl] ld a, [$c460] inc e .asm_c603 ld c, a ld [$d71c], a ld [$cfc6], a ret ; known jump sources: f265 (3:7265) Func_c60b: ; c60b (3:460b) call Func_c5be ld hl, $d530 ld a, [hli] ld h, [hl] ld l, a .asm_c614 ld a, [hli] cp $ff jr z, .asm_c632 cp c jr nz, .asm_c614 ld hl, $c7e call Func_c44 ld a, $ff jr c, .asm_c632 ld a, [$d71c] cp $15 ld a, $ff jr z, .asm_c632 call Func_c636 .asm_c632 ld [$d71c], a ret ; known jump sources: c62f (3:462f) Func_c636: ; c636 (3:4636) ld a, [$d718] dec a swap a ld d, $0 ld e, a ld hl, $c214 add hl, de ld a, [hli] ld [$FF00+$dc], a ld a, [hl] ld [$FF00+$dd], a ld a, [W_NUMSPRITES] ; $d4e1 ld c, a ld de, $f ld hl, $c214 ld a, [$FF00+$db] and $3 jr z, .asm_c678 .asm_c659 inc hl ld a, [$FF00+$dd] cp [hl] jr nz, .asm_c672 dec hl ld a, [hli] ld b, a ld a, [$FF00+$db] rrca jr c, .asm_c66c ld a, [$FF00+$dc] dec a jr .asm_c66f .asm_c66c ld a, [$FF00+$dc] inc a .asm_c66f cp b jr z, .asm_c697 .asm_c672 dec c jr z, .asm_c69a add hl, de jr .asm_c659 .asm_c678 ld a, [hli] ld b, a ld a, [$FF00+$dc] cp b jr nz, .asm_c691 ld b, [hl] ld a, [$FF00+$db] bit 2, a jr nz, .asm_c68b ld a, [$FF00+$dd] inc a jr .asm_c68e .asm_c68b ld a, [$FF00+$dd] dec a .asm_c68e cp b jr z, .asm_c697 .asm_c691 dec c jr z, .asm_c69a add hl, de jr .asm_c678 .asm_c697 ld a, $ff ret .asm_c69a xor a ret ; known jump sources: 622 (0:622) Func_c69c: ; c69c (3:469c) ld a, [$d730] add a jp c, .asm_c74f ld a, [W_NUMINPARTY] ; $d163 and a jp z, .asm_c74f call Func_c8de ld a, [$d13b] and $3 jp nz, .asm_c74f ld [W_WHICHPOKEMON], a ; $cf92 ld hl, W_PARTYMON1_STATUS ; $d16f ld de, W_PARTYMON1 ; $d164 .asm_c6be ld a, [hl] and $8 jr z, .asm_c6fd dec hl dec hl ld a, [hld] ld b, a ld a, [hli] or b jr z, .asm_c6fb ld a, [hl] dec a ld [hld], a inc a jr nz, .asm_c6d5 dec [hl] inc hl jr .asm_c6fb .asm_c6d5 ld a, [hli] or [hl] jr nz, .asm_c6fb push hl inc hl inc hl ld [hl], a ld a, [de] ld [$d11e], a push de ld a, [W_WHICHPOKEMON] ; $cf92 ld hl, W_PARTYMON1NAME ; $d2b5 call GetPartyMonName xor a ld [$cd6b], a call EnableAutoTextBoxDrawing ld a, $d0 ld [H_DOWNARROWBLINKCNT2], a ; $FF00+$8c call DisplayTextID pop de pop hl .asm_c6fb inc hl inc hl .asm_c6fd inc de ld a, [de] inc a jr z, .asm_c70e ld bc, $2c add hl, bc push hl ld hl, W_WHICHPOKEMON ; $cf92 inc [hl] pop hl jr .asm_c6be .asm_c70e ld hl, W_PARTYMON1_STATUS ; $d16f ld a, [W_NUMINPARTY] ; $d163 ld d, a ld e, $0 .asm_c717 ld a, [hl] and $8 or e ld e, a ld bc, $2c add hl, bc dec d jr nz, .asm_c717 ld a, e and a jr z, .asm_c733 ld b, $2 ld a, $1f call Predef ; indirect jump to Func_480eb (480eb (12:40eb)) ld a, $97 call Func_23b1 .asm_c733 ld a, $14 call Predef ; indirect jump to Func_3ca83 (3ca83 (f:4a83)) ld a, d and a jr nz, .asm_c74f call EnableAutoTextBoxDrawing ld a, $d1 ld [H_DOWNARROWBLINKCNT2], a ; $FF00+$8c call DisplayTextID ld hl, $d72e set 5, [hl] ld a, $ff jr .asm_c750 .asm_c74f xor a .asm_c750 ld [$d12d], a ret ; known jump sources: 11fa (0:11fa), 62d3 (1:62d3) Func_c754: ; c754 (3:4754) call Load16BitRegisters push hl ld d, $0 ld a, [W_CURMAPTILESET] ; $d367 add a add a ld b, a add a add b jr nc, .asm_c765 inc d .asm_c765 ld e, a ; c766 (3:4766) ld hl, TilesetsHeadPtr add hl, de ld de, $d52b ld c, $b .asm_c76f ld a, [hli] ld [de], a inc de dec c jr nz, .asm_c76f ld a, [hl] ld [$FF00+$d7], a xor a ld [$FF00+$d8], a pop hl ld a, [W_CURMAPTILESET] ; $d367 push hl push de ld hl, $47b2 ld de, $1 call IsInArray pop de pop hl jr c, .asm_c797 ld a, [W_CURMAPTILESET] ; $d367 ld b, a ld a, [H_DOWNARROWBLINKCNT1] ; $FF00+$8b cp b jr z, .asm_c7b1 .asm_c797 ld a, [$d42f] cp $ff jr z, .asm_c7b1 call LoadDestinationWarpPosition ld a, [W_YCOORD] ; $d361 and $1 ld [W_YBLOCKCOORD], a ; $d363 ld a, [W_XCOORD] ; $d362 and $1 ld [W_XBLOCKCOORD], a ; $d364 .asm_c7b1 ret INCBIN "baserom.gbc",$c7b2,$c7be - $c7b2 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 ; known jump sources: c6aa (3:46aa) Func_c8de: ; c8de (3:48de) ld a, [$da48] and a ret z ld hl, $da6f inc [hl] ret nz dec hl inc [hl] ret nz dec hl inc [hl] ld a, [hl] cp $50 ret c ld a, $50 ld [hl], a ret ; c8f5 (3:48f5) ; 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,$cd99 - $cd97 ; known jump sources: 1320a (4:720a) Func_cd99: ; cd99 (3:4d99) ld hl, $d728 set 0, [hl] ld hl, $4daa call PrintText ld hl, $4dbb jp PrintText INCBIN "baserom.gbc",$cdaa,$cdaf - $cdaa ld a, [$cf91] call PlayCry call Delay3 jp TextScriptEnd ; cdbb (3:4dbb) UnnamedText_cdbb: ; 0xcdbb TX_FAR _UnnamedText_cdbb db $50 ; 0xcdbb + 5 bytes ; known jump sources: 131de (4:71de) Func_cdc0: ; cdc0 (3:4dc0) ld hl, $d728 set 1, [hl] ld a, [$d732] bit 5, a jr nz, .asm_cdec ld a, [W_CURMAP] ; $d35e cp $a2 ret nz ld a, [$d881] and $3 cp $3 ret z ld hl, $4df7 call ArePlayerCoordsInArray ret nc ld hl, $d728 res 1, [hl] ld hl, $4dfa jp PrintText .asm_cdec ld hl, $d728 res 1, [hl] ld hl, $4dff jp PrintText INCBIN "baserom.gbc",$cdf7,$cdfa - $cdf7 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,BANK(Unknown_7481f) ld hl,Unknown_7481f 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 ; known jump sources: d90a (3:590a), 4fdd4 (13:7dd4) Func_e7a4: ; e7a4 (3:67a4) ld de, W_NUMINBOX ; $da80 ld a, [de] inc a ld [de], a ld a, [$cf91] ld [$d0b5], a ld c, a .asm_e7b1 inc de ld a, [de] ld b, a ld a, c ld c, b ld [de], a cp $ff jr nz, .asm_e7b1 call GetBaseStats ld hl, $dd2a ld bc, $b ld a, [W_NUMINBOX] ; $da80 dec a jr z, .asm_e7ee dec a call AddNTimes push hl ld bc, $b add hl, bc ld d, h ld e, l pop hl ld a, [W_NUMINBOX] ; $da80 dec a ld b, a .asm_e7db push bc push hl ld bc, $b call CopyData pop hl ld d, h ld e, l ld bc, $fff5 add hl, bc pop bc dec b jr nz, .asm_e7db .asm_e7ee ld hl, W_PLAYERNAME ; $d158 ld de, $dd2a ld bc, $b call CopyData ld a, [W_NUMINBOX] ; $da80 dec a jr z, .asm_e82a ld hl, $de06 ld bc, $b dec a call AddNTimes push hl ld bc, $b add hl, bc ld d, h ld e, l pop hl ld a, [W_NUMINBOX] ; $da80 dec a ld b, a .asm_e817 push bc push hl ld bc, $b call CopyData pop hl ld d, h ld e, l ld bc, $fff5 add hl, bc pop bc dec b jr nz, .asm_e817 .asm_e82a ld hl, $de06 ld a, $2 ld [$d07d], a ld a, $4e call Predef ; indirect jump to Func_64eb (64eb (1:64eb)) ld a, [W_NUMINBOX] ; $da80 dec a jr z, .asm_e867 ld hl, $da96 ld bc, $21 dec a call AddNTimes push hl ld bc, $21 add hl, bc ld d, h ld e, l pop hl ld a, [W_NUMINBOX] ; $da80 dec a ld b, a .asm_e854 push bc push hl ld bc, $21 call CopyData pop hl ld d, h ld e, l ld bc, $ffdf add hl, bc pop bc dec b jr nz, .asm_e854 .asm_e867 ld a, [W_ENEMYMONLEVEL] ; $cff3 ld [W_ENEMYMONNUMBER], a ; $cfe8 ld hl, $cfe5 ld de, $da96 ld bc, $c call CopyData ld hl, W_PLAYERIDHI ; $d359 ld a, [hli] ld [de], a inc de ld a, [hl] ld [de], a inc de push de ld a, [W_CURENEMYLVL] ; $d127 ld d, a ld hl, Func_58f6a ld b, BANK(Func_58f6a) call Bankswitch ; indirect jump to Func_58f6a (58f6a (16:4f6a)) pop de ld a, [H_NUMTOPRINT] ; $FF00+$96 (aliases: H_MULTIPLICAND) ld [de], a inc de ld a, [$FF00+$97] ld [de], a inc de ld a, [$FF00+$98] ld [de], a inc de xor a ld b, $a .asm_e89f ld [de], a inc de dec b jr nz, .asm_e89f ld hl, $cff1 ld a, [hli] ld [de], a inc de ld a, [hli] ld [de], a ld hl, W_ENEMYMONPP ; $cffe ld b, $4 .asm_e8b1 ld a, [hli] inc de ld [de], a dec b jr nz, .asm_e8b1 ret ; e8b8 (3:68b8) ; 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 ; known jump sources: 711f4 (1c:51f4) Func_e9cb: ; e9cb (3:69cb) ld hl, $4eeb ld de, $cee9 ld c, $0 .asm_e9d3 inc hl ld a, [hld] inc a jr z, .asm_e9ec push hl ld a, [hli] ld h, [hl] ld l, a ld a, [hli] and a call nz, Func_e9f0 ld a, [hli] and a call nz, Func_e9f0 pop hl inc hl inc hl inc c jr .asm_e9d3 .asm_e9ec ld a, $ff ld [de], a ret ; known jump sources: e9de (3:69de), e9e3 (3:69e3) Func_e9f0: ; e9f0 (3:69f0) inc hl ld b, $a .asm_e9f3 ld a, [$d11e] cp [hl] jr nz, .asm_e9fc ld a, c ld [de], a inc de .asm_e9fc inc hl inc hl dec b jr nz, .asm_e9f3 dec hl ret ; known jump sources: 13474 (4:7474) Func_ea03: ; ea03 (3:6a03) ld de, $cd3f ld hl, $6a96 ld bc, $8 call CopyData ld hl, $cd49 ld bc, $8 xor a call FillMemory ld de, $cd49 ld hl, $cd3f ld a, [W_OBTAINEDBADGES] ; $d356 ld b, a ld c, $8 .asm_ea25 srl b jr nc, .asm_ea30 ld a, [hl] add $4 ld [hl], a ld a, $1 ld [de], a .asm_ea30 inc hl inc de dec c jr nz, .asm_ea25 ld hl, W_WHICHTRADE ; $cd3d ld a, $d8 ld [hli], a ld [hl], $60 ld hl, $c47e ld de, $cd49 call Func_ea4c ld hl, $c4ba ld de, $cd4d ; known jump sources: ea43 (3:6a43) Func_ea4c: ; ea4c (3:6a4c) ld c, $4 .asm_ea4e push de push hl ld a, [W_WHICHTRADE] ; $cd3d ld [hli], a inc a ld [W_WHICHTRADE], a ; $cd3d ld a, [de] and a ld a, [$cd3e] jr nz, .asm_ea64 call Func_ea91 jr .asm_ea67 .asm_ea64 inc a inc a inc hl .asm_ea67 ld [$cd3e], a ld de, $13 add hl, de ld a, [$cd3f] call Func_ea91 add hl, de call Func_ea91 push bc ld hl, $cd40 ld de, $cd3f ld bc, $8 call CopyData pop bc pop hl ld de, $4 add hl, de pop de inc de dec c jr nz, .asm_ea4e ret ; known jump sources: ea5f (3:6a5f), ea71 (3:6a71), ea75 (3:6a75) Func_ea91: ; ea91 (3:6a91) ld [hli], a inc a ld [hl], a inc a ret INCBIN "baserom.gbc",$ea96,$ee9e - $ea96 ; known jump sources: 19f70 (6:5f70), 19f83 (6:5f83), 19f94 (6:5f94), 1a1e0 (6:61e0), 1eb3e (7:6b3e), 44312 (11:4312), 449ae (11:49ae), 517e7 (14:57e7), 51b9a (14:5b9a), 51bad (14:5bad), 51bbe (14:5bbe), 52034 (14:6034), 526cf (14:66cf), 5653b (15:653b), 59f94 (16:5f94), 59fa5 (16:5fa5), 5a170 (16:6170), 5a2f2 (16:62f2), 5ca87 (17:4a87), 5d7f4 (17:57f4), 5d807 (17:5807), 5d81a (17:581a), 5d82b (17:582b), 5da37 (17:5a37), 62131 (18:6131), 761b3 (1d:61b3), 7630a (1d:630a), 76461 (1d:6461) Func_ee9e: ; ee9e (3:6e9e) call Load16BitRegisters ld hl, $c6e8 ld a, [W_CURMAPWIDTH] ; $d369 add $6 ld e, a ld d, $0 add hl, de add hl, de add hl, de ld e, $3 add hl, de ld e, a ld a, b and a jr z, .asm_eebb .asm_eeb7 add hl, de dec b jr nz, .asm_eeb7 .asm_eebb add hl, bc ld a, [$d09f] ld [hl], a ld a, [$d35f] ld c, a ld a, [$d360] ld b, a call Func_ef4e ret c push hl ld l, e ld h, $0 ld e, $6 ld d, h add hl, hl add hl, hl add hl, de add hl, bc pop bc call Func_ef4e ret c ; known jump sources: efd3 (3:6fd3), efef (3:6fef), 71c95 (1c:5c95) Func_eedc: ; eedc (3:6edc) ld a, [W_ISINBATTLE] ; $d057 inc a ret z ld a, [H_AUTOBGTRANSFERENABLED] ; $FF00+$ba push af ld a, [$FF00+$d7] push af xor a ld [H_AUTOBGTRANSFERENABLED], a ; $FF00+$ba ld [$FF00+$d7], a call LoadCurrentMapView call GoPAL_SET_CF1C ld hl, $d526 ld a, [hli] ld h, [hl] ld l, a ld de, $ffc0 add hl, de ld a, h and $3 or $98 ld a, l ld [$cee9], a ld a, h ld [$ceea], a ld a, $2 ld [$FF00+$be], a ld c, $9 .asm_ef0f push bc push hl push hl ld hl, $c378 ld de, $14 ld a, [$FF00+$be] .asm_ef1a add hl, de dec a jr nz, .asm_ef1a call ScheduleRowRedrawHelper pop hl ld de, $20 ld a, [$FF00+$be] ld c, a .asm_ef28 add hl, de ld a, h and $3 or $98 dec c jr nz, .asm_ef28 ld [$FF00+$d2], a ld a, l ld [H_SCREENEDGEREDRAWADDR], a ; $FF00+$d1 ld a, $2 ld [H_SCREENEDGEREDRAW], a ; $FF00+$d0 call DelayFrame ld hl, $ffbe inc [hl] inc [hl] pop hl pop bc dec c jr nz, .asm_ef0f pop af ld [$FF00+$d7], a pop af ld [H_AUTOBGTRANSFERENABLED], a ; $FF00+$ba ret ; known jump sources: eec8 (3:6ec8), eed8 (3:6ed8) Func_ef4e: ; ef4e (3:6f4e) ld a, h sub b ret nz ld a, l sub c ret ; known jump sources: 131c7 (4:71c7) Func_ef54: ; ef54 (3:6f54) xor a ld [$cd6a], a ld a, [W_CURMAPTILESET] ; $d367 and a jr z, .asm_ef6b cp $7 jr nz, .asm_ef77 ld a, [$cfc6] cp $50 jr nz, .asm_ef77 jr asm_ef82 .asm_ef6b dec a ld a, [$cfc6] cp $3d jr z, asm_ef82 cp $52 jr z, asm_ef82 .asm_ef77 ld hl, $6f7d jp PrintText ; ef7d (3:6f7d) _UnnamedText_ef7d: ; 0xef7d db $17, $f8, $42, $2a db $50 ; 0xef7d + 5 bytes asm_ef82: ; ef82 (3:6f82) ld [$cd4d], a ld a, $1 ld [$cd6a], a ld a, [W_WHICHPOKEMON] ; $cf92 ld hl, W_PARTYMON1NAME ; $d2b5 call GetPartyMonName ld hl, $d730 set 6, [hl] call GBPalWhiteOutWithDelay3 call CleanLCD_OAM call Func_3dbe ld a, $90 ld [$FF00+$b0], a call Delay3 call LoadGBPal call LoadCurrentMapView call Func_36f4 call Delay3 xor a ld [$FF00+$b0], a ld hl, $6ff2 call PrintText call Func_3701 ld hl, $d730 res 6, [hl] ld a, $ff ld [$cfcb], a call Func_eff7 ld de, $7100 call Func_f09f call Func_eedc ld b, BANK(Func_79e96) ld hl, Func_79e96 call Bankswitch ; indirect jump to Func_79e96 (79e96 (1e:5e96)) ld a, $1 ld [$cfcb], a ld a, $ac call Func_23b1 ld a, $90 ld [$FF00+$b0], a call Func_2429 jp Func_eedc INCBIN "baserom.gbc",$eff2,$eff7 - $eff2 ; known jump sources: efca (3:6fca) Func_eff7: ; eff7 (3:6ff7) xor a ld [$cd50], a ld a, $e4 ld [rOBP1], a ; $FF00+$49 ld a, [$cd4d] cp $52 jr z, .asm_f020 ld de, $42d0 ld hl, $8fc0 ld bc, $1902 call CopyVideoData ld de, $43d0 ld hl, $8fe0 ld bc, $1902 call CopyVideoData jr asm_f055 .asm_f020 ld hl, $8fc0 call Func_f04c ld hl, $8fd0 call Func_f04c ld hl, $8fe0 call Func_f04c ld hl, $8ff0 call Func_f04c call asm_f055 ld hl, $c393 ld de, $4 ld a, $30 ld c, e .asm_f044 ld [hl], a add hl, de xor $60 dec c jr nz, .asm_f044 ret ; known jump sources: f023 (3:7023), f029 (3:7029), f02f (3:702f), f035 (3:7035) Func_f04c: ; f04c (3:704c) ld de, $474e ld bc, $1e01 jp CopyVideoData asm_f055: ; f055 (3:7055) call Func_f068 ld a, $9 ld de, $7060 jp WriteOAMBlock INCBIN "baserom.gbc",$f060,$f068 - $f060 ; known jump sources: f055 (3:7055) Func_f068: ; f068 (3:7068) ld hl, $c104 ld a, [hli] ld b, a inc hl ld a, [hli] ld c, a inc hl inc hl ld a, [hl] srl a ld e, a ld d, $0 ld a, [$cd50] and a ld hl, $708f jr z, .asm_f084 ld hl, $7097 .asm_f084 add hl, de ld e, [hl] inc hl ld d, [hl] ld a, b add d ld b, a ld a, c add e ld c, a ret INCBIN "baserom.gbc",$f08f,$f09f - $f08f ; known jump sources: efd0 (3:6fd0) Func_f09f: ; f09f (3:709f) push de ld a, [W_CURMAPWIDTH] ; $d369 add $6 ld c, a ld b, $0 ld d, $0 ld hl, $d35f ld a, [hli] ld h, [hl] ld l, a add hl, bc ld a, [$c109] and a jr z, .asm_f0c7 cp $4 jr z, .asm_f0cf cp $8 jr z, .asm_f0d7 ld a, [W_XBLOCKCOORD] ; $d364 and a jr z, .asm_f0e0 jr .asm_f0ec .asm_f0c7 ld a, [W_YBLOCKCOORD] ; $d363 and a jr z, .asm_f0e0 jr .asm_f0df .asm_f0cf ld a, [W_YBLOCKCOORD] ; $d363 and a jr z, .asm_f0e1 jr .asm_f0e0 .asm_f0d7 ld a, [W_XBLOCKCOORD] ; $d364 and a jr z, .asm_f0e6 jr .asm_f0e0 .asm_f0df add hl, bc .asm_f0e0 add hl, bc .asm_f0e1 ld e, $2 add hl, de jr .asm_f0f0 .asm_f0e6 ld e, $1 add hl, bc add hl, de jr .asm_f0f0 .asm_f0ec ld e, $3 add hl, bc add hl, de .asm_f0f0 pop de ld a, [hl] ld c, a .asm_f0f3 ld a, [de] inc de inc de cp $ff ret z cp c jr nz, .asm_f0f3 dec de ld a, [de] ld [hl], a ret INCBIN "baserom.gbc",$f100,$f113 - $f100 ; known jump sources: 1081 (0:1081) Func_f113: ; f113 (3:7113) ld a, [W_CURMAP] ; $d35e cp $c jr nc, .asm_f125 ld c, a ld b, $1 ld hl, $d70b ld a, $10 call Predef ; indirect jump to Func_f666 (f666 (3:7666)) .asm_f125 ld hl, $48f5 ld a, [W_CURMAP] ; $d35e ld b, $0 ld c, a add hl, bc add hl, bc ld a, [hli] ld h, [hl] ld l, a push hl ld de, $4aea ld a, l sub e jr nc, .asm_f13c dec h .asm_f13c ld l, a ld a, h sub d ld h, a ld a, h ld [H_DIVIDEND], a ; $FF00+$95 (aliases: H_PRODUCT, H_PASTLEADINGZEROES, H_QUOTIENT) ld a, l ld [H_NUMTOPRINT], a ; $FF00+$96 (aliases: H_MULTIPLICAND) xor a ld [$FF00+$97], a ld [$FF00+$98], a ld a, $3 ld [H_REMAINDER], a ; $FF00+$99 (aliases: H_DIVISOR, H_MULTIPLIER, H_POWEROFTEN) ld b, $2 call Divide ld a, [W_CURMAP] ; $d35e ld b, a ld a, [$FF00+$98] ld c, a ld de, $d5ce pop hl .asm_f15f ld a, [hli] cp $ff jr z, .asm_f171 cp b jr nz, .asm_f171 ld a, [hli] inc hl ld [de], a inc de ld a, c inc c ld [de], a inc de jr .asm_f15f .asm_f171 ld a, $ff ld [de], a ret ; known jump sources: f89d (3:789d) Func_f175: ; f175 (3:7175) ld hl, $d5a6 ld bc, $20 xor a call FillMemory ld hl, $4aea xor a ld [$d048], a .asm_f186 ld a, [hli] cp $ff ret z push hl inc hl ld a, [hl] cp $11 jr nz, .asm_f19d ld hl, $d5a6 ld a, [$d048] ld c, a ld b, $1 call Func_f1e6 .asm_f19d ld hl, $d048 inc [hl] pop hl inc hl inc hl jr .asm_f186 ; known jump sources: 50de (1:50de) Func_f1a6: ; f1a6 (3:71a6) ld a, [$FF00+$da] swap a ld b, a ld hl, $d5ce .asm_f1ae ld a, [hli] cp $ff jr z, .asm_f1c4 cp b ld a, [hli] jr nz, .asm_f1ae ld c, a ld b, $2 ld hl, $d5a6 call Func_f1e6 ld a, c and a jr nz, .asm_f1c5 .asm_f1c4 xor a .asm_f1c5 ld [$FF00+$e5], a ret ; known jump sources: 18ec9 (6:4ec9), 18f79 (6:4f79), 1953c (6:553c), 1cb60 (7:4b60), 1cb99 (7:4b99), 1ced7 (7:4ed7), 1cfa2 (7:4fa2), 1cff7 (7:4ff7), 1e7ef (7:67ef), 1e89c (7:689c), 44838 (11:4838), 449f6 (11:49f6), 4635f (11:635f), 50d11 (14:4d11), 51206 (14:5206), 515fc (14:55fc), 5161f (14:561f), 5d466 (17:5466), 60ea2 (18:4ea2), 60eb6 (18:4eb6), 613e0 (18:53e0), 6218e (18:618e), 7487c (1d:487c), 749df (1d:49df), 7600b (1d:600b) Func_f1c8: ; f1c8 (3:71c8) ld hl, $d5a6 ld a, [$cc4d] ld c, a ld b, $0 call Func_f1e6 jp Func_2429 ; known jump sources: 32b6 (0:32b6), 4e12 (1:4e12), 18f6f (6:4f6f), 1949a (6:549a), 1961d (6:561d), 19b89 (6:5b89), 1a500 (6:6500), 1cb8f (7:4b8f), 1cd37 (7:4d37), 1ce7b (7:4e7b), 1cf5b (7:4f5b), 1cf65 (7:4f65), 1cf98 (7:4f98), 1cfe4 (7:4fe4), 1d1ea (7:51ea), 1e7b3 (7:67b3), 1e8a6 (7:68a6), 4482d (11:482d), 449ec (11:49ec), 46354 (11:6354), 49e24 (12:5e24), 49f51 (12:5f51), 50d19 (14:4d19), 51162 (14:5162), 51210 (14:5210), 5160b (14:560b), 51615 (14:5615), 51d32 (14:5d32), 59640 (16:5640), 59980 (16:5980), 5a561 (16:6561), 5c278 (17:4278), 5c419 (17:4419), 5c423 (17:4423), 605c8 (18:45c8), 60d6d (18:4d6d), 60d92 (18:4d92), 60eac (18:4eac), 614cf (18:54cf), 6217b (18:617b), 74886 (1d:4886), 74890 (1d:4890), 74a92 (1d:4a92), 76090 (1d:6090) Func_f1d7: ; f1d7 (3:71d7) ld hl, $d5a6 ld a, [$cc4d] ld c, a ld b, $1 call Func_f1e6 jp Func_2429 ; known jump sources: f19a (3:719a), f1bd (3:71bd), f1d1 (3:71d1), f1e0 (3:71e0) Func_f1e6: ; f1e6 (3:71e6) push hl push de push bc ld a, c ld d, a and $7 ld e, a ld a, d srl a srl a srl a add l ld l, a jr nc, .asm_f1fa inc h .asm_f1fa inc e ld d, $1 .asm_f1fd dec e jr z, .asm_f204 sla d jr .asm_f1fd .asm_f204 ld a, b and a jr z, .asm_f213 cp $2 jr z, .asm_f21c ld a, [hl] ld b, a ld a, d or b ld [hl], a jr .asm_f220 .asm_f213 ld a, [hl] ld b, a ld a, d xor $ff and b ld [hl], a jr .asm_f220 .asm_f21c ld a, [hl] ld b, a ld a, d and b .asm_f220 pop bc pop de pop hl ld c, a ret ; known jump sources: 1023 (0:1023) Func_f225: ; f225 (3:7225) ld a, [$d728] bit 0, a ret z ld a, [$cd60] bit 1, a ret nz xor a ld [H_DOWNARROWBLINKCNT2], a ; $FF00+$8c call IsSpriteInFrontOfPlayer ld a, [H_DOWNARROWBLINKCNT2] ; $FF00+$8c ld [$d718], a and a jp z, Func_f2dd ld hl, $c101 ld d, $0 ld a, [H_DOWNARROWBLINKCNT2] ; $FF00+$8c swap a ld e, a add hl, de res 7, [hl] call Function3558 ld a, [hl] cp $10 jp nz, Func_f2dd ld hl, $cd60 bit 6, [hl] set 6, [hl] ret z ld a, [$FF00+$b4] and $f0 ret z ld a, $5a call Predef ; indirect jump to Func_c60b (c60b (3:460b)) ld a, [$d71c] and a jp nz, Func_f2dd ld a, [$FF00+$b4] ld b, a ld a, [$c109] cp $4 jr z, .asm_f289 cp $8 jr z, .asm_f291 cp $c jr z, .asm_f299 bit 7, b ret z ld de, $72af jr .asm_f29f .asm_f289 bit 6, b ret z ld de, $72ad jr .asm_f29f .asm_f291 bit 5, b ret z ld de, $72b1 jr .asm_f29f .asm_f299 bit 4, b ret z ld de, $72b3 .asm_f29f call MoveSprite ld a, $a8 call Func_23b1 ld hl, $cd60 set 1, [hl] ret INCBIN "baserom.gbc",$f2ad,$f2b5 - $f2ad ; known jump sources: 1032 (0:1032) Func_f2b5: ; f2b5 (3:72b5) ld a, [$d730] bit 0, a ret nz ld hl, Func_79f54 ld b, BANK(Func_79f54) call Bankswitch ; indirect jump to Func_79f54 (79f54 (1e:5f54)) call Func_c034 ld [$cd6b], a call Func_f2dd set 7, [hl] ld a, [$d718] ld [H_DOWNARROWBLINKCNT2], a ; $FF00+$8c call Function3558 ld [hl], $10 ld a, $ac jp Func_23b1 ; known jump sources: f23d (3:723d), f253 (3:7253), f26c (3:726c), f2c9 (3:72c9) Func_f2dd: ; f2dd (3:72dd) ld hl, $cd60 res 1, [hl] res 6, [hl] ret ; known jump sources: 392f (0:392f) Func_f2e5: ; f2e5 (3:72e5) ld de, W_NUMINPARTY ; $d163 ld a, [$cc49] and $f jr z, .asm_f2f2 ld de, W_ENEMYMONCOUNT ; $d89c .asm_f2f2 ld a, [de] inc a cp $7 ret nc ld [de], a ld a, [de] ld [$FF00+$e4], a add e ld e, a jr nc, .asm_f300 inc d .asm_f300 ld a, [$cf91] ld [de], a inc de ld a, $ff ld [de], a ld hl, W_PARTYMON1OT ; $d273 ld a, [$cc49] and $f jr z, .asm_f315 ld hl, $d9ac .asm_f315 ld a, [$FF00+$e4] dec a call Func_3a7d ld d, h ld e, l ld hl, W_PLAYERNAME ; $d158 ld bc, $b call CopyData ld a, [$cc49] and a jr nz, .asm_f33f ld hl, W_PARTYMON1NAME ; $d2b5 ld a, [$FF00+$e4] dec a call Func_3a7d ld a, $2 ld [$d07d], a ld a, $4e call Predef ; indirect jump to Func_64eb (64eb (1:64eb)) .asm_f33f ld hl, W_PARTYMON1_NUM ; $d16b (aliases: W_PARTYMON1DATA) ld a, [$cc49] and $f jr z, .asm_f34c ld hl, W_WATERRATE ; $d8a4 .asm_f34c ld a, [$FF00+$e4] dec a ld bc, $2c call AddNTimes ld e, l ld d, h push hl ld a, [$cf91] ld [$d0b5], a call GetBaseStats ld hl, $d0b8 ld a, [hli] ld [de], a inc de pop hl push hl ld a, [$cc49] and $f ld a, $98 ld b, $88 jr nz, .asm_f3b3 ld a, [$cf91] ld [$d11e], a push de ld a, $3a call Predef ; indirect jump to IndexToPokedex (41010 (10:5010)) pop de ld a, [$d11e] dec a ld c, a ld b, $2 ld hl, W_OWNEDPOKEMON ; $d2f7 call Func_f669 ld a, c ld [$d153], a ld a, [$d11e] dec a ld c, a ld b, $1 push bc call Func_f669 pop bc ld hl, W_SEENPOKEMON ; $d30a call Func_f669 pop hl push hl ld a, [W_ISINBATTLE] ; $d057 and a jr nz, .asm_f3d6 call GenRandom ld b, a call GenRandom .asm_f3b3 push bc ld bc, $1b add hl, bc pop bc ld [hli], a ld [hl], b ld bc, $fff4 add hl, bc ld a, $1 ld c, a xor a ld b, a call Func_394a ld a, [$FF00+$97] ld [de], a inc de ld a, [$FF00+$98] ld [de], a inc de xor a ld [de], a inc de ld [de], a inc de jr .asm_f3f4 .asm_f3d6 ld bc, $1b add hl, bc ld a, [$cff1] ld [hli], a ld a, [$cff2] ld [hl], a ld a, [W_ENEMYMONCURHP] ; $cfe6 ld [de], a inc de ld a, [$cfe7] ld [de], a inc de xor a ld [de], a inc de ld a, [W_ENEMYMONSTATUS] ; $cfe9 ld [de], a inc de .asm_f3f4 ld hl, $d0be ld a, [hli] ld [de], a inc de ld a, [hli] ld [de], a inc de ld a, [hli] ld [de], a ld hl, $d0c7 ld a, [hli] inc de push de ld [de], a ld a, [hli] inc de ld [de], a ld a, [hli] inc de ld [de], a ld a, [hli] inc de ld [de], a push de dec de dec de dec de xor a ld [$cee9], a ld a, $3e call Predef ; indirect jump to Func_3afb8 (3afb8 (e:6fb8)) pop de ld a, [W_PLAYERIDHI] ; $d359 inc de ld [de], a ld a, [W_PLAYERIDLO] ; $d35a inc de ld [de], a push de ld a, [W_CURENEMYLVL] ; $d127 ld d, a ld hl, Func_58f6a ld b, BANK(Func_58f6a) call Bankswitch ; indirect jump to Func_58f6a (58f6a (16:4f6a)) pop de inc de ld a, [H_NUMTOPRINT] ; $FF00+$96 (aliases: H_MULTIPLICAND) ld [de], a inc de ld a, [$FF00+$97] ld [de], a inc de ld a, [$FF00+$98] ld [de], a xor a ld b, $a .asm_f444 inc de ld [de], a dec b jr nz, .asm_f444 inc de inc de pop hl call Func_f476 inc de ld a, [W_CURENEMYLVL] ; $d127 ld [de], a inc de ld a, [W_ISINBATTLE] ; $d057 dec a jr nz, .asm_f467 ld hl, W_ENEMYMONMAXHP ; $cff4 ld bc, $a call CopyData pop hl jr .asm_f471 .asm_f467 pop hl ld bc, $10 add hl, bc ld b, $0 call Func_3936 .asm_f471 scf ret ; known jump sources: e618 (3:6618), 3ebd2 (f:6bd2) Func_f473: ; f473 (3:7473) call Load16BitRegisters ; known jump sources: f44c (3:744c) Func_f476: ; f476 (3:7476) ld b, $4 .asm_f478 ld a, [hli] and a jr z, .asm_f497 dec a push hl push de push bc ld hl, $4000 ld bc, $6 call AddNTimes ld de, $cd6d ld a, $e call FarCopyData pop bc pop de pop hl ld a, [$cd72] .asm_f497 inc de ld [de], a dec b jr nz, .asm_f478 ret INCBIN "baserom.gbc",$f49d,$f51e - $f49d ; known jump sources: 3a72 (0:3a72) Func_f51e: ; f51e (3:751e) ld a, [$cf95] and a jr z, .asm_f539 cp $2 jr z, .asm_f539 cp $3 ld hl, $da5f jr z, .asm_f575 ld hl, W_NUMINBOX ; $da80 ld a, [hl] cp $14 jr nz, .asm_f543 jr .asm_f541 .asm_f539 ld hl, W_NUMINPARTY ; $d163 ld a, [hl] cp $6 jr nz, .asm_f543 .asm_f541 scf ret .asm_f543 inc a ld [hl], a ld c, a ld b, $0 add hl, bc ld a, [$cf95] cp $2 ld a, [$da5f] jr z, .asm_f556 ld a, [$cf91] .asm_f556 ld [hli], a ld [hl], $ff ld a, [$cf95] dec a ld hl, W_PARTYMON1_NUM ; $d16b (aliases: W_PARTYMON1DATA) ld bc, $2c ld a, [W_NUMINPARTY] ; $d163 jr nz, .asm_f571 ld hl, $da96 ld bc, $21 ld a, [W_NUMINBOX] ; $da80 .asm_f571 dec a call AddNTimes .asm_f575 push hl ld e, l ld d, h ld a, [$cf95] and a ld hl, $da96 ld bc, $21 jr z, .asm_f591 cp $2 ld hl, $da5f jr z, .asm_f597 ld hl, W_PARTYMON1_NUM ; $d16b (aliases: W_PARTYMON1DATA) ld bc, $2c .asm_f591 ld a, [W_WHICHPOKEMON] ; $cf92 call AddNTimes .asm_f597 push hl push de ld bc, $21 call CopyData pop de pop hl ld a, [$cf95] and a jr z, .asm_f5b4 cp $2 jr z, .asm_f5b4 ld bc, $21 add hl, bc ld a, [hl] inc de inc de inc de ld [de], a .asm_f5b4 ld a, [$cf95] cp $3 ld de, $da54 jr z, .asm_f5d3 dec a ld hl, W_PARTYMON1OT ; $d273 ld a, [W_NUMINPARTY] ; $d163 jr nz, .asm_f5cd ld hl, $dd2a ld a, [W_NUMINBOX] ; $da80 .asm_f5cd dec a call Func_3a7d ld d, h ld e, l .asm_f5d3 ld hl, $dd2a ld a, [$cf95] and a jr z, .asm_f5e6 ld hl, $da54 cp $2 jr z, .asm_f5ec ld hl, W_PARTYMON1OT ; $d273 .asm_f5e6 ld a, [W_WHICHPOKEMON] ; $cf92 call Func_3a7d .asm_f5ec ld bc, $b call CopyData ld a, [$cf95] cp $3 ld de, $da49 jr z, .asm_f611 dec a ld hl, W_PARTYMON1NAME ; $d2b5 ld a, [W_NUMINPARTY] ; $d163 jr nz, .asm_f60b ld hl, $de06 ld a, [W_NUMINBOX] ; $da80 .asm_f60b dec a call Func_3a7d ld d, h ld e, l .asm_f611 ld hl, $de06 ld a, [$cf95] and a jr z, .asm_f624 ld hl, $da49 cp $2 jr z, .asm_f62a ld hl, W_PARTYMON1NAME ; $d2b5 .asm_f624 ld a, [W_WHICHPOKEMON] ; $cf92 call Func_3a7d .asm_f62a ld bc, $b call CopyData pop hl ld a, [$cf95] cp $1 jr z, .asm_f664 cp $3 jr z, .asm_f664 push hl srl a add $2 ld [$cc49], a call LoadMonData ld b, BANK(Func_58f43) ld hl, Func_58f43 call Bankswitch ; indirect jump to Func_58f43 (58f43 (16:4f43)) ld a, d ld [W_CURENEMYLVL], a ; $d127 pop hl ld bc, $21 add hl, bc ld [hli], a ld d, h ld e, l ld bc, $ffee add hl, bc ld b, $1 call Func_3936 .asm_f664 and a ret ; known jump sources: 31c9 (0:31c9), d8cb (3:58cb), d8d9 (3:58d9), dbd9 (3:5bd9), dbeb (3:5beb), e787 (3:6787), f122 (3:7122), 13760 (4:7760), 1ea8f (7:6a8f), 1ead5 (7:6ad5), 3b059 (e:7059), 3c1eb (f:41eb), 3c1f4 (f:41f4), 3c74c (f:474c), 3c810 (f:4810), 3c819 (f:4819), 3c91c (f:491c), 3c927 (f:4927), 3d1d9 (f:51d9), 3d1e2 (f:51e2), 3ec17 (f:6c17), 402cb (10:42cb), 4fe29 (13:7e29), 51245 (14:5245), 51358 (14:5358), 5137f (14:537f), 55271 (15:5271), 5542e (15:542e), 5545e (15:545e), 55469 (15:5469), 71b2c (1c:5b2c), 71c43 (1c:5c43), 757f3 (1d:57f3), 7669c (1d:669c), 76776 (1d:6776) Func_f666: ; f666 (3:7666) call Load16BitRegisters ; known jump sources: f38b (3:738b), f39a (3:739a), f3a1 (3:73a1) Func_f669: ; f669 (3:7669) push hl push de push bc ld a, c ld d, a and $7 ld e, a ld a, d srl a srl a srl a add l ld l, a jr nc, .asm_f67d inc h .asm_f67d inc e ld d, $1 .asm_f680 dec e jr z, .asm_f687 sla d jr .asm_f680 .asm_f687 ld a, b and a jr z, .asm_f695 cp $2 jr z, .asm_f69d ld b, [hl] ld a, d or b ld [hl], a jr .asm_f6a0 .asm_f695 ld b, [hl] ld a, d xor $ff and b ld [hl], a jr .asm_f6a0 .asm_f69d ld b, [hl] ld a, d and b .asm_f6a0 pop bc pop de pop hl ld c, a ret ; f6a5 (3:76a5) 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 ; known jump sources: 2df5 (0:2df5), 40ed (1:40ed) Func_f71e: ; f71e (3:771e) call Load16BitRegisters xor a ld [$FF00+$a5], a ld [$FF00+$a6], a ld [$FF00+$a7], a ld d, $1 .asm_f72a ld a, [$FF00+$a2] and $f0 jr nz, .asm_f75b inc d ld a, [$FF00+$a2] swap a and $f0 ld b, a ld a, [$FF00+$a3] swap a ld [$FF00+$a3], a and $f or b ld [$FF00+$a2], a ld a, [$FF00+$a3] and $f0 ld b, a ld a, [$FF00+$a4] swap a ld [$FF00+$a4], a and $f or b ld [$FF00+$a3], a ld a, [$FF00+$a4] and $f0 ld [$FF00+$a4], a jr .asm_f72a .asm_f75b push de push de call Func_f800 pop de ld a, b swap a and $f0 ld [$FF00+$a5], a dec d jr z, .asm_f7bc push de call Func_f7d7 call Func_f800 pop de ld a, [$FF00+$a5] or b ld [$FF00+$a5], a dec d jr z, .asm_f7bc push de call Func_f7d7 call Func_f800 pop de ld a, b swap a and $f0 ld [$FF00+$a6], a dec d jr z, .asm_f7bc push de call Func_f7d7 call Func_f800 pop de ld a, [$FF00+$a6] or b ld [$FF00+$a6], a dec d jr z, .asm_f7bc push de call Func_f7d7 call Func_f800 pop de ld a, b swap a and $f0 ld [$FF00+$a7], a dec d jr z, .asm_f7bc push de call Func_f7d7 call Func_f800 pop de ld a, [$FF00+$a7] or b ld [$FF00+$a7], a .asm_f7bc ld a, [$FF00+$a5] ld [$FF00+$a2], a ld a, [$FF00+$a6] ld [$FF00+$a3], a ld a, [$FF00+$a7] ld [$FF00+$a4], a pop de ld a, $6 sub d and a ret z .asm_f7ce push af call Func_f7d7 pop af dec a jr nz, .asm_f7ce ret ; known jump sources: f76c (3:776c), f77c (3:777c), f78e (3:778e), f79e (3:779e), f7b0 (3:77b0), f7cf (3:77cf) Func_f7d7: ; f7d7 (3:77d7) ld a, [$FF00+$a4] swap a and $f ld b, a ld a, [$FF00+$a3] swap a ld [$FF00+$a3], a and $f0 or b ld [$FF00+$a4], a ld a, [$FF00+$a3] and $f ld b, a ld a, [$FF00+$a2] swap a ld [$FF00+$a2], a and $f0 or b ld [$FF00+$a3], a ld a, [$FF00+$a2] and $f ld [$FF00+$a2], a ret ; known jump sources: f75d (3:775d), f76f (3:776f), f77f (3:777f), f791 (3:7791), f7a1 (3:77a1), f7b3 (3:77b3) Func_f800: ; f800 (3:7800) ld bc, $3 .asm_f803 ld de, $ff9f ld hl, $ffa2 push bc call StringCmp pop bc ret c inc b ld de, $ffa1 ld hl, $ffa4 push bc call Func_f839 pop bc jr .asm_f803 ; known jump sources: 2ba8 (0:2ba8), 2dde (0:2dde), 13801 (4:7801), 39d18 (e:5d18), 3c6e1 (f:46e1) Func_f81d: ; f81d (3:781d) call Load16BitRegisters and a ld b, c .asm_f822 ld a, [de] adc [hl] daa ld [de], a dec de dec hl dec c jr nz, .asm_f822 jr nc, .asm_f835 ld a, $99 inc de .asm_f830 ld [de], a inc de dec b jr nz, .asm_f830 .asm_f835 ret ; known jump sources: 6b37 (1:6b37), 5c1c5 (17:41c5), 74f82 (1d:4f82), 75311 (1d:5311) Func_f836: ; f836 (3:7836) call Load16BitRegisters ; known jump sources: f817 (3:7817) Func_f839: ; f839 (3:7839) and a ld b, c .asm_f83b ld a, [de] sbc [hl] daa ld [de], a dec de dec hl dec c jr nz, .asm_f83b jr nc, .asm_f84f ld a, $0 inc de .asm_f849 ld [de], a inc de dec b jr nz, .asm_f849 scf .asm_f84f ret ; known jump sources: 612d (1:612d) Func_f850: ; f850 (3:7850) call GenRandom ld a, [H_RAND2] ; $FF00+$d4 ld [W_PLAYERIDHI], a ; $d359 call GenRandom ld a, [H_RAND1] ; $FF00+$d3 ld [W_PLAYERIDLO], a ; $d35a ld a, $ff ld [$d71b], a ld hl, W_NUMINPARTY ; $d163 call Func_f8a0 ld hl, W_NUMINBOX ; $da80 call Func_f8a0 ld hl, W_NUMBAGITEMS ; $d31d call Func_f8a0 ld hl, W_NUMBOXITEMS ; $d53a call Func_f8a0 ld hl, W_PLAYERMONEY2 ; $d348 ld a, $30 ld [hld], a xor a ld [hli], a inc hl ld [hl], a ld [$cc49], a ld hl, W_OBTAINEDBADGES ; $d356 ld [hli], a ld [hl], a ld hl, W_PLAYERCOINS1 ; $d5a4 ld [hli], a ld [hl], a ld hl, W_OAKSLABCURSCRIPT ; $d5f0 ld bc, $c8 call FillMemory jp Func_f175 ; known jump sources: f868 (3:7868), f86e (3:786e), f874 (3:7874), f87a (3:787a) Func_f8a0: ; f8a0 (3:78a0) xor a ld [hli], a dec a ld [hl], a ret ; known jump sources: 3495 (0:3495), 1980a (6:580a), 198da (6:58da), 483ee (12:43ee), 75d4e (1d:5d4e) Func_f8a5: ; f8a5 (3:78a5) call Load16BitRegisters ld hl, W_NUMBAGITEMS ; $d31d .asm_f8ab inc hl ld a, [hli] cp $ff jr z, .asm_f8b7 cp b jr nz, .asm_f8ab ld a, [hl] ld b, a ret .asm_f8b7 ld b, $0 ret ; known jump sources: 18efa (6:4efa), 1cda6 (7:4da6) Func_f8ba: ; f8ba (3:78ba) xor a ld hl, $ff97 ld [hli], a ld [hli], a ld [hli], a ld [hl], a ld hl, $cc97 ld de, $0 ; known jump sources: f923 (3:7923) Func_f8c8: ; f8c8 (3:78c8) ld a, [H_REMAINDER] ; $FF00+$99 (aliases: H_DIVISOR, H_MULTIPLIER, H_POWEROFTEN) ld b, a ld a, [H_DIVIDEND] ; $FF00+$95 (aliases: H_PRODUCT, H_PASTLEADINGZEROES, H_QUOTIENT) call Func_3633 ld d, a and a jr nz, .asm_f8da ld a, [$FF00+$98] set 0, a ld [$FF00+$98], a .asm_f8da ld a, [$FF00+$9a] ld b, a ld a, [H_NUMTOPRINT] ; $FF00+$96 (aliases: H_MULTIPLICAND) call Func_3633 ld e, a and a jr nz, .asm_f8ec ld a, [$FF00+$98] set 1, a ld [$FF00+$98], a .asm_f8ec ld a, [$FF00+$98] cp $3 jr z, .asm_f926 ld a, e cp d jr c, .asm_f90a ld a, [$FF00+$9d] bit 1, a jr nz, .asm_f900 ld d, $c0 jr .asm_f902 .asm_f900 ld d, $80 .asm_f902 ld a, [$FF00+$9a] add $1 ld [$FF00+$9a], a jr .asm_f91c .asm_f90a ld a, [$FF00+$9d] bit 0, a jr nz, .asm_f914 ld d, $0 jr .asm_f916 .asm_f914 ld d, $40 .asm_f916 ld a, [H_REMAINDER] ; $FF00+$99 (aliases: H_DIVISOR, H_MULTIPLIER, H_POWEROFTEN) add $1 ld [H_REMAINDER], a ; $FF00+$99 (aliases: H_DIVISOR, H_MULTIPLIER, H_POWEROFTEN) .asm_f91c ld a, d ld [hli], a ld a, [$FF00+$97] inc a ld [$FF00+$97], a jp Func_f8c8 .asm_f926 ld [hl], $ff ret ; known jump sources: 18ef1 (6:4ef1), 1cd9c (7:4d9c) Func_f929: ; f929 (3:7929) xor a ld [$FF00+$9d], a ld a, [$c104] ld d, a ld a, [$c106] ld e, a ld hl, $c100 ld a, [H_DIVIDEND] ; $FF00+$95 (aliases: H_PRODUCT, H_PASTLEADINGZEROES, H_QUOTIENT) add l add $4 ld l, a jr nc, .asm_f940 inc h .asm_f940 ld a, d ld b, a ld a, [hli] call Func_3633 jr nc, .asm_f953 push hl ld hl, $ff9d bit 0, [hl] set 0, [hl] pop hl jr .asm_f95c .asm_f953 push hl ld hl, $ff9d bit 0, [hl] res 0, [hl] pop hl .asm_f95c push hl ld hl, $ffe5 ld [hli], a ld a, $10 ld [hli], a call Func_366b ld a, [hl] ld [H_DIVIDEND], a ; $FF00+$95 (aliases: H_PRODUCT, H_PASTLEADINGZEROES, H_QUOTIENT) pop hl inc hl ld b, e ld a, [hl] call Func_3633 jr nc, .asm_f97e push hl ld hl, $ff9d bit 1, [hl] set 1, [hl] pop hl jr .asm_f987 .asm_f97e push hl ld hl, $ff9d bit 1, [hl] res 1, [hl] pop hl .asm_f987 ld [$FF00+$e5], a ld a, $10 ld [$FF00+$e6], a call Func_366b ld a, [$FF00+$e7] ld [H_NUMTOPRINT], a ; $FF00+$96 (aliases: H_MULTIPLICAND) ld a, [$FF00+$9b] and a ret z ld a, [$FF00+$9d] cpl and $3 ld [$FF00+$9d], a ret INCBIN "baserom.gbc",$f9a0,$f9dc - $f9a0 ; known jump sources: 1291d (4:691d) Func_f9dc: ; f9dc (3:79dc) call Load16BitRegisters ; known jump sources: fb41 (3:7b41), fb48 (3:7b48) Func_f9df: ; f9df (3:79df) push hl xor a ld hl, H_NUMTOPRINT ; $ff96 (aliases: H_MULTIPLICAND) ld [hli], a ld a, b ld [hli], a ld a, c ld [hli], a ld [hl], $30 call Multiply ld a, d and a jr z, .asm_fa0c srl d rr e srl d rr e ld a, [$FF00+$97] ld b, a ld a, [$FF00+$98] srl b rr a srl b rr a ld [$FF00+$98], a ld a, b ld [$FF00+$97], a .asm_fa0c ld a, e ld [H_REMAINDER], a ; $FF00+$99 (aliases: H_DIVISOR, H_MULTIPLIER, H_POWEROFTEN) ld b, $4 call Divide ld a, [$FF00+$98] ld e, a pop hl and a ret nz ld e, $1 ret ; known jump sources: 78af (1:78af), dcad (3:5cad), dda1 (3:5da1), 13995 (4:7995), 3a724 (e:6724), 3ba88 (e:7a88), 3c50a (f:450a), 3e19a (f:619a), 3e258 (f:6258) Func_fa1d: ; fa1d (3:7a1d) push hl ld hl, $ceeb ld a, [hli] ld c, a ld a, [hli] ld b, a ld a, [hli] ld e, a ld d, [hl] pop hl push de push bc call Func_fad7 ld a, e ld [$cefe], a ld a, d ld [$cefd], a pop bc pop de call Func_fad1 ret z ld a, $ff jr c, .asm_fa42 ld a, $1 .asm_fa42 ld [$ceef], a call Load16BitRegisters ld a, [$ceed] ld e, a ld a, [$ceee] ld d, a .asm_fa50 push de ld a, [$ceeb] ld c, a ld a, [$ceec] ld b, a call Func_fad1 jr z, .asm_fa96 jr nc, .asm_fa70 dec bc ld a, c ld [$ceed], a ld a, b ld [$ceee], a call Func_fb30 ld a, e sub d jr .asm_fa7e .asm_fa70 inc bc ld a, c ld [$ceed], a ld a, b ld [$ceee], a call Func_fb30 ld a, d sub e .asm_fa7e call Func_faf5 and a jr z, .asm_fa87 call Func_fab1 .asm_fa87 ld a, [$ceed] ld [$ceeb], a ld a, [$ceee] ld [$ceec], a pop de jr .asm_fa50 .asm_fa96 pop de ld a, e ld [$ceeb], a ld a, d ld [$ceec], a or e jr z, .asm_faa6 call Func_fb30 ld d, e .asm_faa6 call Func_faf5 ld a, $1 call Func_fab1 jp Delay3 ; known jump sources: fa84 (3:7a84), faab (3:7aab) Func_fab1: ; fab1 (3:7ab1) push hl .asm_fab2 push af push de ld d, $6 call DrawHPBar ld c, $2 call DelayFrames pop de ld a, [$ceef] add e cp $31 jr nc, .asm_face ld e, a pop af dec a jr nz, .asm_fab2 pop hl ret .asm_face pop af pop hl ret ; known jump sources: fa38 (3:7a38), fa59 (3:7a59) Func_fad1: ; fad1 (3:7ad1) ld a, d sub b ret nz ld a, e sub c ret ; known jump sources: fa2b (3:7a2b) Func_fad7: ; fad7 (3:7ad7) ld a, d sub b jr c, .asm_fae4 jr z, .asm_faeb .asm_fadd ld a, e sub c ld e, a ld a, d sbc b ld d, a ret .asm_fae4 ld a, c sub e ld e, a ld a, b sbc d ld d, a ret .asm_faeb ld a, e sub c jr c, .asm_fae4 jr nz, .asm_fadd ld de, $0 ret ; known jump sources: fa7e (3:7a7e), faa6 (3:7aa6) Func_faf5: ; faf5 (3:7af5) push af push de ld a, [W_LISTMENUID] ; $cf94 and a jr z, .asm_fb2d ld a, [$ceeb] ld [$cef1], a ld a, [$ceec] ld [$cef0], a push hl ld a, [$FF00+$f6] bit 0, a jr z, .asm_fb15 ld de, $9 jr .asm_fb18 .asm_fb15 ld de, $15 .asm_fb18 add hl, de push hl ld a, $7f ld [hli], a ld [hli], a ld [hli], a pop hl ld de, $cef0 ld bc, $203 call PrintNumber call DelayFrame pop hl .asm_fb2d pop de pop af ret ; known jump sources: fa69 (3:7a69), fa79 (3:7a79), faa2 (3:7aa2) Func_fb30: ; fb30 (3:7b30) push hl ld hl, $cee9 ld a, [hli] ld e, a ld a, [hli] ld d, a ld a, [hli] ld c, a ld a, [hli] ld b, a ld a, [hli] ld h, [hl] ld l, a push hl push de call Func_f9df ld a, e pop de pop bc push af call Func_f9df pop af ld d, e ld e, a pop hl ret ; known jump sources: 3ee2 (0:3ee2) Func_fb50: ; fb50 (3:7b50) ld a, [$c109] cp $4 jr nz, .asm_fb7f ld a, [W_CURMAPTILESET] ; $d367 ld b, a ld a, [$c434] ld c, a ld hl, $7b8b .asm_fb62 ld a, [hli] cp $ff jr z, .asm_fb7f cp b jr nz, .asm_fb7b ld a, [hli] cp c jr nz, .asm_fb7c ld a, [hl] push af call EnableAutoTextBoxDrawing pop af call Func_3ef5 xor a ld [$FF00+$db], a ret .asm_fb7b inc hl .asm_fb7c inc hl jr .asm_fb62 .asm_fb7f ld a, $ff ld [$FF00+$db], a ld b, BANK(Func_52673) ld hl, Func_52673 jp Bankswitch ; indirect jump to Func_52673 (52673 (14:6673)) INCBIN "baserom.gbc",$fb8b,$fbd9 - $fb8b 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 PokemonLogoGraphics: ; 0x11380 INCBIN "gfx/pokemon_logo.2bpp" FontGraphics: ; 0x11a80 INCBIN "gfx/font.1bpp" INCBIN "baserom.gbc",$11e80,$11ea0 - $11e80 HpBarAndStatusGraphics: ; 0x11ea0 INCBIN "gfx/hp_bar_and_status.2bpp" INCBIN "baserom.gbc",$12080,$12288 - $12080 ; FIXME TextBoxGraphics: ; 0x12288 INCBIN "gfx/text_box.2bpp" INCBIN "baserom.gbc",$12488,$128d8 - $12488 ; known jump sources: 1388d (4:788d) Func_128d8: ; 128d8 (4:68d8) ld a, [W_YCOORD] ; $d361 ld b, a ld a, [W_CURMAPHEIGHT] ; $d368 call Func_128ea ret z ld a, [W_XCOORD] ; $d362 ld b, a ld a, [W_CURMAPWIDTH] ; $d369 ; known jump sources: 128df (4:68df) Func_128ea: ; 128ea (4:68ea) add a cp b ret z inc b ret ; known jump sources: 129e5 (4:69e5), 3cdb9 (f:4db9) Func_128ef: ; 128ef (4:68ef) call Load16BitRegisters ld a, $1 jr asm_128fb ; known jump sources: 12d67 (4:6d67) Func_128f6: ; 128f6 (4:68f6) call Load16BitRegisters ld a, $2 asm_128fb: ; 128fb (4:68fb) ld [W_LISTMENUID], a ; $cf94 push hl ld a, [$cf99] ld b, a ld a, [$cf9a] ld c, a or b jr nz, .asm_12913 xor a ld c, a ld e, a ld a, $6 ld d, a jp Func_12924 .asm_12913 ld a, [$cfba] ld d, a ld a, [$cfbb] ld e, a ld a, $26 call Predef ; indirect jump to Func_f9dc (f9dc (3:79dc)) ld a, $6 ld d, a ld c, a ; known jump sources: 12910 (4:6910) Func_12924: ; 12924 (4:6924) pop hl push de push hl push hl call DrawHPBar pop hl ld a, [$FF00+$f6] bit 0, a jr z, .asm_12937 ld bc, $9 jr .asm_1293a .asm_12937 ld bc, $15 .asm_1293a add hl, bc ld de, $cf99 ld bc, $203 call PrintNumber ld a, $f3 ld [hli], a ld de, $cfba ld bc, $203 call PrintNumber pop hl pop de ret ; 12953 (4:6953) ; Predef 0x37 StatusScreen: ; 0x12953 call LoadMonData ld a, [$cc49] cp $2 ; 2 means we're in a PC box jr c, .DontRecalculate ; 0x1295b $14 ld a, [$cf9b] ld [$cfb9], a ld [$d127], a ld hl, $cfa8 ld de, $cfba ld b, $1 call $3936 ; Recalculate stats .DontRecalculate 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 ; ·│ :L and halfarrow line end ld de, $6098 ld hl, $9780 ld bc, $0401 call CopyVideoDataDouble ; │ ld de, $60b0 ld hl, $9760 ld bc, $0402 call CopyVideoDataDouble ; ─┘ ld de, PTile ld hl, $9720 ld bc,(BANK(PTile) << 8 | $01) call CopyVideoDataDouble ; P (for PP), inline ld a, [$ff00+$d7] push af xor a ld [$ff00+$d7], a FuncCoord 19,1 ld hl, Coord ld bc, $060a call DrawLineBox ; Draws the box around name, HP and status ld de, $fffa add hl, de ld [hl], $f2 ; . after No ("." is a different one) dec hl ld [hl], $74 ; No FuncCoord 19,9 ld hl, Coord ld bc, $0806 call DrawLineBox ; Draws the box around types, ID No. and OT FuncCoord 10,9 ld hl, Coord ld de, Type1Text call PlaceString ; "TYPE1/" FuncCoord 11,3 ld hl, Coord PREDEF DrawHPBarPredef ; predef $5f ld hl, $cf25 call $3df9 ld b, $3 call GoPAL_SET ; SGB palette FuncCoord 16,6 ld hl, Coord ld de, $cf9c call PrintStatusCondition jr nz, .StatusWritten ; 0x129fc $9 FuncCoord 16,6 ld hl, Coord ld de, OKText call PlaceString ; "OK" .StatusWritten FuncCoord 9,6 ld hl, Coord ld de, StatusText call PlaceString ; "STATUS/" FuncCoord 14,2 ld hl, Coord call PrintLevel ; Pokémon level ld a, [$d0b8] ld [$d11e], a ld [$d0b5], a ld a, $3a call Predef FuncCoord 3,7 ld hl, Coord ld de, $d11e ld bc, $8103 ; Zero-padded, 3 call PrintNumber ; Pokémon no. FuncCoord 11,10 ld hl, Coord ld a, $4b call Predef ; Prints the type (?) ld hl, $6a9d call .unk_12a7e ld d, h ld e, l FuncCoord 9,1 ld hl, Coord call PlaceString ; Pokémon name ld hl, $6a95 call .unk_12a7e ld d, h ld e, l FuncCoord 12,16 ld hl, Coord call PlaceString ; OT FuncCoord 12,14 ld hl, Coord ld de, $cfa4 ld bc, $8205 ; 5 call PrintNumber ; ID Number ld d, $0 call PrintStatsBox 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 .unk_12a7e ; 0x12a7e ; I don't know what this does, iterates over pointers? ld a, [$cc49] add a ld c, a ld b, $0 add hl, bc ld a, [hli] ld h, [hl] ld l, a ld a, [$cc49] cp $3 ret z ld a, [W_WHICHPOKEMON] jp $3a7d ; 0x12a95 INCBIN "baserom.gbc",$12a95,$12aa5 - $12a95 ; This is some pointers.. 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@" ; Draws a line starting from hl high b and wide c DrawLineBox ; 0x12ac7 ld de, $0014 ; New line .PrintVerticalLine ld [hl], $78 ; │ add hl, de dec b jr nz, .PrintVerticalLine ; 0x12ace $fa ld [hl], $77 ; ┘ dec hl .PrintHorizLine ld [hl], $76 ; ─ dec hl dec c jr nz, .PrintHorizLine ; 0x12ad7 $fa ld [hl], $6f ; ← (halfarrow ending) ret PTile: ; This is a single 1bpp "P" tile INCBIN "gfx/p_tile.1bpp" PrintStatsBox: ; 12ae4 ld a, d and a ; a is 0 from the status screen jr nz, .DifferentBox ; 0x12ae6 $12 FuncCoord 0,8 ld hl, Coord ld b, $8 ld c, $8 call TextBoxBorder ; Draws the box FuncCoord 1,9 ; Start printing stats from here ld hl, Coord ld bc, $0019 ; Number offset jr .PrintStats ; 0x12af8 $10 .DifferentBox FuncCoord 9,2 ld hl, Coord ld b, $8 ld c, $9 call TextBoxBorder ld hl, $c3e7 ld bc, $0018 .PrintStats push bc push hl ld de, StatsText call PlaceString pop hl pop bc add hl, bc ld de, $cfbc ld bc, $0203 ; three digits call PrintStat ld de, $cfbe call PrintStat ld de, $cfc0 call PrintStat ld de, $cfc2 jp PrintNumber PrintStat push hl call PrintNumber pop hl ld de, $0028 add hl, de ret StatsText: db "ATTACK", $4e db "DEFENSE", $4e db "SPEED", $4e db "SPECIAL", $50 StatusScreen2: ; 12b57 ld a, [$ff00+$d7] push af xor a ld [$ff00+$d7], a ld [$ff00+$ba], a ld bc, $0005 ld hl, $d0dc call $36e0 ld hl, $cfa0 ld de, $d0dc ld bc, $0004 call CopyData ld hl, $5b87 ld b, $e call Bankswitch FuncCoord 9,2 ld hl, Coord ld bc, $050a call ClearScreenArea ; Clear under name ld hl, $c3ef ld [hl], $78 FuncCoord 0,8 ld hl, Coord ld b, $8 ld c, $12 call TextBoxBorder ; Draw move container FuncCoord 2,9 ld hl, Coord ld de, $d0e1 call PlaceString ; Print moves ld a, [$cd6c] inc a ld c, a ld a, $4 sub c ld b, a ; Number of moves ? FuncCoord 11,10 ld hl, Coord ld de, $0028 ld a, $72 call $6ccb ; Print "PP" ld a, b and a jr z, .InitPP ; 0x12bb3 $6 ld c, a ld a, $e3 call $6ccb ; Fill the rest with -- .InitPP ; 12bbb ld hl, $cfa0 FuncCoord 14,10 ld de, Coord ld b, $0 .PrintPP ; 12bc3 ld a, [hli] and a jr z, .PPDone ; 0x12bc5 $4a push bc push hl push de ld hl, W_CURMENUITEMID ld a, [hl] push af ld a, b ld [hl], a push hl ld hl, $6677 ld b, $3 call Bankswitch pop hl pop af ld [hl], a pop de pop hl push hl ld bc, $0014 add hl, bc ld a, [hl] and $3f ld [$cd71], a ld h, d ld l, e push hl ld de, $cd71 ld bc, $0102 call PrintNumber ld a, "/" ld [hli], a ld de, $d11e ld bc, $0102 call PrintNumber pop hl ld de, $0028 add hl, de ld d, h ld e, l pop hl pop bc inc b ld a, b cp $4 jr nz, .PrintPP ; 0x12c0f $b2 .PPDone FuncCoord 9,3 ld hl, Coord ld de, EXPPointsText call PlaceString ld a, [$cfb9] ; level push af cp $64 jr z, .Level100 ; 0x12c20 $4 inc a ld [$cfb9], a ; Increase temporarily if not 100 .Level100 FuncCoord 14,6 ld hl, Coord ld [hl], $70 ; 1-tile "to" inc hl inc hl call PrintLevel pop af ld [$cfb9], a ld de, $cfa6 FuncCoord 12,4 ld hl, Coord ld bc, $0307 call PrintNumber ; exp call .asm_12c86 ld de, $cfa6 FuncCoord 7,6 ld hl, Coord ld bc, $0307 call PrintNumber FuncCoord 9,0 ld hl, Coord call $6cc3 FuncCoord 9,1 ld hl, Coord call $6cc3 ld a, [$d0b8] ld [$d11e], a call GetMonName FuncCoord 9,1 ld hl, Coord call PlaceString ld a, $1 ld [$ff00+$ba], a call Delay3 call $3865 ; wait for button pop af ld [$ff00+$d7], a ld hl, $d72c res 1, [hl] ld a, $77 ld [$ff00+$24], a call GBPalWhiteOut jp ClearScreen .asm_12c86 ; This does some magic with lvl/exp? ld a, [$cfb9] ; Load level cp $64 jr z, .asm_12ca7 ; 0x12c8b $1a ; If 100 inc a ld d, a ld hl, $4f6a ld b, $16 call Bankswitch ld hl, $cfa8 ld a, [$ff00+$98] sub [hl] ld [hld], a ld a, [$ff00+$97] sbc [hl] ld [hld], a ld a, [$ff00+$96] sbc [hl] ld [hld], a ret .asm_12ca7 ld hl, $cfa6 xor a ld [hli], a ld [hli], a ld [hl], a ret EXPPointsText: db "EXP POINTS", $4e LevelUpText: db "LEVEL UP", $50 ; known jump sources: 12c52 (4:6c52), 12c58 (4:6c58) Func_12cc3: ; 12cc3 (4:6cc3) ld bc, $a ld a, $7f jp FillMemory ; known jump sources: 12bae (4:6bae), 12bb8 (4:6bb8), 12ccf (4:6ccf) Func_12ccb: ; 12ccb (4:6ccb) ld [hli], a ld [hld], a add hl, de dec c jr nz, Func_12ccb ret ; 12cd2 (4:6cd2) ; [$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 ; known jump sources: 12d70 (4:6d70) Func_12ec7: ; 12ec7 (4:6ec7) ld hl, $cf1f ld a, [$cf2d] ld c, a ld b, $0 add hl, bc call Func_3df9 ld b, $fc call GoPAL_SET ld hl, $cf2d inc [hl] ret ; 12ede (4:6ede) RedPicFront: INCBIN "pic/trainer/red.pic" ShrinkPic1: INCBIN "pic/trainer/shrink1.pic" ShrinkPic2: INCBIN "pic/trainer/shrink2.pic" ; known jump sources: 2976 (0:2976) Func_13074: ; 13074 (4:7074) ld h, $c2 ld a, [$FF00+$da] add $8 ld l, a ld a, $7f ld [hl], a dec h ld a, [$FF00+$da] add $9 ld l, a ld a, [hld] ld b, a xor a ld [hld], a ld [hl], a ld a, [$FF00+$da] add $2 ld l, a ld a, [hl] or b ld [hld], a ld a, $2 ld [hl], a ret ; 13095 (4:7095) 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]," " 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," " 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," " 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 ; known jump sources: 14cf (0:14cf) Func_13613: ; 13613 (4:7613) call Func_13653 ld a, [W_WHICHTRADE] ; $cd3d call Func_13625 ld a, [W_CURMENUITEMID] ; $cc26 call Func_13625 jp RedrawPartyMenu_ ; known jump sources: 13619 (4:7619), 1361f (4:761f) Func_13625: ; 13625 (4:7625) push af ld hl, $c3a0 ld bc, $28 call AddNTimes ld c, $28 ld a, $7f .asm_13633 ld [hli], a dec c jr nz, .asm_13633 pop af ld hl, $c300 ld bc, $10 call AddNTimes ld de, $4 ld c, e .asm_13645 ld [hl], $a0 add hl, de dec c jr nz, .asm_13645 call Func_3748 ld a, $ae jp Func_23b1 ; known jump sources: 1313b (4:713b), 13613 (4:7613) Func_13653: ; 13653 (4:7653) ld a, [$cc35] and a jr nz, .asm_13661 ld a, [W_WHICHPOKEMON] ; $cf92 inc a ld [$cc35], a ret .asm_13661 xor a ld [$d07d], a ld a, [$cc35] dec a ld b, a ld a, [W_CURMENUITEMID] ; $cc26 ld [W_WHICHTRADE], a ; $cd3d cp b jr nz, .asm_1367b xor a ld [$cc35], a ld [$d07d], a ret .asm_1367b ld a, b ld [$cc35], a push hl push de ld hl, W_PARTYMON1 ; $d164 ld d, h ld e, l ld a, [W_CURMENUITEMID] ; $cc26 add l ld l, a jr nc, .asm_1368e inc h .asm_1368e ld a, [$cc35] add e ld e, a jr nc, .asm_13696 inc d .asm_13696 ld a, [hl] ld [H_DIVIDEND], a ; $FF00+$95 (aliases: H_PRODUCT, H_PASTLEADINGZEROES, H_QUOTIENT) ld a, [de] ld [hl], a ld a, [H_DIVIDEND] ; $FF00+$95 (aliases: H_PRODUCT, H_PASTLEADINGZEROES, H_QUOTIENT) ld [de], a ld hl, W_PARTYMON1_NUM ; $d16b (aliases: W_PARTYMON1DATA) ld bc, $2c ld a, [W_CURMENUITEMID] ; $cc26 call AddNTimes push hl ld de, $cc97 ld bc, $2c call CopyData ld hl, W_PARTYMON1_NUM ; $d16b (aliases: W_PARTYMON1DATA) ld bc, $2c ld a, [$cc35] call AddNTimes pop de push hl ld bc, $2c call CopyData pop de ld hl, $cc97 ld bc, $2c call CopyData ld hl, W_PARTYMON1OT ; $d273 ld a, [W_CURMENUITEMID] ; $cc26 call Func_3a7d push hl ld de, $cc97 ld bc, $b call CopyData ld hl, W_PARTYMON1OT ; $d273 ld a, [$cc35] call Func_3a7d pop de push hl ld bc, $b call CopyData pop de ld hl, $cc97 ld bc, $b call CopyData ld hl, W_PARTYMON1NAME ; $d2b5 ld a, [W_CURMENUITEMID] ; $cc26 call Func_3a7d push hl ld de, $cc97 ld bc, $b call CopyData ld hl, W_PARTYMON1NAME ; $d2b5 ld a, [$cc35] call Func_3a7d pop de push hl ld bc, $b call CopyData pop de ld hl, $cc97 ld bc, $b call CopyData ld a, [$cc35] ld [W_WHICHTRADE], a ; $cd3d xor a ld [$cc35], a ld [$d07d], a pop de pop hl ret ; known jump sources: e50c (3:650c), 12d79 (4:6d79) Func_1373e: ; 1373e (4:773e) ld a, [$cf91] ld [$d0b5], a call GetBaseStats ld hl, $d0cc push hl ld a, [$d0e0] ld b, a ld c, $0 ld hl, $7773 .asm_13754 ld a, [hli] cp b jr z, .asm_1375b inc c jr .asm_13754 .asm_1375b pop hl ld b, $2 ld a, $10 jp Predef ; indirect jump to Func_f666 (f666 (3:7666)) ; known jump sources: e490 (3:6490) Func_13763: ; 13763 (4:7763) ld a, [$d11e] dec a ld hl, $7773 ld b, $0 ld c, a add hl, bc ld a, [hl] ld [$d11e], a ret ; 13773 (4:7773) 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 ; known jump sources: 3f038 (f:7038) Func_137aa: ; 137aa (4:77aa) ld a, [W_ISLINKBATTLE] ; $d12b cp $4 jr nz, .asm_137eb ld a, [W_ENEMYMONNUMBER] ; $cfe8 ld hl, $d8a8 ld bc, $2c call AddNTimes ld a, [W_ENEMYMONSTATUS] ; $cfe9 ld [hl], a call ClearScreen ld hl, Func_372d6 ld b, BANK(Func_372d6) call Bankswitch ; indirect jump to Func_372d6 (372d6 (d:72d6)) ld a, [$cf0b] cp $1 ld de, $7853 jr c, .asm_137de ld de, $785b jr z, .asm_137de ld de, $7864 .asm_137de ld hl, $c446 call PlaceString ld c, $c8 call DelayFrames jr .asm_1380a .asm_137eb ld a, [$cf0b] and a jr nz, .asm_13813 ld hl, $cce5 ld a, [hli] or [hl] inc hl or [hl] jr z, .asm_1380a ld de, W_PLAYERMONEY1 ; $d349 ld c, $3 ld a, $b call Predef ; indirect jump to Func_f81d (f81d (3:781d)) ld hl, $786b call PrintText .asm_1380a xor a ld [$ccd4], a ld a, $2a call Predef ; indirect jump to Func_3ad1c (3ad1c (e:6d1c)) .asm_13813 xor a ld [$d083], a ld [$c02a], a ld [W_ISINBATTLE], a ; $d057 ld [W_BATTLETYPE], a ; $d05a ld [W_MOVEMISSED], a ; $d05f ld [W_CUROPPONENT], a ; $d059 ld [$d11f], a ld [$d120], a ld [$d078], a ld hl, $cc2b ld [hli], a ld [hli], a ld [hli], a ld [hl], a ld [W_LISTSCROLLOFFSET], a ; $cc36 ld hl, $d060 ld b, $18 .asm_1383e ld [hli], a dec b jr nz, .asm_1383e ld hl, $d72c set 0, [hl] call Func_3748 call GBPalWhiteOut ld a, $ff ld [$d42f], a ret INCBIN "baserom.gbc",$13853,$1386b - $13853 UnnamedText_1386b: ; 0x1386b TX_FAR _UnnamedText_1386b db $50 ; 0x1386b + 5 bytes ; known jump sources: 3ef39 (f:6f39) Func_13870: ; 13870 (4:7870) ld a, [$cc57] and a ret nz ld a, [$d736] and a ret nz ld hl, Func_c49d ld b, BANK(Func_c49d) call Bankswitch ; indirect jump to Func_c49d (c49d (3:449d)) jr nc, .asm_13888 .asm_13884 ld a, $1 and a ret .asm_13888 ld hl, Func_128d8 ld b, BANK(Func_128d8) call Bankswitch ; indirect jump to Func_128d8 (128d8 (4:68d8)) jr z, .asm_13884 ld a, [$d0db] and a jr z, .asm_1389e dec a jr z, .asm_13905 ld [$d0db], a .asm_1389e ld hl, $c45d ld c, [hl] ld a, [$d535] cp c ld a, [W_GRASSRATE] ; $d887 jr z, .asm_138c4 ld a, $14 cp c ld a, [W_WATERRATE] ; $d8a4 jr z, .asm_138c4 ld a, [W_CURMAP] ; $d35e cp $25 jr c, .asm_13912 ld a, [W_CURMAPTILESET] ; $d367 cp $3 jr z, .asm_13912 ld a, [W_GRASSRATE] ; $d887 .asm_138c4 ld b, a ld a, [H_RAND1] ; $FF00+$d3 cp b jr nc, .asm_13912 ld a, [H_RAND2] ; $FF00+$d4 ld b, a ld hl, $7918 .asm_138d0 ld a, [hli] cp b jr nc, .asm_138d7 inc hl jr .asm_138d0 .asm_138d7 ld c, [hl] ld hl, W_GRASSMONS ; $d888 ld a, [$c45c] cp $14 jr nz, .asm_138e5 ld hl, W_WATERMONS ; $d8a5 (aliases: W_ENEMYMON1HP) .asm_138e5 ld b, $0 add hl, bc ld a, [hli] ld [W_CURENEMYLVL], a ; $d127 ld a, [hl] ld [$cf91], a ld [$cfd8], a ld a, [$d0db] and a jr z, .asm_13916 ld a, [W_PARTYMON1_LEVEL] ; $d18c ld b, a ld a, [W_CURENEMYLVL] ; $d127 cp b jr c, .asm_13912 jr .asm_13916 .asm_13905 ld [$d0db], a ld a, $d2 ld [H_DOWNARROWBLINKCNT2], a ; $FF00+$8c call EnableAutoTextBoxDrawing call DisplayTextID .asm_13912 ld a, $1 and a ret .asm_13916 xor a ret INCBIN "baserom.gbc",$13918,$1392c - $13918 ; known jump sources: 3f956 (f:7956) Func_1392c: ; 1392c (4:792c) ld a, [H_WHOSETURN] ; $FF00+$f3 and a ld a, [W_PLAYERMOVENUM] ; $cfd2 ld hl, W_PLAYERMONMAXHP ; $d023 jr z, .asm_1393d ld a, [W_ENEMYMOVENUM] ; $cfcc ld hl, W_ENEMYMONMAXHP ; $cff4 .asm_1393d ld d, a ld a, [W_DAMAGE] ; $d0d7 ld b, a ld a, [$d0d8] ld c, a srl b rr c ld a, d cp $a5 jr z, .asm_13953 srl b rr c .asm_13953 ld a, b or c jr nz, .asm_13958 inc c .asm_13958 ld a, [hli] ld [$ceea], a ld a, [hl] ld [$cee9], a push bc ld bc, $fff2 add hl, bc pop bc ld a, [hl] ld [$ceeb], a sub c ld [hld], a ld [$ceed], a ld a, [hl] ld [$ceec], a sbc b ld [hl], a ld [$ceee], a jr nc, .asm_13982 xor a ld [hli], a ld [hl], a ld hl, $ceed ld [hli], a ld [hl], a .asm_13982 ld hl, $c45e ld a, [H_WHOSETURN] ; $FF00+$f3 and a ld a, $1 jr z, .asm_13990 ld hl, $c3ca xor a .asm_13990 ld [W_LISTMENUID], a ; $cf94 ld a, $48 call Predef ; indirect jump to Func_fa1d (fa1d (3:7a1d)) ld hl, $799e jp PrintText ; 1399e (4:799e) 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 ; known jump sources: 35a3 (0:35a3) Func_13a58: ; 13a58 (4:7a58) ld hl, W_GRASSRATE ; $d887 ld a, [W_ISLINKBATTLE] ; $d12b and a jr nz, .asm_13a86 ld hl, W_RIVALNAME ; $d34a ld a, [W_TRAINERCLASS] ; $d031 cp $19 jr z, .asm_13a86 cp $2a jr z, .asm_13a86 cp $2b jr z, .asm_13a86 ld [$d0b5], a ld a, $7 ld [$d0b6], a ld a, $e ld [$d0b7], a call GetName ld hl, $cd6d .asm_13a86 ld de, $d04a ld bc, $d jp CopyData ; 13a8f (4:7a8f) 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 ; known jump sources: 3239 (0:3239), 18fc3 (6:4fc3), 50f3d (14:4f3d), 51059 (14:5059), 70824 (1c:4824) Func_17c47: ; 17c47 (5:7c47) ld a, [$cd50] ld c, a ld b, $0 ld hl, $7caf add hl, bc add hl, bc ld e, [hl] inc hl ld d, [hl] ld hl, $8f80 ld bc, $504 call CopyVideoData ld a, [$cfcb] push af ld a, $ff ld [$cfcb], a ld a, [$d736] bit 6, a ld hl, $c38f ld de, $c39f jr z, .asm_17c7a ld hl, $c37f ld de, $c38f .asm_17c7a ld bc, $90 .asm_17c7d ld a, [hl] ld [de], a dec hl dec de dec bc ld a, c or b jr nz, .asm_17c7d ld hl, $c104 ld a, [$cd4f] swap a ld c, a ld b, $0 add hl, bc ld a, [hli] ld b, a inc hl ld a, [hl] add $8 ld c, a ld de, $7cb5 xor a call WriteOAMBlock ld c, $3c call DelayFrames pop af ld [$cfcb], a call DelayFrame jp Func_2429 INCBIN "baserom.gbc",$17caf,$17d7d - $17caf ; known jump sources: 71c87 (1c:5c87) Func_17d7d: ; 17d7d (5:7d7d) ld a, [W_PLAYERMONACCURACYMOD] ; $cd1e cp $86 jr z, .asm_17d8d cp $92 ret nz ld a, [W_PLAYERMONEVASIONMOD] ; $cd1f cp $8f ret nz .asm_17d8d ld a, [W_NUMINPARTY] ; $d163 dec a ld [W_WHICHPOKEMON], a ; $cf92 ld a, $1 ld [$ccd4], a ld a, $32 ld [W_ISLINKBATTLE], a ; $d12b ld hl, Func_3ad0e ld b, BANK(Func_3ad0e) call Bankswitch ; indirect jump to Func_3ad0e (3ad0e (e:6d0e)) xor a ld [W_ISLINKBATTLE], a ; $d12b jp Func_2307 ; 17dad (5:7dad) SubstituteEffectHandler: ;0x17DAD ld c, 50 call DelayFrames ld hl, W_PLAYERMONMAXHP ld de, W_PLAYERSUBSITUTEHP ld bc, W_PLAYERBATTSTATUS2 ld a, [$ff00+$f3] ;whose turn? and a jr z, .notEnemy ld hl, W_ENEMYMONMAXHP ld de, W_ENEMYSUBSITUTEHP ld bc, W_ENEMYBATTSTATUS2 .notEnemy ld a, [bc] ;load flags bit 4, a ;user already has substitute? jr nz, .alreadyHasSubstitute ;skip this code if so ;user doesn't have a substitute [yet] push bc ld a, [hli] ;load max hp ld b, [hl] srl a ;max hp / 4, [quarter health to remove from user] rr b srl a rr b push de ld de, $fff2 ;subtract 8 to point to [current hp] instead of [max hp] add hl, de ;HL -= 8 pop de ld a, b ld [de], a ;save copy of HP to subtract in ccd7/ccd8 [how much HP substitute has] ld a, [hld] ;load current hp sub b ;subtract [max hp / 4] ld d, a ;save low byte result in D ld a, [hl] sbc a, 0 ;borrow from high byte if needed pop bc jr c, .notEnoughHP ;underflow means user would be left with negative health ;bug: note since it only brances on carry, it will possibly leave user with 0HP .userHasZeroOrMoreHP ldi [hl], a ;store high byte HP ld [hl], d ;store low byte HP ld h, b ld l, c set 4, [hl] ;set bit 4 of flags, user now has substitute ld a, [$d355] ;load options bit 7, a ;battle animation is enabled? ld hl, $7ba8 ;animation enabled: 0F:7BA8 ld b, $0f jr z, .animationEnabled ld hl, $56e0 ;animation disabled: 1E:56E0 ld b, $1e .animationEnabled call Bankswitch ;jump to routine depending on animation setting ld hl, UnnamedText_17e1d ;"it created a substitute" call PrintText ld hl, $4d5a ld b, $0f jp Bankswitch .alreadyHasSubstitute ld hl, UnnamedText_17e22 ;"x has a substitute" jr .printText .notEnoughHP ld hl, UnnamedText_17e27 ;"too weak to make substitute" .printText jp PrintText 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 ActivatePC: ;0x17e2c call $36F4 ;XXX: copy background from $C3A0 to $CD81 ld a, $99 call $23B1 ;XXX: play sound or stop music ld hl, UnnamedText_17f23 ;player turned on PC call PrintText call $3748 ;XXX: wait for sound to be done ld hl, $CD60 set 3, [hl] call $3701 ;XXX: restore saved screen call Delay3 PCMainMenu: ld b, 8 ld hl, $53C8 call Bankswitch ld hl, $CD60 set 5, [hl] call HandleMenuInput bit 1, a ;if player pressed B jp nz, LogOff ld a, [W_MAXMENUITEMID] cp a, 2 jr nz, .next ;if not 2 menu items (not counting log off) (2 occurs before you get the pokedex) ld a, [W_CURMENUITEMID] and a jp z, BillsPC ;if current menu item id is 0, it's bills pc cp a, 1 jr z, .playersPC ;if current menu item id is 1, it's players pc jp LogOff ;otherwise, it's 2, and you're logging off .next cp a, 3 jr nz, .next2 ;if not 3 menu items (not counting log off) (3 occurs after you get the pokedex, before you beat the pokemon league) ld a, [W_CURMENUITEMID] and a jp z, BillsPC ;if current menu item id is 0, it's bills pc cp a, 1 jr z, .playersPC ;if current menu item id is 1, it's players pc cp a, 2 jp z, OaksPC ;if current menu item id is 2, it's oaks pc jp LogOff ;otherwise, it's 3, and you're logging off .next2 ld a, [W_CURMENUITEMID] and a jp z, BillsPC ;if current menu item id is 0, it's bills pc cp a, 1 jr z, .playersPC ;if current menu item id is 1, it's players pc cp a, 2 jp z, OaksPC ;if current menu item id is 2, it's oaks pc cp a, 3 jp z, PKMNLeague ;if current menu item id is 3, it's pkmnleague jp LogOff ;otherwise, it's 4, and you're logging off .playersPC ld hl, $CD60 res 5, [hl] set 3, [hl] ld a, $9B call $23B1 ;XXX: play sound or stop music call $3748 ;XXX: wait for sound to be done ld hl, UnnamedText_17f32 ;accessed players pc call PrintText ld b, 1 ld hl, $78E6 call Bankswitch jr ReloadMainMenu OaksPC: ld a, $9B call $23B1 ;XXX: play sound or stop music call $3748 ;XXX: wait for sound to be done ld b, 7 ld hl, $6915 call Bankswitch jr ReloadMainMenu PKMNLeague: ld a, $9B call $23B1 ;XXX: play sound or stop music call $3748 ;XXX: wait for sound to be done ld b, BANK(Unknown_7657e) ld hl, Unknown_7657e call Bankswitch jr ReloadMainMenu BillsPC: ld a, $9B call $23B1 ;XXX: play sound or stop music call $3748 ;XXX: wait for sound to be done ld a, [$D7F1] ;has to do with having met Bill bit 0, a jr nz, .billsPC ;if you've met bill, use that bill's instead of someone's ld hl, UnnamedText_17f2d ;accessed someone's pc jr .printText .billsPC ld hl, UnnamedText_17f28 ;accessed bill's pc .printText call PrintText ld b, 8 ld hl, $54C2 call Bankswitch ReloadMainMenu: xor a ld [$CC3C], a call ReloadMapData call $2429 ;XXX: moves sprites jp PCMainMenu LogOff: ld a, $9A call $23B1 ;XXX: play sound or stop music call $3748 ;XXX: wait for sound to be done ld hl, $CD60 res 3, [hl] res 5, [hl] ret 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 ; known jump sources: 1d774 (7:5774), 484eb (12:44eb), 5a5b4 (16:65b4), 61096 (18:5096), 75101 (1d:5101) Func_17f37: ; 17f37 (5:7f37) ld hl, W_BAGITEM01 ; $d31e ld a, [$FF00+$db] ld b, a xor a ld [$FF00+$dc], a .asm_17f40 ld a, [hli] cp $ff ret z cp b jr z, .asm_17f4f inc hl ld a, [$FF00+$dc] inc a ld [$FF00+$dc], a jr .asm_17f40 .asm_17f4f ld a, $1 ld [$cf96], a ld a, [$FF00+$dc] ld [W_WHICHPOKEMON], a ; $cf92 ld hl, W_NUMBAGITEMS ; $d31d jp RemoveItemFromInventory ; 17f5f (5:7f5f) 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 ; beta warp! no longer used 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 ; PokeCenterSignText 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 ; MartSignText db $19, $18, $c ; PokeCenterSignText 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 ; MartSignText db $19, $e, $9 ; PokeCenterSignText 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 ; MartSignText db $11, $14, $f ; PokeCenterSignText 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 ; MartSignText db $3, $c, $a ; PokeCenterSignText 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 ; MartSignText db $1b, $14, $f ; PokeCenterSignText 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" ; known jump sources: 2099 (0:2099) Func_18dee: ; 18dee (6:4dee) call Func_18e36 ld a, [$d732] bit 0, a ret z ld a, [W_PLAYTIMEMINUTES] ; $da42 and a ret nz ld a, [W_PLAYTIMEFRAMES] ; $da45 inc a ld [W_PLAYTIMEFRAMES], a ; $da45 cp $3c ret nz xor a ld [W_PLAYTIMEFRAMES], a ; $da45 ld a, [W_PLAYTIMESECONDS] ; $da44 inc a ld [W_PLAYTIMESECONDS], a ; $da44 cp $3c ret nz xor a ld [W_PLAYTIMESECONDS], a ; $da44 ld a, [$da43] inc a ld [$da43], a cp $3c ret nz xor a ld [$da43], a ld a, [$da41] inc a ld [$da41], a cp $ff ret nz ld a, $ff ld [W_PLAYTIMEMINUTES], a ; $da42 ret ; known jump sources: 18dee (6:4dee) Func_18e36: ; 18e36 (6:4e36) ld a, [$d13a] and a jr nz, .asm_18e40 ld a, $ff jr .asm_18e41 .asm_18e40 dec a .asm_18e41 ld [$d13a], a and a ret nz ld a, [$d730] res 1, a res 2, a bit 5, a res 5, a ld [$d730], a ret z xor a ld [$FF00+$b3], a ld [$FF00+$b4], a ret ; 18e5b (6:4e5b) PalletTownScript: ld a,[$D74B] bit 4,a jr z,.next ld hl,$D747 set 6,[hl] .next call EnableAutoTextBoxDrawing 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 DisplayTextID 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 DisplayTextID 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 EnableAutoTextBoxDrawing ld hl, ViridianCityScripts ld a, [$d5f4] jp $3d97 ; 0x18ffd ViridianCityScripts: ; 0x18ffd dw ViridianCityScript0 dw ViridianCityScript1 dw ViridianCityScript2 dw ViridianCityScript3 ViridianCityScript0: ; 0x19005 call Function1900b jp Function1903d Function1900b: ; 0x1900b ld a, [$d74c] bit 0, a ret nz ld a, [W_OBTAINEDBADGES] cp %01111111 jr nz, .asm_1901e ; 0x19016 $6 ld hl, $d74c set 0, [hl] ret .asm_1901e ld a, [W_YCOORD] cp $8 ret nz ld a, [W_XCOORD] cp $20 ret nz ld a, $e ld [$ff00+$8c], a call DisplayTextID xor a ld [$ff00+$b4], a call Function190cf ld a, $3 ld [$d5f4], a ret Function1903d: ; 0x1903d ld a, [$d74b] bit 5, a ret nz ld a, [W_YCOORD] cp $9 ret nz ld a, [W_XCOORD] cp $13 ret nz ld a, $5 ld [$ff00+$8c], a call DisplayTextID xor a ld [$ff00+$b4], a call Function190cf ld a, $3 ld [$d5f4], a ret ViridianCityScript1: ; 0x19062 ld a, [$c134] ld [$ff00+$eb], a ld a, [$c136] ld [$ff00+$ec], a ld a, [$c234] ld [$ff00+$ed], a ld a, [$c235] ld [$ff00+$ee], a xor a ld [W_LISTSCROLLOFFSET], a ; set up battle for Old Man ld a, $1 ld [W_BATTLETYPE], a ld a, 5 ld [W_CURENEMYLVL], a ld a, WEEDLE ld [W_CUROPPONENT], a ld a, $2 ld [$d5f4], a ; XXX what is this ret ViridianCityScript2: ; 0x1908f ld a, [$ff00+$eb] ld [$c134], a ld a, [$ff00+$ec] ld [$c136], a ld a, [$ff00+$ed] ld [$c234], a ld a, [$ff00+$ee] ld [$c235], a call $2429 call Delay3 xor a ld [$cd6b], a ld a, $f ld [$ff00+$8c], a call DisplayTextID xor a ld [W_BATTLETYPE], a ld [$cd6b], a ld a, $0 ld [$d5f4], a ret ViridianCityScript3: ; 0x190c1 ld a, [$cd38] and a ret nz call Delay3 ld a, 0 ld [$d5f4], a ret Function190cf: ; 0x190cf call $3486 ld a, $1 ld [$cd38], a ld a, $80 ld [$ccd3], a xor a ld [$c109], a ld [$cd6b], a ret ViridianCityTexts: ; 0x190e4 dw ViridianCityText1, ViridianCityText2, ViridianCityText3, ViridianCityText4, ViridianCityText5, ViridianCityText6, ViridianCityText7, ViridianCityText8, ViridianCityText9, ViridianCityText10, MartSignText, PokeCenterSignText, 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 DelayFrames 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 EnableAutoTextBoxDrawing ld hl, PewterCityScripts ld a, [$d5f7] jp $3d97 ; 0x19243 PewterCityScripts: ; 0x19243 dw PewterCityScript0 dw PewterCityScript1 dw PewterCityScript2 dw PewterCityScript3 dw PewterCityScript4 dw PewterCityScript5 dw PewterCityScript6 PewterCityScript0: ; 0x19251 xor a ld [$d619], a ld hl, $d754 res 0, [hl] call Function1925e ret ; 0x1925e Function1925e: ; 0x1925e ld a, [$d755] bit 7, a ret nz ld hl, CoordsData19277 call ArePlayerCoordsInArray ret nc ld a, $f0 ld [$cd6b], a ld a, $5 ld [$ff00+$8c], a jp DisplayTextID CoordsData19277: ; 0x19277 db $11,$23 db $11,$24 db $12,$25 db $13,$25 db $ff PewterCityScript1: ; 0x19280 ld a, [$cc57] and a ret nz ld a, $3 ld [$ff00+$8c], a ld a, $4 ld [$ff00+$8d], a call $34a6 ld a, $34 ld [$ff00+$8d], a call $34b9 call $2307 ld hl, $cd60 set 4, [hl] ld a, $d ld [$ff00+$8c], a call DisplayTextID ld a, $3c ld [$ff00+$eb], a ld a, $30 ld [$ff00+$ec], a ld a, $c ld [$ff00+$ed], a ld a, $11 ld [$ff00+$ee], a ld a, $3 ld [$cf13], a call $32f9 ld a, $3 ld [$ff00+$8c], a ld de, $52ce call MoveSprite ld a, $2 ld [$d5f7], a ret ; 0x192ce MovementData192ce: ; 0x192ce db 0,0,0,0,$ff PewterCityScript2: ; 0x192d3 ld a, [$d730] bit 0, a ret nz ld a, $3 ld [$cc4d], a ld a, $11 call Predef ld a, $3 ld [$d5f7], a ret PewterCityScript3: ; 0x192e9 ld a, $3 ld [$cf13], a call $32fe ld a, $3 ld [$cc4d], a ld a, $15 call Predef xor a ld [$cd6b], a ld a, $0 ld [$d5f7], a ret PewterCityScript4: ; 0x19305 ld a, [$cc57] and a ret nz ld a, $5 ld [$ff00+$8c], a ld a, $8 ld [$ff00+$8d], a call $34a6 ld a, $18 ld [$ff00+$8d], a call $34b9 call $2307 ld hl, $cd60 set 4, [hl] ld a, $e ld [$ff00+$8c], a call DisplayTextID ld a, $3c ld [$ff00+$eb], a ld a, $40 ld [$ff00+$ec], a ld a, $16 ld [$ff00+$ed], a ld a, $10 ld [$ff00+$ee], a ld a, $5 ld [$cf13], a call $32f9 ld a, $5 ld [$ff00+$8c], a ld de, MovementData19353 call MoveSprite ld a, $5 ld [$d5f7], a ret MovementData19353: ; 0x19353 db $c0,$c0,$c0,$c0,$c0,$ff PewterCityScript5: ; 0x19359 ld a, [$d730] bit 0, a ret nz ld a, $4 ld [$cc4d], a ld a, $11 call Predef ld a, $6 ld [$d5f7], a ret PewterCityScript6: ; 0x1936f ld a, $5 ld [$cf13], a call $32fe ld a, $4 ld [$cc4d], a ld a, $15 call Predef xor a ld [$cd6b], a ld a, $0 ld [$d5f7], a ret PewterCityTexts: ; 0x1938b dw PewterCityText1, PewterCityText2, PewterCityText3, PewterCityText4, PewterCityText5, PewterCityText6, PewterCityText7, MartSignText, PokeCenterSignText, 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 EnableAutoTextBoxDrawing 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 dw CeruleanCityScript1 dw CeruleanCityScript2 dw CeruleanCityScript3 dw CeruleanCityScript4 CeruleanCityScript4: ; 0x194a7 ld a, [W_ISINBATTLE] cp $ff jp z, CeruleanCity_Unknown1948c ld a, $f0 ld [$cd6b], a ld hl, $d75b set 7, [hl] ld a, $2 ld [$ff00+$8c], a call DisplayTextID xor a ld [$cd6b], a ld [$d60f], a ret CeruleanCityScript0: ; 0x194c8 ld a, [$d75b] bit 7, a jr nz, .asm_194f7 ; 0x194cd $28 ld hl, CeruleanCityCoords1 call ArePlayerCoordsInArray 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 DisplayTextID .asm_194f7 ld a, [$d75a] bit 0, a ret nz ld hl, CeruleanCityCoords2 call ArePlayerCoordsInArray 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, CeruleanCityMovement1 ld a, $1 ld [$ff00+$8c], a call MoveSprite ld a, $1 ld [$d60f], a ret ; 0x1954f CeruleanCityCoords1: db $07,$1e db $09,$1e db $ff CeruleanCityCoords2: db $06,$14 db $06,$15 db $ff CeruleanCityMovement1: db 0,0,0,$ff CeruleanCityFunction1955d: ld a,1 ld [$ff8c],a xor a ld [$ff8d],a jp $34a6 ; face object CeruleanCityScript1: ; 0x19567 ld a, [$d730] bit 0, a ret nz xor a ld [$cd6b], a ld a, $1 ld [$ff00+$8c], a call DisplayTextID 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 CeruleanCityFunction1955d 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 DisplayTextID ld a, $ff ld [$c0ee], a call $23b1 ld b, $2 ld hl, $5b47 call Bankswitch ld a, $1 ld [$ff00+$8c], a call Function3541 ld a, [$d362] cp $14 jr nz, .asm_195f0 ; 0x195e9 $5 ld de, CeruleanCityMovement4 jr .asm_195f3 ; 0x195ee $3 .asm_195f0 ld de, CeruleanCityMovement3 .asm_195f3 ld a, $1 ld [$ff00+$8c], a call MoveSprite ld a, $3 ld [$d60f], a ret CeruleanCityMovement3: db $80, $00, $00, $00, $00, $00, $00, $ff CeruleanCityMovement4: db $c0, $00, $00, $00, $00, $00, $00, $ff 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, MartSignText, PokeCenterSignText, 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 EnableAutoTextBoxDrawing ld hl, $d126 bit 6, [hl] res 6, [hl] push hl call nz, Function197cb pop hl bit 5, [hl] res 5, [hl] call nz, VermilionCityScript_Unknown197c0 ld hl, VermilionCityScripts ld a, [$d62a] jp $3d97 ; 0x197c0 VermilionCityScript_Unknown197c0: ; 0x197c0 call GenRandom ld a, [$ff00+$d4] and $e ld [$d743], a ret Function197cb: ; 0x197cb ld hl, $d803 bit 2, [hl] ret z bit 3, [hl] set 3, [hl] ret nz ld a, $2 ld [$d62a], a ret VermilionCityScripts: ; 0x197dc dw VermilionCityScript0 dw VermilionCityScript1 dw VermilionCityScript2 dw VermilionCityScript3 dw VermilionCityScript4 VermilionCityScript0: ; 0x197e6 ld a, [$c109] and a ret nz ld hl, Coords19823 call ArePlayerCoordsInArray ret nc xor a ld [$ff00+$b4], a ld [$cf0d], a ld a, $3 ld [$ff00+$8c], a call DisplayTextID 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 Coords19823: ; 0x19823 db $1e,$12 db $ff VermilionCityScript4: ; 0x19826 ld hl, Coords19823 call ArePlayerCoordsInArray ret c ld a, $0 ld [$d62a], a ret VermilionCityScript2: ; 0x19833 ld a, $ff ld [$cd6b], a ld a, $40 ld [$ccd3], a ld [$ccd4], a ld a, $2 ld [$cd38], a call $3486 ld a, $3 ld [$d62a], a ret VermilionCityScript3: ; 0x1984e ld a, [$cd38] and a ret nz xor a ld [$cd6b], a ld [$ff00+$b4], a ld a, $0 ld [$d62a], a ret VermilionCityScript1: ; 0x1985f ld a, [$cd38] and a ret nz ld c, $a call DelayFrames ld a, $0 ld [$d62a], a ret ; 0x1986f VermilionCityTexts: ; 0x1986f dw VermilionCityText1, VermilionCityText2, VermilionCityText3, VermilionCityText4, VermilionCityText5, VermilionCityText6, VermilionCityText7, VermilionCityText8, MartSignText, PokeCenterSignText, 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, VermilionCityCoords1 call ArePlayerCoordsInArray 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 VermilionCityCoords1: db $1d,$13 db $1f,$13 db $ff 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, MACHOP 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 EnableAutoTextBoxDrawing 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, PokeCenterSignText, 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, POLIWRATH 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 EnableAutoTextBoxDrawing ; 0x19a2e FuchsiaCityTexts: ; 0x19a2e dw FuchsiaCityText1, FuchsiaCityText2, FuchsiaCityText3, FuchsiaCityText4, FuchsiaCityText5, FuchsiaCityText6, FuchsiaCityText7, FuchsiaCityText8, FuchsiaCityText9, FuchsiaCityText10, FuchsiaCityText11, FuchsiaCityText12, FuchsiaCityText13, MartSignText, PokeCenterSignText, 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 EnableAutoTextBoxDrawing 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 EnableAutoTextBoxDrawing ; 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 EnableAutoTextBoxDrawing 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 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 EnableAutoTextBoxDrawing ld hl, SilphCo4TrainerHeaders ld de, SilphCo4ScriptPointers ld a, [$d645] call $3160 ld [$d645], a ret ; 0x19d21 SilphCo4Script_Unknown19d21: ; 0x19d21 ld hl, $d126 bit 5, [hl] res 5, [hl] ret z ld hl, SilphCo4Data19d58 call SilphCo4Function19d5d call SilphCo4Function19d89 ld a, [$d82a] bit 0, a jr nz, .asm_19d48 push af ld a, $54 ld [$d09f], a ld bc, $0602 ld a, $17 call Predef pop af .asm_19d48 bit 1, a ret nz ld a, $54 ld [$d09f], a ld bc, $0406 ld a, $17 jp Predef SilphCo4Data19d58: ; 0x19d58 db $06, $02, $04, $06, $ff SilphCo4Function19d5d: ; 0x19d5d push hl ld hl, $d73f ld a, [hli] ld b, a ld a, [hl] ld c, a xor a ld [$ff00+$e0], a pop hl .asm_19d69 ld a, [hli] cp $ff jr z, .asm_19d85 ; 0x19d6c $17 push hl ld hl, $ffe0 inc [hl] pop hl cp b jr z, .asm_19d7a ; 0x19d75 $3 inc hl jr .asm_19d69 ; 0x19d78 $ef .asm_19d7a ld a, [hli] cp c jr nz, .asm_19d69 ; 0x19d7c $eb ld hl, $d73f xor a ld [hli], a ld [hl], a ret .asm_19d85 xor a ld [$ff00+$e0], a ret SilphCo4Function19d89: ; 0x19d89 ld hl, $d82a ld a, [$ff00+$e0] and a ret z cp $1 jr nz, .asm_19d97 ; 0x19d92 $3 set 0, [hl] ret .asm_19d97 set 1, [hl] ret SilphCo4ScriptPointers: dw $3219, $324c, $3275 SilphCo4Texts: ; 0x19da0 dw SilphCo4Text1, SilphCo4Text2, SilphCo4Text3, SilphCo4Text4, Predef5CText, Predef5CText, Predef5CText 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 Unnamed_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 EnableAutoTextBoxDrawing ld hl, SilphCo5TrainerHeaders ld de, SilphCo5ScriptPointers ld a, [$d646] call $3160 ld [$d646], a ret ; 0x19f4d Unnamed_19f4d: ; 0x19f4d ld hl, $d126 bit 5, [hl] res 5, [hl] ret z ld hl, SilphCo5Coords call $5d5d call $5f9e ld a, [$d82c] bit 0, a jr nz, .asm_19f74 ; 0x19f63 $f push af ld a, $5f ld [$d09f], a ld bc, $0203 ld a, $17 call Predef pop af .asm_19f74 bit 1, a jr nz, .asm_19f87 ; 0x19f76 $f push af ld a, $5f ld [$d09f], a ld bc, $0603 ld a, $17 call Predef pop af .asm_19f87 bit 2, a ret nz ld a, $5f ld [$d09f], a ld bc, $0507 ld a, $17 jp Predef ; 0x19f97 SilphCo5Coords: ; coords? db $02, $03, $06, $03, $05, $07, $ff SilphCo5Function19f9e: ld hl, $d82c ld a, [$ff00+$e0] and a ret z cp $1 jr nz, .asm_19fac ; 0x19fa7 $3 set 0, [hl] ret .asm_19fac cp $2 jr nz, .asm_19fb3 ; 0x19fae $3 set 1, [hl] ret .asm_19fb3 set 2, [hl] ret SilphCo5ScriptPointers: dw $3219, $324c, $3275 SilphCo5Texts: ; 0x19fbc dw SilphCo5Text1, SilphCo5Text2, SilphCo5Text3, SilphCo5Text4, SilphCo5Text5, Predef5CText, Predef5CText, Predef5CText, 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 Unnamed_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 EnableAutoTextBoxDrawing ld hl, SilphCo6TrainerHeaders ld de, SilphCo6ScriptPointers ld a, [$d647] call $3160 ld [$d647], a ret ; 0x1a1bf Unnamed_1a1bf: ; 0x1a1bf ld hl, $d126 bit 5, [hl] res 5, [hl] ret z ld hl, SilphCo6Coords1 call $5d5d call Unknown_1a1e6 ld a, [$d82e] bit 7, a ret nz ld a, $5f ld [$d09f], a ld bc, $0602 ld a, $17 jp Predef SilphCo6Coords1: db $06, $02 db $ff Unknown_1a1e6: ld a, [$ff00+$e0] and a ret z ld hl, $d82e set 7, [hl] ret SilphCo6ScriptPointers: dw $3219 dw $324c dw $3275 SilphCo6Texts: ; 0x1a1f6 dw SilphCo6Text1, SilphCo6Text2, SilphCo6Text3, SilphCo6Text4, SilphCo6Text5, SilphCo6Text6, SilphCo6Text7, SilphCo6Text8, Predef5CText, Predef5CText 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 ld a, [$d838] bit 7, a jr nz, .asm_1a238 ; 0x1a234 $2 jr .asm_1a23a ; 0x1a236 $2 .asm_1a238 ld h, d ld l, e .asm_1a23a jp PrintText 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" ; known jump sources: 314b (0:314b) Func_1a3e0: ; 1a3e0 (6:63e0) ld hl, $d730 res 1, [hl] call Func_1a609 jr nc, .asm_1a406 ld a, $fc ld [$cd6b], a ld hl, $d736 set 1, [hl] ld a, $1 ld [$cd38], a ld a, $80 ld [$ccd3], a xor a ld [$c102], a call Func_3486 ret .asm_1a406 xor a ld [$cd3a], a ld [$cd38], a ld [$ccd3], a ld hl, $d736 res 0, [hl] res 1, [hl] ld hl, $d730 res 7, [hl] ret ; known jump sources: 3153 (0:3153) Func_1a41d: ; 1a41d (6:641d) ld hl, $d730 res 7, [hl] ld hl, $d72e res 7, [hl] ld hl, $d736 res 0, [hl] res 1, [hl] xor a ld [$cf17], a ld [$cc57], a ld [$cf10], a ld [$cd3a], a ld [$cd38], a ld [$ccd3], a ret INCBIN "baserom.gbc",$1a442,$1a44c - $1a442 ld a, [W_XCOORD] ; $d362 sub $a ld [$cca1], a jr z, .asm_1a475 ld b, $0 ld c, a ld hl, $cc97 ld a, $80 call FillMemory ld [hl], $ff ld a, [$cf13] ld [H_DOWNARROWBLINKCNT2], a ; $FF00+$8c ld de, $cc97 call MoveSprite ld a, $1 ld [$cf10], a jr .asm_1a47a .asm_1a475 ld a, $3 ld [$cf10], a .asm_1a47a ld hl, $d733 set 1, [hl] ld a, $fc ld [$cd6b], a ret INCBIN "baserom.gbc",$1a485,$1a4a6 - $1a485 xor a ld [$cd3b], a ld a, [$cf13] swap a ld [$cf17], a xor a ld [$c206], a ld hl, $ccd3 ld de, $64e9 call Func_350c dec a ld [$cd38], a ld hl, $cc97 ld de, $64dc call Func_350c ld hl, $d72e res 7, [hl] ld hl, $d730 set 7, [hl] ld a, $4 ld [$cf10], a ret INCBIN "baserom.gbc",$1a4dc,$1a4f4 - $1a4dc ld a, [$cd38] and a ret nz ld a, $0 ld [$cc4d], a ld a, $11 call Predef ; indirect jump to Func_f1d7 (f1d7 (3:71d7)) ld hl, $d730 res 7, [hl] ld hl, $d72e res 7, [hl] jp Func_314e INCBIN "baserom.gbc",$1a510,$1a5e7 - $1a510 ; known jump sources: 33b1 (0:33b1) Func_1a5e7: ; 1a5e7 (6:65e7) ld a, [W_CURMAP] ; $d35e cp $94 ret z ld hl, $6605 ld a, [$cd2d] ld b, a .asm_1a5f4 ld a, [hli] cp $ff jr z, .asm_1a5fd cp b ret z jr .asm_1a5f4 .asm_1a5fd ld a, [$cf13] ld [H_DOWNARROWBLINKCNT2], a ; $FF00+$8c jp Function3541 INCBIN "baserom.gbc",$1a605,$1a609 - $1a605 ; known jump sources: c4a5 (3:44a5), 1a3e5 (6:63e5) Func_1a609: ; 1a609 (6:6609) push de ld hl, $662c ld a, [W_CURMAPTILESET] ; $d367 ld de, $3 call IsInArray pop de jr nc, .asm_1a62a inc hl ld a, [hli] ld h, [hl] ld l, a ld a, [$c45c] ld b, a .asm_1a621 ld a, [hli] and a jr z, .asm_1a62a cp b jr nz, .asm_1a621 scf ret .asm_1a62a and a ret INCBIN "baserom.gbc",$1a62c,$1a672 - $1a62c ; known jump sources: c37 (0:c37) Func_1a672: ; 1a672 (6:6672) ld a, [$d736] bit 6, a ret nz ld a, [W_CURMAPTILESET] ; $d367 and a ret nz ld a, $35 call Predef ; indirect jump to Func_c586 (c586 (3:4586)) ld a, [$c109] ld b, a ld a, [$c45c] ld c, a ld a, [$cfc6] ld d, a ld hl, $66cf .asm_1a691 ld a, [hli] cp $ff ret z cp b jr nz, .asm_1a6a4 ld a, [hli] cp c jr nz, .asm_1a6a5 ld a, [hli] cp d jr nz, .asm_1a6a6 ld a, [hl] ld e, a jr .asm_1a6a9 .asm_1a6a4 inc hl .asm_1a6a5 inc hl .asm_1a6a6 inc hl jr .asm_1a691 .asm_1a6a9 ld a, [$FF00+$b4] and e ret z ld a, $ff ld [$cd6b], a ld hl, $d736 set 6, [hl] call Func_3486 ld a, e ld [$ccd3], a ld [$ccd4], a ld a, $2 ld [$cd38], a call Func_1a6f0 ld a, $a2 call Func_23b1 ret INCBIN "baserom.gbc",$1a6cf,$1a6f0 - $1a6cf ; known jump sources: 1a6c6 (6:66c6) Func_1a6f0: ; 1a6f0 (6:66f0) ld hl, $8ff0 ld de, $6708 ld bc, $601 call CopyVideoDataDouble ld a, $9 ld bc, $5448 ld de, $6710 call WriteOAMBlock ret INCBIN "baserom.gbc",$1a708,$1bcc8 - $1a708 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 ; MartSignText db $b, $c, $5 ; PokeCenterSignText 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" ; known jump sources: 4493 (1:4493) Func_1c98a: ; 1c98a (7:498a) call ClearScreen call GoPAL_SET_CF1C call LoadFontTilePatterns call LoadTextBoxTilePatterns ld hl, $49c1 call PrintText ld hl, $c43a ld bc, $80f ld a, $7 ld [$d12c], a ld a, $14 ld [$d125], a call DisplayTextBoxID ld a, [W_CURMENUITEMID] ; $cc26 and a jp z, InitGame ld b, BANK(Func_73b6a) ld hl, Func_73b6a call Bankswitch ; indirect jump to Func_73b6a (73b6a (1c:7b6a)) jp InitGame ; 1c9c1 (7:49c1) UnnamedText_1c9c1: ; 0x1c9c1 TX_FAR _UnnamedText_1c9c1 db $50 ; 0x1c9c1 + 5 bytes ; known jump sources: 4583e (11:583e) Func_1c9c6: ; 1c9c6 (7:49c6) ld hl, $4a14 call PrintText ld hl, $cf7b ld a, l ld [$cf8b], a ld a, h ld [$cf8c], a ld a, [W_LISTSCROLLOFFSET] ; $cc36 push af xor a ld [W_CURMENUITEMID], a ; $cc26 ld [W_LISTSCROLLOFFSET], a ; $cc36 ld [$cf93], a ld a, $4 ld [W_LISTMENUID], a ; $cf94 call DisplayListMenuID pop bc ld a, b ld [W_LISTSCROLLOFFSET], a ; $cc36 ret c ld hl, $d126 set 7, [hl] ld hl, $cc5b ld a, [W_WHICHPOKEMON] ; $cf92 add a ld d, $0 ld e, a add hl, de ld a, [hli] ld b, a ld a, [hl] ld c, a ld hl, $d3af call Func_1ca0d ; known jump sources: 1ca0a (7:4a0a) Func_1ca0d: ; 1ca0d (7:4a0d) inc hl inc hl ld a, b ld [hli], a ld a, c ld [hli], a ret ; 1ca14 (7:4a14) UnnamedText_1ca14: ; 0x1ca14 TX_FAR _UnnamedText_1ca14 db $50 ; 0x1ca14 + 5 bytes CinnabarIslandScript: ; 0x1ca19 call EnableAutoTextBoxDrawing 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 DisplayTextID 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, MartSignText, PokeCenterSignText, 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 EnableAutoTextBoxDrawing ; 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, Unknown_1d076 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 DisplayTextID call Delay3 ld a, $12 ld [$ff00+$8c], a call DisplayTextID call Delay3 ld a, $13 ld [$ff00+$8c], a call DisplayTextID call Delay3 ld a, $14 ld [$ff00+$8c], a call DisplayTextID 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 DisplayTextID 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 DisplayTextID 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 DisplayTextID 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 DisplayTextID 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 DelayFrames ld a, $10 ld [$ff00+$8c], a call DisplayTextID 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 EnableAutoTextBoxDrawing ld a, $ff ld [$c0ee], a call $23b1 ld b, $2 ld hl, $5b47 call Bankswitch ld a, $15 ld [$ff00+$8c], a call DisplayTextID call Unknown_1d02b 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 EnableAutoTextBoxDrawing call $2307 ld a, $fc ld [$cd6b], a call Function1CEFD ld a, $16 ld [$ff00+$8c], a call DisplayTextID call DelayFrame call Function1CEFD ld a, $17 ld [$ff00+$8c], a call DisplayTextID call DelayFrame call Function1CEFD ld a, $18 ld [$ff00+$8c], a call DisplayTextID call DelayFrame ld a, $19 ld [$ff00+$8c], a call DisplayTextID 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 DisplayTextID 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 DisplayTextID 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 Unknown_1d02b: ld a, $7c ld [$ff00+$eb], a ld a, $8 ld [$ff00+$ee], a ld a, [$d361] cp $3 jr nz, .asm_1d045 ; 0x1d038 $b ld a, $4 ld [$cd37], a ld a, $30 ld b, $b jr .asm_1d068 ; 0x1d043 $23 .asm_1d045 cp $1 jr nz, .asm_1d054 ; 0x1d047 $b ld a, $2 ld [$cd37], a ld a, $30 ld b, $9 jr .asm_1d068 ; 0x1d052 $14 .asm_1d054 ld a, $3 ld [$cd37], a ld b, $a ld a, [$d362] cp $4 jr nz, .asm_1d066 ; 0x1d060 $4 ld a, $40 jr .asm_1d068 ; 0x1d064 $2 .asm_1d066 ld a, $20 .asm_1d068 ld [$ff00+$ec], a ld a, b ld [$ff00+$ed], a ld a, $1 ld [$cf13], a call $32f9 ret Unknown_1d076: ld hl, $50b8 ld a, l ld [$d36c], a ld a, h ld [$d36d], a ret 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, Unknown_1d22d 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 DelayFrames 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 Unknown_1d22d: ld a, $5 ld [$ff00+$8c], a ld a, $9 ld [$ff00+$8b], a call $34fc ld [hl], $0 ld hl, $5243 call PrintText jp TextScriptEnd 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 EnableAutoTextBoxDrawing ld hl, ViridianMartScriptPointers ld a, [$d60d] jp $3d97 ; 0x1d47d ViridianMartScript_Unknown1d47d: ; 0x1d47d ld a, [$d74e] bit 0, a jr nz, .asm_1d489 ; 0x1d482 $5 ld hl, $54e0 jr .asm_1d48c ; 0x1d487 $3 .asm_1d489 ld hl, $54ea .asm_1d48c ld a, l ld [$d36c], a ld a, h ld [$d36d], a ret ViridianMartScriptPointers: dw ViridianMartScript0 dw ViridianMartScript1 dw ViridianMartScript2 ViridianMartScript0: ; 0x1d49b call $2429 ld a, $4 ld [$ff00+$8c], a call DisplayTextID ld hl, $ccd3 ld de, RLEMovement1d4bb call $350c dec a ld [$cd38], a call $3486 ld a, $1 ld [$d60d], a ret RLEMovement1d4bb: ; 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 DisplayTextID ld bc, $4601 call GiveItem ld hl, $d74e set 1, [hl] ld a, $2 ld [$d60d], a ; fallthrough ViridianMartScript2: ret ; 0x1d4e0 ViridianMartTexts: ; 0x1d4e0 dw ViridianMartText1 dw ViridianMartText2 dw ViridianMartText3 dw ViridianMartText4 dw ViridianMartText5 dw ViridianMartText6 dw ViridianMartText2 dw ViridianMartText3 ViridianMartText1: ; 0x1d4f0 TX_FAR _ViridianMartText1 db $50 ViridianMartText4: ; 0x1d4f5 TX_FAR _ViridianMartText4 db $50 ViridianMartText5: TX_FAR ViridianMartParcelQuestText db $11 db $50 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 EnableAutoTextBoxDrawing ; 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 EnableAutoTextBoxDrawing ; 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 EnableAutoTextBoxDrawing ; 0x1d5f6 PewterHouse1Texts: ; 0x1d5f6 dw PewterHouse1Text1, PewterHouse1Text2, PewterHouse1Text3 PewterHouse1Text1: ; 0x1d5fc TX_FAR _PewterHouse1Text1 db $08 ; asm ld a, NIDORAN_M 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 EnableAutoTextBoxDrawing ; 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 EnableAutoTextBoxDrawing 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 EnableAutoTextBoxDrawing ; 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 EnableAutoTextBoxDrawing ; 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, BikeShopMenuText call PlaceString ld hl, $c3e4 ld de, BikeShopMenuPrice call PlaceString 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 BikeShopMenuText: db "BICYCLE", $4e db "CANCEL@" BikeShopMenuPrice: db "¥1000000@" 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 EnableAutoTextBoxDrawing 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, PSYDUCK call $13d0 jp TextScriptEnd LavenderHouse1Text4: ; 0x1d90b TX_FAR _LavenderHouse1Text4 db $8 ld a, NIDORINO 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 EnableAutoTextBoxDrawing ret ; 0x1d9b2 LavenderHouse2Texts: ; 0x1d9b2 dw LavenderHouse2Text1, LavenderHouse2Text2 LavenderHouse2Text1: ; 0x1d9b6 TX_FAR _LavenderHouse2Text1 db $8 ld a, CUBONE 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, NameRaterTexts, NameRaterScript ; blocks, texts, scripts db $00 ; connections dw NameRaterObject ; objects NameRaterScript: ; 0x1da12 jp EnableAutoTextBoxDrawing ; 0x1da15 Unknown_1da15: call PrintText call $35ec ld a, [$cc26] and a ret Unknown_1da20: ld hl, $d273 ld bc, $000b ld a, [$cf92] call AddNTimes ld de, $d158 ld c, $b call .asm_1da47 jr c, .asm_1da52 ; 0x1da34 $1c ld hl, $d177 ld bc, $002c ld a, [$cf92] call AddNTimes ld de, $d359 ld c, $2 .asm_1da47 ld a, [de] cp [hl] jr nz, .asm_1da52 ; 0x1da49 $7 inc hl inc de dec c jr nz, .asm_1da47 ; 0x1da4e $f7 and a ret .asm_1da52 scf ret NameRaterTexts: dw NameRaterText1 NameRaterText1: ; 0x1da56 db $8 call $36f4 ld hl, UnnamedText_1dab3 call Unknown_1da15 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 GBPalWhiteOutWithDelay3 call $3dbe call $20ba pop af jr c, .asm_1daae ; 0x1da80 $2c call $15b4 call Unknown_1da20 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 EnableAutoTextBoxDrawing 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, PIDGEY call $13d0 call $3748 jp TextScriptEnd VermilionHouse1Text3: ; 0x1db1b TX_FAR _VermilionHouse1Text3 db $50 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 EnableAutoTextBoxDrawing 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, VermilionDock_1db9b 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 VermilionDock_1db9b: set 2, [hl] ld a, $ff ld [$cd6b], a ld [$c0ee], a call $23b1 ld c, $1f ld a, $d6 call $23a1 ld b, $1e ld hl, $5fc0 call Bankswitch xor a ld [$c102], a ld c, $78 call DelayFrames ld b, $9c call $18d6 ld hl, $c468 ld bc, $0078 ld a, $14 call $36e0 ld a, $1 ld [$ff00+$ba], a call Delay3 xor a ld [$ff00+$ba], a ld [$cd3d], a ld [$ff00+$49], a ld a, $58 ld [$cd3e], a ld hl, $d526 ld c, [hl] inc hl ld b, [hl] push bc push hl ld a, $a9 call $3740 ld a, $ff ld [$cfcb], a ld d, $0 ld e, $8 .asm_1dbfa ld hl, $0002 add hl, bc ld a, l ld [$d526], a ld a, h ld [$d527], a push hl push de call $0ed3 call VermilionDock_1dc59 pop de ld b, $10 .asm_1dc11 call VermilionDock_1dc42 ld c, $8 .asm_1dc16 call VermilionDock_1dc7c dec c jr nz, .asm_1dc16 ; 0x1dc1a $fa inc d dec b jr nz, .asm_1dc11 ; 0x1dc1e $f1 pop bc dec e jr nz, .asm_1dbfa ; 0x1dc22 $d6 xor a ld [$ff00+$4a], a ld [$ff00+$b0], a call VermilionDock_1dc94 ld a, $90 ld [$ff00+$b0], a ld a, $1 ld [$cfcb], a pop hl pop bc ld [hl], b dec hl ld [hl], c call $0997 ld hl, $d3ae dec [hl] ret VermilionDock_1dc42: push bc push de ld hl, $c311 ld a, [$cd3d] swap a ld c, a ld de, $0004 .asm_1dc50 inc [hl] inc [hl] add hl, de dec c jr nz, .asm_1dc50 ; 0x1dc54 $fa pop de pop bc ret VermilionDock_1dc59: ld a, [$cd3e] sub $10 ld [$cd3e], a ld c, a ld b, $64 ld a, [$cd3d] inc a ld [$cd3d], a ld a, $1 ld de, VermilionDockOAMBlock call WriteOAMBlock ret VermilionDockOAMBlock: db $fc, $10 db $fd, $10 db $fe, $10 db $ff, $10 VermilionDock_1dc7c: ld h, d ld l, $50 call $5c86 ld h, $0 ld l, $80 .asm_1dc86 ld a, [$ff00+$44] cp l jr nz, .asm_1dc86 ; 0x1dc89 $fb ld a, h ld [$ff00+$43], a .asm_1dc8e ld a, [$ff00+$44] cp h jr z, .asm_1dc8e ; 0x1dc91 $fb ret VermilionDock_1dc94: ld hl, $cc5b ld bc, $00b4 ld a, $14 call $36e0 ld hl, $9940 ld de, $cc5b ld bc, $000c call CopyVideoData ld hl, $c754 ld a, $d ld [hli], a ld [hli], a ld [hli], a ld [hl], a ld a, $a9 call $23b1 ld c, $78 call DelayFrames ret 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 EnableAutoTextBoxDrawing ; 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 EnableAutoTextBoxDrawing ; 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 EnableAutoTextBoxDrawing ; 0x1dde0 SaffronHouse1Texts: ; 0x1dde0 dw SaffronHouse1Text1, SaffronHouse1Text2, SaffronHouse1Text3, SaffronHouse1Text4 SaffronHouse1Text1: ; 0x1dde8 TX_FAR _SaffronHouse1Text1 db $50 SaffronHouse1Text2: ; 0x1dded TX_FAR _SaffronHouse1Text2 db $8 ld a, PIDGEY 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 EnableAutoTextBoxDrawing ; 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 EnableAutoTextBoxDrawing ; 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 EnableAutoTextBoxDrawing ; 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 EnableAutoTextBoxDrawing ld a, [$d662] ld hl, Route5GateScripts jp $3d97 ; 0x1df3f Route5GateScripts: ; 0x1df3f dw Route5GateScript0 dw Route5GateScript1 Function1df43: ; 0x1df43 ld a, $40 ld [$ccd3], a ld a, $1 ld [$cd38], a jp $3486 Route5GateScript0: ; 0x1df50 ld a, [$d728] bit 6, a ret nz ld hl, Coords1df8f call ArePlayerCoordsInArray 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 DisplayTextID call Function1df43 ld a, $1 ld [$d662], a ret .asm_1df82 ld a, $3 ld [$ff00+$8c], a call DisplayTextID ld hl, $d728 set 6, [hl] ret Coords1df8f: ; 0x1df8f db 3,3 db 3,4 db $ff Route5GateScript1: ; 0x1df94 ld a, [$cd38] and a ret nz call Delay3 xor a ld [$cd6b], a ld [$d662], a ret 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 EnableAutoTextBoxDrawing 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 ArePlayerCoordsInArray 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 DisplayTextID 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 DisplayTextID ; 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 EnableAutoTextBoxDrawing ld a, [$d663] ld hl, Route7GateScripts call $3d97 ret ; 0x1e10d Route7GateScripts: ; 0x1e10d dw Route7GateScript0 dw Route7GateScript1 Function1e111: ; 0x1e111 ld hl, $d730 set 7, [hl] ld a, $20 ld [$ccd3], a ld a, $1 ld [$cd38], a xor a ld [$c206], a ld [$cd3b], a ret Route7GateScript0: ; 0x1e128 ld a, [$d728] bit 6, a ret nz ld hl, Coords1e167 call ArePlayerCoordsInArray 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 DisplayTextID call Function1e111 ld a, $1 ld [$d663], a ret .asm_1e15a ld a, $3 ld [$ff00+$8c], a call DisplayTextID ld hl, $d728 set 6, [hl] ret Coords1e167: ; 0x1e167 db 3,3 db 4,3 db $ff Route7GateScript1: ; 0x1e16c ld a, [$cd38] and a ret nz call Delay3 xor a ld [$cd6b], a ld [$d663], a ld [$da39], a ret 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 EnableAutoTextBoxDrawing ld hl, Route8GateScripts ld a, [$d637] jp $3d97 ; 0x1e1d3 Route8GateScripts: ; 0x1e1d3 dw Route8GateScript0 dw Route8GateScript1 Function1e1d7: ; 0x1e1d7 ld hl, $d730 set 7, [hl] ld a, $10 ld [$ccd3], a ld a, $1 ld [$cd38], a xor a ld [$c206], a ld [$cd3b], a ret Route8GateScript0: ; 0x1e1ee ld a, [$d728] bit 6, a ret nz ld hl, Coords1e22c call ArePlayerCoordsInArray 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 DisplayTextID call Function1e1d7 ld a, $1 ld [$d637], a ret .asm_1e220 ld hl, $d728 set 6, [hl] ld a, $3 ld [$ff00+$8c], a jp DisplayTextID ; 0x1e22c Coords1e22c: ; 0x1e22c db 3,2 db 4,2 db $ff Route8GateScript1: ; 0x1e231 ld a, [$cd38] and a ret nz call Delay3 xor a ld [$cd6b], a ld [$d637], a ret 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 EnableAutoTextBoxDrawing ; 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 EnableAutoTextBoxDrawing ld hl, PowerPlantTrainerHeaders ld de, PowerPlantScriptPointers ld a, [$d663] call $3160 ld [$d663], a ret ; 0x1e2d9 PowerPlantScriptPointers: ; 0x1e2d9 dw $3219 dw $324c dw $3275 PowerPlantTexts: ; 0x1e2df dw PowerPlantText1, PowerPlantText2, PowerPlantText3, PowerPlantText4, PowerPlantText5, PowerPlantText6, PowerPlantText7, PowerPlantText8, PowerPlantText9, Predef5CText, Predef5CText, Predef5CText, Predef5CText, Predef5CText PowerPlantTrainerHeaders: PowerPlantTrainerHeader0: db 1 ; flag's bit db 0 ; view range dw $d7d3 ; flag's byte dw VoltorbBattleText ; TextBeforeBattle dw VoltorbBattleText ; TextAfterBattle dw VoltorbBattleText ; TextEndBattle dw VoltorbBattleText ; TextEndBattle PowerPlantTrainerHeader1: db 2 ; flag's bit db 0 ; view range dw $d7d3 ; flag's byte dw VoltorbBattleText ; TextBeforeBattle dw VoltorbBattleText ; TextAfterBattle dw VoltorbBattleText ; TextEndBattle dw VoltorbBattleText ; TextEndBattle PowerPlantTrainerHeader2: db 3 ; flag's bit db 0 ; view range dw $d7d3 ; flag's byte dw VoltorbBattleText ; TextBeforeBattle dw VoltorbBattleText ; TextAfterBattle dw VoltorbBattleText ; TextEndBattle dw VoltorbBattleText ; TextEndBattle PowerPlantTrainerHeader3: db 4 ; flag's bit db 0 ; view range dw $d7d3 ; flag's byte dw VoltorbBattleText ; TextBeforeBattle dw VoltorbBattleText ; TextAfterBattle dw VoltorbBattleText ; TextEndBattle dw VoltorbBattleText ; TextEndBattle PowerPlantTrainerHeader4: db 5 ; flag's bit db 0 ; view range dw $d7d3 ; flag's byte dw VoltorbBattleText ; TextBeforeBattle dw VoltorbBattleText ; TextAfterBattle dw VoltorbBattleText ; TextEndBattle dw VoltorbBattleText ; TextEndBattle PowerPlantTrainerHeader5: db 6 ; flag's bit db 0 ; view range dw $d7d3 ; flag's byte dw VoltorbBattleText ; TextBeforeBattle dw VoltorbBattleText ; TextAfterBattle dw VoltorbBattleText ; TextEndBattle dw VoltorbBattleText ; TextEndBattle PowerPlantTrainerHeader6: db 7 ; flag's bit db 0 ; view range dw $d7d3 ; flag's byte dw VoltorbBattleText ; TextBeforeBattle dw VoltorbBattleText ; TextAfterBattle dw VoltorbBattleText ; TextEndBattle dw VoltorbBattleText ; TextEndBattle PowerPlantTrainerHeader7: db 8 ; flag's bit db 0 ; view range dw $d7d3 ; flag's byte dw VoltorbBattleText ; TextBeforeBattle dw VoltorbBattleText ; TextAfterBattle dw VoltorbBattleText ; TextEndBattle dw VoltorbBattleText ; TextEndBattle PowerPlantTrainerHeader8: db 9 ; flag's bit db 0 ; view range dw $d7d3 ; flag's byte dw ZapdosBattleText ; TextBeforeBattle dw ZapdosBattleText ; TextAfterBattle dw ZapdosBattleText ; TextEndBattle dw ZapdosBattleText ; TextEndBattle db $ff 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 VoltorbBattleText: ; 0x1e3aa TX_FAR _VoltorbBattleText ; 0x8c5e2 db $50 ; 0x1e3af ZapdosBattleText: ; 0x1e3af TX_FAR _ZapdosBattleText ; 0x8c5ea db $8 ld a, ZAPDOS 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, 40 ; trainer db SPRITE_BALL, $12 + 4, $20 + 4, $ff, $ff, $42, VOLTORB, 40 ; trainer db SPRITE_BALL, $19 + 4, $15 + 4, $ff, $ff, $43, VOLTORB, 40 ; trainer db SPRITE_BALL, $12 + 4, $19 + 4, $ff, $ff, $44, ELECTRODE, 43 ; trainer db SPRITE_BALL, $22 + 4, $17 + 4, $ff, $ff, $45, VOLTORB, 40 ; trainer db SPRITE_BALL, $1c + 4, $1a + 4, $ff, $ff, $46, VOLTORB, 40 ; trainer db SPRITE_BALL, $e + 4, $15 + 4, $ff, $ff, $47, ELECTRODE, 43 ; trainer db SPRITE_BALL, $20 + 4, $25 + 4, $ff, $ff, $48, VOLTORB, 40 ; trainer db SPRITE_BIRD, $9 + 4, $4 + 4, $ff, $d1, $49, ZAPDOS, 50 ; 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 EnableAutoTextBoxDrawing 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 EnableAutoTextBoxDrawing ; 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 EnableAutoTextBoxDrawing 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 ArePlayerCoordsInArray ret nc xor a ld [$ff00+$b4], a ld a, $1 ld [$ff00+$8c], a jp DisplayTextID ; 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 EnableAutoTextBoxDrawing ld a, [$d661] ld hl, BillsHouseScripts jp $3d97 ; 0x1e776 BillsHouseScripts: ; 0x1e776 dw BillsHouseScript0 dw BillsHouseScript1 dw BillsHouseScript2 dw BillsHouseScript3 dw BillsHouseScript4 dw BillsHouseScript5 BillsHouseScript0: ; 0x1e782 ret BillsHouseScript1: ; 0x1e783 ld a, [$c109] and a ld de, MovementData1e79c jr nz, .asm_1e78f ; 0x1e78a $3 ld de, MovementData1e7a0 .asm_1e78f ld a, $1 ld [$ff00+$8c], a call MoveSprite ld a, $2 ld [$d661], a ret MovementData1e79c: ; 0x1e79c db $40,$40,$40,$ff MovementData1e7a0: ; 0x1e7a0 db $c0,$40,$40,$80,$40,$ff BillsHouseScript2: ; 0x1e7a6 ld a, [$d730] bit 0, a ret nz ld a, $61 ld [$cc4d], a ld a, $11 call Predef ld hl, $d7f2 set 6, [hl] xor a ld [$cd6b], a ld a, $3 ld [$d661], a ret BillsHouseScript3: ; 0x1e7c5 ld a, [$d7f2] bit 3, a ret z ld a, $f0 ld [$cd6b], a ld a, $2 ld [$cf13], a ld a, $c ld [$ff00+$eb], a ld a, $40 ld [$ff00+$ec], a ld a, $6 ld [$ff00+$ed], a ld a, $5 ld [$ff00+$ee], a call $32f9 ld a, $62 ld [$cc4d], a ld a, $15 call Predef ld c, $8 call DelayFrames ld a, $2 ld [$ff00+$8c], a ld de, MovementData1e807 call MoveSprite ld a, $4 ld [$d661], a ret MovementData1e807: ; 0x1e807 db $00,$c0,$c0,$c0,$00,$ff BillsHouseScript4: ; 0x1e80d ld a, [$d730] bit 0, a ret nz xor a ld [$cd6b], a ld hl, $d7f2 set 5, [hl] ld hl, $d7f1 set 0, [hl] ld a, $0 ld [$d661], a ret BillsHouseScript5: ; 0x1e827 ld a, $4 ld [$ff00+$8c], a call DisplayTextID ld a, $0 ld [$d661], a ret 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" ; known jump sources: 17ecd (5:7ecd) Func_1e915: ; 1e915 (7:6915) call Func_36f4 ld hl, $6946 call PrintText ld hl, $693b call PrintText call Func_35ec ld a, [W_CURMENUITEMID] ; $cc26 and a jr nz, .asm_1e932 ld a, $56 call Predef ; indirect jump to DisplayDexRating (44169 (11:4169)) .asm_1e932 ld hl, $6940 call PrintText jp Func_3701 ; 1e93b (7:693b) 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 ; known jump sources: 41f (0:41f) Func_1e988: ; 1e988 (7:6988) ld hl, $d790 bit 7, [hl] jr z, asm_1e9ab ld a, [W_NUMSAFARIBALLS] ; $da47 and a jr z, asm_1e9b0 jr asm_1e9ab ; known jump sources: 60f (0:60f) Func_1e997: ; 1e997 (7:6997) ld a, [W_SAFARITIMER1] ; $d70d ld b, a ld a, [W_SAFARITIMER2] ; $d70e ld c, a or b jr z, asm_1e9b0 dec bc ld a, b ld [W_SAFARITIMER1], a ; $d70d ld a, c ld [W_SAFARITIMER2], a ; $d70e asm_1e9ab: ; 1e9ab (7:69ab) xor a ld [$da46], a ret asm_1e9b0: ; 1e9b0 (7:69b0) call EnableAutoTextBoxDrawing xor a ld [$cfc7], a dec a call Func_23b1 ld c, $2 ld a, $b9 call Func_23a1 .asm_1e9c2 ld a, [$c02a] cp $b9 jr nz, .asm_1e9c2 ld a, $d3 ld [H_DOWNARROWBLINKCNT2], a ; $FF00+$8c call DisplayTextID xor a ld [$d528], a ld a, $9c ld [H_DOWNARROWBLINKCNT1], a ; $FF00+$8b ld a, $3 ld [$d42f], a ld a, $5 ld [$d61f], a ld hl, $d790 set 6, [hl] ld a, $1 ld [$da46], a ret ; known jump sources: 2a95 (0:2a95) Func_1e9ed: ; 1e9ed (7:69ed) xor a ld [$cd6b], a ld hl, $69f7 jp PrintText INCBIN "baserom.gbc",$1e9f7,$1e9f8 - $1e9f7 ld a, [W_NUMSAFARIBALLS] ; $da47 and a jr z, .asm_1ea04 ld hl, $6a0d call PrintText .asm_1ea04 ld hl, $6a12 call PrintText jp TextScriptEnd ; 1ea0d (7:6a0d) UnnamedText_1ea0d: ; 0x1ea0d TX_FAR _UnnamedText_1ea0d db $50 ; 0x1ea0d + 5 bytes UnnamedText_1ea12: ; 0x1ea12 TX_FAR _UnnamedText_1ea12 db $50 ; 0x1ea12 + 5 bytes ld a, [$c109] cp $4 ret nz call EnableAutoTextBoxDrawing ld a, $31 jp Func_3ef5 INCBIN "baserom.gbc",$1ea25,$1ea26 - $1ea25 xor a ld [$da38], a ld a, [W_WHICHTRADE] ; $cd3d push af and $f ld [$FF00+$db], a pop af and $f0 swap a ld [$FF00+$dc], a ld hl, $6a5b call PrintText ld a, [$FF00+$db] dec a add a ld d, $0 ld e, a ld hl, $6a60 add hl, de ld a, [hli] ld h, [hl] ld l, a call PrintText ld a, $1 ld [$cc3c], a call Func_1ea92 jp TextScriptEnd ; 1ea5b (7:6a5b) 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 ; known jump sources: 1eab2 (7:6ab2), 1eaef (7:6aef), 1eb2a (7:6b2a) Func_1ea8a: ; 1ea8a (7:6a8a) ld hl, $d79c ld a, $10 jp Predef ; indirect jump to Func_f666 (f666 (3:7666)) ; known jump sources: 1ea55 (7:6a55) Func_1ea92: ; 1ea92 (7:6a92) call Func_35ec ld a, [$FF00+$dc] ld c, a ld a, [W_CURMENUITEMID] ; $cc26 cp c jr nz, .asm_1eab8 ld hl, $d126 set 5, [hl] ld a, [$FF00+$db] ld [$FF00+$e0], a ld hl, $6ae3 call PrintText ld a, [$FF00+$e0] ld c, a ld b, $1 call Func_1ea8a jp Func_1eb0a .asm_1eab8 call Func_3748 ld a, $a5 call Func_23b1 call Func_3748 ld hl, $6b05 call PrintText ld a, [$FF00+$db] add $2 ld c, a ld b, $2 ld hl, $d79a ld a, $10 call Predef ; indirect jump to Func_f666 (f666 (3:7666)) ld a, c and a ret nz ld a, [$FF00+$db] add $2 ld [$da38], a ret INCBIN "baserom.gbc",$1eae3,$1eaea - $1eae3 ld a, [$FF00+$e0] ld c, a ld b, $2 call Func_1ea8a ld a, c and a jp nz, TextScriptEnd call Func_3748 ld a, $ad call Func_23b1 call Func_3748 jp TextScriptEnd ; 1eb05 (7:6b05) UnnamedText_1eb05: ; 0x1eb05 TX_FAR _UnnamedText_1eb05 db $50 ; 0x1eb05 + 5 bytes ; known jump sources: 3eb2 (0:3eb2), 1eab5 (7:6ab5) Func_1eb0a: ; 1eb0a (7:6b0a) ld a, $6 ld [$FF00+$db], a .asm_1eb0e ld a, [$FF00+$db] dec a add a add a ld d, $0 ld e, a ld hl, $6b48 add hl, de ld a, [hli] ld b, [hl] ld c, a inc hl ld a, [hl] ld [$d12f], a push bc ld a, [$FF00+$db] ld [$FF00+$e0], a ld c, a ld b, $2 call Func_1ea8a ld a, c and a jr nz, .asm_1eb36 ld a, [$d12f] jr .asm_1eb38 .asm_1eb36 ld a, $e .asm_1eb38 pop bc ld [$d09f], a ld a, $17 call Predef ; indirect jump to Func_ee9e (ee9e (3:6e9e)) ld hl, $ffdb dec [hl] jr nz, .asm_1eb0e ret INCBIN "baserom.gbc",$1eb48,$1eb69 - $1eb48 UnnamedText_1eb69: ; 0x1eb69 TX_FAR _UnnamedText_1eb69 db $50 ; 0x1eb69 + 5 bytes call EnableAutoTextBoxDrawing ld a, [$c109] cp $4 ret nz ld a, [$d7f2] bit 7, a jr nz, .asm_1ebd2 bit 3, a jr nz, .asm_1eb86 bit 6, a jr nz, .asm_1eb8b .asm_1eb86 ld a, $2d jp Func_3ef5 .asm_1eb8b ld a, $1 ld [$cc3c], a ld a, $2e call Func_3ef5 ld c, $20 call DelayFrames ld a, $8c call Func_23b1 call Func_3748 ld c, $50 call DelayFrames ld a, $9c call Func_23b1 call Func_3748 ld c, $30 call DelayFrames ld a, $8c call Func_23b1 call Func_3748 ld c, $20 call DelayFrames ld a, $86 call Func_23b1 call Func_3748 call Func_2307 ld hl, $d7f2 set 3, [hl] ret .asm_1ebd2 ld a, $1 ld [$cc3c], a ld a, $2f call Func_3ef5 ret ; 1ebdd (7:6bdd) UnnamedText_1ebdd: ; 0x1ebdd TX_FAR _UnnamedText_1ebdd db $50 ; 0x1ebdd + 5 bytes INCBIN "baserom.gbc",$1ebe2,$1ebe8 - $1ebe2 ld a, $ff ld [$c0ee], a call Func_23b1 ld c, $10 call DelayFrames ld a, $9d call Func_23b1 call Func_3748 ld c, $3c call DelayFrames jp TextScriptEnd INCBIN "baserom.gbc",$1ec05,$1ec7f - $1ec05 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,$2136e - $20000 ld a, [$d083] cp $ff jr z, .asm_2139b bit 7, a ret z and $7f jr nz, .asm_21383 call Func_213a7 ld a, $1e jr .asm_21395 .asm_21383 cp $14 jr nz, .asm_2138a call Func_213ac .asm_2138a ld a, $86 ld [$c02a], a ld a, [$d083] and $7f dec a .asm_21395 set 7, a ld [$d083], a ret .asm_2139b xor a ld [$d083], a ld [$c02a], a ld de, $53c4 jr asm_213af ; known jump sources: 2137c (8:537c) Func_213a7: ; 213a7 (8:53a7) ld de, $53bc jr asm_213af ; known jump sources: 21387 (8:5387) Func_213ac: ; 213ac (8:53ac) ld de, $53c0 asm_213af: ; 213af (8:53af) ld hl, $ff10 ld c, $5 xor a .asm_213b5 ld [hli], a ld a, [de] inc de dec c jr nz, .asm_213b5 ret INCBIN "baserom.gbc",$213bc,$213c8 - $213bc ; known jump sources: 17e4d (5:7e4d) Func_213c8: ; 213c8 (8:53c8) xor a ld [H_AUTOBGTRANSFERENABLED], a ; $FF00+$ba call Func_36f4 ld a, [$d5a2] and a jr nz, .asm_213f3 ld a, [$d74b] bit 5, a jr z, .asm_213ea ld a, [$d5a2] and a jr nz, .asm_213f3 ld hl, $c3a0 ld b, $8 ld c, $e jr .asm_213fa .asm_213ea ld hl, $c3a0 ld b, $6 ld c, $e jr .asm_213fa .asm_213f3 ld hl, $c3a0 ld b, $a ld c, $e .asm_213fa call TextBoxBorder call Func_2429 ld a, $3 ld [W_MAXMENUITEMID], a ; $cc28 ld a, [$d7f1] bit 0, a jr nz, .asm_21414 ld hl, $c3ca ld de, $548b jr .asm_2141a .asm_21414 ld hl, $c3ca ld de, $5497 .asm_2141a call PlaceString ld hl, $c3f2 ld de, W_PLAYERNAME ; $d158 call PlaceString ld l, c ld h, b ld de, $54a0 call PlaceString ld a, [$d74b] bit 5, a jr z, .asm_21462 ld hl, $c41a ld de, $54a5 call PlaceString ld a, [$d5a2] and a jr z, .asm_2145a ld a, $4 ld [W_MAXMENUITEMID], a ; $cc28 ld hl, $c442 ld de, $54b2 call PlaceString ld hl, $c46a ld de, $54ba jr .asm_2146d .asm_2145a ld hl, $c442 ld de, $54ba jr .asm_2146d .asm_21462 ld a, $2 ld [W_MAXMENUITEMID], a ; $cc28 ld hl, $c41a ld de, $54ba .asm_2146d call PlaceString ld a, $3 ld [W_MENUWATCHEDKEYS], a ; $cc29 ld a, $2 ld [W_TOPMENUITEMY], a ; $cc24 ld a, $1 ld [W_TOPMENUITEMX], a ; $cc25 xor a ld [W_CURMENUITEMID], a ; $cc26 ld [W_OLDMENUITEMID], a ; $cc2a ld a, $1 ld [H_AUTOBGTRANSFERENABLED], a ; $FF00+$ba ret INCBIN "baserom.gbc",$2148b,$214c2 - $2148b ; known jump sources: 17f03 (5:7f03) Func_214c2: ; 214c2 (8:54c2) ld hl, $d730 set 6, [hl] xor a ld [$ccd3], a inc a ld [$d0b6], a call LoadHpBarAndStatusTilePatterns ld a, [W_LISTSCROLLOFFSET] ; $cc36 push af ld a, [$cd60] bit 3, a jr nz, Func_214e8 ld a, $99 call Func_23b1 ld hl, $57e9 call PrintText ; known jump sources: 214db (8:54db), 215b8 (8:55b8), 215c8 (8:55c8), 215d1 (8:55d1), 215d7 (8:55d7), 21615 (8:5615), 21624 (8:5624), 21634 (8:5634), 2163d (8:563d), 21643 (8:5643), 21670 (8:5670), 2167f (8:567f), 21688 (8:5688), 216b0 (8:56b0), 216bb (8:56bb) Func_214e8: ; 214e8 (8:54e8) ld a, [$ccd3] ld [W_CURMENUITEMID], a ; $cc26 ld hl, $9780 ld de, $697e ld bc, $e01 call CopyVideoData call Func_3709 ld hl, $c3a0 ld b, $a ld c, $c call TextBoxBorder ld hl, $c3ca ld de, $56e1 call PlaceString ld hl, W_TOPMENUITEMY ; $cc24 ld a, $2 ld [hli], a dec a ld [hli], a inc hl inc hl ld a, $4 ld [hli], a ld a, $3 ld [hli], a xor a ld [hli], a ld [hli], a ld hl, W_LISTSCROLLOFFSET ; $cc36 ld [hli], a ld [hl], a ld [W_PLAYERMONNUMBER], a ; $cc2f ld hl, $57ee call PrintText ld hl, $c4c1 ld b, $2 ld c, $9 call TextBoxBorder ld a, [$d5a0] and $7f cp $9 jr c, .asm_2154f sub $9 ld hl, $c4f1 ld [hl], $f7 add $f6 jr .asm_21551 .asm_2154f add $f7 .asm_21551 ld [$c4f2], a ld hl, $c4ea ld de, $5713 call PlaceString ld a, $1 ld [H_AUTOBGTRANSFERENABLED], a ; $FF00+$ba call Delay3 call HandleMenuInput bit 1, a jp nz, Func_21588 call PlaceUnfilledArrowMenuCursor ld a, [W_CURMENUITEMID] ; $cc26 ld [$ccd3], a and a jp z, Func_21618 cp $1 jp z, Func_215ac cp $2 jp z, Func_21673 cp $3 jp z, Func_216b3 ; known jump sources: 21569 (8:5569) Func_21588: ; 21588 (8:5588) ld a, [$cd60] bit 3, a jr nz, .asm_2159a call LoadTextBoxTilePatterns ld a, $9a call Func_23b1 call Func_3748 .asm_2159a ld hl, $cd60 res 5, [hl] call Func_3701 pop af ld [W_LISTSCROLLOFFSET], a ; $cc36 ld hl, $d730 res 6, [hl] ret ; known jump sources: 2157b (8:557b) Func_215ac: ; 215ac (8:55ac) ld a, [W_NUMINPARTY] ; $d163 dec a jr nz, .asm_215bb ld hl, $57fd call PrintText jp Func_214e8 .asm_215bb ld a, [W_NUMINBOX] ; $da80 cp $14 jr nz, .asm_215cb ld hl, $5802 call PrintText jp Func_214e8 .asm_215cb ld hl, W_NUMINPARTY ; $d163 call Func_216be jp c, Func_214e8 call Func_2174b jp nc, Func_214e8 ld a, [$cf91] call GetCryData call Func_3740 ld a, $1 ld [$cf95], a call Func_3a68 xor a ld [$cf95], a call RemovePokemon call Func_3748 ld hl, W_WHICHTRADE ; $cd3d ld a, [$d5a0] and $7f cp $9 jr c, .asm_2160a sub $9 ld [hl], $f7 inc hl add $f6 jr .asm_2160c .asm_2160a add $f7 .asm_2160c ld [hli], a ld [hl], $50 ld hl, $57f8 call PrintText jp Func_214e8 ; known jump sources: 21576 (8:5576) Func_21618: ; 21618 (8:5618) ld a, [W_NUMINBOX] ; $da80 and a jr nz, .asm_21627 ld hl, $580c call PrintText jp Func_214e8 .asm_21627 ld a, [W_NUMINPARTY] ; $d163 cp $6 jr nz, .asm_21637 ld hl, $5811 call PrintText jp Func_214e8 .asm_21637 ld hl, W_NUMINBOX ; $da80 call Func_216be jp c, Func_214e8 call Func_2174b jp nc, Func_214e8 ld a, [W_WHICHPOKEMON] ; $cf92 ld hl, $de06 call GetPartyMonName ld a, [$cf91] call GetCryData call Func_3740 xor a ld [$cf95], a call Func_3a68 ld a, $1 ld [$cf95], a call RemovePokemon call Func_3748 ld hl, $5807 call PrintText jp Func_214e8 ; known jump sources: 21580 (8:5580) Func_21673: ; 21673 (8:5673) ld a, [W_NUMINBOX] ; $da80 and a jr nz, .asm_21682 ld hl, $580c call PrintText jp Func_214e8 .asm_21682 ld hl, W_NUMINBOX ; $da80 call Func_216be jp c, Func_214e8 ld hl, $581b call PrintText call Func_35ec ld a, [W_CURMENUITEMID] ; $cc26 and a jr nz, .asm_21682 inc a ld [$cf95], a call RemovePokemon call Func_3748 ld a, [$cf91] call PlayCry ld hl, $5820 call PrintText jp Func_214e8 ; known jump sources: 21585 (8:5585) Func_216b3: ; 216b3 (8:56b3) ld b, BANK(Func_738a1) ld hl, Func_738a1 call Bankswitch ; indirect jump to Func_738a1 (738a1 (1c:78a1)) jp Func_214e8 ; known jump sources: 215ce (8:55ce), 2163a (8:563a), 21685 (8:5685) Func_216be: ; 216be (8:56be) ld a, l ld [$cf8b], a ld a, h ld [$cf8c], a xor a ld [$cf93], a ld [W_LISTMENUID], a ; $cf94 inc a ld [$d0b6], a ld a, [$cc2b] ld [W_CURMENUITEMID], a ; $cc26 call DisplayListMenuID ld a, [W_CURMENUITEMID] ; $cc26 ld [$cc2b], a ret INCBIN "baserom.gbc",$216e1,$2174b - $216e1 ; known jump sources: 215d4 (8:55d4), 21640 (8:5640) Func_2174b: ; 2174b (8:574b) ld hl, $c471 ld b, $6 ld c, $9 call TextBoxBorder ld a, [$ccd3] and a ld de, $57cb jr nz, .asm_21761 ld de, $57d3 .asm_21761 ld hl, $c49b call PlaceString ld hl, $c4c3 ld de, $57dc call PlaceString ld hl, W_TOPMENUITEMY ; $cc24 ld a, $c ld [hli], a ld a, $a ld [hli], a xor a ld [hli], a inc hl ld a, $2 ld [hli], a ld a, $3 ld [hli], a xor a ld [hl], a ld hl, W_LISTSCROLLOFFSET ; $cc36 ld [hli], a ld [hl], a ld [W_PLAYERMONNUMBER], a ; $cc2f ld [$cc2b], a .asm_2178f call HandleMenuInput bit 1, a jr nz, .asm_2179f ld a, [W_CURMENUITEMID] ; $cc26 and a jr z, .asm_217a1 dec a jr z, .asm_217a3 .asm_2179f and a ret .asm_217a1 scf ret .asm_217a3 call Func_3719 ld a, [$ccd3] and a ld a, $0 jr nz, .asm_217b0 ld a, $2 .asm_217b0 ld [$cc49], a ld a, $36 call Predef ; indirect jump to StatusScreen (12953 (4:6953)) ld a, $37 call Predef ; indirect jump to StatusScreen2 (12b57 (4:6b57)) call Func_3725 call ReloadTilesetTilePatterns call GoPAL_SET_CF1C call LoadGBPal jr .asm_2178f INCBIN "baserom.gbc",$217cb,$217e9 - $217cb 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,$21879 - $2186a ld c, $0 .asm_2187b ld b, $0 ld hl, $c026 add hl, bc ld a, [hl] and a jr z, .asm_218a7 ld a, c cp $4 jr nc, .asm_218a4 ld a, [$c002] and a jr z, .asm_218a4 bit 7, a jr nz, .asm_218a7 set 7, a ld [$c002], a xor a ld [$FF00+$25], a ld [$FF00+$1a], a ld a, $80 ld [$FF00+$1a], a jr .asm_218a7 .asm_218a4 call Func_218ae .asm_218a7 ld a, c inc c cp $7 jr nz, .asm_2187b ret ; known jump sources: 218a4 (8:58a4) Func_218ae: ; 218ae (8:58ae) ld b, $0 ld hl, $c0b6 add hl, bc ld a, [hl] cp $1 jp z, Func_21946 dec a ld [hl], a ld a, c cp $4 jr nc, .asm_218ca ld hl, $c02a add hl, bc ld a, [hl] and a jr z, .asm_218ca ret .asm_218ca ld hl, $c02e add hl, bc bit 6, [hl] jr z, .asm_218d5 call Func_21fcc .asm_218d5 ld b, $0 ld hl, $c036 add hl, bc bit 0, [hl] jr nz, .asm_218e7 ld hl, $c02e add hl, bc bit 2, [hl] jr nz, .asm_218fb .asm_218e7 ld hl, $c02e add hl, bc bit 4, [hl] jr z, .asm_218f2 jp Func_21eb8 .asm_218f2 ld hl, $c04e add hl, bc ld a, [hl] and a jr z, .asm_218fc dec [hl] .asm_218fb ret .asm_218fc ld hl, $c056 add hl, bc ld a, [hl] and a jr nz, .asm_21905 ret .asm_21905 ld d, a ld hl, $c05e add hl, bc ld a, [hl] and $f and a jr z, .asm_21912 dec [hl] ret .asm_21912 ld a, [hl] swap [hl] or [hl] ld [hl], a ld hl, $c066 add hl, bc ld e, [hl] ld hl, $c02e add hl, bc bit 3, [hl] jr z, .asm_21932 res 3, [hl] ld a, d and $f ld d, a ld a, e sub d jr nc, .asm_21930 ld a, $0 .asm_21930 jr .asm_2193e .asm_21932 set 3, [hl] ld a, d and $f0 swap a add e jr nc, .asm_2193e ld a, $ff .asm_2193e ld d, a ld b, $3 call Func_21ff7 ld [hl], d ret ; known jump sources: 218b7 (8:58b7) Func_21946: ; 21946 (8:5946) ld hl, $c06e add hl, bc ld a, [hl] ld hl, $c04e add hl, bc ld [hl], a ld hl, $c02e add hl, bc res 4, [hl] res 5, [hl] ld a, c cp $4 jr nz, .asm_21963 ld a, [$d083] bit 7, a ret nz .asm_21963 call Func_21967 ret ; known jump sources: 21963 (8:5963), 219bd (8:59bd), 21a27 (8:5a27), 21a49 (8:5a49), 21a62 (8:5a62), 21aa1 (8:5aa1), 21ab3 (8:5ab3), 21aeb (8:5aeb), 21b38 (8:5b38), 21b78 (8:5b78), 21b85 (8:5b85), 21ba4 (8:5ba4), 21bc2 (8:5bc2), 21bce (8:5bce), 21bdd (8:5bdd), 21bf0 (8:5bf0), 21c59 (8:5c59) Func_21967: ; 21967 (8:5967) call Func_21fe4 ld d, a cp $ff jp nz, Func_219f5 ld b, $0 ld hl, $c02e add hl, bc bit 1, [hl] jr nz, .asm_219a5 ld a, c cp $3 jr nc, .asm_21981 jr .asm_219c0 .asm_21981 res 2, [hl] ld hl, $c036 add hl, bc res 0, [hl] cp $6 jr nz, .asm_21995 ld a, $0 ld [$FF00+$1a], a ld a, $80 ld [$FF00+$1a], a .asm_21995 jr nz, .asm_219a3 ld a, [$c003] and a jr z, .asm_219a3 xor a ld [$c003], a jr .asm_219c0 .asm_219a3 jr .asm_219c9 .asm_219a5 res 1, [hl] ld d, $0 ld a, c add a ld e, a ld hl, $c006 add hl, de push hl ld hl, $c016 add hl, de ld e, l ld d, h pop hl ld a, [de] ld [hli], a inc de ld a, [de] ld [hl], a jp Func_21967 .asm_219c0 ld hl, $62de add hl, bc ld a, [$FF00+$25] and [hl] ld [$FF00+$25], a .asm_219c9 ld a, [$c02a] cp $14 jr nc, .asm_219d2 jr .asm_219ef .asm_219d2 ld a, [$c02a] cp $86 jr z, .asm_219ef jr c, .asm_219dd jr .asm_219ef .asm_219dd ld a, c cp $4 jr z, .asm_219e6 call Func_21e6d ret c .asm_219e6 ld a, [$c005] ld [$FF00+$24], a xor a ld [$c005], a .asm_219ef ld hl, $c026 add hl, bc ld [hl], b ret ; known jump sources: 2196d (8:596d) Func_219f5: ; 219f5 (8:59f5) cp $fd jp nz, Func_21a2a call Func_21fe4 push af call Func_21fe4 ld d, a pop af ld e, a push de ld d, $0 ld a, c add a ld e, a ld hl, $c006 add hl, de push hl ld hl, $c016 add hl, de ld e, l ld d, h pop hl ld a, [hli] ld [de], a inc de ld a, [hld] ld [de], a pop de ld [hl], e inc hl ld [hl], d ld b, $0 ld hl, $c02e add hl, bc set 1, [hl] jp Func_21967 ; known jump sources: 219f7 (8:59f7) Func_21a2a: ; 21a2a (8:5a2a) cp $fe jp nz, Func_21a65 call Func_21fe4 ld e, a and a jr z, .asm_21a4e ld b, $0 ld hl, $c0be add hl, bc ld a, [hl] cp e jr nz, .asm_21a4c ld a, $1 ld [hl], a call Func_21fe4 call Func_21fe4 jp Func_21967 .asm_21a4c inc a ld [hl], a .asm_21a4e call Func_21fe4 push af call Func_21fe4 ld b, a ld d, $0 ld a, c add a ld e, a ld hl, $c006 add hl, de pop af ld [hli], a ld [hl], b jp Func_21967 ; known jump sources: 21a2c (8:5a2c) Func_21a65: ; 21a65 (8:5a65) and $f0 cp $d0 jp nz, Func_21aa4 ld a, d and $f ld b, $0 ld hl, $c0c6 add hl, bc ld [hl], a ld a, c cp $3 jr z, .asm_21aa1 call Func_21fe4 ld d, a ld a, c cp $2 jr z, .asm_21a8d cp $6 jr nz, .asm_21a9a ld hl, $c0e7 jr .asm_21a90 .asm_21a8d ld hl, $c0e6 .asm_21a90 ld a, d and $f ld [hl], a ld a, d and $30 sla a ld d, a .asm_21a9a ld b, $0 ld hl, $c0de add hl, bc ld [hl], d .asm_21aa1 jp Func_21967 ; known jump sources: 21a69 (8:5a69) Func_21aa4: ; 21aa4 (8:5aa4) ld a, d cp $e8 jr nz, .asm_21ab6 ld b, $0 ld hl, $c02e add hl, bc ld a, [hl] xor $1 ld [hl], a jp Func_21967 .asm_21ab6 cp $ea jr nz, .asm_21aee call Func_21fe4 ld b, $0 ld hl, $c04e add hl, bc ld [hl], a ld hl, $c06e add hl, bc ld [hl], a call Func_21fe4 ld d, a and $f0 swap a ld b, $0 ld hl, $c056 add hl, bc srl a ld e, a adc b swap a or e ld [hl], a ld a, d and $f ld d, a ld hl, $c05e add hl, bc swap a or d ld [hl], a jp Func_21967 .asm_21aee cp $eb jr nz, .asm_21b26 call Func_21fe4 ld b, $0 ld hl, $c076 add hl, bc ld [hl], a call Func_21fe4 ld d, a and $f0 swap a ld b, a ld a, d and $f call Func_22017 ld b, $0 ld hl, $c0a6 add hl, bc ld [hl], d ld hl, $c0ae add hl, bc ld [hl], e ld b, $0 ld hl, $c02e add hl, bc set 4, [hl] call Func_21fe4 ld d, a jp Func_21c8b .asm_21b26 cp $ec jr nz, .asm_21b3b call Func_21fe4 rrca rrca and $c0 ld b, $0 ld hl, $c03e add hl, bc ld [hl], a jp Func_21967 .asm_21b3b cp $ed jr nz, .asm_21b7b ld a, c cp $4 jr nc, .asm_21b5f call Func_21fe4 ld [$c0e8], a call Func_21fe4 ld [$c0e9], a xor a ld [$c0ce], a ld [$c0cf], a ld [$c0d0], a ld [$c0d1], a jr .asm_21b78 .asm_21b5f call Func_21fe4 ld [$c0ea], a call Func_21fe4 ld [$c0eb], a xor a ld [$c0d2], a ld [$c0d3], a ld [$c0d4], a ld [$c0d5], a .asm_21b78 jp Func_21967 .asm_21b7b cp $ee jr nz, .asm_21b88 call Func_21fe4 ld [$c004], a jp Func_21967 .asm_21b88 cp $ef jr nz, .asm_21ba7 call Func_21fe4 push bc call Func_22035 pop bc ld a, [$c003] and a jr nz, .asm_21ba4 ld a, [$c02d] ld [$c003], a xor a ld [$c02d], a .asm_21ba4 jp Func_21967 .asm_21ba7 cp $fc jr nz, .asm_21bc5 call Func_21fe4 ld b, $0 ld hl, $c046 add hl, bc ld [hl], a and $c0 ld hl, $c03e add hl, bc ld [hl], a ld hl, $c02e add hl, bc set 6, [hl] jp Func_21967 .asm_21bc5 cp $f0 jr nz, .asm_21bd1 call Func_21fe4 ld [$FF00+$24], a jp Func_21967 .asm_21bd1 cp $f8 jr nz, .asm_21be0 ld b, $0 ld hl, $c036 add hl, bc set 0, [hl] jp Func_21967 .asm_21be0 and $f0 cp $e0 jr nz, .asm_21bf3 ld hl, $c0d6 ld b, $0 add hl, bc ld a, d and $f ld [hl], a jp Func_21967 .asm_21bf3 cp $20 jr nz, .asm_21c40 ld a, c cp $3 jr c, .asm_21c40 ld b, $0 ld hl, $c036 add hl, bc bit 0, [hl] jr nz, .asm_21c40 call Func_21c8b ld d, a ld b, $0 ld hl, $c03e add hl, bc ld a, [hl] or d ld d, a ld b, $1 call Func_21ff7 ld [hl], d call Func_21fe4 ld d, a ld b, $2 call Func_21ff7 ld [hl], d call Func_21fe4 ld e, a ld a, c cp $7 ld a, $0 jr z, .asm_21c33 push de call Func_21fe4 pop de .asm_21c33 ld d, a push de call Func_21daa call Func_21d79 pop de call Func_21dcc ret .asm_21c40 ld a, c cp $4 jr c, .asm_21c5c ld a, d cp $10 jr nz, .asm_21c5c ld b, $0 ld hl, $c036 add hl, bc bit 0, [hl] jr nz, .asm_21c5c call Func_21fe4 ld [$FF00+$10], a jp Func_21967 .asm_21c5c ld a, c cp $3 jr nz, Func_21c8b ld a, d and $f0 cp $b0 jr z, .asm_21c76 jr nc, Func_21c8b swap a ld b, a ld a, d and $f ld d, a ld a, b push de push bc jr .asm_21c7e .asm_21c76 ld a, d and $f push af push bc call Func_21fe4 .asm_21c7e ld d, a ld a, [$c003] and a jr nz, .asm_21c89 ld a, d call Func_22035 .asm_21c89 pop bc pop de ; known jump sources: 21b23 (8:5b23), 21c06 (8:5c06), 21c5f (8:5c5f), 21c68 (8:5c68) Func_21c8b: ; 21c8b (8:5c8b) ld a, d push af and $f inc a ld b, $0 ld e, a ld d, b ld hl, $c0c6 add hl, bc ld a, [hl] ld l, b call Func_22006 ld a, c cp $4 jr nc, .asm_21cac ld a, [$c0e8] ld d, a ld a, [$c0e9] ld e, a jr .asm_21cbf .asm_21cac ld d, $1 ld e, $0 cp $7 jr z, .asm_21cbf call Func_21e2f ld a, [$c0ea] ld d, a ld a, [$c0eb] ld e, a .asm_21cbf ld a, l ld b, $0 ld hl, $c0ce add hl, bc ld l, [hl] call Func_22006 ld e, l ld d, h ld hl, $c0ce add hl, bc ld [hl], e ld a, d ld hl, $c0b6 add hl, bc ld [hl], a ld hl, $c036 add hl, bc bit 0, [hl] jr nz, .asm_21ce9 ld hl, $c02e add hl, bc bit 2, [hl] jr z, .asm_21ce9 pop hl ret .asm_21ce9 pop af and $f0 cp $c0 jr nz, .asm_21d20 ld a, c cp $4 jr nc, .asm_21cfd ld hl, $c02a add hl, bc ld a, [hl] and a jr nz, .asm_21d1f .asm_21cfd ld a, c cp $2 jr z, .asm_21d06 cp $6 jr nz, .asm_21d13 .asm_21d06 ld b, $0 ld hl, $62de add hl, bc ld a, [$FF00+$25] and [hl] ld [$FF00+$25], a jr .asm_21d1f .asm_21d13 ld b, $2 call Func_21ff7 ld a, $8 ld [hli], a inc hl ld a, $80 ld [hl], a .asm_21d1f ret .asm_21d20 swap a ld b, $0 ld hl, $c0d6 add hl, bc ld b, [hl] call Func_22017 ld b, $0 ld hl, $c02e add hl, bc bit 4, [hl] jr z, .asm_21d39 call Func_21f4e .asm_21d39 push de ld a, c cp $4 jr nc, .asm_21d4e ld hl, $c02a ld d, $0 ld e, a add hl, de ld a, [hl] and a jr nz, .asm_21d4c jr .asm_21d4e .asm_21d4c pop de ret .asm_21d4e ld b, $0 ld hl, $c0de add hl, bc ld d, [hl] ld b, $2 call Func_21ff7 ld [hl], d call Func_21daa call Func_21d79 pop de ld b, $0 ld hl, $c02e add hl, bc bit 0, [hl] jr z, .asm_21d70 inc e jr nc, .asm_21d70 inc d .asm_21d70 ld hl, $c066 add hl, bc ld [hl], e call Func_21dcc ret ; known jump sources: 21c38 (8:5c38), 21d5e (8:5d5e) Func_21d79: ; 21d79 (8:5d79) ld b, $0 ld hl, $62e6 add hl, bc ld a, [$FF00+$25] or [hl] ld d, a ld a, c cp $7 jr z, .asm_21d94 cp $4 jr nc, .asm_21da6 ld hl, $c02a add hl, bc ld a, [hl] and a jr nz, .asm_21da6 .asm_21d94 ld a, [$c004] ld hl, $62e6 add hl, bc and [hl] ld d, a ld a, [$FF00+$25] ld hl, $62de add hl, bc and [hl] or d ld d, a .asm_21da6 ld a, d ld [$FF00+$25], a ret ; known jump sources: 21c35 (8:5c35), 21d5b (8:5d5b) Func_21daa: ; 21daa (8:5daa) ld b, $0 ld hl, $c0b6 add hl, bc ld d, [hl] ld a, c cp $2 jr z, .asm_21dc5 cp $6 jr z, .asm_21dc5 ld a, d and $3f ld d, a ld hl, $c03e add hl, bc ld a, [hl] or d ld d, a .asm_21dc5 ld b, $1 call Func_21ff7 ld [hl], d ret ; known jump sources: 21c3c (8:5c3c), 21d75 (8:5d75) Func_21dcc: ; 21dcc (8:5dcc) ld a, c cp $2 jr z, .asm_21dd5 cp $6 jr nz, .asm_21e02 .asm_21dd5 push de ld de, $c0e6 cp $2 jr z, .asm_21de0 ld de, $c0e7 .asm_21de0 ld a, [de] add a ld d, $0 ld e, a ld hl, $4361 add hl, de ld e, [hl] inc hl ld d, [hl] ld hl, $ff30 ld b, $f ld a, $0 ld [$FF00+$1a], a .asm_21df5 ld a, [de] inc de ld [hli], a ld a, b dec b and a jr nz, .asm_21df5 ld a, $80 ld [$FF00+$1a], a pop de .asm_21e02 ld a, d or $80 and $c7 ld d, a ld b, $3 call Func_21ff7 ld [hl], e inc hl ld [hl], d ld a, c cp $4 jr c, .asm_21e18 call Func_21e56 .asm_21e18 ret INCBIN "baserom.gbc",$21e19,$21e2f - $21e19 ; known jump sources: 21cb4 (8:5cb4) Func_21e2f: ; 21e2f (8:5e2f) call Func_21e8b jr c, .asm_21e39 call Func_21e9f jr nc, .asm_21e4c .asm_21e39 ld d, $0 ld a, [$c0f2] add $80 jr nc, .asm_21e43 inc d .asm_21e43 ld [$c0eb], a ld a, d ld [$c0ea], a jr .asm_21e55 .asm_21e4c xor a ld [$c0eb], a ld a, $1 ld [$c0ea], a .asm_21e55 ret ; known jump sources: 21e15 (8:5e15) Func_21e56: ; 21e56 (8:5e56) call Func_21e8b jr c, .asm_21e60 call Func_21e9f jr nc, .asm_21e6c .asm_21e60 ld a, [$c0f1] add e jr nc, .asm_21e67 inc d .asm_21e67 dec hl ld e, a ld [hl], e inc hl ld [hl], d .asm_21e6c ret ; known jump sources: 219e2 (8:59e2) Func_21e6d: ; 21e6d (8:5e6d) call Func_21e8b jr nc, .asm_21e88 ld hl, $c006 ld e, c ld d, $0 sla e rl d add hl, de ld a, [hl] sub $1 ld [hl], a inc hl ld a, [hl] sbc $0 ld [hl], a scf ret .asm_21e88 scf ccf ret ; known jump sources: 21e2f (8:5e2f), 21e56 (8:5e56), 21e6d (8:5e6d) Func_21e8b: ; 21e8b (8:5e8b) ld a, [$c02a] cp $14 jr nc, .asm_21e94 jr .asm_21e9a .asm_21e94 cp $86 jr z, .asm_21e9a jr c, .asm_21e9d .asm_21e9a scf ccf ret .asm_21e9d scf ret ; known jump sources: 21e34 (8:5e34), 21e5b (8:5e5b) Func_21e9f: ; 21e9f (8:5e9f) ld a, [$c02d] ld b, a ld a, [$c02a] or b cp $9d jr nc, .asm_21ead jr .asm_21eb3 .asm_21ead cp $ea jr z, .asm_21eb3 jr c, .asm_21eb6 .asm_21eb3 scf ccf ret .asm_21eb6 scf ret ; known jump sources: 218ef (8:58ef) Func_21eb8: ; 21eb8 (8:5eb8) ld hl, $c02e add hl, bc bit 5, [hl] jp nz, Func_21eff ld hl, $c09e add hl, bc ld e, [hl] ld hl, $c096 add hl, bc ld d, [hl] ld hl, $c07e add hl, bc ld l, [hl] ld h, b add hl, de ld d, h ld e, l ld hl, $c08e add hl, bc push hl ld hl, $c086 add hl, bc ld a, [hl] pop hl add [hl] ld [hl], a ld a, $0 adc e ld e, a ld a, $0 adc d ld d, a ld hl, $c0a6 add hl, bc ld a, [hl] cp d jp c, Func_21f45 jr nz, asm_21f32 ld hl, $c0ae add hl, bc ld a, [hl] cp e jp c, Func_21f45 jr asm_21f32 ; known jump sources: 21ebe (8:5ebe) Func_21eff: ; 21eff (8:5eff) ld hl, $c09e add hl, bc ld a, [hl] ld hl, $c096 add hl, bc ld d, [hl] ld hl, $c07e add hl, bc ld e, [hl] sub e ld e, a ld a, d sbc b ld d, a ld hl, $c086 add hl, bc ld a, [hl] add a ld [hl], a ld a, e sbc b ld e, a ld a, d sbc b ld d, a ld hl, $c0a6 add hl, bc ld a, d cp [hl] jr c, Func_21f45 jr nz, asm_21f32 ld hl, $c0ae add hl, bc ld a, e cp [hl] jr c, Func_21f45 asm_21f32: ; 21f32 (8:5f32) ld hl, $c09e add hl, bc ld [hl], e ld hl, $c096 add hl, bc ld [hl], d ld b, $3 call Func_21ff7 ld a, e ld [hli], a ld [hl], d ret ; known jump sources: 21eef (8:5eef), 21efa (8:5efa), 21f26 (8:5f26), 21f30 (8:5f30) Func_21f45: ; 21f45 (8:5f45) ld hl, $c02e add hl, bc res 4, [hl] res 5, [hl] ret ; known jump sources: 21d36 (8:5d36) Func_21f4e: ; 21f4e (8:5f4e) ld hl, $c096 add hl, bc ld [hl], d ld hl, $c09e add hl, bc ld [hl], e ld hl, $c0b6 add hl, bc ld a, [hl] ld hl, $c076 add hl, bc sub [hl] jr nc, .asm_21f66 ld a, $1 .asm_21f66 ld [hl], a ld hl, $c0ae add hl, bc ld a, e sub [hl] ld e, a ld a, d sbc b ld hl, $c0a6 add hl, bc sub [hl] jr c, .asm_21f82 ld d, a ld b, $0 ld hl, $c02e add hl, bc set 5, [hl] jr .asm_21fa5 .asm_21f82 ld hl, $c096 add hl, bc ld d, [hl] ld hl, $c09e add hl, bc ld e, [hl] ld hl, $c0ae add hl, bc ld a, [hl] sub e ld e, a ld a, d sbc b ld d, a ld hl, $c0a6 add hl, bc ld a, [hl] sub d ld d, a ld b, $0 ld hl, $c02e add hl, bc res 5, [hl] .asm_21fa5 ld hl, $c076 add hl, bc .asm_21fa9 inc b ld a, e sub [hl] ld e, a jr nc, .asm_21fa9 ld a, d and a jr z, .asm_21fb7 dec a ld d, a jr .asm_21fa9 .asm_21fb7 ld a, e add [hl] ld d, b ld b, $0 ld hl, $c07e add hl, bc ld [hl], d ld hl, $c086 add hl, bc ld [hl], a ld hl, $c08e add hl, bc ld [hl], a ret ; known jump sources: 218d2 (8:58d2) Func_21fcc: ; 21fcc (8:5fcc) ld b, $0 ld hl, $c046 add hl, bc ld a, [hl] rlca rlca ld [hl], a and $c0 ld d, a ld b, $1 call Func_21ff7 ld a, [hl] and $3f or d ld [hl], a ret ; known jump sources: 21967 (8:5967), 219fa (8:59fa), 219fe (8:59fe), 21a2f (8:5a2f), 21a43 (8:5a43), 21a46 (8:5a46), 21a4e (8:5a4e), 21a52 (8:5a52), 21a7b (8:5a7b), 21aba (8:5aba), 21ac9 (8:5ac9), 21af2 (8:5af2), 21afc (8:5afc), 21b1f (8:5b1f), 21b2a (8:5b2a), 21b44 (8:5b44), 21b4a (8:5b4a), 21b5f (8:5b5f), 21b65 (8:5b65), 21b7f (8:5b7f), 21b8c (8:5b8c), 21bab (8:5bab), 21bc9 (8:5bc9), 21c19 (8:5c19), 21c23 (8:5c23), 21c2f (8:5c2f), 21c54 (8:5c54), 21c7b (8:5c7b) Func_21fe4: ; 21fe4 (8:5fe4) ld d, $0 ld a, c add a ld e, a ld hl, $c006 add hl, de ld a, [hli] ld e, a ld a, [hld] ld d, a ld a, [de] inc de ld [hl], e inc hl ld [hl], d ret ; known jump sources: 21941 (8:5941), 21c15 (8:5c15), 21c1f (8:5c1f), 21d15 (8:5d15), 21d57 (8:5d57), 21dc7 (8:5dc7), 21e0a (8:5e0a), 21f3e (8:5f3e), 21fdb (8:5fdb) Func_21ff7: ; 21ff7 (8:5ff7) ld a, c ld hl, $62d6 add l jr nc, .asm_21fff inc h .asm_21fff ld l, a ld a, [hl] add b ld l, a ld h, $ff ret ; known jump sources: 21c9a (8:5c9a), 21cc7 (8:5cc7) Func_22006: ; 22006 (8:6006) ld h, $0 .asm_22008 srl a jr nc, .asm_2200d add hl, de .asm_2200d sla e rl d and a jr z, .asm_22016 jr .asm_22008 .asm_22016 ret ; known jump sources: 21b08 (8:5b08), 21d29 (8:5d29) Func_22017: ; 22017 (8:6017) ld h, $0 ld l, a add hl, hl ld d, h ld e, l ld hl, $62ee add hl, de ld e, [hl] inc hl ld d, [hl] ld a, b .asm_22025 cp $7 jr z, .asm_22030 sra d rr e inc a jr .asm_22025 .asm_22030 ld a, $8 add d ld d, a ret ; known jump sources: 21b90 (8:5b90), 21c86 (8:5c86) Func_22035: ; 22035 (8:6035) ld [$c001], a cp $ff jp z, Func_221f3 cp $e9 jp z, Func_2210d jp c, Func_2210d cp $fe jr z, .asm_2204c jp nc, Func_2210d .asm_2204c xor a ld [$c000], a ld [$c003], a ld [$c0e9], a ld [$c0e6], a ld [$c0e7], a ld d, $8 ld hl, $c016 call Func_22248 ld hl, $c006 call Func_22248 ld d, $4 ld hl, $c026 call Func_22248 ld hl, $c02e call Func_22248 ld hl, $c03e call Func_22248 ld hl, $c046 call Func_22248 ld hl, $c04e call Func_22248 ld hl, $c056 call Func_22248 ld hl, $c05e call Func_22248 ld hl, $c066 call Func_22248 ld hl, $c06e call Func_22248 ld hl, $c036 call Func_22248 ld hl, $c076 call Func_22248 ld hl, $c07e call Func_22248 ld hl, $c086 call Func_22248 ld hl, $c08e call Func_22248 ld hl, $c096 call Func_22248 ld hl, $c09e call Func_22248 ld hl, $c0a6 call Func_22248 ld hl, $c0ae call Func_22248 ld a, $1 ld hl, $c0be call Func_22248 ld hl, $c0b6 call Func_22248 ld hl, $c0c6 call Func_22248 ld [$c0e8], a ld a, $ff ld [$c004], a xor a ld [$FF00+$24], a ld a, $8 ld [$FF00+$10], a ld a, $0 ld [$FF00+$25], a xor a ld [$FF00+$1a], a ld a, $80 ld [$FF00+$1a], a ld a, $77 ld [$FF00+$24], a jp Func_2224e ; known jump sources: 2203f (8:603f), 22042 (8:6042), 22049 (8:6049) Func_2210d: ; 2210d (8:610d) ld l, a ld e, a ld h, $0 ld d, h add hl, hl add hl, de ld de, $4000 add hl, de ld a, h ld [$c0ec], a ld a, l ld [$c0ed], a ld a, [hl] and $c0 rlca rlca ld c, a ; known jump sources: 221f0 (8:61f0) Func_22126: ; 22126 (8:6126) ld d, c ld a, c add a add c ld c, a ld b, $0 ld a, [$c0ec] ld h, a ld a, [$c0ed] ld l, a add hl, bc ld c, d ld a, [hl] and $f ld e, a ld d, $0 ld hl, $c026 add hl, de ld a, [hl] and a jr z, .asm_22162 ld a, e cp $7 jr nz, .asm_22159 ld a, [$c001] cp $14 jr nc, .asm_22152 ret .asm_22152 ld a, [hl] cp $14 jr z, .asm_22162 jr c, .asm_22162 .asm_22159 ld a, [$c001] cp [hl] jr z, .asm_22162 jr c, .asm_22162 ret .asm_22162 xor a push de ld h, d ld l, e add hl, hl ld d, h ld e, l ld hl, $c016 add hl, de ld [hli], a ld [hl], a ld hl, $c006 add hl, de ld [hli], a ld [hl], a pop de ld hl, $c026 add hl, de ld [hl], a ld hl, $c02e add hl, de ld [hl], a ld hl, $c03e add hl, de ld [hl], a ld hl, $c046 add hl, de ld [hl], a ld hl, $c04e add hl, de ld [hl], a ld hl, $c056 add hl, de ld [hl], a ld hl, $c05e add hl, de ld [hl], a ld hl, $c066 add hl, de ld [hl], a ld hl, $c06e add hl, de ld [hl], a ld hl, $c076 add hl, de ld [hl], a ld hl, $c07e add hl, de ld [hl], a ld hl, $c086 add hl, de ld [hl], a ld hl, $c08e add hl, de ld [hl], a ld hl, $c096 add hl, de ld [hl], a ld hl, $c09e add hl, de ld [hl], a ld hl, $c0a6 add hl, de ld [hl], a ld hl, $c0ae add hl, de ld [hl], a ld hl, $c036 add hl, de ld [hl], a ld a, $1 ld hl, $c0be add hl, de ld [hl], a ld hl, $c0b6 add hl, de ld [hl], a ld hl, $c0c6 add hl, de ld [hl], a ld a, e cp $4 jr nz, .asm_221ea ld a, $8 ld [$FF00+$10], a .asm_221ea ld a, c and a jp z, Func_2224e dec c jp Func_22126 ; known jump sources: 2203a (8:603a) Func_221f3: ; 221f3 (8:61f3) ld a, $80 ld [$FF00+$26], a ld [$FF00+$1a], a xor a ld [$FF00+$25], a ld [$FF00+$1c], a ld a, $8 ld [$FF00+$10], a ld [$FF00+$12], a ld [$FF00+$17], a ld [$FF00+$21], a ld a, $40 ld [$FF00+$14], a ld [$FF00+$19], a ld [$FF00+$23], a ld a, $77 ld [$FF00+$24], a xor a ld [$c000], a ld [$c003], a ld [$c002], a ld [$c0e9], a ld [$c0eb], a ld [$c0e6], a ld [$c0e7], a ld d, $a0 ld hl, $c006 call Func_22248 ld a, $1 ld d, $18 ld hl, $c0b6 call Func_22248 ld [$c0e8], a ld [$c0ea], a ld a, $ff ld [$c004], a ret ; known jump sources: 22061 (8:6061), 22067 (8:6067), 2206f (8:606f), 22075 (8:6075), 2207b (8:607b), 22081 (8:6081), 22087 (8:6087), 2208d (8:608d), 22093 (8:6093), 22099 (8:6099), 2209f (8:609f), 220a5 (8:60a5), 220ab (8:60ab), 220b1 (8:60b1), 220b7 (8:60b7), 220bd (8:60bd), 220c3 (8:60c3), 220c9 (8:60c9), 220cf (8:60cf), 220d5 (8:60d5), 220dd (8:60dd), 220e3 (8:60e3), 220e9 (8:60e9), 2222f (8:622f), 22239 (8:6239) Func_22248: ; 22248 (8:6248) ld b, d .asm_22249 ld [hli], a dec b jr nz, .asm_22249 ret ; known jump sources: 2210a (8:610a), 221ec (8:61ec) Func_2224e: ; 2224e (8:624e) ld a, [$c001] ld l, a ld e, a ld h, $0 ld d, h add hl, hl add hl, de ld de, $4000 add hl, de ld e, l ld d, h ld hl, $c006 ld a, [de] ld b, a rlca rlca and $3 ld c, a ld a, b and $f ld b, c inc b inc de ld c, $0 .asm_22270 cp c jr z, .asm_22278 inc c inc hl inc hl jr .asm_22270 .asm_22278 push hl push bc push af ld b, $0 ld c, a ld hl, $c026 add hl, bc ld a, [$c001] ld [hl], a pop af cp $3 jr c, .asm_22291 ld hl, $c02e add hl, bc set 2, [hl] .asm_22291 pop bc pop hl ld a, [de] ld [hli], a inc de ld a, [de] ld [hli], a inc de inc c dec b ld a, b and a ld a, [de] inc de jr nz, .asm_22270 ld a, [$c001] cp $14 jr nc, .asm_222aa jr .asm_222d4 .asm_222aa ld a, [$c001] cp $86 jr z, .asm_222d4 jr c, .asm_222b5 jr .asm_222d4 .asm_222b5 ld hl, $c02a ld [hli], a ld [hli], a ld [hli], a ld [hl], a ld hl, $c012 ld de, $62d5 ld [hl], e inc hl ld [hl], d ld a, [$c005] and a jr nz, .asm_222d4 ld a, [$FF00+$24] ld [$c005], a ld a, $77 ld [$FF00+$24], a .asm_222d4 ret INCBIN "baserom.gbc",$222d5,$22306 - $222d5 ; known jump sources: e1d6 (3:61d6) Func_22306: ; 22306 (8:6306) ld a, $9a call Func_3740 ld hl, $c00e ld de, $6322 call Func_2231d ld de, $6325 call Func_2231d ld de, $449b ; known jump sources: 22311 (8:6311), 22317 (8:6317) Func_2231d: ; 2231d (8:631d) ld a, e ld [hli], a ld a, d ld [hli], a ret INCBIN "baserom.gbc",$22322,$23f52 - $22322 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" ; known jump sources: 12a35 (4:6a35), 70320 (1c:4320) Func_27d6b: ; 27d6b (9:7d6b) call Load16BitRegisters push hl call GetBaseStats pop hl push hl ld a, [$d0be] call Func_27d89 ld a, [$d0be] ld b, a ld a, [$d0bf] cp b pop hl jr z, asm_27d8c ld bc, $28 add hl, bc ; known jump sources: 27d77 (9:7d77) Func_27d89: ; 27d89 (9:7d89) push hl jr asm_27d9f asm_27d8c: ; 27d8c (9:7d8c) ld a, $7f ld bc, $13 add hl, bc ld bc, $6 jp FillMemory ; known jump sources: 3d54b (f:554b) Func_27d98: ; 27d98 (9:7d98) call Load16BitRegisters push hl ld a, [W_PLAYERMOVETYPE] ; $cfd5 asm_27d9f: ; 27d9f (9:7d9f) add a ld hl, $7dae ld e, a ld d, $0 add hl, de ld a, [hli] ld e, a ld d, [hl] pop hl jp PlaceString ; 27dae (9:7dae) 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♀@" ; known jump sources: 3f94e (f:794e) Func_27f86: ; 27f86 (9:7f86) ld hl, W_PLAYERBATTSTATUS2 ; $d063 ld a, [H_WHOSETURN] ; $FF00+$f3 and a jr z, .asm_27f91 ld hl, W_ENEMYBATTSTATUS2 ; $d068 .asm_27f91 bit 2, [hl] jr nz, .asm_27fa5 set 2, [hl] ld hl, Func_3fba8 ld b, BANK(Func_3fba8) call Bankswitch ; indirect jump to Func_3fba8 (3fba8 (f:7ba8)) ld hl, $7fb2 jp PrintText .asm_27fa5 ld c, $32 call DelayFrames ld hl, Func_3fb53 ld b, BANK(Func_3fb53) jp Bankswitch ; indirect jump to Func_3fb53 (3fb53 (f:7b53)) INCBIN "baserom.gbc",$27fb2,$27fb3 - $27fb2 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" ; known jump sources: 3fa81 (f:7a81) Func_2bea9: ; 2bea9 (a:7ea9) ld hl, MoveHitTest ld b, BANK(MoveHitTest) call Bankswitch ; indirect jump to MoveHitTest (3e56b (f:656b)) ld a, [W_MOVEMISSED] ; $d05f and a jr nz, .asm_2bee7 ld hl, W_ENEMYBATTSTATUS2 ; $d068 ld de, W_ENEMYMONTYPE1 ; $cfea (aliases: W_ENEMYMONTYPES) ld a, [H_WHOSETURN] ; $FF00+$f3 and a jr z, .asm_2bec8 ld hl, W_PLAYERBATTSTATUS2 ; $d063 ld de, W_PLAYERMONTYPE1 ; $d019 (aliases: W_PLAYERMONTYPES) .asm_2bec8 ld a, [de] cp $16 jr z, .asm_2bee7 inc de ld a, [de] cp $16 jr z, .asm_2bee7 bit 7, [hl] jr nz, .asm_2bee7 set 7, [hl] ld hl, Func_3fba8 ld b, BANK(Func_3fba8) call Bankswitch ; indirect jump to Func_3fba8 (3fba8 (f:7ba8)) ld hl, $7ef2 jp PrintText .asm_2bee7 ld c, $32 call DelayFrames ld hl, $7ef7 jp PrintText ; 2bef2 (a:7ef2) 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" DisplayEffectiveness: ld a, [$D05B] and a, $7F cp a, $0A ret z ld hl, UnnamedText_2fb8e ; It's super effective! jr nc, .done ld hl, UnnamedText_2fb93 ; It's not very effective... .done jp $3C49 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,$2fe18 - $2fb98 ; known jump sources: e530 (3:6530) Func_2fe18: ; 2fe18 (b:7e18) ld a, [W_WHICHPOKEMON] ; $cf92 ld hl, W_PARTYMON1_MOVE1 ; $d173 ld bc, $2c call AddNTimes ld a, [$d0e0] ld b, a ld c, $4 .asm_2fe2a ld a, [hli] cp b jr z, .asm_2fe33 dec c jr nz, .asm_2fe2a and a ret .asm_2fe33 ld hl, $7e3b call PrintText scf ret ; 2fe3b (b:7e3b) UnnamedText_2fe3b: ; 0x2fe3b TX_FAR _UnnamedText_2fe3b db $50 ; 0x2fe3b + 5 bytes ; known jump sources: 3eca5 (f:6ca5), 3f11b (f:711b), 70362 (1c:4362) Func_2fe40: ; 2fe40 (b:7e40) ld de, $a203 ld hl, $a187 call Func_2fe7d call Func_2fe55 ld de, $a38b ld hl, $a30f call Func_2fe7d ; known jump sources: 2fe49 (b:7e49) Func_2fe55: ; 2fe55 (b:7e55) ld b, $3 .asm_2fe57 ld c, $1c .asm_2fe59 push bc ld a, [de] ld bc, H_VBCOPYDEST ; $ffc9 call Func_2fe97 ld a, [de] dec de swap a ld bc, $37 call Func_2fe97 pop bc dec c jr nz, .asm_2fe59 dec de dec de dec de dec de ld a, b ld bc, $ffc8 add hl, bc ld b, a dec b jr nz, .asm_2fe57 ret ; known jump sources: 2fe46 (b:7e46), 2fe52 (b:7e52) Func_2fe7d: ; 2fe7d (b:7e7d) ld a, $1c ld [H_DOWNARROWBLINKCNT1], a ; $FF00+$8b ld bc, rIE ; $ffff .asm_2fe84 ld a, [de] dec de swap a call Func_2fe97 ld a, [H_DOWNARROWBLINKCNT1] ; $FF00+$8b dec a ld [H_DOWNARROWBLINKCNT1], a ; $FF00+$8b jr nz, .asm_2fe84 dec de dec de dec de dec de ret ; known jump sources: 2fe5e (b:7e5e), 2fe68 (b:7e68), 2fe88 (b:7e88) Func_2fe97: ; 2fe97 (b:7e97) push hl and $f ld hl, $7ea8 add l ld l, a jr nc, .asm_2fea2 inc h .asm_2fea2 ld a, [hl] pop hl ld [hld], a ld [hl], a add hl, bc ret INCBIN "baserom.gbc",$2fea8,$2ff04 - $2fea8 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 ; known jump sources: 3f889 (f:7889) Func_33f57: ; 33f57 (c:7f57) ld hl, W_DAMAGE ; $d0d7 xor a ld [hli], a ld [hl], a dec a ld [$d05e], a ld hl, $d02a ld de, $cffb ld a, [H_WHOSETURN] ; $FF00+$f3 and a jr z, .asm_33f72 ld hl, $cffb ld de, $d02a .asm_33f72 ld a, [de] dec de ld b, a ld a, [hld] sub b ld a, [de] ld b, a ld a, [hl] sbc b jr c, .asm_33f8a ld hl, W_DAMAGE ; $d0d7 ld a, $ff ld [hli], a ld [hl], a ld a, $2 ld [$d05e], a ret .asm_33f8a ld a, $1 ld [W_MOVEMISSED], a ; $d05f ret ; 33f90 (c:7f90) 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,$37258 - $37244 ; known jump sources: 44bd (1:44bd), 44c8 (1:44c8) Func_37258: ; 37258 (d:7258) ld a, d ld bc, $7247 ld d, $88 ld e, $0 and a jr nz, Func_3726a ld bc, $724f ld d, $0 ld e, $0 ; known jump sources: 37261 (d:7261), 37290 (d:7290), 372c1 (d:72c1) Func_3726a: ; 3726a (d:726a) ld a, [bc] and a ret z inc bc push bc ld b, a and $f ld c, a ld a, b and $f0 swap a ld b, a .asm_37279 ld h, d ld l, $48 call Func_37292 ld h, $0 ld l, $88 call Func_37292 ld a, d add b ld d, a call Func_372c4 dec c jr nz, .asm_37279 pop bc jr Func_3726a ; known jump sources: 3727c (d:727c), 37283 (d:7283), 37295 (d:7295) Func_37292: ; 37292 (d:7292) ld a, [$FF00+$44] cp l jr nz, Func_37292 ld a, h ld [rSCX], a ; $FF00+$43 .asm_3729a ld a, [$FF00+$44] cp h jr z, .asm_3729a ret INCBIN "baserom.gbc",$372a0,$372ac - $372a0 ; known jump sources: 4451 (1:4451) Func_372ac: ; 372ac (d:72ac) ld a, [W_WHICHTRADE] ; $cd3d cp $b0 jr z, .asm_372ba cp $b1 jr z, .asm_372ba cp $99 ret nz .asm_372ba ld e, $1 ld bc, $7244 ld d, $0 jp Func_3726a ; known jump sources: 37289 (d:7289) Func_372c4: ; 372c4 (d:72c4) push de push hl xor a ld d, a ld hl, $72a0 add hl, de ld a, [hl] pop hl pop de and a ret z ld [$c328], a inc e ret ; known jump sources: 137c9 (4:77c9), 3ec42 (f:6c42) Func_372d6: ; 372d6 (d:72d6) call LoadTextBoxTilePatterns ld hl, $c3f3 ld b, $7 ld c, $c call TextBoxBorder ld hl, $c408 ld de, W_PLAYERNAME ; $d158 call PlaceString ld hl, $c46c ld de, W_GRASSRATE ; $d887 call PlaceString ld hl, $c449 ld a, $69 ld [hli], a ld [hl], $6a xor a ld [$cfcb], a ld hl, Func_3a948 ld b, BANK(Func_3a948) call Bankswitch ; indirect jump to Func_3a948 (3a948 (e:6948)) ld c, $96 jp DelayFrames INCBIN "baserom.gbc",$3730e,$37390 - $3730e 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,$37d41 - $37ca1 ; known jump sources: 38b3 (0:38b3) Func_37d41: ; 37d41 (d:7d41) ld a, $8 ld b, a xor a ld [H_DIVIDEND], a ; $FF00+$95 (aliases: H_PRODUCT, H_PASTLEADINGZEROES, H_QUOTIENT) ld [$FF00+$9b], a ld [H_SAVEDNUMTOPRINT], a ; $FF00+$9c ld [$FF00+$9d], a ld [$FF00+$9e], a .asm_37d4f ld a, [H_REMAINDER] ; $FF00+$99 (aliases: H_DIVISOR, H_MULTIPLIER, H_POWEROFTEN) srl a ld [H_REMAINDER], a ; $FF00+$99 (aliases: H_DIVISOR, H_MULTIPLIER, H_POWEROFTEN) jr nc, .asm_37d77 ld a, [$FF00+$9e] ld c, a ld a, [$FF00+$98] add c ld [$FF00+$9e], a ld a, [$FF00+$9d] ld c, a ld a, [$FF00+$97] adc c ld [$FF00+$9d], a ld a, [H_SAVEDNUMTOPRINT] ; $FF00+$9c ld c, a ld a, [H_NUMTOPRINT] ; $FF00+$96 (aliases: H_MULTIPLICAND) adc c ld [H_SAVEDNUMTOPRINT], a ; $FF00+$9c ld a, [$FF00+$9b] ld c, a ld a, [H_DIVIDEND] ; $FF00+$95 (aliases: H_PRODUCT, H_PASTLEADINGZEROES, H_QUOTIENT) adc c ld [$FF00+$9b], a .asm_37d77 dec b jr z, .asm_37d94 ld a, [$FF00+$98] sla a ld [$FF00+$98], a ld a, [$FF00+$97] rl a ld [$FF00+$97], a ld a, [H_NUMTOPRINT] ; $FF00+$96 (aliases: H_MULTIPLICAND) rl a ld [H_NUMTOPRINT], a ; $FF00+$96 (aliases: H_MULTIPLICAND) ld a, [H_DIVIDEND] ; $FF00+$95 (aliases: H_PRODUCT, H_PASTLEADINGZEROES, H_QUOTIENT) rl a ld [H_DIVIDEND], a ; $FF00+$95 (aliases: H_PRODUCT, H_PASTLEADINGZEROES, H_QUOTIENT) jr .asm_37d4f .asm_37d94 ld a, [$FF00+$9e] ld [$FF00+$98], a ld a, [$FF00+$9d] ld [$FF00+$97], a ld a, [H_SAVEDNUMTOPRINT] ; $FF00+$9c ld [H_NUMTOPRINT], a ; $FF00+$96 (aliases: H_MULTIPLICAND) ld a, [$FF00+$9b] ld [H_DIVIDEND], a ; $FF00+$95 (aliases: H_PRODUCT, H_PASTLEADINGZEROES, H_QUOTIENT) ret ; known jump sources: 38c6 (0:38c6) Func_37da5: ; 37da5 (d:7da5) xor a ld [$FF00+$9a], a ld [$FF00+$9b], a ld [H_SAVEDNUMTOPRINT], a ; $FF00+$9c ld [$FF00+$9d], a ld [$FF00+$9e], a ld a, $9 ld e, a .asm_37db3 ld a, [$FF00+$9a] ld c, a ld a, [H_NUMTOPRINT] ; $FF00+$96 (aliases: H_MULTIPLICAND) sub c ld d, a ld a, [H_REMAINDER] ; $FF00+$99 (aliases: H_DIVISOR, H_MULTIPLIER, H_POWEROFTEN) ld c, a ld a, [H_DIVIDEND] ; $FF00+$95 (aliases: H_PRODUCT, H_PASTLEADINGZEROES, H_QUOTIENT) sbc c jr c, .asm_37dce ld [H_DIVIDEND], a ; $FF00+$95 (aliases: H_PRODUCT, H_PASTLEADINGZEROES, H_QUOTIENT) ld a, d ld [H_NUMTOPRINT], a ; $FF00+$96 (aliases: H_MULTIPLICAND) ld a, [$FF00+$9e] inc a ld [$FF00+$9e], a jr .asm_37db3 .asm_37dce ld a, b cp $1 jr z, .asm_37e18 ld a, [$FF00+$9e] sla a ld [$FF00+$9e], a ld a, [$FF00+$9d] rl a ld [$FF00+$9d], a ld a, [H_SAVEDNUMTOPRINT] ; $FF00+$9c rl a ld [H_SAVEDNUMTOPRINT], a ; $FF00+$9c ld a, [$FF00+$9b] rl a ld [$FF00+$9b], a dec e jr nz, .asm_37e04 ld a, $8 ld e, a ld a, [$FF00+$9a] ld [H_REMAINDER], a ; $FF00+$99 (aliases: H_DIVISOR, H_MULTIPLIER, H_POWEROFTEN) xor a ld [$FF00+$9a], a ld a, [H_NUMTOPRINT] ; $FF00+$96 (aliases: H_MULTIPLICAND) ld [H_DIVIDEND], a ; $FF00+$95 (aliases: H_PRODUCT, H_PASTLEADINGZEROES, H_QUOTIENT) ld a, [$FF00+$97] ld [H_NUMTOPRINT], a ; $FF00+$96 (aliases: H_MULTIPLICAND) ld a, [$FF00+$98] ld [$FF00+$97], a .asm_37e04 ld a, e cp $1 jr nz, .asm_37e0a dec b .asm_37e0a ld a, [H_REMAINDER] ; $FF00+$99 (aliases: H_DIVISOR, H_MULTIPLIER, H_POWEROFTEN) srl a ld [H_REMAINDER], a ; $FF00+$99 (aliases: H_DIVISOR, H_MULTIPLIER, H_POWEROFTEN) ld a, [$FF00+$9a] rr a ld [$FF00+$9a], a jr .asm_37db3 .asm_37e18 ld a, [H_NUMTOPRINT] ; $FF00+$96 (aliases: H_MULTIPLICAND) ld [H_REMAINDER], a ; $FF00+$99 (aliases: H_DIVISOR, H_MULTIPLIER, H_POWEROFTEN) ld a, [$FF00+$9e] ld [$FF00+$98], a ld a, [$FF00+$9d] ld [$FF00+$97], a ld a, [H_SAVEDNUMTOPRINT] ; $FF00+$9c ld [H_NUMTOPRINT], a ; $FF00+$96 (aliases: H_MULTIPLICAND) ld a, [$FF00+$9b] ld [H_DIVIDEND], a ; $FF00+$95 (aliases: H_PRODUCT, H_PASTLEADINGZEROES, H_QUOTIENT) ret INCBIN "baserom.gbc",$37e2d,$37e79 - $37e2d 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 ,NO_ADDITIONAL_EFFECT ,$28,NORMAL, $FF,35 db KARATE_CHOP ,NO_ADDITIONAL_EFFECT ,$32,NORMAL, $FF,25 db DOUBLESLAP ,TWO_TO_FIVE_ATTACKS_EFFECT,$0F,NORMAL, $D8,10 db COMET_PUNCH ,TWO_TO_FIVE_ATTACKS_EFFECT,$12,NORMAL, $D8,15 db MEGA_PUNCH ,NO_ADDITIONAL_EFFECT ,$50,NORMAL, $D8,20 db PAY_DAY ,PAY_DAY_EFFECT ,$28,NORMAL, $FF,20 db FIRE_PUNCH ,BURN_SIDE_EFFECT1 ,$4B,FIRE, $FF,15 db ICE_PUNCH ,FREEZE_SIDE_EFFECT ,$4B,ICE, $FF,15 db THUNDERPUNCH,PARALYZE_SIDE_EFFECT1 ,$4B,ELECTRIC,$FF,15 db SCRATCH ,NO_ADDITIONAL_EFFECT ,$28,NORMAL, $FF,35 db VICEGRIP ,NO_ADDITIONAL_EFFECT ,$37,NORMAL, $FF,30 db GUILLOTINE ,OHKO_EFFECT ,$01,NORMAL, $4C,5 db RAZOR_WIND ,CHARGE_EFFECT ,$50,NORMAL, $BF,10 db SWORDS_DANCE,ATTACK_UP2_EFFECT ,$00,NORMAL, $FF,30 db CUT ,NO_ADDITIONAL_EFFECT ,$32,NORMAL, $F2,30 db GUST ,NO_ADDITIONAL_EFFECT ,$28,NORMAL, $FF,35 db WING_ATTACK ,NO_ADDITIONAL_EFFECT ,$23,FLYING, $FF,35 db WHIRLWIND ,SWITCH_AND_TELEPORT_EFFECT,$00,NORMAL, $D8,20 db FLY ,FLY_EFFECT ,$46,FLYING, $F2,15 db BIND ,TRAPPING_EFFECT ,$0F,NORMAL, $BF,20 db SLAM ,NO_ADDITIONAL_EFFECT ,$50,NORMAL, $BF,20 db VINE_WHIP ,NO_ADDITIONAL_EFFECT ,$23,GRASS, $FF,10 db STOMP ,FLINCH_SIDE_EFFECT2 ,$41,NORMAL, $FF,20 db DOUBLE_KICK ,ATTACK_TWICE_EFFECT ,$1E,FIGHTING,$FF,30 db MEGA_KICK ,NO_ADDITIONAL_EFFECT ,$78,NORMAL, $BF,5 db JUMP_KICK ,JUMP_KICK_EFFECT ,$46,FIGHTING,$F2,25 db ROLLING_KICK,FLINCH_SIDE_EFFECT2 ,$3C,FIGHTING,$D8,15 db SAND_ATTACK ,ACCURACY_DOWN1_EFFECT ,$00,NORMAL, $FF,15 db HEADBUTT ,FLINCH_SIDE_EFFECT2 ,$46,NORMAL, $FF,15 db HORN_ATTACK ,NO_ADDITIONAL_EFFECT ,$41,NORMAL, $FF,25 db FURY_ATTACK ,TWO_TO_FIVE_ATTACKS_EFFECT,$0F,NORMAL, $D8,20 db HORN_DRILL ,OHKO_EFFECT ,$01,NORMAL, $4C,5 db TACKLE ,NO_ADDITIONAL_EFFECT ,$23,NORMAL, $F2,35 db BODY_SLAM ,PARALYZE_SIDE_EFFECT2 ,$55,NORMAL, $FF,15 db WRAP ,TRAPPING_EFFECT ,$0F,NORMAL, $D8,20 db TAKE_DOWN ,RECOIL_EFFECT ,$5A,NORMAL, $D8,20 db THRASH ,THRASH_PETAL_DANCE_EFFECT ,$5A,NORMAL, $FF,20 db DOUBLE_EDGE ,RECOIL_EFFECT ,$64,NORMAL, $FF,15 db TAIL_WHIP ,DEFENSE_DOWN1_EFFECT ,$00,NORMAL, $FF,30 db POISON_STING,POISON_SIDE_EFFECT1 ,$0F,POISON, $FF,35 db TWINEEDLE ,TWINEEDLE_EFFECT ,$19,BUG, $FF,20 db PIN_MISSILE ,TWO_TO_FIVE_ATTACKS_EFFECT,$0E,BUG, $D8,20 db LEER ,DEFENSE_DOWN1_EFFECT ,$00,NORMAL, $FF,30 db BITE ,FLINCH_SIDE_EFFECT1 ,$3C,NORMAL, $FF,25 db GROWL ,ATTACK_DOWN1_EFFECT ,$00,NORMAL, $FF,40 db ROAR ,SWITCH_AND_TELEPORT_EFFECT,$00,NORMAL, $FF,20 db SING ,SLEEP_EFFECT ,$00,NORMAL, $8C,15 db SUPERSONIC ,CONFUSION_EFFECT ,$00,NORMAL, $8C,20 db SONICBOOM ,SPECIAL_DAMAGE_EFFECT ,$01,NORMAL, $E5,20 db DISABLE ,DISABLE_EFFECT ,$00,NORMAL, $8C,20 db ACID ,DEFENSE_DOWN_SIDE_EFFECT ,$28,POISON, $FF,30 db EMBER ,BURN_SIDE_EFFECT1 ,$28,FIRE, $FF,25 db FLAMETHROWER,BURN_SIDE_EFFECT1 ,$5F,FIRE, $FF,15 db MIST ,MIST_EFFECT ,$00,ICE, $FF,30 db WATER_GUN ,NO_ADDITIONAL_EFFECT ,$28,WATER, $FF,25 db HYDRO_PUMP ,NO_ADDITIONAL_EFFECT ,$78,WATER, $CC,5 db SURF ,NO_ADDITIONAL_EFFECT ,$5F,WATER, $FF,15 db ICE_BEAM ,FREEZE_SIDE_EFFECT ,$5F,ICE, $FF,10 db BLIZZARD ,FREEZE_SIDE_EFFECT ,$78,ICE, $E5,5 db PSYBEAM ,CONFUSION_SIDE_EFFECT ,$41,PSYCHIC, $FF,20 db BUBBLEBEAM ,SPEED_DOWN_SIDE_EFFECT ,$41,WATER, $FF,20 db AURORA_BEAM ,ATTACK_DOWN_SIDE_EFFECT ,$41,ICE, $FF,20 db HYPER_BEAM ,HYPER_BEAM_EFFECT ,$96,NORMAL, $E5,5 db PECK ,NO_ADDITIONAL_EFFECT ,$23,FLYING, $FF,35 db DRILL_PECK ,NO_ADDITIONAL_EFFECT ,$50,FLYING, $FF,20 db SUBMISSION ,RECOIL_EFFECT ,$50,FIGHTING,$CC,25 db LOW_KICK ,FLINCH_SIDE_EFFECT2 ,$32,FIGHTING,$E5,20 db COUNTER ,NO_ADDITIONAL_EFFECT ,$01,FIGHTING,$FF,20 db SEISMIC_TOSS,SPECIAL_DAMAGE_EFFECT ,$01,FIGHTING,$FF,20 db STRENGTH ,NO_ADDITIONAL_EFFECT ,$50,NORMAL, $FF,15 db ABSORB ,DRAIN_HP_EFFECT ,$14,GRASS, $FF,20 db MEGA_DRAIN ,DRAIN_HP_EFFECT ,$28,GRASS, $FF,10 db LEECH_SEED ,LEECH_SEED_EFFECT ,$00,GRASS, $E5,10 db GROWTH ,SPECIAL_UP1_EFFECT ,$00,NORMAL, $FF,40 db RAZOR_LEAF ,NO_ADDITIONAL_EFFECT ,$37,GRASS, $F2,25 db SOLARBEAM ,CHARGE_EFFECT ,$78,GRASS, $FF,10 db POISONPOWDER,POISON_EFFECT ,$00,POISON, $BF,35 db STUN_SPORE ,PARALYZE_EFFECT ,$00,GRASS, $BF,30 db SLEEP_POWDER,SLEEP_EFFECT ,$00,GRASS, $BF,15 db PETAL_DANCE ,THRASH_PETAL_DANCE_EFFECT ,$46,GRASS, $FF,20 db STRING_SHOT ,SPEED_DOWN1_EFFECT ,$00,BUG, $F2,40 db DRAGON_RAGE ,SPECIAL_DAMAGE_EFFECT ,$01,DRAGON, $FF,10 db FIRE_SPIN ,TRAPPING_EFFECT ,$0F,FIRE, $B2,15 db THUNDERSHOCK,PARALYZE_SIDE_EFFECT1 ,$28,ELECTRIC,$FF,30 db THUNDERBOLT ,PARALYZE_SIDE_EFFECT1 ,$5F,ELECTRIC,$FF,15 db THUNDER_WAVE,PARALYZE_EFFECT ,$00,ELECTRIC,$FF,20 db THUNDER ,PARALYZE_SIDE_EFFECT1 ,$78,ELECTRIC,$B2,10 db ROCK_THROW ,NO_ADDITIONAL_EFFECT ,$32,ROCK, $A5,15 db EARTHQUAKE ,NO_ADDITIONAL_EFFECT ,$64,GROUND, $FF,10 db FISSURE ,OHKO_EFFECT ,$01,GROUND, $4C,5 db DIG ,CHARGE_EFFECT ,$64,GROUND, $FF,10 db TOXIC ,POISON_EFFECT ,$00,POISON, $D8,10 db CONFUSION ,CONFUSION_SIDE_EFFECT ,$32,PSYCHIC, $FF,25 db PSYCHIC_M ,SPECIAL_DOWN_SIDE_EFFECT ,$5A,PSYCHIC, $FF,10 db HYPNOSIS ,SLEEP_EFFECT ,$00,PSYCHIC, $99,20 db MEDITATE ,ATTACK_UP1_EFFECT ,$00,PSYCHIC, $FF,40 db AGILITY ,SPEED_UP2_EFFECT ,$00,PSYCHIC, $FF,30 db QUICK_ATTACK,NO_ADDITIONAL_EFFECT ,$28,NORMAL, $FF,30 db RAGE ,RAGE_EFFECT ,$14,NORMAL, $FF,20 db TELEPORT ,SWITCH_AND_TELEPORT_EFFECT,$00,PSYCHIC, $FF,20 db NIGHT_SHADE ,SPECIAL_DAMAGE_EFFECT ,$00,GHOST, $FF,15 db MIMIC ,MIMIC_EFFECT ,$00,NORMAL, $FF,10 db SCREECH ,DEFENSE_DOWN2_EFFECT ,$00,NORMAL, $D8,40 db DOUBLE_TEAM ,EVASION_UP1_EFFECT ,$00,NORMAL, $FF,15 db RECOVER ,HEAL_EFFECT ,$00,NORMAL, $FF,20 db HARDEN ,DEFENSE_UP1_EFFECT ,$00,NORMAL, $FF,30 db MINIMIZE ,EVASION_UP1_EFFECT ,$00,NORMAL, $FF,20 db SMOKESCREEN ,ACCURACY_DOWN1_EFFECT ,$00,NORMAL, $FF,20 db CONFUSE_RAY ,CONFUSION_EFFECT ,$00,GHOST, $FF,10 db WITHDRAW ,DEFENSE_UP1_EFFECT ,$00,WATER, $FF,40 db DEFENSE_CURL,DEFENSE_UP1_EFFECT ,$00,NORMAL, $FF,40 db BARRIER ,DEFENSE_UP2_EFFECT ,$00,PSYCHIC, $FF,30 db LIGHT_SCREEN,LIGHT_SCREEN_EFFECT ,$00,PSYCHIC, $FF,30 db HAZE ,HAZE_EFFECT ,$00,ICE, $FF,30 db REFLECT ,REFLECT_EFFECT ,$00,PSYCHIC, $FF,20 db FOCUS_ENERGY,FOCUS_ENERGY_EFFECT ,$00,NORMAL, $FF,30 db BIDE ,BIDE_EFFECT ,$00,NORMAL, $FF,10 db METRONOME ,METRONOME_EFFECT ,$00,NORMAL, $FF,10 db MIRROR_MOVE ,MIRROR_MOVE_EFFECT ,$00,FLYING, $FF,20 db SELFDESTRUCT,EXPLODE_EFFECT ,$82,NORMAL, $FF,5 db EGG_BOMB ,NO_ADDITIONAL_EFFECT ,$64,NORMAL, $BF,10 db LICK ,PARALYZE_SIDE_EFFECT2 ,$14,GHOST, $FF,30 db SMOG ,POISON_SIDE_EFFECT2 ,$14,POISON, $B2,20 db SLUDGE ,POISON_SIDE_EFFECT2 ,$41,POISON, $FF,20 db BONE_CLUB ,FLINCH_SIDE_EFFECT1 ,$41,GROUND, $D8,20 db FIRE_BLAST ,BURN_SIDE_EFFECT2 ,$78,FIRE, $D8,5 db WATERFALL ,NO_ADDITIONAL_EFFECT ,$50,WATER, $FF,15 db CLAMP ,TRAPPING_EFFECT ,$23,WATER, $BF,10 db SWIFT ,SWIFT_EFFECT ,$3C,NORMAL, $FF,20 db SKULL_BASH ,CHARGE_EFFECT ,$64,NORMAL, $FF,15 db SPIKE_CANNON,TWO_TO_FIVE_ATTACKS_EFFECT,$14,NORMAL, $FF,15 db CONSTRICT ,SPEED_DOWN_SIDE_EFFECT ,$0A,NORMAL, $FF,35 db AMNESIA ,SPECIAL_UP2_EFFECT ,$00,PSYCHIC, $FF,20 db KINESIS ,ACCURACY_DOWN1_EFFECT ,$00,PSYCHIC, $CC,15 db SOFTBOILED ,HEAL_EFFECT ,$00,NORMAL, $FF,10 db HI_JUMP_KICK,JUMP_KICK_EFFECT ,$55,FIGHTING,$E5,20 db GLARE ,PARALYZE_EFFECT ,$00,NORMAL, $BF,30 db DREAM_EATER ,DREAM_EATER_EFFECT ,$64,PSYCHIC, $FF,15 db POISON_GAS ,POISON_EFFECT ,$00,POISON, $8C,40 db BARRAGE ,TWO_TO_FIVE_ATTACKS_EFFECT,$0F,NORMAL, $D8,20 db LEECH_LIFE ,DRAIN_HP_EFFECT ,$14,BUG, $FF,15 db LOVELY_KISS ,SLEEP_EFFECT ,$00,NORMAL, $BF,10 db SKY_ATTACK ,CHARGE_EFFECT ,$8C,FLYING, $E5,5 db TRANSFORM ,TRANSFORM_EFFECT ,$00,NORMAL, $FF,10 db BUBBLE ,SPEED_DOWN_SIDE_EFFECT ,$14,WATER, $FF,30 db DIZZY_PUNCH ,NO_ADDITIONAL_EFFECT ,$46,NORMAL, $FF,10 db SPORE ,SLEEP_EFFECT ,$00,GRASS, $FF,15 db FLASH ,ACCURACY_DOWN1_EFFECT ,$00,NORMAL, $B2,20 db PSYWAVE ,SPECIAL_DAMAGE_EFFECT ,$01,PSYCHIC, $CC,15 db SPLASH ,SPLASH_EFFECT ,$00,NORMAL, $FF,40 db ACID_ARMOR ,DEFENSE_UP2_EFFECT ,$00,POISON, $FF,40 db CRABHAMMER ,NO_ADDITIONAL_EFFECT ,$5A,WATER, $D8,10 db EXPLOSION ,EXPLODE_EFFECT ,$AA,NORMAL, $FF,5 db FURY_SWIPES ,TWO_TO_FIVE_ATTACKS_EFFECT,$12,NORMAL, $CC,15 db BONEMERANG ,ATTACK_TWICE_EFFECT ,$32,GROUND, $E5,10 db REST ,HEAL_EFFECT ,$00,PSYCHIC, $FF,10 db ROCK_SLIDE ,NO_ADDITIONAL_EFFECT ,$4B,ROCK, $E5,10 db HYPER_FANG ,FLINCH_SIDE_EFFECT1 ,$50,NORMAL, $E5,15 db SHARPEN ,ATTACK_UP1_EFFECT ,$00,NORMAL, $FF,30 db CONVERSION ,CONVERSION_EFFECT ,$00,NORMAL, $FF,30 db TRI_ATTACK ,NO_ADDITIONAL_EFFECT ,$50,NORMAL, $FF,10 db SUPER_FANG ,SUPER_FANG_EFFECT ,$01,NORMAL, $E5,10 db SLASH ,NO_ADDITIONAL_EFFECT ,$46,NORMAL, $FF,20 db SUBSTITUTE ,SUBSTITUTE_EFFECT ,$00,NORMAL, $FF,10 db STRUGGLE ,RECOIL_EFFECT ,$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 CryData: ;$BaseCry, $Pitch, $Length db $11, $00, $80; Rhydon db $03, $00, $80; Kangaskhan db $00, $00, $80; Nidoran♂ db $19, $CC, $01; Clefairy db $10, $00, $80; Spearow db $06, $ED, $80; Voltorb db $09, $00, $80; Nidoking db $1F, $00, $80; Slowbro db $0F, $20, $80; Ivysaur db $0D, $00, $80; Exeggutor db $0C, $00, $80; Lickitung db $0B, $00, $80; Exeggcute db $05, $00, $80; Grimer db $07, $00, $FF; Gengar db $01, $00, $80; Nidoran♀ db $0A, $00, $80; Nidoqueen db $19, $00, $80; Cubone db $04, $00, $80; Rhyhorn db $1B, $00, $80; Lapras db $15, $00, $80; Arcanine db $1E, $EE, $FF; Mew db $17, $00, $80; Gyarados db $18, $00, $80; Shellder db $1A, $00, $80; Tentacool db $1C, $00, $80; Gastly db $16, $00, $80; Scyther db $1E, $02, $20; Staryu db $13, $00, $80; Blastoise db $14, $00, $80; Pinsir db $12, $00, $80; Tangela db $00, $00, $00; MissingNo. db $00, $00, $00; MissingNo. db $1F, $20, $40; Growlithe db $17, $FF, $C0; Onix db $18, $40, $A0; Fearow db $0E, $DF, $04; Pidgey db $02, $00, $80; Slowpoke db $1C, $A8, $C0; Kadabra db $24, $00, $80; Graveler db $14, $0A, $C0; Chansey db $1F, $48, $60; Machoke db $20, $08, $40; Mr.Mime db $12, $80, $C0; Hitmonlee db $0C, $EE, $C0; Hitmonchan db $17, $E0, $10; Arbok db $1E, $42, $FF; Parasect db $21, $20, $60; Psyduck db $0D, $88, $20; Drowzee db $12, $E0, $40; Golem db $00, $00, $00; MissingNo. db $04, $FF, $30; Magmar db $00, $00, $00; MissingNo. db $06, $8F, $FF; Electabuzz db $1C, $20, $C0; Magneton db $12, $E6, $DD; Koffing db $00, $00, $00; MissingNo. db $0A, $DD, $60; Mankey db $0C, $88, $C0; Seel db $0B, $AA, $01; Diglett db $1D, $11, $40; Tauros db $00, $00, $00; MissingNo. db $00, $00, $00; MissingNo. db $00, $00, $00; MissingNo. db $10, $DD, $01; Farfetch'd db $1A, $44, $40; Venonat db $0F, $3C, $C0; Dragonite db $00, $80, $10; MissingNo. db $00, $00, $00; MissingNo. db $1D, $E0, $80; MissingNo. db $0B, $BB, $01; Doduo db $0E, $FF, $FF; Poliwag db $0D, $FF, $FF; Jynx db $09, $F8, $40; Moltres db $09, $80, $40; Articuno db $18, $FF, $80; Zapdos db $0E, $FF, $FF; Ditto db $19, $77, $10; Meowth db $20, $20, $E0; Krabby db $22, $FF, $40; MissingNo. db $00, $00, $00; MissingNo. db $0E, $E0, $60; MissingNo. db $24, $4F, $10; Vulpix db $24, $88, $60; Ninetales db $0F, $EE, $01; Pikachu db $09, $EE, $08; Raichu db $00, $00, $00; MissingNo. db $00, $00, $00; MissingNo. db $0F, $60, $40; Dratini db $0F, $40, $80; Dragonair db $16, $BB, $40; Kabuto db $18, $EE, $01; Kabutops db $19, $99, $10; Horsea db $19, $3C, $01; Seadra db $0F, $40, $C0; MissingNo. db $0F, $20, $C0; MissingNo. db $00, $20, $40; Sandshrew db $00, $FF, $FF; Sandslash db $1F, $F0, $01; Omanyte db $1F, $FF, $40; Omastar db $0E, $FF, $35; Jigglypuff db $0E, $68, $60; Wigglytuff db $1A, $88, $60; Eevee db $1A, $10, $20; Flareon db $1A, $3D, $80; Jolteon db $1A, $AA, $FF; Vaporeon db $1F, $EE, $01; Machop db $1D, $E0, $80; Zubat db $17, $12, $40; Ekans db $1E, $20, $E0; Paras db $0E, $77, $60; Poliwhirl db $0E, $00, $FF; Poliwrath db $15, $EE, $01; Weedle db $13, $FF, $01; Kakuna db $13, $60, $80; Beedrill db $00, $00, $00; MissingNo. db $0B, $99, $20; Dodrio db $0A, $AF, $40; Primeape db $0B, $2A, $10; Dugtrio db $1A, $29, $80; Venomoth db $0C, $23, $FF; Dewgong db $00, $00, $00; MissingNo. db $00, $00, $00; MissingNo. db $16, $80, $20; Caterpie db $1C, $CC, $01; Metapod db $16, $77, $40; Butterfree db $1F, $08, $C0; Machamp db $11, $20, $10; MissingNo. db $21, $FF, $40; Golduck db $0D, $EE, $40; Hypno db $1D, $FA, $80; Golbat db $1E, $99, $FF; Mewtwo db $05, $55, $01; Snorlax db $17, $80, $00; Magikarp db $00, $00, $00; MissingNo. db $00, $00, $00; MissingNo. db $07, $EF, $FF; Muk db $0F, $40, $80; MissingNo. db $20, $EE, $E0; Kingler db $18, $6F, $E0; Cloyster db $00, $00, $00; MissingNo. db $06, $A8, $90; Electrode db $19, $AA, $20; Clefable db $12, $FF, $FF; Weezing db $19, $99, $FF; Persian db $08, $4F, $60; Marowak db $00, $00, $00; MissingNo. db $1C, $30, $40; Haunter db $1C, $C0, $01; Abra db $1C, $98, $FF; Alakazam db $14, $28, $C0; Pidgeotto db $14, $11, $FF; Pidgeot db $1E, $00, $80; Starmie db $0F, $80, $01; Bulbasaur db $0F, $00, $C0; Venusaur db $1A, $EE, $FF; Tentacruel db $00, $00, $00; MissingNo. db $16, $80, $40; Goldeen db $16, $10, $FF; Seaking db $00, $00, $00; MissingNo. db $00, $00, $00; MissingNo. db $00, $00, $00; MissingNo. db $00, $00, $00; MissingNo. db $25, $00, $80; Ponyta db $25, $20, $C0; Rapidash db $22, $00, $80; Rattata db $22, $20, $FF; Raticate db $00, $2C, $C0; Nidorino db $01, $2C, $E0; Nidorina db $24, $F0, $10; Geodude db $25, $AA, $FF; Porygon db $23, $20, $F0; Aerodactyl db $00, $00, $00; MissingNo. db $1C, $80, $60; Magnemite db $00, $00, $00; MissingNo. db $00, $00, $00; MissingNo. db $04, $60, $40; Charmander db $1D, $60, $40; Squirtle db $04, $20, $40; Charmeleon db $1D, $20, $40; Wartortle db $04, $00, $80; Charizard db $1D, $00, $80; MissingNo. db $00, $00, $00; MissingNo. db $00, $00, $00; MissingNo. db $00, $00, $00; MissingNo. db $08, $DD, $01; Oddish db $08, $AA, $40; Gloom db $23, $22, $FF; Vileplume db $21, $55, $01; Bellsprout db $25, $44, $20; Weepinbell db $25, $66, $CC; Victreebel ; known jump sources: 3ed07 (f:6d07) Func_39680: ; 39680 (e:5680) ld a, [H_WHOSETURN] ; $FF00+$f3 and a ld a, [$d060] ld hl, $d026 jr z, .asm_39691 ld a, [$d065] ld hl, $cff7 .asm_39691 ld c, $4 ld b, a .asm_39694 srl b call c, Func_3969f inc hl inc hl dec c ret z jr .asm_39694 ; known jump sources: 39696 (e:5696) Func_3969f: ; 3969f (e:569f) ld a, [hl] add a ld [hld], a ld a, [hl] rl a ld [hli], a ret ; known jump sources: 3ed0f (f:6d0f) Func_396a7: ; 396a7 (e:56a7) ld a, [H_WHOSETURN] ; $FF00+$f3 and a ld a, [$d061] ld hl, $d025 jr z, .asm_396b8 ld a, [$d066] ld hl, $cff6 .asm_396b8 ld c, $4 ld b, a .asm_396bb srl b call c, Func_396c6 inc hl inc hl dec c ret z jr .asm_396bb ; known jump sources: 396bd (e:56bd) Func_396c6: ; 396c6 (e:56c6) ld a, [hl] srl a ld [hli], a rr [hl] or [hl] jr nz, .asm_396d1 ld [hl], $1 .asm_396d1 dec hl ret ; known jump sources: 3ed17 (f:6d17) Func_396d3: ; 396d3 (e:56d3) xor a ld [$cfd8], a ld b, $1 call GoPAL_SET ld hl, Func_3f04b ld b, BANK(Func_3f04b) call Bankswitch ; indirect jump to Func_3f04b (3f04b (f:704b)) ld hl, $c3b3 ld c, $0 .asm_396e9 inc c ld a, c cp $7 ret z ld d, $0 push bc push hl .asm_396f2 call Func_39707 inc hl ld a, $7 add d ld d, a dec c jr nz, .asm_396f2 ld c, $4 call DelayFrames pop hl pop bc dec hl jr .asm_396e9 ; known jump sources: 396f2 (e:56f2) Func_39707: ; 39707 (e:5707) push hl push de push bc ld e, $7 .asm_3970c ld [hl], d ld bc, $14 add hl, bc inc d dec e jr nz, .asm_3970c pop bc pop de pop hl ret ; 39719 (e:5719) ; creates a set of moves that may be used and returns its address in hl ; unused slots are filled with 0, all used slots may be chosen with equal probability AIEnemyTrainerChooseMoves: ; 5719 0x39719 ld a, $a ld hl, $cee9 ; init temporary move selection array. Only the moves with the lowest numbers are chosen in the end ld [hli], a ; move 1 ld [hli], a ; move 2 ld [hli], a ; move 3 ld [hl], a ; move 4 ld a, [W_ENEMYDISABLEDMOVE] ; forbid disabled move (if any) swap a and $f jr z, .noMoveDisabled ld hl, $cee9 dec a ld c, a ld b, $0 add hl, bc ; advance pointer to forbidden move ld [hl], $50 ; forbid (highly discourage) disabled move .noMoveDisabled ld hl, TrainerClassMoveChoiceModifications ; 589B ld a, [W_TRAINERCLASS] ld b, a .loopTrainerClasses dec b jr z, .readTrainerClassData .loopTrainerClassData ld a, [hli] and a jr nz, .loopTrainerClassData jr .loopTrainerClasses .readTrainerClassData ld a, [hl] and a jp z, .useOriginalMoveSet push hl .nextMoveChoiceModification pop hl ld a, [hli] and a jr z, .loopFindMinimumEntries push hl ld hl, AIMoveChoiceModificationFunctionPointers ; $57a3 dec a add a ld c, a ld b, $0 add hl, bc ; skip to pointer ld a, [hli] ; read pointer into hl ld h, [hl] ld l, a ld de, .nextMoveChoiceModification ; set return address push de jp [hl] ; execute modification function .loopFindMinimumEntries ; all entries will be decremented sequentially until one of them is zero ld hl, $cee9 ; temp move selection array ld de, $cfed ; enemy moves ld c, $4 .loopDecrementEntries ld a, [de] inc de and a jr z, .loopFindMinimumEntries dec [hl] jr z, .minimumEntriesFound inc hl dec c jr z, .loopFindMinimumEntries jr .loopDecrementEntries .minimumEntriesFound ld a, c .loopUndoPartialIteration ; undo last (partial) loop iteration inc [hl] dec hl inc a cp $5 jr nz, .loopUndoPartialIteration ld hl, $cee9 ; temp move selection array ld de, $cfed ; enemy moves ld c, $4 .filterMinimalEntries ; all minimal entries now have value 1. All other slots will be disabled (move set to 0) ld a, [de] and a jr nz, .moveExisting ; 0x3978a $1 ld [hl], a .moveExisting ld a, [hl] dec a jr z, .slotWithMinimalValue xor a ld [hli], a ; disable move slot jr .next .slotWithMinimalValue ld a, [de] ld [hli], a ; enable move slot .next inc de dec c jr nz, .filterMinimalEntries ld hl, $cee9 ; use created temporary array as move set ret .useOriginalMoveSet ld hl, $cfed ; use original move set ret AIMoveChoiceModificationFunctionPointers: ; 57a3 dw AIMoveChoiceModification1 dw AIMoveChoiceModification2 dw AIMoveChoiceModification3 dw AIMoveChoiceModification4 ; unused, does nothing ; discourages moves that cause no damage but only a status ailment if player's mon already has one AIMoveChoiceModification1: ; 57ab ld a, [W_PLAYERMONSTATUS] and a ret z ; return if no status ailment on player's mon ld hl, $cee8 ; temp move selection array (-1 byte offest) ld de, $cfed ; enemy moves ld b, $5 .nextMove dec b ret z ; processed all 4 moves inc hl ld a, [de] and a ret z ; no more moves in move set inc de call ReadMove ld a, [W_ENEMYMOVEPOWER] and a jr nz, .nextMove ld a, [W_ENEMYMOVEEFFECT] push hl push de push bc ld hl, StatusAilmentMoveEffects ld de, $0001 call IsInArray pop bc pop de pop hl jr nc, .nextMove ld a, [hl] add $5 ; discourage move ld [hl], a jr .nextMove StatusAilmentMoveEffects ; 57e2 db $01 ; some sleep effect? db SLEEP_EFFECT db POISON_EFFECT db PARALYZE_EFFECT db $FF ; slightly encourage moves with specific effects AIMoveChoiceModification2: ; 57e7 ld a, [$ccd5] cp $1 ret nz ld hl, $cee8 ; temp move selection array (-1 byte offest) ld de, $cfed ; enemy moves ld b, $5 .nextMove dec b ret z ; processed all 4 moves inc hl ld a, [de] and a ret z ; no more moves in move set inc de call ReadMove ld a, [W_ENEMYMOVEEFFECT] cp ATTACK_UP1_EFFECT jr c, .nextMove cp BIDE_EFFECT jr c, .preferMove cp ATTACK_UP2_EFFECT jr c, .nextMove cp POISON_EFFECT jr c, .preferMove jr .nextMove .preferMove dec [hl] ; slighly encourage this move jr .nextMove ; encourages moves that are effective against the player's mon AIMoveChoiceModification3: ; 5817 ld hl, $cee8 ; temp move selection array (-1 byte offest) ld de, $cfed ; enemy moves ld b, $5 .nextMove dec b ret z ; processed all 4 moves inc hl ld a, [de] and a ret z ; no more moves in move set inc de call ReadMove push hl push bc push de ld hl, AIGetTypeEffectiveness ld b, BANK(AIGetTypeEffectiveness) call Bankswitch pop de pop bc pop hl ld a, [$d11e] cp $10 jr z, .nextMove jr c, .notEffectiveMove dec [hl] ; slighly encourage this move jr .nextMove .notEffectiveMove ; discourages non-effective moves if better moves are available push hl push de push bc ld a, [W_ENEMYMOVETYPE] ld d, a ld hl, $cfed ; enemy moves ld b, $5 ld c, $0 .loopMoves dec b jr z, .done ld a, [hli] and a jr z, .done call ReadMove ld a, [W_ENEMYMOVEEFFECT] cp SUPER_FANG_EFFECT jr z, .betterMoveFound ; Super Fang is considered to be a better move cp SPECIAL_DAMAGE_EFFECT jr z, .betterMoveFound ; any special damage moves are considered to be better moves cp FLY_EFFECT jr z, .betterMoveFound ; Fly is considered to be a better move ld a, [W_ENEMYMOVETYPE] cp d jr z, .loopMoves ld a, [W_ENEMYMOVEPOWER] and a jr nz, .betterMoveFound ; damaging moves of a different type are considered to be better moves jr .loopMoves .betterMoveFound ld c, a .done ld a, c pop bc pop de pop hl and a jr z, .nextMove inc [hl] ; slighly discourage this move jr .nextMove AIMoveChoiceModification4: ; 5883 ret 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 ; move choice modifiaction methods that are applied for each trainer class ; 0 is sentinel value TrainerClassMoveChoiceModifications: ; 589B db 0 ; YOUNGSTER db 1,0 ; BUG CATCHER db 1,0 ; LASS db 1,3,0 ; SAILOR db 1,0 ; JR__TRAINER_M db 1,0 ; JR__TRAINER_F db 1,2,3,0; POKEMANIAC db 1,2,0 ; SUPER_NERD db 1,0 ; HIKER db 1,0 ; BIKER db 1,3,0 ; BURGLAR db 1,0 ; ENGINEER db 1,2,0 ; JUGGLER_X db 1,3,0 ; FISHER db 1,3,0 ; SWIMMER db 0 ; CUE_BALL db 1,0 ; GAMBLER db 1,3,0 ; BEAUTY db 1,2,0 ; PSYCHIC_TR db 1,3,0 ; ROCKER db 1,0 ; JUGGLER db 1,0 ; TAMER db 1,0 ; BIRD_KEEPER db 1,0 ; BLACKBELT db 1,0 ; SONY1 db 1,3,0 ; PROF_OAK db 1,2,0 ; CHIEF db 1,2,0 ; SCIENTIST db 1,3,0 ; GIOVANNI db 1,0 ; ROCKET db 1,3,0 ; COOLTRAINER_M db 1,3,0 ; COOLTRAINER_F db 1,0 ; BRUNO db 1,0 ; BROCK db 1,3,0 ; MISTY db 1,3,0 ; LT__SURGE db 1,3,0 ; ERIKA db 1,3,0 ; KOGA db 1,3,0 ; BLAINE db 1,3,0 ; SABRINA db 1,2,0 ; GENTLEMAN db 1,3,0 ; SONY2 db 1,3,0 ; SONY3 db 1,2,3,0; LORELEI db 1,0 ; CHANNELER db 1,0 ; AGATHA db 1,3,0 ; LANCE ; trainer data: from 5C53 to 652E ; INCBIN "baserom.gbc",$3989e,$39914 - $3989e ; 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@" ; known jump sources: 6f35 (1:6f35), 12b79 (4:6b79), 3d232 (f:5232) Func_39b87: ; 39b87 (e:5b87) ld hl, $d0dc ld de, $d0e1 ld b, $0 .asm_39b8f ld a, [hli] and a jr z, .asm_39bc1 push hl ld [$d0b5], a ld a, $2c ld [$d0b7], a ld a, $2 ld [$d0b6], a call GetName ld hl, $cd6d .asm_39ba7 ld a, [hli] cp $50 jr z, .asm_39bb0 ld [de], a inc de jr .asm_39ba7 .asm_39bb0 ld a, b ld [$cd6c], a inc b ld a, $4e ld [de], a inc de pop hl ld a, b cp $4 jr z, .asm_39bd1 jr .asm_39b8f .asm_39bc1 ld a, $e3 ld [de], a inc de inc b ld a, b cp $4 jr z, .asm_39bd1 ld a, $4e ld [de], a inc de jr .asm_39bc1 .asm_39bd1 ld a, $50 ld [de], a ret ; known jump sources: 6c76 (1:6c76), 6d2d (1:6d2d) Func_39bd5: ; 39bd5 (e:5bd5) ld a, [$d11b] cp $1 jr nz, .asm_39be6 ld hl, W_ENEMYMONCOUNT ; $d89c ld de, $d9ac ld a, $6 jr .asm_39c18 .asm_39be6 cp $4 jr nz, .asm_39bf4 ld hl, W_NUMINPARTY ; $d163 ld de, W_PARTYMON1OT ; $d273 ld a, $5 jr .asm_39c18 .asm_39bf4 cp $5 jr nz, .asm_39c02 ld hl, $cf7b ld de, $421e ld a, $1 jr .asm_39c18 .asm_39c02 cp $2 jr nz, .asm_39c10 ld hl, W_NUMBAGITEMS ; $d31d ld de, $472b ld a, $4 jr .asm_39c18 .asm_39c10 ld hl, $cf7b ld de, $472b ld a, $4 .asm_39c18 ld [$d0b6], a ld a, l ld [$cf8b], a ld a, h ld [$cf8c], a ld a, e ld [$cf8d], a ld a, d ld [$cf8e], a ld bc, $4608 ld a, c ld [$cf8f], a ld a, b ld [$cf90], a ret ; known jump sources: 45cc (1:45cc) Func_39c37: ; 39c37 (e:5c37) ld hl, W_PARTYMON1 ; $d164 ld a, [$cc49] and a jr z, .asm_39c4b dec a jr z, .asm_39c48 ld hl, $da81 jr .asm_39c4b .asm_39c48 ld hl, $d89d .asm_39c4b ld d, $0 add hl, de ld a, [hl] ld [$cf91], a ret ; 39c53 (e:5c53) 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 if _YELLOW ; different format from above. ; entry ≔ trainerclass, trainerid, moveset+, 0 ; moveset ≔ partymon, partymon'smove, moveid db BUG_CATCHER,$f db 2,2,TACKLE db 2,3,STRING_SHOT db 0 db YOUNGSTER,$e db 1,4,FISSURE db 0 db BROCK,$1 db 2,3,BIND db 2,4,BIDE db 0 db MISTY,$1 db 2,4,BUBBLEBEAM db 0 db LT__SURGE,$1 db 1,1,THUNDERBOLT db 1,2,MEGA_PUNCH db 1,3,MEGA_KICK db 1,4,GROWL db 0 db ERIKA,$1 db 1,3,MEGA_DRAIN db 2,1,RAZOR_LEAF db 3,1,PETAL_DANCE db 0 db KOGA,$1 db 1,1,TOXIC db 1,2,TACKLE db 2,1,TOXIC db 2,3,SUPERSONIC db 3,1,TOXIC db 3,2,DOUBLE_EDGE db 4,1,LEECH_LIFE db 4,2,DOUBLE_TEAM db 4,3,PSYCHIC_M db 4,4,TOXIC db 0 db BLAINE,$1 db 1,1,FLAMETHROWER db 1,4,CONFUSE_RAY db 3,1,FLAMETHROWER db 3,2,FIRE_BLAST db 3,3,REFLECT db 0 db SABRINA,$1 db 1,1,FLASH db 2,1,KINESIS db 2,4,PSYWAVE db 3,1,PSYWAVE db 0 db GIOVANNI,$3 db 1,3,FISSURE db 2,2,DOUBLE_TEAM db 3,1,EARTHQUAKE db 3,3,THUNDER db 4,1,EARTHQUAKE db 4,2,LEER db 4,3,THUNDER db 5,1,ROCK_SLIDE db 5,4,EARTHQUAKE db 0 db LORELEI,$1 db 1,1,BUBBLEBEAM db 2,3,ICE_BEAM db 3,1,PSYCHIC_M db 3,2,SURF db 4,3,LOVELY_KISS db 5,3,BLIZZARD db 0 db BRUNO,$1 db 1,1,ROCK_SLIDE db 1,2,SCREECH db 1,4,DIG db 2,3,FIRE_PUNCH db 2,4,DOUBLE_TEAM db 3,1,DOUBLE_KICK db 3,2,MEGA_KICK db 3,4,DOUBLE_TEAM db 4,1,ROCK_SLIDE db 4,2,SCREECH db 4,4,EARTHQUAKE db 5,2,KARATE_CHOP db 5,3,STRENGTH db 0 db AGATHA,$1 db 1,2,SUBSTITUTE db 1,3,LICK db 1,4,MEGA_DRAIN db 2,2,TOXIC db 2,4,LEECH_LIFE db 3,2,LICK db 4,1,WRAP db 5,2,PSYCHIC_M db 0 db LANCE,$1 db 1,1,DRAGON_RAGE db 2,1,THUNDER_WAVE db 2,3,THUNDERBOLT db 3,1,BUBBLEBEAM db 3,2,WRAP db 3,3,ICE_BEAM db 4,1,WING_ATTACK db 4,2,SWIFT db 4,3,FLY db 5,1,BLIZZARD db 5,2,FIRE_BLAST db 5,3,THUNDER db 0 db SONY3,$1 db 1,3,EARTHQUAKE db 2,4,KINESIS db 3,4,LEECH_SEED db 4,1,ICE_BEAM db 5,1,CONFUSE_RAY db 5,4,FIRE_SPIN db 6,3,QUICK_ATTACK db 0 db SONY3,$2 db 1,3,EARTHQUAKE db 2,4,KINESIS db 3,4,LEECH_SEED db 4,1,THUNDERBOLT db 5,1,ICE_BEAM db 6,2,REFLECT db 6,3,QUICK_ATTACK db 0 db SONY3,$3 db 1,3,EARTHQUAKE db 2,4,KINESIS db 3,4,LEECH_SEED db 4,1,CONFUSE_RAY db 4,4,FIRE_SPIN db 5,1,THUNDERBOLT db 6,1,AURORA_BEAM db 6,3,QUICK_ATTACK db 0 db $ff endc 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 if _YELLOW db 24,SANDSHREW,0 endc BugCatcherData: if _YELLOW db 7,CATERPIE,CATERPIE,0 db 6,METAPOD,CATERPIE,METAPOD,0 db 10,CATERPIE,0 else db 6,WEEDLE,CATERPIE,0 db 7,WEEDLE,KAKUNA,WEEDLE,0 db 9,WEEDLE,0 endc 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 if _YELLOW db 8,CATERPIE,METAPOD,0 endc 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 if _YELLOW db 20,JIGGLYPUFF,0 else db 18,RATTATA,PIKACHU,0 endc db 23,NIDORAN_F,NIDORINA,0 db 24,MEOWTH,MEOWTH,MEOWTH,0 if _YELLOW db 19,PIDGEY,RATTATA,NIDORAN_F,MEOWTH,NIDORAN_M,0 else db 19,PIDGEY,RATTATA,NIDORAN_M,MEOWTH,PIKACHU,0 endc db 22,CLEFAIRY,CLEFAIRY,0 db 23,BELLSPROUT,WEEPINBELL,0 db 23,ODDISH,GLOOM,0 if _YELLOW db 6,NIDORAN_F,NIDORAN_M,0 endc 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 if _YELLOW db 24,MAGNEMITE,0 else db 21,PIKACHU,PIKACHU,0 endc JrTrainerMData: if _YELLOW db 9,DIGLETT,SANDSHREW,0 else db 11,DIGLETT,SANDSHREW,0 endc 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 if _YELLOW db 16,WEEPINBELL,0 endc JrTrainerFData: db 19,GOLDEEN,0 if _YELLOW db 16,ODDISH,BELLSPROUT,0 else db 16,RATTATA,PIKACHU,0 endc db 16,PIDGEY,PIDGEY,PIDGEY,0 db 22,BULBASAUR,0 db 18,ODDISH,BELLSPROUT,ODDISH,BELLSPROUT,0 db 23,MEOWTH,0 if _YELLOW db 20,JIGGLYPUFF,CLEFAIRY,0 else db 20,PIKACHU,CLEFAIRY,0 endc db 21,PIDGEY,PIDGEOTTO,0 db 21,JIGGLYPUFF,PIDGEY,MEOWTH,0 db 22,ODDISH,BULBASAUR,0 db 24,BULBASAUR,IVYSAUR,0 if _YELLOW db 24,PIDGEY,MEOWTH,RATTATA,PIDGEY,MEOWTH,0 else db 24,PIDGEY,MEOWTH,RATTATA,PIKACHU,MEOWTH,0 endc 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 if _YELLOW db 29,PIDGEY,PIDGEOTTO,0 else db 29,PIKACHU,RAICHU,0 endc db 33,CLEFAIRY,0 db 29,BELLSPROUT,ODDISH,TANGELA,0 db 30,TENTACOOL,HORSEA,SEEL,0 if _YELLOW db 20,CUBONE,0 endc 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 if _YELLOW db 27,RATTATA,VULPIX,RATTATA,0 else db 27,RATTATA,PIKACHU,RATTATA,0 endc 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: if _YELLOW db 20,VOLTORB,VOLTORB,VOLTORB,0 else db 20,VOLTORB,MAGNEMITE,VOLTORB,0 endc 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: if _YELLOW db 5,EEVEE,0 db $FF,9,SPEAROW,8,EEVEE,0 db $FF,18,SPEAROW,15,SANDSHREW,15,RATTATA,17,EEVEE,0 else 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 endc 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: if _YELLOW db $FF,25,ONIX,24,RHYHORN,29,PERSIAN,0 db $FF,37,NIDORINO,35,PERSIAN,37,RHYHORN,41,NIDOQUEEN,0 db $FF,50,DUGTRIO,53,PERSIAN,53,NIDOQUEEN,55,NIDOKING,55,RHYDON,0 else 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 endc 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 if _YELLOW JessieJamesData: db 14,EKANS,MEOWTH,KOFFING,0 db 25,KOFFING,MEOWTH,EKANS,0 db 27,MEOWTH,ARBOK,WEEZING,0 db 31,WEEZING,ARBOK,MEOWTH,0 db 16,KOFFING,0 db 27,KOFFING,0 db 29,WEEZING,0 db 33,WEEZING,0 endc 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: if _YELLOW db $FF,10,GEODUDE,12,ONIX,0 else db $FF,12,GEODUDE,14,ONIX,0 endc MistyData: db $FF,18,STARYU,21,STARMIE,0 LtSurgeData: if _YELLOW db $FF,28,RAICHU,0 else db $FF,21,VOLTORB,18,PIKACHU,24,RAICHU,0 endc ErikaData: if _YELLOW db $FF,30,TANGELA,32,WEEPINBELL,32,GLOOM,0 else db $FF,29,VICTREEBEL,24,TANGELA,29,VILEPLUME,0 endc KogaData: if _YELLOW db $FF,44,VENONAT,46,VENONAT,48,VENONAT,50,VENOMOTH,0 else db $FF,37,KOFFING,39,MUK,37,KOFFING,43,WEEZING,0 endc BlaineData: if _YELLOW db $FF,48,NINETALES,50,RAPIDASH,54,ARCANINE,0 else db $FF,42,GROWLITHE,40,PONYTA,42,RAPIDASH,47,ARCANINE,0 endc SabrinaData: if _YELLOW db $FF,50,ABRA,50,KADABRA,50,ALAKAZAM,0 else db $FF,38,KADABRA,37,MR_MIME,38,VENOMOTH,43,ALAKAZAM,0 endc GentlemanData: db 18,GROWLITHE,GROWLITHE,0 db 19,NIDORAN_M,NIDORAN_F,0 if _YELLOW db 22,VOLTORB,MAGNEMITE,0 else db 23,PIKACHU,0 endc db 48,PRIMEAPE,0 db 17,GROWLITHE,PONYTA,0 Green2Data: if _YELLOW db $FF,19,SPEAROW,16,RATTATA,18,SANDSHREW,20,EEVEE,0 db $FF,25,FEAROW,23,SHELLDER,22,VULPIX,20,SANDSHREW,25,EEVEE,0 db $FF,25,FEAROW,23,MAGNEMITE,22,SHELLDER,20,SANDSHREW,25,EEVEE,0 db $FF,25,FEAROW,23,VULPIX,22,MAGNEMITE,20,SANDSHREW,25,EEVEE,0 db $FF,38,SANDSLASH,35,NINETALES,37,CLOYSTER,35,KADABRA,40,JOLTEON,0 db $FF,38,SANDSLASH,35,CLOYSTER,37,MAGNETON,35,KADABRA,40,FLAREON,0 db $FF,38,SANDSLASH,35,MAGNETON,37,NINETALES,35,KADABRA,40,VAPOREON,0 db $FF,47,SANDSLASH,45,EXEGGCUTE,45,NINETALES,47,CLOYSTER,50,KADABRA,53,JOLTEON,0 db $FF,47,SANDSLASH,45,EXEGGCUTE,45,CLOYSTER,47,MAGNETON,50,KADABRA,53,FLAREON,0 db $FF,47,SANDSLASH,45,EXEGGCUTE,45,MAGNETON,47,NINETALES,50,KADABRA,53,VAPOREON,0 else 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 endc Green3Data: if _YELLOW db $FF,61,SANDSLASH,59,ALAKAZAM,61,EXEGGUTOR,61,CLOYSTER,63,NINETALES,65,JOLTEON,0 db $FF,61,SANDSLASH,59,ALAKAZAM,61,EXEGGUTOR,61,MAGNETON,63,CLOYSTER,65,FLAREON,0 db $FF,61,SANDSLASH,59,ALAKAZAM,61,EXEGGUTOR,61,NINETALES,63,MAGNETON,65,VAPOREON,0 else 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 endc 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 "@" ; known jump sources: 58dcf (16:4dcf) Func_3a849: ; 3a849 (e:6849) call Func_3a85d call Func_3a869 ld a, [W_ISINBATTLE] ; $d057 dec a ret z jp Func_3a887 ; known jump sources: 3c671 (f:4671) Func_3a857: ; 3a857 (e:6857) call Func_3a85d jp Func_3a887 ; known jump sources: 3a849 (e:6849), 3a857 (e:6857), 3a948 (e:6948) Func_3a85d: ; 3a85d (e:685d) ld de, $697e ld hl, $8310 ld bc, $e04 jp CopyVideoData ; known jump sources: 3a84c (e:684c) Func_3a869: ; 3a869 (e:6869) call Func_3a902 ld hl, W_PARTYMON1_NUM ; $d16b (aliases: W_PARTYMON1DATA) ld de, W_NUMINPARTY ; $d163 call Func_3a8a6 ld a, $60 ld hl, W_BASECOORDX ; $d081 ld [hli], a ld [hl], a ld a, $8 ld [$cd3e], a ld hl, $c300 jp Func_3a8e1 ; known jump sources: 3a854 (e:6854), 3a85a (e:685a) Func_3a887: ; 3a887 (e:6887) call Func_3a919 ld hl, W_WATERRATE ; $d8a4 ld de, W_ENEMYMONCOUNT ; $d89c call Func_3a8a6 ld hl, W_BASECOORDX ; $d081 ld a, $48 ld [hli], a ld [hl], $20 ld a, $f8 ld [$cd3e], a ld hl, $c318 jp Func_3a8e1 ; known jump sources: 3a872 (e:6872), 3a890 (e:6890), 3a951 (e:6951), 3a96d (e:696d) Func_3a8a6: ; 3a8a6 (e:68a6) ld a, [de] push af ld de, $cee9 ld c, $6 ld a, $34 .asm_3a8af ld [de], a inc de dec c jr nz, .asm_3a8af pop af ld de, $cee9 .asm_3a8b8 push af call Func_3a8c2 inc de pop af dec a jr nz, .asm_3a8b8 ret ; known jump sources: 3a8b9 (e:68b9) Func_3a8c2: ; 3a8c2 (e:68c2) inc hl ld a, [hli] and a jr nz, .asm_3a8cd ld a, [hl] and a ld b, $33 jr z, .asm_3a8d8 .asm_3a8cd inc hl inc hl ld a, [hl] and a ld b, $32 jr nz, .asm_3a8da dec b jr .asm_3a8da .asm_3a8d8 inc hl inc hl .asm_3a8da ld a, b ld [de], a ld bc, $28 add hl, bc ret ; known jump sources: 3a884 (e:6884), 3a8a3 (e:68a3), 3a964 (e:6964), 3a97b (e:697b) Func_3a8e1: ; 3a8e1 (e:68e1) ld de, $cee9 ld c, $6 .asm_3a8e6 ld a, [W_BASECOORDY] ; $d082 ld [hli], a ld a, [W_BASECOORDX] ; $d081 ld [hli], a ld a, [de] ld [hli], a xor a ld [hli], a ld a, [W_BASECOORDX] ; $d081 ld b, a ld a, [$cd3e] add b ld [W_BASECOORDX], a ; $d081 inc de dec c jr nz, .asm_3a8e6 ret ; known jump sources: 3a869 (e:6869), 3cd71 (f:4d71) Func_3a902: ; 3a902 (e:6902) ld hl, $6916 ld de, $cd3f ld bc, $3 call CopyData ld hl, $c47a ld de, rIE ; $ffff jr asm_3a930 INCBIN "baserom.gbc",$3a916,$3a919 - $3a916 ; known jump sources: 3a887 (e:6887), 3cdfd (f:4dfd) Func_3a919: ; 3a919 (e:6919) ld hl, $692d ld de, $cd3f ld bc, $3 call CopyData ld hl, $c3c9 ld de, $1 jr asm_3a930 INCBIN "baserom.gbc",$3a92d,$3a930 - $3a92d asm_3a930: ; 3a930 (e:6930) ld [hl], $73 ld bc, $14 add hl, bc ld a, [$cd40] ld [hl], a ld a, $8 .asm_3a93c add hl, de ld [hl], $76 dec a jr nz, .asm_3a93c add hl, de ld a, [$cd41] ld [hl], a ret ; known jump sources: 37306 (d:7306) Func_3a948: ; 3a948 (e:6948) call Func_3a85d ld hl, W_PARTYMON1_NUM ; $d16b (aliases: W_PARTYMON1DATA) ld de, W_NUMINPARTY ; $d163 call Func_3a8a6 ld hl, W_BASECOORDX ; $d081 ld a, $50 ld [hli], a ld [hl], $40 ld a, $8 ld [$cd3e], a ld hl, $c300 call Func_3a8e1 ld hl, W_WATERRATE ; $d8a4 ld de, W_ENEMYMONCOUNT ; $d89c call Func_3a8a6 ld hl, W_BASECOORDX ; $d081 ld a, $50 ld [hli], a ld [hl], $68 ld hl, $c318 jp Func_3a8e1 INCBIN "baserom.gbc",$3a97e,$3ad0e - $3a97e ; known jump sources: df11 (3:5f11), 17da3 (5:7da3) Func_3ad0e: ; 3ad0e (e:6d0e) ld hl, $ccd3 xor a ld [hl], a ld a, [W_WHICHPOKEMON] ; $cf92 ld c, a ld b, $1 call Func_3b057 ; known jump sources: 13810 (4:7810) Func_3ad1c: ; 3ad1c (e:6d1c) ld a, [$FF00+$d7] push af xor a ld [$d121], a dec a ld [W_WHICHPOKEMON], a ; $cf92 push hl push bc push de ld hl, W_NUMINPARTY ; $d163 push hl asm_3ad2e: ; 3ad2e (e:6d2e) ld hl, W_WHICHPOKEMON ; $cf92 inc [hl] pop hl inc hl ld a, [hl] cp $ff jp z, Func_3aede ld [$cee9], a push hl ld a, [W_WHICHPOKEMON] ; $cf92 ld c, a ld hl, $ccd3 ld b, $2 call Func_3b057 ld a, c and a jp z, asm_3ad2e ld a, [$cee9] dec a ld b, $0 ld hl, $705c add a rl b ld c, a add hl, bc ld a, [hli] ld h, [hl] ld l, a push hl ld a, [$cf91] push af xor a ld [$cc49], a call LoadMonData pop af ld [$cf91], a pop hl ; known jump sources: 3aedb (e:6edb) Func_3ad71: ; 3ad71 (e:6d71) ld a, [hli] and a jr z, asm_3ad2e ld b, a cp $3 jr z, .asm_3ad91 ld a, [W_ISLINKBATTLE] ; $d12b cp $32 jr z, asm_3ad2e ld a, b cp $2 jr z, .asm_3ada4 ld a, [$ccd4] and a jr nz, asm_3ad2e ld a, b cp $1 jr z, .asm_3adad .asm_3ad91 ld a, [W_ISLINKBATTLE] ; $d12b cp $32 jp nz, Func_3aed9 ld a, [hli] ld b, a ld a, [$cfb9] cp b jp c, asm_3ad2e jr .asm_3adb6 .asm_3ada4 ld a, [hli] ld b, a ld a, [$cf91] cp b jp nz, Func_3aed9 .asm_3adad ld a, [hli] ld b, a ld a, [$cfb9] cp b jp c, Func_3aeda .asm_3adb6 ld [W_CURENEMYLVL], a ; $d127 ld a, $1 ld [$d121], a push hl ld a, [hl] ld [$ceea], a ld a, [W_WHICHPOKEMON] ; $cf92 ld hl, W_PARTYMON1NAME ; $d2b5 call GetPartyMonName call Func_3826 ld hl, $6f4d call PrintText ld c, $32 call DelayFrames xor a ld [H_AUTOBGTRANSFERENABLED], a ; $FF00+$ba ld hl, $c3a0 ld bc, $c14 call ClearScreenArea ld a, $1 ld [H_AUTOBGTRANSFERENABLED], a ; $FF00+$ba ld a, $ff ld [$cfcb], a call CleanLCD_OAM ld hl, Func_7bde9 ld b, BANK(Func_7bde9) call Bankswitch ; indirect jump to Func_7bde9 (7bde9 (1e:7de9)) jp c, Func_3af2e ld hl, $6f3e call PrintText pop hl ld a, [hl] ld [$d0b5], a ld [$cf98], a ld [$ceea], a ld a, $1 ld [$d0b6], a ld a, $e ld [$d0b7], a call GetName push hl ld hl, $6f43 call Func_3c59 ld a, $89 call Func_3740 call Func_3748 ld c, $28 call DelayFrames call ClearScreen call Func_3aef7 ld a, [$d11e] push af ld a, [$d0b5] ld [$d11e], a ld a, $3a call Predef ; indirect jump to IndexToPokedex (41010 (10:5010)) ld a, [$d11e] dec a ld hl, $43de ld bc, $1c call AddNTimes ld de, $d0b8 call CopyData ld a, [$d0b5] ld [$d0b8], a pop af ld [$d11e], a ld hl, $cfa8 ld de, $cfba ld b, $1 call Func_3936 ld a, [W_WHICHPOKEMON] ; $cf92 ld hl, W_PARTYMON1_NUM ; $d16b (aliases: W_PARTYMON1DATA) ld bc, $2c call AddNTimes ld e, l ld d, h push hl push bc ld bc, $22 add hl, bc ld a, [hli] ld b, a ld c, [hl] ld hl, $cfbb ld a, [hld] sub c ld c, a ld a, [hl] sbc b ld b, a ld hl, $cf9a ld a, [hl] add c ld [hld], a ld a, [hl] adc b ld [hl], a dec hl pop bc call CopyData ld a, [$d0b5] ld [$d11e], a xor a ld [$cc49], a call Func_3af5b pop hl ld a, $42 call Predef ; indirect jump to Func_5db5e (5db5e (17:5b5e)) ld a, [W_ISINBATTLE] ; $d057 and a call z, Func_3af52 ld a, $3a call Predef ; indirect jump to IndexToPokedex (41010 (10:5010)) ld a, [$d11e] dec a ld c, a ld b, $1 ld hl, W_OWNEDPOKEMON ; $d2f7 push bc call Func_3b057 pop bc ld hl, W_SEENPOKEMON ; $d30a call Func_3b057 pop de pop hl ld a, [$cf98] ld [hl], a push hl ld l, e ld h, d jr Func_3aeda ; known jump sources: 3ad96 (e:6d96), 3adaa (e:6daa) Func_3aed9: ; 3aed9 (e:6ed9) inc hl ; known jump sources: 3adb3 (e:6db3), 3aed7 (e:6ed7) Func_3aeda: ; 3aeda (e:6eda) inc hl jp Func_3ad71 ; known jump sources: 3ad37 (e:6d37) Func_3aede: ; 3aede (e:6ede) pop de pop bc pop hl pop af ld [$FF00+$d7], a ld a, [W_ISLINKBATTLE] ; $d12b cp $32 ret z ld a, [W_ISINBATTLE] ; $d057 and a ret nz ld a, [$d121] and a call nz, Func_2307 ret ; known jump sources: 3ae32 (e:6e32) Func_3aef7: ; 3aef7 (e:6ef7) ld a, [$d0b5] push af ld a, [$d0b8] ld [$d0b5], a call GetName pop af ld [$d0b5], a ld hl, $cd6d ld de, $cf4b .asm_3af0e ld a, [de] inc de cp [hl] inc hl ret nz cp $50 jr nz, .asm_3af0e ld a, [W_WHICHPOKEMON] ; $cf92 ld bc, $b ld hl, W_PARTYMON1NAME ; $d2b5 call AddNTimes push hl call GetName ld hl, $cd6d pop de jp CopyData ; known jump sources: 3adfa (e:6dfa) Func_3af2e: ; 3af2e (e:6f2e) ld hl, $6f48 call PrintText call ClearScreen pop hl call Func_3af52 jp asm_3ad2e ; 3af3e (e:6f3e) 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 ; known jump sources: 3aeb1 (e:6eb1), 3af38 (e:6f38) Func_3af52: ; 3af52 (e:6f52) ld a, [W_ISLINKBATTLE] ; $d12b cp $32 ret z jp ReloadTilesetTilePatterns ; known jump sources: df05 (3:5f05), 3aea4 (e:6ea4), 55420 (15:5420) Func_3af5b: ; 3af5b (e:6f5b) ld hl, $705c ld a, [$d11e] ld [$cf91], a dec a ld bc, $0 ld hl, $705c add a rl b ld c, a add hl, bc ld a, [hli] ld h, [hl] ld l, a .asm_3af73 ld a, [hli] and a jr nz, .asm_3af73 .asm_3af77 ld a, [hli] and a jr z, .asm_3afb1 ld b, a ld a, [W_CURENEMYLVL] ; $d127 cp b ld a, [hli] jr nz, .asm_3af77 ld d, a ld a, [$cc49] and a jr nz, .asm_3af96 ld hl, W_PARTYMON1_MOVE1 ; $d173 ld a, [W_WHICHPOKEMON] ; $cf92 ld bc, $2c call AddNTimes .asm_3af96 ld b, $4 .asm_3af98 ld a, [hli] cp d jr z, .asm_3afb1 dec b jr nz, .asm_3af98 ld a, d ld [$d0e0], a ld [$d11e], a call GetMoveName call Func_3826 ld a, $1b call Predef ; indirect jump to Func_6e43 (6e43 (1:6e43)) .asm_3afb1 ld a, [$cf91] ld [$d11e], a ret ; known jump sources: f419 (3:7419), 3ebc7 (f:6bc7) Func_3afb8: ; 3afb8 (e:6fb8) call Load16BitRegisters push hl push de push bc ld hl, $705c ld b, $0 ld a, [$cf91] dec a add a rl b ld c, a add hl, bc ld a, [hli] ld h, [hl] ld l, a .asm_3afcf ld a, [hli] and a jr nz, .asm_3afcf jr .asm_3afd7 .asm_3afd5 pop de .asm_3afd6 inc hl .asm_3afd7 ld a, [hli] and a jp z, Func_3b04a ld b, a ld a, [W_CURENEMYLVL] ; $d127 cp b jp c, Func_3b04a ld a, [$cee9] and a jr z, .asm_3aff0 ld a, [W_WHICHTRADE] ; $cd3d cp b jr nc, .asm_3afd6 .asm_3aff0 push de ld c, $4 .asm_3aff3 ld a, [de] inc de cp [hl] jr z, .asm_3afd5 dec c jr nz, .asm_3aff3 pop de push de ld c, $4 .asm_3afff ld a, [de] and a jr z, .asm_3b021 inc de dec c jr nz, .asm_3afff pop de push de push hl ld h, d ld l, e call Func_3b04e ld a, [$cee9] and a jr z, .asm_3b020 push de ld bc, $12 add hl, bc ld d, h ld e, l call Func_3b04e pop de .asm_3b020 pop hl .asm_3b021 ld a, [hl] ld [de], a ld a, [$cee9] and a jr z, .asm_3afd5 push hl ld a, [hl] ld hl, $15 add hl, de push hl dec a ld hl, $4000 ld bc, $6 call AddNTimes ld de, $cee9 ld a, $e call FarCopyData ld a, [$ceee] pop hl ld [hl], a pop hl jr .asm_3afd5 ; known jump sources: 3afd9 (e:6fd9), 3afe1 (e:6fe1) Func_3b04a: ; 3b04a (e:704a) pop bc pop de pop hl ret ; known jump sources: 3b00c (e:700c), 3b01c (e:701c) Func_3b04e: ; 3b04e (e:704e) ld c, $3 .asm_3b050 inc de ld a, [de] ld [hli], a dec c jr nz, .asm_3b050 ret ; known jump sources: 3ad19 (e:6d19), 3ad47 (e:6d47), 3aec4 (e:6ec4), 3aecb (e:6ecb) Func_3b057: ; 3b057 (e:7057) ld a, $10 jp Predef ; indirect jump to Func_f666 (f666 (3:7666)) ; 3b05c (e:705c) 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 ; known jump sources: 3fb2b (f:7b2b) Func_3b9ec: ; 3b9ec (e:79ec) ld a, [H_WHOSETURN] ; $FF00+$f3 and a ld de, W_PLAYERMONCURHP ; $d015 ld hl, W_PLAYERMONMAXHP ; $d023 ld a, [W_PLAYERMOVENUM] ; $cfd2 jr z, .asm_3ba03 ld de, W_ENEMYMONCURHP ; $cfe6 ld hl, W_ENEMYMONMAXHP ; $cff4 ld a, [W_ENEMYMOVENUM] ; $cfcc .asm_3ba03 ld b, a ld a, [de] cp [hl] inc de inc hl ld a, [de] sbc [hl] jp z, Func_3ba97 ld a, b cp $9c jr nz, .asm_3ba37 push hl push de push af ld c, $32 call DelayFrames ld hl, W_PLAYERMONSTATUS ; $d018 ld a, [H_WHOSETURN] ; $FF00+$f3 and a jr z, .asm_3ba25 ld hl, W_ENEMYMONSTATUS ; $cfe9 .asm_3ba25 ld a, [hl] and a ld [hl], $2 ld hl, $7aa2 jr z, .asm_3ba31 ld hl, $7aa7 .asm_3ba31 call PrintText pop af pop de pop hl .asm_3ba37 ld a, [hld] ld [$cee9], a ld c, a ld a, [hl] ld [$ceea], a ld b, a jr z, .asm_3ba47 srl b rr c .asm_3ba47 ld a, [de] ld [$ceeb], a add c ld [de], a ld [$ceed], a dec de ld a, [de] ld [$ceec], a adc b ld [de], a ld [$ceee], a inc hl inc de ld a, [de] dec de sub [hl] dec hl ld a, [de] sbc [hl] jr c, .asm_3ba6f ld a, [hli] ld [de], a ld [$ceee], a inc de ld a, [hl] ld [de], a ld [$ceed], a .asm_3ba6f ld hl, $7ba8 call Unnamed_3bbe1 ld a, [H_WHOSETURN] ; $FF00+$f3 and a ld hl, $c45e ld a, $1 jr z, .asm_3ba83 ld hl, $c3ca xor a .asm_3ba83 ld [W_LISTMENUID], a ; $cf94 ld a, $48 call Predef ; indirect jump to Func_fa1d (fa1d (3:7a1d)) ld hl, $4d5a call Unnamed_3bbe1 ld hl, $7aac jp PrintText ; known jump sources: 3ba0a (e:7a0a) Func_3ba97: ; 3ba97 (e:7a97) ld c, $32 call DelayFrames ld hl, Func_3fb53 jp Unnamed_3bbe1 ; 3baa2 (e:7aa2) 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 ; known jump sources: 3fb33 (f:7b33) Func_3bab1: ; 3bab1 (e:7ab1) ld hl, $d014 ld de, $cfe5 ld bc, W_ENEMYBATTSTATUS3 ; $d069 ld a, [W_ENEMYBATTSTATUS1] ; $d067 ld a, [H_WHOSETURN] ; $FF00+$f3 and a jr nz, .asm_3bad1 ld hl, $cfe5 ld de, $d014 ld bc, W_PLAYERBATTSTATUS3 ; $d064 ld [W_PLAYERMOVELISTINDEX], a ; $cc2e ld a, [W_PLAYERBATTSTATUS1] ; $d062 .asm_3bad1 bit 6, a jp nz, Func_3bb8c push hl push de push bc ld hl, W_PLAYERBATTSTATUS2 ; $d063 ld a, [H_WHOSETURN] ; $FF00+$f3 and a jr z, .asm_3bae4 ld hl, W_ENEMYBATTSTATUS2 ; $d068 .asm_3bae4 bit 4, [hl] push af ld hl, $5747 ld b, $1e call nz, Bankswitch ld a, [W_OPTIONS] ; $d355 add a ld hl, $7ba8 ld b, $f jr nc, .asm_3baff ld hl, $5787 ld b, $1e .asm_3baff call Bankswitch ld hl, $5771 ld b, $1e pop af call nz, Bankswitch pop bc ld a, [bc] set 3, a ld [bc], a pop de pop hl push hl ld a, [hl] ld [de], a ld bc, $5 add hl, bc inc de inc de inc de inc de inc de inc bc inc bc call CopyData ld a, [H_WHOSETURN] ; $FF00+$f3 and a jr z, .asm_3bb32 ld a, [de] ld [$cceb], a inc de ld a, [de] ld [$ccec], a dec de .asm_3bb32 ld a, [hli] ld [de], a inc de ld a, [hli] ld [de], a inc de inc hl inc hl inc hl inc de inc de inc de ld bc, $8 call CopyData ld bc, $ffef add hl, bc ld b, $4 .asm_3bb4a ld a, [hli] and a jr z, .asm_3bb57 ld a, $5 ld [de], a inc de dec b jr nz, .asm_3bb4a jr .asm_3bb5d .asm_3bb57 xor a ld [de], a inc de dec b jr nz, .asm_3bb57 .asm_3bb5d pop hl ld a, [hl] ld [$d11e], a call GetMonName ld hl, $cd26 ld de, $cd12 call Func_3bb7d ld hl, W_ENEMYMONATTACKMOD ; $cd2e ld de, W_PLAYERMONATTACKMOD ; $cd1a call Func_3bb7d ld hl, $7b92 jp PrintText ; known jump sources: 3bb6b (e:7b6b), 3bb74 (e:7b74) Func_3bb7d: ; 3bb7d (e:7b7d) ld a, [H_WHOSETURN] ; $FF00+$f3 and a jr z, .asm_3bb86 push hl ld h, d ld l, e pop de .asm_3bb86 ld bc, $8 jp CopyData ; known jump sources: 3bad3 (e:7ad3) Func_3bb8c: ; 3bb8c (e:7b8c) ld hl, $7b53 jp Unnamed_3bbe1 ; 3bb92 (e:7b92) UnnamedText_3bb92: ; 0x3bb92 TX_FAR _UnnamedText_3bb92 db $50 ; 0x3bb92 + 5 bytes ; known jump sources: 3fb3b (f:7b3b) Func_3bb97: ; 3bb97 (e:7b97) ld hl, W_PLAYERBATTSTATUS3 ; $d064 ld de, W_PLAYERMOVEEFFECT ; $cfd3 ld a, [H_WHOSETURN] ; $FF00+$f3 and a jr z, .asm_3bba8 ld hl, W_ENEMYBATTSTATUS3 ; $d069 ld de, W_ENEMYMOVEEFFECT ; $cfcd .asm_3bba8 ld a, [de] cp $40 jr nz, .asm_3bbb8 bit 1, [hl] jr nz, .asm_3bbcc set 1, [hl] ld hl, $7bd7 jr .asm_3bbc1 .asm_3bbb8 bit 2, [hl] jr nz, .asm_3bbcc set 2, [hl] ld hl, $7bdc .asm_3bbc1 push hl ld hl, $7ba8 call Unnamed_3bbe1 pop hl jp PrintText .asm_3bbcc ld c, $32 call DelayFrames ld hl, $7b53 jp Unnamed_3bbe1 ; 3bbd7 (e:7bd7) 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 ; known jump sources: 3eff0 (f:6ff0) Func_3c04c: ; 3c04c (f:404c) call Func_3ec92 ld a, $1 ld [$d125], a call DisplayTextBoxID ld hl, $c405 ld bc, $307 call ClearScreenArea call DisableLCD call LoadFontTilePatterns call Func_3ee58 ld hl, $9800 ld bc, $400 .asm_3c06f ld a, $7f ld [hli], a dec bc ld a, b or c jr nz, .asm_3c06f ld hl, $c3a0 ld de, $9800 ld b, $12 .asm_3c07f ld c, $14 .asm_3c081 ld a, [hli] ld [de], a inc e dec c jr nz, .asm_3c081 ld a, $c add e ld e, a jr nc, .asm_3c08e inc d .asm_3c08e dec b jr nz, .asm_3c07f call EnableLCD ld a, $90 ld [$FF00+$b0], a ld [rWY], a ; $FF00+$4a xor a ld [$FF00+$d7], a ld [$FF00+$af], a dec a ld [$cfcb], a call Delay3 xor a ld [H_AUTOBGTRANSFERENABLED], a ; $FF00+$ba ld b, $70 ld c, $90 ld a, c ld [$FF00+$ae], a call DelayFrame ld a, $e4 ld [rBGP], a ; $FF00+$47 ld [rOBP0], a ; $FF00+$48 ld [rOBP1], a ; $FF00+$49 .asm_3c0bb ld h, b ld l, $40 call Func_3c110 inc b inc b ld h, $0 ld l, $60 call Func_3c110 call Func_3c0ff ld a, c ld [$FF00+$ae], a dec c dec c jr nz, .asm_3c0bb ld a, $1 ld [H_AUTOBGTRANSFERENABLED], a ; $FF00+$ba ld a, $31 ld [$FF00+$e1], a ld hl, $c405 ld a, $1 call Predef ; indirect jump to Func_3f0c6 (3f0c6 (f:70c6)) xor a ld [$FF00+$b0], a ld [rWY], a ; $FF00+$4a inc a ld [H_AUTOBGTRANSFERENABLED], a ; $FF00+$ba call Delay3 ld b, $1 call GoPAL_SET call ResetLCD_OAM ld hl, Func_58d99 ld b, BANK(Func_58d99) jp Bankswitch ; indirect jump to Func_58d99 (58d99 (16:4d99)) ; known jump sources: 3c0ca (f:40ca) Func_3c0ff: ; 3c0ff (f:40ff) push bc ld hl, $c301 ld c, $15 ld de, $4 .asm_3c108 dec [hl] dec [hl] add hl, de dec c jr nz, .asm_3c108 pop bc ret ; known jump sources: 3c0be (f:40be), 3c0c7 (f:40c7), 3c113 (f:4113) Func_3c110: ; 3c110 (f:4110) ld a, [$FF00+$44] cp l jr nz, Func_3c110 ld a, h ld [rSCX], a ; $FF00+$43 .asm_3c118 ld a, [$FF00+$44] cp h jr z, .asm_3c118 ret ; known jump sources: 3f030 (f:7030) Func_3c11e: ; 3c11e (f:411e) xor a ld [$d058], a ld [$ccf5], a ld [$cd6a], a inc a ld [$d11d], a ld hl, W_WATERMONS ; $d8a5 (aliases: W_ENEMYMON1HP) ld bc, $2b ld d, $3 .asm_3c134 inc d ld a, [hli] or [hl] jr nz, .asm_3c13c add hl, bc jr .asm_3c134 .asm_3c13c ld a, d ld [$cc3e], a ld a, [W_ISINBATTLE] ; $d057 dec a call nz, Func_3c92a ld c, $28 call DelayFrames call Func_3719 .asm_3c14f call Func_3ca83 ld a, d and a jp z, Func_3c837 call Func_3725 ld a, [W_BATTLETYPE] ; $d05a and a jp z, Func_3c1ad .asm_3c161 call Func_3ceb3 ret c ld a, [$cd6a] and a jr z, .asm_3c161 ld a, [W_NUMSAFARIBALLS] ; $da47 and a jr nz, .asm_3c17a call Func_3725 ld hl, $41a8 jp PrintText .asm_3c17a ld hl, Func_4277 ld b, BANK(Func_4277) call Bankswitch ; indirect jump to Func_4277 (4277 (1:4277)) ld a, [$cffb] add a ld b, a jp c, asm_3c202 ld a, [$cce9] and a jr z, .asm_3c194 srl b srl b .asm_3c194 ld a, [$cce8] and a jr z, .asm_3c1a0 sla b jr nc, .asm_3c1a0 ld b, $ff .asm_3c1a0 call GenRandom cp b jr nc, .asm_3c14f jr asm_3c202 ; 3c1a8 (f:41a8) UnnamedText_3c1a8: ; 0x3c1a8 TX_FAR _UnnamedText_3c1a8 db $50 ; 0x3c1a8 + 5 bytes ; known jump sources: 3c15e (f:415e) Func_3c1ad: ; 3c1ad (f:41ad) xor a ld [W_WHICHPOKEMON], a ; $cf92 .asm_3c1b1 call Func_3ca97 jr nz, .asm_3c1bc ld hl, W_WHICHPOKEMON ; $cf92 inc [hl] jr .asm_3c1b1 .asm_3c1bc ld a, [W_WHICHPOKEMON] ; $cf92 ld [W_PLAYERMONNUMBER], a ; $cc2f inc a ld hl, W_NUMINPARTY ; $d163 ld c, a ld b, $0 add hl, bc ld a, [hl] ld [$cf91], a ld [$cfd9], a call Func_3725 ld hl, $c405 ld a, $9 call Func_3c8df call Func_3719 ld a, [W_WHICHPOKEMON] ; $cf92 ld c, a ld b, $1 push bc ld hl, $d058 ld a, $10 call Predef ; indirect jump to Func_f666 (f666 (3:7666)) ld hl, $ccf5 pop bc ld a, $10 call Predef ; indirect jump to Func_f666 (f666 (3:7666)) call Func_3cba6 call Func_3725 call Func_3cc91 jr MainInBattleLoop asm_3c202: ; 3c202 (f:4202) call Func_3725 ld a, [W_ISLINKBATTLE] ; $d12b cp $4 ld hl, $4229 jr nz, .asm_3c216 xor a ld [$cf0b], a ld hl, $422e .asm_3c216 call PrintText ld a, $97 call Func_3740 xor a ld [H_WHOSETURN], a ; $FF00+$f3 ld hl, Func_792b9 ld b, BANK(Func_792b9) jp Bankswitch ; indirect jump to Func_792b9 (792b9 (1e:52b9)) ; 3c229 (f:4229) UnnamedText_3c229: ; 0x3c229 TX_FAR _UnnamedText_3c229 db $50 ; 0x3c229 + 5 bytes UnnamedText_3c22e: ; 0x3c22e TX_FAR _UnnamedText_3c22e db $50 ; 0x3c22e + 5 bytes MainInBattleLoop: ; 4233 call $4d43 ld hl, $d015 ld a, [hli] or [hl] jp z, $4700 ld hl, $cfe6 ld a, [hli] or [hl] jp z, $4525 call $3719 xor a ld [$d11d], a ld a, [$d063] and $60 jr nz, .asm_3c2a6 ; 0x3c252 $52 ld hl, $d067 res 3, [hl] ld hl, $d062 res 3, [hl] ld a, [hl] and $12 jr nz, .asm_3c2a6 ; 0x3c261 $43 call $4eb3 ; show battle menu ret c ld a, [$d078] and a ret nz ld a, [$d018] and $27 jr nz, .asm_3c2a6 ; 0x3c271 $33 ld a, [$d062] and $21 jr nz, .asm_3c2a6 ; 0x3c278 $2c ld a, [$d067] bit 5, a jr z, .asm_3c288 ; 0x3c27f $7 ld a, $ff ld [$ccdc], a jr .asm_3c2a6 ; 0x3c286 $1e .asm_3c288 ld a, [$cd6a] and a jr nz, .asm_3c2a6 ; 0x3c28c $18 ld [$ccdb], a inc a ld [$d07c], a xor a ld [$cc35], a call $5219 push af call $3725 call $4d5a pop af jr nz, MainInBattleLoop .asm_3c2a6 call SelectEnemyMove ld a, [W_ISLINKBATTLE] cp $4 jr nz, .noLinkBattle ld a, [$cc3e] cp $f jp z, $4202 cp $e jr z, .noLinkBattle cp $d jr z, .noLinkBattle sub $4 jr c, .noLinkBattle ld a, [$d062] bit 5, a jr z, .asm_3c2dd ; 0x3c2c9 $12 ld a, [$cc2e] ld hl, $d01c ld c, a ld b, $0 add hl, bc ld a, [hl] cp $76 jr nz, .asm_3c2dd ; 0x3c2d8 $3 ld [W_PLAYERSELECTEDMOVE], a .asm_3c2dd ld hl, Function674B ld b, BANK(Function674B) call Bankswitch .noLinkBattle ld a, [W_PLAYERSELECTEDMOVE] cp QUICK_ATTACK jr nz, .playerDidNotUseQuickAttack ld a, [W_ENEMYSELECTEDMOVE] cp QUICK_ATTACK jr z, .compareSpeed ; both used Quick Attack jp .playerMovesFirst ; player used Quick Attack .playerDidNotUseQuickAttack ld a, [W_ENEMYSELECTEDMOVE] cp QUICK_ATTACK jr z, .enemyMovesFirst ld a, [W_PLAYERSELECTEDMOVE] cp COUNTER jr nz, .playerDidNotUseCounter ld a, [W_ENEMYSELECTEDMOVE] cp COUNTER jr z, .compareSpeed ; both used Counter jr .enemyMovesFirst ; player used Counter .playerDidNotUseCounter ld a, [W_ENEMYSELECTEDMOVE] cp COUNTER jr z, .playerMovesFirst .compareSpeed ld de, $d029 ; player speed value ld hl, $cffa ; enemy speed value ld c, $2 call StringCmp ; compare speed values jr z, .speedEqual jr nc, .playerMovesFirst jr .enemyMovesFirst .speedEqual ld a, [$ff00+$aa] cp $2 jr z, .invertOutcome call GenRandomInBattle cp $80 jr c, .playerMovesFirst jr .enemyMovesFirst .invertOutcome call GenRandomInBattle cp $80 jr c, .enemyMovesFirst jr .playerMovesFirst .enemyMovesFirst ld a, $1 ld [H_WHOSETURN], a ld hl, TrainerAI ld b, BANK(TrainerAI) call Bankswitch jr c, .AIActionUsedEnemyFirst call $66bc ; execute enemy move ld a, [$d078] and a ret nz ld a, b and a jp z, $4700 .AIActionUsedEnemyFirst call $43bd jp z, $4525 call $4d5a call $565e ; execute player move ld a, [$d078] and a ret nz ld a, b and a jp z, $4525 call $43bd jp z, $4700 call $4d5a call $450f jp MainInBattleLoop .playerMovesFirst call $565e ; execute player move ld a, [$d078] and a ret nz ld a, b and a jp z, $4525 call $43bd jp z, $4700 call $4d5a ld a, $1 ld [H_WHOSETURN], a ld hl, TrainerAI ld b, BANK(TrainerAI) call Bankswitch jr c, .AIActionUsedPlayerFirst call $66bc ; execute enemy move ld a, [$d078] and a ret nz ld a, b and a jp z, $4700 .AIActionUsedPlayerFirst call $43bd jp z, $4525 call $4d5a call $450f jp MainInBattleLoop ; known jump sources: 3c358 (f:4358), 3c36e (f:436e), 3c38a (f:438a), 3c3ae (f:43ae) Func_3c3bd: ; 3c3bd (f:43bd) ld hl, W_PLAYERMONCURHP ; $d015 ld de, W_PLAYERMONSTATUS ; $d018 ld a, [H_WHOSETURN] ; $FF00+$f3 and a jr z, .asm_3c3ce ld hl, W_ENEMYMONCURHP ; $cfe6 ld de, W_ENEMYMONSTATUS ; $cfe9 .asm_3c3ce ld a, [de] and $18 jr z, .asm_3c3ef push hl ld hl, $442e ld a, [de] and $10 jr z, .asm_3c3df ld hl, $4433 .asm_3c3df call PrintText xor a ld [$cc5b], a ld a, $ba call PlayMoveAnimation pop hl call Func_3c43d .asm_3c3ef ld de, W_PLAYERBATTSTATUS2 ; $d063 ld a, [H_WHOSETURN] ; $FF00+$f3 and a jr z, .asm_3c3fa ld de, W_ENEMYBATTSTATUS2 ; $d068 .asm_3c3fa ld a, [de] add a jr nc, .asm_3c421 push hl ld a, [H_WHOSETURN] ; $FF00+$f3 push af xor $1 ld [H_WHOSETURN], a ; $FF00+$f3 xor a ld [$cc5b], a ld a, $47 call PlayMoveAnimation pop af ld [H_WHOSETURN], a ; $FF00+$f3 pop hl call Func_3c43d call Func_3c4a3 push hl ld hl, $4438 call PrintText pop hl .asm_3c421 ld a, [hli] or [hl] ret nz call Func_3cd5a ld c, $14 call DelayFrames xor a ret ; 3c42e (f:442e) 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 ; known jump sources: 3c3ec (f:43ec), 3c413 (f:4413) Func_3c43d: ; 3c43d (f:443d) push hl push hl ld bc, $e add hl, bc ld a, [hli] ld [$ceea], a ld b, a ld a, [hl] ld [$cee9], a ld c, a srl b rr c srl b rr c srl c srl c ld a, c and a jr nz, .asm_3c45e inc c .asm_3c45e ld hl, W_PLAYERBATTSTATUS3 ; $d064 ld de, W_PLAYERTOXICCOUNTER ; $d06c ld a, [H_WHOSETURN] ; $FF00+$f3 and a jr z, .asm_3c46f ld hl, W_ENEMYBATTSTATUS3 ; $d069 ld de, W_ENEMYTOXICCOUNTER ; $d071 .asm_3c46f bit 0, [hl] jr z, .asm_3c47f ld a, [de] inc a ld [de], a ld hl, $0 .asm_3c479 add hl, bc dec a jr nz, .asm_3c479 ld b, h ld c, l .asm_3c47f pop hl inc hl ld a, [hl] ld [$ceeb], a sub c ld [hld], a ld [$ceed], a ld a, [hl] ld [$ceec], a sbc b ld [hl], a ld [$ceee], a jr nc, .asm_3c49e xor a ld [hli], a ld [hl], a ld [$ceed], a ld [$ceee], a .asm_3c49e call Func_3c4f6 pop hl ret ; known jump sources: 3c416 (f:4416) Func_3c4a3: ; 3c4a3 (f:44a3) push hl ld hl, W_ENEMYMONMAXHP ; $cff4 ld a, [H_WHOSETURN] ; $FF00+$f3 and a jr z, .asm_3c4af ld hl, W_PLAYERMONMAXHP ; $d023 .asm_3c4af ld a, [hli] ld [$ceea], a ld a, [hl] ld [$cee9], a ld de, $fff2 add hl, de ld a, [hl] ld [$ceeb], a add c ld [hld], a ld [$ceed], a ld a, [hl] ld [$ceec], a adc b ld [hli], a ld [$ceee], a ld a, [$cee9] ld c, a ld a, [hld] sub c ld a, [$ceea] ld b, a ld a, [hl] sbc b jr c, .asm_3c4e5 ld a, b ld [hli], a ld [$ceee], a ld a, c ld [hl], a ld [$ceed], a .asm_3c4e5 ld a, [H_WHOSETURN] ; $FF00+$f3 xor $1 ld [H_WHOSETURN], a ; $FF00+$f3 call Func_3c4f6 ld a, [H_WHOSETURN] ; $FF00+$f3 xor $1 ld [H_WHOSETURN], a ; $FF00+$f3 pop hl ret ; known jump sources: 3c49e (f:449e), 3c4eb (f:44eb) Func_3c4f6: ; 3c4f6 (f:44f6) ld hl, $c45e ld a, [H_WHOSETURN] ; $FF00+$f3 and a ld a, $1 jr z, .asm_3c504 ld hl, $c3ca xor a .asm_3c504 push bc ld [W_LISTMENUID], a ; $cf94 ld a, $48 call Predef ; indirect jump to Func_fa1d (fa1d (3:7a1d)) pop bc ret ; known jump sources: 3c377 (f:4377), 3c3b7 (f:43b7) Func_3c50f: ; 3c50f (f:450f) ld a, [$d06a] and a jr nz, .asm_3c51a ld hl, W_PLAYERBATTSTATUS1 ; $d062 res 5, [hl] .asm_3c51a ld a, [$d06f] and a ret nz ld hl, W_ENEMYBATTSTATUS1 ; $d067 res 5, [hl] ret ; known jump sources: 3c243 (f:4243), 3c35b (f:435b), 3c36b (f:436b), 3c387 (f:4387), 3c3b1 (f:43b1) Func_3c525: ; 3c525 (f:4525) xor a ld [$ccf0], a call Func_3c567 call Func_3ca83 ld a, d and a jp z, Func_3c837 ld hl, W_PLAYERMONCURHP ; $d015 ld a, [hli] or [hl] call nz, Func_3cd60 ld a, [W_ISINBATTLE] ; $d057 dec a ret z call Func_3c64f jp z, Func_3c696 ld hl, W_PLAYERMONCURHP ; $d015 ld a, [hli] or [hl] jr nz, .asm_3c555 call Func_3c79b ret c call Func_3c7d8 .asm_3c555 ld a, $1 ld [$cd6a], a call Func_3c664 jp z, asm_3c202 xor a ld [$cd6a], a jp MainInBattleLoop ; known jump sources: 3c529 (f:4529), 3c717 (f:4717) Func_3c567: ; 3c567 (f:4567) call Func_3cd43 ld a, [W_ISINBATTLE] ; $d057 dec a jr z, .asm_3c57f ld a, [W_ENEMYMONNUMBER] ; $cfe8 ld hl, W_WATERMONS ; $d8a5 (aliases: W_ENEMYMON1HP) ld bc, $2c call AddNTimes xor a ld [hli], a ld [hl], a .asm_3c57f ld hl, W_PLAYERBATTSTATUS1 ; $d062 res 2, [hl] xor a ld [W_NUMHITS], a ; $d074 ld hl, $d065 ld [hli], a ld [hli], a ld [hli], a ld [hli], a ld [hl], a ld [W_ENEMYDISABLEDMOVE], a ; $d072 ld [$ccef], a ld [$ccf3], a ld hl, $ccf1 ld [hli], a ld [hl], a ld hl, $c410 ld de, $c424 call Func_3c893 ld hl, $c3a0 ld bc, $40b call ClearScreenArea ld a, [W_ISINBATTLE] ; $d057 dec a jr z, .asm_3c5d3 xor a ld [$c0f1], a ld [$c0f2], a ld a, $9e call Func_3740 .asm_3c5c2 ld a, [$c02a] cp $9e jr z, .asm_3c5c2 ld a, $95 call Func_23b1 call Func_3748 jr .asm_3c5db .asm_3c5d3 call Func_3c643 ld a, $f9 call Func_3c6ee .asm_3c5db ld hl, W_PLAYERMONCURHP ; $d015 ld a, [hli] or [hl] jr nz, .asm_3c5eb ld a, [$ccf0] and a jr nz, .asm_3c5eb call Func_3c741 .asm_3c5eb call Func_3ca83 ld a, d and a ret z ld hl, $463e call PrintText call Func_3ee94 call Func_3719 xor a ld [$cf0b], a ld b, $4b call IsItemInBag push af jr z, .asm_3c614 ld hl, $d002 ld b, $7 .asm_3c60e srl [hl] inc hl dec b jr nz, .asm_3c60e .asm_3c614 xor a ld [$cc5b], a ld hl, Func_5524f ld b, BANK(Func_5524f) call Bankswitch ; indirect jump to Func_5524f (5524f (15:524f)) pop af ret z ld a, $1 ld [$cc5b], a ld a, [W_NUMINPARTY] ; $d163 ld b, $0 .asm_3c62c scf rl b dec a jr nz, .asm_3c62c ld a, b ld [$d058], a ld hl, Func_5524f ld b, BANK(Func_5524f) jp Bankswitch ; indirect jump to Func_5524f (5524f (15:524f)) ; 3c63e (f:463e) UnnamedText_3c63e: ; 0x3c63e TX_FAR _UnnamedText_3c63e db $50 ; 0x3c63e + 5 bytes ; known jump sources: 3c5d3 (f:45d3), 3c696 (f:4696) Func_3c643: ; 3c643 (f:4643) xor a ld [$d083], a ld [$c02a], a inc a ld [$ccf6], a ret ; known jump sources: 3c541 (f:4541), 3c71f (f:471f) Func_3c64f: ; 3c64f (f:464f) ld a, [W_ENEMYMONCOUNT] ; $d89c ld b, a xor a ld hl, W_WATERMONS ; $d8a5 (aliases: W_ENEMYMON1HP) ld de, $2c .asm_3c65a or [hl] inc hl or [hl] dec hl add hl, de dec b jr nz, .asm_3c65a and a ret ; known jump sources: 3c55a (f:455a), 3c734 (f:4734) Func_3c664: ; 3c664 (f:4664) ld hl, $cf1e ld e, $30 call Func_3ce90 ld hl, Func_3a857 ld b, BANK(Func_3a857) call Bankswitch ; indirect jump to Func_3a857 (3a857 (e:6857)) ld a, [W_ISLINKBATTLE] ; $d12b cp $4 jr nz, .asm_3c687 call Func_3d605 ld a, [$cc3e] cp $f ret z call Func_3725 .asm_3c687 call EnemySendOut xor a ld [W_ENEMYMOVENUM], a ; $cfcc ld [$cd6a], a ld [$ccd5], a inc a ret ; known jump sources: 3c544 (f:4544), 3c722 (f:4722) Func_3c696: ; 3c696 (f:4696) call Func_3c643 ld b, $fc ld a, [W_LONEATTACKNO] ; $d05c and a jr nz, .asm_3c6a3 ld b, $f6 .asm_3c6a3 ld a, [W_TRAINERCLASS] ; $d031 cp $2b jr nz, .asm_3c6b1 ld b, $fc ld hl, $d733 set 1, [hl] .asm_3c6b1 ld a, [W_ISLINKBATTLE] ; $d12b cp $4 ld a, b call nz, Func_3c6ee ld hl, $46e9 call PrintText ld a, [W_ISLINKBATTLE] ; $d12b cp $4 ret z call Func_3ed12 ld c, $28 call DelayFrames call Func_3381 ld hl, $46e4 call PrintText ld de, W_PLAYERMONEY1 ; $d349 ld hl, $d07b ld c, $3 ld a, $b jp Predef ; indirect jump to Func_f81d (f81d (3:781d)) ; 3c6e4 (f:46e4) UnnamedText_3c6e4: ; 0x3c6e4 TX_FAR _UnnamedText_3c6e4 db $50 ; 0x3c6e4 + 5 bytes UnnamedText_3c6e9: ; 0x3c6e9 TX_FAR _UnnamedText_3c6e9 db $50 ; 0x3c6e9 + 5 bytes ; known jump sources: 3c5d8 (f:45d8), 3c6b7 (f:46b7) Func_3c6ee: ; 3c6ee (f:46ee) push af ld a, $ff ld [$c0ee], a call Func_3740 ld c, $8 pop af call Func_23a1 jp Delay3 ; known jump sources: 3c23b (f:423b), 3c355 (f:4355), 3c371 (f:4371), 3c38d (f:438d), 3c3ab (f:43ab) Func_3c700: ; 3c700 (f:4700) ld a, $1 ld [$ccf0], a call Func_3c741 call Func_3ca83 ld a, d and a jp z, Func_3c837 ld hl, W_ENEMYMONCURHP ; $cfe6 ld a, [hli] or [hl] jr nz, .asm_3c725 call Func_3c567 ld a, [W_ISINBATTLE] ; $d057 dec a ret z call Func_3c64f jp z, Func_3c696 .asm_3c725 call Func_3c79b ret c call Func_3c7d8 jp nz, MainInBattleLoop ld a, $1 ld [$cd6a], a call Func_3c664 jp z, asm_3c202 xor a ld [$cd6a], a jp MainInBattleLoop ; known jump sources: 3c5e8 (f:45e8), 3c705 (f:4705) Func_3c741: ; 3c741 (f:4741) ld a, [W_PLAYERMONNUMBER] ; $cc2f ld c, a ld hl, $d058 ld b, $0 ld a, $10 call Predef ; indirect jump to Func_f666 (f666 (3:7666)) ld hl, W_ENEMYBATTSTATUS1 ; $d067 res 2, [hl] ld a, [$d083] bit 7, a jr z, .asm_3c763 ld a, $ff ld [$d083], a call Func_3748 .asm_3c763 ld hl, $cd05 ld [hli], a ld [hl], a ld [W_PLAYERMONSTATUS], a ; $d018 call Func_3cd43 ld hl, $c435 ld bc, $50b call ClearScreenArea ld hl, $c469 ld de, $c47d call Func_3c893 ld a, $1 ld [$cf0b], a ld a, [$ccf0] and a ret z ld a, [$d014] call PlayCry ld hl, $4796 jp PrintText ; 3c796 (f:4796) UnnamedText_3c796: ; 0x3c796 TX_FAR _UnnamedText_3c796 db $50 ; 0x3c796 + 5 bytes ; known jump sources: 3c54e (f:454e), 3c725 (f:4725) Func_3c79b: ; 3c79b (f:479b) call Func_3ee94 call Func_3719 ld a, [W_ISINBATTLE] ; $d057 and a dec a ret nz ld hl, $47d3 call PrintText .asm_3c7ad ld hl, $c461 ld bc, $a0e ld a, $14 ld [$d125], a call DisplayTextBoxID ld a, [$d12e] cp $2 jr z, .asm_3c7c4 and a ret .asm_3c7c4 ld a, [W_CURMENUITEMID] ; $cc26 and a jr z, .asm_3c7ad ld hl, W_PARTYMON1_SPEED ; $d193 ld de, $cffa jp Func_3cab9 ; 3c7d3 (f:47d3) UnnamedText_3c7d3: ; 0x3c7d3 TX_FAR _UnnamedText_3c7d3 db $50 ; 0x3c7d3 + 5 bytes ; known jump sources: 3c552 (f:4552), 3c729 (f:4729) Func_3c7d8: ; 3c7d8 (f:47d8) ld a, $2 ld [$d07d], a call DisplayPartyMenu .asm_3c7e0 jr nc, .asm_3c7e7 .asm_3c7e2 call GoBackToPartyMenu jr .asm_3c7e0 .asm_3c7e7 call Func_3ca97 jr z, .asm_3c7e2 ld a, [W_ISLINKBATTLE] ; $d12b cp $4 jr nz, .asm_3c7fa inc a ld [$cd6a], a call Func_3d605 .asm_3c7fa xor a ld [$cd6a], a call CleanLCD_OAM ld a, [W_WHICHPOKEMON] ; $cf92 ld [W_PLAYERMONNUMBER], a ; $cc2f ld c, a ld hl, $d058 ld b, $1 push bc ld a, $10 call Predef ; indirect jump to Func_f666 (f666 (3:7666)) pop bc ld hl, $ccf5 ld a, $10 call Predef ; indirect jump to Func_f666 (f666 (3:7666)) call Func_3cba6 call GBPalWhiteOut call Func_3ee5b call Func_3725 call GoPAL_SET_CF1C call GBPalNormal call Func_3cc91 ld hl, W_ENEMYMONCURHP ; $cfe6 ld a, [hli] or [hl] ret ; known jump sources: 3c154 (f:4154), 3c531 (f:4531), 3c70d (f:470d) Func_3c837: ; 3c837 (f:4837) ld a, [W_ISLINKBATTLE] ; $d12b cp $4 jr z, .asm_3c862 ld a, [W_CUROPPONENT] ; $d059 cp $e1 jr nz, .asm_3c862 ld hl, $c3a0 ld bc, $815 call ClearScreenArea call Func_3ed12 ld c, $28 call DelayFrames ld hl, $4884 call PrintText ld a, [W_CURMAP] ; $d35e cp $28 ret z .asm_3c862 ld b, $0 call GoPAL_SET ld hl, $4889 ld a, [W_ISLINKBATTLE] ; $d12b cp $4 jr nz, .asm_3c874 ld hl, $488e .asm_3c874 call PrintText ld a, [$d732] res 5, a ld [$d732], a call ClearScreen scf ret ; 3c884 (f:4884) 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 ; known jump sources: 3c5a4 (f:45a4), 3c77d (f:477d) Func_3c893: ; 3c893 (f:4893) ld a, [$d730] push af set 6, a ld [$d730], a ld b, $7 .asm_3c89e push bc push de push hl ld b, $6 .asm_3c8a3 push bc push hl push de ld bc, $7 call CopyData pop de pop hl ld bc, $ffec add hl, bc push hl ld h, d ld l, e add hl, bc ld d, h ld e, l pop hl pop bc dec b jr nz, .asm_3c8a3 ld bc, $14 add hl, bc ld de, $48d7 call PlaceString ld c, $2 call DelayFrames pop hl pop de pop bc dec b jr nz, .asm_3c89e pop af ld [$d730], a ret INCBIN "baserom.gbc",$3c8d7,$3c8df - $3c8d7 ; known jump sources: 3c1d9 (f:41d9), 3c94f (f:494f) Func_3c8df: ; 3c8df (f:48df) ld [H_DOWNARROWBLINKCNT1], a ; $FF00+$8b ld c, a .asm_3c8e2 push bc push hl ld b, $7 .asm_3c8e6 push hl ld a, [H_DOWNARROWBLINKCNT1] ; $FF00+$8b ld c, a .asm_3c8ea ld a, [H_DOWNARROWBLINKCNT1] ; $FF00+$8b cp $8 jr z, .asm_3c8f5 ld a, [hld] ld [hli], a inc hl jr .asm_3c8f8 .asm_3c8f5 ld a, [hli] ld [hld], a dec hl .asm_3c8f8 dec c jr nz, .asm_3c8ea pop hl ld de, $14 add hl, de dec b jr nz, .asm_3c8e6 ld c, $2 call DelayFrames pop hl pop bc dec c jr nz, .asm_3c8e2 ret ; 3c90e (f:490e) ; 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 Func_3c92a: 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 "@" ; known jump sources: 669 (0:669), c735 (3:4735), 3c14f (f:414f), 3c52c (f:452c), 3c5eb (f:45eb), 3c708 (f:4708) Func_3ca83: ; 3ca83 (f:4a83) ld a, [W_NUMINPARTY] ; $d163 ld e, a xor a ld hl, W_PARTYMON1_HP ; $d16c ld bc, $2b .asm_3ca8e or [hl] inc hl or [hl] add hl, bc dec e jr nz, .asm_3ca8e ld d, a ret ; known jump sources: 3c1b1 (f:41b1), 3c7e7 (f:47e7), 3ca14 (f:4a14), 3d19d (f:519d) Func_3ca97: ; 3ca97 (f:4a97) ld a, [W_WHICHPOKEMON] ; $cf92 ld hl, W_PARTYMON1_HP ; $d16c ld bc, $2c call AddNTimes ld a, [hli] or [hl] ret nz ld a, [$d11d] and a jr nz, .asm_3cab2 ld hl, $4ab4 call PrintText .asm_3cab2 xor a ret ; 3cab4 (f:4ab4) UnnamedText_3cab4: ; 0x3cab4 TX_FAR _UnnamedText_3cab4 db $50 ; 0x3cab4 + 5 bytes ; known jump sources: 3c7d0 (f:47d0), 3d208 (f:5208) Func_3cab9: ; 3cab9 (f:4ab9) call Function583A jp z, .asm_3cb5c ld a, [W_BATTLETYPE] ; $d05a cp $2 jp z, .asm_3cb5c ld a, [W_ISLINKBATTLE] ; $d12b cp $4 jp z, .asm_3cb5c ld a, [W_ISINBATTLE] ; $d057 dec a jr nz, .asm_3cb4c ld a, [$d120] inc a ld [$d120], a ld a, [hli] ld [$FF00+$97], a ld a, [hl] ld [$FF00+$98], a ld a, [de] ld [$FF00+$8d], a inc de ld a, [de] ld [$FF00+$8e], a call Func_3725 ld de, $ff97 ld hl, $ff8d ld c, $2 call StringCmp jr nc, .asm_3cb5c xor a ld [H_NUMTOPRINT], a ; $FF00+$96 (aliases: H_MULTIPLICAND) ld a, $20 ld [H_REMAINDER], a ; $FF00+$99 (aliases: H_DIVISOR, H_MULTIPLIER, H_POWEROFTEN) call Multiply ld a, [$FF00+$97] ld [H_DIVIDEND], a ; $FF00+$95 (aliases: H_PRODUCT, H_PASTLEADINGZEROES, H_QUOTIENT) ld a, [$FF00+$98] ld [H_NUMTOPRINT], a ; $FF00+$96 (aliases: H_MULTIPLICAND) ld a, [$FF00+$8d] ld b, a ld a, [$FF00+$8e] srl b rr a srl b rr a and a jr z, .asm_3cb5c ld [H_REMAINDER], a ; $FF00+$99 (aliases: H_DIVISOR, H_MULTIPLIER, H_POWEROFTEN) ld b, $2 call Divide ld a, [$FF00+$97] and a jr nz, .asm_3cb5c ld a, [$d120] ld c, a .asm_3cb2b dec c jr z, .asm_3cb39 ld b, $1e ld a, [$FF00+$98] add b ld [$FF00+$98], a jr c, .asm_3cb5c jr .asm_3cb2b .asm_3cb39 call GenRandomInBattle ld b, a ld a, [$FF00+$98] cp b jr nc, .asm_3cb5c ld a, $1 ld [$cd6a], a ld hl, $4b97 jr .asm_3cb4f .asm_3cb4c ld hl, $4b9c .asm_3cb4f call PrintText ld a, $1 ld [$d11f], a call Func_3719 and a ret .asm_3cb5c ld a, [W_ISLINKBATTLE] ; $d12b cp $4 ld a, $2 jr nz, .asm_3cb81 call Func_3719 xor a ld [$cd6a], a ld a, $f ld [W_PLAYERMOVELISTINDEX], a ; $cc2e call Func_3d605 call Func_3725 ld a, [$cc3e] cp $f ld a, $2 jr z, .asm_3cb81 dec a .asm_3cb81 ld [$cf0b], a ld a, $97 call Func_3740 ld hl, $4ba1 call PrintText call Func_3748 call Func_3719 scf ret ; 3cb97 (f:4b97) 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 ; known jump sources: 3c1f7 (f:41f7), 3c81c (f:481c), 3d1e5 (f:51e5) Func_3cba6: ; 3cba6 (f:4ba6) ld a, [W_WHICHPOKEMON] ; $cf92 ld bc, $2c ld hl, W_PARTYMON1_NUM ; $d16b (aliases: W_PARTYMON1DATA) call AddNTimes ld de, $d014 ld bc, $c call CopyData ld bc, $f add hl, bc ld de, $d020 ld bc, $2 call CopyData ld de, W_PLAYERMONPP ; $d02d ld bc, $4 call CopyData ld de, W_PLAYERMONLEVEL ; $d022 ld bc, $b call CopyData ld a, [$cfd9] ld [$d0b5], a call GetBaseStats ld hl, W_PARTYMON1NAME ; $d2b5 ld a, [W_PLAYERMONNUMBER] ; $cc2f call Func_3a7d ld de, $d009 ld bc, $b call CopyData ld hl, W_PLAYERMONLEVEL ; $d022 ld de, $cd0f ld bc, $b call CopyData call Func_3ed1a call Func_3ee19 ld a, $7 ld b, $8 ld hl, W_PLAYERMONATTACKMOD ; $cd1a .asm_3cc0e ld [hli], a dec b jr nz, .asm_3cc0e ret ; known jump sources: 3eb06 (f:6b06) Func_3cc13: ; 3cc13 (f:4c13) ld a, [W_WHICHPOKEMON] ; $cf92 ld bc, $2c ld hl, W_WATERRATE ; $d8a4 call AddNTimes ld de, $cfe5 ld bc, $c call CopyData ld bc, $f add hl, bc ld de, $cff1 ld bc, $2 call CopyData ld de, W_ENEMYMONPP ; $cffe ld bc, $4 call CopyData ld de, W_ENEMYMONLEVEL ; $cff3 ld bc, $b call CopyData ld a, [$cfe5] ld [$d0b5], a call GetBaseStats ld hl, $d9ee ld a, [W_WHICHPOKEMON] ; $cf92 call Func_3a7d ld de, $cfda ld bc, $b call CopyData ld hl, W_ENEMYMONLEVEL ; $cff3 ld de, $cd23 ld bc, $b call CopyData call Func_3ed1e ld hl, $d0b9 ld de, $d002 ld b, $5 .asm_3cc79 ld a, [hli] ld [de], a inc de dec b jr nz, .asm_3cc79 ld a, $7 ld b, $8 ld hl, W_ENEMYMONATTACKMOD ; $cd2e .asm_3cc86 ld [hli], a dec b jr nz, .asm_3cc86 ld a, [W_WHICHPOKEMON] ; $cf92 ld [W_ENEMYMONNUMBER], a ; $cfe8 ret ; known jump sources: 3c1fd (f:41fd), 3c82e (f:482e), 3d1e8 (f:51e8) Func_3cc91: ; 3cc91 (f:4c91) ld hl, Func_58e59 ld b, BANK(Func_58e59) call Bankswitch ; indirect jump to Func_58e59 (58e59 (16:4e59)) ld hl, W_ENEMYMONCURHP ; $cfe6 ld a, [hli] or [hl] jp z, Func_3cca4 call Func_3cdec ; known jump sources: 3cc9e (f:4c9e) Func_3cca4: ; 3cca4 (f:4ca4) call Func_3cd60 ld a, $4 call Predef ; indirect jump to Func_3f103 (3f103 (f:7103)) xor a ld [$FF00+$e1], a ld hl, $cc2d ld [hli], a ld [hl], a ld [$cc5b], a ld [$d05b], a ld [W_PLAYERMOVENUM], a ; $cfd2 ld hl, $ccf1 ld [hli], a ld [hl], a ld hl, $d060 ld [hli], a ld [hli], a ld [hli], a ld [hli], a ld [hl], a ld [W_PLAYERDISABLEDMOVE], a ; $d06d ld [$ccee], a ld [$ccf7], a ld b, $1 call GoPAL_SET ld hl, W_ENEMYBATTSTATUS1 ; $d067 res 5, [hl] ld a, $1 ld [H_WHOSETURN], a ; $FF00+$f3 ld a, $c3 call PlayMoveAnimation ld hl, $c480 ld a, $2 call Predef ; indirect jump to Func_3f073 (3f073 (f:7073)) ld a, [$cf91] call PlayCry call Func_3ee94 jp Func_3719 ; known jump sources: 3d1c7 (f:51c7) Func_3ccfa: ; 3ccfa (f:4cfa) ld hl, $c405 ld bc, $707 call ClearScreenArea ld hl, $c42f ld bc, $505 xor a ld [$cd6c], a ld [H_DOWNARROWBLINKCNT1], a ; $FF00+$8b ld a, $5 call Predef ; indirect jump to Func_79aba (79aba (1e:5aba)) ld c, $4 call DelayFrames call Func_3cd3a ld hl, $c458 ld bc, $303 ld a, $1 ld [$cd6c], a xor a ld [H_DOWNARROWBLINKCNT1], a ; $FF00+$8b ld a, $5 call Predef ; indirect jump to Func_79aba (79aba (1e:5aba)) call Delay3 call Func_3cd3a ld a, $4c ld [$c481], a ; known jump sources: 3cd19 (f:4d19), 3cd32 (f:4d32) Func_3cd3a: ; 3cd3a (f:4d3a) ld hl, $c405 ld bc, $707 jp ClearScreenArea ; known jump sources: 78c1 (1:78c1), 3c233 (f:4233), 3c567 (f:4567), 3c76b (f:476b), 3f76e (f:776e), 3f7c1 (f:77c1) Func_3cd43: ; 3cd43 (f:4d43) ld a, [W_PLAYERMONNUMBER] ; $cc2f ld hl, W_PARTYMON1_HP ; $d16c ld bc, $2c call AddNTimes ld d, h ld e, l ld hl, W_PLAYERMONCURHP ; $d015 ld bc, $4 jp CopyData ; known jump sources: 3c2a0 (f:42a0), 3c35e (f:435e), 3c374 (f:4374), 3c390 (f:4390), 3c3b4 (f:43b4), 3c424 (f:4424), 3cebc (f:4ebc), 3d017 (f:5017), 3d0ac (f:50ac), 3e19d (f:619d), 3e25b (f:625b), 3e2a9 (f:62a9) Func_3cd5a: ; 3cd5a (f:4d5a) call Func_3cd60 jp Func_3cdec ; known jump sources: 78b4 (1:78b4), 3c539 (f:4539), 3cca4 (f:4ca4), 3cd5a (f:4d5a), 3d739 (f:5739), 3daec (f:5aec), 553e9 (15:53e9) Func_3cd60: ; 3cd60 (f:4d60) xor a ld [H_AUTOBGTRANSFERENABLED], a ; $FF00+$ba ld hl, $c435 ld bc, $50b call ClearScreenArea ld hl, Func_3a902 ld b, BANK(Func_3a902) call Bankswitch ; indirect jump to Func_3a902 (3a902 (e:6902)) ld hl, $c466 ld [hl], $73 ld de, $d009 ld hl, $c436 call Func_3ce9c call PlaceString ld hl, $d014 ld de, $cf98 ld bc, $c call CopyData ld hl, W_PLAYERMONLEVEL ; $d022 ld de, $cfb9 ld bc, $b call CopyData ld hl, $c44e push hl inc hl ld de, $cf9c call PrintStatusConditionNotFainted pop hl jr nz, .asm_3cdae call PrintLevel .asm_3cdae ld a, [$cf98] ld [$cf91], a ld hl, $c45e ld a, $5f call Predef ; indirect jump to Func_128ef (128ef (4:68ef)) ld a, $1 ld [H_AUTOBGTRANSFERENABLED], a ; $FF00+$ba ld hl, $cf1d call Func_3ce90 ld hl, W_PLAYERMONCURHP ; $d015 ld a, [hli] or [hl] jr z, .asm_3cdd9 ld a, [$ccf6] and a ret nz ld a, [$cf1d] cp $2 jr z, .asm_3cde6 .asm_3cdd9 ld hl, $d083 bit 7, [hl] ld [hl], $0 ret z xor a ld [$c02a], a ret .asm_3cde6 ld hl, $d083 set 7, [hl] ret ; known jump sources: 78b9 (1:78b9), 3ca64 (f:4a64), 3cca1 (f:4ca1), 3cd5d (f:4d5d), 3e7bf (f:67bf), 3f02d (f:702d) Func_3cdec: ; 3cdec (f:4dec) xor a ld [H_AUTOBGTRANSFERENABLED], a ; $FF00+$ba ld hl, $c3a0 ld bc, $40c call ClearScreenArea ld hl, Func_3a919 ld b, BANK(Func_3a919) call Bankswitch ; indirect jump to Func_3a919 (3a919 (e:6919)) ld de, $cfda ld hl, $c3a1 call Func_3ce9c call PlaceString ld hl, $c3b8 push hl inc hl ld de, W_ENEMYMONSTATUS ; $cfe9 call PrintStatusConditionNotFainted pop hl jr nz, .asm_3ce23 ld a, [W_ENEMYMONLEVEL] ; $cff3 ld [$cfb9], a call PrintLevel .asm_3ce23 ld hl, W_ENEMYMONCURHP ; $cfe6 ld a, [hli] ld [$FF00+$97], a ld a, [hld] ld [$FF00+$98], a or [hl] jr nz, .asm_3ce36 ld c, a ld e, a ld d, $6 jp Func_3ce7f .asm_3ce36 xor a ld [H_NUMTOPRINT], a ; $FF00+$96 (aliases: H_MULTIPLICAND) ld a, $30 ld [H_REMAINDER], a ; $FF00+$99 (aliases: H_DIVISOR, H_MULTIPLIER, H_POWEROFTEN) call Multiply ld hl, W_ENEMYMONMAXHP ; $cff4 ld a, [hli] ld b, a ld a, [hl] ld [H_REMAINDER], a ; $FF00+$99 (aliases: H_DIVISOR, H_MULTIPLIER, H_POWEROFTEN) ld a, b and a jr z, .asm_3ce6a ld a, [H_REMAINDER] ; $FF00+$99 (aliases: H_DIVISOR, H_MULTIPLIER, H_POWEROFTEN) srl b rr a srl b rr a ld [H_REMAINDER], a ; $FF00+$99 (aliases: H_DIVISOR, H_MULTIPLIER, H_POWEROFTEN) ld a, [$FF00+$97] ld b, a srl b ld a, [$FF00+$98] rr a srl b rr a ld [$FF00+$98], a ld a, b ld [$FF00+$97], a .asm_3ce6a ld a, [$FF00+$97] ld [H_DIVIDEND], a ; $FF00+$95 (aliases: H_PRODUCT, H_PASTLEADINGZEROES, H_QUOTIENT) ld a, [$FF00+$98] ld [H_NUMTOPRINT], a ; $FF00+$96 (aliases: H_MULTIPLICAND) ld a, $2 ld b, a call Divide ld a, [$FF00+$98] ld e, a ld a, $6 ld d, a ld c, a ; known jump sources: 3ce33 (f:4e33) Func_3ce7f: ; 3ce7f (f:4e7f) xor a ld [W_LISTMENUID], a ; $cf94 ld hl, $c3ca call DrawHPBar ld a, $1 ld [H_AUTOBGTRANSFERENABLED], a ; $FF00+$ba ld hl, $cf1e ; known jump sources: 3c669 (f:4669), 3cdc3 (f:4dc3) Func_3ce90: ; 3ce90 (f:4e90) ld b, [hl] call Func_3df9 ld a, [hl] cp b ret z ld b, $1 jp GoPAL_SET ; known jump sources: 3cd7f (f:4d7f), 3ce06 (f:4e06) Func_3ce9c: ; 3ce9c (f:4e9c) push de inc hl inc hl ld b, $2 .asm_3cea1 inc de ld a, [de] cp $50 jr z, .asm_3ceb1 inc de ld a, [de] cp $50 jr z, .asm_3ceb1 dec hl dec b jr nz, .asm_3cea1 .asm_3ceb1 pop de ret ; known jump sources: 3c161 (f:4161), 3c263 (f:4263), 3cffa (f:4ffa), 3d05c (f:505c), 3d102 (f:5102), 3d216 (f:5216) Func_3ceb3: ; 3ceb3 (f:4eb3) call Func_3725 ld a, [W_BATTLETYPE] ; $d05a and a jr nz, .asm_3cec5 call Func_3cd5a call Func_3ee94 call Func_3719 .asm_3cec5 ld a, [W_BATTLETYPE] ; $d05a cp $2 ld a, $b jr nz, .asm_3ced0 ld a, $1b .asm_3ced0 ld [$d125], a call DisplayTextBoxID ld a, [W_BATTLETYPE] ; $d05a dec a jp nz, Func_3cf1a ld hl, W_PLAYERNAME ; $d158 ld de, W_GRASSRATE ; $d887 ld bc, $b call CopyData ld hl, $4f12 ld de, W_PLAYERNAME ; $d158 ld bc, $b call CopyData ld hl, $c4c1 ld [hl], $ed ld c, $50 call DelayFrames ld [hl], $7f ld hl, $c4e9 ld [hl], $ed ld c, $32 call DelayFrames ld [hl], $ec ld a, $2 jp Func_3cfe8 INCBIN "baserom.gbc",$3cf12,$3cf1a - $3cf12 ; known jump sources: 3ceda (f:4eda) Func_3cf1a: ; 3cf1a (f:4f1a) ld a, [$cc2d] ld [W_CURMENUITEMID], a ; $cc26 ld [W_OLDMENUITEMID], a ; $cc2a sub $2 jr c, .asm_3cf2f ld [W_CURMENUITEMID], a ; $cc26 ld [W_OLDMENUITEMID], a ; $cc2a jr .asm_3cf6e .asm_3cf2f ld a, [W_BATTLETYPE] ; $d05a cp $2 ld a, $7f jr z, .asm_3cf42 ld [$c4c7], a ld [$c4ef], a ld b, $9 jr .asm_3cf56 .asm_3cf42 ld [$c4c5], a ld [$c4ed], a ld hl, $c4bf ld de, W_NUMSAFARIBALLS ; $da47 ld bc, $102 call PrintNumber ld b, $1 .asm_3cf56 ld hl, W_TOPMENUITEMY ; $cc24 ld a, $e ld [hli], a ld a, b ld [hli], a inc hl inc hl ld a, $1 ld [hli], a ld [hl], $11 call HandleMenuInput bit 4, a jr nz, .asm_3cf6e jr .asm_3cfb4 .asm_3cf6e ld a, [W_BATTLETYPE] ; $d05a cp $2 ld a, $7f jr z, .asm_3cf81 ld [$c4c1], a ld [$c4e9], a ld b, $f jr .asm_3cf95 .asm_3cf81 ld [$c4b9], a ld [$c4e1], a ld hl, $c4bf ld de, W_NUMSAFARIBALLS ; $da47 ld bc, $102 call PrintNumber ld b, $d .asm_3cf95 ld hl, W_TOPMENUITEMY ; $cc24 ld a, $e ld [hli], a ld a, b ld [hli], a inc hl inc hl ld a, $1 ld [hli], a ld a, $21 ld [hli], a call HandleMenuInput bit 5, a jr nz, .asm_3cf2f ld a, [W_CURMENUITEMID] ; $cc26 add $2 ld [W_CURMENUITEMID], a ; $cc26 .asm_3cfb4 call PlaceUnfilledArrowMenuCursor ld a, [W_BATTLETYPE] ; $d05a cp $2 ld a, [W_CURMENUITEMID] ; $cc26 ld [$cc2d], a jr z, .asm_3cfd0 cp $1 jr nz, .asm_3cfcb inc a jr .asm_3cfd0 .asm_3cfcb cp $2 jr nz, .asm_3cfd0 dec a .asm_3cfd0 and a jr nz, Func_3cfe8 ld a, [W_BATTLETYPE] ; $d05a cp $2 jr z, .asm_3cfe1 xor a ld [$d120], a jp Func_3725 .asm_3cfe1 ld a, $8 ld [$cf91], a jr asm_3d05f ; known jump sources: 3cf0f (f:4f0f), 3cfd1 (f:4fd1) Func_3cfe8: ; 3cfe8 (f:4fe8) cp $2 jp nz, Func_3d0ca ld a, [W_ISLINKBATTLE] ; $d12b cp $4 jr nz, .asm_3cffd ld hl, $50c5 call PrintText jp Func_3ceb3 .asm_3cffd call Func_36f4 ld a, [W_BATTLETYPE] ; $d05a cp $2 jr nz, asm_3d00e ld a, $15 ld [$cf91], a jr asm_3d05f asm_3d00e: ; 3d00e (f:500e) call Func_3725 ld a, [W_BATTLETYPE] ; $d05a and a jr nz, .asm_3d01a call Func_3cd5a .asm_3d01a ld a, [W_BATTLETYPE] ; $d05a dec a jr nz, .asm_3d031 ld hl, $502d ld a, l ld [$cf8b], a ld a, h ld [$cf8c], a jr .asm_3d03c INCBIN "baserom.gbc",$3d02d,$3d031 - $3d02d .asm_3d031 ld hl, W_NUMBAGITEMS ; $d31d ld a, l ld [$cf8b], a ld a, h ld [$cf8c], a .asm_3d03c xor a ld [$cf93], a ld a, $3 ld [W_LISTMENUID], a ; $cf94 ld a, [$cc2c] ld [W_CURMENUITEMID], a ; $cc26 call DisplayListMenuID ld a, [W_CURMENUITEMID] ; $cc26 ld [$cc2c], a ld a, $0 ld [$cc37], a ld [$cc35], a jp c, Func_3ceb3 asm_3d05f: ; 3d05f (f:505f) ld a, [$cf91] ld [$d11e], a call GetItemName call Func_3826 xor a ld [$d152], a call UseItem call Func_3ee5b call CleanLCD_OAM xor a ld [W_CURMENUITEMID], a ; $cc26 ld a, [W_BATTLETYPE] ; $d05a cp $2 jr z, .asm_3d09c ld a, [$cd6a] and a jp z, asm_3d00e ld a, [W_PLAYERBATTSTATUS1] ; $d062 bit 5, a jr z, .asm_3d09c ld hl, $d06a dec [hl] jr nz, .asm_3d09c ld hl, W_PLAYERBATTSTATUS1 ; $d062 res 5, [hl] .asm_3d09c ld a, [$d11c] and a jr nz, .asm_3d0b7 ld a, [W_BATTLETYPE] ; $d05a cp $2 jr z, .asm_3d0b2 call Func_3725 call Func_3cd5a call Delay3 .asm_3d0b2 call GBPalNormal and a ret .asm_3d0b7 call GBPalNormal xor a ld [$d11c], a ld a, $2 ld [$cf0b], a scf ret ; 3d0c5 (f:50c5) UnnamedText_3d0c5: ; 0x3d0c5 TX_FAR _UnnamedText_3d0c5 db $50 ; 0x3d0c5 + 5 bytes ; known jump sources: 3cfea (f:4fea) Func_3d0ca: ; 3d0ca (f:50ca) dec a jp nz, Func_3d1fa call Func_36f4 ld a, [W_BATTLETYPE] ; $d05a cp $2 jr nz, Func_3d0e0 ld a, $16 ld [$cf91], a jp asm_3d05f ; known jump sources: 3d0d6 (f:50d6), 3d187 (f:5187) Func_3d0e0: ; 3d0e0 (f:50e0) call Func_3725 xor a ld [$d07d], a ld [$cc35], a call DisplayPartyMenu asm_3d0ed: ; 3d0ed (f:50ed) jp nc, Func_3d119 asm_3d0f0: ; 3d0f0 (f:50f0) call CleanLCD_OAM call GBPalWhiteOut call Func_3ee5b call Func_3701 call GoPAL_SET_CF1C call GBPalNormal jp Func_3ceb3 ; known jump sources: 3d138 (f:5138), 3d19a (f:519a), 3d1a0 (f:51a0) Func_3d105: ; 3d105 (f:5105) ld hl, $c487 ld bc, $81 ld a, $7f call FillMemory xor a ld [$d07d], a call GoBackToPartyMenu jr asm_3d0ed ; known jump sources: 3d0ed (f:50ed) Func_3d119: ; 3d119 (f:5119) ld a, $c ld [$d125], a call DisplayTextBoxID ld hl, W_TOPMENUITEMY ; $cc24 ld a, $c ld [hli], a ld [hli], a xor a ld [hli], a inc hl ld a, $2 ld [hli], a ld a, $3 ld [hli], a xor a ld [hl], a call HandleMenuInput bit 1, a jr nz, Func_3d105 call PlaceUnfilledArrowMenuCursor ld a, [W_CURMENUITEMID] ; $cc26 cp $2 jr z, asm_3d0f0 and a jr z, .asm_3d18a xor a ld [$cc49], a ld hl, W_PARTYMON1_NUM ; $d16b (aliases: W_PARTYMON1DATA) call CleanLCD_OAM ld a, $36 call Predef ; indirect jump to StatusScreen (12953 (4:6953)) ld a, $37 call Predef ; indirect jump to StatusScreen2 (12b57 (4:6b57)) ld a, [W_ENEMYBATTSTATUS2] ; $d068 bit 4, a ld hl, $56e0 jr nz, .asm_3d182 ld a, [$ccf3] and a ld hl, $559f jr nz, .asm_3d182 ld a, [$cfe5] ld [$cf91], a ld [$d0b5], a call GetBaseStats ld de, $9000 call Func_1665 jr .asm_3d187 .asm_3d182 ld b, $1e call Bankswitch .asm_3d187 jp Func_3d0e0 .asm_3d18a ld a, [W_PLAYERMONNUMBER] ; $cc2f ld d, a ld a, [W_WHICHPOKEMON] ; $cf92 cp d jr nz, .asm_3d19d ld hl, $51f5 call PrintText jp Func_3d105 .asm_3d19d call Func_3ca97 jp z, Func_3d105 ld a, $1 ld [$cd6a], a call GBPalWhiteOut call CleanLCD_OAM call Func_3ee5b call Func_3725 call GoPAL_SET_CF1C call GBPalNormal ; known jump sources: 3ca76 (f:4a76) Func_3d1ba: ; 3d1ba (f:51ba) ld hl, Func_58ed1 ld b, BANK(Func_58ed1) call Bankswitch ; indirect jump to Func_58ed1 (58ed1 (16:4ed1)) ld c, $32 call DelayFrames call Func_3ccfa ld a, [W_WHICHPOKEMON] ; $cf92 ld [W_PLAYERMONNUMBER], a ; $cc2f ld c, a ld b, $1 push bc ld hl, $d058 ld a, $10 call Predef ; indirect jump to Func_f666 (f666 (3:7666)) pop bc ld hl, $ccf5 ld a, $10 call Predef ; indirect jump to Func_f666 (f666 (3:7666)) call Func_3cba6 call Func_3cc91 call Func_3719 ld a, $2 ld [W_CURMENUITEMID], a ; $cc26 and a ret ; 3d1f5 (f:51f5) UnnamedText_3d1f5: ; 0x3d1f5 TX_FAR _UnnamedText_3d1f5 db $50 ; 0x3d1f5 + 5 bytes ; known jump sources: 3d0cb (f:50cb) Func_3d1fa: ; 3d1fa (f:51fa) call Func_3725 ld a, $3 ld [W_CURMENUITEMID], a ; $cc26 ld hl, $d029 ld de, $cffa call Func_3cab9 ld a, $0 ld [$d11f], a ret c ld a, [$cd6a] and a ret nz jp Func_3ceb3 ; known jump sources: e35f (3:635f), 3c299 (f:4299), 3d3ab (f:53ab), 3d490 (f:5490), 3d4b3 (f:54b3) Func_3d219: ; 3d219 (f:5219) ld a, [$ccdb] dec a jr z, asm_3d275 dec a jr z, asm_3d291 jr asm_3d249 ; known jump sources: 3d250 (f:5250), 3d278 (f:5278), 3d29d (f:529d) Func_3d224: ; 3d224 (f:5224) ld de, $d0dc ld bc, $4 call CopyData ld hl, Func_39b87 ld b, BANK(Func_39b87) call Bankswitch ; indirect jump to Func_39b87 (39b87 (e:5b87)) ret ; known jump sources: 3d26c (f:526c), 3d288 (f:5288), 3d2ad (f:52ad) Func_3d236: ; 3d236 (f:5236) ld de, $d0e1 ld a, [$FF00+$f6] set 2, a ld [$FF00+$f6], a call PlaceString ld a, [$FF00+$f6] res 2, a ld [$FF00+$f6], a ret asm_3d249: ; 3d249 (f:5249) call Func_3d3f5 ret z ld hl, $d01c call Func_3d224 ld hl, $c494 ld b, $4 ld c, $e di call TextBoxBorder ld hl, $c494 ld [hl], $7a ld hl, $c49a ld [hl], $7e ei ld hl, $c4aa call Func_3d236 ld b, $5 ld a, $c jr asm_3d2b4 asm_3d275: ; 3d275 (f:5275) ld hl, $cfed call Func_3d224 ld hl, $c42c ld b, $4 ld c, $e call TextBoxBorder ld hl, $c442 call Func_3d236 ld b, $1 ld a, $7 jr asm_3d2b4 asm_3d291: ; 3d291 (f:5291) ld a, [W_WHICHPOKEMON] ; $cf92 ld hl, W_PARTYMON1_MOVE1 ; $d173 ld bc, $2c call AddNTimes call Func_3d224 ld hl, $c430 ld b, $4 ld c, $e call TextBoxBorder ld hl, $c446 call Func_3d236 ld b, $5 ld a, $7 asm_3d2b4: ; 3d2b4 (f:52b4) ld hl, W_TOPMENUITEMY ; $cc24 ld [hli], a ld a, b ld [hli], a ld a, [$ccdb] cp $1 jr z, .asm_3d2c9 ld a, $1 jr nc, .asm_3d2c9 ld a, [W_PLAYERMOVELISTINDEX] ; $cc2e inc a .asm_3d2c9 ld [hli], a inc hl ld a, [$cd6c] inc a inc a ld [hli], a ld a, [$ccdb] dec a ld b, $c1 jr z, .asm_3d2f0 dec a ld b, $c3 jr z, .asm_3d2f0 ld a, [W_ISLINKBATTLE] ; $d12b cp $4 jr z, .asm_3d2f0 ld a, [$d733] bit 0, a ld b, $c7 jr z, .asm_3d2f0 ld b, $ff .asm_3d2f0 ld a, b ld [hli], a ld a, [$ccdb] cp $1 jr z, .asm_3d2fd ld a, [W_PLAYERMOVELISTINDEX] ; $cc2e inc a .asm_3d2fd ld [hl], a ; known jump sources: 3d3cd (f:53cd), 3d3da (f:53da), 3d3e7 (f:53e7), 3d3f2 (f:53f2) Func_3d2fe: ; 3d2fe (f:52fe) ld a, [$ccdb] and a jr z, .asm_3d312 dec a jr nz, .asm_3d32e ld hl, $c4b9 ld de, $53b8 call PlaceString jr .asm_3d32e .asm_3d312 ld a, [$d733] bit 0, a jr nz, .asm_3d32e call Func_3d4b6 ld a, [$cc35] and a jr z, .asm_3d32e ld hl, $c4a9 dec a ld bc, $14 call AddNTimes ld [hl], $ec .asm_3d32e ld hl, $fff6 set 1, [hl] call HandleMenuInput ld hl, $fff6 res 1, [hl] bit 6, a jp nz, Func_3d3c9 bit 7, a jp nz, Func_3d3dd bit 2, a jp nz, Func_3d435 bit 1, a push af xor a ld [$cc35], a ld a, [W_CURMENUITEMID] ; $cc26 dec a ld [W_CURMENUITEMID], a ; $cc26 ld b, a ld a, [$ccdb] dec a jr nz, .asm_3d361 pop af ret .asm_3d361 dec a ld a, b ld [W_PLAYERMOVELISTINDEX], a ; $cc2e jr nz, .asm_3d36a pop af ret .asm_3d36a pop af ret nz ld hl, W_PLAYERMONPP ; $d02d ld a, [W_CURMENUITEMID] ; $cc26 ld c, a ld b, $0 add hl, bc ld a, [hl] and $3f jr z, .asm_3d3a2 ld a, [W_PLAYERDISABLEDMOVE] ; $d06d swap a and $f dec a cp c jr z, .asm_3d39d ld a, [W_PLAYERBATTSTATUS3] ; $d064 bit 3, a jr nz, .asm_3d38d .asm_3d38d ld a, [W_CURMENUITEMID] ; $cc26 ld hl, $d01c ld c, a ld b, $0 add hl, bc ld a, [hl] ld [W_PLAYERSELECTEDMOVE], a ; $ccdc xor a ret .asm_3d39d ld hl, $53b3 jr .asm_3d3a5 .asm_3d3a2 ld hl, $53ae .asm_3d3a5 call PrintText call Func_3725 jp Func_3d219 ; 3d3ae (f:53ae) 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,$3d3c9 - $3d3b8 ; known jump sources: 3d33d (f:533d) Func_3d3c9: ; 3d3c9 (f:53c9) ld a, [W_CURMENUITEMID] ; $cc26 and a jp nz, Func_3d2fe call EraseMenuCursor ld a, [$cd6c] inc a ld [W_CURMENUITEMID], a ; $cc26 jp Func_3d2fe ; known jump sources: 3d342 (f:5342) Func_3d3dd: ; 3d3dd (f:53dd) ld a, [W_CURMENUITEMID] ; $cc26 ld b, a ld a, [$cd6c] inc a inc a cp b jp nz, Func_3d2fe call EraseMenuCursor ld a, $1 ld [W_CURMENUITEMID], a ; $cc26 jp Func_3d2fe ; known jump sources: 3d249 (f:5249) Func_3d3f5: ; 3d3f5 (f:53f5) ld a, $a5 ld [W_PLAYERSELECTEDMOVE], a ; $ccdc ld a, [W_PLAYERDISABLEDMOVE] ; $d06d and a ld hl, W_PLAYERMONPP ; $d02d jr nz, .asm_3d40e ld a, [hli] or [hl] inc hl or [hl] inc hl or [hl] and $3f ret nz jr .asm_3d423 .asm_3d40e swap a and $f ld b, a ld d, $5 xor a .asm_3d416 dec d jr z, .asm_3d421 ld c, [hl] inc hl dec b jr z, .asm_3d416 or c jr .asm_3d416 .asm_3d421 and a ret nz .asm_3d423 ld hl, $5430 call PrintText ld c, $3c call DelayFrames xor a ret ; 3d430 (f:5430) UnnamedText_3d430: ; 0x3d430 TX_FAR _UnnamedText_3d430 db $50 ; 0x3d430 + 5 bytes ; known jump sources: 3d347 (f:5347) Func_3d435: ; 3d435 (f:5435) ld a, [$cc35] and a jr z, asm_3d4ad ld hl, $d01c call Func_3d493 ld hl, W_PLAYERMONPP ; $d02d call Func_3d493 ld hl, W_PLAYERDISABLEDMOVE ; $d06d ld a, [hl] swap a and $f ld b, a ld a, [W_CURMENUITEMID] ; $cc26 cp b jr nz, .asm_3d463 ld a, [hl] and $f ld b, a ld a, [$cc35] swap a add b ld [hl], a jr .asm_3d474 .asm_3d463 ld a, [$cc35] cp b jr nz, .asm_3d474 ld a, [hl] and $f ld b, a ld a, [W_CURMENUITEMID] ; $cc26 swap a add b ld [hl], a .asm_3d474 ld hl, W_PARTYMON1_MOVE1 ; $d173 ld a, [W_PLAYERMONNUMBER] ; $cc2f ld bc, $2c call AddNTimes push hl call Func_3d493 pop hl ld bc, $15 add hl, bc call Func_3d493 xor a ld [$cc35], a jp Func_3d219 ; known jump sources: 3d43e (f:543e), 3d444 (f:5444), 3d481 (f:5481), 3d489 (f:5489) Func_3d493: ; 3d493 (f:5493) push hl ld a, [$cc35] dec a ld c, a ld b, $0 add hl, bc ld d, h ld e, l pop hl ld a, [W_CURMENUITEMID] ; $cc26 dec a ld c, a ld b, $0 add hl, bc ld a, [de] ld b, [hl] ld [hl], a ld a, b ld [de], a ret asm_3d4ad: ; 3d4ad (f:54ad) ld a, [W_CURMENUITEMID] ; $cc26 ld [$cc35], a jp Func_3d219 ; known jump sources: 3d319 (f:5319) Func_3d4b6: ; 3d4b6 (f:54b6) xor a ld [H_AUTOBGTRANSFERENABLED], a ; $FF00+$ba ld hl, $c440 ld b, $3 ld c, $9 call TextBoxBorder ld a, [W_PLAYERDISABLEDMOVE] ; $d06d and a jr z, .asm_3d4df swap a and $f ld b, a ld a, [W_CURMENUITEMID] ; $cc26 cp b jr nz, .asm_3d4df ld hl, $c469 ld de, $5555 call PlaceString jr .asm_3d54e .asm_3d4df ld hl, W_CURMENUITEMID ; $cc26 dec [hl] xor a ld [H_WHOSETURN], a ; $FF00+$f3 ld hl, $d01c ld a, [W_CURMENUITEMID] ; $cc26 ld c, a ld b, $0 add hl, bc ld a, [hl] ld [W_PLAYERSELECTEDMOVE], a ; $ccdc ld a, [W_PLAYERMONNUMBER] ; $cc2f ld [W_WHICHPOKEMON], a ; $cf92 ld a, $4 ld [$cc49], a ld hl, GetMaxPP ld b, BANK(GetMaxPP) call Bankswitch ; indirect jump to GetMaxPP (e677 (3:6677)) ld hl, W_CURMENUITEMID ; $cc26 ld c, [hl] inc [hl] ld b, $0 ld hl, W_PLAYERMONPP ; $d02d add hl, bc ld a, [hl] and $3f ld [$cd6d], a ld hl, $c455 ld de, $555f call PlaceString ld hl, $c483 ld [hl], $f3 ld hl, $c459 ld [hl], $f3 ld hl, $c481 ld de, $cd6d ld bc, $102 call PrintNumber ld hl, $c484 ld de, $d11e ld bc, $102 call PrintNumber call Func_3eabe ld hl, $c46a ld a, $5d call Predef ; indirect jump to Func_27d98 (27d98 (9:7d98)) .asm_3d54e ld a, $1 ld [H_AUTOBGTRANSFERENABLED], a ; $FF00+$ba jp Delay3 INCBIN "baserom.gbc",$3d555,$3d564 - $3d555 SelectEnemyMove: ; 5564 0x3d564 ld a, [W_ISLINKBATTLE] sub $4 jr nz, .noLinkBattle call $3719 call $5605 call $3725 ld a, [$cc3e] cp $e jp z, .asm_3d601 cp $d jr z, .unableToMove cp $4 ret nc ld [$cce2], a ld c, a ld hl, $cfed ld b, $0 add hl, bc ld a, [hl] jr .done .noLinkBattle ld a, [W_ENEMYBATTSTATUS2] and $60 ; need to recharge or using rage ret nz ld hl, W_ENEMYBATTSTATUS1 ld a, [hl] and $12 ; using multi-turn move or bide ret nz ld a, [W_ENEMYMONSTATUS] and SLP | FRZ ; sleeping or frozen ret nz ld a, [W_ENEMYBATTSTATUS1] and $21 ; using fly/dig or thrash/petal dance ret nz ld a, [W_PLAYERBATTSTATUS1] bit 5, a ; caught in player's multi-turn move (e.g. wrap) jr z, .notCaughtInWrap .unableToMove ld a, $ff jr .done .notCaughtInWrap ld hl, $cfee ; 2nd enemy move ld a, [hld] and a jr nz, .atLeastTwoMovesAvailable ld a, [W_ENEMYDISABLEDMOVE] and a ld a, STRUGGLE ; struggle if the only move is disabled jr nz, .done .atLeastTwoMovesAvailable ld a, [W_ISINBATTLE] dec a jr z, .chooseRandomMove ; wild encounter ld hl, AIEnemyTrainerChooseMoves ld b, BANK(AIEnemyTrainerChooseMoves) call Bankswitch .chooseRandomMove push hl call GenRandomInBattle ; get random ld b, $1 cp $3f ; select move 1 in [0,3e] (63/256 chance) jr c, .moveChosen inc hl inc b cp $7f ; select move 1 in [3f,7e] (64/256 chance) jr c, .moveChosen inc hl inc b cp $be ; select move 1 in [7f,bd] (63/256 chance) jr c, .moveChosen inc hl inc b ; select move 4 in [be,ff] (66/256 chance) .moveChosen ld a, b dec a ld [W_ENEMYMOVELISTINDEX], a ld a, [W_ENEMYDISABLEDMOVE] swap a and $f cp b ld a, [hl] pop hl jr z, .chooseRandomMove ; move disabled, try again and a jr z, .chooseRandomMove ; move non-existant, try again .done ld [W_ENEMYSELECTEDMOVE], a ret .asm_3d601 ld a, $a5 jr .done ; known jump sources: 3c67b (f:467b), 3c7f7 (f:47f7), 3cb71 (f:4b71), 3d56e (f:556e) Func_3d605: ; 3d605 (f:5605) ld a, $ff ld [$cc3e], a ld a, [W_PLAYERMOVELISTINDEX] ; $cc2e cp $f jr z, .asm_3d630 ld a, [$cd6a] and a jr nz, .asm_3d629 ld a, [W_PLAYERSELECTEDMOVE] ; $ccdc cp $a5 ld b, $e jr z, .asm_3d62f dec b inc a jr z, .asm_3d62f ld a, [W_PLAYERMOVELISTINDEX] ; $cc2e jr .asm_3d630 .asm_3d629 ld a, [W_WHICHPOKEMON] ; $cf92 add $4 ld b, a .asm_3d62f ld a, b .asm_3d630 ld [$cc42], a ld hl, Func_4c05 ld b, BANK(Func_4c05) call Bankswitch ; indirect jump to Func_4c05 (4c05 (1:4c05)) .asm_3d63b call Func_22c3 call DelayFrame ld a, [$cc3e] inc a jr z, .asm_3d63b ld b, $a .asm_3d649 call DelayFrame call Func_22c3 dec b jr nz, .asm_3d649 ld b, $a .asm_3d654 call DelayFrame call Func_22ed dec b jr nz, .asm_3d654 ret ; known jump sources: 3c361 (f:4361), 3c37d (f:437d) Func_3d65e: ; 3d65e (f:565e) xor a ld [H_WHOSETURN], a ; $FF00+$f3 ld a, [W_PLAYERSELECTEDMOVE] ; $ccdc inc a jp z, Function580A xor a ld [W_MOVEMISSED], a ; $d05f ld [$cced], a ld [$ccf4], a ld a, $a ld [$d05b], a ld a, [$cd6a] and a jp nz, Function580A call Function5811 jp z, Function580A call Function5854 jr nz, .asm_3d68a jp [hl] .asm_3d68a call Func_3eabe ld hl, W_PLAYERBATTSTATUS1 ; $d062 bit 4, [hl] jr nz, asm_3d6a9 call Func_3dc88 jp z, Function580A ; known jump sources: 3d777 (f:5777), 3d781 (f:5781) Func_3d69a: ; 3d69a (f:569a) ld a, [W_PLAYERMOVEEFFECT] ; $cfd3 cp $27 jp z, Func_3f132 cp $2b jp z, Func_3f132 jr asm_3d6b0 ; 3d6a9 (f:56a9) ; in-battle stuff asm_3d6a9: ld hl,W_PLAYERBATTSTATUS1 res 4,[hl] res 6,[hl] asm_3d6b0: 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 CalculateDamage call MoreCalculateDamage 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 DelayFrames 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 GenRandomInBattle 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 GenRandomInBattle ; 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 GenRandomInBattle ; 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 ; known jump sources: 3da01 (f:5a01) Func_3da1a: ; 3da1a (f:5a1a) ld a, [W_PLAYERBATTSTATUS2] ; $d063 bit 6, a jp z, Func_3da39 ld a, $63 ld [$d11e], a call GetMoveName call Func_3826 xor a ld [W_PLAYERMOVEEFFECT], a ; $cfd3 ld hl, $56b0 jp Func_3da37 ; known jump sources: 3d881 (f:5881), 3d895 (f:5895), 3d8a9 (f:58a9), 3d8bf (f:58bf), 3d8d4 (f:58d4), 3d93b (f:593b), 3d972 (f:5972), 3d998 (f:5998), 3d9cd (f:59cd), 3d9e6 (f:59e6), 3d9fc (f:59fc), 3da14 (f:5a14), 3da17 (f:5a17), 3da34 (f:5a34) Func_3da37: ; 3da37 (f:5a37) xor a ret ; known jump sources: 3da1f (f:5a1f) Func_3da39: ; 3da39 (f:5a39) ld a, $1 and a ret ; 3da3d (f:5a3d) 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 "@" ; known jump sources: 3d935 (f:5935), 3e9b6 (f:69b6) Func_3da88: ; 3da88 (f:5a88) ld hl, W_PLAYERSELECTEDMOVE ; $ccdc ld de, W_PLAYERBATTSTATUS1 ; $d062 ld a, [H_WHOSETURN] ; $FF00+$f3 and a jr z, .asm_3da97 inc hl ld de, W_ENEMYBATTSTATUS1 ; $d067 .asm_3da97 ld a, [de] res 4, a ld [de], a ld a, [hl] ld [$d11e], a call GetMoveName ld hl, $5aa8 jp PrintText ; 3daa8 (f:5aa8) UnnamedText_3daa8: ; 0x3daa8 TX_FAR _UnnamedText_3daa8 db $50 ; 0x3daa8 + 5 bytes ; known jump sources: 3d924 (f:5924), 3dd08 (f:5d08) Func_3daad: ; 3daad (f:5aad) ld hl, $5a65 call PrintText ld hl, W_ENEMYMONDEFENSE ; $cff8 ld a, [hli] push af ld a, [hld] push af ld a, [$d027] ld [hli], a ld a, [$d028] ld [hl], a ld hl, W_PLAYERMOVEEFFECT ; $cfd3 push hl ld a, [hl] push af xor a ld [hli], a ld [$d05e], a ld a, $28 ld [hli], a xor a ld [hl], a call CalculateDamage call MoreCalculateDamage pop af pop hl ld [hl], a ld hl, $cff9 pop af ld [hld], a pop af ld [hl], a xor a ld [$cc5b], a inc a ld [H_WHOSETURN], a ; $FF00+$f3 call PlayMoveAnimation call Func_3cd60 xor a ld [H_WHOSETURN], a ; $FF00+$f3 jp ApplyDamageToPlayerPokemon ; known jump sources: 3d6b0 (f:56b0), 3e72f (f:672f) Func_3daf5: ; 3daf5 (f:5af5) ld hl, $5afb jp PrintText INCBIN "baserom.gbc",$3dafb,$3db00 - $3dafb ld a, [H_WHOSETURN] ; $FF00+$f3 and a ld a, [W_PLAYERMOVENUM] ; $cfd2 ld hl, $ccf1 jr z, .asm_3db11 ld a, [W_ENEMYMOVENUM] ; $cfcc ld hl, $ccf2 .asm_3db11 ld [hl], a ld [$d11e], a call Func_3db85 ld a, [$cced] and a ld hl, $5b34 ret nz ld a, [$d11e] cp $3 ld hl, $5b34 ret c ld hl, $5b2d ret INCBIN "baserom.gbc",$3db2d,$3db32 - $3db2d jr .asm_3db39 INCBIN "baserom.gbc",$3db34,$3db39 - $3db34 .asm_3db39 ld a, [$cced] and a jr z, .asm_3db48 ld hl, $5b43 ret INCBIN "baserom.gbc",$3db43,$3db48 - $3db43 .asm_3db48 ld hl, $5b4c ret INCBIN "baserom.gbc",$3db4c,$3db51 - $3db4c ld hl, $5b62 ld a, [$d11e] add a push bc ld b, $0 ld c, a add hl, bc pop bc ld a, [hli] ld h, [hl] ld l, a ret INCBIN "baserom.gbc",$3db62,$3db6c - $3db62 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 ; known jump sources: 3db15 (f:5b15) Func_3db85: ; 3db85 (f:5b85) push bc ld a, [$d11e] ld c, a ld b, $0 ld hl, $5ba3 .asm_3db8f ld a, [hli] cp $ff jr z, .asm_3db9d cp c jr z, .asm_3db9d and a jr nz, .asm_3db8f inc b jr .asm_3db8f .asm_3db9d ld a, b ld [$d11e], a pop bc ret INCBIN "baserom.gbc",$3dba3,$3dbe2 - $3dba3 ; known jump sources: 3d799 (f:5799), 3e81e (f:681e) Func_3dbe2: ; 3dbe2 (f:5be2) ld de, W_PLAYERMOVEEFFECT ; $cfd3 ld a, [H_WHOSETURN] ; $FF00+$f3 and a jr z, .asm_3dbed ld de, W_ENEMYMOVEEFFECT ; $cfcd .asm_3dbed ld hl, $5c57 ld a, [$d05b] and $7f jr z, .asm_3dc04 ld hl, $5c42 ld a, [$d05e] cp $ff jr nz, .asm_3dc04 ld hl, $5c4c .asm_3dc04 push de call PrintText xor a ld [$d05e], a pop de ld a, [de] cp $2d ret nz ld hl, W_DAMAGE ; $d0d7 ld a, [hli] ld b, [hl] srl a rr b srl a rr b srl a rr b ld [hl], b dec hl ld [hli], a or b jr nz, .asm_3dc2a inc a ld [hl], a .asm_3dc2a ld hl, $5c47 call PrintText ld b, $4 ld a, $24 call Predef ; indirect jump to Func_48125 (48125 (12:4125)) ld a, [H_WHOSETURN] ; $FF00+$f3 and a jr nz, .asm_3dc3f jp ApplyDamageToPlayerPokemon .asm_3dc3f jp ApplyDamageToEnemyPokemon ; 3dc42 (f:5c42) 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 ; known jump sources: 52670 (14:6670) Func_3dc51: ; 3dc51 (f:5c51) ld hl, $5c57 jp PrintText ; 3dc57 (f:5c57) UnnamedText_3dc57: ; 0x3dc57 TX_FAR _UnnamedText_3dc57 db $50 ; 0x3dc57 + 5 bytes ; known jump sources: 3d7a9 (f:57a9), 3e82e (f:682e) Func_3dc5c: ; 3dc5c (f:5c5c) ld a, [$d05e] and a jr z, .asm_3dc75 dec a add a ld hl, $5c7a ld b, $0 ld c, a add hl, bc ld a, [hli] ld h, [hl] ld l, a call PrintText xor a ld [$d05e], a .asm_3dc75 ld c, $14 jp DelayFrames INCBIN "baserom.gbc",$3dc7a,$3dc7e - $3dc7a UnnamedText_3dc7e: ; 0x3dc7e TX_FAR _UnnamedText_3dc7e db $50 ; 0x3dc7e + 5 bytes UnnamedText_3dc83: ; 0x3dc83 TX_FAR _UnnamedText_3dc83 db $50 ; 0x3dc83 + 5 bytes ; known jump sources: 3d694 (f:5694) Func_3dc88: ; 3dc88 (f:5c88) xor a ld [$cced], a ld a, [W_ISLINKBATTLE] ; $d12b cp $4 jr nz, .asm_3dc97 ld a, $1 and a ret .asm_3dc97 ld hl, W_PARTYMON1_OTID ; $d177 ld bc, $2c ld a, [W_PLAYERMONNUMBER] ; $cc2f call AddNTimes ld a, [W_PLAYERIDHI] ; $d359 cp [hl] jr nz, .asm_3dcb1 inc hl ld a, [W_PLAYERIDLO] ; $d35a cp [hl] jp z, Func_3ddb0 .asm_3dcb1 ld hl, W_OBTAINEDBADGES ; $d356 bit 7, [hl] ld a, $65 jr nz, .asm_3dcce bit 5, [hl] ld a, $46 jr nz, .asm_3dcce bit 3, [hl] ld a, $32 jr nz, .asm_3dcce bit 1, [hl] ld a, $1e jr nz, .asm_3dcce ld a, $a .asm_3dcce ld b, a ld c, a ld a, [W_PLAYERMONLEVEL] ; $d022 ld d, a add b ld b, a jr nc, .asm_3dcda ld b, $ff .asm_3dcda ld a, c cp d jp nc, Func_3ddb0 .asm_3dcdf call GenRandomInBattle swap a cp b jr nc, .asm_3dcdf cp c jp c, Func_3ddb0 .asm_3dceb call GenRandomInBattle cp b jr nc, .asm_3dceb cp c jr c, .asm_3dd3f ld a, d sub c ld b, a call GenRandomInBattle swap a sub b jr c, .asm_3dd0e cp b jr nc, .asm_3dd20 ld hl, $5dc0 call PrintText call Func_3daad jp Func_3ddb4 .asm_3dd0e call GenRandomInBattle add a swap a and $7 jr z, .asm_3dd0e ld [W_PLAYERMONSTATUS], a ; $d018 ld hl, $5dbb jr .asm_3dd3a .asm_3dd20 call GenRandomInBattle and $3 ld hl, $5db6 and a jr z, .asm_3dd3a ld hl, $5dc0 dec a jr z, .asm_3dd3a ld hl, $5dc5 dec a jr z, .asm_3dd3a ld hl, $5dca .asm_3dd3a call PrintText jr Func_3ddb4 .asm_3dd3f ld a, [$d01d] and a jr z, .asm_3dd20 ld a, [$ccee] and a jr nz, .asm_3dd20 ld a, [W_PLAYERSELECTEDMOVE] ; $ccdc cp $a5 jr z, .asm_3dd20 ld hl, W_PLAYERMONPP ; $d02d push hl ld a, [hli] and $3f ld b, a ld a, [hli] and $3f add b ld b, a ld a, [hli] and $3f add b ld b, a ld a, [hl] and $3f add b pop hl push af ld a, [W_CURMENUITEMID] ; $cc26 ld c, a ld b, $0 add hl, bc ld a, [hl] and $3f ld b, a pop af cp b jr z, .asm_3dd20 ld a, $1 ld [$cced], a ld a, [W_MAXMENUITEMID] ; $cc28 ld b, a ld a, [W_CURMENUITEMID] ; $cc26 ld c, a .asm_3dd86 call GenRandomInBattle and $3 cp b jr nc, .asm_3dd86 cp c jr z, .asm_3dd86 ld [W_CURMENUITEMID], a ; $cc26 ld hl, W_PLAYERMONPP ; $d02d ld e, a ld d, $0 add hl, de ld a, [hl] and a jr z, .asm_3dd86 ld a, [W_CURMENUITEMID] ; $cc26 ld c, a ld b, $0 ld hl, $d01c add hl, bc ld a, [hl] ld [W_PLAYERSELECTEDMOVE], a ; $ccdc call Func_3eabe ; known jump sources: 3dcae (f:5cae), 3dcdc (f:5cdc), 3dce8 (f:5ce8) Func_3ddb0: ; 3ddb0 (f:5db0) ld a, $1 and a ret ; known jump sources: 3dd0b (f:5d0b), 3dd3d (f:5d3d) Func_3ddb4: ; 3ddb4 (f:5db4) xor a ret ; 3ddb6 (f:5db6) 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 CalculateDamage: ; 0x3ddcf xor a ld hl, W_DAMAGE ;damage to eventually inflict, intitialise to zero ldi [hl], a ld [hl], a ld hl, W_PLAYERMOVEPOWER ld a, [hli] ;*read attack base power and a ld d, a ;*D = attack base, used later ret z ;return if attack is zero ld a, [hl] ;*test attacking type cp a, $14 ;types >= $14 are all special jr nc, .specialAttack .physicalAttack ld hl, W_ENEMYMONDEFENSE ;opponent defense ld a, [hli] ;*BC = opponent defense used later ld b, a ld c, [hl] ld a, [W_ENEMYBATTSTATUS3] ;test for reflect bit 2, a jr z, .next .doubleDefense sla c ;x2 defense if bit2 of D069 is set rl b .next ld hl, $d025 ;attack pointer ld a, [$d05e] and a jr z, .next3 ld c, 3 call $5f1c ld a, [$ff00+$97] ld b, a ld a, [$ff00+$98] ld c, a push bc ld hl, $d18f ld a, [W_PLAYERMONNUMBER] ld bc, $002c call AddNTimes pop bc jr .next3 .specialAttack ld hl, W_ENEMYMONSPECIAL ;opponent special ld a, [hli] ;*BC = opponent special defense used later ld b, a ld c, [hl] ld a, [W_ENEMYBATTSTATUS3] ;test for lightscreen bit 1, a jr z, .next2 .doubleSpecialDefense sla c ;x2 special defense if bit1 of D069 set rl b .next2 ld hl, $d02b ld a, [$d05e] ;XXX and a jr z, .next3 ;skip portion of code that pulls up inactive pokemon .loadOtherPoke ld c, 5 call $5f1c ld a, [$ff00+$97] ld b, a ld a, [$ff00+$98] ld c, a push bc ld hl, $d195 ld a, [W_PLAYERMONNUMBER] ld bc, $002c call AddNTimes pop bc .next3 ld a, [hli] ;HL: when this was taken ld l, [hl] ld h, a ;*HL = attacker attack or b ;is either attack or defense high byte nonzero? jr z, .next4 srl b ;[defense] BC /= 4 [this is just so it fits into a single byte, 10bits max] rr c srl b rr c srl h ;[attack] HL /= 4 [to apply equal scaling] rr l srl h rr l ld a, l or h jr nz, .next4 ;is HL result zero? inc l ;minimum HL = 1 .next4 ld b, l ;*B = attack [possibly scaled] [C contains defense] ld a, [$d022] ;*E = level ld e, a ld a, [$d05e] ;critical hit? and a jr z, .next5 sla e ;double level if it was a critical hit .next5 ld a, 1 ;return Z = 0 and a ret ; known jump sources: 3e76d (f:676d), 3e986 (f:6986) Func_3de75: ; 3de75 (f:5e75) ld hl, W_DAMAGE ; $d0d7 xor a ld [hli], a ld [hl], a ld hl, W_ENEMYMOVEPOWER ; $cfce ld a, [hli] ld d, a and a ret z ld a, [hl] cp $14 jr nc, .asm_3debc ld hl, $d027 ld a, [hli] ld b, a ld c, [hl] ld a, [W_PLAYERBATTSTATUS3] ; $d064 bit 2, a jr z, .asm_3de98 sla c rl b .asm_3de98 ld hl, $cff6 ld a, [$d05e] and a jr z, .asm_3deef ld hl, W_PARTYMON1_DEFENSE ; $d191 ld a, [W_PLAYERMONNUMBER] ; $cc2f ld bc, $2c call AddNTimes ld a, [hli] ld b, a ld c, [hl] push bc ld c, $2 call Func_3df1c ld hl, $ff97 pop bc jr .asm_3deef .asm_3debc ld hl, $d02b ld a, [hli] ld b, a ld c, [hl] ld a, [W_PLAYERBATTSTATUS3] ; $d064 bit 1, a jr z, .asm_3decd sla c rl b .asm_3decd ld hl, W_ENEMYMONSPECIAL ; $cffc ld a, [$d05e] and a jr z, .asm_3deef ld hl, W_PARTYMON1_SPECIAL ; $d195 ld a, [W_PLAYERMONNUMBER] ; $cc2f ld bc, $2c call AddNTimes ld a, [hli] ld b, a ld c, [hl] push bc ld c, $5 call Func_3df1c ld hl, $ff97 pop bc .asm_3deef ld a, [hli] ld l, [hl] ld h, a or b jr z, .asm_3df0a srl b rr c srl b rr c srl h rr l srl h rr l ld a, l or h jr nz, .asm_3df0a inc l .asm_3df0a ld b, l ld a, [W_ENEMYMONLEVEL] ; $cff3 ld e, a ld a, [$d05e] and a jr z, .asm_3df17 sla e .asm_3df17 ld a, $1 and a and a ret ; known jump sources: 3ddfd (f:5dfd), 3de32 (f:5e32), 3deb3 (f:5eb3), 3dee8 (f:5ee8) Func_3df1c: ; 3df1c (f:5f1c) push de push bc ld a, [W_ISLINKBATTLE] ; $d12b cp $4 jr nz, .asm_3df40 ld hl, $d8c6 dec c sla c ld b, $0 add hl, bc ld a, [W_ENEMYMONNUMBER] ; $cfe8 ld bc, $2c call AddNTimes ld a, [hli] ld [$FF00+$97], a ld a, [hl] ld [$FF00+$98], a pop bc pop de ret .asm_3df40 ld a, [W_ENEMYMONLEVEL] ; $cff3 ld [W_CURENEMYLVL], a ; $d127 ld a, [$cfe5] ld [$d0b5], a call GetBaseStats ld hl, $cff1 ld de, $cfaf ld a, [hli] ld [de], a inc de ld a, [hl] ld [de], a pop bc ld b, $0 ld hl, $cfa4 call Func_394a pop de ret ; 3df65 (f:5f65) MoreCalculateDamage: ;$3df65 ld a, [$ff00+$f3] ;FFF3 decides which address to use and a ld a, [W_PLAYERMOVEEFFECT] jr z, .next ld a, [$cfcd] .next cp a, 7 ;effect to halve opponent defense [suicide moves] jr nz, .next2 .halveDefense srl c ;explosion and selfdestruct will halve the defense... jr nz, .next2 inc c ;...with a minimum value of 1 [it is used as a divisor later on] .next2 cp a, $1d jr z, .next3 cp a, $1e jr z, .next3 cp a, $26 ;OHKO? jp z, $6016 ld a, d ;if attack base power zero then do nothing and a ret z .next3 xor a ld hl, $ff95 ;multiplication address ldi [hl], a ;init to zero ldi [hl], a ld [hl], a ld a, e add a ;A = level *2 jr nc, .noCarry .carry push af ld a, 1 ;add carry for level if needed ld [hl], a ;level high byte [previously zero] pop af .noCarry inc hl ldi [hl], a ;level low byte ld a, 5 ;[divisor] = 5 ldd [hl], a push bc ld b, 4 call Divide ;divide level by 5 pop bc inc [hl] ;+2 [?] inc [hl] inc hl ;8bit multiplier ld [hl], d call Multiply ;*multiply by attack base power ld [hl], b call Multiply ;*multiply by attacker attack stat ld [hl], c ld b, 4 call Divide ;*divide by defender defense stat ld [hl], $32 ld b, 4 call Divide ;divide above result by 50 ld hl, W_DAMAGE ;[stuff below I never got to, was only interested in stuff above] ld b, [hl] ld a, [$FF00+$98] add b ld [$FF00+$98], a jr nc, .asm_3dfd0 ld a, [$FF00+$97] inc a ld [$FF00+$97], a and a jr z, .asm_3e004 .asm_3dfd0 ld a, [H_DIVIDEND] ; $FF00+$95 (aliases: H_PRODUCT, H_PASTLEADINGZEROES, H_QUOTIENT) ld b, a ld a, [H_NUMTOPRINT] ; $FF00+$96 (aliases: H_MULTIPLICAND) or a jr nz, .asm_3e004 ld a, [$FF00+$97] cp $3 jr c, .asm_3dfe8 cp $4 jr nc, .asm_3e004 ld a, [$FF00+$98] cp $e6 jr nc, .asm_3e004 .asm_3dfe8 inc hl ld a, [$FF00+$98] ld b, [hl] add b ld [hld], a ld a, [$FF00+$97] ld b, [hl] adc b ld [hl], a jr c, .asm_3e004 ld a, [hl] cp $3 jr c, .asm_3e00a cp $4 jr nc, .asm_3e004 inc hl ld a, [hld] cp $e6 jr c, .asm_3e00a .asm_3e004 ld a, $3 ld [hli], a ld a, $e5 ld [hld], a .asm_3e00a inc hl ld a, [hl] add $2 ld [hld], a jr nc, .asm_3e012 inc [hl] .asm_3e012 ld a, $1 and a ret ; known jump sources: 3df83 (f:5f83) Func_3e016: ; 3e016 (f:6016) call Func_3f132 ld a, [W_MOVEMISSED] ; $d05f dec a ret INCBIN "baserom.gbc",$3e01e,$3e023 - $3e01e ; known jump sources: 3d6eb (f:56eb), 3e762 (f:6762) Func_3e023: ; 3e023 (f:6023) xor a ld [$d05e], a ld a, [H_WHOSETURN] ; $FF00+$f3 and a ld a, [$cfe5] jr nz, .asm_3e032 ld a, [$d014] .asm_3e032 ld [$d0b5], a call GetBaseStats ld a, [$d0bc] ld b, a srl b ld a, [H_WHOSETURN] ; $FF00+$f3 and a ld hl, W_PLAYERMOVEPOWER ; $cfd4 ld de, W_PLAYERBATTSTATUS2 ; $d063 jr z, CriticalHitProbability ld hl, W_ENEMYMOVEPOWER ; $cfce ld de, W_ENEMYBATTSTATUS2 ; $d068 ; 3e04f (f:604f) ; 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 GenRandomInBattle ; 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 ApplyAttackToEnemyPokemon: ; 60DF ld a,[W_PLAYERMOVEEFFECT] cp a,OHKO_EFFECT jr z,ApplyDamageToEnemyPokemon cp a,SUPER_FANG_EFFECT jr z,.superFangEffect cp a,SPECIAL_DAMAGE_EFFECT jr z,.specialDamage ld a,[W_PLAYERMOVEPOWER] and a jp z,ApplyAttackToEnemyPokemonDone jr ApplyDamageToEnemyPokemon .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,ApplyDamageToEnemyPokemon ; make sure Super Fang's damage is always at least 1 ld a,$01 ld [de],a jr ApplyDamageToEnemyPokemon .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 GenRandomInBattle ; 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 ApplyDamageToEnemyPokemon: ld hl,W_DAMAGE ld a,[hli] ld b,a ld a,[hl] or b jr z,ApplyAttackToEnemyPokemonDone ; 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 ApplyAttackToEnemyPokemonDone: jp $4d5a ; redraw pokemon names and HP bars ApplyAttackToPlayerPokemon: ; 61A0 ld a,[W_ENEMYMOVEEFFECT] cp a,OHKO_EFFECT jr z,ApplyDamageToPlayerPokemon cp a,SUPER_FANG_EFFECT jr z,.superFangEffect cp a,SPECIAL_DAMAGE_EFFECT jr z,.specialDamage ld a,[W_ENEMYMOVEPOWER] and a jp z,ApplyAttackToPlayerPokemonDone jr ApplyDamageToPlayerPokemon .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,ApplyDamageToPlayerPokemon ; make sure Super Fang's damage is always at least 1 ld a,$01 ld [de],a jr ApplyDamageToPlayerPokemon .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 GenRandomInBattle ; 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 ApplyDamageToPlayerPokemon: ld hl,W_DAMAGE ld a,[hli] ld b,a ld a,[hl] or b jr z,ApplyAttackToPlayerPokemonDone ; 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 ApplyAttackToPlayerPokemonDone 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 GenRandomInBattle ; 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 GenRandomInBattle ; 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 ; known jump sources: 3d6ff (f:56ff), 3e77c (f:677c) Func_3e687: ; 3e687 (f:6687) ld hl, W_DAMAGE ; $d0d7 ld a, [hli] and a jr nz, .asm_3e692 ld a, [hl] cp $2 ret c .asm_3e692 xor a ld [H_NUMTOPRINT], a ; $FF00+$96 (aliases: H_MULTIPLICAND) dec hl ld a, [hli] ld [$FF00+$97], a ld a, [hl] ld [$FF00+$98], a .asm_3e69c call GenRandomInBattle rrca cp $d9 jr c, .asm_3e69c ld [H_REMAINDER], a ; $FF00+$99 (aliases: H_DIVISOR, H_MULTIPLIER, H_POWEROFTEN) call Multiply ld a, $ff ld [H_REMAINDER], a ; $FF00+$99 (aliases: H_DIVISOR, H_MULTIPLIER, H_POWEROFTEN) ld b, $4 call Divide ld a, [$FF00+$97] ld hl, W_DAMAGE ; $d0d7 ld [hli], a ld a, [$FF00+$98] ld [hl], a ret ; known jump sources: 3c34b (f:434b), 3c3a1 (f:43a1) Func_3e6bc: ; 3e6bc (f:66bc) ld a, [W_ENEMYSELECTEDMOVE] ; $ccdd inc a jp z, Func_3e88c call Function5811 jp z, Func_3e88c ld a, [W_ISLINKBATTLE] ; $d12b cp $4 jr nz, .asm_3e6dc ld b, $1 ld a, [$cc3e] cp $e jr z, .asm_3e6dc cp $4 ret nc .asm_3e6dc ld hl, $ccd5 inc [hl] xor a ld [W_MOVEMISSED], a ; $d05f ld [$ccf4], a ld a, $a ld [$d05b], a call Func_3e88f jr nz, .asm_3e6f2 jp [hl] .asm_3e6f2 ld hl, W_ENEMYBATTSTATUS1 ; $d067 bit 4, [hl] jr nz, asm_3e70b call Func_3eabe ; known jump sources: 3e7fc (f:67fc), 3e806 (f:6806) Func_3e6fc: ; 3e6fc (f:66fc) ld a, [W_ENEMYMOVEEFFECT] ; $cfcd cp $27 jp z, Func_3f132 cp $2b jp z, Func_3f132 jr asm_3e72b asm_3e70b: ; 3e70b (f:670b) ld hl, W_ENEMYBATTSTATUS1 ; $d067 res 4, [hl] res 6, [hl] ld a, [W_ENEMYMOVENUM] ; $cfcc ld [$d0b5], a ld a, $2c ld [$d0b7], a ld a, $2 ld [$d0b6], a call GetName ld de, $cd6d call Func_3826 asm_3e72b: ; 3e72b (f:672b) xor a ld [$cced], a call Func_3daf5 ld a, [W_ENEMYMOVEEFFECT] ; $cfcd ld hl, $4000 ld de, $1 call IsInArray jp c, Func_3f132 ld a, [W_ENEMYMOVEEFFECT] ; $cfcd ld hl, $4049 ld de, $1 call IsInArray call c, Func_3f132 call Func_3ec81 ld a, [W_ENEMYMOVEEFFECT] ; $cfcd ld hl, $4011 ld de, $1 call IsInArray jp c, Func_3e77f call Func_3e023 call HandleCounterMove jr z, asm_3e782 call Func_3ec81 call Func_3de75 call Func_3ec81 call MoreCalculateDamage jp z, Func_3e7d1 call AdjustDamageForMoveType call Func_3e687 ; known jump sources: 3e75f (f:675f) Func_3e77f: ; 3e77f (f:677f) call MoveHitTest asm_3e782: ; 3e782 (f:6782) ld a, [W_MOVEMISSED] ; $d05f and a jr z, .asm_3e791 ld a, [W_ENEMYMOVEEFFECT] ; $cfcd cp $7 jr z, asm_3e7a0 jr Func_3e7d1 .asm_3e791 call Func_3ec81 ; known jump sources: 3e864 (f:6864) Func_3e794: ; 3e794 (f:6794) ld a, [W_ENEMYMOVEEFFECT] ; $cfcd and a ld a, $1 jr z, asm_3e7a4 ld a, $2 jr asm_3e7a4 asm_3e7a0: ; 3e7a0 (f:67a0) call Func_3ec81 xor a asm_3e7a4: ; 3e7a4 (f:67a4) push af ld a, [W_ENEMYBATTSTATUS2] ; $d068 bit 4, a ld hl, $5747 ld b, $1e call nz, Bankswitch pop af ld [$cc5b], a ld a, [W_ENEMYMOVENUM] ; $cfcc call PlayMoveAnimation call Func_3eed3 call Func_3cdec ld a, [W_ENEMYBATTSTATUS2] ; $d068 bit 4, a ld hl, $5771 ld b, $1e call nz, Bankswitch jr asm_3e7ef ; known jump sources: 3e776 (f:6776), 3e78f (f:678f) Func_3e7d1: ; 3e7d1 (f:67d1) call Func_3ec81 ld c, $1e call DelayFrames ld a, [W_ENEMYMOVEEFFECT] ; $cfcd cp $2b jr z, .asm_3e7e6 cp $27 jr z, .asm_3e7e6 jr asm_3e7ef .asm_3e7e6 xor a ld [$cc5b], a ld a, $a7 call PlayMoveAnimation asm_3e7ef: ; 3e7ef (f:67ef) ld a, [W_ENEMYMOVEEFFECT] ; $cfcd cp $9 jr nz, .asm_3e7ff call MirrorMoveCopyMove jp z, Func_3e88c jp Func_3e6fc .asm_3e7ff cp $53 jr nz, .asm_3e809 call MetronomePickMove jp Func_3e6fc .asm_3e809 ld a, [W_ENEMYMOVEEFFECT] ; $cfcd ld hl, $4014 ld de, $1 call IsInArray jp c, Func_3f132 ld a, [W_MOVEMISSED] ; $d05f and a jr z, .asm_3e82b call Func_3dbe2 ld a, [W_ENEMYMOVEEFFECT] ; $cfcd cp $7 jr z, .asm_3e83e jp Func_3e88c .asm_3e82b call ApplyAttackToPlayerPokemon call Func_3dc5c ld hl, DisplayEffectiveness ld b, BANK(DisplayEffectiveness) call Bankswitch ; indirect jump to DisplayEffectiveness (2fb7b (b:7b7b)) ld a, $1 ld [$ccf4], a .asm_3e83e ld a, [W_ENEMYMOVEEFFECT] ; $cfcd ld hl, $4030 ld de, $1 call IsInArray call c, Func_3f132 ld hl, W_PLAYERMONCURHP ; $d015 ld a, [hli] ld b, [hl] or b ret z call HandleBuildingRage ld hl, W_ENEMYBATTSTATUS1 ; $d067 bit 2, [hl] jr z, .asm_3e873 push hl ld hl, $d06f dec [hl] pop hl jp nz, Func_3e794 res 2, [hl] ld hl, $6887 call PrintText xor a ld [$cd05], a .asm_3e873 ld a, [W_ENEMYMOVEEFFECT] ; $cfcd and a jr z, Func_3e88c ld hl, $403b ld de, $1 call IsInArray call nc, Func_3f132 jr Func_3e88c ; 3e887 (f:6887) UnnamedText_3e887: ; 0x3e887 TX_FAR _UnnamedText_3e887 db $50 ; 0x3e887 + 5 bytes ; known jump sources: 3e6c0 (f:66c0), 3e6c6 (f:66c6), 3e7f9 (f:67f9), 3e828 (f:6828), 3e877 (f:6877), 3e885 (f:6885) Func_3e88c: ; 3e88c (f:688c) ld b, $1 ret ; known jump sources: 3e6ec (f:66ec) Func_3e88f: ; 3e88f (f:688f) ld hl, W_ENEMYMONSTATUS ; $cfe9 ld a, [hl] and $7 jr z, .asm_3e8bf dec a ld [W_ENEMYMONSTATUS], a ; $cfe9 and a jr z, .asm_3e8af ld hl, $5a3d call PrintText xor a ld [$cc5b], a ld a, $bd call PlayMoveAnimation jr .asm_3e8b5 .asm_3e8af ld hl, $5a42 call PrintText .asm_3e8b5 xor a ld [$ccf2], a ld hl, $688c jp Func_3eab8 .asm_3e8bf bit 5, [hl] jr z, .asm_3e8d3 ld hl, $5a47 call PrintText xor a ld [$ccf2], a ld hl, $688c jp Func_3eab8 .asm_3e8d3 ld a, [W_PLAYERBATTSTATUS1] ; $d062 bit 5, a jp z, Func_3e8e7 ld hl, $5a83 call PrintText ld hl, $688c jp Func_3eab8 ; known jump sources: 3e8d8 (f:68d8) Func_3e8e7: ; 3e8e7 (f:68e7) ld hl, W_ENEMYBATTSTATUS1 ; $d067 bit 3, [hl] jp z, Func_3e8fd res 3, [hl] ld hl, $5a51 call PrintText ld hl, $688c jp Func_3eab8 ; known jump sources: 3e8ec (f:68ec) Func_3e8fd: ; 3e8fd (f:68fd) ld hl, W_ENEMYBATTSTATUS2 ; $d068 bit 5, [hl] jr z, .asm_3e912 res 5, [hl] ld hl, $5a56 call PrintText ld hl, $688c jp Func_3eab8 .asm_3e912 ld hl, W_ENEMYDISABLEDMOVE ; $d072 ld a, [hl] and a jr z, .asm_3e929 dec a ld [hl], a and $f jr nz, .asm_3e929 ld [hl], a ld [$ccef], a ld hl, $5a5b call PrintText .asm_3e929 ld a, [W_ENEMYBATTSTATUS1] ; $d067 add a jp nc, Func_3e9aa ld hl, $d070 dec [hl] jr nz, .asm_3e944 ld hl, W_ENEMYBATTSTATUS1 ; $d067 res 7, [hl] ld hl, $5a6a call PrintText jp Func_3e9aa .asm_3e944 ld hl, $5a60 call PrintText xor a ld [$cc5b], a ld a, $bf call PlayMoveAnimation call GenRandomInBattle cp $80 jr c, Func_3e9aa ld hl, W_ENEMYBATTSTATUS1 ; $d067 ld a, [hl] and $80 ld [hl], a ld hl, $5a65 call PrintText ld hl, $d027 ld a, [hli] push af ld a, [hld] push af ld a, [W_ENEMYMONDEFENSE] ; $cff8 ld [hli], a ld a, [$cff9] ld [hl], a ld hl, W_ENEMYMOVEEFFECT ; $cfcd push hl ld a, [hl] push af xor a ld [hli], a ld [$d05e], a ld a, $28 ld [hli], a xor a ld [hl], a call Func_3de75 call MoreCalculateDamage pop af pop hl ld [hl], a ld hl, $d028 pop af ld [hld], a pop af ld [hl], a xor a ld [$cc5b], a ld [H_WHOSETURN], a ; $FF00+$f3 ld a, $1 call PlayMoveAnimation ld a, $1 ld [H_WHOSETURN], a ; $FF00+$f3 call ApplyDamageToEnemyPokemon jr asm_3e9d3 ; known jump sources: 3e92d (f:692d), 3e941 (f:6941), 3e958 (f:6958) Func_3e9aa: ; 3e9aa (f:69aa) ld a, [$ccef] and a jr z, .asm_3e9bf ld hl, W_ENEMYSELECTEDMOVE ; $ccdd cp [hl] jr nz, .asm_3e9bf call Func_3da88 ld hl, $688c jp Func_3eab8 .asm_3e9bf ld hl, W_ENEMYMONSTATUS ; $cfe9 bit 6, [hl] jr z, asm_3e9f6 call GenRandomInBattle cp $3f jr nc, asm_3e9f6 ld hl, $5a4c call PrintText asm_3e9d3: ; 3e9d3 (f:69d3) ld hl, W_ENEMYBATTSTATUS1 ; $d067 ld a, [hl] and $cc ld [hl], a ld a, [W_ENEMYMOVEEFFECT] ; $cfcd cp $2b jr z, .asm_3e9e7 cp $27 jr z, .asm_3e9e7 jr .asm_3e9f0 .asm_3e9e7 xor a ld [$cc5b], a ld a, $a7 call PlayMoveAnimation .asm_3e9f0 ld hl, $688c jp Func_3eab8 asm_3e9f6: ; 3e9f6 (f:69f6) ld hl, W_ENEMYBATTSTATUS1 ; $d067 bit 0, [hl] jr z, .asm_3ea54 xor a ld [W_ENEMYMOVENUM], a ; $cfcc ld hl, W_DAMAGE ; $d0d7 ld a, [hli] ld b, a ld c, [hl] ld hl, $cd06 ld a, [hl] add c ld [hld], a ld a, [hl] adc b ld [hl], a ld hl, $d06f dec [hl] jr z, .asm_3ea1c ld hl, $688c jp Func_3eab8 .asm_3ea1c ld hl, W_ENEMYBATTSTATUS1 ; $d067 res 0, [hl] ld hl, $5a74 call PrintText ld a, $1 ld [W_ENEMYMOVEPOWER], a ; $cfce ld hl, $cd06 ld a, [hld] add a ld b, a ld [$d0d8], a ld a, [hl] rl a ld [W_DAMAGE], a ; $d0d7 or b jr nz, .asm_3ea43 ld a, $1 ld [W_MOVEMISSED], a ; $d05f .asm_3ea43 xor a ld [hli], a ld [hl], a ld a, $75 ld [W_ENEMYMOVENUM], a ; $cfcc call Func_3ec81 ld hl, $6782 jp Func_3eab8 .asm_3ea54 bit 1, [hl] jr z, .asm_3ea83 ld a, $25 ld [W_ENEMYMOVENUM], a ; $cfcc ld hl, $5a79 call PrintText ld hl, $d06f dec [hl] ld hl, $6750 jp nz, Func_3eab8 push hl ld hl, W_ENEMYBATTSTATUS1 ; $d067 res 1, [hl] set 7, [hl] call GenRandomInBattle and $3 inc a inc a ld [$d070], a pop hl jp Func_3eab8 .asm_3ea83 bit 5, [hl] jp z, Func_3ea9b ld hl, $5a7e call PrintText ld hl, $d06f dec [hl] ld hl, $6794 jp nz, Func_3eab8 jp Func_3eab8 ; known jump sources: 3ea85 (f:6a85) Func_3ea9b: ; 3ea9b (f:6a9b) ld a, [W_ENEMYBATTSTATUS2] ; $d068 bit 6, a jp z, Func_3eaba ld a, $63 ld [$d11e], a call GetMoveName call Func_3826 xor a ld [W_ENEMYMOVEEFFECT], a ; $cfcd ld hl, $672b jp Func_3eab8 ; known jump sources: 3e8bc (f:68bc), 3e8d0 (f:68d0), 3e8e4 (f:68e4), 3e8fa (f:68fa), 3e90f (f:690f), 3e9bc (f:69bc), 3e9f3 (f:69f3), 3ea19 (f:6a19), 3ea51 (f:6a51), 3ea6a (f:6a6a), 3ea80 (f:6a80), 3ea95 (f:6a95), 3ea98 (f:6a98), 3eab5 (f:6ab5) Func_3eab8: ; 3eab8 (f:6ab8) xor a ret ; known jump sources: 3eaa0 (f:6aa0) Func_3eaba: ; 3eaba (f:6aba) ld a, $1 and a ret ; known jump sources: 3d543 (f:5543), 3d68a (f:568a), 3ddad (f:5dad), 3e6f9 (f:66f9) Func_3eabe: ; 3eabe (f:6abe) ld a, [H_WHOSETURN] ; $FF00+$f3 and a jp z, Func_3eacc ld de, W_ENEMYMOVENUM ; $cfcc ld a, [W_ENEMYSELECTEDMOVE] ; $ccdd jr asm_3eadc ; known jump sources: 3eac1 (f:6ac1) Func_3eacc: ; 3eacc (f:6acc) ld de, W_PLAYERMOVENUM ; $cfd2 ld a, [$d733] bit 0, a ld a, [$ccd9] jr nz, asm_3eadc ld a, [W_PLAYERSELECTEDMOVE] ; $ccdc asm_3eadc: ; 3eadc (f:6adc) ld [$d0b5], a dec a ld hl, $4000 ld bc, $6 call AddNTimes ld a, $e call FarCopyData ld a, $2c ld [$d0b7], a ld a, $2 ld [$d0b6], a call GetName ld de, $cd6d jp Func_3826 ; known jump sources: d893 (3:5893), 3c9aa (f:49aa), 3ef90 (f:6f90), 4fdc9 (13:7dc9), 58df0 (16:4df0), 58e18 (16:4e18) Func_3eb01: ; 3eb01 (f:6b01) ld a, [W_ISLINKBATTLE] ; $d12b cp $4 jp z, Func_3cc13 ld a, [$cfd8] ld [$cfe5], a ld [$d0b5], a call GetBaseStats ld a, [W_ENEMYBATTSTATUS3] ; $d069 bit 3, a ld hl, $cceb ld a, [hli] ld b, [hl] jr nz, .asm_3eb33 ld a, [W_ISINBATTLE] ; $d057 cp $2 ld a, $98 ld b, $88 jr z, .asm_3eb33 call GenRandomInBattle ld b, a call GenRandomInBattle .asm_3eb33 ld hl, $cff1 ld [hli], a ld [hl], b ld de, W_ENEMYMONLEVEL ; $cff3 ld a, [W_CURENEMYLVL] ; $d127 ld [de], a inc de ld b, $0 ld hl, W_ENEMYMONCURHP ; $cfe6 push hl call Func_3936 pop hl ld a, [W_ISINBATTLE] ; $d057 cp $2 jr z, .asm_3eb65 ld a, [W_ENEMYBATTSTATUS3] ; $d069 bit 3, a jr nz, .asm_3eb86 ld a, [W_ENEMYMONMAXHP] ; $cff4 ld [hli], a ld a, [$cff5] ld [hli], a xor a inc hl ld [hl], a jr .asm_3eb86 .asm_3eb65 ld hl, W_WATERMONS ; $d8a5 (aliases: W_ENEMYMON1HP) ld a, [W_WHICHPOKEMON] ; $cf92 ld bc, $2c call AddNTimes ld a, [hli] ld [W_ENEMYMONCURHP], a ; $cfe6 ld a, [hli] ld [$cfe7], a ld a, [W_WHICHPOKEMON] ; $cf92 ld [W_ENEMYMONNUMBER], a ; $cfe8 inc hl ld a, [hl] ld [W_ENEMYMONSTATUS], a ; $cfe9 jr .asm_3eb86 .asm_3eb86 ld hl, $d0be ld de, W_ENEMYMONTYPE1 ; $cfea (aliases: W_ENEMYMONTYPES) ld a, [hli] ld [de], a inc de ld a, [hli] ld [de], a inc de ld a, [hli] ld [de], a inc de ld a, [W_ISINBATTLE] ; $d057 cp $2 jr nz, .asm_3ebb0 ld hl, $d8ac ld a, [W_WHICHPOKEMON] ; $cf92 ld bc, $2c call AddNTimes ld bc, $4 call CopyData jr .asm_3ebca .asm_3ebb0 ld hl, $d0c7 ld a, [hli] ld [de], a inc de ld a, [hli] ld [de], a inc de ld a, [hli] ld [de], a inc de ld a, [hl] ld [de], a dec de dec de dec de xor a ld [$cee9], a ld a, $3e call Predef ; indirect jump to Func_3afb8 (3afb8 (e:6fb8)) .asm_3ebca ld hl, $cfed ld de, $cffd ld a, $5e call Predef ; indirect jump to Func_f473 (f473 (3:7473)) ld hl, $d0b9 ld de, $d002 ld b, $5 .asm_3ebdd ld a, [hli] ld [de], a inc de dec b jr nz, .asm_3ebdd ld hl, $d0c0 ld a, [hli] ld [de], a inc de ld a, [hl] ld [de], a ld a, [$cfd8] ld [$d11e], a call GetMonName ld hl, $cd6d ld de, $cfda ld bc, $b call CopyData ld a, [$cfd8] ld [$d11e], a ld a, $3a call Predef ; indirect jump to IndexToPokedex (41010 (10:5010)) ld a, [$d11e] dec a ld c, a ld b, $1 ld hl, W_SEENPOKEMON ; $d30a ld a, $10 call Predef ; indirect jump to Func_f666 (f666 (3:7666)) ld hl, W_ENEMYMONLEVEL ; $cff3 ld de, $cd23 ld bc, $b call CopyData ld a, $7 ld b, $8 ld hl, W_ENEMYMONATTACKMOD ; $cd2e .asm_3ec2d ld [hli], a dec b jr nz, .asm_3ec2d ret ; known jump sources: 3ef66 (f:6f66), 3ef93 (f:6f93) Func_3ec32: ; 3ec32 (f:6c32) ld a, [W_ISLINKBATTLE] ; $d12b cp $4 jr nz, .asm_3ec4d xor a ld [W_MENUJOYPADPOLLCOUNT], a ; $cc34 ld hl, Func_372d6 ld b, BANK(Func_372d6) call Bankswitch ; indirect jump to Func_372d6 (372d6 (d:72d6)) ld a, $1 ld [$cfcb], a call ClearScreen .asm_3ec4d call DelayFrame ld a, $30 call Predef ; indirect jump to Func_7096d (7096d (1c:496d)) ld hl, Func_3ee58 ld b, BANK(Func_3ee58) call Bankswitch ; indirect jump to Func_3ee58 (3ee58 (f:6e58)) ld a, $1 ld [H_AUTOBGTRANSFERENABLED], a ; $FF00+$ba ld a, $ff ld [$cfcb], a call CleanLCD_OAM call ClearScreen xor a ld [H_AUTOBGTRANSFERENABLED], a ; $FF00+$ba ld [$FF00+$b0], a ld [rWY], a ; $FF00+$4a ld [$FF00+$d7], a ld hl, $d060 ld [hli], a ld [hli], a ld [hli], a ld [hli], a ld [hl], a ld [W_PLAYERDISABLEDMOVE], a ; $d06d ret ; known jump sources: 3e750 (f:6750), 3e76a (f:676a), 3e770 (f:6770), 3e791 (f:6791), 3e7a0 (f:67a0), 3e7d1 (f:67d1), 3ea4b (f:6a4b) Func_3ec81: ; 3ec81 (f:6c81) push bc ld a, [W_PLAYERMONLEVEL] ; $d022 ld b, a ld a, [W_ENEMYMONLEVEL] ; $cff3 ld [W_PLAYERMONLEVEL], a ; $d022 ld a, b ld [W_ENEMYMONLEVEL], a ; $cff3 pop bc ret ; known jump sources: 3c04c (f:404c) Func_3ec92: ; 3ec92 (f:6c92) ld a, [W_BATTLETYPE] ; $d05a dec a ld de, $7e0a jr nz, .asm_3ec9e ld de, $7e9a .asm_3ec9e ld a, $c call Func_36eb ld a, $3 call Predef ; indirect jump to Func_2fe40 (2fe40 (b:7e40)) ld hl, $c300 xor a ld [H_DOWNARROWBLINKCNT1], a ; $FF00+$8b ld b, $7 ld e, $a0 .asm_3ecb2 ld c, $3 ld d, $38 .asm_3ecb6 ld [hl], d inc hl ld [hl], e ld a, $8 add d ld d, a inc hl ld a, [H_DOWNARROWBLINKCNT1] ; $FF00+$8b ld [hli], a inc a ld [H_DOWNARROWBLINKCNT1], a ; $FF00+$8b inc hl dec c jr nz, .asm_3ecb6 ld a, [H_DOWNARROWBLINKCNT1] ; $FF00+$8b add $4 ld [H_DOWNARROWBLINKCNT1], a ; $FF00+$8b ld a, $8 add e ld e, a dec b jr nz, .asm_3ecb2 ld de, $9310 call Func_16ea ld a, $a ld [$0], a xor a ld [$4000], a ld hl, $8000 ld de, $a188 ld a, [$FF00+$b8] ld b, a ld c, $31 call CopyVideoData xor a ld [$0], a ld a, $31 ld [$FF00+$e1], a ld hl, $c405 ld a, $1 jp Predef ; indirect jump to Func_3f0c6 (3f0c6 (f:70c6)) ; known jump sources: dba3 (3:5ba3) Func_3ed02: ; 3ed02 (f:6d02) ld hl, Func_39680 ld b, BANK(Func_39680) call Bankswitch ; indirect jump to Func_39680 (39680 (e:5680)) ld hl, Func_396a7 ld b, BANK(Func_396a7) jp Bankswitch ; indirect jump to Func_396a7 (396a7 (e:56a7)) ; known jump sources: 3c6c6 (f:46c6), 3c84e (f:484e) Func_3ed12: ; 3ed12 (f:6d12) ld hl, Func_396d3 ld b, BANK(Func_396d3) jp Bankswitch ; indirect jump to Func_396d3 (396d3 (e:56d3)) ; known jump sources: 3cc01 (f:4c01), 553d9 (15:53d9) Func_3ed1a: ; 3ed1a (f:6d1a) ld a, $1 jr asm_3ed1f ; known jump sources: 3cc6e (f:4c6e) Func_3ed1e: ; 3ed1e (f:6d1e) xor a asm_3ed1f: ; 3ed1f (f:6d1f) ld [H_WHOSETURN], a ; $FF00+$f3 call Func_3ed27 jp Func_3ed64 ; known jump sources: 3ed21 (f:6d21), 3f351 (f:7351), 3f3b9 (f:73b9), 3f51a (f:751a), 3f647 (f:7647), 52641 (14:6641) Func_3ed27: ; 3ed27 (f:6d27) ld a, [H_WHOSETURN] ; $FF00+$f3 and a jr z, .asm_3ed48 ld a, [W_PLAYERMONSTATUS] ; $d018 and $40 ret z ld hl, $d02a ld a, [hld] ld b, a ld a, [hl] srl a rr b srl a rr b ld [hli], a or b jr nz, .asm_3ed46 ld b, $1 .asm_3ed46 ld [hl], b ret .asm_3ed48 ld a, [W_ENEMYMONSTATUS] ; $cfe9 and $40 ret z ld hl, $cffb ld a, [hld] ld b, a ld a, [hl] srl a rr b srl a rr b ld [hli], a or b jr nz, .asm_3ed62 ld b, $1 .asm_3ed62 ld [hl], b ret ; known jump sources: 3ed24 (f:6d24), 3f361 (f:7361), 3f3c4 (f:73c4), 3f51d (f:751d), 3f64a (f:764a) Func_3ed64: ; 3ed64 (f:6d64) ld a, [H_WHOSETURN] ; $FF00+$f3 and a jr z, .asm_3ed81 ld a, [W_PLAYERMONSTATUS] ; $d018 and $10 ret z ld hl, $d026 ld a, [hld] ld b, a ld a, [hl] srl a rr b ld [hli], a or b jr nz, .asm_3ed7f ld b, $1 .asm_3ed7f ld [hl], b ret .asm_3ed81 ld a, [W_ENEMYMONSTATUS] ; $cfe9 and $10 ret z ld hl, $cff7 ld a, [hld] ld b, a ld a, [hl] srl a rr b ld [hli], a or b jr nz, .asm_3ed97 ld b, $1 .asm_3ed97 ld [hl], b ret ; known jump sources: 553d1 (15:53d1) Func_3ed99: ; 3ed99 (f:6d99) ld c, $0 .asm_3ed9b call Func_3eda5 inc c ld a, c cp $4 jr nz, .asm_3ed9b ret ; known jump sources: 3ed9b (f:6d9b) Func_3eda5: ; 3eda5 (f:6da5) push bc push bc ld a, [$d11e] and a ld a, c ld hl, $d025 ld de, $cd12 ld bc, W_PLAYERMONATTACKMOD ; $cd1a jr z, .asm_3edc0 ld hl, $cff6 ld de, $cd26 ld bc, W_ENEMYMONATTACKMOD ; $cd2e .asm_3edc0 add c ld c, a jr nc, .asm_3edc5 inc b .asm_3edc5 ld a, [bc] pop bc ld b, a push bc sla c ld b, $0 add hl, bc ld a, c add e ld e, a jr nc, .asm_3edd4 inc d .asm_3edd4 pop bc push hl ld hl, $76cb dec b sla b ld c, b ld b, $0 add hl, bc xor a ld [H_NUMTOPRINT], a ; $FF00+$96 (aliases: H_MULTIPLICAND) ld a, [de] ld [$FF00+$97], a inc de ld a, [de] ld [$FF00+$98], a ld a, [hli] ld [H_REMAINDER], a ; $FF00+$99 (aliases: H_DIVISOR, H_MULTIPLIER, H_POWEROFTEN) call Multiply ld a, [hl] ld [H_REMAINDER], a ; $FF00+$99 (aliases: H_DIVISOR, H_MULTIPLIER, H_POWEROFTEN) ld b, $4 call Divide pop hl ld a, [$FF00+$98] sub $e7 ld a, [$FF00+$97] sbc $3 jp c, Func_3ee0c ld a, $3 ld [$FF00+$97], a ld a, $e7 ld [$FF00+$98], a ; known jump sources: 3ee01 (f:6e01) Func_3ee0c: ; 3ee0c (f:6e0c) ld a, [$FF00+$97] ld [hli], a ld b, a ld a, [$FF00+$98] ld [hl], a or b jr nz, .asm_3ee17 inc [hl] .asm_3ee17 pop bc ret ; known jump sources: 3cc04 (f:4c04), 3f511 (f:7511), 3f63e (f:763e), 553e1 (15:53e1) Func_3ee19: ; 3ee19 (f:6e19) ld a, [W_ISLINKBATTLE] ; $d12b cp $4 ret z ld a, [W_OBTAINEDBADGES] ; $d356 ld b, a ld hl, $d025 ld c, $4 .asm_3ee28 srl b call c, Func_3ee35 inc hl inc hl srl b dec c jr nz, .asm_3ee28 ret ; known jump sources: 3ee2a (f:6e2a) Func_3ee35: ; 3ee35 (f:6e35) ld a, [hli] ld d, a ld e, [hl] srl d rr e srl d rr e srl d rr e ld a, [hl] add e ld [hld], a ld a, [hl] adc d ld [hli], a ld a, [hld] sub $e7 ld a, [hl] sbc $3 ret c ld a, $3 ld [hli], a ld a, $e7 ld [hld], a ret ; known jump sources: 3c066 (f:4066), 3ec5a (f:6c5a) Func_3ee58: ; 3ee58 (f:6e58) call LoadHpBarAndStatusTilePatterns ; known jump sources: 665b (1:665b), 3c822 (f:4822), 3ca20 (f:4a20), 3d072 (f:5072), 3d0f6 (f:50f6), 3d1ae (f:51ae) Func_3ee5b: ; 3ee5b (f:6e5b) ld a, [rLCDC] ; $FF00+$40 add a jr c, .asm_3ee7c ld hl, $6080 ld de, $96d0 ld bc, $18 ld a, $4 call FarCopyDataDouble ld hl, $6098 ld de, $9730 ld bc, $30 ld a, $4 jp FarCopyDataDouble .asm_3ee7c ld de, $6080 ld hl, $96d0 ld bc, $403 call CopyVideoDataDouble ld de, $6098 ld hl, $9730 ld bc, $406 jp CopyVideoDataDouble ; known jump sources: 3c5f7 (f:45f7), 3c79b (f:479b), 3c952 (f:4952), 3ccf4 (f:4cf4), 3cebf (f:4ebf), 553f1 (15:53f1) Func_3ee94: ; 3ee94 (f:6e94) ld hl, $6e9a jp PrintText INCBIN "baserom.gbc",$3ee9a,$3ee9b - $3ee9a ; generates a random number unless in link battle ; stores random number in A GenRandomInBattle: ; 6e9b ld a, [W_ISLINKBATTLE] cp $4 jp nz, GenRandom push hl push bc ld a, [$ccde] ld c, a ld b, $0 ld hl, $d148 add hl, bc inc a ld [$ccde], a cp $9 ld a, [hl] pop bc pop hl ret c push hl push bc push af xor a ld [$ccde], a ld hl, $d148 ld b, $9 .asm_3eec5 ld a, [hl] ld c, a add a add a add c inc a ld [hli], a dec b jr nz, .asm_3eec5 ; 0x3eecd $f6 pop af pop bc pop hl ret ; 0x3eed3 ; known jump sources: 3d736 (f:5736), 3e7bc (f:67bc) Func_3eed3: ; 3eed3 (f:6ed3) ld a, [H_WHOSETURN] ; $FF00+$f3 and a ld hl, W_ENEMYMONTYPE1 ; $cfea (aliases: W_ENEMYMONTYPES) ld de, W_ENEMYBATTSTATUS1 ; $d067 ld a, [W_PLAYERMOVENUM] ; $cfd2 jr z, .asm_3eeea ld hl, W_PLAYERMONTYPE1 ; $d019 (aliases: W_PLAYERMONTYPES) ld de, W_ENEMYBATTSTATUS1 ; $d067 ld a, [W_ENEMYMOVENUM] ; $cfcc .asm_3eeea cp $78 jr z, .asm_3eef1 cp $99 ret nz .asm_3eef1 ld a, [de] bit 6, a ret nz ld a, [hli] cp $8 ret z ld a, [hl] cp $8 ret z ld a, [W_MOVEMISSED] ; $d05f and a ret nz ld a, $5 ld [$cc5b], a ; 3ef07 (f:6f07) PlayMoveAnimation: ; 6F07 ld [$D07C],a call Delay3 PREDEF_JUMP MoveAnimationPredef ; predef 8 ; known jump sources: 69b (0:69b) Func_3ef12: ; 3ef12 (f:6f12) ld a, [W_CUROPPONENT] ; $d059 and a jr z, asm_3ef23 ; known jump sources: 54fb (1:54fb) Func_3ef18: ; 3ef18 (f:6f18) ld a, [W_CUROPPONENT] ; $d059 ld [$cf91], a ld [$cfd8], a jr asm_3ef3d asm_3ef23: ; 3ef23 (f:6f23) ld a, [$d732] bit 1, a jr z, .asm_3ef2f ld a, [$FF00+$b4] bit 1, a ret nz .asm_3ef2f ld a, [$d13c] and a ret nz ld hl, Func_13870 ld b, BANK(Func_13870) call Bankswitch ; indirect jump to Func_13870 (13870 (4:7870)) ret nz asm_3ef3d: ; 3ef3d (f:6f3d) ld a, [$d35d] push af ld hl, $d358 ld a, [hl] push af res 1, [hl] ld hl, Func_525af ld b, BANK(Func_525af) call Bankswitch ; indirect jump to Func_525af (525af (14:65af)) ld a, [$cfd8] sub $c8 jp c, Func_3ef8b ld [W_TRAINERCLASS], a ; $d031 call Func_3566 ld hl, ReadTrainer ld b, BANK(ReadTrainer) call Bankswitch ; indirect jump to ReadTrainer (39c53 (e:5c53)) call Func_3ec32 call Func_3f04b xor a ld [$cfd8], a ld [$FF00+$e1], a dec a ld [W_AICOUNT], a ; $ccdf ld hl, $c3ac ld a, $1 call Predef ; indirect jump to Func_3f0c6 (3f0c6 (f:70c6)) ld a, $ff ld [W_ENEMYMONNUMBER], a ; $cfe8 ld a, $2 ld [W_ISINBATTLE], a ; $d057 jp Func_3efeb ; known jump sources: 3ef55 (f:6f55) Func_3ef8b: ; 3ef8b (f:6f8b) ld a, $1 ld [W_ISINBATTLE], a ; $d057 call Func_3eb01 call Func_3ec32 ld a, [W_CUROPPONENT] ; $d059 cp $91 jr z, .asm_3efa2 call Function583A jr nz, .asm_3efd7 .asm_3efa2 ld hl, $d0c2 ld a, $66 ld [hli], a ld bc, $66b5 ld a, c ld [hli], a ld [hl], b ld hl, $cfda ld a, $86 ld [hli], a ld a, $87 ld [hli], a ld a, $8e ld [hli], a ld a, $92 ld [hli], a ld a, $93 ld [hli], a ld [hl], $50 ld a, [$cf91] push af ld a, $b8 ld [$cf91], a ld de, $9000 call Func_1665 pop af ld [$cf91], a jr .asm_3efdd .asm_3efd7 ld de, $9000 call Func_1665 .asm_3efdd xor a ld [W_TRAINERCLASS], a ; $d031 ld [$FF00+$e1], a ld hl, $c3ac ld a, $1 call Predef ; indirect jump to Func_3f0c6 (3f0c6 (f:70c6)) ; known jump sources: 3ef88 (f:6f88) Func_3efeb: ; 3efeb (f:6feb) ld b, $0 call GoPAL_SET call Func_3c04c xor a ld [H_AUTOBGTRANSFERENABLED], a ; $FF00+$ba ld hl, $704a call PrintText call Func_3719 call ClearScreen ld a, $98 ld [$FF00+$bd], a ld a, $1 ld [H_AUTOBGTRANSFERENABLED], a ; $FF00+$ba call Delay3 ld a, $9c ld [$FF00+$bd], a call Func_3725 ld hl, $c435 ld bc, $50a call ClearScreenArea ld hl, $c3a1 ld bc, $40a call ClearScreenArea call CleanLCD_OAM ld a, [W_ISINBATTLE] ; $d057 dec a call z, Func_3cdec call Func_3c11e ld hl, Func_137aa ld b, BANK(Func_137aa) call Bankswitch ; indirect jump to Func_137aa (137aa (4:77aa)) pop af ld [$d358], a pop af ld [$d35d], a ld a, [$d0d4] ld [$FF00+$d7], a scf ret INCBIN "baserom.gbc",$3f04a,$3f04b - $3f04a ; known jump sources: 396e1 (e:56e1), 3ef69 (f:6f69) Func_3f04b: ; 3f04b (f:704b) ld a, [$d033] ld e, a ld a, [$d034] ld d, a ld a, [W_ISLINKBATTLE] ; $d12b and a ld a, $13 jr z, .asm_3f05d ld a, $4 .asm_3f05d call Func_36eb ld de, $9000 ld a, $77 ld c, a jp Func_1672 INCBIN "baserom.gbc",$3f069,$3f073 - $3f069 ; known jump sources: 3ca5b (f:4a5b), 3cceb (f:4ceb), 5dc09 (17:5c09) Func_3f073: ; 3f073 (f:7073) ld a, [$cc4f] ld h, a ld a, [$cc50] ld l, a ld a, [$FF00+$e1] ld [H_DOWNARROWBLINKCNT1], a ; $FF00+$8b ld b, $4c ld a, [W_ISINBATTLE] ; $d057 and a jr z, .asm_3f0bc add b ld [hl], a call Delay3 ld bc, $ffd7 add hl, bc ld a, $1 ld [$cd6c], a ld bc, $303 ld a, $5 call Predef ; indirect jump to Func_79aba (79aba (1e:5aba)) ld c, $4 call DelayFrames ld bc, $ffd7 add hl, bc xor a ld [$cd6c], a ld bc, $505 ld a, $5 call Predef ; indirect jump to Func_79aba (79aba (1e:5aba)) ld c, $5 call DelayFrames ld bc, $ffd7 jr .asm_3f0bf .asm_3f0bc ld bc, $ff85 .asm_3f0bf add hl, bc ld a, [H_DOWNARROWBLINKCNT1] ; $FF00+$8b add $31 jr asm_3f0d0 ; known jump sources: 62cb (1:62cb), 3c0e1 (f:40e1), 3ecff (f:6cff), 3ef7b (f:6f7b), 3efe8 (f:6fe8) Func_3f0c6: ; 3f0c6 (f:70c6) ld a, [$cc4f] ld h, a ld a, [$cc50] ld l, a ld a, [$FF00+$e1] asm_3f0d0: ; 3f0d0 (f:70d0) ld bc, $707 ld de, $14 push af ld a, [$d0aa] and a jr nz, .asm_3f0ed pop af .asm_3f0de push bc push hl .asm_3f0e0 ld [hl], a add hl, de inc a dec c jr nz, .asm_3f0e0 pop hl inc hl pop bc dec b jr nz, .asm_3f0de ret .asm_3f0ed push bc ld b, $0 dec c add hl, bc pop bc pop af .asm_3f0f4 push bc push hl .asm_3f0f6 ld [hl], a add hl, de inc a dec c jr nz, .asm_3f0f6 pop hl dec hl pop bc dec b jr nz, .asm_3f0f4 ret ; known jump sources: 3cca9 (f:4ca9), 702a8 (1c:42a8), 797c2 (1e:57c2) Func_3f103: ; 3f103 (f:7103) ld a, [$cfd9] ld [$cf91], a ld hl, $c405 ld b, $7 ld c, $8 call ClearScreenArea ld hl, $d call Unknown_1627 ld a, $3 call Predef ; indirect jump to Func_2fe40 (2fe40 (b:7e40)) ld de, $9310 call Func_16ea ld hl, $8000 ld de, $9310 ld c, $31 ld a, [$FF00+$b8] ld b, a jp CopyVideoData ; known jump sources: 3d69f (f:569f), 3d6a4 (f:56a4), 3d6ca (f:56ca), 3d6d9 (f:56d9), 3d790 (f:5790), 3d7c5 (f:57c5), 3d7ff (f:57ff), 3e016 (f:6016), 3e701 (f:6701), 3e706 (f:6706), 3e73e (f:673e), 3e74d (f:674d), 3e815 (f:6815), 3e84a (f:684a), 3e882 (f:6882) Func_3f132: ; 3f132 (f:7132) call JumpMoveEffect ld b, $1 ret ; 3f138 (f:7138) JumpMoveEffect: ;$3f138 ld a, [$ff00+$f3] ;whose turn? and a ld a, [W_PLAYERMOVEEFFECT] jr z, .next1 ld a, [W_ENEMYMOVEEFFECT] .next1 dec a ;subtract 1, there is no special effect for 00 add a ;x2, 16bit pointers ld hl, $7150 ;pointer table at 7150 ld b, 0 ld c, a add hl, bc ld a, [hli] ld h, [hl] ld l, a jp [hl] ;jump to special effect handler INCBIN "baserom.gbc",$3f150,$3f1fc - $3f150 ld de, W_ENEMYMONSTATUS ; $cfe9 ld bc, W_ENEMYBATTSTATUS2 ; $d068 ld a, [H_WHOSETURN] ; $FF00+$f3 and a jp z, Func_3f20e ld de, W_PLAYERMONSTATUS ; $d018 ld bc, W_PLAYERBATTSTATUS2 ; $d063 ; known jump sources: 3f205 (f:7205) Func_3f20e: ; 3f20e (f:720e) ld a, [bc] bit 5, a res 5, a ld [bc], a jr nz, .asm_3f231 ld a, [de] ld b, a and $7 jr z, .asm_3f222 ld hl, $724a jp PrintText .asm_3f222 ld a, b and a jr nz, .asm_3f242 push de call MoveHitTest pop de ld a, [W_MOVEMISSED] ; $d05f and a jr nz, .asm_3f242 .asm_3f231 call GenRandomInBattle and $7 jr z, .asm_3f231 ld [de], a call Func_3fb89 ld hl, $7245 jp PrintText .asm_3f242 jp Func_3fb5e ; 3f245 (f:7245) UnnamedText_3f245: ; 0x3f245 TX_FAR _UnnamedText_3f245 db $50 ; 0x3f245 + 5 bytes UnnamedText_3f24a: ; 0x3f24a TX_FAR _UnnamedText_3f24a db $50 ; 0x3f24a + 5 bytes ld hl, W_ENEMYMONSTATUS ; $cfe9 ld de, W_PLAYERMOVEEFFECT ; $cfd3 ld a, [H_WHOSETURN] ; $FF00+$f3 and a jr z, .asm_3f260 ld hl, W_PLAYERMONSTATUS ; $d018 ld de, W_ENEMYMOVEEFFECT ; $cfcd .asm_3f260 call CheckTargetSubstitute jr nz, .asm_3f2d3 ld a, [hli] ld b, a and a jr nz, .asm_3f2d3 ld a, [hli] cp $3 jr z, .asm_3f2d3 ld a, [hld] cp $3 jr z, .asm_3f2d3 ld a, [de] cp $2 ld b, $34 jr z, .asm_3f290 cp $21 ld b, $67 jr z, .asm_3f290 push hl push de call MoveHitTest pop de pop hl ld a, [W_MOVEMISSED] ; $d05f and a jr nz, .asm_3f2d7 jr .asm_3f295 .asm_3f290 call GenRandomInBattle cp b ret nc .asm_3f295 dec hl set 3, [hl] push de dec de ld a, [H_WHOSETURN] ; $FF00+$f3 and a ld b, $c7 ld hl, W_PLAYERBATTSTATUS3 ; $d064 ld a, [de] ld de, W_PLAYERTOXICCOUNTER ; $d06c jr nz, .asm_3f2b0 ld b, $a9 ld hl, W_ENEMYBATTSTATUS3 ; $d069 ld de, W_ENEMYTOXICCOUNTER ; $d071 .asm_3f2b0 cp $5c jr nz, .asm_3f2bd set 0, [hl] xor a ld [de], a ld hl, $72e4 jr .asm_3f2c0 .asm_3f2bd ld hl, $72df .asm_3f2c0 pop de ld a, [de] cp $42 jr z, .asm_3f2cd ld a, b call Func_3fb96 jp PrintText .asm_3f2cd call Func_3fb89 jp PrintText .asm_3f2d3 ld a, [de] cp $42 ret nz .asm_3f2d7 ld c, $32 call DelayFrames jp Func_3fb5e ; 3f2df (f:72df) UnnamedText_3f2df: ; 0x3f2df TX_FAR _UnnamedText_3f2df db $50 ; 0x3f2df + 5 bytes UnnamedText_3f2e4: ; 0x3f2e4 TX_FAR _UnnamedText_3f2e4 db $50 ; 0x3f2e4 + 5 bytes ld hl, Func_783f ld b, BANK(Func_783f) jp Bankswitch ; indirect jump to Func_783f (783f (1:783f)) ld hl, W_PLAYERMONCURHP ; $d015 ld de, W_PLAYERBATTSTATUS2 ; $d063 ld a, [H_WHOSETURN] ; $FF00+$f3 and a jr z, .asm_3f302 ld hl, W_ENEMYMONCURHP ; $cfe6 ld de, W_ENEMYBATTSTATUS2 ; $d068 .asm_3f302 xor a ld [hli], a ld [hli], a inc hl ld [hl], a ld a, [de] res 7, a ld [de], a ret ; 3f30c (f:730c) FreezeBurnParalyzeEffect: ;0x3f30c xor a ld [$cc5b], a call $7b79 ;test bit 4 of d063/d068 flags [target has substitute flag] ret nz ;return if they have a substitute, can't effect them ld a, [$ff00+$f3] ;whose turn? and a jp nz, opponentAttacker ld a, [W_ENEMYMONSTATUS] and a jp nz, CheckDefrost ;opponent has no existing status ld a, [W_PLAYERMOVETYPE] ld b, a ld a, [W_ENEMYMONTYPE1] cp b ret z ;return if they match [can't freeze an ice type etc.] ld a, [W_ENEMYMONTYPE2] cp b ret z ;return.. ld a, [W_PLAYERMOVEEFFECT] cp a, 7 ;10% status effects are 04, 05, 06 so 07 will set carry for those ld b, $1a ;[1A-1]/100 or [26-1]/256 = 9.8%~ chance jr c, .next1 ;branch ahead if this is a 10% chance effect.. ld b, $4d ;..or use [4D-1]/100 or [76-1]/256 = 29.7%~ chance sub a, $1e ;subtract $1E to map to equivalent 10% chance effects .next1 push af ;push effect... call GenRandomInBattle ;get random 8bit value for probability test cp b ;success? pop bc ;...pop effect into C ret nc ;do nothing if random value is >= 1A or 4D [no status applied] ;the test passed ld a, b ;what type of effect is this? cp a, BURN_SIDE_EFFECT1 jr z, .burn cp a, FREEZE_SIDE_EFFECT jr z, .freeze ld a, PAR ld [W_ENEMYMONSTATUS], a call $6d27 ;quarter speed of affected monster ld a, $a9 call $7bb9 ;animation jp $7b6e ;print paralysis text .burn ld a, BRN ld [W_ENEMYMONSTATUS], a call $6d64 ld a, $a9 call $7bb9 ;animation ld hl, UnnamedText_3f3d8 jp PrintText .freeze call $79cf ;resets bit 5 of the D063/D068 flags ld a, FRZ ld [W_ENEMYMONSTATUS], a ld a, $a9 call $7bb9 ;animation ld hl, UnnamedText_3f3dd jp PrintText opponentAttacker: ;0x3f382 ld a, [W_PLAYERMONSTATUS] ;this appears to the same as above with addresses swapped for opponent and a jp nz, CheckDefrost ld a, [W_ENEMYMOVETYPE] ld b, a ld a, [W_PLAYERMONTYPE1] cp b ret z ld a, [W_PLAYERMONTYPE2] cp b ret z ld a, [W_ENEMYMOVEEFFECT] cp a, 7 ld b, $1a jr c, .next1 ld b, $4d sub a, $1e .next1 push af call GenRandomInBattle cp b pop bc ret nc ld a, b cp a, BURN_SIDE_EFFECT1 jr z, .burn cp a, FREEZE_SIDE_EFFECT jr z, .freeze ld a, PAR ld [W_PLAYERMONSTATUS], a call $6d27 jp $7b6e .burn ld a, BRN ld [W_PLAYERMONSTATUS], a call $6d64 ld hl, UnnamedText_3f3d8 jp PrintText .freeze ld a, FRZ ld [W_PLAYERMONSTATUS], a ld hl, UnnamedText_3f3dd jp PrintText UnnamedText_3f3d8: ; 0x3f3d8 TX_FAR _UnnamedText_3f3d8 db $50 ; 0x3f3d8 + 5 bytes UnnamedText_3f3dd: ; 0x3f3dd TX_FAR _UnnamedText_3f3dd db $50 ; 0x3f3dd + 5 bytes CheckDefrost: ;0x3f3e2 and a, FRZ ;are they frozen? ret z ;return if so ;not frozen ld a, [$ff00+$f3] ;whose turn? and a jr nz, .opponent ;player [attacker] ld a, [W_PLAYERMOVETYPE] sub a, FIRE ret nz ;return if it isn't fire ;type is fire ld [W_ENEMYMONSTATUS], a ;set opponent status to 00 ["defrost" a frozen monster] ld hl, $d8a8 ;status of first opponent monster in their roster ld a, [W_ENEMYMONNUMBER] ld bc, $002c ;$2C bytes per roster entry call AddNTimes xor a ld [hl], a ;clear status in roster ld hl, UnnamedText_3f423 jr .common .opponent ld a, [W_ENEMYMOVETYPE] ;same as above with addresses swapped sub a, $14 ret nz ld [W_PLAYERMONSTATUS], a ld hl, $d16f ld a, [W_PLAYERMONNUMBER] ld bc, $002c call AddNTimes xor a ld [hl], a ld hl, UnnamedText_3f423 .common jp PrintText UnnamedText_3f423: ; 0x3f423 TX_FAR _UnnamedText_3f423 db $50 ; 0x3f423 + 5 bytes ; known jump sources: e137 (3:6137), 3a821 (e:6821), 3e2e8 (f:62e8) Func_3f428: ; 3f428 (f:7428) ld hl, W_PLAYERMONATTACKMOD ; $cd1a ld de, W_PLAYERMOVEEFFECT ; $cfd3 ld a, [H_WHOSETURN] ; $FF00+$f3 and a jr z, .asm_3f439 ld hl, W_ENEMYMONATTACKMOD ; $cd2e ld de, W_ENEMYMOVEEFFECT ; $cfcd .asm_3f439 ld a, [de] sub $a cp $8 jr c, .asm_3f442 sub $28 .asm_3f442 ld c, a ld b, $0 add hl, bc ld b, [hl] inc b ld a, $d cp b jp c, Func_3f522 ld a, [de] cp $12 jr c, .asm_3f45a inc b ld a, $d cp b jr nc, .asm_3f45a ld b, a .asm_3f45a ld [hl], b ld a, c cp $4 jr nc, asm_3f4ca push hl ld hl, $d026 ld de, $cd12 ld a, [H_WHOSETURN] ; $FF00+$f3 and a jr z, .asm_3f472 ld hl, $cff7 ld de, $cd26 .asm_3f472 push bc sla c ld b, $0 add hl, bc ld a, c add e ld e, a jr nc, .asm_3f47e inc d .asm_3f47e pop bc ld a, [hld] sub $e7 jr nz, .asm_3f48a ld a, [hl] sbc $3 jp z, Func_3f520 .asm_3f48a push hl push bc ld hl, $76cb dec b sla b ld c, b ld b, $0 add hl, bc pop bc xor a ld [H_NUMTOPRINT], a ; $FF00+$96 (aliases: H_MULTIPLICAND) ld a, [de] ld [$FF00+$97], a inc de ld a, [de] ld [$FF00+$98], a ld a, [hli] ld [H_REMAINDER], a ; $FF00+$99 (aliases: H_DIVISOR, H_MULTIPLIER, H_POWEROFTEN) call Multiply ld a, [hl] ld [H_REMAINDER], a ; $FF00+$99 (aliases: H_DIVISOR, H_MULTIPLIER, H_POWEROFTEN) ld b, $4 call Divide pop hl ld a, [$FF00+$98] sub $e7 ld a, [$FF00+$97] sbc $3 jp c, Func_3f4c3 ld a, $3 ld [$FF00+$97], a ld a, $e7 ld [$FF00+$98], a ; known jump sources: 3f4b8 (f:74b8) Func_3f4c3: ; 3f4c3 (f:74c3) ld a, [$FF00+$97] ld [hli], a ld a, [$FF00+$98] ld [hl], a pop hl asm_3f4ca: ; 3f4ca (f:74ca) ld b, c inc b call Func_3f688 ld hl, W_PLAYERBATTSTATUS2 ; $d063 ld de, W_PLAYERMOVENUM ; $cfd2 ld bc, $ccf7 ld a, [H_WHOSETURN] ; $FF00+$f3 and a jr z, .asm_3f4e6 ld hl, W_ENEMYBATTSTATUS2 ; $d068 ld de, W_ENEMYMOVENUM ; $cfcc ld bc, $ccf3 .asm_3f4e6 ld a, [de] cp $6b jr nz, .asm_3f4f9 bit 4, [hl] push af push bc ld hl, $5747 ld b, $1e push de call nz, Bankswitch pop de .asm_3f4f9 call Func_3fba8 ld a, [de] cp $6b jr nz, .asm_3f50e pop bc ld a, $1 ld [bc], a ld hl, $5771 ld b, $1e pop af call nz, Bankswitch .asm_3f50e ld a, [H_WHOSETURN] ; $FF00+$f3 and a call z, Func_3ee19 ld hl, $7528 call PrintText call Func_3ed27 jp Func_3ed64 ; known jump sources: 3f487 (f:7487) Func_3f520: ; 3f520 (f:7520) pop hl dec [hl] ; known jump sources: 3f44b (f:744b) Func_3f522: ; 3f522 (f:7522) ld hl, $7b3e jp PrintText INCBIN "baserom.gbc",$3f528,$3f52d - $3f528 ld hl, $7542 ld a, [H_WHOSETURN] ; $FF00+$f3 and a ld a, [W_PLAYERMOVEEFFECT] ; $cfd3 jr z, .asm_3f53b ld a, [W_ENEMYMOVEEFFECT] ; $cfcd .asm_3f53b cp $12 ret nc ld hl, $7547 ret INCBIN "baserom.gbc",$3f542,$3f547 - $3f542 UnnamedText_3f547: ; 0x3f547 TX_FAR _UnnamedText_3f547 db $50 ; 0x3f547 + 5 bytes ld hl, W_ENEMYMONATTACKMOD ; $cd2e ld de, W_PLAYERMOVEEFFECT ; $cfd3 ld bc, W_ENEMYBATTSTATUS1 ; $d067 ld a, [H_WHOSETURN] ; $FF00+$f3 and a jr z, .asm_3f572 ld hl, W_PLAYERMONATTACKMOD ; $cd1a ld de, W_ENEMYMOVEEFFECT ; $cfcd ld bc, W_PLAYERBATTSTATUS1 ; $d062 ld a, [W_ISLINKBATTLE] ; $d12b cp $4 jr z, .asm_3f572 call GenRandomInBattle cp $40 jp c, Func_3f65a .asm_3f572 call CheckTargetSubstitute jp nz, Func_3f65a ld a, [de] cp $44 jr c, .asm_3f58a call GenRandomInBattle cp $55 jp nc, Func_3f650 ld a, [de] sub $44 jr .asm_3f5a9 .asm_3f58a push hl push de push bc call MoveHitTest pop bc pop de pop hl ld a, [W_MOVEMISSED] ; $d05f and a jp nz, Func_3f65a ld a, [bc] bit 6, a jp nz, Func_3f65a ld a, [de] sub $12 cp $8 jr c, .asm_3f5a9 sub $28 .asm_3f5a9 ld c, a ld b, $0 add hl, bc ld b, [hl] dec b jp z, Func_3f650 ld a, [de] cp $24 jr c, .asm_3f5bf cp $44 jr nc, .asm_3f5bf dec b jr nz, .asm_3f5bf inc b .asm_3f5bf ld [hl], b ld a, c cp $4 jr nc, asm_3f62c push hl push de ld hl, $cff7 ld de, $cd26 ld a, [H_WHOSETURN] ; $FF00+$f3 and a jr z, .asm_3f5d8 ld hl, $d026 ld de, $cd12 .asm_3f5d8 push bc sla c ld b, $0 add hl, bc ld a, c add e ld e, a jr nc, .asm_3f5e4 inc d .asm_3f5e4 pop bc ld a, [hld] sub $1 jr nz, .asm_3f5ef ld a, [hl] and a jp z, Func_3f64d .asm_3f5ef push hl push bc ld hl, $76cb dec b sla b ld c, b ld b, $0 add hl, bc pop bc xor a ld [H_NUMTOPRINT], a ; $FF00+$96 (aliases: H_MULTIPLICAND) ld a, [de] ld [$FF00+$97], a inc de ld a, [de] ld [$FF00+$98], a ld a, [hli] ld [H_REMAINDER], a ; $FF00+$99 (aliases: H_DIVISOR, H_MULTIPLIER, H_POWEROFTEN) call Multiply ld a, [hl] ld [H_REMAINDER], a ; $FF00+$99 (aliases: H_DIVISOR, H_MULTIPLIER, H_POWEROFTEN) ld b, $4 call Divide pop hl ld a, [$FF00+$98] ld b, a ld a, [$FF00+$97] or b jp nz, Func_3f624 ld [$FF00+$97], a ld a, $1 ld [$FF00+$98], a ; known jump sources: 3f61b (f:761b) Func_3f624: ; 3f624 (f:7624) ld a, [$FF00+$97] ld [hli], a ld a, [$FF00+$98] ld [hl], a pop de pop hl asm_3f62c: ; 3f62c (f:762c) ld b, c inc b push de call Func_3f688 pop de ld a, [de] cp $44 jr nc, .asm_3f63b call Func_3fb89 .asm_3f63b ld a, [H_WHOSETURN] ; $FF00+$f3 and a call nz, Func_3ee19 ld hl, $7661 call PrintText call Func_3ed27 jp Func_3ed64 ; known jump sources: 3f5ec (f:75ec) Func_3f64d: ; 3f64d (f:764d) pop de pop hl inc [hl] ; known jump sources: 3f582 (f:7582), 3f5af (f:75af) Func_3f650: ; 3f650 (f:7650) ld a, [de] cp $44 ret nc ld hl, $7b3e jp PrintText ; known jump sources: 3f56f (f:756f), 3f575 (f:7575), 3f597 (f:7597), 3f59d (f:759d) Func_3f65a: ; 3f65a (f:765a) ld a, [de] cp $44 ret nc jp Func_3fb4e INCBIN "baserom.gbc",$3f661,$3f666 - $3f661 ld hl, $7683 ld a, [H_WHOSETURN] ; $FF00+$f3 and a ld a, [W_PLAYERMOVEEFFECT] ; $cfd3 jr z, .asm_3f674 ld a, [W_ENEMYMOVEEFFECT] ; $cfcd .asm_3f674 cp $1a ret c cp $44 ret nc ld hl, $767e ret INCBIN "baserom.gbc",$3f67e,$3f683 - $3f67e UnnamedText_3f683: ; 0x3f683 TX_FAR _UnnamedText_3f683 db $50 ; 0x3f683 + 5 bytes ; known jump sources: 3f4cc (f:74cc), 3f62f (f:762f) Func_3f688: ; 3f688 (f:7688) ld hl, $769f ld c, $50 .asm_3f68d dec b jr z, .asm_3f696 .asm_3f690 ld a, [hli] cp c jr z, .asm_3f68d jr .asm_3f690 .asm_3f696 ld de, $cf4b ld bc, $a jp CopyData INCBIN "baserom.gbc",$3f69f,$3f717 - $3f69f ld hl, W_PLAYERBATTSTATUS1 ; $d062 ld de, $d06a ld a, [H_WHOSETURN] ; $FF00+$f3 and a jr z, .asm_3f728 ld hl, W_ENEMYBATTSTATUS1 ; $d067 ld de, $d06f .asm_3f728 set 1, [hl] call GenRandomInBattle and $1 inc a inc a ld [de], a ld a, [H_WHOSETURN] ; $FF00+$f3 add $b0 jp Func_3fb96 ld a, [H_WHOSETURN] ; $FF00+$f3 and a jr nz, .asm_3f791 ld a, [W_ISINBATTLE] ; $d057 dec a jr nz, .asm_3f77e ld a, [W_CURENEMYLVL] ; $d127 ld b, a ld a, [W_PLAYERMONLEVEL] ; $d022 cp b jr nc, .asm_3f76e add b ld c, a inc c .asm_3f751 call GenRandomInBattle cp c jr nc, .asm_3f751 srl b srl b cp b jr nc, .asm_3f76e ld c, $32 call DelayFrames ld a, [W_PLAYERMOVENUM] ; $cfd2 cp $64 jp nz, Func_3fb5e jp Func_3fb53 .asm_3f76e call Func_3cd43 xor a ld [$cc5b], a inc a ld [$d078], a ld a, [W_PLAYERMOVENUM] ; $cfd2 jr .asm_3f7e4 .asm_3f77e ld c, $32 call DelayFrames ld hl, $7b69 ld a, [W_PLAYERMOVENUM] ; $cfd2 cp $64 jp nz, PrintText jp Func_3fb53 .asm_3f791 ld a, [W_ISINBATTLE] ; $d057 dec a jr nz, .asm_3f7d1 ld a, [W_PLAYERMONLEVEL] ; $d022 ld b, a ld a, [W_CURENEMYLVL] ; $d127 cp b jr nc, .asm_3f7c1 add b ld c, a inc c .asm_3f7a4 call GenRandomInBattle cp c jr nc, .asm_3f7a4 srl b srl b cp b jr nc, .asm_3f7c1 ld c, $32 call DelayFrames ld a, [W_ENEMYMOVENUM] ; $cfcc cp $64 jp nz, Func_3fb5e jp Func_3fb53 .asm_3f7c1 call Func_3cd43 xor a ld [$cc5b], a inc a ld [$d078], a ld a, [W_ENEMYMOVENUM] ; $cfcc jr .asm_3f7e4 .asm_3f7d1 ld c, $32 call DelayFrames ld hl, $7b69 ld a, [W_ENEMYMOVENUM] ; $cfcc cp $64 jp nz, PrintText jp Func_3fb4e .asm_3f7e4 push af call Func_3fbb9 ld c, $14 call DelayFrames pop af ld hl, $7802 cp $64 jr z, .asm_3f7ff ld hl, $7807 cp $2e jr z, .asm_3f7ff ld hl, $780c .asm_3f7ff jp PrintText ; 3f802 (f:7802) 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 ld hl, W_PLAYERBATTSTATUS1 ; $d062 ld de, $d06a ld bc, W_NUMHITS ; $d074 ld a, [H_WHOSETURN] ; $FF00+$f3 and a jr z, .asm_3f828 ld hl, W_ENEMYBATTSTATUS1 ; $d067 ld de, $d06f ld bc, $cd05 .asm_3f828 bit 2, [hl] ret nz set 2, [hl] ld hl, W_PLAYERMOVEEFFECT ; $cfd3 ld a, [H_WHOSETURN] ; $FF00+$f3 and a jr z, .asm_3f838 ld hl, W_ENEMYMOVEEFFECT ; $cfcd .asm_3f838 ld a, [hl] cp $4d jr z, .asm_3f856 cp $2c ld a, $2 jr z, .asm_3f853 call GenRandomInBattle and $3 cp $2 jr c, .asm_3f851 call GenRandomInBattle and $3 .asm_3f851 inc a inc a .asm_3f853 ld [de], a ld [bc], a ret .asm_3f856 ld a, $2 ld [hl], a jr .asm_3f853 call CheckTargetSubstitute ret nz ld hl, W_ENEMYBATTSTATUS1 ; $d067 ld de, W_PLAYERMOVEEFFECT ; $cfd3 ld a, [H_WHOSETURN] ; $FF00+$f3 and a jr z, .asm_3f870 ld hl, W_PLAYERBATTSTATUS1 ; $d062 ld de, W_ENEMYMOVEEFFECT ; $cfcd .asm_3f870 ld a, [de] cp $1f ld b, $1a jr z, .asm_3f879 ld b, $4d .asm_3f879 call GenRandomInBattle cp b ret nc set 3, [hl] call Func_3f9cf ret ld hl, Func_33f57 ld b, BANK(Func_33f57) jp Bankswitch ; indirect jump to Func_33f57 (33f57 (c:7f57)) ld hl, W_PLAYERBATTSTATUS1 ; $d062 ld de, W_PLAYERMOVEEFFECT ; $cfd3 ld a, [H_WHOSETURN] ; $FF00+$f3 and a ld b, $ae jr z, .asm_3f8a1 ld hl, W_ENEMYBATTSTATUS1 ; $d067 ld de, W_ENEMYMOVEEFFECT ; $cfcd ld b, $af .asm_3f8a1 set 4, [hl] ld a, [de] dec de cp $2b jr nz, .asm_3f8ad set 6, [hl] ld b, $64 .asm_3f8ad ld a, [de] cp $5b jr nz, .asm_3f8b6 set 6, [hl] ld b, $c0 .asm_3f8b6 xor a ld [$cc5b], a ld a, b call Func_3fbb9 ld a, [de] ld [W_WHICHTRADE], a ; $cd3d ld hl, $78c8 jp PrintText INCBIN "baserom.gbc",$3f8c8,$3f8cd - $3f8c8 ld a, [W_WHICHTRADE] ; $cd3d cp $d ld hl, $78f9 jr z, .asm_3f8f8 cp $4c ld hl, $78fe jr z, .asm_3f8f8 cp $82 ld hl, $7903 jr z, .asm_3f8f8 cp $8f ld hl, $7908 jr z, .asm_3f8f8 cp $13 ld hl, $790d jr z, .asm_3f8f8 cp $5b ld hl, $7912 .asm_3f8f8 ret ; 3f8f9 (f:78f9) 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 ld hl, W_PLAYERBATTSTATUS1 ; $d062 ld de, $d06a ld a, [H_WHOSETURN] ; $FF00+$f3 and a jr z, .asm_3f928 ld hl, W_ENEMYBATTSTATUS1 ; $d067 ld de, $d06f .asm_3f928 bit 5, [hl] ret nz call Func_3f9cf set 5, [hl] call GenRandomInBattle and $3 cp $2 jr c, .asm_3f93e call GenRandomInBattle and $3 .asm_3f93e inc a ld [de], a ret INCBIN "baserom.gbc",$3f941,$3f949 - $3f941 ld hl, Func_27f86 ld b, BANK(Func_27f86) jp Bankswitch ; indirect jump to Func_27f86 (27f86 (9:7f86)) ld hl, Func_1392c ld b, BANK(Func_1392c) jp Bankswitch ; indirect jump to Func_1392c (1392c (4:792c)) call GenRandomInBattle cp $19 ret nc jr .asm_3f96f call CheckTargetSubstitute jr nz, asm_3f9a6 call MoveHitTest ld a, [W_MOVEMISSED] ; $d05f and a jr nz, asm_3f9a6 .asm_3f96f ld a, [H_WHOSETURN] ; $FF00+$f3 and a ld hl, W_ENEMYBATTSTATUS1 ; $d067 ld bc, $d070 ld a, [W_PLAYERMOVEEFFECT] ; $cfd3 jr z, .asm_3f986 ld hl, W_PLAYERBATTSTATUS1 ; $d062 ld bc, $d06b ld a, [W_ENEMYMOVEEFFECT] ; $cfcd .asm_3f986 bit 7, [hl] jr nz, asm_3f9a6 set 7, [hl] push af call GenRandomInBattle and $3 inc a inc a ld [bc], a pop af cp $4c call nz, Func_3fb89 ld hl, $79a1 jp PrintText ; 3f9a1 (f:79a1) UnnamedText_3f9a1: ; 0x3f9a1 TX_FAR _UnnamedText_3f9a1 db $50 ; 0x3f9a1 + 5 bytes asm_3f9a6: ; 3f9a6 (f:79a6) cp $4c ret z ld c, $32 call DelayFrames jp Func_3fb4e ld hl, Func_52601 ld b, BANK(Func_52601) jp Bankswitch ; indirect jump to Func_52601 (52601 (14:6601)) INCBIN "baserom.gbc",$3f9b9,$3f9c1 - $3f9b9 ld hl, W_PLAYERBATTSTATUS2 ; $d063 ld a, [H_WHOSETURN] ; $FF00+$f3 and a jr z, .asm_3f9cc ld hl, W_ENEMYBATTSTATUS2 ; $d068 .asm_3f9cc set 5, [hl] ret ; known jump sources: 3f36f (f:736f), 3f880 (f:7880), 3f92b (f:792b) Func_3f9cf: ; 3f9cf (f:79cf) push hl ld hl, W_ENEMYBATTSTATUS2 ; $d068 ld a, [H_WHOSETURN] ; $FF00+$f3 and a jr z, .asm_3f9db ld hl, W_PLAYERBATTSTATUS2 ; $d063 .asm_3f9db res 5, [hl] pop hl ret INCBIN "baserom.gbc",$3f9df,$3fa77 - $3f9df UnnamedText_3fa77: ; 0x3fa77 TX_FAR _UnnamedText_3fa77 db $50 ; 0x3fa77 + 5 bytes ld hl, Func_2bea9 ld b, BANK(Func_2bea9) jp Bankswitch ; indirect jump to Func_2bea9 (2bea9 (a:7ea9)) INCBIN "baserom.gbc",$3fa84,$3fa8a - $3fa84 call MoveHitTest ld a, [W_MOVEMISSED] ; $d05f and a jr nz, .asm_3fb06 ld de, W_ENEMYDISABLEDMOVE ; $d072 ld hl, $cfed ld a, [H_WHOSETURN] ; $FF00+$f3 and a jr z, .asm_3faa4 ld de, W_PLAYERDISABLEDMOVE ; $d06d ld hl, $d01c .asm_3faa4 ld a, [de] and a jr nz, .asm_3fb06 .asm_3faa8 push hl call GenRandomInBattle and $3 ld c, a ld b, $0 add hl, bc ld a, [hl] pop hl and a jr z, .asm_3faa8 ld [$d11e], a push hl ld a, [H_WHOSETURN] ; $FF00+$f3 and a ld hl, W_PLAYERMONPP ; $d02d jr nz, .asm_3facf ld a, [W_ISLINKBATTLE] ; $d12b cp $4 pop hl jr nz, .asm_3fae1 push hl ld hl, W_ENEMYMONPP ; $cffe .asm_3facf push hl ld a, [hli] or [hl] inc hl or [hl] inc hl or [hl] and $3f pop hl jr z, .asm_3fb05 add hl, bc ld a, [hl] pop hl and a jr z, .asm_3faa8 .asm_3fae1 call GenRandomInBattle and $7 inc a inc c swap c add c ld [de], a call Func_3fb89 ld hl, $ccee ld a, [H_WHOSETURN] ; $FF00+$f3 and a jr nz, .asm_3faf8 inc hl .asm_3faf8 ld a, [$d11e] ld [hl], a call GetMoveName ld hl, $7b09 jp PrintText .asm_3fb05 pop hl .asm_3fb06 jp Func_3fb53 ; 3fb09 (f:7b09) UnnamedText_3fb09: ; 0x3fb09 TX_FAR _UnnamedText_3fb09 db $50 ; 0x3fb09 + 5 bytes INCBIN "baserom.gbc",$3fb0e,$3fb26 - $3fb0e ld hl, Func_3b9ec ld b, BANK(Func_3b9ec) jp Bankswitch ; indirect jump to Func_3b9ec (3b9ec (e:79ec)) ld hl, Func_3bab1 ld b, BANK(Func_3bab1) jp Bankswitch ; indirect jump to Func_3bab1 (3bab1 (e:7ab1)) ld hl, Func_3bb97 ld b, BANK(Func_3bb97) jp Bankswitch ; indirect jump to Func_3bb97 (3bb97 (e:7b97)) ; 3fb3e (f:7b3e) 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 ; known jump sources: 3f65e (f:765e), 3f7e1 (f:77e1), 3f9ae (f:79ae) Func_3fb4e: ; 3fb4e (f:7b4e) ld a, [$ccf4] and a ret nz ; known jump sources: 27faf (9:7faf), 3bbe3 (e:7be3), 3f76b (f:776b), 3f78e (f:778e), 3f7be (f:77be), 3fb06 (f:7b06) Func_3fb53: ; 3fb53 (f:7b53) ld hl, $7b59 jp PrintText ; 3fb59 (f:7b59) UnnamedText_3fb59: ; 0x3fb59 TX_FAR _UnnamedText_3fb59 db $50 ; 0x3fb59 + 5 bytes ; known jump sources: 3f242 (f:7242), 3f2dc (f:72dc), 3f768 (f:7768), 3f7bb (f:77bb), 52663 (14:6663) Func_3fb5e: ; 3fb5e (f:7b5e) ld hl, $7b64 jp PrintText ; 3fb64 (f:7b64) UnnamedText_3fb64: ; 0x3fb64 TX_FAR _UnnamedText_3fb64 db $50 ; 0x3fb64 + 5 bytes UnnamedText_3fb69: ; 0x3fb69 TX_FAR _UnnamedText_3fb69 db $50 ; 0x3fb69 + 5 bytes ; known jump sources: 3f359 (f:7359), 3f3bc (f:73bc), 52656 (14:6656) Func_3fb6e: ; 3fb6e (f:7b6e) ld hl, $7b74 jp PrintText ; 3fb74 (f:7b74) UnnamedText_3fb74: ; 0x3fb74 TX_FAR _UnnamedText_3fb74 db $50 ; 0x3fb74 + 5 bytes CheckTargetSubstitute: ;0x3fb79 push hl ld hl, $d068 ld a, [$ff00+$f3] ;whose turn? and a jr z, .next1 ld hl, $d063 .next1 bit 4, [hl] ;test bit 4 in d063/d068 flags pop hl ret ; known jump sources: 3f239 (f:7239), 3f2cd (f:72cd), 3f638 (f:7638), 3f998 (f:7998), 3faec (f:7aec) Func_3fb89: ; 3fb89 (f:7b89) ld a, [H_WHOSETURN] ; $FF00+$f3 and a ld a, [W_PLAYERMOVENUM] ; $cfd2 jr z, .asm_3fb94 ld a, [W_ENEMYMOVENUM] ; $cfcc .asm_3fb94 and a ret z ; known jump sources: 3f2c7 (f:72c7), 3f736 (f:7736) Func_3fb96: ; 3fb96 (f:7b96) ld [W_ANIMATIONID], a ; $d07c ld a, [H_WHOSETURN] ; $FF00+$f3 and a ld a, $6 jr z, .asm_3fba2 ld a, $3 .asm_3fba2 ld [$cc5b], a jp Func_3fbbc ; known jump sources: 27f9c (9:7f9c), 2bede (a:7ede), 3f4f9 (f:74f9), 5264e (14:664e) Func_3fba8: ; 3fba8 (f:7ba8) xor a ld [$cc5b], a ld a, [H_WHOSETURN] ; $FF00+$f3 and a ld a, [W_PLAYERMOVENUM] ; $cfd2 jr z, .asm_3fbb7 ld a, [W_ENEMYMOVENUM] ; $cfcc .asm_3fbb7 and a ret z ; known jump sources: 3f356 (f:7356), 3f366 (f:7366), 3f379 (f:7379), 3f7e5 (f:77e5), 3f8bb (f:78bb) Func_3fbb9: ; 3fbb9 (f:7bb9) ld [W_ANIMATIONID], a ; $d07c ; known jump sources: 3fba5 (f:7ba5) Func_3fbbc: ; 3fbbc (f:7bbc) push hl push de push bc ld a, $8 call Predef ; indirect jump to MoveAnimation (78d5e (1e:4d5e)) pop bc pop de pop hl ret ; 3fbc8 (f:7bc8) 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," " 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 ; known jump sources: 71c5c (1c:5c5c) Func_410e2: ; 410e2 (10:50e2) ld a, [W_WHICHTRADE] ; $cd3d ld [$cd5e], a ld a, [$cd3e] ld [$cd5f], a ld de, $5138 jr .asm_41102 INCBIN "baserom.gbc",$410f3,$41102 - $410f3 .asm_41102 ld a, [W_OPTIONS] ; $d355 push af ld a, [$FF00+$af] push af ld a, [$FF00+$ae] push af xor a ld [W_OPTIONS], a ; $d355 ld [$FF00+$af], a ld [$FF00+$ae], a push de pop de ld a, [de] cp $ff jr z, .asm_4112d inc de push de ld hl, $515f add a ld c, a ld b, $0 add hl, bc ld a, [hli] ld h, [hl] ld l, a ld de, $5115 push de jp [hl] .asm_4112d pop af ld [$FF00+$ae], a pop af ld [$FF00+$af], a pop af ld [W_OPTIONS], a ; $d355 ret INCBIN "baserom.gbc",$41138,$41181 - $41138 ; known jump sources: 41367 (10:5367) Func_41181: ; 41181 (10:5181) ld c, $64 jp DelayFrames ; known jump sources: 412be (10:52be), 4134b (10:534b), 41398 (10:5398), 413e3 (10:53e3) Func_41186: ; 41186 (10:5186) ld a, $1 ld [H_AUTOBGTRANSFERENABLED], a ; $FF00+$ba call Delay3 xor a ld [H_AUTOBGTRANSFERENABLED], a ; $FF00+$ba ret ; known jump sources: 41281 (10:5281), 41617 (10:5617), 41620 (10:5620), 41633 (10:5633), 4163c (10:563c), 41652 (10:5652) Func_41191: ; 41191 (10:5191) ld c, $50 jp DelayFrames ; known jump sources: 411a1 (10:51a1), 41298 (10:5298), 4142d (10:542d), 4145c (10:545c), 4149f (10:549f), 415f1 (10:55f1) Func_41196: ; 41196 (10:5196) ld hl, $c3a0 ld bc, $168 ld a, $7f jp FillMemory call Func_41196 call DisableLCD ld hl, $69be ld de, $9310 ld bc, $310 ld a, $e call FarCopyData2 ld hl, $6cce ld de, $87c0 ld bc, $40 ld a, $e call FarCopyData2 ld hl, $9800 ld bc, $800 ld a, $7f call FillMemory call CleanLCD_OAM ld a, $ff ld [$cfcb], a ld hl, $d730 set 6, [hl] ld a, [$cf1b] and a ld a, $e4 jr z, .asm_411e5 ld a, $f0 .asm_411e5 ld [rOBP0], a ; $FF00+$48 call EnableLCD xor a ld [H_AUTOBGTRANSFERENABLED], a ; $FF00+$ba ld a, [W_WHICHTRADE] ; $cd3d ld [$d11e], a call GetMonName ld hl, $cd6d ld de, $cf4b ld bc, $b call CopyData ld a, [$cd3e] ld [$d11e], a jp GetMonName ; known jump sources: 4141b (10:541b) Func_4120b: ; 4120b (10:520b) ld a, $d0 ld [rOBP1], a ; $FF00+$49 ld b, BANK(Func_7176c) ld hl, Func_7176c jp Bankswitch ; indirect jump to Func_7176c (7176c (1c:576c)) INCBIN "baserom.gbc",$41217,$4123b - $41217 xor a call LoadGBPal ld hl, $d730 res 6, [hl] ret ld a, $ab ld [rLCDC], a ; $FF00+$40 ld a, $50 ld [$FF00+$b0], a ld a, $86 ld [rWX], a ; $FF00+$4b ld [$FF00+$ae], a xor a ld [H_AUTOBGTRANSFERENABLED], a ; $FF00+$ba ld hl, $c3a4 ld b, $6 ld c, $a call TextBoxBorder call Func_42769 ld b, $98 call Func_18d6 call ClearScreen ld a, [W_WHICHTRADE] ; $cd3d call Func_415a4 ld a, $7e .asm_41273 push af call DelayFrame pop af ld [rWX], a ; $FF00+$4b ld [$FF00+$ae], a dec a dec a and a jr nz, .asm_41273 call Func_41191 ld a, $ad call Func_41676 ld a, $aa call Func_41676 ld a, [W_WHICHTRADE] ; $cd3d call PlayCry xor a ld [H_AUTOBGTRANSFERENABLED], a ; $FF00+$ba ret call Func_41196 ld b, $98 call Func_18d6 ld b, $8 call GoPAL_SET ld hl, $9c8c call Func_414ae ld a, $a0 ld [$FF00+$ae], a call DelayFrame ld a, $8b ld [rLCDC], a ; $FF00+$40 ld hl, $c3ce ld b, $7 call Func_41842 call Func_41186 ld a, $8d call Func_23b1 ld c, $14 .asm_412c8 ld a, [$FF00+$ae] add $4 ld [$FF00+$ae], a dec c jr nz, .asm_412c8 ret ld a, $ab call Func_41676 ld c, $a call DelayFrames ld a, $e4 ld [rOBP0], a ; $FF00+$48 xor a ld [$d09f], a ld bc, $2060 .asm_412e7 push bc xor a ld de, $532e call WriteOAMBlock ld a, [$d09f] xor $1 ld [$d09f], a add $7e ld hl, $c302 ld de, $4 ld c, e .asm_41300 ld [hl], a add hl, de dec c jr nz, .asm_41300 call Delay3 pop bc ld a, c add $4 ld c, a cp $a0 jr nc, .asm_41318 ld a, $8c call Func_23b1 jr .asm_412e7 .asm_41318 call CleanLCD_OAM ld a, $1 ld [H_AUTOBGTRANSFERENABLED], a ; $FF00+$ba call ClearScreen ld b, $98 call Func_18d6 call Delay3 xor a ld [H_AUTOBGTRANSFERENABLED], a ; $FF00+$ba ret INCBIN "baserom.gbc",$4132e,$41336 - $4132e ld a, $ac call Func_41676 call Func_415c8 ld hl, $c46c ld b, $6 ld c, $a call TextBoxBorder call Func_427a7 call Func_41186 ld a, $1 ld [H_AUTOBGTRANSFERENABLED], a ; $FF00+$ba ld a, [$cd3e] call Func_415a4 ld a, $ad call Func_41676 ld a, $1 ld [H_AUTOBGTRANSFERENABLED], a ; $FF00+$ba ld a, [$cd3e] call PlayCry call Func_41181 ld hl, $c46c ld bc, $80c call ClearScreenArea jp Func_4164c call Func_41411 ld a, $1 ld [$d08a], a ld a, $e4 ld [rOBP0], a ; $FF00+$48 ld a, $54 ld [W_BASECOORDX], a ; $d081 ld a, $1c ld [W_BASECOORDY], a ; $d082 ld a, [$cd5e] ld [$cd5d], a call Func_41505 call Func_4142d call Func_41186 call Func_4149f ld hl, $9c8c call Func_414ae ld b, $6 call Func_414c5 ld a, $1 ld [H_AUTOBGTRANSFERENABLED], a ; $FF00+$ba call Func_4149f ld b, $4 call Func_414c5 call Func_4145c ld b, $6 call Func_414c5 xor a ld [H_AUTOBGTRANSFERENABLED], a ; $FF00+$ba call Func_41525 jp CleanLCD_OAM call Func_41411 xor a ld [$d08a], a ld a, $64 ld [W_BASECOORDX], a ; $d081 ld a, $44 ld [W_BASECOORDY], a ; $d082 ld a, [$cd5f] ld [$cd5d], a call Func_41505 call Func_4145c call Func_41186 call Func_4149f ld hl, $9c94 call Func_414ae call Func_41525 ld b, $6 call Func_414c5 ld a, $1 ld [H_AUTOBGTRANSFERENABLED], a ; $FF00+$ba call Func_4149f ld b, $4 call Func_414c5 call Func_4142d ld b, $6 call Func_414c5 xor a ld [H_AUTOBGTRANSFERENABLED], a ; $FF00+$ba jp CleanLCD_OAM ; known jump sources: 41376 (10:5376), 413c6 (10:53c6) Func_41411: ; 41411 (10:5411) ld a, $1 ld [H_AUTOBGTRANSFERENABLED], a ; $FF00+$ba call ClearScreen xor a ld [H_AUTOBGTRANSFERENABLED], a ; $FF00+$ba call Func_4120b call DelayFrame ld a, $ab ld [rLCDC], a ; $FF00+$40 xor a ld [$FF00+$ae], a ld a, $90 ld [$FF00+$b0], a ret ; known jump sources: 41395 (10:5395), 41403 (10:5403) Func_4142d: ; 4142d (10:542d) call Func_41196 ld hl, $c3fb ld a, $5d ld [hli], a ld a, $5e ld c, $8 .asm_4143a ld [hli], a dec c jr nz, .asm_4143a ld hl, $c3e1 ld b, $6 call Func_41842 ld hl, $c494 ld b, $2 ld c, $7 call TextBoxBorder ld hl, $c4bd ld de, W_PLAYERNAME ; $d158 call PlaceString jp DelayFrame ; known jump sources: 413b5 (10:53b5), 413e0 (10:53e0) Func_4145c: ; 4145c (10:545c) call Func_41196 ld hl, $c3f0 ld a, $5e ld c, $e .asm_41466 ld [hli], a dec c jr nz, .asm_41466 ld a, $5f ld [hl], a ld de, $14 add hl, de ld a, $61 ld [hl], a add hl, de ld [hl], a add hl, de ld [hl], a add hl, de ld [hl], a add hl, de ld a, $60 ld [hld], a ld a, $5d ld [hl], a ld hl, $c447 ld b, $6 call Func_41842 ld hl, $c3a6 ld b, $2 ld c, $7 call TextBoxBorder ld hl, $c3cf ld de, W_GRASSRATE ; $d887 call PlaceString jp DelayFrame ; known jump sources: 4139b (10:539b), 413ad (10:53ad), 413e6 (10:53e6), 413fb (10:53fb) Func_4149f: ; 4149f (10:549f) call Func_41196 ld hl, $c3f0 ld a, $5e ld c, $14 .asm_414a9 ld [hli], a dec c jr nz, .asm_414a9 ret ; known jump sources: 412a8 (10:52a8), 413a1 (10:53a1), 413ec (10:53ec) Func_414ae: ; 414ae (10:54ae) push hl ld hl, $c3f0 call ScheduleRowRedrawHelper pop hl ld a, h ld [$FF00+$d2], a ld a, l ld [H_SCREENEDGEREDRAWADDR], a ; $FF00+$d1 ld a, $2 ld [H_SCREENEDGEREDRAW], a ; $FF00+$d0 ld c, $a jp DelayFrames ; known jump sources: 413a6 (10:53a6), 413b2 (10:53b2), 413ba (10:53ba), 413f4 (10:53f4), 41400 (10:5400), 41408 (10:5408), 414e5 (10:54e5) Func_414c5: ; 414c5 (10:54c5) ld a, [$d08a] ld e, a ld d, $8 .asm_414cb ld a, e dec a jr z, .asm_414d5 ld a, [$FF00+$ae] sub $2 jr .asm_414d9 .asm_414d5 ld a, [$FF00+$ae] add $2 .asm_414d9 ld [$FF00+$ae], a call DelayFrame dec d jr nz, .asm_414cb call Func_414e8 dec b jr nz, Func_414c5 ret ; known jump sources: 414e1 (10:54e1), 4154c (10:554c) Func_414e8: ; 414e8 (10:54e8) push de push bc push hl ld a, [rBGP] ; $FF00+$47 xor $3c ld [rBGP], a ; $FF00+$47 ld hl, $c302 ld de, $4 ld c, $14 .asm_414f9 ld a, [hl] xor $40 ld [hl], a add hl, de dec c jr nz, .asm_414f9 pop hl pop bc pop de ret ; known jump sources: 41392 (10:5392), 413dd (10:53dd) Func_41505: ; 41505 (10:5505) ld b, BANK(Func_71882) ld hl, Func_71882 call Bankswitch ; indirect jump to Func_71882 (71882 (1c:5882)) call Func_41558 ; known jump sources: 41549 (10:5549) Func_41510: ; 41510 (10:5510) ld hl, $c300 ld c, $14 .asm_41515 ld a, [W_BASECOORDY] ; $d082 add [hl] ld [hli], a ld a, [W_BASECOORDX] ; $d081 add [hl] ld [hli], a inc hl inc hl dec c jr nz, .asm_41515 ret ; known jump sources: 413c0 (10:53c0), 413ef (10:53ef) Func_41525: ; 41525 (10:5525) ld a, [$d08a] and a jr z, .asm_41536 ld bc, $400 call .asm_4153f ld bc, $a jr .asm_4153f .asm_41536 ld bc, $f6 call .asm_4153f ld bc, $fc00 .asm_4153f ld a, b ld [W_BASECOORDX], a ; $d081 ld a, c ld [W_BASECOORDY], a ; $d082 ld d, $4 .asm_41549 call Func_41510 call Func_414e8 ld c, $8 call DelayFrames dec d jr nz, .asm_41549 ret ; known jump sources: 4150d (10:550d) Func_41558: ; 41558 (10:5558) ld hl, $5574 ld c, $4 xor a .asm_4155e push bc ld e, [hl] inc hl ld d, [hl] inc hl ld c, [hl] inc hl ld b, [hl] inc hl push hl inc a push af call WriteOAMBlock pop af pop hl pop bc dec c jr nz, .asm_4155e ret INCBIN "baserom.gbc",$41574,$415a4 - $41574 ; known jump sources: 4126e (10:526e), 41355 (10:5355) Func_415a4: ; 415a4 (10:55a4) ld [$cf91], a ld [$d0b5], a ld [$cf1d], a ld b, $b ld c, $0 call GoPAL_SET ld a, [H_AUTOBGTRANSFERENABLED] ; $FF00+$ba xor $1 ld [H_AUTOBGTRANSFERENABLED], a ; $FF00+$ba call GetBaseStats ld hl, $c3cf call Func_1384 ld c, $a jp DelayFrames ; known jump sources: 4133b (10:533b) Func_415c8: ; 415c8 (10:55c8) ld a, $1 ld [H_AUTOBGTRANSFERENABLED], a ; $FF00+$ba call ClearScreen ld a, $e3 ld [rLCDC], a ; $FF00+$40 ld a, $7 ld [rWX], a ; $FF00+$4b xor a ld [$FF00+$b0], a ld a, $90 ld [$FF00+$ae], a ret ; known jump sources: 41609 (10:5609), 4163f (10:563f) Func_415df: ; 415df (10:55df) ld c, $32 call DelayFrames .asm_415e4 call DelayFrame ld a, [rWX] ; $FF00+$4b inc a inc a ld [rWX], a ; $FF00+$4b cp $a1 jr nz, .asm_415e4 call Func_41196 ld c, $a call DelayFrames ld a, $7 ld [rWX], a ; $FF00+$4b ret ld hl, $560c call PrintText ld c, $c8 call DelayFrames jp Func_415df ; 4160c (10:560c) UnnamedText_4160c: ; 0x4160c TX_FAR _UnnamedText_4160c db $50 ; 0x4160c + 5 bytes ld hl, $5623 call PrintText call Func_41191 ld hl, $5628 call PrintText jp Func_41191 ; 41623 (10:5623) UnnamedText_41623: ; 0x41623 TX_FAR _UnnamedText_41623 db $50 ; 0x41623 + 5 bytes UnnamedText_41628: ; 0x41628 TX_FAR _UnnamedText_41628 db $50 ; 0x41628 + 5 bytes ld hl, $5642 call PrintText call Func_41191 ld hl, $5647 call PrintText call Func_41191 jp Func_415df ; 41642 (10:5642) UnnamedText_41642: ; 0x41642 TX_FAR _UnnamedText_41642 db $50 ; 0x41642 + 5 bytes UnnamedText_41647: ; 0x41647 TX_FAR _UnnamedText_41647 db $50 ; 0x41647 + 5 bytes ; known jump sources: 41373 (10:5373) Func_4164c: ; 4164c (10:564c) ld hl, $5655 call PrintText jp Func_41191 ; 41655 (10:5655) 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 ; known jump sources: 41286 (10:5286), 4128b (10:528b), 412d4 (10:52d4), 41338 (10:5338), 4135a (10:535a) Func_41676: ; 41676 (10:5676) ld [W_ANIMATIONID], a ; $d07c xor a ld [$cc5b], a ld a, $8 jp Predef ; indirect jump to MoveAnimation (78d5e (1e:4d5e)) ; known jump sources: 1fee (0:1fee) Func_41682: ; 41682 (10:5682) xor a ld [$FF00+$b4], a inc a ld [H_AUTOBGTRANSFERENABLED], a ; $FF00+$ba call Func_4188a call Func_4169d call GBFadeOut2 xor a ld [$FF00+$ae], a ld [H_AUTOBGTRANSFERENABLED], a ; $FF00+$ba call CleanLCD_OAM call DelayFrame ret ; known jump sources: 4168b (10:568b) Func_4169d: ; 4169d (10:569d) ld b, $7 call GoPAL_SET ld a, $e4 ld [rBGP], a ; $FF00+$47 ld [rOBP0], a ; $FF00+$48 ld [rOBP1], a ; $FF00+$49 xor a ld [$FF00+$ae], a ld b, $3 call Func_4183f ld a, $0 ld [W_BASECOORDX], a ; $d081 ld a, $50 ld [W_BASECOORDY], a ; $d082 ld bc, $606 call Func_417c7 ld de, $28ff call Func_4180e ret c ld a, $b9 call Func_23b1 xor a ld [$d09f], a ld de, $5910 call Func_41793 ld a, $ba call Func_23b1 ld de, $591b call Func_41793 ld c, $a call CheckForUserInterruption ret c ld a, $b9 call Func_23b1 ld de, $5910 call Func_41793 ld a, $ba call Func_23b1 ld de, $591b call Func_41793 ld c, $1e call CheckForUserInterruption ret c ld b, $4 call Func_4183f ld a, $bb call Func_23b1 ld de, $401 call Func_4180e ld c, $1e call CheckForUserInterruption ret c ld b, $5 call Func_4183f ld a, $bc call Func_23b1 ld de, $800 call Func_4180e ld a, $b9 call Func_23b1 ld a, $24 ld [$d09f], a ld de, $5926 call Func_41793 ld c, $1e call CheckForUserInterruption ret c ld de, $401 call Func_4180e ld b, $3 call Func_4183f ld c, $3c call CheckForUserInterruption ret c ld a, $b9 call Func_23b1 xor a ld [$d09f], a ld de, $5931 call Func_41793 ld a, $ba call Func_23b1 ld de, $593c call Func_41793 ld c, $14 call CheckForUserInterruption ret c ld a, $24 ld [$d09f], a ld de, $5947 call Func_41793 ld c, $1e call CheckForUserInterruption ret c ld a, $b8 call Func_23b1 ld a, $48 ld [$d09f], a ld de, $5950 jp Func_41793 ; known jump sources: 416d5 (10:56d5), 416e0 (10:56e0), 416f1 (10:56f1), 416fc (10:56fc), 41738 (10:5738), 4175e (10:575e), 41769 (10:5769), 4177a (10:577a), 41790 (10:5790), 417ac (10:57ac) Func_41793: ; 41793 (10:5793) ld a, [de] cp $50 ret z ld [W_BASECOORDY], a ; $d082 inc de ld a, [de] ld [W_BASECOORDX], a ; $d081 push de ld c, $24 call Func_417ae ld c, $5 call DelayFrames pop de inc de jr Func_41793 ; known jump sources: 417a2 (10:57a2), 41829 (10:5829) Func_417ae: ; 417ae (10:57ae) ld hl, $c300 ld a, [$d09f] ld d, a .asm_417b5 ld a, [W_BASECOORDY] ; $d082 add [hl] ld [hli], a ld a, [W_BASECOORDX] ; $d081 add [hl] ld [hli], a ld a, d ld [hli], a inc hl inc d dec c jr nz, .asm_417b5 ret ; known jump sources: 416bf (10:56bf) Func_417c7: ; 417c7 (10:57c7) ld hl, $c300 ld d, $0 .asm_417cc push bc ld a, [W_BASECOORDY] ; $d082 ld e, a .asm_417d1 ld a, e add $8 ld e, a ld [hli], a ld a, [W_BASECOORDX] ; $d081 ld [hli], a ld a, d ld [hli], a ld a, $80 ld [hli], a inc d dec c jr nz, .asm_417d1 ld a, [W_BASECOORDX] ; $d081 add $8 ld [W_BASECOORDX], a ; $d081 pop bc dec b jr nz, .asm_417cc ret ; known jump sources: 418e9 (10:58e9) Func_417f0: ; 417f0 (10:57f0) ld hl, $9c00 ld bc, $240 jr asm_417fe ; known jump sources: 418e0 (10:58e0) Func_417f8: ; 417f8 (10:57f8) ld hl, $c3f0 ld bc, $c8 asm_417fe: ; 417fe (10:57fe) ld [hl], $0 inc hl dec bc ld a, b or c jr nz, asm_417fe ret ; known jump sources: 418f1 (10:58f1), 418f9 (10:58f9), 41901 (10:5901), 41909 (10:5909) Func_41807: ; 41807 (10:5807) ld a, $1 .asm_41809 ld [hli], a dec c jr nz, .asm_41809 ret ; known jump sources: 416c5 (10:56c5), 41712 (10:5712), 41728 (10:5728), 41744 (10:5744), 4183c (10:583c) Func_4180e: ; 4180e (10:580e) ld a, e cp $ff jr z, .asm_4181d cp $1 jr z, .asm_4182d ld a, [$FF00+$ae] dec a dec a jr .asm_41831 .asm_4181d push de ld a, $2 ld [W_BASECOORDX], a ; $d081 xor a ld [W_BASECOORDY], a ; $d082 ld c, $24 call Func_417ae pop de .asm_4182d ld a, [$FF00+$ae] inc a inc a .asm_41831 ld [$FF00+$ae], a push de ld c, $2 call CheckForUserInterruption pop de ret c dec d jr nz, Func_4180e ret ; known jump sources: 416af (10:56af), 41707 (10:5707), 4171d (10:571d), 41749 (10:5749) Func_4183f: ; 4183f (10:583f) ld hl, $c439 ; known jump sources: 412bb (10:52bb), 41443 (10:5443), 41486 (10:5486) Func_41842: ; 41842 (10:5842) ld c, $0 ld a, $31 jp Predef ; indirect jump to Func_79dda (79dda (1e:5dda)) INCBIN "baserom.gbc",$41849,$41852 - $41849 ; known jump sources: 418ad (10:58ad) Func_41852: ; 41852 (10:5852) ld hl, $5a99 ld de, $9000 ld bc, $600 ld a, $10 call FarCopyData2 ld hl, $5959 ld de, $9600 ld bc, $140 ld a, $10 call FarCopyData2 ld hl, $5959 ld de, $8800 ld bc, $140 ld a, $10 call FarCopyData2 ld hl, $6099 ld de, $8000 ld bc, $6c0 ld a, $10 jp FarCopyData2 ; known jump sources: 41688 (10:5688) Func_4188a: ; 4188a (10:588a) ld b, $c call GoPAL_SET ld b, BANK(Func_4538) ld hl, Func_4538 call Bankswitch ; indirect jump to Func_4538 (4538 (1:4538)) ld a, $e4 ld [rBGP], a ; $FF00+$47 ld c, $b4 call DelayFrames call ClearScreen call DisableLCD xor a ld [W_CUROPPONENT], a ; $d059 call Func_418e9 call Func_41852 call EnableLCD ld hl, rLCDC ; $ff40 res 5, [hl] set 3, [hl] ld c, $40 call DelayFrames ld b, BANK(Func_70044) ld hl, Func_70044 call Bankswitch ; indirect jump to Func_70044 (70044 (1c:4044)) push af pop af jr c, .asm_418d0 ld c, $28 call DelayFrames .asm_418d0 ld a, $1f ld [$c0ef], a ld [$c0f0], a ld a, $dc ld [$c0ee], a call Func_23b1 call Func_417f8 call CleanLCD_OAM jp Delay3 ; known jump sources: 418aa (10:58aa) Func_418e9: ; 418e9 (10:58e9) call Func_417f0 ld hl, $c3a0 ld c, $50 call Func_41807 ld hl, $c4b8 ld c, $50 call Func_41807 ld hl, $9c00 ld c, $80 call Func_41807 ld hl, $9dc0 ld c, $80 jp Func_41807 INCBIN "baserom.gbc",$4190c,$420d9 - $4190c IF _RED INCBIN "gfx/red/introfight.2bpp" ENDC IF _BLUE INCBIN "gfx/blue/introfight.2bpp" ENDC ; XXX what do these do Func_42769: 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 Func_427a7: 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 ; MartSignText db $5, $4, $7 ; PokeCenterSignText 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 EnableAutoTextBoxDrawing ; 0x4410e LavenderTownTexts: ; 0x4410e dw LavenderTownText1, LavenderTownText2, LavenderTownText3, LavenderTownText4, LavenderTownText5, MartSignText, PokeCenterSignText, 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 DisplayDexRating: ; 0x44169 ld hl, W_SEENPOKEMON ld b, $13 call CountSetBits ld a, [$D11E] ; result of CountSetBits (seen count) ld [$FFDB], a ld hl, W_OWNEDPOKEMON ld b, $13 call CountSetBits ld a, [$D11E] ; result of CountSetBits (own count) ld [$FFDC], a ld hl, DexRatingsTable .findRating ld a, [hli] ld b, a ld a, [$FFDC] ; number of pokemon owned cp b jr c, .foundRating inc hl inc hl jr .findRating .foundRating ld a, [hli] ld h, [hl] ld l, a ; load text pointer into hl ld a, [$D747] bit 3, a res 3, a ld [$D747], a jr nz, .label3 push hl ld hl, UnnamedText_441cc call PrintText pop hl call PrintText ld b, $1F ld hl, $513B call Bankswitch jp $3865 ; wait for button press .label3 ld de, $CC5B ld a, [$FFDB] ld [de], a inc de ld a, [$FFDC] ld [de], a inc de .label4 ld a, [hli] cp a, $50 jr z, .label5 ld [de], a inc de jr .label4 .label5 ld [de], a ret UnnamedText_441cc: ; 0x441cc TX_FAR _UnnamedText_441cc db $50 ; 0x441cc + 5 bytes DexRatingsTable: db 10 dw UnnamedText_44201 db 20 dw UnnamedText_44206 db 30 dw UnnamedText_4420b db 40 dw UnnamedText_44210 db 50 dw UnnamedText_44215 db 60 dw UnnamedText_4421a db 70 dw UnnamedText_4421f db 80 dw UnnamedText_44224 db 90 dw UnnamedText_44229 db 100 dw UnnamedText_4422e db 110 dw UnnamedText_44233 db 120 dw UnnamedText_44238 db 130 dw UnnamedText_4423d db 140 dw UnnamedText_44242 db 150 dw UnnamedText_44247 db 152 dw UnnamedText_4424c 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 EnableAutoTextBoxDrawing ; 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 EnableAutoTextBoxDrawing 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 ; known jump sources: 442dd (11:42dd), 442e3 (11:42e3), 442e9 (11:42e9), 442ef (11:42ef) Func_44304: ; 44304 (11:4304) ld a, $2d ld [$d09f], a jr asm_44310 ; known jump sources: 442d7 (11:42d7), 442f5 (11:42f5), 442fb (11:42fb), 44301 (11:4301) Func_4430b: ; 4430b (11:430b) ld a, $e ld [$d09f], a asm_44310: ; 44310 (11:4310) ld a, $17 call Predef ; indirect jump to Func_ee9e (ee9e (3:6e9e)) ret INCBIN "baserom.gbc",$44316,$4432c - $44316 Mansion1Texts: ; 0x4432c dw Mansion1Text1, Predef5CText, Predef5CText, 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 EnableAutoTextBoxDrawing 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 EnableAutoTextBoxDrawing ld hl, $d7e7 set 0, [hl] ld hl, $cd60 bit 7, [hl] res 7, [hl] jr z, .asm_4483b ; 0x447f8 $41 ld hl, Seafoam1HolesCoords call CheckBoulderCoords 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 Predef .asm_4483b ld a, $9f ld [$d71d], a ld hl, Seafoam1HolesCoords jp $6981 ; 0x44846 Seafoam1HolesCoords: ; 0x44846 db $06,$11 db $06,$18 db $ff SeafoamIslands1Texts: ; 0x4484b dw BoulderText, BoulderText 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 EnableAutoTextBoxDrawing ; 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 EnableAutoTextBoxDrawing ld hl, VictoryRoad3TrainerHeaders ld de, $49b1 ld a, [$d640] call $3160 ld [$d640], a ret ; 0x44996 VictoryRoad3Script_Unknown44996: ; 0x44996 ld hl, $d126 bit 5, [hl] res 5, [hl] ret z ld hl, $d813 bit 0, [hl] ret z ld a, $1d ld [$d09f], a ld bc, $503 ld a, $17 jp Predef ; indirect jump to Func_ee9e (ee9e (3:6e9e)) INCBIN "baserom.gbc",$449b1,$449b7 - $449b1 ld hl, $cd60 bit 7, [hl] res 7, [hl] jp z, .asm_449fe ld hl, $49f9 call CheckBoulderCoords jp nc, .asm_449fe ld a, [W_WHICHTRADE] ; $cd3d cp $1 jr nz, .asm_449dc ld hl, $d126 set 5, [hl] ld hl, $d813 set 0, [hl] ret .asm_449dc ld hl, $d813 bit 6, [hl] set 6, [hl] jr nz, .asm_449fe ld a, $7a ld [$cc4d], a ld a, $11 call Predef ; indirect jump to Func_f1d7 (f1d7 (3:71d7)) ld a, $60 ld [$cc4d], a ld a, $15 jp Predef ; indirect jump to Func_f1c8 (f1c8 (3:71c8)) INCBIN "baserom.gbc",$449f9,$449fe - $449f9 .asm_449fe ld a, $c2 ld [$d71d], a ld hl, $49f9 call Func_46981 ld a, [W_WHICHTRADE] ; $cd3d cp $1 jr nz, .asm_44a1b ld hl, $d72d res 4, [hl] ld hl, $d732 res 4, [hl] ret .asm_44a1b ld a, [$d72d] bit 4, a jp z, Func_3219 ret ; 44a24 (11:4a24) VictoryRoad3Texts: ; 0x44a24 dw VictoryRoad3Text1, VictoryRoad3Text2, VictoryRoad3Text3, VictoryRoad3Text4, Predef5CText, Predef5CText, BoulderText, BoulderText, BoulderText, BoulderText 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 EnableAutoTextBoxDrawing 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, Predef5CText, Predef5CText 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 EnableAutoTextBoxDrawing ld hl, RocketHideout2TrainerHeaders ld de, RocketHideout2_Unknown44e3a ld a, [$d632] call $3160 ld [$d632], a ret ; 0x44e3a RocketHideout2_Unknown44e3a: ; 0x44e3a INCBIN "baserom.gbc",$44e3a,$44fd7 - $44e3a ; known jump sources: 5c1 (0:5c1), 74985 (1d:4985) Func_44fd7: ; 44fd7 (11:4fd7) ld a, [$c102] srl a srl a ld hl, $5083 ld c, a ld b, $0 add hl, bc ld a, [hl] ld [$c102], a ld a, [W_CURMAPTILESET] ; $d367 cp $16 ld hl, $5023 jr z, .asm_44ff6 ld hl, $5053 .asm_44ff6 ld a, [$cd38] bit 0, a jr nz, .asm_45001 ld de, $18 add hl, de .asm_45001 ld a, $4 ld bc, $0 .asm_45006 push af push hl push bc add hl, bc ld a, [hli] ld e, a ld a, [hli] ld d, a ld a, [hli] ld c, a ld a, [hli] ld b, a ld a, [hli] ld h, [hl] ld l, a call CopyVideoData pop bc ld a, $6 add c ld c, a pop hl pop af dec a jr nz, .asm_45006 ret ; 45023 (11:5023) ; 0x45023 XXX: it looks to me this is probably data for copying tiles into memory, maybe to mix and match a few tilesets, but I don't really know for sure dw $5087 ;address from within tileset graphics db 1 ;number of tiles to copy? db $11 ;bank of tileset graphics dw $9200 ;where to load in VRAM dw $5097 db 1 db $11 dw $9210 dw $50A7 db 1 db $11 dw $9300 dw $50B7 db 1 db $11 dw $9310 dw Tset16_GFX + $200 db 1 db $1A dw $9200 dw Tset16_GFX + $210 db 1 db $1A dw $9210 dw Tset16_GFX + $300 db 1 db $1A dw $9300 dw Tset16_GFX + $310 db 1 db $1A dw $9310 dw $5097 db 1 db $11 dw $93C0 dw $50B7 db 1 db $11 dw $93D0 dw $5087 db 1 db $11 dw $94C0 dw $50A7 db 1 db $11 dw $94D0 dw Tset05_GFX + $3C0 db 1 db $1A dw $93C0 dw Tset05_GFX + $3D0 db 1 db $1A dw $93D0 dw Tset05_GFX + $4C0 db 1 db $1A dw $94C0 dw Tset05_GFX + $4D0 db 1 db $1A dw $94D0 INCBIN "baserom.gbc",$45083,$450c7-$45083 RocketHideout2Texts: ; 0x450c7 dw RocketHideout2Text1, Predef5CText, Predef5CText, Predef5CText, Predef5CText 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 EnableAutoTextBoxDrawing 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, Predef5CText, Predef5CText 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 EnableAutoTextBoxDrawing 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, Predef5CText, Predef5CText, Predef5CText, Predef5CText, Predef5CText, 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 ld hl, $d3af ld a, [$d73b] ld b, a ld a, [$d73c] ld c, a call Func_457ea ; known jump sources: 457e7 (11:57e7) Func_457ea: ; 457ea (11:57ea) inc hl inc hl ld a, b ld [hli], a ld a, c ld [hli], a ret ; known jump sources: 45836 (11:5836) Func_457f1: ; 457f1 (11:57f1) ld hl, $5804 call LoadItemList ld hl, $5811 ld de, $cc5b ld bc, $16 call CopyData ret INCBIN "baserom.gbc",$45804,$45827 - $45804 ; known jump sources: 457d0 (11:57d0) Func_45827: ; 45827 (11:5827) call Delay3 ld b, BANK(Func_7bf15) ld hl, Func_7bf15 call Bankswitch ; indirect jump to Func_7bf15 (7bf15 (1e:7f15)) ret ; 45833 (11:5833) 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 EnableAutoTextBoxDrawing ; 0x4586e SafariZoneEastTexts: ; 0x4586e dw Predef5CText, Predef5CText, Predef5CText, Predef5CText, 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 EnableAutoTextBoxDrawing ; 0x459ae SafariZoneNorthTexts: ; 0x459ae dw Predef5CText, Predef5CText, 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 EnableAutoTextBoxDrawing ; 0x45bb5 SafariZoneCenterTexts: ; 0x45bb5 dw Predef5CText, 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 EnableAutoTextBoxDrawing ; 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 EnableAutoTextBoxDrawing 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 EnableAutoTextBoxDrawing 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 EnableAutoTextBoxDrawing 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 EnableAutoTextBoxDrawing ; 0x45e0e UnknownDungeon2Texts: ; 0x45e0e dw Predef5CText, Predef5CText, Predef5CText 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 EnableAutoTextBoxDrawing 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, Predef5CText, Predef5CText 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, MEWTWO 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, 70 ; 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 EnableAutoTextBoxDrawing 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 EnableAutoTextBoxDrawing ld hl, $cd60 bit 7, [hl] res 7, [hl] jr z, .asm_46362 ; 0x4631f $41 ld hl, Seafoam2HolesCoords call CheckBoulderCoords 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 Predef .asm_46362 ld a, $a0 ld [$d71d], a ld hl, Seafoam2HolesCoords jp $6981 ; 0x4636d Seafoam2HolesCoords: ; 0x4636d db $06,$12 db $06,$17 db $ff SeafoamIslands2Texts: ; 0x46372 dw BoulderText, BoulderText 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 EnableAutoTextBoxDrawing ld hl, $cd60 bit 7, [hl] res 7, [hl] jr z, .asm_4649e ; 0x4645b $41 ld hl, Seafoam3HolesCoords call CheckBoulderCoords 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 Predef .asm_4649e ld a, $a1 ld [$d71d], a ld hl, Seafoam3HolesCoords jp $6981 ; 0x464a9 Seafoam3HolesCoords: ; 0x464a9 db $06,$13 db $06,$16 db $ff SeafoamIslands3Texts: ; 0x464ae dw BoulderText, BoulderText 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 EnableAutoTextBoxDrawing ld hl, $cd60 bit 7, [hl] res 7, [hl] jr z, .asm_465dc ; 0x46597 $43 ld hl, Seafoam4HolesCoords call CheckBoulderCoords 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, Seafoam4HolesCoords call $6981 ld a, [$d732] bit 4, a ret nz .asm_465ed ld hl, SeafoamIslands4Scripts ld a, [$d666] jp $3d97 ; 0x465f6 Seafoam4HolesCoords: ; 0x465f6 db $10,$03 db $10,$06 db $ff 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, RLEMovement46632 call $350c dec a ld [$cd38], a call $3486 ld hl, $d733 set 2, [hl] ld a, $1 ld [$d666], a ret ; 0x46632 RLEMovement46632: ; 0x46632 db $80,6 db $10,5 db $80,3 db $ff 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 BoulderText, BoulderText, BoulderText, BoulderText, BoulderText, BoulderText 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 EnableAutoTextBoxDrawing 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 ArePlayerCoordsInArray 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 BoulderText, BoulderText, 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, ARTICUNO 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, 50 ; 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" ; known jump sources: 44843 (11:4843), 44a06 (11:4a06), 4636a (11:636a) Func_46981: ; 46981 (11:6981) xor a ld [$d71e], a ld a, [$d72d] bit 4, a ret nz call ArePlayerCoordsInArray ret nc ld a, [W_WHICHTRADE] ; $cd3d ld [$d71e], a ld hl, $d72d set 4, [hl] ld hl, $d732 set 4, [hl] ret ; known jump sources: 3ec5 (0:3ec5) Func_469a0: ; 469a0 (11:69a0) ld hl, $ffeb xor a ld [hli], a ld [hli], a ld [hli], a ld [hl], a ld de, $0 ld hl, $6a40 .asm_469ae ld a, [hli] ld b, a cp $ff jr z, .asm_469fc ld a, [W_CURMAP] ; $d35e cp b jr z, .asm_469be inc de inc de jr .asm_469ae .asm_469be ld hl, $6a96 add hl, de ld a, [hli] ld h, [hl] ld l, a push hl ld hl, W_WHICHTRADE ; $cd3d xor a ld [hli], a ld [hli], a ld [hl], a pop hl .asm_469ce ld a, [hli] cp $ff jr z, .asm_469fc ld [$cd40], a ld b, a ld a, [hli] ld [$cd41], a ld c, a call Func_46a01 ld a, [$FF00+$ea] and a jr z, .asm_469f0 inc hl inc hl inc hl inc hl push hl ld hl, $cd3f inc [hl] pop hl jr .asm_469ce .asm_469f0 ld a, [hli] ld [W_WHICHTRADE], a ; $cd3d ld a, [hli] ld [$cd3e], a ld a, [hli] ld h, [hl] ld l, a ret .asm_469fc ld a, $ff ld [$FF00+$ee], a ret ; known jump sources: 469dc (11:69dc) Func_46a01: ; 46a01 (11:6a01) ld a, [$c109] cp $4 jr z, .asm_46a16 cp $8 jr z, .asm_46a25 cp $c jr z, .asm_46a2b ld a, [W_YCOORD] ; $d361 inc a jr .asm_46a1a .asm_46a16 ld a, [W_YCOORD] ; $d361 dec a .asm_46a1a cp b jr nz, .asm_46a3b ld a, [W_XCOORD] ; $d362 cp c jr nz, .asm_46a3b jr .asm_46a38 .asm_46a25 ld a, [W_XCOORD] ; $d362 dec a jr .asm_46a2f .asm_46a2b ld a, [W_XCOORD] ; $d362 inc a .asm_46a2f cp c jr nz, .asm_46a3b ld a, [W_YCOORD] ; $d361 cp b jr nz, .asm_46a3b .asm_46a38 xor a jr .asm_46a3d .asm_46a3b ld a, $ff .asm_46a3d ld [$FF00+$ea], a ret ; 46a40 (11:6a40) HiddenObjectMaps: ; 0x46a40 db REDS_HOUSE_2F db BLUES_HOUSE db OAKS_LAB db VIRIDIAN_POKECENTER db VIRIDIAN_MART db VIRIDIAN_SCHOOL db VIRIDIAN_GYM db MUSEUM_1F db PEWTER_GYM db PEWTER_MART db PEWTER_POKECENTER db CERULEAN_POKECENTER db CERULEAN_GYM db CERULEAN_MART db LAVENDER_POKECENTER db VERMILION_POKECENTER db VERMILION_GYM db CELADON_MANSION_2 db CELADON_POKECENTER db CELADON_GYM db GAME_CORNER db CELADON_HOTEL db FUCHSIA_POKECENTER db FUCHSIA_GYM db CINNABAR_GYM db CINNABAR_POKECENTER db SAFFRON_GYM db MT_MOON_POKECENTER db ROCK_TUNNEL_POKECENTER db BATTLE_CENTER db TRADE_CENTER db VIRIDIAN_FOREST db MT_MOON_3 db INDIGO_PLATEAU db ROUTE_25 db ROUTE_9 db SS_ANNE_6 db SS_ANNE_10 db ROCKET_HIDEOUT_1 db ROCKET_HIDEOUT_3 db ROCKET_HIDEOUT_4 db SAFFRON_POKECENTER db POKEMONTOWER_5 db ROUTE_13 db SAFARIZONEENTRANCE db SAFARI_ZONE_WEST db SILPH_CO_5F db SILPH_CO_9F db COPYCATS_HOUSE_2F db UNKNOWN_DUNGEON_1 db UNKNOWN_DUNGEON_3 db POWER_PLANT db SEAFOAM_ISLANDS_3 db SEAFOAM_ISLANDS_5 db MANSION_1 db MANSION_3 db ROUTE_23 db VICTORY_ROAD_2 db $6F db BILLS_HOUSE db VIRIDIAN_CITY db SAFARI_ZONE_REST_HOUSE_2 db SAFARI_ZONE_REST_HOUSE_3 db SAFARI_ZONE_REST_HOUSE_4 db $B9 db LAVENDER_HOUSE_1 db CELADON_MANSION_5 db FIGHTINGDOJO db ROUTE_10 db INDIGO_PLATEAU_LOBBY db CINNABAR_LAB_4 db BIKE_SHOP db ROUTE_11 db ROUTE_12 db MANSION_2 db MANSION_4 db SILPH_CO_11F db ROUTE_17 db UNDERGROUND_PATH_NS db UNDERGROUND_PATH_WE db CELADON_CITY db SEAFOAM_ISLANDS_4 db VERMILION_CITY db CERULEAN_CITY db ROUTE_4 db $FF HiddenObjectPointers: ; 0x46a96 ; each of these pointers is for the corresponding map in HiddenObjectMaps dw RedsHouse2FHiddenObjects dw BluesHouseHiddenObjects dw OaksLabHiddenObjects dw ViridianPokecenterHiddenObjects dw ViridianMartHiddenObjects dw ViridianSchoolHiddenObjects dw ViridianGymHiddenObjects dw Museum1FHiddenObjects dw PewterGymHiddenObjects dw PewterMartHiddenObjects dw PewterPokecenterHiddenObjects dw CeruleanPokecenterHiddenObjects dw CeruleanGymHiddenObjects dw CeruleanMartHiddenObjects dw LavenderPokecenterHiddenObjects dw VermilionPokecenterHiddenObjects dw VermilionGymHiddenObjects dw CeladonMansion2HiddenObjects dw CeladonPokecenterHiddenObjects dw CeladonGymHiddenObjects dw GameCornerHiddenObjects dw CeladonHotelHiddenObjects dw FuchsiaPokecenterHiddenObjects dw FuchsiaGymHiddenObjects dw CinnabarGymHiddenObjects dw CinnabarPokecenterHiddenObjects dw SaffronGymHiddenObjects dw MtMoonPokecenterHiddenObjects dw RockTunnelPokecenterHiddenObjects dw BattleCenterHiddenObjects dw TradeCenterHiddenObjects dw ViridianForestHiddenObjects dw MtMoon3HiddenObjects dw IndigoPlateauHiddenObjects dw Route25HiddenObjects dw Route9HiddenObjects dw SSAnne6HiddenObjects dw SSAnne10HiddenObjects dw RocketHideout1HiddenObjects dw RocketHideout3HiddenObjects dw RocketHideout4HiddenObjects dw SaffronPokecenterHiddenObjects dw PokemonTower5HiddenObjects dw Route13HiddenObjects dw SafariZoneEntranceHiddenObjects dw SafariZoneWestHiddenObjects dw SilphCo5FHiddenObjects dw SilphCo9FHiddenObjects dw CopycatsHouse2FHiddenObjects dw UnknownDungeon1HiddenObjects dw UnknownDungeon3HiddenObjects dw PowerPlantHiddenObjects dw SeafoamIslands3HiddenObjects dw SeafoamIslands5HiddenObjects dw Mansion1HiddenObjects dw Mansion3HiddenObjects dw Route23HiddenObjects dw VictoryRoad2HiddenObjects dw Unused6FHiddenObjects dw BillsHouseHiddenObjects dw ViridianCityHiddenObjects dw SafariZoneRestHouse2HiddenObjects dw SafariZoneRestHouse3HiddenObjects dw SafariZoneRestHouse4HiddenObjects dw UnusedB9HiddenObjects dw LavenderHouse1HiddenObjects dw CeladonMansion5HiddenObjects dw FightingDojoHiddenObjects dw Route10HiddenObjects dw IndigoPlateauLobbyHiddenObjects dw CinnabarLab4HiddenObjects dw BikeShopHiddenObjects dw Route11HiddenObjects dw Route12HiddenObjects dw Mansion2HiddenObjects dw Mansion4HiddenObjects dw SilphCo11FHiddenObjects dw Route17HiddenObjects dw UndergroundPathNsHiddenObjects dw UndergroundPathWeHiddenObjects dw CeladonCityHiddenObjects dw SeafoamIslands4HiddenObjects dw VermilionCityHiddenObjects dw CeruleanCityHiddenObjects dw Route4HiddenObjects BattleCenterHiddenObjects: db $04,$05,$d0 ; XXX, y, x dbw $08,$5845 db $04,$04,$d0 ; XXX, y, x dbw $08,$5825 db $FF TradeCenterHiddenObjects: db $04,$05,$d0 ; XXX, y, x dbw $08,$5845 db $04,$04,$d0 ; XXX, y, x dbw $08,$5825 db $FF RedsHouse2FHiddenObjects: db $01,$00,$04 ; XXX, y, x dbw $17,$5b86 db $05,$03,$d0 ; XXX, y, x dbw $17,$5b79 db $FF BluesHouseHiddenObjects: db $01,$00,$04 ; XXX, y, x dbw $18,$6509 db $01,$01,$04 ; XXX, y, x dbw $18,$6509 db $01,$07,$04 ; XXX, y, x dbw $18,$6509 db $FF OaksLabHiddenObjects: db $00,$04,$04 ; XXX, y, x dbw $07,$6958 db $00,$05,$04 ; XXX, y, x dbw $07,$6965 db $01,$00,$04 ; XXX, y, x dbw $07,$6caf db $01,$01,$04 ; XXX, y, x dbw $07,$6caf db $FF ViridianPokecenterHiddenObjects: db $04,$00,$08 ; XXX, y, x dbw $18,$645d db $03,$0d,$04 ; XXX, y, x dbw $18,$6516 db $FF ViridianMartHiddenObjects: db $FF ViridianSchoolHiddenObjects: db $04,$03,$20 ; XXX, y, x dbw $14,$6996 db $00,$03,$21 ; XXX, y, x dbw $17,$5c1a db $FF ViridianGymHiddenObjects: db $0f,$0f,$04 ; XXX, y, x dbw BANK(GymStatues),GymStatues db $0f,$12,$04 ; XXX, y, x dbw BANK(GymStatues),GymStatues db $FF Museum1FHiddenObjects: db $03,$02,$04 ; XXX, y, x dbw $17,$5bad db $06,$02,$04 ; XXX, y, x dbw $17,$5bc3 db $FF PewterGymHiddenObjects: db $0a,$03,$04 ; XXX, y, x dbw BANK(GymStatues),GymStatues db $0a,$06,$04 ; XXX, y, x dbw BANK(GymStatues),GymStatues db $FF PewterMartHiddenObjects: db $FF PewterPokecenterHiddenObjects: db $04,$00,$08 ; XXX, y, x dbw $18,$645d db $03,$0d,$04 ; XXX, y, x dbw $18,$6516 db $FF CeruleanPokecenterHiddenObjects: db $04,$00,$08 ; XXX, y, x dbw $18,$645d db $03,$0d,$04 ; XXX, y, x dbw $18,$6516 db $FF CeruleanGymHiddenObjects: db $0b,$03,$04 ; XXX, y, x dbw BANK(GymStatues),GymStatues db $0b,$06,$04 ; XXX, y, x dbw BANK(GymStatues),GymStatues db $FF CeruleanMartHiddenObjects: db $FF LavenderPokecenterHiddenObjects: db $04,$00,$08 ; XXX, y, x dbw $18,$645d db $03,$0d,$04 ; XXX, y, x dbw $18,$6516 db $FF VermilionPokecenterHiddenObjects: db $03,$0d,$04 ; XXX, y, x dbw $18,$6516 db $04,$00,$04 ; XXX, y, x dbw $18,$645d db $FF VermilionGymHiddenObjects: db $0e,$03,$04 ; XXX, y, x dbw BANK(GymStatues),GymStatues db $0e,$06,$04 ; XXX, y, x dbw BANK(GymStatues),GymStatues db $01,$06,$00 ; XXX, y, x dbw $17,$5def db $07,$01,$00 ; XXX, y, x dbw $17,$5dfc db $09,$01,$01 ; XXX, y, x dbw $17,$5dfc db $0b,$01,$02 ; XXX, y, x dbw $17,$5dfc db $07,$03,$03 ; XXX, y, x dbw $17,$5dfc db $09,$03,$04 ; XXX, y, x dbw $17,$5dfc db $0b,$03,$05 ; XXX, y, x dbw $17,$5dfc db $07,$05,$06 ; XXX, y, x dbw $17,$5dfc db $09,$05,$07 ; XXX, y, x dbw $17,$5dfc db $0b,$05,$08 ; XXX, y, x dbw $17,$5dfc db $07,$07,$09 ; XXX, y, x dbw $17,$5dfc db $09,$07,$0a ; XXX, y, x dbw $17,$5dfc db $0b,$07,$0b ; XXX, y, x dbw $17,$5dfc db $07,$09,$0c ; XXX, y, x dbw $17,$5dfc db $09,$09,$0d ; XXX, y, x dbw $17,$5dfc db $0b,$09,$0e ; XXX, y, x dbw $17,$5dfc db $FF CeladonMansion2HiddenObjects: db $05,$00,$04 ; XXX, y, x dbw $18,$6516 db $FF CeladonPokecenterHiddenObjects: db $04,$00,$08 ; XXX, y, x dbw $18,$645d db $03,$0d,$04 ; XXX, y, x dbw $18,$6516 db $FF CeladonGymHiddenObjects: db $0f,$03,$04 ; XXX, y, x dbw BANK(GymStatues),GymStatues db $0f,$06,$04 ; XXX, y, x dbw BANK(GymStatues),GymStatues db $FF GameCornerHiddenObjects: db $0f,$12,$d0 ; XXX, y, x dbw $0d,$7e2d db $0e,$12,$d0 ; XXX, y, x dbw $0d,$7e2d db $0d,$12,$d0 ; XXX, y, x dbw $0d,$7e2d db $0c,$12,$d0 ; XXX, y, x dbw $0d,$7e2d db $0b,$12,$d0 ; XXX, y, x dbw $0d,$7e2d db $0a,$12,$ff ; XXX, y, x dbw $0d,$7e2d db $0a,$0d,$d0 ; XXX, y, x dbw $0d,$7e2d db $0b,$0d,$d0 ; XXX, y, x dbw $0d,$7e2d db $0c,$0d,$fe ; XXX, y, x dbw $0d,$7e2d db $0d,$0d,$d0 ; XXX, y, x dbw $0d,$7e2d db $0e,$0d,$d0 ; XXX, y, x dbw $0d,$7e2d db $0f,$0d,$d0 ; XXX, y, x dbw $0d,$7e2d db $0f,$0c,$d0 ; XXX, y, x dbw $0d,$7e2d db $0e,$0c,$d0 ; XXX, y, x dbw $0d,$7e2d db $0d,$0c,$d0 ; XXX, y, x dbw $0d,$7e2d db $0c,$0c,$d0 ; XXX, y, x dbw $0d,$7e2d db $0b,$0c,$d0 ; XXX, y, x dbw $0d,$7e2d db $0a,$0c,$d0 ; XXX, y, x dbw $0d,$7e2d db $0a,$07,$d0 ; XXX, y, x dbw $0d,$7e2d db $0b,$07,$d0 ; XXX, y, x dbw $0d,$7e2d db $0c,$07,$d0 ; XXX, y, x dbw $0d,$7e2d db $0d,$07,$d0 ; XXX, y, x dbw $0d,$7e2d db $0e,$07,$d0 ; XXX, y, x dbw $0d,$7e2d db $0f,$07,$d0 ; XXX, y, x dbw $0d,$7e2d db $0f,$06,$d0 ; XXX, y, x dbw $0d,$7e2d db $0e,$06,$d0 ; XXX, y, x dbw $0d,$7e2d db $0d,$06,$d0 ; XXX, y, x dbw $0d,$7e2d db $0c,$06,$fd ; XXX, y, x dbw $0d,$7e2d db $0b,$06,$d0 ; XXX, y, x dbw $0d,$7e2d db $0a,$06,$d0 ; XXX, y, x dbw $0d,$7e2d db $0a,$01,$d0 ; XXX, y, x dbw $0d,$7e2d db $0b,$01,$d0 ; XXX, y, x dbw $0d,$7e2d db $0c,$01,$d0 ; XXX, y, x dbw $0d,$7e2d db $0d,$01,$d0 ; XXX, y, x dbw $0d,$7e2d db $0e,$01,$d0 ; XXX, y, x dbw $0d,$7e2d db $0f,$01,$d0 ; XXX, y, x dbw $0d,$7e2d db $08,$00,COIN+10 dbw BANK(HiddenCoins),HiddenCoins db $10,$01,COIN+10 dbw BANK(HiddenCoins),HiddenCoins db $0b,$03,COIN+20 dbw BANK(HiddenCoins),HiddenCoins db $0e,$03,COIN+10 dbw BANK(HiddenCoins),HiddenCoins db $0c,$04,COIN+10 dbw BANK(HiddenCoins),HiddenCoins db $0c,$09,COIN+20 dbw BANK(HiddenCoins),HiddenCoins db $0f,$09,COIN+10 dbw BANK(HiddenCoins),HiddenCoins db $0e,$10,COIN+10 dbw BANK(HiddenCoins),HiddenCoins db $10,$0a,COIN+10 dbw BANK(HiddenCoins),HiddenCoins db $07,$0b,COIN+40 dbw BANK(HiddenCoins),HiddenCoins db $08,$0f,COIN+100 dbw BANK(HiddenCoins),HiddenCoins db $0f,$0c,COIN+10 dbw BANK(HiddenCoins),HiddenCoins db $FF CeladonHotelHiddenObjects: db $03,$0d,$04 ; XXX, y, x dbw $18,$6516 db $04,$00,$08 ; XXX, y, x dbw $18,$645d db $FF FuchsiaPokecenterHiddenObjects: db $03,$0d,$04 ; XXX, y, x dbw $18,$6516 db $04,$00,$04 ; XXX, y, x dbw $18,$645d db $FF FuchsiaGymHiddenObjects: db $0f,$03,$04 ; XXX, y, x dbw BANK(GymStatues),GymStatues db $0f,$06,$04 ; XXX, y, x dbw BANK(GymStatues),GymStatues db $FF CinnabarGymHiddenObjects: db $0d,$11,$04 ; XXX, y, x dbw BANK(GymStatues),GymStatues db $07,$0f,$01 ; XXX, y, x dbw $07,$6a17 db $01,$0a,$12 ; XXX, y, x dbw $07,$6a17 db $07,$09,$13 ; XXX, y, x dbw $07,$6a17 db $0d,$09,$14 ; XXX, y, x dbw $07,$6a17 db $0d,$01,$05 ; XXX, y, x dbw $07,$6a17 db $07,$01,$16 ; XXX, y, x dbw $07,$6a17 db $FF CinnabarPokecenterHiddenObjects: db $04,$00,$04 ; XXX, y, x dbw $18,$645d db $03,$0d,$04 ; XXX, y, x dbw $18,$6516 db $FF SaffronGymHiddenObjects: db $0f,$09,$04 ; XXX, y, x dbw BANK(GymStatues),GymStatues db $FF MtMoonPokecenterHiddenObjects: db $04,$00,$08 ; XXX, y, x dbw $18,$645d db $03,$0d,$04 ; XXX, y, x dbw $18,$6516 db $FF RockTunnelPokecenterHiddenObjects: db $04,$00,$08 ; XXX, y, x dbw $18,$645d db $03,$0d,$04 ; XXX, y, x dbw $18,$6516 db $FF ViridianForestHiddenObjects: db $12,$01,POTION dbw BANK(HiddenItems),HiddenItems db $2a,$10,ANTIDOTE dbw BANK(HiddenItems),HiddenItems db $FF MtMoon3HiddenObjects: db $0c,$12,MOON_STONE dbw BANK(HiddenItems),HiddenItems db $09,$21,ETHER dbw BANK(HiddenItems),HiddenItems db $FF IndigoPlateauHiddenObjects: db $0d,$08,$ff ; XXX, y, x dbw $14,$6a2f db $0d,$0b,$00 ; XXX, y, x dbw $14,$6a2f db $FF Route25HiddenObjects: db $03,$26,ETHER dbw BANK(HiddenItems),HiddenItems db $01,$0a,ELIXER dbw BANK(HiddenItems),HiddenItems db $FF Route9HiddenObjects: db $07,$0e,ETHER dbw BANK(HiddenItems),HiddenItems db $FF SSAnne6HiddenObjects: db $05,$0d,$00 ; XXX, y, x dbw $17,$5def db $07,$0d,$00 ; XXX, y, x dbw $17,$5def db $09,$0d,GREAT_BALL dbw BANK(HiddenItems),HiddenItems db $FF SSAnne10HiddenObjects: db $01,$03,HYPER_POTION dbw BANK(HiddenItems),HiddenItems db $FF Route10HiddenObjects: db $11,$09,SUPER_POTION dbw BANK(HiddenItems),HiddenItems db $35,$10,MAX_ETHER dbw BANK(HiddenItems),HiddenItems db $FF RocketHideout1HiddenObjects: db $0f,$15,PP_UP dbw BANK(HiddenItems),HiddenItems db $FF RocketHideout3HiddenObjects: db $11,$1b,NUGGET dbw BANK(HiddenItems),HiddenItems db $FF RocketHideout4HiddenObjects: db $01,$19,SUPER_POTION dbw BANK(HiddenItems),HiddenItems db $FF SaffronPokecenterHiddenObjects: db $04,$00,$04 ; XXX, y, x dbw $18,$645d db $03,$0d,$04 ; XXX, y, x dbw $18,$6516 db $FF PokemonTower5HiddenObjects: db $0c,$04,ELIXER dbw BANK(HiddenItems),HiddenItems db $FF Route13HiddenObjects: db $0e,$01,PP_UP dbw BANK(HiddenItems),HiddenItems db $0d,$10,CALCIUM dbw BANK(HiddenItems),HiddenItems db $FF SafariZoneEntranceHiddenObjects: db $01,$0a,NUGGET dbw BANK(HiddenItems),HiddenItems db $FF SafariZoneWestHiddenObjects: db $05,$06,REVIVE dbw BANK(HiddenItems),HiddenItems db $FF SilphCo5FHiddenObjects: db $03,$0c,ELIXER dbw BANK(HiddenItems),HiddenItems db $FF SilphCo9FHiddenObjects: db $0f,$02,MAX_POTION dbw BANK(HiddenItems),HiddenItems db $FF CopycatsHouse2FHiddenObjects: db $01,$01,NUGGET dbw BANK(HiddenItems),HiddenItems db $FF UnknownDungeon1HiddenObjects: db $0b,$0e,RARE_CANDY dbw BANK(HiddenItems),HiddenItems db $FF UnknownDungeon3HiddenObjects: db $03,$1b,ULTRA_BALL dbw BANK(HiddenItems),HiddenItems db $FF PowerPlantHiddenObjects: db $10,$11,MAX_ELIXER dbw BANK(HiddenItems),HiddenItems db $01,$0c,PP_UP dbw BANK(HiddenItems),HiddenItems db $FF SeafoamIslands3HiddenObjects: db $0f,$0f,NUGGET dbw BANK(HiddenItems),HiddenItems db $FF SeafoamIslands5HiddenObjects: db $11,$19,ULTRA_BALL dbw BANK(HiddenItems),HiddenItems db $FF Mansion1HiddenObjects: db $10,$08,MOON_STONE dbw BANK(HiddenItems),HiddenItems db $05,$02,$04 ; XXX, y, x dbw $11,$4316 db $FF Mansion2HiddenObjects: db $0b,$02,$04 ; XXX, y, x dbw $14,$6037 db $FF Mansion3HiddenObjects: db $09,$01,MAX_REVIVE dbw BANK(HiddenItems),HiddenItems db $05,$0a,$04 ; XXX, y, x dbw $14,$627a db $FF Mansion4HiddenObjects: db $09,$01,RARE_CANDY dbw BANK(HiddenItems),HiddenItems db $03,$14,$04 ; XXX, y, x dbw $14,$6420 db $19,$12,$04 ; XXX, y, x dbw $14,$6420 db $FF Route23HiddenObjects: db $2c,$09,FULL_RESTORE dbw BANK(HiddenItems),HiddenItems db $46,$13,ULTRA_BALL dbw BANK(HiddenItems),HiddenItems db $5a,$08,MAX_ETHER dbw BANK(HiddenItems),HiddenItems db $FF VictoryRoad2HiddenObjects: db $02,$05,ULTRA_BALL dbw BANK(HiddenItems),HiddenItems db $07,$1a,FULL_RESTORE dbw BANK(HiddenItems),HiddenItems db $FF Unused6FHiddenObjects: db $0b,$0e,MAX_ELIXER dbw BANK(HiddenItems),HiddenItems db $FF BillsHouseHiddenObjects: db $04,$01,$04 ; XXX, y, x dbw $07,$6b6e db $FF ViridianCityHiddenObjects: db $04,$0e,POTION dbw BANK(HiddenItems),HiddenItems db $FF SafariZoneRestHouse2HiddenObjects: db $04,$00,$08 ; XXX, y, x dbw $18,$645d db $03,$0d,$04 ; XXX, y, x dbw $18,$6516 db $FF SafariZoneRestHouse3HiddenObjects: db $04,$00,$08 ; XXX, y, x dbw $18,$645d db $03,$0d,$04 ; XXX, y, x dbw $18,$6516 db $FF SafariZoneRestHouse4HiddenObjects: db $04,$00,$08 ; XXX, y, x dbw $18,$645d db $03,$0d,$04 ; XXX, y, x dbw $18,$6516 db $FF UnusedB9HiddenObjects: db $02,$01,$04 ; XXX, y, x dbw $17,$5b8f db $FF LavenderHouse1HiddenObjects: db $01,$00,$00 ; XXX, y, x dbw $07,$6b60 db $01,$01,$00 ; XXX, y, x dbw $07,$6b60 db $01,$07,$00 ; XXX, y, x dbw $07,$6b60 db $FF CeladonMansion5HiddenObjects: db $00,$03,$34 ; XXX, y, x dbw $17,$5c1a db $00,$04,$34 ; XXX, y, x dbw $17,$5c1a db $04,$03,$35 ; XXX, y, x dbw $14,$6996 db $FF FightingDojoHiddenObjects: db $09,$03,$04 ; XXX, y, x dbw $14,$6a22 db $09,$06,$04 ; XXX, y, x dbw $14,$6a22 db $00,$04,$04 ; XXX, y, x dbw $14,$6a08 db $00,$05,$04 ; XXX, y, x dbw $14,$6a15 db $FF IndigoPlateauLobbyHiddenObjects: db $07,$0f,$04 ; XXX, y, x dbw $18,$6516 db $FF CinnabarLab4HiddenObjects: db $04,$00,$04 ; XXX, y, x dbw $18,$6516 db $04,$02,$04 ; XXX, y, x dbw $18,$6516 db $FF BikeShopHiddenObjects: db $00,$01,$d0 ; XXX, y, x dbw $07,$694b db $01,$02,$d0 ; XXX, y, x dbw $07,$694b db $02,$01,$d0 ; XXX, y, x dbw $07,$694b db $02,$03,$d0 ; XXX, y, x dbw $07,$694b db $04,$00,$d0 ; XXX, y, x dbw $07,$694b db $05,$01,$d0 ; XXX, y, x dbw $07,$694b db $FF Route11HiddenObjects: db $05,$30,ESCAPE_ROPE dbw BANK(HiddenItems),HiddenItems db $FF Route12HiddenObjects: db $3f,$02,HYPER_POTION dbw BANK(HiddenItems),HiddenItems db $FF SilphCo11FHiddenObjects: db $0c,$0a,$04 ; XXX, y, x dbw $18,$6516 db $FF Route17HiddenObjects: db $0e,$0f,RARE_CANDY dbw BANK(HiddenItems),HiddenItems db $2d,$08,FULL_RESTORE dbw BANK(HiddenItems),HiddenItems db $48,$11,PP_UP dbw BANK(HiddenItems),HiddenItems db $5b,$04,MAX_REVIVE dbw BANK(HiddenItems),HiddenItems db $79,$08,MAX_ELIXER dbw BANK(HiddenItems),HiddenItems db $FF UndergroundPathNsHiddenObjects: db $04,$03,FULL_RESTORE dbw BANK(HiddenItems),HiddenItems db $22,$04,X_SPECIAL dbw BANK(HiddenItems),HiddenItems db $FF UndergroundPathWeHiddenObjects: db $02,$0c,NUGGET dbw BANK(HiddenItems),HiddenItems db $05,$15,ELIXER dbw BANK(HiddenItems),HiddenItems db $FF CeladonCityHiddenObjects: db $0f,$30,PP_UP dbw BANK(HiddenItems),HiddenItems db $FF SeafoamIslands4HiddenObjects: db $10,$09,MAX_ELIXER dbw BANK(HiddenItems),HiddenItems db $FF VermilionCityHiddenObjects: db $0b,$0e,MAX_ETHER dbw BANK(HiddenItems),HiddenItems db $FF CeruleanCityHiddenObjects: db $08,$0f,RARE_CANDY dbw BANK(HiddenItems),HiddenItems db $FF Route4HiddenObjects: db $03,$28,GREAT_BALL dbw BANK(HiddenItems),HiddenItems db $FF INCBIN "baserom.gbc",$470ab,$48000-$470ab 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: Route15GateUpstairsBlocks: Route11GateUpstairsBlocks: ; 40db 16 INCBIN "maps/route11gateupstairs.blk" ; known jump sources: c72b (3:472b) Func_480eb: ; 480eb (12:40eb) call Load16BitRegisters ld a, [rBGP] ; $FF00+$47 or b ld [rBGP], a ; $FF00+$47 ld c, $4 call DelayFrames ld a, [rBGP] ; $FF00+$47 and $fc ld [rBGP], a ; $FF00+$47 ret ; known jump sources: 7920b (1e:520b) Func_480ff: ; 480ff (12:40ff) call Load16BitRegisters ld a, $1 ld [$d0a0], a xor a .asm_48108 ld [H_NUMTOPRINT], a ; $FF00+$96 (aliases: H_MULTIPLICAND) call Func_48119 call Func_48119 dec b ld a, b jr nz, .asm_48108 xor a ld [$d0a0], a ret ; known jump sources: 4810a (12:410a), 4810d (12:410d) Func_48119: ; 48119 (12:4119) ld a, [H_NUMTOPRINT] ; $FF00+$96 (aliases: H_MULTIPLICAND) xor b ld [H_NUMTOPRINT], a ; $FF00+$96 (aliases: H_MULTIPLICAND) ld [rWY], a ; $FF00+$4a ld c, $3 jp DelayFrames ; known jump sources: 3dc34 (f:5c34), 79212 (1e:5212) Func_48125: ; 48125 (12:4125) call Load16BitRegisters xor a .asm_48129 ld [$FF00+$97], a call Func_4813f ld c, $1 call DelayFrames call Func_4813f dec b ld a, b jr nz, .asm_48129 ld a, $7 ld [rWX], a ; $FF00+$4b ret ; known jump sources: 4812b (12:412b), 48133 (12:4133) Func_4813f: ; 4813f (12:413f) ld a, [$FF00+$97] xor b ld [$FF00+$97], a bit 7, a jr z, .asm_48149 xor a .asm_48149 add $7 ld [rWX], a ; $FF00+$4b ld c, $4 jp DelayFrames ; 48152 (12:4152) Route7Script: ; 0x48152 jp EnableAutoTextBoxDrawing ; 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 EnableAutoTextBoxDrawing 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 PREDEF HealPartyPredef 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 EnableAutoTextBoxDrawing ; 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 EnableAutoTextBoxDrawing ; 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 EnableAutoTextBoxDrawing ; 0x483d8 ; known jump sources: 4856d (12:456d) Func_483d8: ; 483d8 (12:43d8) xor a ld [$cd37], a ld de, $cc5b ld hl, $4408 .asm_483e2 ld a, [hli] and a jr z, .asm_48404 push hl push de ld [$d11e], a ld b, a ld a, $1c call Predef ; indirect jump to Func_f8a5 (f8a5 (3:78a5)) pop de pop hl ld a, b and a jr z, .asm_483e2 ld a, [$d11e] ld [de], a inc de push hl ld hl, $cd37 inc [hl] pop hl jr .asm_483e2 .asm_48404 ld a, $ff ld [de], a ret INCBIN "baserom.gbc",$48408,$4840c - $48408 ; known jump sources: 4858a (12:458a) Func_4840c: ; 4840c (12:440c) ld hl, $d730 set 6, [hl] ld hl, $44ee call PrintText xor a ld [W_CURMENUITEMID], a ; $cc26 ld a, $3 ld [W_MENUWATCHEDKEYS], a ; $cc29 ld a, [$cd37] dec a ld [W_MAXMENUITEMID], a ; $cc28 ld a, $2 ld [W_TOPMENUITEMY], a ; $cc24 ld a, $1 ld [W_TOPMENUITEMX], a ; $cc25 ld a, [$cd37] dec a ld bc, $2 ld hl, $3 call AddNTimes dec l ld b, l ld c, $c ld hl, $c3a0 call TextBoxBorder call Func_2429 call Func_48532 ld hl, $d730 res 6, [hl] call HandleMenuInput bit 1, a ret nz ld hl, $cc5b ld a, [W_CURMENUITEMID] ; $cc26 ld d, $0 ld e, a add hl, de ld a, [hl] ld [$FF00+$db], a cp $3c jr z, .asm_484b6 cp $3d jr z, .asm_48492 ld a, [$d778] bit 6, a jr nz, .asm_484e0 ld hl, $4515 call PrintText call Func_484e6 ld bc, $f901 call GiveItem jr nc, .asm_484da ld hl, $451b call PrintText ld hl, $d778 set 6, [hl] ret .asm_48492 ld a, [$d778] bit 5, a jr nz, .asm_484e0 ld hl, $4504 call PrintText call Func_484e6 ld bc, $f801 call GiveItem jr nc, .asm_484da ld hl, $450a call PrintText ld hl, $d778 set 5, [hl] ret .asm_484b6 ld a, [$d778] bit 4, a jr nz, .asm_484e0 ld hl, $44f3 call PrintText call Func_484e6 ld bc, $d501 call GiveItem jr nc, .asm_484da ld hl, $44f9 call PrintText ld hl, $d778 set 4, [hl] ret .asm_484da ld hl, $4526 jp PrintText .asm_484e0 ld hl, $452c jp PrintText ; known jump sources: 4847b (12:447b), 4849f (12:449f), 484c3 (12:44c3) Func_484e6: ; 484e6 (12:44e6) ld b, BANK(Func_17f37) ld hl, Func_17f37 jp Bankswitch ; indirect jump to Func_17f37 (17f37 (5:7f37)) ; 484ee (12:44ee) UnnamedText_484ee: ; 0x484ee TX_FAR _UnnamedText_484ee db $50 ; 0x484ee + 5 bytes INCBIN "baserom.gbc",$484f3,$48532 - $484f3 ; known jump sources: 4844b (12:444b) Func_48532: ; 48532 (12:4532) ld hl, $cc5b xor a ld [$FF00+$db], a .asm_48538 ld a, [hli] cp $ff ret z push hl ld [$d11e], a call GetItemName ld hl, $c3ca ld a, [$FF00+$db] ld bc, $28 call AddNTimes ld de, $cd6d call PlaceString ld hl, $ffdb inc [hl] pop hl jr .asm_48538 ; 4855b (12:455b) 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 EnableAutoTextBoxDrawing ; 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 EnableAutoTextBoxDrawing 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 EnableAutoTextBoxDrawing ; 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 EnableAutoTextBoxDrawing ; 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 EnableAutoTextBoxDrawing ; 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 EnableAutoTextBoxDrawing ld hl, CeladonGymTrainerHeaders ld de, $494e ld a, [$d5ff] call $3160 ld [$d5ff], a ret ; 0x48927 CeladonGymScript_Unknown48927: ; 0x48927 ld hl, $4930 ld de, $493d jp Func_317f INCBIN "baserom.gbc",$48930,$48943 - $48930 ; known jump sources: 4895b (12:495b), 489a3 (12:49a3) Func_48943: ; 48943 (12:4943) xor a ld [$cd6b], a ld [$d5ff], a ld [$da39], a ret INCBIN "baserom.gbc",$4894e,$48956 - $4894e ld a, [W_ISINBATTLE] ; $d057 cp $ff jp z, Func_48943 ld a, $f0 ld [$cd6b], a ; known jump sources: 48a1d (12:4a1d) Func_48963: ; 48963 (12:4963) ld a, $9 ld [H_DOWNARROWBLINKCNT2], a ; $FF00+$8c call DisplayTextID ld hl, $d77c set 1, [hl] ld bc, $dd01 call GiveItem jr nc, .asm_48985 ld a, $a ld [H_DOWNARROWBLINKCNT2], a ; $FF00+$8c call DisplayTextID ld hl, $d77c set 0, [hl] jr .asm_4898c .asm_48985 ld a, $b ld [H_DOWNARROWBLINKCNT2], a ; $FF00+$8c call DisplayTextID .asm_4898c ld hl, W_OBTAINEDBADGES ; $d356 set 3, [hl] ld hl, $d72a set 3, [hl] ld a, [$d77c] or $fc ld [$d77c], a ld hl, $d77d set 0, [hl] jp Func_48943 ; 489a6 (12:49a6) 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 EnableAutoTextBoxDrawing 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 EnableAutoTextBoxDrawing ; 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 EnableAutoTextBoxDrawing ; 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 EnableAutoTextBoxDrawing 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 EnableAutoTextBoxDrawing 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 EnableAutoTextBoxDrawing ; 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 EnableAutoTextBoxDrawing ; 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 EnableAutoTextBoxDrawing ; 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 EnableAutoTextBoxDrawing ; 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 DisableAutoTextBoxDrawing ; 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 EnableAutoTextBoxDrawing ; 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 DisableAutoTextBoxDrawing ; 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_1F_HEIGHT, ROUTE_15_GATE_1F_WIDTH ; dimensions (y, x) dw Route15GateBlocks, Route15GateTexts, Route15GateScript ; blocks, texts, scripts db $00 ; connections dw Route15GateObject ; objects Route15GateScript: ; 0x49602 jp EnableAutoTextBoxDrawing ; 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, ROUTE_15_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 Route15GateUpstairs_h: ; 0x4963e db $0c ; tileset db ROUTE_15_GATE_2F_HEIGHT, ROUTE_15_GATE_2F_WIDTH ; dimensions (y, x) dw Route15GateUpstairsBlocks, Route15GateUpstairsTexts, Route15GateUpstairsScript ; blocks, texts, scripts ;dw 40db, 564d, 564a ; blocks, texts, scripts db $00 ; connections dw Route15GateUpstairsObject ; objects Route15GateUpstairsScript: ; 0x4964a jp DisableAutoTextBoxDrawing Route15GateUpstairsTexts: ; 0x4964d dw Route15GateUpstairsText1 dw Route15GateUpstairsText2 Route15GateUpstairsText1: ; 0x49651 db $8 ld a, [$d7dd] bit 0, a jr nz, .asm_49683 ; 0x49657 $2a ld a, $32 ld [$ff00+$db], a ld a, $4b ld [$ff00+$dc], a ld [$d11e], a call GetItemName ld hl, $cd6d ld de, $cc5b ld bc, $000d call CopyData ld a, $62 call Predef ld a, [$ff00+$db] cp $1 jr nz, .asm_49689 ; 0x4967c $b ld hl, $d7dd set 0, [hl] .asm_49683 ld hl, UnnamedText_4968c call PrintText .asm_49689 jp $24d7 ; 0x4968c UnnamedText_4968c: ; 0x4968c TX_FAR _UnnamedText_4968c db $50 ; 0x4968c + 5 bytes Route15GateUpstairsText2: db $8 ld hl, UnnamedText_49698 jp Unnamed_55c9 ; 0x49698 UnnamedText_49698: ; 0x49698 TX_FAR _UnnamedText_49698 db $50 ; 0x49698 + 5 bytes Route15GateUpstairsObject: ; 0x4969d db $a ; border tile db $1 ; warps db $7, $7, $4, ROUTE_15_GATE_1F db $1 ; signs db $2, $6, $2 ; Route15GateUpstairsText2 db $1 ; people db SPRITE_OAK_AIDE, $2 + 4, $4 + 4, $ff, $d0, $1 ; warp-to EVENT_DISP $4, $7, $7 ; ROUTE_15_GATE_1F 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 EnableAutoTextBoxDrawing 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 ArePlayerCoordsInArray ret nc ld a, $3 ld [$ff00+$8c], a call DisplayTextID 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,$49755 - $49714 ; known jump sources: 496d7 (12:56d7), 4988f (12:588f) Func_49755: ; 49755 (12:5755) ld b, $6 jp IsItemInBag ; 4975a (12:575a) 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 DisableAutoTextBoxDrawing ; 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 EnableAutoTextBoxDrawing 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 ArePlayerCoordsInArray ret nc ld a, $2 ld [$ff00+$8c], a call DisplayTextID 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 DisableAutoTextBoxDrawing ; 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 EnableAutoTextBoxDrawing 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, Predef5CText, Predef5CText, Predef5CText, Predef5CText, Predef5CText, Predef5CText, 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 EnableAutoTextBoxDrawing 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 ArePlayerCoordsInArray 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,$49d58 - $49d37 ; known jump sources: 49d9f (12:5d9f) Func_49d58: ; 49d58 (12:5d58) xor a ld [$cd6b], a ld [$d607], a ld [$da39], a ret INCBIN "baserom.gbc",$49d63,$49d6f - $49d63 ld a, [$d7f6] bit 1, a jp nz, Func_49d91 ld a, [W_YCOORD] ; $d361 cp $8 jp nz, Func_49d91 ld a, [W_XCOORD] ; $d362 cp $d jp nz, Func_49d91 xor a ld [$FF00+$b4], a ld a, $1 ld [H_DOWNARROWBLINKCNT2], a ; $FF00+$8c jp DisplayTextID ; known jump sources: 49d74 (12:5d74), 49d7c (12:5d7c), 49d84 (12:5d84) Func_49d91: ; 49d91 (12:5d91) ld a, [$d7f6] and $c0 jp z, Func_3219 ret ld a, [W_ISINBATTLE] ; $d057 cp $ff jp z, Func_49d58 call Func_2429 call Delay3 ld hl, $d7f6 set 1, [hl] xor a ld [$cd6b], a ld a, $0 ld [$d607], a ld [$da39], a ret ld a, $1 ld [H_DOWNARROWBLINKCNT2], a ; $FF00+$8c call Function3541 ld hl, $5dea call ArePlayerCoordsInArray jr c, .asm_49dd7 ld hl, $5df1 call ArePlayerCoordsInArray jp nc, Func_3219 ld de, $5df9 jr .asm_49dda .asm_49dd7 ld de, $5df8 .asm_49dda ld a, $1 ld [H_DOWNARROWBLINKCNT2], a ; $FF00+$8c call MoveSprite ld a, $5 ld [$d607], a ld [$da39], a ret INCBIN "baserom.gbc",$49dea,$49dfb - $49dea ld a, [$d730] bit 0, a ret nz ld a, $f0 ld [$cd6b], a ld a, $1 ld [$cc3c], a ld a, $a ld [H_DOWNARROWBLINKCNT2], a ; $FF00+$8c call DisplayTextID ld a, [$d7f6] bit 6, a jr z, .asm_49e1d ld a, $6e jr .asm_49e1f .asm_49e1d ld a, $6d .asm_49e1f ld [$cc4d], a ld a, $11 call Predef ; indirect jump to Func_f1d7 (f1d7 (3:71d7)) xor a ld [$cd6b], a ld a, $0 ld [$d607], a ld [$da39], a ret ; 49e34 (12:5e34) MtMoon3Texts: ; 0x49e34 dw MtMoon3Text1, MtMoon3Text2, MtMoon3Text3, MtMoon3Text4, MtMoon3Text5, MtMoon3Text6, MtMoon3Text7, Predef5CText, Predef5CText, 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 EnableAutoTextBoxDrawing ; 0x4a1b8 SafariZoneWestTexts: ; 0x4a1b8 dw Predef5CText, Predef5CText, Predef5CText, Predef5CText, 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 EnableAutoTextBoxDrawing ; 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 EnableAutoTextBoxDrawing 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" ; known jump sources: 3e59 (0:3e59) Func_4fda5: ; 4fda5 (13:7da5) call EnableAutoTextBoxDrawing xor a ld [$ccd3], a ld a, [W_NUMINPARTY] ; $d163 cp $6 jr c, .asm_4fe01 ld a, [W_NUMINBOX] ; $da80 cp $14 jr nc, .asm_4fdf9 xor a ld [W_ENEMYBATTSTATUS3], a ; $d069 ld a, [$cf91] ld [$cfd8], a ld hl, Func_3eb01 ld b, BANK(Func_3eb01) call Bankswitch ; indirect jump to Func_3eb01 (3eb01 (f:6b01)) call Func_4fe11 ld hl, Func_e7a4 ld b, BANK(Func_e7a4) call Bankswitch ; indirect jump to Func_e7a4 (e7a4 (3:67a4)) ld hl, $cf4b ld a, [$d5a0] and $7f cp $9 jr c, .asm_4fdec sub $9 ld [hl], $f7 inc hl add $f6 jr .asm_4fdee .asm_4fdec add $f7 .asm_4fdee ld [hli], a ld [hl], $50 ld hl, $7e3f call PrintText scf ret .asm_4fdf9 ld hl, $7e44 call PrintText and a ret .asm_4fe01 call Func_4fe11 call AddPokemonToParty ld a, $1 ld [$cc3c], a ld [$ccd3], a scf ret ; known jump sources: 4fdcc (13:7dcc), 4fe01 (13:7e01) Func_4fe11: ; 4fe11 (13:7e11) ld a, [$cf91] push af ld [$d11e], a ld a, $3a call Predef ; indirect jump to IndexToPokedex (41010 (10:5010)) ld a, [$d11e] dec a ld c, a ld hl, W_OWNEDPOKEMON ; $d2f7 ld b, $1 ld a, $10 call Predef ; indirect jump to Func_f666 (f666 (3:7666)) pop af ld [$d11e], a call GetMonName ld hl, $7e39 jp PrintText INCBIN "baserom.gbc",$4fe39,$4fe3f - $4fe39 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 HealPartyPredef: dbw BANK(HealParty),HealParty MoveAnimationPredef: 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 StatusScreenPredef: dbw BANK(StatusScreen),StatusScreen ; 37 0x12953 StatusSceren2Predef: dbw BANK(StatusScreen2),StatusScreen2 ; 38 dbw $10,$50E2 dbw $15,$690F dbw $10,$5010 Predef3BPredef: 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 Predef54Predef: 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 DrawHPBarPredef: dbw $04,$68EF ; 5F draw HP bar 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 ; MartSignText db $13, $27, $14 ; SaffronCityText20 db $15, $5, $15 ; SaffronCityText21 db $15, $f, $16 ; SaffronCityText22 db $1d, $a, $17 ; PokeCenterSignText 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 EnableAutoTextBoxDrawing ; 0x50c03 SaffronCityTexts: ; 0x50c03 dw SaffronCityText1, SaffronCityText2, SaffronCityText3, SaffronCityText4, SaffronCityText5, SaffronCityText6, SaffronCityText7, SaffronCityText8, SaffronCityText9, SaffronCityText10, SaffronCityText11, SaffronCityText12, SaffronCityText13, SaffronCityText14, SaffronCityText15, SaffronCityText16, SaffronCityText17, SaffronCityText18, MartSignText, SaffronCityText20, SaffronCityText21, SaffronCityText22, PokeCenterSignText, 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 EnableAutoTextBoxDrawing ld hl, $4d3a ld de, $4d1c ld a, [$d628] call $3160 ld [$d628], a ret ; 0x50cc6 ; known jump sources: 50cb0 (14:4cb0) Func_50cc6: ; 50cc6 (14:4cc6) ld a, [$d880] and $3 cp $3 jr z, .asm_50cef ld a, $d7 call Func_50d0c ld a, $d8 call Func_50d0c ld hl, $4ce8 .asm_50cdc ld a, [hli] cp $ff jr z, .asm_50cef push hl call Func_50d14 pop hl jr .asm_50cdc INCBIN "baserom.gbc",$50ce8,$50cef - $50ce8 .asm_50cef ld a, [$d881] and $3 cp $3 ret z ld a, $dd call Func_50d0c ld a, $de call Func_50d0c ld a, $e1 call Func_50d14 ld a, $e2 call Func_50d14 ret ; known jump sources: 50cd1 (14:4cd1), 50cd6 (14:4cd6), 50cf9 (14:4cf9), 50cfe (14:4cfe) Func_50d0c: ; 50d0c (14:4d0c) ld [$cc4d], a ld a, $15 jp Predef ; indirect jump to Func_f1c8 (f1c8 (3:71c8)) ; known jump sources: 50ce2 (14:4ce2), 50d03 (14:4d03), 50d08 (14:4d08) Func_50d14: ; 50d14 (14:4d14) ld [$cc4d], a ld a, $11 jp Predef ; indirect jump to Func_f1d7 (f1d7 (3:71d7)) INCBIN "baserom.gbc",$50d1c,$50d22 - $50d1c 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 EnableAutoTextBoxDrawing ld hl, Route22Scripts ld a, [$d60a] jp $3d97 ; 0x50ebe Route22Scripts: ; 0x50ebe dw Route22Script0, Route22Script1, Route22Script2, Route22Script3 INCBIN "baserom.gbc",$50ec6,$50ece - $50ec6 ; known jump sources: 510e4 (14:50e4) Func_50ece: ; 50ece (14:4ece) xor a ld [$cd6b], a ld [$d60a], a ret ; known jump sources: 510d0 (14:50d0) Func_50ed6: ; 50ed6 (14:4ed6) ld a, [W_RIVALSTARTER] ; $d715 ld b, a .asm_50eda ld a, [hli] cp b jr z, .asm_50ee1 inc hl jr .asm_50eda .asm_50ee1 ld a, [hl] ld [W_TRAINERNO], a ; $d05d ret ; known jump sources: 50f59 (14:4f59), 5107e (14:507e) Func_50ee6: ; 50ee6 (14:4ee6) ld de, $4efb ld a, [$cf0d] cp $1 jr z, .asm_50ef1 inc de .asm_50ef1 call MoveSprite ld a, $c ld [$FF00+$8d], a jp Func_34a6 INCBIN "baserom.gbc",$50efb,$50f00 - $50efb Route22Script0: ; 0x50f00 ld a, [$d7eb] bit 7, a ret z ld hl, $4f2d call ArePlayerCoordsInArray 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 DisplayTextID 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 DisplayTextID 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 ; known jump sources: 50f29 (14:4f29) Func_5104e: ; 5104e (14:504e) ld a, $2 ld [$cd4f], a xor a ld [$cd50], a ld a, $4c call Predef ; indirect jump to Func_17c47 (17c47 (5:7c47)) ld a, [$d700] and a jr z, .asm_5106a ld a, $ff ld [$c0ee], a call Func_23b1 .asm_5106a ld a, $ff ld [$c0ee], a call Func_23b1 ld b, BANK(Func_9b65) ld hl, Func_9b65 call Bankswitch ; indirect jump to Func_9b65 (9b65 (2:5b65)) ld a, $2 ld [H_DOWNARROWBLINKCNT2], a ; $FF00+$8c call Func_50ee6 ld a, $4 ld [$d60a], a ret ld a, [$d730] bit 0, a ret nz ld a, $2 ld [H_DOWNARROWBLINKCNT2], a ; $FF00+$8c ld a, [$cf0d] cp $1 jr nz, .asm_510a1 ld a, $4 ld [$d528], a ld a, $4 jr .asm_510a8 .asm_510a1 ld a, $2 ld [$d528], a ld a, $c .asm_510a8 ld [$FF00+$8d], a call Func_34a6 xor a ld [$cd6b], a ld a, $2 ld [H_DOWNARROWBLINKCNT2], a ; $FF00+$8c call DisplayTextID ld hl, $d72d set 6, [hl] set 7, [hl] ld hl, $51cb ld de, $51d0 call Func_3354 ld a, $f2 ld [W_CUROPPONENT], a ; $d059 ld hl, $50d9 call Func_50ed6 ld a, $5 ld [$d60a], a ret INCBIN "baserom.gbc",$510d9,$510df - $510d9 ld a, [W_ISINBATTLE] ; $d057 cp $ff jp z, Func_50ece ld a, $2 ld [H_DOWNARROWBLINKCNT2], a ; $FF00+$8c ld a, [$cf0d] cp $1 jr nz, .asm_510fb ld a, $4 ld [$d528], a ld a, $4 jr .asm_51102 .asm_510fb ld a, $2 ld [$d528], a ld a, $c .asm_51102 ld [$FF00+$8d], a call Func_34a6 ld a, $f0 ld [$cd6b], a ld hl, $d7eb set 6, [hl] ld a, $2 ld [H_DOWNARROWBLINKCNT2], a ; $FF00+$8c call DisplayTextID ld a, $ff ld [$c0ee], a call Func_23b1 ld b, BANK(Func_9b75) ld hl, Func_9b75 call Bankswitch ; indirect jump to Func_9b75 (9b75 (2:5b75)) ld a, [$cf0d] cp $1 jr nz, .asm_51134 call Func_5113d jr .asm_51137 .asm_51134 call Func_51142 .asm_51137 ld a, $6 ld [$d60a], a ret ; known jump sources: 5112f (14:512f) Func_5113d: ; 5113d (14:513d) ld de, $514c jr asm_51145 ; known jump sources: 51134 (14:5134) Func_51142: ; 51142 (14:5142) ld de, $514d asm_51145: ; 51145 (14:5145) ld a, $2 ld [H_DOWNARROWBLINKCNT2], a ; $FF00+$8c jp MoveSprite INCBIN "baserom.gbc",$5114c,$51151 - $5114c ld a, [$d730] bit 0, a ret nz xor a ld [$cd6b], a ld a, $23 ld [$cc4d], a ld a, $11 call Predef ; indirect jump to Func_f1d7 (f1d7 (3:71d7)) call Func_2307 ld hl, $d7eb res 1, [hl] res 7, [hl] ld a, $7 ld [$d60a], a ret ; 51175 (14:5175) 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 EnableAutoTextBoxDrawing ld hl, Route23Scripts ld a, [$d667] jp $3d97 ; 0x511e9 ; known jump sources: 511da (14:51da) Func_511e9: ; 511e9 (14:51e9) ld hl, $d126 bit 6, [hl] res 6, [hl] ret z ld hl, $d7ee res 0, [hl] res 7, [hl] ld hl, $d813 res 0, [hl] res 6, [hl] ld a, $7a ld [$cc4d], a ld a, $15 call Predef ; indirect jump to Func_f1c8 (f1c8 (3:71c8)) ld a, $60 ld [$cc4d], a ld a, $11 jp Predef ; indirect jump to Func_f1d7 (f1d7 (3:71d7)) ; 51213 (14:5213) 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 DisplayTextID xor a ld [$ff00+$b4], a ret ; 0x51255 INCBIN "baserom.gbc",$51255,$5125d - $51255 ; known jump sources: 5124b (14:524b), 51349 (14:5349) Func_5125d: ; 5125d (14:525d) ld hl, $5276 ld a, [W_WHICHTRADE] ; $cd3d ld c, a ld b, $0 add hl, bc add hl, bc ld a, [hli] ld h, [hl] ld l, a ld de, $cd6d .asm_5126e ld a, [hli] ld [de], a inc de cp $50 jr nz, .asm_5126e ret INCBIN "baserom.gbc",$51276,$512d8 - $51276 ; known jump sources: 51365 (14:5365) Func_512d8: ; 512d8 (14:52d8) ld a, $1 ld [$cd38], a ld a, $80 ld [$ccd3], a xor a ld [$c109], a ld [$cd6b], a jp Func_3486 ; 512ec (14:52ec) 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 ; known jump sources: 5130a (14:530a), 51313 (14:5313), 5131c (14:531c), 51325 (14:5325), 5132e (14:532e), 51337 (14:5337), 51340 (14:5340) Func_51346: ; 51346 (14:5346) ld [W_WHICHTRADE], a ; $cd3d call Func_5125d ld a, [W_WHICHTRADE] ; $cd3d inc a ld c, a ld b, $2 ld hl, W_OBTAINEDBADGES ; $d356 ld a, $10 call Predef ; indirect jump to Func_f666 (f666 (3:7666)) ld a, c and a jr nz, .asm_5136e ld hl, $538e call PrintText call Func_512d8 ld a, $1 ld [$d667], a ret .asm_5136e ld hl, $539e call PrintText ld a, [W_WHICHTRADE] ; $cd3d ld c, a ld b, $1 ld hl, $d7ed ld a, $10 call Predef ; indirect jump to Func_f666 (f666 (3:7666)) ld a, $2 ld [$d667], a ret INCBIN "baserom.gbc",$51388,$513a3 - $51388 UnnamedText_513a3: ; 0x513a3 TX_FAR _UnnamedText_513a3 db $50 ; 0x513a3 + 5 bytes Route23Text8: ; 0x513a8 TX_FAR _Route23Text8 db $50 Route24Script: ; 0x513ad call EnableAutoTextBoxDrawing ld hl, Route24TrainerHeaders ld de, $53cb ld a, [$d602] call $3160 ld [$d602], a ret ; 0x513c0 ; known jump sources: 51427 (14:5427) Func_513c0: ; 513c0 (14:53c0) xor a ld [$cd6b], a ld [$d602], a ld [$da39], a ret INCBIN "baserom.gbc",$513cb,$513d5 - $513cb ld a, [$d7ef] bit 0, a jp nz, Func_3219 ld hl, $540e call ArePlayerCoordsInArray jp nc, Func_3219 xor a ld [$FF00+$b4], a ld a, $1 ld [H_DOWNARROWBLINKCNT2], a ; $FF00+$8c call DisplayTextID ld hl, $d7f0 bit 1, [hl] res 1, [hl] ret z ld a, $80 ld [$ccd3], a ld a, $1 ld [$cd38], a call Func_3486 ld a, $4 ld [$d602], a ld [$da39], a ret INCBIN "baserom.gbc",$5140e,$51422 - $5140e ld a, [W_ISINBATTLE] ; $d057 cp $ff jp z, Func_513c0 call Func_2429 ld a, $f0 ld [$cd6b], a ld hl, $d7ef set 1, [hl] ld a, $1 ld [H_DOWNARROWBLINKCNT2], a ; $FF00+$8c call DisplayTextID xor a ld [$cd6b], a ld a, $0 ld [$d602], a ld [$da39], a ret ; 5144b (14:544b) Route24Texts: ; 0x5144b dw Route24Text1, Route24Text2, Route24Text3, Route24Text4, Route24Text5, Route24Text6, Route24Text7, Predef5CText 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 EnableAutoTextBoxDrawing ld hl, Route25TrainerHeaders ld de, $5622 ld a, [$d603] call $3160 ld [$d603], a ret ; 0x515e1 Unknown_515e1: ; 0x515e1 ld hl, $d126 bit 6, [hl] res 6, [hl] ret z ld hl, $d7f2 bit 7, [hl] ret nz bit 5, [hl] jr nz, .asm_515ff res 6, [hl] ld a, $61 ld [$cc4d], a ld a, $15 jp Predef ; indirect jump to Func_f1c8 (f1c8 (3:71c8)) .asm_515ff bit 4, [hl] ret z set 7, [hl] ld a, $24 ld [$cc4d], a ld a, $11 call Predef ; indirect jump to Func_f1d7 (f1d7 (3:71d7)) ld a, $62 ld [$cc4d], a ld a, $11 call Predef ; indirect jump to Func_f1d7 (f1d7 (3:71d7)) ld a, $63 ld [$cc4d], a ld a, $15 jp Predef ; indirect jump to Func_f1c8 (f1c8 (3:71c8)) INCBIN "baserom.gbc",$51622,$51628 - $51622 Route25Texts: ; 0x51628 dw Route25Text1, Route25Text2, Route25Text3, Route25Text4, Route25Text5, Route25Text6, Route25Text7, Route25Text8, Route25Text9, Predef5CText, 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 EnableAutoTextBoxDrawing ld hl, VictoryRoad2TrainerHeaders ld de, $57eb ld a, [$d63f] call $3160 ld [$d63f], a ret ; 0x517c4 VictoryRoad2Script_Unknown517c4: ; 0x517c4 ld hl, $d869 res 7, [hl] ; known jump sources: 517ae (14:57ae) Func_517c9: ; 517c9 (14:57c9) ld a, [$d7ee] bit 0, a jr z, .asm_517da push af ld a, $15 ld bc, $403 call Func_517e2 pop af .asm_517da bit 7, a ret z ld a, $1d ld bc, $70b ; known jump sources: 517d6 (14:57d6) Func_517e2: ; 517e2 (14:57e2) ld [$d09f], a ld a, $17 call Predef ; indirect jump to Func_ee9e (ee9e (3:6e9e)) ret INCBIN "baserom.gbc",$517eb,$517f1 - $517eb ld hl, $5816 call CheckBoulderCoords jp nc, Func_3219 ld hl, $d7ee ld a, [W_WHICHTRADE] ; $cd3d cp $2 jr z, .asm_5180b bit 0, [hl] set 0, [hl] ret nz jr .asm_51810 .asm_5180b bit 7, [hl] set 7, [hl] ret nz .asm_51810 ld hl, $d126 set 5, [hl] ret INCBIN "baserom.gbc",$51816,$5181b - $51816 VictoryRoad2Texts: ; 0x5181b dw VictoryRoad2Text1, VictoryRoad2Text2, VictoryRoad2Text3, VictoryRoad2Text4, VictoryRoad2Text5, VictoryRoad2Text6, Predef5CText, Predef5CText, Predef5CText, Predef5CText, BoulderText, BoulderText, BoulderText 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, MOLTRES 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, 50 ; 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 EnableAutoTextBoxDrawing 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 EnableAutoTextBoxDrawing ld hl, SilphCo7TrainerHeaders ld de, $5c17 ld a, [$d648] call $3160 ld [$d648], a ret ; 0x51b77 SilphCo7Script_Unknown51b77: ; 0x5177 ld hl, $d126 bit 5, [hl] res 5, [hl] ret z ld hl, $5bc1 call Func_51bc8 call Func_51bf4 ld a, [$d830] bit 4, a jr nz, .asm_51b9e push af ld a, $54 ld [$d09f], a ld bc, $305 ld a, $17 call Predef ; indirect jump to Func_ee9e (ee9e (3:6e9e)) pop af .asm_51b9e bit 5, a jr nz, .asm_51bb1 push af ld a, $54 ld [$d09f], a ld bc, $20a ld a, $17 call Predef ; indirect jump to Func_ee9e (ee9e (3:6e9e)) pop af .asm_51bb1 bit 6, a ret nz ld a, $54 ld [$d09f], a ld bc, $60a ld a, $17 jp Predef ; indirect jump to Func_ee9e (ee9e (3:6e9e)) INCBIN "baserom.gbc",$51bc1,$51bc8 - $51bc1 ; known jump sources: 51b82 (14:5b82) Func_51bc8: ; 51bc8 (14:5bc8) push hl ld hl, $d73f ld a, [hli] ld b, a ld a, [hl] ld c, a xor a ld [$FF00+$e0], a pop hl .asm_51bd4 ld a, [hli] cp $ff jr z, .asm_51bf0 push hl ld hl, $ffe0 inc [hl] pop hl cp b jr z, .asm_51be5 inc hl jr .asm_51bd4 .asm_51be5 ld a, [hli] cp c jr nz, .asm_51bd4 ld hl, $d73f xor a ld [hli], a ld [hl], a ret .asm_51bf0 xor a ld [$FF00+$e0], a ret ; known jump sources: 51b85 (14:5b85) Func_51bf4: ; 51bf4 (14:5bf4) ld hl, $d830 ld a, [$FF00+$e0] and a ret z cp $1 jr nz, .asm_51c02 set 4, [hl] ret .asm_51c02 cp $2 jr nz, .asm_51c09 set 5, [hl] ret .asm_51c09 set 6, [hl] ret ; known jump sources: 51ccd (14:5ccd) Func_51c0c: ; 51c0c (14:5c0c) xor a ld [$cd6b], a ; known jump sources: 51c75 (14:5c75), 51cc5 (14:5cc5), 51d17 (14:5d17), 51d3c (14:5d3c) Func_51c10: ; 51c10 (14:5c10) ld [$d648], a ld [$da39], a ret INCBIN "baserom.gbc",$51c17,$51c23 - $51c17 ld a, [$d82f] bit 0, a jp nz, Func_3219 ld hl, $5c78 call ArePlayerCoordsInArray jp nc, Func_3219 xor a ld [$FF00+$b4], a ld a, $f0 ld [$cd6b], a ld a, $4 ld [$d528], a ld a, $ff ld [$c0ee], a call Func_23b1 ld c, $2 ld a, $de call Func_23a1 ld a, $9 ld [H_DOWNARROWBLINKCNT2], a ; $FF00+$8c call DisplayTextID ld a, $9 ld [H_DOWNARROWBLINKCNT2], a ; $FF00+$8c call Function3541 ld de, $5c7d ld a, [W_WHICHTRADE] ; $cd3d ld [$cf0d], a cp $1 jr z, .asm_51c6c inc de .asm_51c6c ld a, $9 ld [H_DOWNARROWBLINKCNT2], a ; $FF00+$8c call MoveSprite ld a, $3 jp Func_51c10 INCBIN "baserom.gbc",$51c78,$51c82 - $51c78 ld a, [$d730] bit 0, a ret nz xor a ld [$cd6b], a ld a, $d ld [H_DOWNARROWBLINKCNT2], a ; $FF00+$8c call DisplayTextID call Delay3 ld hl, $d72d set 6, [hl] set 7, [hl] ld hl, $5ec8 ld de, $5ecd call Func_3354 ld a, $f2 ld [W_CUROPPONENT], a ; $d059 ld a, [W_RIVALSTARTER] ; $d715 cp $b1 jr nz, .asm_51cb6 ld a, $7 jr .asm_51cc0 .asm_51cb6 cp $99 jr nz, .asm_51cbe ld a, $8 jr .asm_51cc0 .asm_51cbe ld a, $9 .asm_51cc0 ld [W_TRAINERNO], a ; $d05d ld a, $4 jp Func_51c10 ld a, [W_ISINBATTLE] ; $d057 cp $ff jp z, Func_51c0c ld a, $f0 ld [$cd6b], a ld hl, $d82f set 0, [hl] ld a, $4 ld [$d528], a ld a, $9 ld [H_DOWNARROWBLINKCNT2], a ; $FF00+$8c ld a, $4 ld [$FF00+$8d], a call Func_34a6 ld a, $f ld [H_DOWNARROWBLINKCNT2], a ; $FF00+$8c call DisplayTextID ld a, $ff ld [$c0ee], a call Func_23b1 ld b, BANK(Func_9b47) ld hl, Func_9b47 call Bankswitch ; indirect jump to Func_9b47 (9b47 (2:5b47)) ld de, $5d1d ld a, [$cf0d] cp $1 jr nz, .asm_51d0e ld de, $5d1a .asm_51d0e ld a, $9 ld [H_DOWNARROWBLINKCNT2], a ; $FF00+$8c call MoveSprite ld a, $5 jp Func_51c10 INCBIN "baserom.gbc",$51d1a,$51d25 - $51d1a ld a, [$d730] bit 0, a ret nz ld a, $a7 ld [$cc4d], a ld a, $11 call Predef ; indirect jump to Func_f1d7 (f1d7 (3:71d7)) call Func_2307 xor a ld [$cd6b], a jp Func_51c10 ; 51d3f (14:5d3f) SilphCo7Texts: ; 0x51d3f dw SilphCo7Text1, SilphCo7Text2, SilphCo7Text3, SilphCo7Text4, SilphCo7Text5, SilphCo7Text6, SilphCo7Text7, SilphCo7Text8, SilphCo7Text9, Predef5CText, Predef5CText, Predef5CText, 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 EnableAutoTextBoxDrawing 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 EnableAutoTextBoxDrawing ld hl, Mansion2TrainerHeaders ld de, $6047 ld a, [$d63c] call $3160 ld [$d63c], a ret ; 0x51fee Mansion2Script_Unknown51fee: ; 0x51fee ld hl, $d126 bit 5, [hl] res 5, [hl] ret z ld a, [$d796] bit 0, a jr nz, .asm_52016 ld a, $e ld bc, $204 call Func_5202f ld a, $54 ld bc, $409 call Func_5202f ld a, $5f ld bc, $b03 call Func_5202f ret .asm_52016 ld a, $5f ld bc, $204 call Func_5202f ld a, $e ld bc, $409 call Func_5202f ld a, $e ld bc, $b03 call Func_5202f ret ; known jump sources: 52002 (14:6002), 5200a (14:600a), 52012 (14:6012), 5201b (14:601b), 52023 (14:6023), 5202b (14:602b), 52218 (14:6218), 52220 (14:6220), 52229 (14:6229), 52231 (14:6231), 523e3 (14:63e3), 523eb (14:63eb), 523f3 (14:63f3), 523fb (14:63fb), 52404 (14:6404), 5240c (14:640c), 52414 (14:6414), 5241c (14:641c) Func_5202f: ; 5202f (14:602f) ld [$d09f], a ld a, $17 jp Predef ; indirect jump to Func_ee9e (ee9e (3:6e9e)) INCBIN "baserom.gbc",$52037,$5204d - $52037 Mansion2Texts: ; 0x5204d dw Mansion2Text1, Predef5CText, 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 EnableAutoTextBoxDrawing ld hl, Mansion3TrainerHeader0 ld de, $6235 ld a, [$d63d] call $3160 ld [$d63d], a ret ; 0x52204 Unnamed_52204: ; 0x52204 ld hl, $d126 bit 5, [hl] res 5, [hl] ret z ld a, [$d796] bit 0, a jr nz, .asm_52224 ld a, $e ld bc, $207 call Func_5202f ld a, $5f ld bc, $507 call Func_5202f ret .asm_52224 ld a, $5f ld bc, $207 call Func_5202f ld a, $e ld bc, $507 call Func_5202f ret INCBIN "baserom.gbc",$52235,$5223b - $52235 ld hl, $6254 call Func_5225b ld a, [$d71e] and a jp z, Func_3219 cp $3 ld a, $a5 jr nz, .asm_52250 ld a, $d6 .asm_52250 ld [$d71d], a ret INCBIN "baserom.gbc",$52254,$5225b - $52254 ; known jump sources: 5223e (14:623e) Func_5225b: ; 5225b (14:625b) xor a ld [$d71e], a ld a, [$d72d] bit 4, a ret nz call ArePlayerCoordsInArray ret nc ld a, [W_WHICHTRADE] ; $cd3d ld [$d71e], a ld hl, $d72d set 4, [hl] ld hl, $d732 set 4, [hl] ret ld a, [$c109] cp $4 ret nz xor a ld [$FF00+$b4], a ld a, $6 ld [H_DOWNARROWBLINKCNT2], a ; $FF00+$8c jp DisplayTextID ; 5228a (14:628a) Mansion3Texts: ; 0x5228a dw Mansion3Text1, Mansion3Text2, Predef5CText, Predef5CText, 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 EnableAutoTextBoxDrawing ld hl, Mansion4TrainerHeader0 ld de, $6430 ld a, [$d63e] call $3160 ld [$d63e], a ret ; 0x523cf Unknown_523cf: ; 0x523cf ld hl, $d126 bit 5, [hl] res 5, [hl] ret z ld a, [$d796] bit 0, a jr nz, .asm_523ff ld a, $e ld bc, $80d call Func_5202f ld a, $e ld bc, $b06 call Func_5202f ld a, $5f ld bc, $304 call Func_5202f ld a, $54 ld bc, $808 call Func_5202f ret .asm_523ff ld a, $2d ld bc, $80d call Func_5202f ld a, $5f ld bc, $b06 call Func_5202f ld a, $e ld bc, $304 call Func_5202f ld a, $e ld bc, $808 call Func_5202f ret ld a, [$c109] cp $4 ret nz xor a ld [$FF00+$b4], a ld a, $9 ld [H_DOWNARROWBLINKCNT2], a ; $FF00+$8c jp DisplayTextID INCBIN "baserom.gbc",$52430,$52436 - $52430 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" ; known jump sources: 3ef4d (f:6f4d) Func_525af: ; 525af (14:65af) ld a, [$FF00+$d7] ld [$d0d4], a xor a ld [$cd6a], a ld [$cf0b], a ld hl, $cc2b ld [hli], a ld [hli], a ld [hli], a ld [hl], a ld [W_LISTSCROLLOFFSET], a ; $cc36 ld [$d05e], a ld [$d014], a ld [$d058], a ld [W_PLAYERMONNUMBER], a ; $cc2f ld [$d078], a ld [$d35d], a ld hl, $cf1d ld [hli], a ld [hl], a ld hl, $ccd3 ld b, $3c .asm_525e1 ld [hli], a dec b jr nz, .asm_525e1 inc a ld [$ccd9], a ld a, [W_CURMAP] ; $d35e cp $d9 jr c, .asm_525f9 cp $dd jr nc, .asm_525f9 ld a, $2 ld [W_BATTLETYPE], a ; $d05a .asm_525f9 ld hl, UnknSong_md_90c6 ld b, BANK(UnknSong_md_90c6) jp Bankswitch ; indirect jump to UnknSong_md_90c6 (90c6 (2:50c6)) ; known jump sources: 3f9b6 (f:79b6) Func_52601: ; 52601 (14:6601) ld hl, W_ENEMYMONSTATUS ; $cfe9 ld de, W_PLAYERMOVETYPE ; $cfd5 ld a, [H_WHOSETURN] ; $FF00+$f3 and a jp z, Func_52613 ld hl, W_PLAYERMONSTATUS ; $d018 ld de, W_ENEMYMOVETYPE ; $cfcf ; known jump sources: 5260a (14:660a) Func_52613: ; 52613 (14:6613) ld a, [hl] and a jr nz, .asm_52659 ld a, [de] cp $17 jr nz, .asm_5262a ld b, h ld c, l inc bc ld a, [bc] cp $4 jr z, .asm_52666 inc bc ld a, [bc] cp $4 jr z, .asm_52666 .asm_5262a push hl ld hl, MoveHitTest ld b, BANK(MoveHitTest) call Bankswitch ; indirect jump to MoveHitTest (3e56b (f:656b)) pop hl ld a, [W_MOVEMISSED] ; $d05f and a jr nz, .asm_52659 set 6, [hl] ld hl, Func_3ed27 ld b, BANK(Func_3ed27) call Bankswitch ; indirect jump to Func_3ed27 (3ed27 (f:6d27)) ld c, $1e call DelayFrames ld hl, Func_3fba8 ld b, BANK(Func_3fba8) call Bankswitch ; indirect jump to Func_3fba8 (3fba8 (f:7ba8)) ld hl, Func_3fb6e ld b, BANK(Func_3fb6e) jp Bankswitch ; indirect jump to Func_3fb6e (3fb6e (f:7b6e)) .asm_52659 ld c, $32 call DelayFrames ld hl, Func_3fb5e ld b, BANK(Func_3fb5e) jp Bankswitch ; indirect jump to Func_3fb5e (3fb5e (f:7b5e)) .asm_52666 ld c, $32 call DelayFrames ld hl, Func_3dc51 ld b, BANK(Func_3dc51) jp Bankswitch ; indirect jump to Func_3dc51 (3dc51 (f:5c51)) ; known jump sources: fb88 (3:7b88) Func_52673: ; 52673 (14:6673) ld hl, $66e3 ld a, [W_CURMAP] ; $d35e ld b, a .asm_5267a ld a, [hli] cp $ff ret z cp b jr nz, .asm_5267a ld a, $35 call Predef ; indirect jump to Func_c586 (c586 (3:4586)) ld a, [$cfc6] cp $18 jr z, .asm_5269c cp $24 jr z, .asm_5269c ld b, a ld a, [W_CURMAP] ; $d35e cp $eb ret nz ld a, b cp $5e ret nz .asm_5269c ld b, $30 call IsItemInBag jr z, .asm_526dc call Func_526fd push de ld a, $1 ld [H_DOWNARROWBLINKCNT2], a ; $FF00+$8c call Func_3ef5 pop de srl d ld a, d ld b, a ld [$d73f], a srl e ld a, e ld c, a ld [$d740], a ld a, [W_CURMAP] ; $d35e cp $eb jr nz, .asm_526c8 ld a, $3 jr .asm_526ca .asm_526c8 ld a, $e .asm_526ca ld [$d09f], a ld a, $17 call Predef ; indirect jump to Func_ee9e (ee9e (3:6e9e)) ld hl, $d126 set 5, [hl] ld a, $ad jp Func_23b1 .asm_526dc ld a, $2 ld [H_DOWNARROWBLINKCNT2], a ; $FF00+$8c jp Func_3ef5 INCBIN "baserom.gbc",$526e3,$526f3 - $526e3 UnnamedText_526f3: ; 0x526f3 TX_FAR _UnnamedText_526f3 db $50 ; 0x526f3 + 5 bytes UnnamedText_526f8: ; 0x526f8 TX_FAR _UnnamedText_526f8 db $50 ; 0x526f8 + 5 bytes ; known jump sources: 526a3 (14:66a3) Func_526fd: ; 526fd (14:66fd) ld a, [W_YCOORD] ; $d361 ld d, a ld a, [W_XCOORD] ; $d362 ld e, a ld a, [$c109] and a jr nz, .asm_5270d inc d ret .asm_5270d cp $4 jr nz, .asm_52713 dec d ret .asm_52713 cp $8 jr nz, .asm_52719 dec e ret .asm_52719 inc e ret ; 5271b (14:671b) 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 ; PokeCenterSignText 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" ; known jump sources: 3c61d (f:461d), 3c63b (f:463b) Func_5524f: ; 5524f (15:524f) ld a, [W_ISLINKBATTLE] ; $d12b cp $4 ret z call Func_5546c ld hl, W_PARTYMON1_NUM ; $d16b (aliases: W_PARTYMON1DATA) xor a ld [W_WHICHPOKEMON], a ; $cf92 ; known jump sources: 5544d (15:544d) Func_5525f: ; 5525f (15:525f) inc hl ld a, [hli] or [hl] jp z, Func_55436 push hl ld hl, $d058 ld a, [W_WHICHPOKEMON] ; $cf92 ld c, a ld b, $2 ld a, $10 call Predef ; indirect jump to Func_f666 (f666 (3:7666)) ld a, c and a pop hl jp z, Func_55436 ld de, $10 add hl, de ld d, h ld e, l ld hl, $d002 ld c, $5 .asm_55285 ld a, [hli] ld b, a ld a, [de] add b ld [de], a jr nc, .asm_5529a dec de ld a, [de] inc a jr z, .asm_55295 ld [de], a inc de jr .asm_5529a .asm_55295 ld a, $ff ld [de], a inc de ld [de], a .asm_5529a dec c jr z, .asm_552a1 inc de inc de jr .asm_55285 .asm_552a1 xor a ld [H_NUMTOPRINT], a ; $FF00+$96 (aliases: H_MULTIPLICAND) ld [$FF00+$97], a ld a, [$d008] ld [$FF00+$98], a ld a, [W_ENEMYMONLEVEL] ; $cff3 ld [H_REMAINDER], a ; $FF00+$99 (aliases: H_DIVISOR, H_MULTIPLIER, H_POWEROFTEN) call Multiply ld a, $7 ld [H_REMAINDER], a ; $FF00+$99 (aliases: H_DIVISOR, H_MULTIPLIER, H_POWEROFTEN) ld b, $4 call Divide ld hl, $fff2 add hl, de ld b, [hl] inc hl ld a, [W_PLAYERIDHI] ; $d359 cp b jr nz, .asm_552d1 ld b, [hl] ld a, [W_PLAYERIDLO] ; $d35a cp b ld a, $0 jr z, .asm_552d6 .asm_552d1 call Func_5549f ld a, $1 .asm_552d6 ld [$cf4d], a ld a, [W_ISINBATTLE] ; $d057 dec a call nz, Func_5549f inc hl inc hl inc hl ld b, [hl] ld a, [$FF00+$98] ld [$cf4c], a add b ld [hld], a ld b, [hl] ld a, [$FF00+$97] ld [$cf4b], a adc b ld [hl], a jr nc, .asm_552f8 dec hl inc [hl] inc hl .asm_552f8 inc hl push hl ld a, [W_WHICHPOKEMON] ; $cf92 ld c, a ld b, $0 ld hl, W_PARTYMON1 ; $d164 add hl, bc ld a, [hl] ld [$d0b5], a call GetBaseStats ld d, $64 ld hl, Func_58f6a ld b, BANK(Func_58f6a) call Bankswitch ; indirect jump to Func_58f6a (58f6a (16:4f6a)) ld a, [H_NUMTOPRINT] ; $FF00+$96 (aliases: H_MULTIPLICAND) ld b, a ld a, [$FF00+$97] ld c, a ld a, [$FF00+$98] ld d, a pop hl ld a, [hld] sub d ld a, [hld] sbc c ld a, [hl] sbc b jr c, .asm_5532e ld a, b ld [hli], a ld a, c ld [hli], a ld a, d ld [hld], a dec hl .asm_5532e push hl ld a, [W_WHICHPOKEMON] ; $cf92 ld hl, W_PARTYMON1NAME ; $d2b5 call GetPartyMonName ld hl, $54b2 call PrintText xor a ld [$cc49], a call LoadMonData pop hl ld bc, $13 add hl, bc push hl ld b, BANK(Func_58f43) ld hl, Func_58f43 call Bankswitch ; indirect jump to Func_58f43 (58f43 (16:4f43)) pop hl ld a, [hl] cp d jp z, Func_55436 ld a, [W_CURENEMYLVL] ; $d127 push af push hl ld a, d ld [W_CURENEMYLVL], a ; $d127 ld [hl], a ld bc, $ffdf add hl, bc ld a, [hl] ld [$d0b5], a ld [$d11e], a call GetBaseStats ld bc, $23 add hl, bc push hl ld a, [hld] ld c, a ld b, [hl] push bc ld d, h ld e, l ld bc, $ffee add hl, bc ld b, $1 call Func_3936 pop bc pop hl ld a, [hld] sub c ld c, a ld a, [hl] sbc b ld b, a ld de, $ffe0 add hl, de ld a, [hl] add c ld [hld], a ld a, [hl] adc b ld [hl], a ld a, [W_PLAYERMONNUMBER] ; $cc2f ld b, a ld a, [W_WHICHPOKEMON] ; $cf92 cp b jr nz, .asm_553f7 ld de, W_PLAYERMONCURHP ; $d015 ld a, [hli] ld [de], a inc de ld a, [hl] ld [de], a ld bc, $1f add hl, bc push hl ld de, W_PLAYERMONLEVEL ; $d022 ld bc, $b call CopyData pop hl ld a, [W_PLAYERBATTSTATUS3] ; $d064 bit 3, a jr nz, .asm_553c8 ld de, $cd0f ld bc, $b call CopyData .asm_553c8 xor a ld [$d11e], a ld hl, Func_3ed99 ld b, BANK(Func_3ed99) call Bankswitch ; indirect jump to Func_3ed99 (3ed99 (f:6d99)) ld hl, Func_3ed1a ld b, BANK(Func_3ed1a) call Bankswitch ; indirect jump to Func_3ed1a (3ed1a (f:6d1a)) ld hl, Func_3ee19 ld b, BANK(Func_3ee19) call Bankswitch ; indirect jump to Func_3ee19 (3ee19 (f:6e19)) ld hl, Func_3cd60 ld b, BANK(Func_3cd60) call Bankswitch ; indirect jump to Func_3cd60 (3cd60 (f:4d60)) ld hl, Func_3ee94 ld b, BANK(Func_3ee94) call Bankswitch ; indirect jump to Func_3ee94 (3ee94 (f:6e94)) call Func_3719 .asm_553f7 ld hl, $54dd call PrintText xor a ld [$cc49], a call LoadMonData ld d, $1 ld hl, PrintStatsBox ld b, BANK(PrintStatsBox) call Bankswitch ; indirect jump to PrintStatsBox (12ae4 (4:6ae4)) call Func_3865 call Func_3725 xor a ld [$cc49], a ld a, [$d0b5] ld [$d11e], a ld a, $1a call Predef ; indirect jump to Func_3af5b (3af5b (e:6f5b)) ld hl, $ccd3 ld a, [W_WHICHPOKEMON] ; $cf92 ld c, a ld b, $1 ld a, $10 call Predef ; indirect jump to Func_f666 (f666 (3:7666)) pop hl pop af ld [W_CURENEMYLVL], a ; $d127 ; known jump sources: 55262 (15:5262), 55277 (15:5277), 55356 (15:5356) Func_55436: ; 55436 (15:5436) ld a, [W_NUMINPARTY] ; $d163 ld b, a ld a, [W_WHICHPOKEMON] ; $cf92 inc a cp b jr z, .asm_55450 ld [W_WHICHPOKEMON], a ; $cf92 ld bc, $2c ld hl, W_PARTYMON1_NUM ; $d16b (aliases: W_PARTYMON1DATA) call AddNTimes jp Func_5525f .asm_55450 ld hl, $d058 xor a ld [hl], a ld a, [W_PLAYERMONNUMBER] ; $cc2f ld c, a ld b, $1 push bc ld a, $10 call Predef ; indirect jump to Func_f666 (f666 (3:7666)) ld hl, $ccf5 xor a ld [hl], a pop bc ld a, $10 jp Predef ; indirect jump to Func_f666 (f666 (3:7666)) ; known jump sources: 55255 (15:5255) Func_5546c: ; 5546c (15:546c) ld a, [$d058] ld b, a xor a ld c, $8 ld d, $0 .asm_55475 xor a srl b adc d ld d, a dec c jr nz, .asm_55475 cp $2 ret c ld [$d11e], a ld hl, $d002 ld c, $7 .asm_55488 xor a ld [H_DIVIDEND], a ; $FF00+$95 (aliases: H_PRODUCT, H_PASTLEADINGZEROES, H_QUOTIENT) ld a, [hl] ld [H_NUMTOPRINT], a ; $FF00+$96 (aliases: H_MULTIPLICAND) ld a, [$d11e] ld [H_REMAINDER], a ; $FF00+$99 (aliases: H_DIVISOR, H_MULTIPLIER, H_POWEROFTEN) ld b, $2 call Divide ld a, [$FF00+$98] ld [hli], a dec c jr nz, .asm_55488 ret ; known jump sources: 552d1 (15:52d1), 552dd (15:52dd) Func_5549f: ; 5549f (15:549f) ld a, [$FF00+$97] ld b, a ld a, [$FF00+$98] ld c, a srl b rr c add c ld [$FF00+$98], a ld a, [$FF00+$97] adc b ld [$FF00+$97], a ret INCBIN "baserom.gbc",$554b2,$554b7 - $554b2 ld a, [$cc5b] ld hl, $54cb and a ret nz ld hl, $54d8 ld a, [$cf4d] and a ret z ld hl, $54d4 ret INCBIN "baserom.gbc",$554cb,$554d8 - $554cb UnnamedText_554d8: ; 0x554d8 TX_FAR _UnnamedText_554d8 ; 0x89bee db $50 ; 0x554dd INCBIN "baserom.gbc",$554dd,$554e3 - $554dd Route2Script: ; 0x554e3 jp EnableAutoTextBoxDrawing ; 0x554e6 Route2Texts: dw Predef5CText, Predef5CText, Route2Text3, Route2Text4 Route2Text3: ; 0x554ee TX_FAR _Route2Text3 db $50 Route2Text4: ; 0x554f3 TX_FAR _Route2Text4 db $50 Route3Script: ; 0x554f8 call EnableAutoTextBoxDrawing 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 EnableAutoTextBoxDrawing 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, Predef5CText, PokeCenterSignText, 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 EnableAutoTextBoxDrawing ; 0x556b5 Route5Texts: ; 0x556b5 dw Route5Text1 Route5Text1: ; 0x556b7 TX_FAR _Route5Text1 db $50 Route9Script: ; 0x556bc call EnableAutoTextBoxDrawing 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, Predef5CText, 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 EnableAutoTextBoxDrawing 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 EnableAutoTextBoxDrawing 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 EnableAutoTextBoxDrawing 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 EnableAutoTextBoxDrawing 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 EnableAutoTextBoxDrawing 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 EnableAutoTextBoxDrawing ; 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 EnableAutoTextBoxDrawing ; 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 EnableAutoTextBoxDrawing ; 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 EnableAutoTextBoxDrawing ; 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 GBPalWhiteOutWithDelay3 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 EnableAutoTextBoxDrawing ; 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 EnableAutoTextBoxDrawing ld hl, SilphCo8TrainerHeader0 ld de, $6577 ld a, [$d649] call $3160 ld [$d649], a ret ; 0x5651a SilphCo8_Unknown5651a: ; 0x5651a ld hl, $d126 bit 5, [hl] res 5, [hl] ret z ld hl, $653e call Func_56541 call Func_5656d ld a, [$d832] bit 0, a ret nz ld a, $5f ld [$d09f], a ld bc, $403 ld a, $17 jp Predef ; indirect jump to Func_ee9e (ee9e (3:6e9e)) INCBIN "baserom.gbc",$5653e,$56541 - $5653e ; known jump sources: 56525 (15:6525) Func_56541: ; 56541 (15:6541) push hl ld hl, $d73f ld a, [hli] ld b, a ld a, [hl] ld c, a xor a ld [$FF00+$e0], a pop hl .asm_5654d ld a, [hli] cp $ff jr z, .asm_56569 push hl ld hl, $ffe0 inc [hl] pop hl cp b jr z, .asm_5655e inc hl jr .asm_5654d .asm_5655e ld a, [hli] cp c jr nz, .asm_5654d ld hl, $d73f xor a ld [hli], a ld [hl], a ret .asm_56569 xor a ld [$FF00+$e0], a ret ; known jump sources: 56528 (15:6528) Func_5656d: ; 5656d (15:656d) ld a, [$FF00+$e0] and a ret z ld hl, $d832 set 0, [hl] ret INCBIN "baserom.gbc",$56577,$5657d - $56577 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,$567f9 - $566e2 ; known jump sources: 3303 (0:3303) Func_567f9: ; 567f9 (15:67f9) ld hl, $c100 ld de, $4 ld a, [$cf13] ld [H_DOWNARROWBLINKCNT2], a ; $FF00+$8c call Func_56903 ld a, [hli] ld [$FF00+$eb], a inc hl ld a, [hl] ld [$FF00+$ec], a ld de, $fe add hl, de ld a, [hli] ld [$FF00+$ed], a ld a, [hl] ld [$FF00+$ee], a ret INCBIN "baserom.gbc",$56819,$5683d - $56819 ld hl, $c100 ld de, $4 ld a, [$cf13] ld [H_DOWNARROWBLINKCNT2], a ; $FF00+$8c call Func_56903 ld a, [$FF00+$eb] ld [hli], a inc hl ld a, [$FF00+$ec] ld [hl], a ld de, $fe add hl, de ld a, [$FF00+$ed] ld [hli], a ld a, [$FF00+$ee] ld [hl], a ret INCBIN "baserom.gbc",$5685d,$56881 - $5685d ; known jump sources: 32d4 (0:32d4) Func_56881: ; 56881 (15:6881) ld a, [$cf13] swap a ld [W_WHICHTRADE], a ; $cd3d call Func_5698e ld a, [$cd3f] and a jr z, .asm_5689c cp $4 jr z, .asm_568b0 cp $8 jr z, .asm_568dc jr .asm_568c6 .asm_5689c ld a, [$cd40] ld b, a ld a, $3c call Func_3633 cp $10 ret z swap a dec a ld c, a xor a ld b, a jr .asm_568f0 .asm_568b0 ld a, [$cd40] ld b, a ld a, $3c call Func_3633 cp $10 ret z swap a dec a ld c, a ld b, $0 ld a, $40 jr .asm_568f0 .asm_568c6 ld a, [$cd41] ld b, a ld a, $40 call Func_3633 cp $10 ret z swap a dec a ld c, a ld b, $0 ld a, $c0 jr .asm_568f0 .asm_568dc ld a, [$cd41] ld b, a ld a, $40 call Func_3633 cp $10 ret z swap a dec a ld c, a ld b, $0 ld a, $80 .asm_568f0 ld hl, $cc97 ld de, $cc97 call FillMemory ld [hl], $ff ld a, [$cf13] ld [H_DOWNARROWBLINKCNT2], a ; $FF00+$8c jp Func_363d ; known jump sources: 56804 (15:6804), 56848 (15:6848) Func_56903: ; 56903 (15:6903) push de add hl, de ld a, [H_DOWNARROWBLINKCNT2] ; $FF00+$8c swap a ld d, $0 ld e, a add hl, de pop de ret ; known jump sources: 3342 (0:3342) Func_5690f: ; 5690f (15:690f) push hl push de ld a, [W_WHICHTRADE] ; $cd3d add $2 ld d, $0 ld e, a ld hl, $c100 add hl, de ld a, [hl] sub $ff jr nz, .asm_56925 jp Func_56988 .asm_56925 ld a, [W_WHICHTRADE] ; $cd3d add $9 ld d, $0 ld e, a ld hl, $c100 add hl, de ld a, [hl] ld [$cd3f], a call Func_5698e ld a, [$cd40] ld b, a ld a, $3c cp b jr z, .asm_5694e ld a, [$cd41] ld b, a ld a, $40 cp b jr z, .asm_56961 xor a jp Func_56988 .asm_5694e ld a, [$cd41] ld b, a ld a, $40 call Func_3633 jr z, Func_56988 call Func_569af jr c, .asm_56975 xor a jr Func_56988 .asm_56961 ld a, [$cd40] ld b, a ld a, $3c call Func_3633 jr z, Func_56988 call Func_569af jr c, .asm_56975 xor a jp Func_56988 .asm_56975 call Func_569e3 ld a, [W_WHICHTRADE] ; $cd3d and a jr z, Func_56988 ld hl, $cd60 set 0, [hl] call Func_336a ld a, $ff ; known jump sources: 56922 (15:6922), 5694b (15:694b), 56957 (15:6957), 5695f (15:695f), 5696a (15:696a), 56972 (15:6972), 5697c (15:697c) Func_56988: ; 56988 (15:6988) ld [W_WHICHTRADE], a ; $cd3d pop de pop hl ret ; known jump sources: 56889 (15:6889), 56935 (15:6935) Func_5698e: ; 5698e (15:698e) ld a, [W_WHICHTRADE] ; $cd3d add $4 ld d, $0 ld e, a ld hl, $c100 add hl, de ld a, [hl] ld [$cd40], a ld a, [W_WHICHTRADE] ; $cd3d add $6 ld d, $0 ld e, a ld hl, $c100 add hl, de ld a, [hl] ld [$cd41], a ret ; known jump sources: 56959 (15:6959), 5696c (15:696c) Func_569af: ; 569af (15:69af) ld b, a ld a, [$cd3e] cp b jr nc, .asm_569b8 jr .asm_569e1 .asm_569b8 ld a, [$cd3f] cp $0 jr z, .asm_569cd cp $4 jr z, .asm_569cd cp $8 jr z, .asm_569d7 cp $c jr z, .asm_569d7 jr .asm_569e1 .asm_569cd ld a, [$cd41] ld b, a cp $40 jr z, .asm_569df jr .asm_569e1 .asm_569d7 ld a, [$cd40] ld b, a cp $3c jr nz, .asm_569e1 .asm_569df scf ret .asm_569e1 and a ret ; known jump sources: 56975 (15:6975) Func_569e3: ; 569e3 (15:69e3) ld a, [W_CURMAP] ; $d35e cp $53 jp z, .asm_56a42 ld a, [W_WHICHTRADE] ; $cd3d add $4 ld d, $0 ld e, a ld hl, $c100 add hl, de ld a, [hl] cp $fc jr nz, .asm_569fe ld a, $c .asm_569fe ld [$cd40], a ld a, [W_WHICHTRADE] ; $cd3d add $6 ld d, $0 ld e, a ld hl, $c100 add hl, de ld a, [hl] ld [$cd41], a ld a, [$cd3f] cp $0 jr nz, .asm_56a21 ld a, [$cd40] cp $3c jr c, .asm_56a42 jr .asm_56a46 .asm_56a21 cp $4 jr nz, .asm_56a2e ld a, [$cd40] cp $3c jr nc, .asm_56a42 jr .asm_56a46 .asm_56a2e cp $8 jr nz, .asm_56a3b ld a, [$cd41] cp $40 jr nc, .asm_56a42 jr .asm_56a46 .asm_56a3b ld a, [$cd41] cp $40 jr nc, .asm_56a46 .asm_56a42 ld a, $ff jr .asm_56a47 .asm_56a46 xor a .asm_56a47 ld [W_WHICHTRADE], a ; $cd3d ret ; 56a4b (15:6a4b) 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 ; PokeCenterSignText 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_1F db $9, $7, $1, ROUTE_15_GATE_1F db $8, $e, $2, ROUTE_15_GATE_1F db $9, $e, $3, ROUTE_15_GATE_1F 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_1F EVENT_DISP $1e, $9, $7 ; ROUTE_15_GATE_1F EVENT_DISP $1e, $8, $e ; ROUTE_15_GATE_1F EVENT_DISP $1e, $9, $e ; ROUTE_15_GATE_1F 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,$58d99 - $58d7d ; known jump sources: 3c0fc (f:40fc) Func_58d99: ; 58d99 (16:4d99) ld a, [W_ISINBATTLE] ; $d057 dec a jr nz, .asm_58dbe ld a, [W_CURMAP] ; $d35e cp $90 jr c, .asm_58daa cp $95 jr c, .asm_58dd8 .asm_58daa ld a, [$cfd8] call PlayCry ld hl, $4e3b ld a, [W_MOVEMISSED] ; $d05f and a jr z, .asm_58dbc ld hl, $4e40 .asm_58dbc jr .asm_58dc9 .asm_58dbe call Func_58e29 ld c, $14 call DelayFrames ld hl, $4e4a .asm_58dc9 push hl ld hl, Func_3a849 ld b, BANK(Func_3a849) call Bankswitch ; indirect jump to Func_3a849 (3a849 (e:6849)) pop hl call PrintText jr asm_58e3a .asm_58dd8 ld b, $48 call IsItemInBag ld a, [$cfd8] ld [$cf91], a cp $91 jr z, .asm_58e03 ld a, b and a jr z, .asm_58df5 ld hl, Func_3eb01 ld b, BANK(Func_3eb01) call Bankswitch ; indirect jump to Func_3eb01 (3eb01 (f:6b01)) jr .asm_58daa .asm_58df5 ld hl, $4e45 call PrintText ld hl, $4e54 call PrintText jr asm_58e3a .asm_58e03 ld a, b and a jr z, .asm_58df5 ld hl, $4e45 call PrintText ld hl, $4e4f call PrintText ld hl, Func_3eb01 ld b, BANK(Func_3eb01) call Bankswitch ; indirect jump to Func_3eb01 (3eb01 (f:6b01)) ld hl, Func_708ca ld b, BANK(Func_708ca) call Bankswitch ; indirect jump to Func_708ca (708ca (1c:48ca)) ld hl, $4e3b call PrintText ; known jump sources: 58dbe (16:4dbe) Func_58e29: ; 58e29 (16:4e29) xor a ld [$c0f1], a ld a, $80 ld [$c0f2], a ld a, $e9 call Func_23b1 jp Func_3748 asm_58e3a: ; 58e3a (16:4e3a) ret ; 58e3b (16:4e3b) 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 ; known jump sources: 3cc96 (f:4c96) Func_58e59: ; 58e59 (16:4e59) ld hl, W_ENEMYMONCURHP ; $cfe6 ld a, [hli] or [hl] ld hl, $4eae jr z, .asm_58eab xor a ld [H_NUMTOPRINT], a ; $FF00+$96 (aliases: H_MULTIPLICAND) ld hl, W_ENEMYMONCURHP ; $cfe6 ld a, [hli] ld [$cce3], a ld [$FF00+$97], a ld a, [hl] ld [$cce4], a ld [$FF00+$98], a ld a, $19 ld [H_REMAINDER], a ; $FF00+$99 (aliases: H_DIVISOR, H_MULTIPLIER, H_POWEROFTEN) call Multiply ld hl, W_ENEMYMONMAXHP ; $cff4 ld a, [hli] ld b, [hl] srl a rr b srl a rr b ld a, b ld b, $4 ld [H_REMAINDER], a ; $FF00+$99 (aliases: H_DIVISOR, H_MULTIPLIER, H_POWEROFTEN) call Divide ld a, [$FF00+$98] ld hl, $4eae cp $46 jr nc, .asm_58eab ld hl, $4eb5 cp $28 jr nc, .asm_58eab ld hl, $4ebc cp $a jr nc, .asm_58eab ld hl, $4ec3 .asm_58eab jp PrintText INCBIN "baserom.gbc",$58eae,$58eb3 - $58eae jr .asm_58ec8 INCBIN "baserom.gbc",$58eb5,$58eba - $58eb5 jr .asm_58ec8 INCBIN "baserom.gbc",$58ebc,$58ec8 - $58ebc .asm_58ec8 ld hl, $4ecc ret ; 58ecc (16:4ecc) UnnamedText_58ecc: ; 0x58ecc TX_FAR _UnnamedText_58ecc db $50 ; 0x58ecc + 5 bytes ; known jump sources: 3d1bf (f:51bf) Func_58ed1: ; 58ed1 (16:4ed1) ld hl, $4ed7 jp PrintText INCBIN "baserom.gbc",$58ed7,$58f3e - $58ed7 UnnamedText_58f3e: ; 0x58f3e TX_FAR _UnnamedText_58f3e db $50 ; 0x58f3e + 5 bytes ; known jump sources: f64c (3:764c), 55350 (15:5350) Func_58f43: ; 58f43 (16:4f43) ld a, [$cf98] ld [$d0b5], a call GetBaseStats ld d, $1 .asm_58f4e inc d call Func_58f6a push hl ld hl, $cfa8 ld a, [$FF00+$98] ld c, a ld a, [hld] sub c ld a, [$FF00+$97] ld c, a ld a, [hld] sbc c ld a, [H_NUMTOPRINT] ; $FF00+$96 (aliases: H_MULTIPLICAND) ld c, a ld a, [hl] sbc c pop hl jr nc, .asm_58f4e dec d ret ; known jump sources: de9a (3:5e9a), e88c (3:688c), f431 (3:7431), 12c94 (4:6c94), 55312 (15:5312), 58f4f (16:4f4f) Func_58f6a: ; 58f6a (16:4f6a) ld a, [$d0cb] add a add a ld c, a ld b, $0 ld hl, $501d add hl, bc call Func_59010 ld a, d ld [H_REMAINDER], a ; $FF00+$99 (aliases: H_DIVISOR, H_MULTIPLIER, H_POWEROFTEN) call Multiply ld a, [hl] and $f0 swap a ld [H_REMAINDER], a ; $FF00+$99 (aliases: H_DIVISOR, H_MULTIPLIER, H_POWEROFTEN) call Multiply ld a, [hli] and $f ld [H_REMAINDER], a ; $FF00+$99 (aliases: H_DIVISOR, H_MULTIPLIER, H_POWEROFTEN) ld b, $4 call Divide ld a, [H_NUMTOPRINT] ; $FF00+$96 (aliases: H_MULTIPLICAND) push af ld a, [$FF00+$97] push af ld a, [$FF00+$98] push af call Func_59010 ld a, [hl] and $7f ld [H_REMAINDER], a ; $FF00+$99 (aliases: H_DIVISOR, H_MULTIPLIER, H_POWEROFTEN) call Multiply ld a, [H_NUMTOPRINT] ; $FF00+$96 (aliases: H_MULTIPLICAND) push af ld a, [$FF00+$97] push af ld a, [$FF00+$98] push af ld a, [hli] push af xor a ld [H_NUMTOPRINT], a ; $FF00+$96 (aliases: H_MULTIPLICAND) ld [$FF00+$97], a ld a, d ld [$FF00+$98], a ld a, [hli] ld [H_REMAINDER], a ; $FF00+$99 (aliases: H_DIVISOR, H_MULTIPLIER, H_POWEROFTEN) call Multiply ld b, [hl] ld a, [$FF00+$98] sub b ld [$FF00+$98], a ld b, $0 ld a, [$FF00+$97] sbc b ld [$FF00+$97], a ld a, [H_NUMTOPRINT] ; $FF00+$96 (aliases: H_MULTIPLICAND) sbc b ld [H_NUMTOPRINT], a ; $FF00+$96 (aliases: H_MULTIPLICAND) pop af and $80 jr nz, .asm_58feb pop bc ld a, [$FF00+$98] add b ld [$FF00+$98], a pop bc ld a, [$FF00+$97] adc b ld [$FF00+$97], a pop bc ld a, [H_NUMTOPRINT] ; $FF00+$96 (aliases: H_MULTIPLICAND) adc b ld [H_NUMTOPRINT], a ; $FF00+$96 (aliases: H_MULTIPLICAND) jr .asm_58ffd .asm_58feb pop bc ld a, [$FF00+$98] sub b ld [$FF00+$98], a pop bc ld a, [$FF00+$97] sbc b ld [$FF00+$97], a pop bc ld a, [H_NUMTOPRINT] ; $FF00+$96 (aliases: H_MULTIPLICAND) sbc b ld [H_NUMTOPRINT], a ; $FF00+$96 (aliases: H_MULTIPLICAND) .asm_58ffd pop bc ld a, [$FF00+$98] add b ld [$FF00+$98], a pop bc ld a, [$FF00+$97] adc b ld [$FF00+$97], a pop bc ld a, [H_NUMTOPRINT] ; $FF00+$96 (aliases: H_MULTIPLICAND) adc b ld [H_NUMTOPRINT], a ; $FF00+$96 (aliases: H_MULTIPLICAND) ret ; known jump sources: 58f76 (16:4f76), 58f9c (16:4f9c) Func_59010: ; 59010 (16:5010) xor a ld [H_NUMTOPRINT], a ; $FF00+$96 (aliases: H_MULTIPLICAND) ld [$FF00+$97], a ld a, d ld [$FF00+$98], a ld [H_REMAINDER], a ; $FF00+$99 (aliases: H_DIVISOR, H_MULTIPLIER, H_POWEROFTEN) jp Multiply INCBIN "baserom.gbc",$5901d,$59091 - $5901d 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 EnableAutoTextBoxDrawing 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 EnableAutoTextBoxDrawing 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 EnableAutoTextBoxDrawing 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, PokeCenterSignText, 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 EnableAutoTextBoxDrawing 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 EnableAutoTextBoxDrawing ld hl, Route12TrainerHeaders ld de, $5611 ld a, [$d624] call $3160 ld [$d624], a ret ; 0x59606 .asm_59606 xor a ld [$cd6b], a ld [$d624], a ld [$da39], a ret INCBIN "baserom.gbc",$59611,$59619 - $59611 ld hl, $d7d8 bit 7, [hl] jp nz, Func_3219 bit 6, [hl] res 6, [hl] jp z, Func_3219 ld a, $d ld [H_DOWNARROWBLINKCNT2], a ; $FF00+$8c call DisplayTextID ld a, $84 ld [W_CUROPPONENT], a ; $d059 ld a, $1e ld [W_CURENEMYLVL], a ; $d127 ld a, $1d ld [$cc4d], a ld a, $11 call Predef ; indirect jump to Func_f1d7 (f1d7 (3:71d7)) ld a, $3 ld [$d624], a ld [$da39], a ret ld a, [W_ISINBATTLE] ; $d057 cp $ff jr z, .asm_59606 call Func_2429 ld a, [$cf0b] cp $2 jr z, .asm_59664 ld a, $e ld [H_DOWNARROWBLINKCNT2], a ; $FF00+$8c call DisplayTextID .asm_59664 ld hl, $d7d8 set 7, [hl] call Delay3 ld a, $0 ld [$d624], a ld [$da39], a ret ; 59675 (16:5675) Route12Texts: ; 0x59675 dw Route12Text1, Route12Text2, Route12Text3, Route12Text4, Route12Text5, Route12Text6, Route12Text7, Route12Text8, Predef5CText, Predef5CText, 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 EnableAutoTextBoxDrawing 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, Predef5CText, 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 EnableAutoTextBoxDrawing ld hl, Route16TrainerHeaders ld de, $5951 ld a, [$d626] call $3160 ld [$d626], a ret ; 0x59946 ; known jump sources: 59994 (16:5994) Func_59946: ; 59946 (16:5946) xor a ld [$cd6b], a ld [$d626], a ld [$da39], a ret INCBIN "baserom.gbc",$59951,$59959 - $59951 ld hl, $d7e0 bit 1, [hl] jp nz, Func_3219 bit 0, [hl] res 0, [hl] jp z, Func_3219 ld a, $a ld [H_DOWNARROWBLINKCNT2], a ; $FF00+$8c call DisplayTextID ld a, $84 ld [W_CUROPPONENT], a ; $d059 ld a, $1e ld [W_CURENEMYLVL], a ; $d127 ld a, $21 ld [$cc4d], a ld a, $11 call Predef ; indirect jump to Func_f1d7 (f1d7 (3:71d7)) call Func_2429 ld a, $3 ld [$d626], a ld [$da39], a ret ld a, [W_ISINBATTLE] ; $d057 cp $ff jp z, Func_59946 call Func_2429 ld a, [$cf0b] cp $2 jr z, .asm_599a8 ld a, $b ld [H_DOWNARROWBLINKCNT2], a ; $FF00+$8c call DisplayTextID .asm_599a8 ld hl, $d7e0 set 1, [hl] call Delay3 ld a, $0 ld [$d626], a ld [$da39], a ret ; 599b9 (16:59b9) 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 EnableAutoTextBoxDrawing 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 EnableAutoTextBoxDrawing ; 0x59b73 ; known jump sources: 59c1d (16:5c1d) Func_59b73: ; 59b73 (16:5b73) ld a, [$d771] bit 1, a ret nz ld b, $6 call IsItemInBag ret nz ld b, $2d jp IsItemInBag ; 59b84 (16:5b84) 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, PIKACHU 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 EnableAutoTextBoxDrawing ld hl, SilphCo2TrainerHeaders ld de, $5d80 ld a, [$d643] call $3160 ld [$d643], a ret ; 0x59d07 SilphCo2_Unknown59d07: ; 0x59d07 INCBIN "baserom.gbc",$59d07,$59d43 - $59d07 ; known jump sources: 59f7c (16:5f7c), 5a15a (16:615a) Func_59d43: ; 59d43 (16:5d43) push hl ld hl, $d73f ld a, [hli] ld b, a ld a, [hl] ld c, a xor a ld [$FF00+$e0], a pop hl .asm_59d4f ld a, [hli] cp $ff jr z, .asm_59d6b push hl ld hl, $ffe0 inc [hl] pop hl cp b jr z, .asm_59d60 inc hl jr .asm_59d4f .asm_59d60 ld a, [hli] cp c jr nz, .asm_59d4f ld hl, $d73f xor a ld [hli], a ld [hl], a ret .asm_59d6b xor a ld [$FF00+$e0], a ret INCBIN "baserom.gbc",$59d6f,$59d86 - $59d6f 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 EnableAutoTextBoxDrawing ld hl, SilphCo3TrainerHeaders ld de, $5fbe ld a, [$d644] call $3160 ld [$d644], a ret ; 0x59f71 SilphCo3Script_Unknown59f71: ; 0x59f71 ld hl, $d126 bit 5, [hl] res 5, [hl] ret z ld hl, $5fa8 call Func_59d43 call Func_59fad ld a, [$d828] bit 0, a jr nz, .asm_59f98 push af ld a, $5f ld [$d09f], a ld bc, $404 ld a, $17 call Predef ; indirect jump to Func_ee9e (ee9e (3:6e9e)) pop af .asm_59f98 bit 1, a ret nz ld a, $5f ld [$d09f], a ld bc, $408 ld a, $17 jp Predef ; indirect jump to Func_ee9e (ee9e (3:6e9e)) INCBIN "baserom.gbc",$59fa8,$59fad - $59fa8 ; known jump sources: 59f7f (16:5f7f) Func_59fad: ; 59fad (16:5fad) ld hl, $d828 ld a, [$FF00+$e0] and a ret z cp $1 jr nz, .asm_59fbb set 0, [hl] ret .asm_59fbb set 1, [hl] ret INCBIN "baserom.gbc",$59fbe,$59fc4 - $59fbe SilphCo3Texts: ; 0x59fc4 dw SilphCo3Text1, SilphCo3Text2, SilphCo3Text3, Predef5CText 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 EnableAutoTextBoxDrawing ld hl, SilphCo10TrainerHeaders ld de, $6180 ld a, [$d658] call $3160 ld [$d658], a ret ; 0x5a14f SilphCo10Script_Unknown5a14f: ; 0x5a14f ld hl, $d126 bit 5, [hl] res 5, [hl] ret z ld hl, $6173 call Func_59d43 call Func_5a176 ld a, [$d836] bit 0, a ret nz ld a, $54 ld [$d09f], a ld bc, $405 ld a, $17 jp Predef ; indirect jump to Func_ee9e (ee9e (3:6e9e)) INCBIN "baserom.gbc",$5a173,$5a176 - $5a173 ; known jump sources: 5a15d (16:615d) Func_5a176: ; 5a176 (16:6176) ld a, [$FF00+$e0] and a ret z ld hl, $d836 set 0, [hl] ret INCBIN "baserom.gbc",$5a180,$5a186 - $5a180 SilphCo10Texts: ; 0x5a186 dw SilphCo10Text1, SilphCo10Text2, SilphCo10Text3, Predef5CText, Predef5CText, Predef5CText 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 EnableAutoTextBoxDrawing ld hl, LanceTrainerHeaders ld de, $62fa ld a, [$d653] call $3160 ld [$d653], a ret ; 0x5a2c4 LanceScript_Unknown5a2c4: ; 0x5a2c4 ld hl, $d126 bit 5, [hl] res 5, [hl] ret z ld a, [$d866] bit 7, a jr nz, .asm_5a2da ld a, $31 ld b, $32 jp Func_5a2de .asm_5a2da ld a, $72 ld b, $73 ; known jump sources: 5a2d7 (16:62d7) Func_5a2de: ; 5a2de (16:62de) push bc ld [$d09f], a ld bc, $602 call Func_5a2f0 pop bc ld a, b ld [$d09f], a ld bc, $603 ; known jump sources: 5a2e5 (16:62e5) Func_5a2f0: ; 5a2f0 (16:62f0) ld a, $17 jp Predef ; indirect jump to Func_ee9e (ee9e (3:6e9e)) ; known jump sources: 5a351 (16:6351) Func_5a2f5: ; 5a2f5 (16:62f5) xor a ld [$d653], a ret INCBIN "baserom.gbc",$5a2fa,$5a305 - $5a2fa ld a, [$d866] bit 6, a ret nz ld hl, $633e call ArePlayerCoordsInArray jp nc, Func_3219 xor a ld [$FF00+$b4], a ld a, [W_WHICHTRADE] ; $cd3d cp $3 jr nc, .asm_5a325 ld a, $1 ld [H_DOWNARROWBLINKCNT2], a ; $FF00+$8c jp DisplayTextID .asm_5a325 cp $5 jr z, .asm_5a35b ld hl, $d866 bit 7, [hl] set 7, [hl] ret nz ld hl, $d126 set 5, [hl] ld a, $ad call Func_23b1 jp LanceScript_Unknown5a2c4 INCBIN "baserom.gbc",$5a33e,$5a349 - $5a33e call Func_3275 ld a, [W_ISINBATTLE] ; $d057 cp $ff jp z, Func_5a2f5 ld a, $1 ld [H_DOWNARROWBLINKCNT2], a ; $FF00+$8c jp DisplayTextID .asm_5a35b ld a, $ff ld [$cd6b], a ld hl, $ccd3 ld de, $6379 call Func_350c dec a ld [$cd38], a call Func_3486 ld a, $3 ld [$d653], a ld [$da39], a ret INCBIN "baserom.gbc",$5a379,$5a382 - $5a379 ld a, [$cd38] and a ret nz call Delay3 xor a ld [$cd6b], a ld [$d653], a ld [$da39], a ret ; 5a395 (16:6395) 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 EnableAutoTextBoxDrawing 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 DelayFrames 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, RLEMovement5a528 call $350c dec a ld [$cd38], a call $3486 ld a, $1 ld [$d64b], a ret ; 0x5a528 RLEMovement5a528: ; 0x5a528 db $40,$5 db $ff HallofFameRoomScript1: ; 0x5a52b ld a, [$cd38] and a ret nz ld a, $1 ld [$d528], a ld a, $1 ld [$ff00+$8c], a call Function3541 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 DisplayTextID 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" ; known jump sources: 1e142 (7:6142) Func_5a59f: ; 5a59f (16:659f) ld hl, $65b7 .asm_5a5a2 ld a, [hli] ld [$FF00+$db], a and a ret z push hl ld b, a call IsItemInBag pop hl jr z, .asm_5a5a2 ld b, BANK(Func_17f37) ld hl, Func_17f37 jp Bankswitch ; indirect jump to Func_17f37 (17f37 (5:7f37)) INCBIN "baserom.gbc",$5a5b7,$5a5ba - $5a5b7 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 EnableAutoTextBoxDrawing 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 ; known jump sources: 1d178 (7:5178) Func_5c0dc: ; 5c0dc (17:40dc) ld a, $4b ld [W_OWNEDPOKEMON], a ; $d2f7 ld a, $3d call Predef ; indirect jump to ShowPokedexData (402d1 (10:42d1)) xor a ld [W_OWNEDPOKEMON], a ; $d2f7 ret ; 5c0eb (17:40eb) 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 DisplayTextID ; 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 EnableAutoTextBoxDrawing ; 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 EnableAutoTextBoxDrawing ld hl, PewterGymTrainerHeaders ld de, $43ca ld a, [$d5fc] call $3160 ld [$d5fc], a ret ; 0x5c3a4 PewterGymScript_Unknown5c3a4: ; 0x5c3a4 ld hl, $43ad ld de, $43b9 jp Func_317f INCBIN "baserom.gbc",$5c3ad,$5c3bf - $5c3ad ; known jump sources: 5c3d7 (17:43d7), 5c432 (17:4432) Func_5c3bf: ; 5c3bf (17:43bf) xor a ld [$cd6b], a ld [$d5fc], a ld [$da39], a ret INCBIN "baserom.gbc",$5c3ca,$5c3d2 - $5c3ca ld a, [W_ISINBATTLE] ; $d057 cp $ff jp z, Func_5c3bf ld a, $f0 ld [$cd6b], a ; known jump sources: 5c45a (17:445a) Func_5c3df: ; 5c3df (17:43df) ld a, $4 ld [H_DOWNARROWBLINKCNT2], a ; $FF00+$8c call DisplayTextID ld hl, $d755 set 7, [hl] ld bc, $ea01 call GiveItem jr nc, .asm_5c401 ld a, $5 ld [H_DOWNARROWBLINKCNT2], a ; $FF00+$8c call DisplayTextID ld hl, $d755 set 6, [hl] jr .asm_5c408 .asm_5c401 ld a, $6 ld [H_DOWNARROWBLINKCNT2], a ; $FF00+$8c call DisplayTextID .asm_5c408 ld hl, W_OBTAINEDBADGES ; $d356 set 0, [hl] ld hl, $d72a set 0, [hl] ld a, $4 ld [$cc4d], a ld a, $11 call Predef ; indirect jump to Func_f1d7 (f1d7 (3:71d7)) ld a, $22 ld [$cc4d], a ld a, $11 call Predef ; indirect jump to Func_f1d7 (f1d7 (3:71d7)) ld hl, $d7eb res 0, [hl] res 7, [hl] ld hl, $d755 set 2, [hl] jp Func_5c3bf ; 5c435 (17:4435) 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 EnableAutoTextBoxDrawing ; 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 DelayFrames 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 DelayFrames ld a, [$c026] ld b, a ld a, [$c027] or b jr nz, .asm_5c5d1 ; 0x5c5f6 $d9 ld c, $30 call DelayFrames 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 EnableAutoTextBoxDrawing ; 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 EnableAutoTextBoxDrawing ld hl, CeruleanGymTrainerHeaders ld de, $46f8 ld a, [$d5fd] call $3160 ld [$d5fd], a ret ; 0x5c6d0 CeruleanGymScript_Unknown5c6d0: ; 0x5c6d0 ld hl, $46d9 ld de, $46e7 jp Func_317f INCBIN "baserom.gbc",$5c6d9,$5c6ed - $5c6d9 ; known jump sources: 5c705 (17:4705), 5c747 (17:4747) Func_5c6ed: ; 5c6ed (17:46ed) xor a ld [$cd6b], a ld [$d5fd], a ld [$da39], a ret INCBIN "baserom.gbc",$5c6f8,$5c700 - $5c6f8 ld a, [W_ISINBATTLE] ; $d057 cp $ff jp z, Func_5c6ed ld a, $f0 ld [$cd6b], a ; known jump sources: 5c77d (17:477d) Func_5c70d: ; 5c70d (17:470d) ld a, $5 ld [H_DOWNARROWBLINKCNT2], a ; $FF00+$8c call DisplayTextID ld hl, $d75e set 7, [hl] ld bc, $d301 call GiveItem jr nc, .asm_5c72f ld a, $6 ld [H_DOWNARROWBLINKCNT2], a ; $FF00+$8c call DisplayTextID ld hl, $d75e set 6, [hl] jr .asm_5c736 .asm_5c72f ld a, $7 ld [H_DOWNARROWBLINKCNT2], a ; $FF00+$8c call DisplayTextID .asm_5c736 ld hl, W_OBTAINEDBADGES ; $d356 set 1, [hl] ld hl, $d72a set 1, [hl] ld hl, $d75e set 2, [hl] set 3, [hl] jp Func_5c6ed ; 5c74a (17:474a) 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 EnableAutoTextBoxDrawing ; 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 EnableAutoTextBoxDrawing ; 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 EnableAutoTextBoxDrawing ; 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 EnableAutoTextBoxDrawing ; 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 EnableAutoTextBoxDrawing ; 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 EnableAutoTextBoxDrawing ld hl, VermilionGymTrainerHeader0 ld de, $4a95 ld a, [$d5fe] call $3160 ld [$d5fe], a ret ; 0x5ca4c VermilionGymScript_Unknown5ca4c: ; 0x5ca4c ld hl, $4a55 ld de, $4a64 jp Func_317f INCBIN "baserom.gbc",$5ca55,$5ca6d - $5ca55 ; known jump sources: 5ca36 (17:4a36) Func_5ca6d: ; 5ca6d (17:4a6d) ld a, [$d773] bit 0, a jr nz, .asm_5ca78 ld a, $24 jr .asm_5ca7f .asm_5ca78 ld a, $ad call Func_23b1 ld a, $5 .asm_5ca7f ld [$d09f], a ld bc, $202 ld a, $17 jp Predef ; indirect jump to Func_ee9e (ee9e (3:6e9e)) ; known jump sources: 5caa2 (17:4aa2), 5cae5 (17:4ae5) Func_5ca8a: ; 5ca8a (17:4a8a) xor a ld [$cd6b], a ld [$d5fe], a ld [$da39], a ret INCBIN "baserom.gbc",$5ca95,$5ca9d - $5ca95 ld a, [W_ISINBATTLE] ; $d057 cp $ff jp z, Func_5ca8a ld a, $f0 ld [$cd6b], a ; known jump sources: 5cb29 (17:4b29) Func_5caaa: ; 5caaa (17:4aaa) ld a, $6 ld [H_DOWNARROWBLINKCNT2], a ; $FF00+$8c call DisplayTextID ld hl, $d773 set 7, [hl] ld bc, $e001 call GiveItem jr nc, .asm_5cacc ld a, $7 ld [H_DOWNARROWBLINKCNT2], a ; $FF00+$8c call DisplayTextID ld hl, $d773 set 6, [hl] jr .asm_5cad3 .asm_5cacc ld a, $8 ld [H_DOWNARROWBLINKCNT2], a ; $FF00+$8c call DisplayTextID .asm_5cad3 ld hl, W_OBTAINEDBADGES ; $d356 set 2, [hl] ld hl, $d72a set 2, [hl] ld a, [$d773] or $1c ld [$d773], a jp Func_5ca8a ; 5cae8 (17:4ae8) 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 EnableAutoTextBoxDrawing ; 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 EnableAutoTextBoxDrawing 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 EnableAutoTextBoxDrawing ld hl, $50c3 ld de, $5053 ld a, [$d65c] call $3160 ld [$d65c], a ret ; 0x5d02a .extra ld hl, $5033 ld de, $5040 jp Func_317f INCBIN "baserom.gbc",$5d033,$5d048 - $5d033 ; known jump sources: 5d060 (17:5060), 5d0a8 (17:50a8) Func_5d048: ; 5d048 (17:5048) xor a ld [$cd6b], a ld [$d65c], a ld [$da39], a ret INCBIN "baserom.gbc",$5d053,$5d05b - $5d053 ld a, [W_ISINBATTLE] ; $d057 cp $ff jp z, Func_5d048 ld a, $f0 ld [$cd6b], a ; known jump sources: 5d124 (17:5124) Func_5d068: ; 5d068 (17:5068) ld a, $a ld [H_DOWNARROWBLINKCNT2], a ; $FF00+$8c call DisplayTextID ld hl, $d7b3 set 1, [hl] ld bc, $f601 call GiveItem jr nc, .asm_5d08a ld a, $b ld [H_DOWNARROWBLINKCNT2], a ; $FF00+$8c call DisplayTextID ld hl, $d7b3 set 0, [hl] jr .asm_5d091 .asm_5d08a ld a, $c ld [H_DOWNARROWBLINKCNT2], a ; $FF00+$8c call DisplayTextID .asm_5d091 ld hl, W_OBTAINEDBADGES ; $d356 set 5, [hl] ld hl, $d72a set 5, [hl] ld a, [$d7b3] or $fc ld [$d7b3], a ld hl, $d7b4 set 0, [hl] jp Func_5d048 ; 5d0ab (17:50ab) 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 EnableAutoTextBoxDrawing ; 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 EnableAutoTextBoxDrawing 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 Predef ; 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 EnableAutoTextBoxDrawing ; 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 EnableAutoTextBoxDrawing ; 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 EnableAutoTextBoxDrawing ; 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 EnableAutoTextBoxDrawing ; 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 EnableAutoTextBoxDrawing ; 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 EnableAutoTextBoxDrawing ; 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 EnableAutoTextBoxDrawing ld hl, SilphCo9TrainerHeaders ld de, $5885 ld a, [$d64a] call $3160 ld [$d64a], a ret ; 0x5d7d1 SilphCo9Script_Unknown5d7d1: ; 0x5d7d1 ld hl, $d126 bit 5, [hl] res 5, [hl] ret z ld hl, $582e call Func_5d837 call Func_5d863 ld a, [$d834] bit 0, a jr nz, .asm_5d7f8 push af ld a, $5f ld [$d09f], a ld bc, $401 ld a, $17 call Predef ; indirect jump to Func_ee9e (ee9e (3:6e9e)) pop af .asm_5d7f8 bit 1, a jr nz, .asm_5d80b push af ld a, $54 ld [$d09f], a ld bc, $209 ld a, $17 call Predef ; indirect jump to Func_ee9e (ee9e (3:6e9e)) pop af .asm_5d80b bit 2, a jr nz, .asm_5d81e push af ld a, $54 ld [$d09f], a ld bc, $509 ld a, $17 call Predef ; indirect jump to Func_ee9e (ee9e (3:6e9e)) pop af .asm_5d81e bit 3, a ret nz ld a, $5f ld [$d09f], a ld bc, $605 ld a, $17 jp Predef ; indirect jump to Func_ee9e (ee9e (3:6e9e)) INCBIN "baserom.gbc",$5d82e,$5d837 - $5d82e ; known jump sources: 5d7dc (17:57dc) Func_5d837: ; 5d837 (17:5837) push hl ld hl, $d73f ld a, [hli] ld b, a ld a, [hl] ld c, a xor a ld [$FF00+$e0], a pop hl .asm_5d843 ld a, [hli] cp $ff jr z, .asm_5d85f push hl ld hl, $ffe0 inc [hl] pop hl cp b jr z, .asm_5d854 inc hl jr .asm_5d843 .asm_5d854 ld a, [hli] cp c jr nz, .asm_5d843 ld hl, $d73f xor a ld [hli], a ld [hl], a ret .asm_5d85f xor a ld [$FF00+$e0], a ret ; known jump sources: 5d7df (17:57df) Func_5d863: ; 5d863 (17:5863) ld hl, $d834 ld a, [$FF00+$e0] and a ret z cp $1 jr nz, .asm_5d871 set 0, [hl] ret .asm_5d871 cp $2 jr nz, .asm_5d878 set 1, [hl] ret .asm_5d878 cp $3 jr nz, .asm_5d87f set 2, [hl] ret .asm_5d87f cp $4 ret nz set 3, [hl] ret INCBIN "baserom.gbc",$5d885,$5d88b - $5d885 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 EnableAutoTextBoxDrawing ld hl, VictoryRoad1TrainerHeaders ld de, $5a3a ld a, [$d651] call $3160 ld [$d651], a ret ; 0x5da27 .next ld a, [$d869] bit 7, a ret z ld a, $1d ld [$d09f], a ld bc, $604 ld a, $17 jp Predef ; indirect jump to Func_ee9e (ee9e (3:6e9e)) INCBIN "baserom.gbc",$5da3a,$5da40 - $5da3a ld a, [$d869] bit 7, a jp nz, Func_3219 ld hl, $5a5c call CheckBoulderCoords jp nc, Func_3219 ld hl, $d126 set 5, [hl] ld hl, $d869 set 7, [hl] ret INCBIN "baserom.gbc",$5da5c,$5da5f - $5da5c VictoryRoad1Texts: ; 0x5da5f dw VictoryRoad1Text1, VictoryRoad1Text2, Predef5CText, Predef5CText, BoulderText, BoulderText, BoulderText 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" ; known jump sources: 3aeaa (e:6eaa) Func_5db5e: ; 5db5e (17:5b5e) call Load16BitRegisters ld bc, $5 add hl, bc ld a, [$d11e] ld [$d0b5], a push hl call GetBaseStats pop hl ld a, [$d0be] ld [hli], a ld a, [$d0bf] ld [hl], a ret INCBIN "baserom.gbc",$5db79,$5db81 - $5db79 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 ld a, $b7 ld [$cf91], a call Func_5dbd9 call EnableAutoTextBoxDrawing ld a, $9 call Func_3ef5 ret ; 5dbbe (17:5bbe) UnnamedText_5dbbe: ; 0x5dbbe TX_FAR _UnnamedText_5dbbe db $50 ; 0x5dbbe + 5 bytes ld a, $b6 ld [$cf91], a call Func_5dbd9 call EnableAutoTextBoxDrawing ld a, $b call Func_3ef5 ret ; 5dbd4 (17:5bd4) UnnamedText_5dbd4: ; 0x5dbd4 TX_FAR _UnnamedText_5dbd4 db $50 ; 0x5dbd4 + 5 bytes ; known jump sources: 5dbb2 (17:5bb2), 5dbc8 (17:5bc8) Func_5dbd9: ; 5dbd9 (17:5bd9) ld a, $1 ld [H_AUTOBGTRANSFERENABLED], a ; $FF00+$ba call Delay3 xor a ld [$FF00+$b0], a call Func_3719 ld a, $11 ld [$d125], a call DisplayTextBoxID call Func_2429 ld a, [$cf91] ld [$d0b5], a call GetBaseStats ld de, $8b10 call Func_1665 ld a, $80 ld [$FF00+$e1], a ld hl, $c486 ld a, $2 call Predef ; indirect jump to Func_3f073 (3f073 (f:7073)) call Func_3865 call Func_3725 call Delay3 ld a, $90 ld [$FF00+$b0], a ret INCBIN "baserom.gbc",$5dc1a,$5dc9e - $5dc1a 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 call EnableAutoTextBoxDrawing ld a, [W_WHICHTRADE] ; $cd3d ld [$cd5b], a ld a, [$d773] bit 0, a jr z, .asm_5de11 ld a, $26 jp Func_3ef5 .asm_5de11 bit 1, a jr nz, .asm_5de53 ld a, [$d743] ld b, a ld a, [$cd5b] cp b jr z, .asm_5de23 ld a, $26 jr .asm_5de7a .asm_5de23 ld hl, $d773 set 1, [hl] ld hl, $5e7d ld a, [$cd5b] ld b, a add a add a add b ld d, $0 ld e, a add hl, de ld a, [hli] ld [$FF00+$db], a push hl call GenRandom swap a ld b, a ld a, [$FF00+$db] and b dec a pop hl ld d, $0 ld e, a add hl, de ld a, [hl] and $f ld [$d744], a ld a, $3b jr .asm_5de7a .asm_5de53 ld a, [$d744] ld b, a ld a, [$cd5b] cp b jr z, .asm_5de6e ld hl, $d773 res 1, [hl] call GenRandom and $e ld [$d743], a ld a, $3e jr .asm_5de7a .asm_5de6e ld hl, $d773 set 0, [hl] ld hl, $d126 set 6, [hl] ld a, $3d .asm_5de7a jp Func_3ef5 INCBIN "baserom.gbc",$5de7d,$5decd - $5de7d call Func_3748 ld a, $9d call Func_23b1 call Func_3748 jp TextScriptEnd ; 5dedb (17:5edb) UnnamedText_5dedb: ; 0x5dedb TX_FAR _UnnamedText_5dedb db $50 ; 0x5dedb + 5 bytes INCBIN "baserom.gbc",$5dee0,$5def4 - $5dee0 call Func_3748 ld a, $ad call Func_23b1 call Func_3748 jp TextScriptEnd INCBIN "baserom.gbc",$5df02,$5df07 - $5df02 call Func_3748 ld a, $a5 call Func_23b1 call Func_3748 jp TextScriptEnd ; 5df15 (17:5f15) 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 EnableAutoTextBoxDrawing ; 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 EnableAutoTextBoxDrawing ld hl, PokemonTower2Scripts ld a, [$d62b] jp $3d97 ; 0x604fe ; known jump sources: 60568 (18:4568) Func_604fe: ; 604fe (18:44fe) xor a ld [$cd6b], a ld [$d62b], a ld [$da39], a ret ; 60509 (18:4509) PokemonTower2Scripts: ; 0x60509 dw PokemonTower2Script0, PokemonTower2Script1, PokemonTower2Script2 PokemonTower2Script0: ; 0x6050f ld a, [$d764] bit 7, a ret nz ld hl, $455e call ArePlayerCoordsInArray 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 DisplayTextID 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 DisplayTextID 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 MoveSprite 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 EnableAutoTextBoxDrawing 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, Predef5CText 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 EnableAutoTextBoxDrawing 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, Predef5CText, Predef5CText, Predef5CText 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 EnableAutoTextBoxDrawing ld hl, PokemonTower5TrainerHeaders ld de, PokemonTower5Script_Unknown60945 ld a, [$d62e] call $3160 ld [$d62e], a ret ; 0x60945 PokemonTower5Script_Unknown60945: ; 0x60945 INCBIN "baserom.gbc",$60945,$6094b - $60945 ld hl, $4992 call ArePlayerCoordsInArray jr c, .asm_60960 ld hl, $d72e res 4, [hl] ld hl, $d767 res 7, [hl] jp Func_3219 .asm_60960 ld hl, $d767 bit 7, [hl] set 7, [hl] ret nz xor a ld [$FF00+$b4], a ld a, $f0 ld [$cd6b], a ld hl, $d72e set 4, [hl] ld a, $7 call Predef ; indirect jump to HealParty (f6a5 (3:76a5)) call GBFadeOut2 call Delay3 call Delay3 call GBFadeIn2 ld a, $7 ld [H_DOWNARROWBLINKCNT2], a ; $FF00+$8c call DisplayTextID xor a ld [$cd6b], a ret INCBIN "baserom.gbc",$60992,$6099b - $60992 PokemonTower5Texts: ; 0x6099b dw PokemonTower5Text1, PokemonTower5Text2, PokemonTower5Text3, PokemonTower5Text4, PokemonTower5Text5, Predef5CText, 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 EnableAutoTextBoxDrawing ld hl, PokemonTower6TrainerHeaders ld de, $4b0d ld a, [$d62f] call $3160 ld [$d62f], a ret ; 0x60b02 ; known jump sources: 60b4d (18:4b4d) Func_60b02: ; 60b02 (18:4b02) xor a ld [$cd6b], a ld [$d62f], a ld [$da39], a ret INCBIN "baserom.gbc",$60b0d,$60b17 - $60b0d ld a, [$d768] bit 7, a jp nz, Func_3219 ld hl, $4b45 call ArePlayerCoordsInArray jp nc, Func_3219 xor a ld [$FF00+$b4], a ld a, $6 ld [H_DOWNARROWBLINKCNT2], a ; $FF00+$8c call DisplayTextID ld a, $91 ld [W_CUROPPONENT], a ; $d059 ld a, $1e ld [W_CURENEMYLVL], a ; $d127 ld a, $4 ld [$d62f], a ld [$da39], a ret INCBIN "baserom.gbc",$60b45,$60b48 - $60b45 ld a, [W_ISINBATTLE] ; $d057 cp $ff jp z, Func_60b02 ld a, $ff ld [$cd6b], a ld a, [$d72d] bit 6, a ret nz call Func_2429 ld a, $f0 ld [$cd6b], a ld a, [$cf0b] and a jr nz, .asm_60b82 ld hl, $d768 set 7, [hl] ld a, $7 ld [H_DOWNARROWBLINKCNT2], a ; $FF00+$8c call DisplayTextID xor a ld [$cd6b], a ld a, $0 ld [$d62f], a ld [$da39], a ret .asm_60b82 ld a, $1 ld [$cd38], a ld a, $10 ld [$ccd3], a xor a ld [$c206], a ld [$cd3b], a ld hl, $d730 set 7, [hl] ld a, $3 ld [$d62f], a ld [$da39], a ret INCBIN "baserom.gbc",$60ba1,$60bb1 - $60ba1 PokemonTower6Texts: ; 0x60bb1 dw PokemonTower6Text1, PokemonTower6Text2, PokemonTower6Text3, Predef5CText, Predef5CText, 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, MAROWAK 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 EnableAutoTextBoxDrawing ld hl, PokemonTower7TrainerHeaders ld de, $4d23 ld a, [$d630] call $3160 ld [$d630], a ret ; 0x60d18 ; known jump sources: 60d37 (18:4d37) Func_60d18: ; 60d18 (18:4d18) xor a ld [$cd6b], a ld [$d630], a ld [$da39], a ret INCBIN "baserom.gbc",$60d23,$60d2d - $60d23 ld hl, $cd60 res 0, [hl] ld a, [W_ISINBATTLE] ; $d057 cp $ff jp z, Func_60d18 call Func_3275 ld a, $f0 ld [$cd6b], a ld a, [$cf13] ld [H_DOWNARROWBLINKCNT2], a ; $FF00+$8c call DisplayTextID call Func_60db6 ld a, $3 ld [$d630], a ld [$da39], a ret ld a, [$d730] bit 0, a ret nz ld hl, $d5ce ld a, [$cf13] ld b, a .asm_60d63 ld a, [hli] cp b ld a, [hli] jr nz, .asm_60d63 ld [$cc4d], a ld a, $11 call Predef ; indirect jump to Func_f1d7 (f1d7 (3:71d7)) xor a ld [$cd6b], a ld [$cf13], a ld [$cc55], a ld [$da38], a ld a, $0 ld [$d630], a ld [$da39], a ret ld a, $ff ld [$cd6b], a ld a, $43 ld [$cc4d], a ld a, $11 call Predef ; indirect jump to Func_f1d7 (f1d7 (3:71d7)) ld a, $4 ld [$c109], a ld a, $95 ld [H_DOWNARROWBLINKCNT1], a ; $FF00+$8b ld a, $1 ld [$d42f], a ld a, $4 ld [$d365], a ld hl, $d72d set 3, [hl] ld a, $0 ld [$d630], a ld [$da39], a ret ; known jump sources: 60d4a (18:4d4a) Func_60db6: ; 60db6 (18:4db6) ld hl, $4de3 ld a, [$cf13] dec a swap a ld d, $0 ld e, a add hl, de ld a, [W_YCOORD] ; $d361 ld b, a ld a, [W_XCOORD] ; $d362 ld c, a .asm_60dcb ld a, [hli] cp b jr nz, .asm_60dde ld a, [hli] cp c jr nz, .asm_60ddf ld a, [hli] ld d, [hl] ld e, a ld a, [$cf13] ld [H_DOWNARROWBLINKCNT2], a ; $FF00+$8c jp MoveSprite .asm_60dde inc hl .asm_60ddf inc hl inc hl jr .asm_60dcb INCBIN "baserom.gbc",$60de3,$60e3f - $60de3 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 EnableAutoTextBoxDrawing ; 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" ; known jump sources: 75d88 (1d:5d88) Func_61006: ; 61006 (18:5006) ld hl, $d730 set 6, [hl] xor a ld [W_CURMENUITEMID], a ; $cc26 ld a, $3 ld [W_MENUWATCHEDKEYS], a ; $cc29 ld a, [$cd37] dec a ld [W_MAXMENUITEMID], a ; $cc28 ld a, $2 ld [W_TOPMENUITEMY], a ; $cc24 ld a, $1 ld [W_TOPMENUITEMX], a ; $cc25 ld a, [$cd37] dec a ld bc, $2 ld hl, $3 call AddNTimes dec l ld b, l ld c, $d ld hl, $c3a0 call TextBoxBorder call Func_2429 call Func_610c2 ld hl, $d730 res 6, [hl] call HandleMenuInput bit 1, a jr nz, .asm_610a7 ld hl, $cc5b ld a, [W_CURMENUITEMID] ; $cc26 ld d, $0 ld e, a add hl, de ld a, [hl] ld [$FF00+$db], a cp $29 jr z, .asm_6106b cp $2a jr z, .asm_61067 ld b, $ab jr .asm_6106d .asm_61067 ld b, $62 jr .asm_6106d .asm_6106b ld b, $5a .asm_6106d ld [$d70f], a ld a, b ld [$d710], a call Func_610eb ld hl, $50ae call PrintText call Func_35ec ld a, [W_CURMENUITEMID] ; $cc26 and a jr nz, .asm_610a7 ld hl, $50b3 call PrintText ld a, [$d70f] ld [$FF00+$db], a ld b, BANK(Func_17f37) ld hl, Func_17f37 call Bankswitch ; indirect jump to Func_17f37 (17f37 (5:7f37)) ld hl, $50b8 call PrintText ld hl, $d7a3 set 0, [hl] set 1, [hl] ret .asm_610a7 ld hl, $50bd call PrintText ret ; 610ae (18:50ae) 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 ; known jump sources: 6103f (18:503f) Func_610c2: ; 610c2 (18:50c2) ld hl, $cc5b xor a ld [$FF00+$db], a .asm_610c8 ld a, [hli] cp $ff ret z push hl ld [$d11e], a call GetItemName ld hl, $c3ca ld a, [$FF00+$db] ld bc, $28 call AddNTimes ld de, $cd6d call PlaceString ld hl, $ffdb inc [hl] pop hl jr .asm_610c8 ; known jump sources: 61074 (18:5074), 75ded (1d:5ded) Func_610eb: ; 610eb (18:50eb) ld a, [$d710] ld [$d11e], a call GetMonName call Func_3826 ld a, [$d70f] ld [$d11e], a call GetItemName ret ; 61101 (18:5101) 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 EnableAutoTextBoxDrawing 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, Predef5CText, Predef5CText, Predef5CText, 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 EnableAutoTextBoxDrawing 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 EnableAutoTextBoxDrawing ld hl, SSAnne2Scripts ld a, [$d665] jp $3d97 ; 0x613ab ; known jump sources: 61472 (18:5472) Func_613ab: ; 613ab (18:53ab) xor a ld [$cd6b], a ld [$d665], a ret ; 613b3 (18:53b3) SSAnne2Scripts: ; 0x613b3 dw SSAnne2Script0, SSAnne2Script1, SSAnne2Script2, SSAnne2Script3, SSAnne2Script4 SSAnne2Script4: ; 0x613bd ret ; 0x613be SSAnne2Script0: ; 0x613be ld hl, $5411 call ArePlayerCoordsInArray 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 Function3541 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 MoveSprite ld a, $1 ld [$d665], a ret ; 0x6140c INCBIN "baserom.gbc",$6140c,$61416 - $6140c ; known jump sources: 61436 (18:5436), 61464 (18:5464), 61475 (18:5475) Func_61416: ; 61416 (18:5416) ld a, [W_XCOORD] ; $d362 cp $25 jr nz, .asm_61426 ld a, $2 ld [$d528], a ld a, $c jr .asm_61427 .asm_61426 xor a .asm_61427 ld [$FF00+$8d], a ld a, $2 ld [H_DOWNARROWBLINKCNT2], a ; $FF00+$8c jp Func_34a6 ; 61430 (18:5430) 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 DisplayTextID 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 DisplayTextID ld a, $2 ld [$ff00+$8c], a call Function3541 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 MoveSprite 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 EnableAutoTextBoxDrawing ; 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 EnableAutoTextBoxDrawing 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 EnableAutoTextBoxDrawing 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 EnableAutoTextBoxDrawing ; 0x6189b SSAnne7Script_Unknown6189b: ; 0x6189b ld a, [$d803] bit 1, a ret nz ld hl, $d72d set 5, [hl] ret ; 618a7 (18:58a7) 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 EnableAutoTextBoxDrawing 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, Predef5CText, 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, WIGGLYTUFF 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, Predef5CText, SSAnne9Text7, SSAnne9Text8, Predef5CText, 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 EnableAutoTextBoxDrawing 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, Predef5CText, Predef5CText, Predef5CText 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, MACHOKE 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 EnableAutoTextBoxDrawing ; 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 EnableAutoTextBoxDrawing ; 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 EnableAutoTextBoxDrawing ; 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 EnableAutoTextBoxDrawing ld hl, SilphCo11TrainerHeaders ld de, $61cf ld a, [$d659] call $3160 ld [$d659], a ret ; 0x62110 SilphCo11Script_Unknown62110: ; 0x62110 ld hl, $d126 bit 5, [hl] res 5, [hl] ret z ld hl, $6134 call Func_62137 call Func_62163 ld a, [$d838] bit 0, a ret nz ld a, $20 ld [$d09f], a ld bc, $603 ld a, $17 jp Predef ; indirect jump to Func_ee9e (ee9e (3:6e9e)) INCBIN "baserom.gbc",$62134,$62137 - $62134 ; known jump sources: 6211b (18:611b) Func_62137: ; 62137 (18:6137) push hl ld hl, $d73f ld a, [hli] ld b, a ld a, [hl] ld c, a xor a ld [$FF00+$e0], a pop hl .asm_62143 ld a, [hli] cp $ff jr z, .asm_6215f push hl ld hl, $ffe0 inc [hl] pop hl cp b jr z, .asm_62154 inc hl jr .asm_62143 .asm_62154 ld a, [hli] cp c jr nz, .asm_62143 ld hl, $d73f xor a ld [hli], a ld [hl], a ret .asm_6215f xor a ld [$FF00+$e0], a ret ; known jump sources: 6211e (18:611e) Func_62163: ; 62163 (18:6163) ld a, [$FF00+$e0] and a ret z ld hl, $d838 set 0, [hl] ret ; known jump sources: 62252 (18:6252) Func_6216d: ; 6216d (18:616d) ld hl, $619b .asm_62170 ld a, [hli] cp $ff jr z, .asm_62181 push hl ld [$cc4d], a ld a, $11 call Predef ; indirect jump to Func_f1d7 (f1d7 (3:71d7)) pop hl jr .asm_62170 .asm_62181 ld hl, $6194 .asm_62184 ld a, [hli] cp $ff ret z push hl ld [$cc4d], a ld a, $15 call Predef ; indirect jump to Func_f1c8 (f1c8 (3:71c8)) pop hl jr .asm_62184 INCBIN "baserom.gbc",$62194,$621c4 - $62194 ; known jump sources: 6222c (18:622c) Func_621c4: ; 621c4 (18:61c4) xor a ld [$cd6b], a ; known jump sources: 6220e (18:620e), 62267 (18:6267), 62290 (18:6290), 622b4 (18:62b4) Func_621c8: ; 621c8 (18:61c8) ld [$d659], a ld [$da39], a ret INCBIN "baserom.gbc",$621cf,$621db - $621cf ld a, [$d838] bit 7, a ret nz ld hl, $6211 call ArePlayerCoordsInArray jp nc, Func_3219 ld a, [W_WHICHTRADE] ; $cd3d ld [$cf0d], a xor a ld [$FF00+$b4], a ld a, $f0 ld [$cd6b], a ld a, $3 ld [H_DOWNARROWBLINKCNT2], a ; $FF00+$8c call DisplayTextID ld a, $3 ld [H_DOWNARROWBLINKCNT2], a ; $FF00+$8c call Function3541 ld de, $6216 call MoveSprite ld a, $3 jp Func_621c8 INCBIN "baserom.gbc",$62211,$6221a - $62211 ; known jump sources: 62240 (18:6240), 62288 (18:6288) Func_6221a: ; 6221a (18:621a) ld [$d528], a ld a, $3 ld [H_DOWNARROWBLINKCNT2], a ; $FF00+$8c ld a, b ld [$FF00+$8d], a jp Func_34a6 ld a, [W_ISINBATTLE] ; $d057 cp $ff jp z, Func_621c4 ld a, [$cf0d] cp $1 jr z, .asm_6223c ld a, $2 ld b, $c jr .asm_62240 .asm_6223c ld a, $8 ld b, $0 .asm_62240 call Func_6221a ld a, $f0 ld [$cd6b], a ld a, $6 ld [H_DOWNARROWBLINKCNT2], a ; $FF00+$8c call DisplayTextID call GBFadeIn1 call Func_6216d call Func_2429 call Delay3 call GBFadeOut1 ld hl, $d838 set 7, [hl] xor a ld [$cd6b], a jp Func_621c8 ld a, [$d730] bit 0, a ret nz ld a, $3 ld [H_DOWNARROWBLINKCNT2], a ; $FF00+$8c call Function3541 ld a, [$cf0d] cp $1 jr z, .asm_62284 ld a, $2 ld b, $c jr .asm_62288 .asm_62284 ld a, $8 ld b, $0 .asm_62288 call Func_6221a call Delay3 ld a, $4 jp Func_621c8 ld hl, $d72d set 6, [hl] set 7, [hl] ld hl, $6330 ld de, $6330 call Func_3354 ld a, [H_DOWNARROWBLINKCNT2] ; $FF00+$8c ld [$cf13], a call Func_336a call Func_32d7 xor a ld [$cd6b], a ld a, $5 jp Func_621c8 ; 622b7 (18:62b7) 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" GymStatues: ; 0x62419 ; if in a gym and have the corresponding badge, a = $D and jp $3EF5 ; if in a gym and don’t have the corresponding badge, a = $C and jp $3EF5 ; else ret call EnableAutoTextBoxDrawing ld a, [$c109] cp $4 ret nz ld hl, .BadgeFlags ld a, [W_CURMAP] ld b, a .asm_62429 ld a, [hli] cp $ff ret z cp b jr z, .asm_62433 ; 0x6242e $3 inc hl jr .asm_62429 ; 0x62431 $f6 .asm_62433 ld b, [hl] ld a, [$d72a] and b cp b ld a, $d jr z, .asm_6243f ; 0x6243b $2 ld a, $c .asm_6243f jp $3ef5 .BadgeFlags: db PEWTER_GYM, %00000001 db CERULEAN_GYM, %00000010 db VERMILION_GYM,%00000100 db CELADON_GYM, %00001000 db FUCHSIA_GYM, %00010000 db SAFFRON_GYM, %00100000 db CINNABAR_GYM, %01000000 db VIRIDIAN_GYM, %10000000 db $ff 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 ld a, [$c109] cp $4 ret nz call EnableAutoTextBoxDrawing ld a, $1 ld [$cf0c], a ld a, $1f jp Func_3ef5 INCBIN "baserom.gbc",$62529,$6252a - $62529 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] ; known jump sources: 70044 (1c:4044) Func_70000: ; 70000 (1c:4000) ld a, $f9 ld [rOBP0], a ; $FF00+$48 ld a, $a4 ld [rOBP1], a ; $FF00+$49 ld de, $471e ld hl, $8a00 ld bc, $1e01 call CopyVideoData ld de, $481e ld hl, $8a10 ld bc, $1e01 call CopyVideoData ld de, $4190 ld hl, $8a20 ld bc, $1c01 call CopyVideoData ld hl, $4140 ld de, $c360 ld bc, $40 call CopyData ld hl, $4180 ld de, $c300 ld bc, $10 jp CopyData ; known jump sources: 418c4 (10:58c4) Func_70044: ; 70044 (1c:4044) call Func_70000 ld a, $c2 call Func_23b1 ld hl, $c300 ld bc, $a004 .asm_70052 push hl push bc .asm_70054 ld a, [hl] add $4 ld [hli], a ld a, [hl] add $fc ld [hli], a inc hl inc hl dec c jr nz, .asm_70054 ld c, $1 call CheckForUserInterruption pop bc pop hl ret c ld a, [hl] cp $50 jr nz, .asm_70070 jr .asm_70052 .asm_70070 cp b jr nz, .asm_70052 ld hl, $c300 ld c, $4 ld de, $4 .asm_7007b ld [hl], $a0 add hl, de dec c jr nz, .asm_7007b ld b, $3 .asm_70083 ld hl, rOBP0 ; $ff48 rrc [hl] rrc [hl] ld c, $a call CheckForUserInterruption ret c dec b jr nz, .asm_70083 ld de, $c300 ld a, $18 .asm_70098 push af ld hl, $40ee ld bc, $4 call CopyData pop af dec a jr nz, .asm_70098 xor a ld [W_WHICHTRADE], a ; $cd3d ld hl, $40f2 ld c, $6 .asm_700af ld a, [hli] ld e, a ld a, [hli] ld d, a push bc push hl ld hl, $c350 ld c, $4 .asm_700ba ld a, [de] cp $ff jr z, .asm_700d5 ld [hli], a inc de ld a, [de] ld [hli], a inc de inc hl inc hl dec c jr nz, .asm_700ba ld a, [W_WHICHTRADE] ; $cd3d cp $18 jr z, .asm_700d5 add $6 ld [W_WHICHTRADE], a ; $cd3d .asm_700d5 call Func_7011f push af ld hl, $c310 ld de, $c300 ld bc, $50 call CopyData pop af pop hl pop bc ret c dec c jr nz, .asm_700af and a ret INCBIN "baserom.gbc",$700ee,$7011f - $700ee ; known jump sources: 700d5 (1c:40d5) Func_7011f: ; 7011f (1c:411f) ld b, $8 .asm_70121 ld hl, $c35c ld a, [W_WHICHTRADE] ; $cd3d ld de, $fffc ld c, a .asm_7012b inc [hl] add hl, de dec c jr nz, .asm_7012b ld a, [rOBP1] ; $FF00+$49 xor $a0 ld [rOBP1], a ; $FF00+$49 ld c, $3 call CheckForUserInterruption ret c dec b jr nz, .asm_70121 ret INCBIN "baserom.gbc",$70140,$701a0 - $70140 ; known jump sources: 74061 (1d:4061) Func_701a0: ; 701a0 (1c:41a0) call Func_70423 call ClearScreen ld c, $64 call DelayFrames call LoadFontTilePatterns call LoadTextBoxTilePatterns call DisableLCD ld hl, $9800 ld bc, $800 ld a, $7f call FillMemory call EnableLCD ld hl, rLCDC ; $ff40 set 3, [hl] xor a ld hl, $cc5b ld bc, $60 call FillMemory xor a ld [$cfcb], a ld [$FF00+$d7], a ld [$d0aa], a ld [$d358], a ld [$cd40], a inc a ld [H_AUTOBGTRANSFERENABLED], a ; $FF00+$ba ld hl, $d5a2 ld a, [hl] inc a jr z, .asm_701eb inc [hl] .asm_701eb ld a, $90 ld [$FF00+$b0], a ld c, $1f ld a, $ca call Func_23a1 ld hl, W_PARTYMON1 ; $d164 ld c, $ff .asm_701fb ld a, [hli] cp $ff jr z, .asm_70241 inc c push hl push bc ld [W_WHICHTRADE], a ; $cd3d ld a, c ld [$cd3e], a ld hl, W_PARTYMON1_LEVEL ; $d18c ld bc, $2c call AddNTimes ld a, [hl] ld [$cd3f], a call Func_70278 call Func_702e1 ld c, $50 call DelayFrames ld hl, $c4a6 ld b, $3 ld c, $e call TextBoxBorder ld hl, $c4d0 ld de, $426b call PlaceString ld c, $b4 call DelayFrames call GBFadeOut2 pop bc pop hl jr .asm_701fb .asm_70241 ld a, c inc a ld hl, $cc5b ld bc, $10 call AddNTimes ld [hl], $ff call Func_73b0d xor a ld [W_WHICHTRADE], a ; $cd3d inc a ld [$cd40], a call Func_70278 call Func_70377 call Func_70423 xor a ld [$FF00+$b0], a ld hl, rLCDC ; $ff40 res 3, [hl] ret INCBIN "baserom.gbc",$7026b,$70278 - $7026b ; known jump sources: 70217 (1c:4217), 70259 (1c:4259) Func_70278: ; 70278 (1c:4278) call ClearScreen ld a, $d0 ld [$FF00+$af], a ld a, $c0 ld [$FF00+$ae], a ld a, [W_WHICHTRADE] ; $cd3d ld [$cf91], a ld [$d0b5], a ld [$cfd9], a ld [$cf1d], a ld a, [$cd40] and a jr z, .asm_7029d call Func_7033e jr .asm_702ab .asm_7029d ld hl, $c410 call GetBaseStats call Func_1389 ld a, $4 call Predef ; indirect jump to Func_3f103 (3f103 (f:7103)) .asm_702ab ld b, $b ld c, $0 call GoPAL_SET ld a, $e4 ld [rBGP], a ; $FF00+$47 ld c, $31 call Func_7036d ld d, $a0 ld e, $4 ld a, [$cf1b] and a jr z, .asm_702c7 sla e .asm_702c7 call .asm_702d5 xor a ld [$FF00+$af], a ld c, a call Func_7036d ld d, $0 ld e, $fc .asm_702d5 call DelayFrame ld a, [$FF00+$ae] add e ld [$FF00+$ae], a cp d jr nz, .asm_702d5 ret ; known jump sources: 7021a (1c:421a) Func_702e1: ; 702e1 (1c:42e1) ld a, [$cd3e] ld hl, W_PARTYMON1NAME ; $d2b5 call GetPartyMonName call Func_702f0 jp Func_70404 ; known jump sources: 702ea (1c:42ea), 7666d (1d:666d) Func_702f0: ; 702f0 (1c:42f0) ld hl, $c3c8 ld b, $9 ld c, $a call TextBoxBorder ld hl, $c41a ld de, $4329 call PlaceString ld hl, $c3f1 ld de, $cd6d call PlaceString ld a, [$cd3f] ld hl, $c434 call PrintLevelCommon ld a, [W_WHICHTRADE] ; $cd3d ld [$d0b5], a ld hl, $c457 ld a, $4b call Predef ; indirect jump to Func_27d6b (27d6b (9:7d6b)) ld a, [W_WHICHTRADE] ; $cd3d jp PlayCry INCBIN "baserom.gbc",$70329,$7033e - $70329 ; known jump sources: 70298 (1c:4298) Func_7033e: ; 7033e (1c:433e) ld de, $6ede ld a, $4 call Func_36eb ld hl, $a188 ld de, $a000 ld bc, $310 call CopyData ld de, $9000 call Func_16ea ld de, $7e0a ld a, $c call Func_36eb ld a, $3 call Predef ; indirect jump to Func_2fe40 (2fe40 (b:7e40)) ld de, $9310 call Func_16ea ld c, $1 ; known jump sources: 702b8 (1c:42b8), 702ce (1c:42ce) Func_7036d: ; 7036d (1c:436d) ld b, $0 ld hl, $c410 ld a, $31 jp Predef ; indirect jump to Func_79dda (79dda (1e:5dda)) ; known jump sources: 7025c (1c:425c) Func_70377: ; 70377 (1c:4377) ld hl, $d747 set 3, [hl] ld a, $56 call Predef ; indirect jump to DisplayDexRating (44169 (11:4169)) ld hl, $c3f0 ld b, $6 ld c, $a call TextBoxBorder ld hl, $c3a5 ld b, $2 ld c, $9 call TextBoxBorder ld hl, $c3cf ld de, W_PLAYERNAME ; $d158 call PlaceString ld hl, $c419 ld de, $43ea call PlaceString ld hl, $c431 ld de, $da41 ld bc, $103 call PrintNumber ld [hl], $6d inc hl ld de, $da43 ld bc, $8102 call PrintNumber ld hl, $c455 ld de, $43f4 call PlaceString ld hl, $c46c ld de, W_PLAYERMONEY3 ; $d347 ld c, $a3 call PrintBCDNumber ld hl, $43fa call Func_703e2 ld hl, $43ff call Func_703e2 ld hl, $cc5d ; known jump sources: 703d6 (1c:43d6), 703dc (1c:43dc) Func_703e2: ; 703e2 (1c:43e2) call PrintText ld c, $78 jp DelayFrames INCBIN "baserom.gbc",$703ea,$703fa - $703ea UnnamedText_703fa: ; 0x703fa TX_FAR _UnnamedText_703fa db $50 ; 0x703fa + 5 bytes UnnamedText_703ff: ; 0x703ff TX_FAR _UnnamedText_703ff db $50 ; 0x703ff + 5 bytes ; known jump sources: 702ed (1c:42ed) Func_70404: ; 70404 (1c:4404) ld hl, $cc5b ld bc, $10 ld a, [$cd3e] call AddNTimes ld a, [W_WHICHTRADE] ; $cd3d ld [hli], a ld a, [$cd3f] ld [hli], a ld e, l ld d, h ld hl, $cd6d ld bc, $b jp CopyData ; known jump sources: 701a0 (1c:41a0), 7025f (1c:425f) Func_70423: ; 70423 (1c:4423) ld a, $a ld [$cfc8], a ld [$cfc9], a ld a, $ff ld [$cfc7], a jp GBFadeOut2 ; known jump sources: 7027 (1:7027) Func_70433: ; 70433 (1c:4433) ld de, $44b7 ld hl, $87c0 ld bc, $1c03 call CopyVideoData ld hl, $cfcb ld a, [hl] push af ld [hl], $ff push hl ld a, [rOBP1] ; $FF00+$49 push af ld a, $e0 ld [rOBP1], a ; $FF00+$49 ld hl, $c384 ld de, $44d7 call Func_70503 ld a, $4 ld [$cfc7], a ld a, $ff ld [$c0ee], a call Func_23b1 .asm_70464 ld a, [$cfc7] and a jr nz, .asm_70464 ld a, [W_NUMINPARTY] ; $d163 ld b, a .asm_7046e call Func_70503 ld a, $9e call Func_23b1 ld c, $1e call DelayFrames dec b jr nz, .asm_7046e ld a, [$c0ef] cp $1f ld [$c0f0], a jr nz, .asm_70495 ld a, $ff ld [$c0ee], a call Func_23b1 ld a, $2 ld [$c0ef], a .asm_70495 ld a, $e8 ld [$c0ee], a call Func_23b1 ld d, $28 call Func_704f3 .asm_704a2 ld a, [$c026] cp $e8 jr z, .asm_704a2 ld c, $20 call DelayFrames pop af ld [rOBP1], a ; $FF00+$49 pop hl pop af ld [hl], a jp Func_2429 INCBIN "baserom.gbc",$704b7,$704f3 - $704b7 ; known jump sources: 7049f (1c:449f), 708f3 (1c:48f3) Func_704f3: ; 704f3 (1c:44f3) ld b, $8 .asm_704f5 ld a, [rOBP1] ; $FF00+$49 xor d ld [rOBP1], a ; $FF00+$49 ld c, $a call DelayFrames dec b jr nz, .asm_704f5 ret ; known jump sources: 70454 (1c:4454), 7046e (1c:446e) Func_70503: ; 70503 (1c:4503) ld a, [de] inc de ld [hli], a ld a, [de] inc de ld [hli], a ld a, [de] inc de ld [hli], a ld a, [de] inc de ld [hli], a ret ; known jump sources: 3de (0:3de) Func_70510: ; 70510 (1c:4510) call Func_706ef ld a, $ec ld [$c104], a call Delay3 push hl call GBFadeIn2 ld hl, $d733 bit 7, [hl] res 7, [hl] jr nz, .asm_70568 ld a, $a0 call Func_23b1 ld hl, $d732 bit 4, [hl] res 4, [hl] pop hl jr nz, .asm_7055e call Func_705aa ld a, $a3 call Func_23b1 call Func_70787 ld a, b and a jr nz, .asm_7055b ld hl, W_WHICHTRADE ; $cd3d xor a ld [hli], a inc a ld [hli], a ld a, $8 ld [hli], a ld [hl], $ff ld hl, $cd48 call Func_70730 .asm_70558 call Func_2307 .asm_7055b jp Func_70772 .asm_7055e ld c, $32 call DelayFrames call Func_705aa jr .asm_7055b .asm_70568 pop hl ld de, $4d80 ld hl, $8000 ld bc, $50c call CopyVideoData call Func_706d7 ld a, $a4 call Func_23b1 ld hl, W_WHICHTRADE ; $cd3d xor a ld [hli], a ld a, $c ld [hli], a ld [hl], $8 ld de, $4592 call Func_706ae call LoadPlayerSpriteGraphics jr .asm_70558 INCBIN "baserom.gbc",$70592,$705aa - $70592 ; known jump sources: 70537 (1c:4537), 70563 (1c:4563) Func_705aa: ; 705aa (1c:45aa) ld hl, W_WHICHTRADE ; $cd3d ld a, $10 ld [hli], a ld a, $3c ld [hli], a call Func_7077f ld [hl], a jp Func_70755 ; known jump sources: 994 (0:994) Func_705ba: ; 705ba (1c:45ba) call Func_706ef call Func_70787 ld a, b and a jr z, .asm_705ef dec a jp nz, Func_7067d .asm_705c8 ld a, $9f call Func_23b1 ld hl, W_WHICHTRADE ; $cd3d ld a, $f0 ld [hli], a ld a, $ec ld [hli], a call Func_7077f ld [hl], a call Func_70755 call Func_70787 ld a, b dec a jr z, .asm_705e9 ld c, $a call DelayFrames .asm_705e9 call GBFadeOut2 jp Func_70772 .asm_705ef ld a, $4 call StopMusic ld a, [$d732] bit 6, a jr z, .asm_70610 ld hl, W_WHICHTRADE ; $cd3d ld a, $10 ld [hli], a ld a, $ff ld [hli], a xor a ld [hli], a ld [hl], $a1 ld hl, $cd48 call Func_70730 jr .asm_705c8 .asm_70610 call Func_706d7 ld hl, W_WHICHTRADE ; $cd3d ld a, $ff ld [hli], a ld a, $8 ld [hli], a ld [hl], $c call Func_706ae ld a, $a4 call Func_23b1 ld hl, W_WHICHTRADE ; $cd3d xor a ld [hli], a ld a, $c ld [hli], a ld [hl], $c ld de, $464f call Func_706ae ld c, $28 call DelayFrames ld hl, $cd3e ld a, $b ld [hli], a ld [hl], $8 ld de, $4667 call Func_706ae call GBFadeOut2 jp Func_70772 INCBIN "baserom.gbc",$7064f,$7067d - $7064f ; known jump sources: 705c5 (1c:45c5) Func_7067d: ; 7067d (1c:467d) ld a, $ff ld [$cfcb], a ld a, [$c302] ld [$c30a], a ld a, [$c306] ld [$c30e], a ld a, $a0 ld [$c300], a ld [$c304], a ld c, $2 call DelayFrames ld a, $a0 ld [$c308], a ld [$c30c], a call GBFadeOut2 ld a, $1 ld [$cfcb], a jp Func_70772 ; known jump sources: 7058a (1c:458a), 7061e (1c:461e), 70633 (1c:4633), 70646 (1c:4646), 706d4 (1c:46d4) Func_706ae: ; 706ae (1c:46ae) ld a, [$cd3f] xor $1 ld [$cd3f], a ld [$c102], a call Delay3 ld a, [W_WHICHTRADE] ; $cd3d cp $ff jr z, .asm_706cd ld hl, $c104 ld a, [de] inc de ld [hli], a inc hl ld a, [de] inc de ld [hl], a .asm_706cd ld a, [$cd3e] dec a ld [$cd3e], a jr nz, Func_706ae ret ; known jump sources: 70575 (1c:4575), 70610 (1c:4610) Func_706d7: ; 706d7 (1c:46d7) ld de, $4d80 ld hl, $8000 ld bc, $50c call CopyVideoData ld de, $4e40 ld hl, $8800 ld bc, $50c jp CopyVideoData ; known jump sources: 70510 (1c:4510), 705ba (1c:45ba) Func_706ef: ; 706ef (1c:46ef) ld a, [$c102] ld [$cd50], a ld a, [$c104] ld [$cd4f], a ld hl, $4713 ld de, $cd48 ld bc, $4 call CopyData ld a, [$c102] ld hl, $cd48 .asm_7070d cp [hl] inc hl jr nz, .asm_7070d dec hl ret INCBIN "baserom.gbc",$70713,$70717 - $70713 ; known jump sources: 70730 (1c:4730), 70755 (1c:4755) Func_70717: ; 70717 (1c:4717) ld a, [hl] ld [$c102], a push hl ld hl, $cd48 ld de, $cd47 ld bc, $4 call CopyData ld a, [$cd47] ld [$cd4b], a pop hl ret ; known jump sources: 70555 (1c:4555), 7060b (1c:460b), 70753 (1c:4753) Func_70730: ; 70730 (1c:4730) call Func_70717 ld a, [W_WHICHTRADE] ; $cd3d ld c, a and $3 jr nz, .asm_70743 ld a, [$cd40] cp $ff call nz, Func_23b1 .asm_70743 ld a, [$cd3e] add c ld [W_WHICHTRADE], a ; $cd3d ld c, a ld a, [$cd3f] cp c ret z call DelayFrames jr Func_70730 ; known jump sources: 705b7 (1c:45b7), 705da (1c:45da), 70770 (1c:4770) Func_70755: ; 70755 (1c:4755) call Func_70717 ld a, [W_WHICHTRADE] ; $cd3d ld c, a ld a, [$c104] add c ld [$c104], a ld c, a ld a, [$cd3e] cp c ret z ld a, [$cd3f] ld c, a call DelayFrames jr Func_70755 ; known jump sources: 7055b (1c:455b), 705ec (1c:45ec), 7064c (1c:464c), 706ab (1c:46ab) Func_70772: ; 70772 (1c:4772) ld a, [$cd4f] ld [$c104], a ld a, [$cd50] ld [$c102], a ret ; known jump sources: 705b3 (1c:45b3), 705d6 (1c:45d6) Func_7077f: ; 7077f (1c:477f) ld a, [$cf1b] xor $1 inc a inc a ret ; known jump sources: 77e (0:77e), 7053f (1c:453f), 705bd (1c:45bd), 705dd (1c:45dd) Func_70787: ; 70787 (1c:4787) ld b, $0 ld hl, $47a9 ld a, [W_CURMAPTILESET] ; $d367 ld c, a .asm_70790 ld a, [hli] cp $ff jr z, .asm_707a4 cp c jr nz, .asm_7079e ld a, [$c45c] cp [hl] jr z, .asm_707a2 .asm_7079e inc hl inc hl jr .asm_70790 .asm_707a2 inc hl ld b, [hl] .asm_707a4 ld a, b ld [$cd5b], a ret INCBIN "baserom.gbc",$707a9,$707b6 - $707a9 ; known jump sources: e2ad (3:62ad) Func_707b6: ; 707b6 (1c:47b6) ld c, $a call DelayFrames ld hl, $d736 set 6, [hl] ld de, $4180 ld hl, $8000 ld bc, $50c call CopyVideoData ld a, $4 ld hl, $4866 call Func_71771 ld a, [$c102] ld c, a ld b, $0 ld hl, $4856 add hl, bc ld de, $c39c ld bc, $4 call CopyData ld c, $64 call DelayFrames ld a, [W_WHICHTRADE] ; $cd3d and a ld hl, $4847 jr z, .asm_70836 cp $2 ld hl, $484c jr z, .asm_70836 ld b, $a .asm_707fe ld hl, $c104 call Func_70842 ld hl, $c39c call Func_70842 call Delay3 dec b jr nz, .asm_707fe ld a, [$c102] cp $4 jr nz, .asm_7081c ld a, $a0 ld [$c39c], a .asm_7081c ld hl, $cd4f xor a ld [hli], a ld [hl], a ld a, $4c call Predef ; indirect jump to Func_17c47 (17c47 (5:7c47)) ld a, [$c102] cp $4 jr nz, .asm_70833 ld a, $44 ld [$c39c], a .asm_70833 ld hl, $4851 .asm_70836 call PrintText ld hl, $d736 res 6, [hl] call LoadFontTilePatterns ret ; known jump sources: 70801 (1c:4801), 70807 (1c:4807) Func_70842: ; 70842 (1c:4842) ld a, [hl] xor $1 ld [hl], a ret ; 70847 (1c:4847) 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,$7087e - $70856 ; known jump sources: 3a3 (0:3a3) Func_7087e: ; 7087e (1c:487e) ld a, [$d714] ld c, a inc a cp $10 jr nc, .asm_70895 ld [$d714], a ld b, $0 ld hl, $48ba add hl, bc ld a, [hl] ld [$c104], a ret .asm_70895 ld a, [W_WALKCOUNTER] ; $cfc5 cp $0 ret nz call Func_2429 call Delay3 xor a ld [$FF00+$b4], a ld [$FF00+$b3], a ld [$FF00+$b2], a ld [$d714], a ld hl, $d736 res 6, [hl] ld hl, $d730 res 7, [hl] xor a ld [$cd6b], a ret INCBIN "baserom.gbc",$708ba,$708ca - $708ba ; known jump sources: 58e20 (16:4e20) Func_708ca: ; 708ca (1c:48ca) ld a, $e4 ld [rOBP1], a ; $FF00+$49 call Func_7092a ld hl, $c3ac ld bc, $707 call ClearScreenArea call Delay3 xor a ld [H_AUTOBGTRANSFERENABLED], a ; $FF00+$ba ld a, $91 ld [$cee9], a ld a, $1 ld [H_WHOSETURN], a ; $FF00+$f3 ld hl, Func_79793 ld b, BANK(Func_79793) call Bankswitch ; indirect jump to Func_79793 (79793 (1e:5793)) ld d, $80 call Func_704f3 .asm_708f6 ld c, $a call DelayFrames ld a, [rOBP1] ; $FF00+$49 sla a sla a ld [rOBP1], a ; $FF00+$49 jr nz, .asm_708f6 call CleanLCD_OAM call Func_7092a ld b, $e4 .asm_7090d ld c, $a call DelayFrames ld a, [rOBP1] ; $FF00+$49 srl b rra srl b rra ld [rOBP1], a ; $FF00+$49 ld a, b and a jr nz, .asm_7090d ld a, $1 ld [H_AUTOBGTRANSFERENABLED], a ; $FF00+$ba call Delay3 jp CleanLCD_OAM ; known jump sources: 708ce (1c:48ce), 70908 (1c:4908) Func_7092a: ; 7092a (1c:492a) ld de, $9000 ld hl, $8000 ld bc, $31 call CopyVideoData ld a, $10 ld [W_BASECOORDY], a ; $d082 ld a, $70 ld [W_BASECOORDX], a ; $d081 ld hl, $c300 ld bc, $606 ld d, $8 .asm_70948 push bc ld a, [W_BASECOORDY] ; $d082 ld e, a .asm_7094d ld a, e add $8 ld e, a ld [hli], a ld a, [W_BASECOORDX] ; $d081 ld [hli], a ld a, d ld [hli], a ld a, $10 ld [hli], a inc d dec c jr nz, .asm_7094d inc d ld a, [W_BASECOORDX] ; $d081 add $8 ld [W_BASECOORDX], a ; $d081 pop bc dec b jr nz, .asm_70948 ret ; known jump sources: 3ec52 (f:6c52) Func_7096d: ; 7096d (1c:496d) ld a, $1 ld [H_AUTOBGTRANSFERENABLED], a ; $FF00+$ba call Delay3 xor a ld [$FF00+$b0], a dec a ld [$cfcb], a call DelayFrame ld hl, $c102 ld a, [H_DOWNARROWBLINKCNT2] ; $FF00+$8c ld c, a ld b, $0 ld de, $10 .asm_70989 ld a, [hl] cp $ff jr z, .asm_7098f inc b .asm_7098f add hl, de dec c jr nz, .asm_70989 ld hl, $c310 ld c, $9 .asm_70998 ld a, b swap a cp l jr z, .asm_709a9 push hl push bc ld bc, $10 xor a call FillMemory pop bc pop hl .asm_709a9 ld de, $10 add hl, de dec c jr nz, .asm_70998 call Delay3 call Func_70a4d ld bc, $0 ld a, [W_ISLINKBATTLE] ; $d12b cp $4 jr z, .asm_709c9 call Func_709e2 call Func_709ef call Func_70a19 .asm_709c9 ld hl, $49d2 add hl, bc add hl, bc ld a, [hli] ld h, [hl] ld l, a jp [hl] INCBIN "baserom.gbc",$709d2,$709e2 - $709d2 ; known jump sources: 709c0 (1c:49c0) Func_709e2: ; 709e2 (1c:49e2) ld a, [W_CUROPPONENT] ; $d059 cp $c8 jr nc, .asm_709ec res 0, c ret .asm_709ec set 0, c ret ; known jump sources: 709c3 (1c:49c3) Func_709ef: ; 709ef (1c:49ef) ld hl, W_PARTYMON1_HP ; $d16c .asm_709f2 ld a, [hli] or [hl] jr nz, .asm_709fc ld de, $2b add hl, de jr .asm_709f2 .asm_709fc ld de, $1f add hl, de ld a, [hl] add $3 ld e, a ld a, [W_CURENEMYLVL] ; $d127 sub e jr nc, .asm_70a12 res 1, c ld a, $1 ld [$cd47], a ret .asm_70a12 set 1, c xor a ld [$cd47], a ret ; known jump sources: 709c6 (1c:49c6) Func_70a19: ; 70a19 (1c:4a19) ld a, [W_CURMAP] ; $d35e ld e, a ld hl, $4a3f .asm_70a20 ld a, [hli] cp $ff jr z, .asm_70a2b cp e jr nz, .asm_70a20 .asm_70a28 set 2, c ret .asm_70a2b ld hl, $4a44 .asm_70a2e ld a, [hli] cp $ff jr z, .asm_70a3c ld d, a ld a, [hli] cp e jr c, .asm_70a2e ld a, e cp d jr nc, .asm_70a28 .asm_70a3c res 2, c ret INCBIN "baserom.gbc",$70a3f,$70a4d - $70a3f ; known jump sources: 709b3 (1c:49b3) Func_70a4d: ; 70a4d (1c:4a4d) ld hl, $8ff0 ld de, $4a59 ld bc, $1c01 jp CopyVideoData INCBIN "baserom.gbc",$70a59,$70a69 - $70a59 ; known jump sources: 70a9f (1c:4a9f), 70bc2 (1c:4bc2), 70c0a (1c:4c0a), 70ca7 (1c:4ca7), 70cd5 (1c:4cd5), 70d4d (1c:4d4d) Func_70a69: ; 70a69 (1c:4a69) ld a, $ff ld [rBGP], a ; $FF00+$47 ld [rOBP0], a ; $FF00+$48 ld [rOBP1], a ; $FF00+$49 ret ld a, [$cd47] and a jr z, .asm_70a7d call Func_70aaa jr .asm_70a9f .asm_70a7d ld hl, $c472 ld a, $3 ld [$d09f], a ld a, l ld [$d09b], a ld a, h ld [$d09a], a ld b, $78 .asm_70a8f ld c, $3 .asm_70a91 push bc call Func_70af9 pop bc dec c jr nz, .asm_70a91 call DelayFrame dec b jr nz, .asm_70a8f .asm_70a9f call Func_70a69 xor a ld [$d09b], a ld [$d09a], a ret ; known jump sources: 70a78 (1c:4a78) Func_70aaa: ; 70aaa (1c:4aaa) ld a, $7 ld [W_WHICHTRADE], a ; $cd3d ld hl, $c3a0 ld c, $11 ld de, $14 call Func_70ae0 inc c jr .asm_70ac3 .asm_70abd ld de, $14 call Func_70ae0 .asm_70ac3 inc c ld de, $1 call Func_70ae0 dec c dec c ld de, $ffec call Func_70ae0 inc c ld de, rIE ; $ffff call Func_70ae0 dec c dec c ld a, c and a jr nz, .asm_70abd ret ; known jump sources: 70ab7 (1c:4ab7), 70ac0 (1c:4ac0), 70ac7 (1c:4ac7), 70acf (1c:4acf), 70ad6 (1c:4ad6) Func_70ae0: ; 70ae0 (1c:4ae0) push bc .asm_70ae1 ld [hl], $ff add hl, de push bc ld a, [W_WHICHTRADE] ; $cd3d dec a jr nz, .asm_70af0 call Func_70d19 ld a, $7 .asm_70af0 ld [W_WHICHTRADE], a ; $cd3d pop bc dec c jr nz, .asm_70ae1 pop bc ret ; known jump sources: 70a92 (1c:4a92) Func_70af9: ; 70af9 (1c:4af9) ld bc, $ffec ld de, $14 ld a, [$d09b] ld l, a ld a, [$d09a] ld h, a ld a, [$d09f] cp $0 jr z, .asm_70b25 cp $1 jr z, .asm_70b2f cp $2 jr z, .asm_70b39 cp $3 jr z, .asm_70b43 .asm_70b1a ld [hl], $ff .asm_70b1c ld a, l ld [$d09b], a ld a, h ld [$d09a], a ret .asm_70b25 dec hl ld a, [hl] cp $ff jr nz, .asm_70b4d inc hl add hl, bc jr .asm_70b1a .asm_70b2f add hl, de ld a, [hl] cp $ff jr nz, .asm_70b4d add hl, bc dec hl jr .asm_70b1a .asm_70b39 inc hl ld a, [hl] cp $ff jr nz, .asm_70b4d dec hl add hl, de jr .asm_70b1a .asm_70b43 add hl, bc ld a, [hl] cp $ff jr nz, .asm_70b4d add hl, de inc hl jr .asm_70b1a .asm_70b4d ld [hl], $ff ld a, [$d09f] inc a cp $4 jr nz, .asm_70b58 xor a .asm_70b58 ld [$d09f], a jr .asm_70b1c ; known jump sources: 70b6f (1c:4b6f), 70cff (1c:4cff) Func_70b5d: ; 70b5d (1c:4b5d) ld hl, $4b72 .asm_70b60 ld a, [hli] cp $1 jr z, .asm_70b6e ld [rBGP], a ; $FF00+$47 ld c, $2 call DelayFrames jr .asm_70b60 .asm_70b6e dec b jr nz, Func_70b5d ret INCBIN "baserom.gbc",$70b72,$70b7f - $70b72 ld c, $9 .asm_70b81 push bc xor a ld [H_AUTOBGTRANSFERENABLED], a ; $FF00+$ba ld hl, $c42c ld de, $c440 ld bc, $ffd8 call Func_70c12 ld hl, $c468 ld de, $c454 ld bc, $28 call Func_70c12 ld hl, $c3a8 ld de, $c3a9 ld bc, $fffe call Func_70c3f ld hl, $c3ab ld de, $c3aa ld bc, $2 call Func_70c3f ld a, $1 ld [H_AUTOBGTRANSFERENABLED], a ; $FF00+$ba ld c, $6 call DelayFrames pop bc dec c jr nz, .asm_70b81 call Func_70a69 ld c, $a jp DelayFrames ld c, $9 xor a ld [H_AUTOBGTRANSFERENABLED], a ; $FF00+$ba .asm_70bcf push bc ld hl, $c4e0 ld de, $c4f4 ld bc, $ffd8 call Func_70c12 ld hl, $c3b4 ld de, $c3a0 ld bc, $28 call Func_70c12 ld hl, $c3b2 ld de, $c3b3 ld bc, $fffe call Func_70c3f ld hl, $c3a1 ld de, $c3a0 ld bc, $2 call Func_70c3f call Func_70d19 call Delay3 pop bc dec c jr nz, .asm_70bcf call Func_70a69 ld c, $a jp DelayFrames ; known jump sources: 70b8e (1c:4b8e), 70b9a (1c:4b9a), 70bd9 (1c:4bd9), 70be5 (1c:4be5) Func_70c12: ; 70c12 (1c:4c12) ld a, c ld [W_WHICHTRADE], a ; $cd3d ld a, b ld [$cd3e], a ld c, $8 .asm_70c1c push bc push hl push de ld bc, $14 call CopyData pop hl pop de ld a, [W_WHICHTRADE] ; $cd3d ld c, a ld a, [$cd3e] ld b, a add hl, bc pop bc dec c jr nz, .asm_70c1c ld l, e ld h, d ld a, $ff ld c, $14 .asm_70c3a ld [hli], a dec c jr nz, .asm_70c3a ret ; known jump sources: 70ba6 (1c:4ba6), 70bb2 (1c:4bb2), 70bf1 (1c:4bf1), 70bfd (1c:4bfd) Func_70c3f: ; 70c3f (1c:4c3f) ld a, c ld [W_WHICHTRADE], a ; $cd3d ld a, b ld [$cd3e], a ld c, $9 .asm_70c49 push bc push hl push de ld c, $12 .asm_70c4e ld a, [hl] ld [de], a ld a, e add $14 jr nc, .asm_70c56 inc d .asm_70c56 ld e, a ld a, l add $14 jr nc, .asm_70c5d inc h .asm_70c5d ld l, a dec c jr nz, .asm_70c4e pop hl pop de ld a, [W_WHICHTRADE] ; $cd3d ld c, a ld a, [$cd3e] ld b, a add hl, bc pop bc dec c jr nz, .asm_70c49 ld l, e ld h, d ld de, $14 ld c, $12 .asm_70c77 ld [hl], $ff add hl, de dec c jr nz, .asm_70c77 ret ld c, $12 ld hl, $c3a0 ld de, $c4f5 xor a ld [H_AUTOBGTRANSFERENABLED], a ; $FF00+$ba .asm_70c89 push bc push hl push de push de call Func_70caa pop hl call Func_70caa call Func_70d19 pop hl ld bc, $ffec add hl, bc ld e, l ld d, h pop hl ld bc, $14 add hl, bc pop bc dec c jr nz, .asm_70c89 jp Func_70a69 ; known jump sources: 70c8d (1c:4c8d), 70c91 (1c:4c91) Func_70caa: ; 70caa (1c:4caa) ld c, $a .asm_70cac ld [hl], $ff inc hl inc hl dec c jr nz, .asm_70cac ret ld c, $14 ld hl, $c3a0 ld de, $c3c7 xor a ld [H_AUTOBGTRANSFERENABLED], a ; $FF00+$ba .asm_70cbf push bc push hl push de push de call Func_70cd8 pop hl call Func_70cd8 call Func_70d19 pop de pop hl pop bc inc hl dec de dec c jr nz, .asm_70cbf jp Func_70a69 ; known jump sources: 70cc3 (1c:4cc3), 70cc7 (1c:4cc7) Func_70cd8: ; 70cd8 (1c:4cd8) ld c, $9 ld de, $28 .asm_70cdd ld [hl], $ff add hl, de dec c jr nz, .asm_70cdd ret INCBIN "baserom.gbc",$70ce4,$70cfd - $70ce4 ; known jump sources: 70d24 (1c:4d24) Func_70cfd: ; 70cfd (1c:4cfd) ld b, $3 call Func_70b5d xor a ld [H_AUTOBGTRANSFERENABLED], a ; $FF00+$ba ret INCBIN "baserom.gbc",$70d06,$70d19 - $70d06 ; known jump sources: 70aeb (1c:4aeb), 70c00 (1c:4c00), 70c94 (1c:4c94), 70cca (1c:4cca), 70d46 (1c:4d46) Func_70d19: ; 70d19 (1c:4d19) ld a, $1 ld [H_AUTOBGTRANSFERENABLED], a ; $FF00+$ba call Delay3 xor a ld [H_AUTOBGTRANSFERENABLED], a ; $FF00+$ba ret call Func_70cfd ld c, $a ld hl, $4d61 ld de, $4d93 .asm_70d2f push bc push hl push de push de xor a call Func_70d50 pop hl ld a, $1 call Func_70d50 pop hl ld bc, $5 add hl, bc ld e, l ld d, h pop hl add hl, bc call Func_70d19 pop bc dec c jr nz, .asm_70d2f jp Func_70a69 ; known jump sources: 70d34 (1c:4d34), 70d3a (1c:4d3a) Func_70d50: ; 70d50 (1c:4d50) ld [W_WHICHTRADE], a ; $cd3d ld a, [hli] ld [$cd3e], a ld a, [hli] ld e, a ld a, [hli] ld d, a ld a, [hli] ld h, [hl] ld l, a jp .asm_70dc5 INCBIN "baserom.gbc",$70d61,$70dc5 - $70d61 .asm_70dc5 push hl ld a, [de] ld c, a inc de .asm_70dc9 ld [hl], $ff ld a, [$cd3e] and a jr z, .asm_70dd4 inc hl jr .asm_70dd5 .asm_70dd4 dec hl .asm_70dd5 dec c jr nz, .asm_70dc9 pop hl ld a, [W_WHICHTRADE] ; $cd3d and a ld bc, $14 jr z, .asm_70de5 ld bc, $ffec .asm_70de5 add hl, bc ld a, [de] inc de cp $ff ret z and a jr z, .asm_70dc5 ld c, a .asm_70def ld a, [$cd3e] and a jr z, .asm_70df8 dec hl jr .asm_70df9 .asm_70df8 inc hl .asm_70df9 dec c jr nz, .asm_70def jr .asm_70dc5 INCBIN "baserom.gbc",$70dfe,$70e3e - $70dfe ; known jump sources: d974 (3:5974) Func_70e3e: ; 70e3e (1c:4e3e) call Func_7109b ld hl, $cfcb ld a, [hl] push af ld [hl], $ff push hl ld a, $1 ld [$FF00+$b7], a ld a, [W_CURMAP] ; $d35e push af ld b, $0 call Func_711c4 ld hl, $c3a1 ld de, $cd6d call PlaceString ld hl, $c300 ld de, $c508 ld bc, $10 call CopyData ld hl, $8040 ld de, $4f40 ld bc, $1c04 call CopyVideoDataDouble xor a ld [W_WHICHTRADE], a ; $cd3d pop af jr asm_70e92 ; known jump sources: 70efe (1c:4efe), 70f0e (1c:4f0e) Func_70e7e: ; 70e7e (1c:4e7e) ld hl, $c3a0 ld bc, $114 call ClearScreenArea ld hl, $4f11 ld a, [W_WHICHTRADE] ; $cd3d ld c, a ld b, $0 add hl, bc ld a, [hl] asm_70e92: ; 70e92 (1c:4e92) ld de, $cee9 call Func_712f1 ld a, [de] push hl call Func_71258 ld a, $4 ld [$cd5b], a ld hl, $c310 call Func_71279 pop hl ld de, $cd6d .asm_70eac ld a, [hli] ld [de], a inc de cp $50 jr nz, .asm_70eac ld hl, $c3a1 ld de, $cd6d call PlaceString ld hl, $c310 ld de, $c518 ld bc, $10 call CopyData .asm_70ec8 call Func_716c6 call GetJoypadStateLowSensitivity ld a, [$FF00+$b5] ld b, a and $c3 jr z, .asm_70ec8 ld a, $8c call Func_23b1 bit 6, b jr nz, .asm_70ef2 bit 7, b jr nz, .asm_70f01 xor a ld [$d09b], a ld [$FF00+$b7], a ld [W_SUBANIMTRANSFORM], a ; $d08b call Func_711ab pop hl pop af ld [hl], a ret .asm_70ef2 ld a, [W_WHICHTRADE] ; $cd3d inc a cp $2f jr nz, .asm_70efb xor a .asm_70efb ld [W_WHICHTRADE], a ; $cd3d jp Func_70e7e .asm_70f01 ld a, [W_WHICHTRADE] ; $cd3d dec a cp $ff jr nz, .asm_70f0b ld a, $2e .asm_70f0b ld [W_WHICHTRADE], a ; $cd3d jp Func_70e7e INCBIN "baserom.gbc",$70f11,$70f60 - $70f11 ; known jump sources: 4010a (10:410a) Func_70f60: ; 70f60 (1c:4f60) call Func_7109b ld hl, $cfcb ld a, [hl] push af ld [hl], $ff push hl call Func_711ef call GetMonName ld hl, $c3a1 call PlaceString ld h, b ld l, c ld de, $4f89 call PlaceString call Func_3865 call Func_711ab pop hl pop af ld [hl], a ret INCBIN "baserom.gbc",$70f89,$70f90 - $70f89 ; known jump sources: 30b3 (0:30b3) Func_70f90: ; 70f90 (1c:4f90) call CleanLCD_OAM call Func_7109b call LoadPlayerSpriteGraphics call LoadFontTilePatterns ld de, $4d80 ld hl, $8040 ld bc, $50c call CopyVideoData ld de, $5093 ld hl, $8ed0 ld bc, $1c01 call CopyVideoDataDouble call Func_71070 ld hl, $cfcb ld a, [hl] push af ld [hl], $ff push hl ld hl, $c3a0 ld de, $506d call PlaceString ld a, [W_CURMAP] ; $d35e ld b, $0 call Func_711c4 ld hl, $cd3e ld de, $c3b2 ; known jump sources: 7104f (1c:504f), 71055 (1c:5055), 71065 (1c:5065) Func_70fd6: ; 70fd6 (1c:4fd6) ld a, $7f ld [de], a push hl push hl ld hl, $c3a3 ld bc, $10f call ClearScreenArea pop hl ld a, [hl] ld b, $4 call Func_711c4 ld hl, $c3a3 ld de, $cd6d call PlaceString ld c, $f call DelayFrames ld hl, $c3b2 ld [hl], $ed ld hl, $c3b3 ld [hl], $ee pop hl .asm_71004 push hl call DelayFrame call GetJoypadStateLowSensitivity ld a, [$FF00+$b5] ld b, a pop hl and $c3 jr z, .asm_71004 bit 0, b jr nz, .asm_71026 ld a, $8c call Func_23b1 bit 6, b jr nz, .asm_71042 bit 7, b jr nz, .asm_71058 jr .asm_71037 .asm_71026 ld a, $8e call Func_23b1 ld a, [hl] ld [$d71a], a ld hl, $d732 set 3, [hl] inc hl set 7, [hl] .asm_71037 xor a ld [$d09b], a call GBPalWhiteOutWithDelay3 pop hl pop af ld [hl], a ret .asm_71042 ld de, $c3b2 inc hl ld a, [hl] cp $ff jr z, .asm_71052 cp $fe jr z, .asm_71042 jp Func_70fd6 .asm_71052 ld hl, $cd3e jp Func_70fd6 .asm_71058 ld de, $c3b3 dec hl ld a, [hl] cp $ff jr z, .asm_71068 cp $fe jr z, .asm_71058 jp Func_70fd6 .asm_71068 ld hl, $cd49 jr .asm_71058 INCBIN "baserom.gbc",$7106d,$71070 - $7106d ; known jump sources: 70fb4 (1c:4fb4) Func_71070: ; 71070 (1c:5070) ld hl, W_WHICHTRADE ; $cd3d ld [hl], $ff inc hl ld a, [$d70b] ld e, a ld a, [$d70c] ld d, a ld bc, $b .asm_71081 srl d rr e ld a, $fe jr nc, .asm_7108a ld a, b .asm_7108a ld [hl], a inc hl inc b dec c jr nz, .asm_71081 ld [hl], $ff ret INCBIN "baserom.gbc",$71093,$7109b - $71093 ; known jump sources: 70e3e (1c:4e3e), 70f60 (1c:4f60), 70f93 (1c:4f93) Func_7109b: ; 7109b (1c:509b) call GBPalWhiteOutWithDelay3 call ClearScreen call Func_2429 ld hl, $c3a0 ld b, $12 ld c, $12 call TextBoxBorder call DisableLCD ld hl, $65a8 ld de, $9600 ld bc, $100 ld a, $4 call FarCopyData2 ld hl, $56be ld de, $8040 ld bc, $8 ld a, $1c call FarCopyDataDouble ld hl, $c3a0 ld de, $5100 .asm_710d3 ld a, [de] and a jr z, .asm_710e9 ld b, a and $f ld c, a ld a, b swap a and $f add $60 .asm_710e2 ld [hli], a dec c jr nz, .asm_710e2 inc de jr .asm_710d3 .asm_710e9 call EnableLCD ld b, $2 call GoPAL_SET call Delay3 call GBPalNormal xor a ld [W_SUBANIMTRANSFORM], a ; $d08b inc a ld [$d09b], a ret ; 71100 (1c:5100) CompressedMap: ; 5100 ; you can decompress this file with the redrle program in the extras/ dir INCBIN "baserom.gbc",$71100,$711AB-$71100 ; known jump sources: 70eeb (1c:4eeb), 70f82 (1c:4f82) Func_711ab: ; 711ab (1c:51ab) xor a ld [$d09b], a call GBPalWhiteOut call ClearScreen call CleanLCD_OAM call LoadPlayerSpriteGraphics call LoadFontTilePatterns call Func_2429 jp GoPAL_SET_CF1C ; known jump sources: 70e53 (1c:4e53), 70fcd (1c:4fcd), 70fe8 (1c:4fe8), 7123b (1c:523b) Func_711c4: ; 711c4 (1c:51c4) push af ld a, b ld [$cd5b], a pop af ld de, $cee9 call Func_712f1 ld a, [de] push hl call Func_71258 call Func_7126d pop hl ld de, $cd6d .asm_711dc ld a, [hli] ld [de], a inc de cp $50 jr nz, .asm_711dc ld hl, $c300 ld de, $c508 ld bc, $a0 jp CopyData ; known jump sources: 70f6b (1c:4f6b) Func_711ef: ; 711ef (1c:51ef) ld b, BANK(Func_e9cb) ld hl, Func_e9cb call Bankswitch ; indirect jump to Func_e9cb (e9cb (3:69cb)) call Func_712d9 ld hl, $c300 ld de, $cee9 .asm_71200 ld a, [de] cp $ff jr z, .asm_7121d and a jr z, .asm_7121a push hl call Func_712f1 pop hl ld a, [de] cp $19 jr z, .asm_7121a call Func_71258 ld a, $4 ld [hli], a xor a ld [hli], a .asm_7121a inc de jr .asm_71200 .asm_7121d ld a, l and a jr nz, .asm_71236 ld hl, $c42d ld b, $2 ld c, $f call TextBoxBorder ld hl, $c456 ld de, $524a call PlaceString jr .asm_7123e .asm_71236 ld a, [W_CURMAP] ; $d35e ld b, $0 call Func_711c4 .asm_7123e ld hl, $c300 ld de, $c508 ld bc, $a0 jp CopyData INCBIN "baserom.gbc",$7124a,$71258 - $7124a ; known jump sources: 70e9a (1c:4e9a), 711d2 (1c:51d2), 71212 (1c:5212) Func_71258: ; 71258 (1c:5258) push af and $f0 srl a add $18 ld b, a ld [hli], a pop af and $f swap a srl a add $18 ld c, a ld [hli], a ret ; known jump sources: 711d5 (1c:51d5) Func_7126d: ; 7126d (1c:526d) ld a, [$cd5b] and a ld hl, $c390 jr z, Func_71279 ld hl, $c380 ; known jump sources: 70ea5 (1c:4ea5), 71274 (1c:5274) Func_71279: ; 71279 (1c:5279) push hl ld hl, $fcfc add hl, bc ld b, h ld c, l pop hl ; known jump sources: 718da (1c:58da) Func_71281: ; 71281 (1c:5281) ld de, $202 .asm_71284 push de push bc .asm_71286 ld a, b ld [hli], a ld a, c ld [hli], a ld a, [$cd5b] ld [hli], a inc a ld [$cd5b], a xor a ld [hli], a inc d ld a, $8 add c ld c, a dec e jr nz, .asm_71286 pop bc pop de ld a, $8 add b ld b, a dec d jr nz, .asm_71284 ret ; known jump sources: 718d5 (1c:58d5) Func_712a6: ; 712a6 (1c:52a6) xor a ld [$cd5c], a ld de, $202 .asm_712ad push de push bc .asm_712af ld a, b ld [hli], a ld a, c ld [hli], a ld a, [$cd5b] ld [hli], a ld a, [$cd5c] ld [hli], a xor $20 ld [$cd5c], a inc d ld a, $8 add c ld c, a dec e jr nz, .asm_712af pop bc pop de push hl ld hl, $cd5b inc [hl] inc [hl] pop hl ld a, $8 add b ld b, a dec d jr nz, .asm_712ad ret ; known jump sources: 711f7 (1c:51f7) Func_712d9: ; 712d9 (1c:52d9) ld de, $cee9 .asm_712dc ld a, [de] inc de cp $ff ret z ld c, a ld l, e ld h, d .asm_712e4 ld a, [hl] cp $ff jr z, .asm_712dc cp c jr nz, .asm_712ee xor a ld [hl], a .asm_712ee inc hl jr .asm_712e4 ; known jump sources: 70e95 (1c:4e95), 711cd (1c:51cd), 71209 (1c:5209) Func_712f1: ; 712f1 (1c:52f1) cp $25 jr c, .asm_71304 ld bc, $4 ld hl, $5382 .asm_712fb cp [hl] jr c, .asm_71301 add hl, bc jr .asm_712fb .asm_71301 inc hl jr .asm_7130d .asm_71304 ld hl, $5313 ld c, a ld b, $0 add hl, bc add hl, bc add hl, bc .asm_7130d ld a, [hli] ld [de], a ld a, [hli] ld h, [hl] ld l, a ret ; 71313 (1c:5313) 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,$716c6 - $716be ; known jump sources: 70ec8 (1c:4ec8) Func_716c6: ; 716c6 (1c:56c6) ld a, [W_SUBANIMTRANSFORM] ; $d08b inc a cp $19 jr z, .asm_716e1 cp $32 jr nz, .asm_716f1 ld hl, $c508 ld de, $c300 ld bc, $90 call CopyData xor a jr .asm_716f1 .asm_716e1 ld hl, $c300 ld b, $24 ld de, $4 .asm_716e9 ld [hl], $a0 add hl, de dec b jr nz, .asm_716e9 ld a, $19 .asm_716f1 ld [W_SUBANIMTRANSFORM], a ; $d08b jp DelayFrame ; known jump sources: 6608 (1:6608) Func_716f7: ; 716f7 (1c:56f7) xor a ld [W_CURMENUITEMID], a ; $cc26 ld b, a inc a jr asm_7170a ; known jump sources: 3ae5 (0:3ae5) Func_716ff: ; 716ff (1c:56ff) ld hl, $cf1f ld a, [W_CURMENUITEMID] ; $cc26 ld c, a ld b, $0 add hl, bc ld a, [hl] asm_7170a: ; 7170a (1c:570a) ld c, a ld hl, $5769 add hl, bc ld a, [$cf1b] xor $1 add [hl] ld c, a add a ld b, a ld a, [W_SUBANIMTRANSFORM] ; $d08b and a jr z, .asm_7172c cp c jr z, .asm_7173d .asm_71721 inc a cp b jr nz, .asm_71726 xor a .asm_71726 ld [W_SUBANIMTRANSFORM], a ; $d08b jp DelayFrame .asm_7172c push bc ld hl, $cc5b ld de, $c300 ld bc, $60 call CopyData pop bc xor a jr .asm_71721 .asm_7173d push bc ld hl, $c302 ld bc, $10 ld a, [W_CURMENUITEMID] ; $cc26 call AddNTimes ld c, $40 ld a, [hl] cp $4 jr z, .asm_71755 cp $8 jr nz, .asm_71759 .asm_71755 dec hl dec hl ld c, $1 .asm_71759 ld b, $4 ld de, $4 .asm_7175e ld a, [hl] add c ld [hl], a add hl, de dec b jr nz, .asm_7175e pop bc ld a, c jr .asm_71721 INCBIN "baserom.gbc",$71769,$7176c - $71769 ; known jump sources: 65b5 (1:65b5), 41214 (10:5214) Func_7176c: ; 7176c (1c:576c) ld hl, $57c0 ld a, $1c ; known jump sources: 707d1 (1c:47d1) Func_71771: ; 71771 (1c:5771) ld bc, $0 .asm_71774 push af push bc push hl add hl, bc ld a, [hli] ld e, a ld a, [hli] ld d, a ld a, [hli] ld c, a ld a, [hli] ld b, a ld a, [hli] ld h, [hl] ld l, a call CopyVideoData pop hl pop bc ld a, $6 add c ld c, a pop af dec a jr nz, .asm_71774 ret ; known jump sources: 12ce0 (4:6ce0) Func_71791: ; 71791 (1c:5791) call DisableLCD ld hl, $57c0 ld a, $1c ld bc, $0 .asm_7179c push af push bc push hl add hl, bc ld a, [hli] ld e, a ld a, [hli] ld d, a push de ld a, [hli] ld c, a swap c ld b, $0 ld a, [hli] ld e, [hl] inc hl ld d, [hl] pop hl call FarCopyData2 pop hl pop bc ld a, $6 add c ld c, a pop af dec a jr nz, .asm_7179c jp EnableLCD INCBIN "baserom.gbc",$717c0,$71868 - $717c0 ; known jump sources: 12d1d (4:6d1d) Func_71868: ; 71868 (1c:5868) push hl push de push bc ld a, [H_DOWNARROWBLINKCNT2] ; $FF00+$8c ld hl, W_PARTYMON1 ; $d164 ld e, a ld d, $0 add hl, de ld a, [hl] call Func_718e9 ld [$cd5b], a call asm_718c3 pop bc pop de pop hl ret ; known jump sources: 6916 (1:6916), 4150a (10:550a) Func_71882: ; 71882 (1c:5882) xor a ld [H_DOWNARROWBLINKCNT2], a ; $FF00+$8c ld a, [$cd5d] call Func_718e9 ld [$cd5b], a jr asm_718c3 INCBIN "baserom.gbc",$71890,$718c3 - $71890 asm_718c3: ; 718c3 (1c:58c3) push af ld c, $10 ld h, $c3 ld a, [H_DOWNARROWBLINKCNT2] ; $FF00+$8c swap a ld l, a add $10 ld b, a pop af cp $8 jr z, .asm_718da call Func_712a6 jr .asm_718dd .asm_718da call Func_71281 .asm_718dd ld hl, $c300 ld de, $cc5b ld bc, $60 jp CopyData ; known jump sources: 71875 (1c:5875), 71888 (1c:5888) Func_718e9: ; 718e9 (1c:58e9) ld [$d11e], a ld a, $3a call Predef ; indirect jump to IndexToPokedex (41010 (10:5010)) ld a, [$d11e] ld c, a dec a srl a ld hl, $590d ld e, a ld d, $0 add hl, de ld a, [hl] bit 0, c jr nz, .asm_71906 swap a .asm_71906 and $f0 srl a srl a ret ; 7190d (1c:590d) MonOverworldData: dn SPRITE_GRASS, SPRITE_GRASS ;Bulbasaur/Ivysaur dn SPRITE_GRASS, SPRITE_MON ;Venusaur/Charmander dn SPRITE_MON, SPRITE_MON ;Charmeleon/Charizard dn SPRITE_WATER, SPRITE_WATER ;Squirtle/Wartortle dn SPRITE_WATER, SPRITE_BUG ;Blastoise/Caterpie dn SPRITE_BUG, SPRITE_BUG ;Metapod/Butterfree dn SPRITE_BUG, SPRITE_BUG ;Weedle/Kakuna dn SPRITE_BUG, SPRITE_BIRD_M ;Beedrill/Pidgey dn SPRITE_BIRD_M, SPRITE_BIRD_M ;Pidgeotto/Pidgeot dn SPRITE_QUADRUPED, SPRITE_QUADRUPED ;Rattata/Raticate dn SPRITE_BIRD_M, SPRITE_BIRD_M ;Spearow/Fearow dn SPRITE_SNAKE, SPRITE_SNAKE ;Ekans/Arbok dn SPRITE_FAIRY, SPRITE_FAIRY ;Pikachu/Raichu dn SPRITE_MON, SPRITE_MON ;Sandshrew/Sandslash dn SPRITE_MON, SPRITE_MON ;Nidoran?/Nidorina dn SPRITE_MON, SPRITE_MON ;Nidoqueen/Nidoran? dn SPRITE_MON, SPRITE_MON ;Nidorino/Nidoking dn SPRITE_FAIRY, SPRITE_FAIRY ;Clefairy/Clefable dn SPRITE_QUADRUPED, SPRITE_QUADRUPED ;Vulpix/Ninetales dn SPRITE_FAIRY, SPRITE_FAIRY ;Jigglypuff/Wigglytuff dn SPRITE_MON, SPRITE_MON ;Zubat/Golbat dn SPRITE_GRASS, SPRITE_GRASS ;Oddish/Gloom dn SPRITE_GRASS, SPRITE_BUG ;Vileplume/Paras dn SPRITE_BUG, SPRITE_BUG ;Parasect/Venonat dn SPRITE_BUG, SPRITE_MON ;Venomoth/Diglett dn SPRITE_MON, SPRITE_MON ;Dugtrio/Meowth dn SPRITE_MON, SPRITE_MON ;Persian/Psyduck dn SPRITE_MON, SPRITE_MON ;Golduck/Mankey dn SPRITE_MON, SPRITE_QUADRUPED ;Primeape/Growlithe dn SPRITE_QUADRUPED, SPRITE_MON ;Arcanine/Poliwag dn SPRITE_MON, SPRITE_MON ;Poliwhirl/Poliwrath dn SPRITE_MON, SPRITE_MON ;Abra/Kadabra dn SPRITE_MON, SPRITE_MON ;Alakazam/Machop dn SPRITE_MON, SPRITE_MON ;Machoke/Machamp dn SPRITE_GRASS, SPRITE_GRASS ;Bellsprout/Weepinbell dn SPRITE_GRASS, SPRITE_WATER ;Victreebel/Tentacool dn SPRITE_WATER, SPRITE_MON ;Tentacruel/Geodude dn SPRITE_MON, SPRITE_MON ;Graveler/Golem dn SPRITE_QUADRUPED, SPRITE_QUADRUPED ;Ponyta/Rapidash dn SPRITE_QUADRUPED, SPRITE_MON ;Slowpoke/Slowbro dn SPRITE_BALL_M, SPRITE_BALL_M ;Magnemite/Magneton dn SPRITE_BIRD_M, SPRITE_BIRD_M ;Farfetch'd/Doduo dn SPRITE_BIRD_M, SPRITE_WATER ;Dodrio/Seel dn SPRITE_WATER, SPRITE_MON ;Dewgong/Grimer dn SPRITE_MON, SPRITE_HELIX ;Muk/Shellder dn SPRITE_HELIX, SPRITE_MON ;Cloyster/Gastly dn SPRITE_MON, SPRITE_MON ;Haunter/Gengar dn SPRITE_SNAKE, SPRITE_MON ;Onix/Drowzee dn SPRITE_MON, SPRITE_WATER ;Hypno/Krabby dn SPRITE_WATER, SPRITE_BALL_M ;Kingler/Voltorb dn SPRITE_BALL_M, SPRITE_GRASS ;Electrode/Exeggcute dn SPRITE_GRASS, SPRITE_MON ;Exeggutor/Cubone dn SPRITE_MON, SPRITE_MON ;Marowak/Hitmonlee dn SPRITE_MON, SPRITE_MON ;Hitmonchan/Lickitung dn SPRITE_MON, SPRITE_MON ;Koffing/Weezing dn SPRITE_QUADRUPED, SPRITE_MON ;Rhyhorn/Rhydon dn SPRITE_FAIRY, SPRITE_GRASS ;Chansey/Tangela dn SPRITE_MON, SPRITE_WATER ;Kangaskhan/Horsea dn SPRITE_WATER, SPRITE_WATER ;Seadra/Goldeen dn SPRITE_WATER, SPRITE_HELIX ;Seaking/Staryu dn SPRITE_HELIX, SPRITE_MON ;Starmie/Mr.Mime dn SPRITE_BUG, SPRITE_MON ;Scyther/Jynx dn SPRITE_MON, SPRITE_MON ;Electabuzz/Magmar dn SPRITE_BUG, SPRITE_QUADRUPED ;Pinsir/Tauros dn SPRITE_WATER, SPRITE_SNAKE ;Magikarp/Gyarados dn SPRITE_WATER, SPRITE_MON ;Lapras/Ditto dn SPRITE_QUADRUPED, SPRITE_QUADRUPED ;Eevee/Vaporeon dn SPRITE_QUADRUPED, SPRITE_QUADRUPED ;Jolteon/Flareon dn SPRITE_MON, SPRITE_HELIX ;Porygon/Omanyte dn SPRITE_HELIX, SPRITE_HELIX ;Omastar/Kabuto dn SPRITE_HELIX, SPRITE_BIRD_M ;Kabutops/Aerodactyl dn SPRITE_MON, SPRITE_BIRD_M ;Snorlax/Articuno dn SPRITE_BIRD_M, SPRITE_BIRD_M ;Zapdos/Moltres dn SPRITE_SNAKE, SPRITE_SNAKE ;Dratini/Dragonair dn SPRITE_SNAKE, SPRITE_MON ;Dragonite/Mewtwo dn SPRITE_MON, 0 ;Mew/Padding INCBIN "baserom.gbc",$71959,$71AD9-$71959 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 ; known jump sources: 71c13 (1c:5c13), 71c8d (1c:5c8d) Func_71ca2: ; 71ca2 (1c:5ca2) call GBPalWhiteOutWithDelay3 call Func_3dbe call ReloadTilesetTilePatterns call Func_3701 call Delay3 call LoadGBPal ld c, $a call DelayFrames ld b, BANK(LoadWildData) ld hl, LoadWildData jp Bankswitch ; indirect jump to LoadWildData (ceb8 (3:4eb8)) ; known jump sources: 71c57 (1c:5c57) Func_71cc1: ; 71cc1 (1c:5cc1) ld hl, W_WHICHTRADE ; $cd3d ld a, [$cd0f] ld [hli], a ld a, [$cd34] ld [hl], a ld hl, W_PARTYMON1OT ; $d273 ld bc, $b ld a, [W_WHICHPOKEMON] ; $cf92 call AddNTimes ld de, $cd41 ld bc, $b call Func_71d11 ld hl, $5d59 ld de, $cd4e call Func_71d11 ld de, W_GRASSRATE ; $d887 call Func_71d11 ld hl, W_PARTYMON1_OTID ; $d177 ld bc, $2c ld a, [W_WHICHPOKEMON] ; $cf92 call AddNTimes ld de, $cd4c ld bc, $2 call Func_71d11 call GenRandom ld hl, H_RAND1 ; $ffd3 ld de, $cd59 jp CopyData ; known jump sources: 71cde (1c:5cde), 71ce7 (1c:5ce7), 71ced (1c:5ced), 71d02 (1c:5d02) Func_71d11: ; 71d11 (1c:5d11) push hl push bc call CopyData pop bc pop hl ret ; known jump sources: 71c7f (1c:5c7f) Func_71d19: ; 71d19 (1c:5d19) ld hl, W_PARTYMON1NAME ; $d2b5 ld bc, $b call Func_71d4f ld hl, $cd29 ld bc, $b call CopyData ld hl, W_PARTYMON1OT ; $d273 ld bc, $b call Func_71d4f ld hl, $5d59 ld bc, $b call CopyData ld hl, W_PARTYMON1_OTID ; $d177 ld bc, $2c call Func_71d4f ld hl, $cd59 ld bc, $2 jp CopyData ; known jump sources: 71d1f (1c:5d1f), 71d31 (1c:5d31), 71d43 (1c:5d43) Func_71d4f: ; 71d4f (1c:5d4f) ld a, [W_NUMINPARTY] ; $d163 dec a call AddNTimes ld e, l ld d, h ret INCBIN "baserom.gbc",$71d59,$71d88 - $71d59 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 ; known jump sources: 3df6 (0:3df6) Func_71ddf: ; 71ddf (1c:5ddf) call Load16BitRegisters ld a, b cp $ff jr nz, .asm_71dea ld a, [$cf1c] .asm_71dea cp $fc jp z, Func_71fc2 ld l, a ld h, $0 add hl, hl ld de, $5f73 add hl, de ld a, [hli] ld h, [hl] ld l, a ld de, $6156 push de jp [hl] ld hl, $6448 ld de, $61b5 ret ld hl, $6428 ld de, $cf2d ld bc, $10 call CopyData ; 71e12 (1c:5e12) ld a, [W_PLAYERBATTSTATUS3] ld hl, $D014 ; player Pokemon ID call DeterminePaletteID ld b, a ld a, [W_ENEMYBATTSTATUS3] ld hl, $CFD8 ; enemy Pokemon ID call DeterminePaletteID ld c, a ld hl, $cf2e ld a, [$cf1d] add $1f ld [hli], a inc hl ld a, [$cf1e] add $1f ld [hli], a inc hl ld a, b ld [hli], a inc hl ld a, c ld [hl], a ld hl, $cf2d ld de, $61b5 ld a, $1 ld [$cf1c], a ret ld hl, $6458 ld de, $619e ret ld hl, $6428 ld de, $cf2d ld bc, $10 call CopyData ld a, [$cf91] cp $bf jr c, .asm_71e64 ld a, $1 .asm_71e64 call Func_71f9d push af ld hl, $cf2e ld a, [$cf25] add $1f ld [hli], a inc hl pop af ld [hl], a ld hl, $cf2d ld de, $61fa ret ld hl, $6438 ld de, $cf2e ret ld hl, $6468 ld de, $cf2d ld bc, $10 call CopyData ld a, [$cf91] call Func_71f9d ld hl, $cf30 ld [hl], a ld hl, $cf2d ld de, $6222 ret INCBIN "baserom.gbc",$71e9f,$71ea6 - $71e9f ld hl, $6488 ld de, $628e ret ld hl, $64a8 ld de, $619e ret ld hl, $64b8 ld de, $62c1 ret ld hl, $64c8 ld de, $63dd ld a, $8 ld [$cf1c], a ret ld hl, $6428 ld de, $cf2d ld bc, $10 call CopyData ld a, [W_CURMAPTILESET] ; $d367 cp $f jr z, .asm_71f0c cp $11 jr z, .asm_71f10 ld a, [W_CURMAP] ; $d35e cp $25 jr c, .asm_71ef8 cp $e2 jr c, .asm_71ef5 cp $e5 jr c, .asm_71f10 cp $f5 jr z, .asm_71f14 cp $f6 jr z, .asm_71f10 .asm_71ef5 ld a, [$d365] .asm_71ef8 cp $b jr c, .asm_71efe ld a, $ff .asm_71efe inc a ld hl, $cf2e ld [hld], a ld de, $619e ld a, $9 ld [$cf1c], a ret .asm_71f0c ld a, $18 jr .asm_71efe .asm_71f10 ld a, $22 jr .asm_71efe .asm_71f14 xor a jr .asm_71efe push bc ld hl, $6428 ld de, $cf2d ld bc, $10 call CopyData pop bc ld a, c and a ld a, $1e jr nz, .asm_71f31 ld a, [$cf1d] call Func_71f9d .asm_71f31 ld [$cf2e], a ld hl, $cf2d ld de, $619e ret ld hl, $6360 ld de, $cc5b ld bc, $40 call CopyData ld de, $5f8f ld hl, $cc5d ld a, [W_OBTAINEDBADGES] ; $d356 ld c, $8 .asm_71f52 srl a push af jr c, .asm_71f62 push bc ld a, [de] ld c, a xor a .asm_71f5b ld [hli], a dec c jr nz, .asm_71f5b pop bc jr .asm_71f67 .asm_71f62 ld a, [de] .asm_71f63 inc hl dec a jr nz, .asm_71f63 .asm_71f67 pop af inc de dec c jr nz, .asm_71f52 ld hl, $6498 ld de, $cc5b ret INCBIN "baserom.gbc",$71f73,$71f97 - $71f73 DeterminePaletteID: bit 3, a ; bit 3 of battle status 3 (unused?) ld a, PAL_GREYMON ret nz ld a, [hl] Func_71f9d: ld [$D11E], a and a jr z, .idZero push bc ld a, $3A call Predef ; turn Pokemon ID number into Pokedex number pop bc ld a, [$D11E] .idZero ld e, a ld d, $00 ld hl, MonsterPalettes ; not just for Pokemon, Trainers use it too add hl, de ld a, [hl] ret ; known jump sources: 12cf3 (4:6cf3) Func_71fb6: ; 71fb6 (1c:5fb6) ld hl, $62f4 ld de, $cf2e ld bc, $30 jp CopyData ; known jump sources: 71dec (1c:5dec) Func_71fc2: ; 71fc2 (1c:5fc2) ld hl, $cf1f ld a, [$cf2d] ld e, a ld d, $0 add hl, de ld e, l ld d, h ld a, [de] and a ld e, $5 jr z, .asm_71fdb dec a ld e, $a jr z, .asm_71fdb ld e, $f .asm_71fdb push de ld hl, $cf37 ld bc, $6 ld a, [$cf2d] call AddNTimes pop de ld [hl], e ret ; 71feb (1c:5feb) SendSGBPacket: ;$5feb ;check number of packets ld a,[hl] and a,$07 ret z ; store number of packets in B ld b,a .loop2\@ ; save B for later use push bc ; load a non-zero value in $fff9 to disable the routine that checks actual ; joypad input (said routine, located at $15f, does nothing if $fff9 is not ; zero) ld a,$01 ld [$fff9],a ; send RESET signal (P14=LOW, P15=LOW) xor a ld [$ff00],a ; set P14=HIGH, P15=HIGH ld a,$30 ld [$ff00],a ;load length of packets (16 bytes) ld b,$10 .nextByte\@ ;set bit counter (8 bits per byte) ld e,$08 ; get next byte in the packet ld a,[hli] ld d,a .nextBit0\@ bit 0,d ; if 0th bit is not zero set P14=HIGH,P15=LOW (send bit 1) ld a,$10 jr nz,.next0\@ ; else (if 0th bit is zero) set P14=LOW,P15=HIGH (send bit 0) ld a,$20 .next0\@ ld [$ff00],a ; must set P14=HIGH,P15=HIGH between each "pulse" ld a,$30 ld [$ff00],a ; rotation will put next bit in 0th position (so we can always use command ; "bit 0,d" to fetch the bit that has to be sent) rr d ; decrease bit counter so we know when we have sent all 8 bits of current byte dec e jr nz,.nextBit0\@ dec b jr nz,.nextByte\@ ; send bit 1 as a "stop bit" (end of parameter data) ld a,$20 ld [$ff00],a ; set P14=HIGH,P15=HIGH ld a,$30 ld [$ff00],a xor a ld [$fff9],a ; wait for about 70000 cycles call Wait7000 ; restore (previously pushed) number of packets pop bc dec b ; return if there are no more packets ret z ; else send 16 more bytes jr .loop2\@ ; known jump sources: 1fd6 (0:1fd6) Func_7202b: ; 7202b (1c:602b) xor a ld [$cf1b], a call Func_7209b ret nc ld a, $1 ld [$cf1b], a ld a, [$cf1a] and a jr z, .asm_7203f ret .asm_7203f di call Func_72075 ei ld a, $1 ld [$cf2d], a ld de, $6508 ld hl, $6fe8 call Func_7210b xor a ld [$cf2d], a ld de, $6518 ld hl, $6788 call Func_7210b xor a ld [$cf2d], a ld de, $64d8 ld hl, $6660 call Func_7210b call ZeroVram ld hl, $6538 jp SendSGBPacket ; known jump sources: 72040 (1c:6040) Func_72075: ; 72075 (1c:6075) ld hl, $6089 ld c, $9 .asm_7207a push bc ld a, [hli] push hl ld h, [hl] ld l, a call SendSGBPacket pop hl inc hl pop bc dec c jr nz, .asm_7207a ret INCBIN "baserom.gbc",$72089,$7209b - $72089 ; known jump sources: 7202f (1c:602f) Func_7209b: ; 7209b (1c:609b) ld hl, $64f8 di call SendSGBPacket ld a, $1 ld [$FF00+$f9], a ei call Wait7000 ld a, [rJOYP] ; $FF00+$0 and $3 cp $3 jr nz, .asm_720fd ld a, $20 ld [rJOYP], a ; $FF00+$0 ld a, [rJOYP] ; $FF00+$0 ld a, [rJOYP] ; $FF00+$0 call Wait7000 call Wait7000 ld a, $30 ld [rJOYP], a ; $FF00+$0 call Wait7000 call Wait7000 ld a, $10 ld [rJOYP], a ; $FF00+$0 ld a, [rJOYP] ; $FF00+$0 ld a, [rJOYP] ; $FF00+$0 ld a, [rJOYP] ; $FF00+$0 ld a, [rJOYP] ; $FF00+$0 ld a, [rJOYP] ; $FF00+$0 ld a, [rJOYP] ; $FF00+$0 call Wait7000 call Wait7000 ld a, $30 ld [rJOYP], a ; $FF00+$0 ld a, [rJOYP] ; $FF00+$0 ld a, [rJOYP] ; $FF00+$0 ld a, [rJOYP] ; $FF00+$0 call Wait7000 call Wait7000 ld a, [rJOYP] ; $FF00+$0 and $3 cp $3 jr nz, .asm_720fd call Func_72102 and a ret .asm_720fd call Func_72102 scf ret ; known jump sources: 720f8 (1c:60f8), 720fd (1c:60fd) Func_72102: ; 72102 (1c:6102) ld hl, $64e8 call SendSGBPacket jp Wait7000 ; known jump sources: 7204f (1c:604f), 7205c (1c:605c), 72069 (1c:6069) Func_7210b: ; 7210b (1c:610b) di push de call DisableLCD ld a, $e4 ld [rBGP], a ; $FF00+$47 ld de, $8800 ld a, [$cf2d] and a jr z, .asm_72122 call Func_72188 jr .asm_72128 .asm_72122 ld bc, $1000 call CopyData .asm_72128 ld hl, $9800 ld de, $c ld a, $80 ld c, $d .asm_72132 ld b, $14 .asm_72134 ld [hli], a inc a dec b jr nz, .asm_72134 add hl, de dec c jr nz, .asm_72132 ld a, $e3 ld [rLCDC], a ; $FF00+$40 pop hl call SendSGBPacket xor a ld [rBGP], a ; $FF00+$47 ei ret ; 7214a (1c:614a) Wait7000: ;$614a ; each loop takes about 10 cycles so this routine actually loops through 70000 ; cycles. ld de,$1b58 ; = 7000 .loop\@ nop nop nop dec de ld a,d or e jr nz,.loop\@ ret ld a, [$cf1a] and a jr z, .asm_72165 push de call Func_7216d pop hl call Func_72187 ret .asm_72165 push de call SendSGBPacket pop hl jp SendSGBPacket ; known jump sources: 7215d (1c:615d) Func_7216d: ; 7216d (1c:616d) ld a, $80 ld [$FF00+$68], a inc hl ld c, $20 .asm_72174 ld a, [hli] inc hl add a add a add a ld de, $6660 add e jr nc, .asm_72180 inc d .asm_72180 ld a, [de] ld [$FF00+$69], a dec c jr nz, .asm_72174 ret ; known jump sources: 72161 (1c:6161) Func_72187: ; 72187 (1c:6187) ret ; known jump sources: 7211d (1c:611d) Func_72188: ; 72188 (1c:6188) ld b, $80 .asm_7218a ld c, $10 .asm_7218c ld a, [hli] ld [de], a inc de dec c jr nz, .asm_7218c ld c, $10 xor a .asm_72195 ld [de], a inc de dec c jr nz, .asm_72195 dec b jr nz, .asm_7218a ret INCBIN "baserom.gbc",$7219e,$725c8 - $7219e 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 ; PAL_TOWNMAP 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 ; known jump sources: 4a9 (0:4a9), 5b04 (1:5b04) Func_735e8: ; 735e8 (1c:75e8) call ClearScreen call LoadFontTilePatterns call LoadTextBoxTilePatterns call Func_73623 jr c, .asm_73604 call Func_73690 jr c, .asm_73604 call Func_736bd jr c, .asm_73604 ld a, $2 jr .asm_7361a .asm_73604 ld hl, $d730 push hl set 6, [hl] ld hl, $761e call PrintText ld c, $64 call DelayFrames pop hl res 6, [hl] ld a, $1 .asm_7361a ld [$d088], a ret ; 7361e (1c:761e) UnnamedText_7361e: ; 0x7361e TX_FAR _UnnamedText_7361e db $50 ; 0x7361e + 5 bytes ; known jump sources: 735f1 (1c:75f1) Func_73623: ; 73623 (1c:7623) ld a, $a ld [$0], a ld a, $1 ld [$6000], a ld [$4000], a ld hl, $a598 ld bc, $f8b call Func_73856 ld c, a ld a, [$b523] cp c jp z, Func_73652 ld hl, $a598 ld bc, $f8b call Func_73856 ld c, a ld a, [$b523] cp c jp nz, Func_736f7 ; known jump sources: 7363e (1c:763e) Func_73652: ; 73652 (1c:7652) ld hl, $a598 ld de, W_PLAYERNAME ; $d158 ld bc, $b call CopyData ld hl, $a5a3 ld de, W_OWNEDPOKEMON ; $d2f7 ld bc, $789 call CopyData ld hl, W_CURMAPTILESET ; $d367 set 7, [hl] ld hl, $ad2c ld de, $c100 ld bc, $200 call CopyData ld a, [$b522] ld [$FF00+$d7], a ld hl, $b0c0 ld de, W_NUMINBOX ; $da80 ld bc, $462 call CopyData and a jp Func_736f8 ; known jump sources: 735f6 (1c:75f6) Func_73690: ; 73690 (1c:7690) ld a, $a ld [$0], a ld a, $1 ld [$6000], a ld [$4000], a ld hl, $a598 ld bc, $f8b call Func_73856 ld c, a ld a, [$b523] cp c jr nz, Func_736f7 ld hl, $b0c0 ld de, W_NUMINBOX ; $da80 ld bc, $462 call CopyData and a jp Func_736f8 ; known jump sources: 735fb (1c:75fb) Func_736bd: ; 736bd (1c:76bd) ld a, $a ld [$0], a ld a, $1 ld [$6000], a ld [$4000], a ld hl, $a598 ld bc, $f8b call Func_73856 ld c, a ld a, [$b523] cp c jp nz, Func_736f7 ld hl, $af2c ld de, W_NUMINPARTY ; $d163 ld bc, $194 call CopyData ld hl, $a5a3 ld de, W_OWNEDPOKEMON ; $d2f7 ld bc, $26 call CopyData and a jp Func_736f8 ; known jump sources: 7364f (1c:764f), 736ab (1c:76ab), 736d8 (1c:76d8) Func_736f7: ; 736f7 (1c:76f7) scf ; known jump sources: 7368d (1c:768d), 736ba (1c:76ba), 736f4 (1c:76f4) Func_736f8: ; 736f8 (1c:76f8) ld a, $0 ld [$6000], a ld [$0], a ret INCBIN "baserom.gbc",$73701,$7377d - $73701 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 ; known jump sources: 7384d (1c:784d) Func_7378c: ; 7378c (1c:778c) ld a, $a ld [$0], a ld a, $1 ld [$6000], a ld [$4000], a ld hl, W_PLAYERNAME ; $d158 ld de, $a598 ld bc, $b call CopyData ld hl, W_OWNEDPOKEMON ; $d2f7 ld de, $a5a3 ld bc, $789 call CopyData ld hl, $c100 ld de, $ad2c ld bc, $200 call CopyData ld hl, W_NUMINBOX ; $da80 ld de, $b0c0 ld bc, $462 call CopyData ld a, [$FF00+$d7] ld [$b522], a ld hl, $a598 ld bc, $f8b call Func_73856 ld [$b523], a xor a ld [$6000], a ld [$0], a ret ; known jump sources: 73850 (1c:7850) Func_737e2: ; 737e2 (1c:77e2) ld a, $a ld [$0], a ld a, $1 ld [$6000], a ld [$4000], a ld hl, W_NUMINBOX ; $da80 ld de, $b0c0 ld bc, $462 call CopyData ld hl, $a598 ld bc, $f8b call Func_73856 ld [$b523], a xor a ld [$6000], a ld [$0], a ret ; known jump sources: 73853 (1c:7853) Func_7380f: ; 7380f (1c:780f) ld a, $a ld [$0], a ld a, $1 ld [$6000], a ld [$4000], a ld hl, W_NUMINPARTY ; $d163 ld de, $af2c ld bc, $194 call CopyData ld hl, W_OWNEDPOKEMON ; $d2f7 ld de, $a5a3 ld bc, $26 call CopyData ld hl, $a598 ld bc, $f8b call Func_73856 ld [$b523], a xor a ld [$6000], a ld [$0], a ret ; known jump sources: 7245 (1:7245), 5a4fa (16:64fa), 738f7 (1c:78f7) Func_73848: ; 73848 (1c:7848) ld a, $2 ld [$d088], a call Func_7378c call Func_737e2 jp Func_7380f ; known jump sources: 73636 (1c:7636), 73647 (1c:7647), 736a3 (1c:76a3), 736d0 (1c:76d0), 737d4 (1c:77d4), 73801 (1c:7801), 7383a (1c:783a), 73870 (1c:7870), 7392e (1c:792e), 73a75 (1c:7a75) Func_73856: ; 73856 (1c:7856) ld d, $0 .asm_73858 ld a, [hli] add d ld d, a dec bc ld a, b or c jr nz, .asm_73858 ld a, d cpl ret ; known jump sources: 73934 (1c:7934), 73a7b (1c:7a7b) Func_73863: ; 73863 (1c:7863) ld hl, $a000 ld de, $ba4d ld b, $6 .asm_7386b push bc push de ld bc, $462 call Func_73856 pop de ld [de], a inc de pop bc dec b jr nz, .asm_7386b ret ; known jump sources: 738cd (1c:78cd), 738e0 (1c:78e0) Func_7387b: ; 7387b (1c:787b) ld hl, $7895 ld a, [$d5a0] and $7f cp $6 ld b, $2 jr c, .asm_7388c inc b sub $6 .asm_7388c ld e, a ld d, $0 add hl, de add hl, de ld a, [hli] ld h, [hl] ld l, a ret INCBIN "baserom.gbc",$73895,$738a1 - $73895 ; known jump sources: 216b8 (8:56b8) Func_738a1: ; 738a1 (1c:78a1) ld hl, $7909 call PrintText call Func_35ec ld a, [W_CURMENUITEMID] ; $cc26 and a ret nz ld hl, $d5a0 bit 7, [hl] call z, Func_73a29 call Func_7393f call Func_2429 ld hl, $fff6 set 1, [hl] call HandleMenuInput ld hl, $fff6 res 1, [hl] bit 1, a ret nz call Func_7387b ld e, l ld d, h ld hl, W_NUMINBOX ; $da80 call Func_7390e ld a, [W_CURMENUITEMID] ; $cc26 set 7, a ld [$d5a0], a call Func_7387b ld de, W_NUMINBOX ; $da80 call Func_7390e ld hl, W_MAPTEXTPTR ; $d36c ld de, W_WHICHTRADE ; $cd3d ld a, [hli] ld [de], a inc de ld a, [hl] ld [de], a call Func_3f05 call Func_73848 ld hl, W_WHICHTRADE ; $cd3d call Func_3f0f ld a, $b6 call Func_3740 call Func_3748 ret ; 73909 (1c:7909) UnnamedText_73909: ; 0x73909 TX_FAR _UnnamedText_73909 db $50 ; 0x73909 + 5 bytes ; known jump sources: 738d5 (1c:78d5), 738e6 (1c:78e6) Func_7390e: ; 7390e (1c:790e) push hl ld a, $a ld [$0], a ld a, $1 ld [$6000], a ld a, b ld [$4000], a ld bc, $462 call CopyData pop hl xor a ld [hli], a dec a ld [hl], a ld hl, $a000 ld bc, $1a4c call Func_73856 ld [$ba4c], a call Func_73863 xor a ld [$6000], a ld [$0], a ret ; known jump sources: 738b7 (1c:78b7) Func_7393f: ; 7393f (1c:793f) xor a ld [H_AUTOBGTRANSFERENABLED], a ; $FF00+$ba ld a, $3 ld [W_MENUWATCHEDKEYS], a ; $cc29 ld a, $b ld [W_MAXMENUITEMID], a ; $cc28 ld a, $1 ld [W_TOPMENUITEMY], a ; $cc24 ld a, $c ld [W_TOPMENUITEMX], a ; $cc25 xor a ld [$cc37], a ld a, [$d5a0] and $7f ld [W_CURMENUITEMID], a ; $cc26 ld [W_OLDMENUITEMID], a ; $cc2a ld hl, $c3a0 ld b, $2 ld c, $9 call TextBoxBorder ld hl, $79d4 call PrintText ld hl, $c3ab ld b, $c ld c, $7 call TextBoxBorder ld hl, $fff6 set 2, [hl] ld de, $79d9 ld hl, $c3c1 call PlaceString ld hl, $fff6 res 2, [hl] ld a, [$d5a0] and $7f cp $9 jr c, .asm_739a6 sub $9 ld hl, $c3d0 ld [hl], $f7 add $f6 jr .asm_739a8 .asm_739a6 add $f7 .asm_739a8 ld [$c3d1], a ld hl, $c3c9 ld de, $7a21 call PlaceString call Func_73a84 ld hl, $c3c6 ld de, W_WHICHTRADE ; $cd3d ld bc, $14 ld a, $c .asm_739c2 push af ld a, [de] and a jr z, .asm_739c9 ld [hl], $78 .asm_739c9 add hl, bc inc de pop af dec a jr nz, .asm_739c2 ld a, $1 ld [H_AUTOBGTRANSFERENABLED], a ; $FF00+$ba ret ; 739d4 (1c:79d4) UnnamedText_739d4: ; 0x739d4 TX_FAR _UnnamedText_739d4 db $50 ; 0x739d4 + 5 bytes INCBIN "baserom.gbc",$739d9,$73a29 - $739d9 ; known jump sources: 738b4 (1c:78b4) Func_73a29: ; 73a29 (1c:7a29) ld a, $a ld [$0], a ld a, $1 ld [$6000], a ld a, $2 ld [$4000], a call Func_73a4b ld a, $3 ld [$4000], a call Func_73a4b xor a ld [$6000], a ld [$0], a ret ; known jump sources: 73a38 (1c:7a38), 73a40 (1c:7a40) Func_73a4b: ; 73a4b (1c:7a4b) ld hl, $a000 call Func_73a7f ld hl, $a462 call Func_73a7f ld hl, $a8c4 call Func_73a7f ld hl, $ad26 call Func_73a7f ld hl, $b188 call Func_73a7f ld hl, $b5ea call Func_73a7f ld hl, $a000 ld bc, $1a4c call Func_73856 ld [$ba4c], a call Func_73863 ret ; known jump sources: 73a4e (1c:7a4e), 73a54 (1c:7a54), 73a5a (1c:7a5a), 73a60 (1c:7a60), 73a66 (1c:7a66), 73a6c (1c:7a6c) Func_73a7f: ; 73a7f (1c:7a7f) xor a ld [hli], a dec a ld [hl], a ret ; known jump sources: 739b4 (1c:79b4) Func_73a84: ; 73a84 (1c:7a84) ld hl, W_WHICHTRADE ; $cd3d push hl ld a, $a ld [$0], a ld a, $1 ld [$6000], a ld a, $2 ld [$4000], a call Func_73ab8 ld a, $3 ld [$4000], a call Func_73ab8 xor a ld [$6000], a ld [$0], a pop hl ld a, [$d5a0] and $7f ld c, a ld b, $0 add hl, bc ld a, [W_NUMINBOX] ; $da80 ld [hl], a ret ; known jump sources: 73a97 (1c:7a97), 73a9f (1c:7a9f) Func_73ab8: ; 73ab8 (1c:7ab8) ld a, [$a000] ld [hli], a ld a, [$a462] ld [hli], a ld a, [$a8c4] ld [hli], a ld a, [$ad26] ld [hli], a ld a, [$b188] ld [hli], a ld a, [$b5ea] ld [hli], a ret INCBIN "baserom.gbc",$73ad1,$73b0d - $73ad1 ; known jump sources: 7024e (1c:424e) Func_73b0d: ; 73b0d (1c:7b0d) ld a, [$d5a2] dec a cp $32 jr nc, .asm_73b28 ld hl, $a598 ld bc, $60 call AddNTimes ld e, l ld d, h ld hl, $cc5b ld bc, $60 jr asm_73b51 .asm_73b28 ld hl, $a5f8 ld de, $a598 ld bc, $1260 call asm_73b51 ld hl, $cc5b ld de, $b7f8 ld bc, $60 jr asm_73b51 ; known jump sources: 765be (1d:65be) Func_73b3f: ; 73b3f (1c:7b3f) ld hl, $a598 ld bc, $60 ld a, [W_WHICHTRADE] ; $cd3d call AddNTimes ld de, $cc5b ld bc, $60 asm_73b51: ; 73b51 (1c:7b51) ld a, $a ld [$0], a ld a, $1 ld [$6000], a xor a ld [$4000], a call CopyData xor a ld [$6000], a ld [$0], a ret ; known jump sources: 1c9bb (7:49bb) Func_73b6a: ; 73b6a (1c:7b6a) ld a, $a ld [$0], a ld a, $1 ld [$6000], a xor a call Func_73b8f ld a, $1 call Func_73b8f ld a, $2 call Func_73b8f ld a, $3 call Func_73b8f xor a ld [$6000], a ld [$0], a ret ; known jump sources: 73b75 (1c:7b75), 73b7a (1c:7b7a), 73b7f (1c:7b7f), 73b84 (1c:7b84) Func_73b8f: ; 73b8f (1c:7b8f) ld [$4000], a ld hl, $a000 ld bc, $2000 ld a, $ff jp FillMemory ; 73b9d (1c:7b9d) 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" ; known jump sources: 5a4c8 (16:64c8) Func_7405c: ; 7405c (1d:405c) ld b, BANK(Func_701a0) ld hl, Func_701a0 call Bankswitch ; indirect jump to Func_701a0 (701a0 (1c:41a0)) call ClearScreen ld c, $64 call DelayFrames call DisableLCD ld hl, $8800 ld bc, $400 call Func_74171 ld hl, $9600 ld bc, $100 call Func_74171 ld hl, $97e0 ld bc, $10 ld a, $ff call FillMemory ld hl, $c3a0 call Func_7417b ld hl, $c4b8 call Func_7417b ld a, $c0 ld [rBGP], a ; $FF00+$47 call EnableLCD ld a, $ff call Func_3740 ld c, $1f ld a, $c7 call Func_23a1 ld c, $80 call DelayFrames xor a ld [W_WHICHTRADE], a ; $cd3d ld [$cd3e], a jp Func_7418e ; known jump sources: 741d5 (1d:41d5), 741e6 (1d:41e6), 74226 (1d:4226) Func_740ba: ; 740ba (1d:40ba) ld hl, $4160 ld b, $4 .asm_740bf ld a, [hli] ld [rBGP], a ; $FF00+$47 ld c, $5 call DelayFrames dec b jr nz, .asm_740bf ret ; 740cb (1d:40cb) Func40CB: ; 40CB xor a ld [H_AUTOBGTRANSFERENABLED],a call $3719 call Unknown_74183 ; 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 Unknown_74164 xor a ld [H_AUTOBGTRANSFERENABLED],a call $3725 ld hl,$9800 call Unknown_74164 ld a,$A7 ld [$FF4B],a ld hl,$9C00 call Unknown_74164 call Unknown_74183 ld a,$FC ld [$FF47],a ld bc,7 .next call Unknown_74140 dec c jr nz,.next ld c,$14 .next2 call Unknown_74140 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 Unknown_74140: ld h, b ld l, $20 call Func_74152 ld h, $0 ld l, $70 call Func_74152 ld a, b add $8 ld b, a ret ; known jump sources: 74143 (1d:4143), 7414a (1d:414a), 74155 (1d:4155) Func_74152: ; 74152 (1d:4152) ld a, [$FF00+$44] cp l jr nz, Func_74152 ld a, h ld [rSCX], a ; $FF00+$43 .asm_7415a ld a, [$FF00+$44] cp h jr z, .asm_7415a ret INCBIN "baserom.gbc",$74160,$74164 - $74160 Unknown_74164: ld a, l ld [H_AUTOBGTRANSFERDEST], a ; $FF00+$bc ld a, h ld [$FF00+$bd], a ld a, $1 ld [H_AUTOBGTRANSFERENABLED], a ; $FF00+$ba jp Delay3 ; known jump sources: 74075 (1d:4075), 7407e (1d:407e), 74178 (1d:4178) Func_74171: ; 74171 (1d:4171) ld [hl], $0 inc hl inc hl dec bc ld a, b or c jr nz, Func_74171 ret ; known jump sources: 7408f (1d:408f), 74095 (1d:4095) Func_7417b: ; 7417b (1d:417b) ld bc, $50 ld a, $7e jp FillMemory ; 74183 (1d:4183) Unknown_74183: ld hl, $c3f0 ld bc, $c8 ld a, $7f jp FillMemory ; known jump sources: 740b7 (1d:40b7) Func_7418e: ; 7418e (1d:418e) ld de, $4243 push de .asm_74192 pop de ld hl, $c421 push hl call Unknown_74183 pop hl .asm_7419b ld a, [de] inc de push de cp $ff jr z, .asm_741d5 cp $fe jr z, .asm_741dc cp $fd jr z, .asm_741e6 cp $fc jr z, .asm_741ed cp $fb jr z, .asm_741f4 cp $fa jr z, .asm_74201 push hl push hl ld hl, $42c3 add a ld c, a ld b, $0 add hl, bc ld e, [hl] inc hl ld d, [hl] ld a, [de] inc de ld c, a ld b, $ff pop hl add hl, bc call PlaceString pop hl ld bc, $28 add hl, bc pop de jr .asm_7419b .asm_741d5 call Func_740ba ld c, $5a jr .asm_741de .asm_741dc ld c, $6e .asm_741de call DelayFrames call Func40CB jr .asm_74192 .asm_741e6 call Func_740ba ld c, $78 jr .asm_741ef .asm_741ed ld c, $8c .asm_741ef call DelayFrames jr .asm_74192 .asm_741f4 push de ld b, BANK(Func_4541) ld hl, Func_4541 call Bankswitch ; indirect jump to Func_4541 (4541 (1:4541)) pop de pop de jr .asm_7419b .asm_74201 ld c, $10 call DelayFrames call Unknown_74183 pop de ld de, $473e ld hl, $9600 ld bc, $1d0a call CopyVideoData ld hl, $c444 ld de, $4229 call PlaceString ld hl, $c458 inc de call PlaceString jp Func_740ba INCBIN "baserom.gbc",$74229,$742c3 - $74229 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" Unknown_747de: ld a, [de] bit 3, a jr nz, .asm_747fb bit 4, a jr nz, .asm_74804 bit 5, a jr nz, .asm_7480d bit 6, a jr nz, .asm_74816 and $7 ret z ld a, $92 ld [hli], a ld a, $8b ld [hli], a ld [hl], $8f ret .asm_747fb ld a, $8f ld [hli], a ld a, $92 ld [hli], a ld [hl], $8d ret .asm_74804 ld a, $81 ld [hli], a ld a, $91 ld [hli], a ld [hl], $8d ret .asm_7480d ld a, $85 ld [hli], a ld a, $91 ld [hli], a ld [hl], $99 ret .asm_74816 ld a, $8f ld [hli], a ld a, $80 ld [hli], a ld [hl], $91 ret ; 7481f (1d:481f) Unknown_7481f: INCBIN "baserom.gbc",$7481f,$74872 - $7481f Unnamed_ASM_74872: ; 0x74872 ; code similar to this appears in a lot of banks; this particular ; one is called after you beat the Rocket that gives you TM28 DIG. ; the screen then fades out, he disappears, and fades back in call GBFadeIn1 ld a, $07 ld [$CC4D], a ld a, $15 call Predef ld a, $09 ld [$CC4D], a ld a, $11 call Predef ld a, $06 ld [$CC4D], a ld a, $11 call Predef call GBFadeOut1 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 EnableAutoTextBoxDrawing ld hl, ViridianGymTrainerHeaders ld de, Unknown_748e1 ld a, [$d5fb] call $3160 ld [$d5fb], a ret ; 0x748bf Gym8CityName: db "VIRIDIAN CITY@" Gym8LeaderName: db "GIOVANNI@" ; known jump sources: 7498d (1d:498d), 749e9 (1d:49e9) Func_748d6: ; 748d6 (1d:48d6) xor a ld [$cd6b], a ld [$d5fb], a ld [$da39], a ret ; 748e1 (1d:48e1) Unknown_748e1: INCBIN "baserom.gbc",$748e1,$748eb - $748e1 ld a, [W_YCOORD] ; $d361 ld b, a ld a, [W_XCOORD] ; $d362 ld c, a ld hl, $4916 call Func_3442 cp $ff jp z, Func_3219 call Func_3486 ld hl, $d736 set 7, [hl] ld a, $a7 call Func_23b1 ld a, $ff ld [$cd6b], a ld a, $4 ld [$da39], a ret INCBIN "baserom.gbc",$74916,$7496b - $74916 ld a, [$cd38] and a jr nz, .asm_74980 xor a ld [$cd6b], a ld hl, $d736 res 7, [hl] ld a, $0 ld [$da39], a ret .asm_74980 ld b, BANK(Func_44fd7) ld hl, Func_44fd7 jp Bankswitch ; indirect jump to Func_44fd7 (44fd7 (11:4fd7)) ld a, [W_ISINBATTLE] ; $d057 cp $ff jp z, Func_748d6 ld a, $f0 ld [$cd6b], a ; 74995 (1d:4995) Unknown_74995: ld a, $c ld [H_DOWNARROWBLINKCNT2], a ; $FF00+$8c call DisplayTextID ld hl, $d751 set 1, [hl] ld bc, $e301 call GiveItem jr nc, .asm_749b7 ld a, $d ld [H_DOWNARROWBLINKCNT2], a ; $FF00+$8c call DisplayTextID ld hl, $d751 set 0, [hl] jr .asm_749be .asm_749b7 ld a, $e ld [H_DOWNARROWBLINKCNT2], a ; $FF00+$8c call DisplayTextID .asm_749be ld hl, W_OBTAINEDBADGES ; $d356 set 7, [hl] ld hl, $d72a set 7, [hl] ld a, [$d751] or $fc ld [$d751], a ld a, [$d752] or $3 ld [$d752], a ld a, $23 ld [$cc4d], a ld a, $15 call Predef ; indirect jump to Func_f1c8 (f1c8 (3:71c8)) ld hl, $d7eb set 1, [hl] set 7, [hl] jp Func_748d6 ; 749ec (1d:49ec) ViridianGymTexts: ; 0x749ec dw ViridianGymText1, ViridianGymText2, ViridianGymText3, ViridianGymText4, ViridianGymText5, ViridianGymText6, ViridianGymText7, ViridianGymText8, ViridianGymText9, ViridianGymText10, Predef5CText, 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, Unknown_74995 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 EnableAutoTextBoxDrawing 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 EnableAutoTextBoxDrawing ; 0x74d0f UnknownDungeon1Texts: ; 0x74d0f dw Predef5CText, Predef5CText, Predef5CText 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, Unknown_74e86 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 Unknown_74e86: 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: ld hl, $4f99 call PrintText ld a, $13 ld [$d125], a call DisplayTextBoxID xor a ld [W_CURMENUITEMID], a ; $cc26 ld [W_OLDMENUITEMID], a ; $cc2a ld a, $3 ld [W_MENUWATCHEDKEYS], a ; $cc29 ld a, $3 ld [W_MAXMENUITEMID], a ; $cc28 ld a, $5 ld [W_TOPMENUITEMY], a ; $cc24 ld a, $1 ld [W_TOPMENUITEMX], a ; $cc25 ld hl, $d730 set 6, [hl] ld hl, $c3dc ld b, $8 ld c, $c call TextBoxBorder call Func_2429 ld hl, $c406 ld de, $4f9e call PlaceString ld hl, $c421 ld de, $4fc3 call PlaceString ld hl, $d730 res 6, [hl] call HandleMenuInput bit 1, a jr nz, .asm_74f93 ld a, [W_CURMENUITEMID] ; $cc26 cp $3 jr z, .asm_74f93 xor a ld [$FF00+$9f], a ld [$FF00+$a1], a ld a, $2 ld [$FF00+$a0], a call Func_35a6 jr nc, .asm_74f54 ld hl, $4fd3 jp PrintText .asm_74f54 call Unknown_74fe7 ld a, [$FF00+$db] ld b, a ld c, $1 call GiveItem jr nc, .asm_74f8d ld b, $3c .asm_74f63 ld c, $2 call DelayFrames push bc ld a, $a8 call Func_23b1 pop bc dec b jr nz, .asm_74f63 ld hl, $4fd8 call PrintText ld hl, $ffde ld de, W_PLAYERMONEY1 ; $d349 ld c, $3 ld a, $c call Predef ; indirect jump to Func_f836 (f836 (3:7836)) ld a, $13 ld [$d125], a jp DisplayTextBoxID .asm_74f8d ld hl, $4fdd jp PrintText .asm_74f93 ld hl, $4fe2 jp PrintText ; 74f99 (1d:4f99) 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 "¥200",$4E db "¥300",$4E db "¥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 EnableAutoTextBoxDrawing 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 EnableAutoTextBoxDrawing ; 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 EnableAutoTextBoxDrawing ; 0x750b8 FuchsiaHouse2Texts: ; 0x750b8 dw FuchsiaHouse2Text1, Predef5CText, BoulderText, 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 EnableAutoTextBoxDrawing ld hl, SafariZoneEntranceScripts ld a, [$d61f] jp $3d97 ; 0x751d9 SafariZoneEntranceScripts: ; 0x751d9 dw SafariZoneEntranceScript0, SafariZoneEntranceScript1, SafariZoneEntranceScript2, SafariZoneEntranceScript3, SafariZoneEntranceScript4, SafariZoneEntranceScript5, SafariZoneEntranceScript6 SafariZoneEntranceScript0: ; 0x751e7 ld hl, Unknown_75221 call ArePlayerCoordsInArray 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 Unknown_752a3 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 Unknown_752b4 ret nz SafariZoneEntranceScript2: ; 0x7522a xor a ld [$ff00+$b4], a ld [$cd6b], a call $2429 ld a, $4 ld [$ff00+$8c], a call DisplayTextID ld a, $ff ld [$cd6b], a ret ; 0x75240 SafariZoneEntranceScript3: ; 0x75240 call Unknown_752b4 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 DisplayTextID xor a ld [$da47], a ld a, $80 ld c, $3 call Unknown_752a3 ld a, $4 ld [$d61f], a jr .asm_75286 ; 0x7527d $7 .asm_7527f ld a, $5 ld [$ff00+$8c], a call DisplayTextID .asm_75286 ret ; 0x75287 SafariZoneEntranceScript4: ; 0x75287 call Unknown_752b4 ret nz xor a ld [$cd6b], a ld a, $0 ld [$d61f], a ret ; 0x75295 SafariZoneEntranceScript6: ; 0x75295 call Unknown_752b4 ret nz call Delay3 ld a, [$cf0d] ld [$d61f], a ret ; 0x752a3 Unknown_752a3: ; 0x752a3 push af ld b, $0 ld a, c ld [$cd38], a ld hl, $ccd3 pop af call FillMemory jp Func_3486 ; 752b4 (1d:52b4) Unknown_752b4: ld a, [$cd38] and a ret ; 752b9 (1d:52b9) 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 ;Unknown_75346 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 Unknown_752a3 ld hl, $d790 set 7, [hl] res 6, [hl] ld a, $3 ld [$d61f], a jr .asm_75358 ; 0x75344 $12 ;Unknown_75346: ld hl, UnnamedText_75365 call PrintText .asm_7534c ld a, $80 ld c, $1 call Unknown_752a3 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 Unknown_752a3 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 Unknown_752a3 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 EnableAutoTextBoxDrawing ld hl, FuchsiaGymTrainerHeaders ld de, Unknown_75482 ld a, [$d65b] call $3160 ld [$d65b], a ret ; 0x75453 FuchsiaGymScript_Unknown75453: ; 0x75453 ld hl, $D126 bit 6, [hl] res 6, [hl] ret z ld hl, Gym5CityName ld de, Gym5LeaderName call $317F ret Gym5CityName: ; 0x75465 db "FUCHSIA CITY@" Gym5LeaderName: ; 0x75472 db "KOGA@" ; known jump sources: 7548f (1d:548f), 754d2 (1d:54d2) Func_75477: ; 75477 (1d:5477) xor a ld [$cd6b], a ld [$d65b], a ld [$da39], a ret ; 75482 (1d:5482) Unknown_75482: INCBIN "baserom.gbc",$75482,$7548a - $75482 ld a, [W_ISINBATTLE] ; $d057 cp $ff jp z, Func_75477 ld a, $f0 ld [$cd6b], a ; 75497 (1d:5497) Unknown_75497: ld a, $9 ld [H_DOWNARROWBLINKCNT2], a ; $FF00+$8c call DisplayTextID ld hl, $d792 set 1, [hl] ld bc, $ce01 call GiveItem jr nc, .asm_754b9 ld a, $a ld [H_DOWNARROWBLINKCNT2], a ; $FF00+$8c call DisplayTextID ld hl, $d792 set 0, [hl] jr .asm_754c0 .asm_754b9 ld a, $b ld [H_DOWNARROWBLINKCNT2], a ; $FF00+$8c call DisplayTextID .asm_754c0 ld hl, W_OBTAINEDBADGES ; $d356 set 4, [hl] ld hl, $d72a set 4, [hl] ld a, [$d792] or $fc ld [$d792], a jp Func_75477 ; 754d5 (1d:54d5) 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, Unknown_75497 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 EnableAutoTextBoxDrawing 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 EnableAutoTextBoxDrawing ld hl, CinnabarGymScripts ld a, [$d65e] jp $3d97 ; 0x75759 CinnabarGymScript_Unknown75759: ; 0x75759 ld hl, $D126 bit 6, [hl] res 6, [hl] push hl call nz, CinnabarGymScript_Unknown75772 pop hl bit 5, [hl] res 5, [hl] call nz, $3EAD ld hl, $D79B res 7, [hl] ret CinnabarGymScript_Unknown75772: ; 0x75772 ld hl, Gym7CityName ld de, Gym7LeaderName jp $317F Gym7CityName: ; 0x7577B db "CINNABAR ISLAND@" Gym7LeaderName: ; 0x7578b db "BLAINE@" Unknown_75792: xor a ld [$cd6b], a ld [$d65e], a ld [$da39], a ld [$da38], a ret ; 757a0 (1d:57a0) Unknown_757a0: ld a, [H_DOWNARROWBLINKCNT2] ; $FF00+$8c ld [$cc55], a ret ; 757a6 (1d:57a6) 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, Unknown_757d7 jr .asm_757cb ; 0x757c1 $8 .asm_757c3 ld de, Unknown_757da ld a, $1 ld [$d528], a .asm_757cb call MoveSprite ld a, $1 ld [$d65e], a ld [$da39], a ret ; 0x757d7 Unknown_757d7: INCBIN "baserom.gbc",$757d7,$757da - $757d7 Unknown_757da: INCBIN "baserom.gbc",$757da,$757dc - $757da 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 DisplayTextID ; 0x757f1 Unknown_757f1: ld a, $10 jp Predef ; indirect jump to Func_f666 (f666 (3:7666)) ; 757f6 (1d:57f6) CinnabarGymScript2: ; 0x757f6 ld a, [$d057] cp $ff jp z, Unknown_75792 ld a, [$cc55] ld [$ff00+$db], a ld c, a ld b, $2 ld hl, $d79a call Unknown_757f1 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 Unknown_757f1 ld a, [$cc55] sub $2 ld c, a ld b, $1 ld hl, $d79c call Unknown_757f1 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, Unknown_75792 ld a, $f0 ld [$cd6b], a Unknown_75857: ld a, $a ld [$ff00+$8c], a call DisplayTextID 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 DisplayTextID ld hl, $d79a set 0, [hl] jr .asm_75880 ; 0x75877 $7 .asm_75879 ld a, $c ld [$ff00+$8c], a call DisplayTextID .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 Unknown_75792 ; 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,$758b7 - $758b1 Unknown_758b7: ld a, [H_DOWNARROWBLINKCNT2] ; $FF00+$8c ld [$cf13], a call Func_336a call Func_32d7 ld hl, $d72d set 6, [hl] set 7, [hl] ld a, [$cf13] cp $1 jr z, .asm_758d4 ld a, $2 jr .asm_758d6 .asm_758d4 ld a, $3 .asm_758d6 ld [$d65e], a ld [$da39], a jp TextScriptEnd ; 758df (1d:58df) 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, Unknown_75857 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 Unknown_758b7 ; 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 Unknown_757a0 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 Unknown_758b7 .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 Unknown_757a0 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 Unknown_758b7 .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 Unknown_757a0 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 Unknown_758b7 .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 Unknown_757a0 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 Unknown_758b7 .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 Unknown_757a0 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 Unknown_758b7 .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 Unknown_757a0 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 Unknown_758b7 .asm_2f755 ; 0x75a5f ld hl, UnnamedText_75a72 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 Unknown_757a0 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 Unknown_758b7 .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 EnableAutoTextBoxDrawing 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 EnableAutoTextBoxDrawing ; 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 EnableAutoTextBoxDrawing ; 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 EnableAutoTextBoxDrawing ; 0x75d34 Lab4Texts: ; 0x75d34 dw Lab4Text1, Lab4Text2 Unknown_75d38: xor a ld [$cd37], a ld de, $cc5b ld hl, $5d68 .asm_75d42 ld a, [hli] and a jr z, .asm_75d64 push hl push de ld [$d11e], a ld b, a ld a, $1c call Predef ; indirect jump to Func_f8a5 (f8a5 (3:78a5)) pop de pop hl ld a, b and a jr z, .asm_75d42 ld a, [$d11e] ld [de], a inc de push hl ld hl, $cd37 inc [hl] pop hl jr .asm_75d42 .asm_75d64 ld a, $ff ld [de], a ret INCBIN "baserom.gbc",$75d68,$75d6c - $75d68 Lab4Text1: ; 0x75d6c db $8 ld a, [$d7a3] bit 0, a jr nz, .asm_75d96 ; 0x75d72 $22 ld hl, UnnamedText_75dc6 call PrintText call Unknown_75d38 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 Unknown_75de8 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 Unknown_75de8 ; 0x75de8 ; XXX todo ;db $6, $18, $21, $eb, $50 ;db $c3, $d6, $35 ld b, $18 ld hl, $50eb jp Bankswitch ; 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 EnableAutoTextBoxDrawing ; 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 EnableAutoTextBoxDrawing ; 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 EnableAutoTextBoxDrawing ; 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, CHANSEY 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 EnableAutoTextBoxDrawing ld hl, GaryScripts ld a, [$d64c] jp $3d97 Function75f29: ; 0x75f29 xor a ld [$cd6b], a ld [$d64c], a ret GaryScripts: ; 0x75f31 dw GaryScript0 dw GaryScript1 dw GaryScript2 dw GaryScript3 dw GaryScript4 dw GaryScript5 dw GaryScript6 dw GaryScript7 dw GaryScript8 dw GaryScript9 dw GaryScript10 ; 60b9 GaryScript0: ; 0x75f47 ret ; 0x75f48 GaryScript1: ; 0x75f48 ld a, $ff ld [$cd6b], a ld hl, $ccd3 ld de, RLEMovement75f63 call $350c dec a ld [$cd38], a call $3486 ld a, $2 ld [$d64c], a ret RLEMovement75f63: ; 0x75f63 db $40,1 db $10,1 db $40,3 db $ff 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 DisplayTextID 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 GaryScript3: ; 0x75fbb ld a, [W_ISINBATTLE] cp $ff jp z, Function75f29 call $2429 ; move sprites ld hl, $d867 set 1, [hl] ld a, $f0 ld [$cd6b], a ld a, $1 ld [$ff00+$8c], a call Function760c8 ld a, $1 ld [$ff00+$8c], a call Function3541 ld a, $4 ld [$d64c], a ret GaryScript4: ; 0x75fe4 ld b, $2 ld hl, $5b81 call Bankswitch ld a, $2 ld [$ff00+$8c], a call Function760c8 ld a, $2 ld [$ff00+$8c], a call Function3541 ld de, Movement76014 ld a, $2 ld [$ff00+$8c], a call $363a ld a, $d6 ld [$cc4d], a ld a, $15 call Predef ld a, $5 ld [$d64c], a ret Movement76014: ; 0x76014 db $40,$40,$40,$40,$40,$ff GaryScript5: ; 0x7601a ld a, [$d730] bit 0, a ret nz ld a, $2 ld [$d528], a ld a, $1 ld [$ff00+$8c], a ld a, $8 ld [$ff00+$8d], a call $34a6 ld a, $2 ld [$ff00+$8c], a xor a ld [$ff00+$8d], a call $34a6 ; face object ld a, $3 ld [$ff00+$8c], a call Function760c8 ld a, $6 ld [$d64c], a ret GaryScript6: ; 0x76047 ld a, $2 ld [$ff00+$8c], a ld a, $c ld [$ff00+$8d], a call $34a6 ; face object ld a, $4 ld [$ff00+$8c], a call Function760c8 ld a, $7 ld [$d64c], a ret GaryScript7: ; 0x7605f ld a, $2 ld [$ff00+$8c], a xor a ld [$ff00+$8d], a call $34a6 ; face object ld a, $5 ld [$ff00+$8c], a call Function760c8 ld de, Movement76080 ld a, $2 ld [$ff00+$8c], a call MoveSprite ld a, $8 ld [$d64c], a ret Movement76080: ; 0x76080 db $40,$40,$ff GaryScript8: ; 0x76083 ld a, [$d730] bit 0, a ret nz ld a, $d6 ld [$cc4d], a ld a, $11 call Predef ld a, $9 ld [$d64c], a ret GaryScript9: ; 0x76099 ld a, $ff ld [$cd6b], a ld hl, $ccd3 ld de, RLEMovement760b4 call $350c dec a ld [$cd38], a call $3486 ld a, $a ld [$d64c], a ret RLEMovement760b4; 0x760b4 db $40,4 db $20,1 db $ff GaryScript10: ; 0x760b9 ld a, [$cd38] and a ret nz xor a ld [$cd6b], a ld a, $0 ld [$d64c], a ret Function760c8; 0x760c8 ld a, $f0 ld [$cd6b], a call DisplayTextID ld a, $ff ld [$cd6b], a ret 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 EnableAutoTextBoxDrawing ld hl, LoreleiTrainerHeaders ld de, Unknown_761bb ld a, [$d64d] call $3160 ld [$d64d], a ret ; 0x76191 LoreleiScript_Unknown76191: ; 0x76191 ld hl, $d126 bit 5, [hl] res 5, [hl] ret z ld hl, $d734 set 1, [hl] ld a, [$d863] bit 1, a jr z, .asm_761a9 ld a, $5 jr .asm_761ab .asm_761a9 ld a, $24 .asm_761ab ld [$d09f], a ld bc, $2 ld a, $17 jp Predef ; indirect jump to Func_ee9e (ee9e (3:6e9e)) ; known jump sources: 76247 (1d:6247) Func_761b6: ; 761b6 (1d:61b6) xor a ld [$d64d], a ret ; 761bb (1d:61bb) Unknown_761bb: INCBIN "baserom.gbc",$761bb,$761c6 - $761bb .asm_761c6 ld hl, $ccd3 ld a, $40 ld [hli], a ld [hli], a ld [hli], a ld [hli], a ld [hli], a ld [hl], a ld a, $6 ld [$cd38], a call Func_3486 ld a, $3 ld [$d64d], a ld [$da39], a ret ld hl, $6223 call ArePlayerCoordsInArray jp nc, Func_3219 xor a ld [$FF00+$b3], a ld [$FF00+$b4], a ld [$ccd3], a ld [$cd38], a ld a, [W_WHICHTRADE] ; $cd3d cp $3 jr c, .asm_76206 ld hl, $d863 bit 6, [hl] set 6, [hl] jr z, .asm_761c6 .asm_76206 ld a, $2 ld [H_DOWNARROWBLINKCNT2], a ; $FF00+$8c call DisplayTextID ld a, $40 ld [$ccd3], a ld a, $1 ld [$cd38], a call Func_3486 ld a, $3 ld [$d64d], a ld [$da39], a ret INCBIN "baserom.gbc",$76223,$7622c - $76223 ld a, [$cd38] and a ret nz call Delay3 xor a ld [$cd6b], a ld [$d64d], a ld [$da39], a ret call Func_3275 ld a, [W_ISINBATTLE] ; $d057 cp $ff jp z, Func_761b6 ld a, $1 ld [H_DOWNARROWBLINKCNT2], a ; $FF00+$8c jp DisplayTextID ; 76251 (1d:6251) 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 EnableAutoTextBoxDrawing ld hl, BrunoTrainerHeaders ld de, Unknown_76312 ld a, [$d64e] call $3160 ld [$d64e], a ret ; 0x762ec BrunoScript_Unknown762ec: ; 0x762ec ld hl, $d126 bit 5, [hl] res 5, [hl] ret z ld a, [$d864] bit 1, a jr z, .asm_76300 ld a, $5 jp Func_76302 .asm_76300 ld a, $24 ; known jump sources: 762fd (1d:62fd) Func_76302: ; 76302 (1d:6302) ld [$d09f], a ld bc, $2 ld a, $17 jp Predef ; indirect jump to Func_ee9e (ee9e (3:6e9e)) ; known jump sources: 7639e (1d:639e) Func_7630d: ; 7630d (1d:630d) xor a ld [$d64e], a ret ; 76312 (1d:6312) Unknown_76312: INCBIN "baserom.gbc",$76312,$7631d - $76312 .asm_7631d ld hl, $ccd3 ld a, $40 ld [hli], a ld [hli], a ld [hli], a ld [hli], a ld [hli], a ld [hl], a ld a, $6 ld [$cd38], a call Func_3486 ld a, $3 ld [$d64e], a ld [$da39], a ret ld hl, $637a call ArePlayerCoordsInArray jp nc, Func_3219 xor a ld [$FF00+$b3], a ld [$FF00+$b4], a ld [$ccd3], a ld [$cd38], a ld a, [W_WHICHTRADE] ; $cd3d cp $3 jr c, .asm_7635d ld hl, $d864 bit 6, [hl] set 6, [hl] jr z, .asm_7631d .asm_7635d ld a, $2 ld [H_DOWNARROWBLINKCNT2], a ; $FF00+$8c call DisplayTextID ld a, $40 ld [$ccd3], a ld a, $1 ld [$cd38], a call Func_3486 ld a, $3 ld [$d64e], a ld [$da39], a ret INCBIN "baserom.gbc",$7637a,$76383 - $7637a ld a, [$cd38] and a ret nz call Delay3 xor a ld [$cd6b], a ld [$d64e], a ld [$da39], a ret call Func_3275 ld a, [W_ISINBATTLE] ; $d057 cp $ff jp z, Func_7630d ld a, $1 ld [H_DOWNARROWBLINKCNT2], a ; $FF00+$8c jp DisplayTextID ; 763a8 (1d:63a8) 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 EnableAutoTextBoxDrawing ld hl, AgathaTrainerHeaders ld de, Unknown_76469 ld a, [$d64f] call $3160 ld [$d64f], a ret ; 0x76443 AgathaScript_Unknown76443: ; 0x76443 ld hl, $d126 bit 5, [hl] res 5, [hl] ret z ld a, [$d865] bit 1, a jr z, .asm_76457 ld a, $e jp Func_76459 .asm_76457 ld a, $3b ; known jump sources: 76454 (1d:6454) Func_76459: ; 76459 (1d:6459) ld [$d09f], a ld bc, $2 ld a, $17 jp Predef ; indirect jump to Func_ee9e (ee9e (3:6e9e)) ; known jump sources: 764f5 (1d:64f5) Func_76464: ; 76464 (1d:6464) xor a ld [$d64f], a ret ; 76469 (1d:6469) Unknown_76469: INCBIN "baserom.gbc",$76469,$76474 - $76469 .asm_76474 ld hl, $ccd3 ld a, $40 ld [hli], a ld [hli], a ld [hli], a ld [hli], a ld [hli], a ld [hl], a ld a, $6 ld [$cd38], a call Func_3486 ld a, $3 ld [$d64f], a ld [$da39], a ret ld hl, $64d1 call ArePlayerCoordsInArray jp nc, Func_3219 xor a ld [$FF00+$b3], a ld [$FF00+$b4], a ld [$ccd3], a ld [$cd38], a ld a, [W_WHICHTRADE] ; $cd3d cp $3 jr c, .asm_764b4 ld hl, $d865 bit 6, [hl] set 6, [hl] jr z, .asm_76474 .asm_764b4 ld a, $2 ld [H_DOWNARROWBLINKCNT2], a ; $FF00+$8c call DisplayTextID ld a, $40 ld [$ccd3], a ld a, $1 ld [$cd38], a call Func_3486 ld a, $3 ld [$d64f], a ld [$da39], a ret INCBIN "baserom.gbc",$764d1,$764da - $764d1 ld a, [$cd38] and a ret nz call Delay3 xor a ld [$cd6b], a ld [$d64f], a ld [$da39], a ret call Func_3275 ld a, [W_ISINBATTLE] ; $d057 cp $ff jp z, Func_76464 ld a, $1 ld [H_DOWNARROWBLINKCNT2], a ; $FF00+$8c call DisplayTextID ld a, $1 ld [$d64c], a ret ; 76505 (1d:6505) 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" Unknown_7657e: ; XXX: make better (has to do with the hall of fame on the PC) ; 0x7657e ld hl, UnnamedText_76683 call PrintText ld hl, $D730 set 6, [hl] push hl ld a, [$CFCB] push af ld a, [$FF00+$D7] push af xor a ld [$FF00+$D7], a ld [$D0AA], a ld [$CFCB], a ld [$CD41], a ld [$CD42], a ld a, [$D5A2] ld b, a cp a, $33 jr c, .first ld b, $32 sub b ld [$CD42], a .first ld hl, $CD42 inc [hl] push bc ld a, [$CD41] ld [$CD3D], a ld b, $1C ld hl, $7B3F call Bankswitch call Unknown_765e5 pop bc jr c, .second ld hl, $CD41 inc [hl] ld a, [hl] cp b jr nz, .first .second pop af ld [$FF00+$D7], a pop af ld [$CFCB], a pop hl res 6, [hl] call GBPalWhiteOutWithDelay3 call ClearScreen call GoPAL_SET_CF1C jp GBPalNormal Unknown_765e5: ; 0x765e5 ld c, 6 .third push bc call Unknown_76610 call $3865 ld a, [$FF00+$B4] bit 1, a jr nz, .fifth ld hl, $CC6B ld de, $CC5B ld bc, $0050 call CopyData pop bc ld a, [$CC5B] cp a, $FF jr z, .fourth dec c jr nz, .third .fourth and a ret .fifth pop bc scf ret Unknown_76610: ; 0x76610 call GBPalWhiteOutWithDelay3 call ClearScreen ld hl, $CC5B ld a, [hli] ld [$CD3D], a ld [$CF91], a ld [$D0B5], a ld [$CFD9], a ld [$CF1D], a ld a, [hli] ld [$CD3F], a ld de, $CD6D ld bc, $000B call CopyData ld b, $0B ld c, 0 call GoPAL_SET ld hl, $C410 call GetBaseStats call $1389 call GBPalNormal ld hl, $C4A4 ld b, 2 ld c, $12 call TextBoxBorder ld hl, $C4CD ld de, HallOfFameNoText call PlaceString ld hl, $C4DC ld de, $CD42 ld bc, $0103 call PrintNumber ld b, $1C ld hl, $42F0 jp Bankswitch HallOfFameNoText: ; 0x76670 db "HALL OF FAME No @" UnnamedText_76683: ; 0x76683 TX_FAR _UnnamedText_76683 db $50 ; 0x76683 + 5 bytes HiddenItems: ; 0x76688 ld hl, HiddenItemCoords call Label76857 ld [$cd41], a ld hl, $d6f0 ld a, [$cd41] ld c, a ld b, $2 ld a, $10 call Predef ld a, c and a ret nz call EnableAutoTextBoxDrawing ld a, $1 ld [$cc3c], a ld a, [$cd3d] ; item ID ld [$d11e], a call GetItemName ld a, $24 jp $3ef5 HiddenItemCoords: ; 0x766b8 ; map ID, then coords db VIRIDIAN_FOREST,$12,$01 db VIRIDIAN_FOREST,$2a,$10 db MT_MOON_3,$0c,$12 db ROUTE_25,$03,$26 db ROUTE_9,$07,$0e db SS_ANNE_6,$09,$0d db SS_ANNE_10,$01,$03 db ROUTE_10,$11,$09 db ROUTE_10,$35,$10 db ROCKET_HIDEOUT_1,$0f,$15 db ROCKET_HIDEOUT_3,$11,$1b db ROCKET_HIDEOUT_4,$01,$19 db POKEMONTOWER_5,$0c,$04 db ROUTE_13,$0e,$01 db ROUTE_13,$0d,$10 db MANSION_4,$09,$01 db SAFARIZONEENTRANCE,$01,$0a db SAFARI_ZONE_WEST,$05,$06 db SILPH_CO_5F,$03,$0c db SILPH_CO_9F,$0f,$02 db COPYCATS_HOUSE_2F,$01,$01 db UNKNOWN_DUNGEON_1,$0b,$0e db UNKNOWN_DUNGEON_3,$03,$1b db POWER_PLANT,$10,$11 db POWER_PLANT,$01,$0c db SEAFOAM_ISLANDS_3,$0f,$0f db SEAFOAM_ISLANDS_5,$11,$19 db MANSION_1,$10,$08 db MANSION_3,$09,$01 db ROUTE_23,$2c,$09 db ROUTE_23,$46,$13 db ROUTE_23,$5a,$08 db VICTORY_ROAD_2,$02,$05 db VICTORY_ROAD_2,$07,$1a db $6f,$0b,$0e db VIRIDIAN_CITY,$04,$0e db ROUTE_11,$05,$30 db ROUTE_12,$3f,$02 db ROUTE_17,$0e,$0f db ROUTE_17,$2d,$08 db ROUTE_17,$48,$11 db ROUTE_17,$5b,$04 db ROUTE_17,$79,$08 db UNDERGROUND_PATH_NS,$04,$03 db UNDERGROUND_PATH_NS,$22,$04 db UNDERGROUND_PATH_WE,$02,$0c db UNDERGROUND_PATH_WE,$05,$15 db CELADON_CITY,$0f,$30 db ROUTE_25,$01,$0a db MT_MOON_3,$09,$21 db SEAFOAM_ISLANDS_4,$10,$09 db VERMILION_CITY,$0b,$0e db CERULEAN_CITY,$08,$0f db ROUTE_4,$03,$28 db $ff FoundHiddenItemText: ; 0x7675b ; XXX where is the pointer to this? TX_FAR UnnamedText_894d0 db $8 ld a, [$cd3d] ; item ID ld b, a ld c, 1 ; quantity call GiveItem jr nc, .bagfull ; 0x76769 $19 ld hl, $d6f0 ld a, [$cd41] ld c, a ld b, $1 ld a, $10 call Predef ld a, $89 call $3740 ; play sound call $3748 ; wait for sound to finish playing jp TextScriptEnd .bagfull call $3865 ; wait for button press xor a ld [$cc3c], a ld hl, HiddenItemBagFullText call PrintText jp TextScriptEnd HiddenItemBagFullText: ; 0x76794 TX_FAR _UnnamedText_76794 db $50 HiddenCoins: ; 0x76799 ld b, COIN_CASE ld a, $1c call Predef ld a, b and a ret z ld hl, HiddenCoinCoords call Label76857 ld [$cd41], a ld hl, $d6fe ld a, [$cd41] ld c, a ld b, $2 ld a, $10 call Predef ld a, c and a ret nz xor a ld [$ff00+$9f], a ld [$ff00+$a0], a ld [$ff00+$a1], a ld a, [$cd3d] sub COIN cp 10 jr z, .bcd10 cp 20 jr z, .bcd20 cp 40 jr z, .bcd20 jr .bcd100 .bcd10 ld a, $10 ld [$ff00+$a1], a jr .bcddone .bcd20 ld a, $20 ld [$ff00+$a1], a jr .bcddone .bcd40 ; due to a typo, this is never used ld a, $40 ld [$ff00+$a1], a jr .bcddone .bcd100 ld a, $1 ld [$ff00+$a0], a .bcddone ld de, $d5a5 ld hl, $ffa1 ld c, $2 ld a, $b call Predef ld hl, $d6fe ld a, [$cd41] ld c, a ld b, $1 ld a, $10 call Predef call EnableAutoTextBoxDrawing ld a, [W_PLAYERCOINS1] cp $99 jr nz, .RoomInCoinCase ld a, [W_PLAYERCOINS2] cp $99 jr nz, .RoomInCoinCase ld a, $2c jr .done .RoomInCoinCase ld a, $2b .done jp $3ef5 HiddenCoinCoords: ; 0x76822 db GAME_CORNER,$08,$00 db GAME_CORNER,$10,$01 db GAME_CORNER,$0b,$03 db GAME_CORNER,$0e,$03 db GAME_CORNER,$0c,$04 db GAME_CORNER,$0c,$09 db GAME_CORNER,$0f,$09 db GAME_CORNER,$0e,$10 db GAME_CORNER,$10,$0a db GAME_CORNER,$07,$0b db GAME_CORNER,$08,$0f db GAME_CORNER,$0f,$0c db $ff FoundHiddenCoinsText: ; 0x76847 TX_FAR _FoundHiddenCoinsText db $10,"@" DroppedHiddenCoinsText: ; 0x7684d TX_FAR _FoundHiddenCoins2Text db $10 TX_FAR _DroppedHiddenCoinsText db $50 Label76857: ; 0x76857 ld a, [$cd40] ld d, a ld a, [$cd41] ld e, a ld a, [W_CURMAP] ld b, a ld c, $ff .loop inc c ld a, [hli] cp $ff ; end of the list? ret z ; if so, we're done here cp b jr nz, .asm_76877 ; 0x7686b $a ld a, [hli] cp d jr nz, .asm_76878 ; 0x7686f $7 ld a, [hli] cp e jr nz, .loop ld a, c ret .asm_76877 inc hl .asm_76878 inc hl jr .loop 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 call Func_79e6a ld b, $8 jp Func_79209 call Func_79e6a ld b, $8 jp Func_79210 ld bc, $602 jr .asm_78e01 call Func_79e6a jp Func_79369 call Func_79e6a ld b, $2 jp Func_79210 ld bc, $302 .asm_78e01 push bc push bc .asm_78e03 ld a, [rWX] ; $FF00+$4b inc a ld [rWX], a ; $FF00+$4b ld c, $2 call DelayFrames dec b jr nz, .asm_78e03 pop bc .asm_78e11 ld a, [rWX] ; $FF00+$4b dec a ld [rWX], a ; $FF00+$4b ld c, $2 call DelayFrames dec b jr nz, .asm_78e11 pop bc dec c jr nz, .asm_78e01 ret ; known jump sources: 78d65 (1e:4d65) Func_78e23: ; 78e23 (1e:4e23) ld a, [$cf1b] and a ld a, $e4 jr z, .asm_78e47 ld a, $f0 ld [$cc79], a ld b, $e4 ld a, [W_ANIMATIONID] ; $d07c cp $aa jr c, .asm_78e3f cp $ae jr nc, .asm_78e3f ld b, $f0 .asm_78e3f ld a, b ld [rOBP0], a ; $FF00+$48 ld a, $6c ld [rOBP1], a ; $FF00+$49 ret .asm_78e47 ld a, $e4 ld [$cc79], a ld [rOBP0], a ; $FF00+$48 ld a, $6c ld [rOBP1], a ; $FF00+$49 ret ; 78e53 (1e:4e53) 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 ld bc, $6f6f jr .asm_791fc INCBIN "baserom.gbc",$791db,$791ea - $791db ld bc, $e4e4 jr .asm_791fc INCBIN "baserom.gbc",$791ef,$791f4 - $791ef ld bc, $9090 jr .asm_791fc INCBIN "baserom.gbc",$791f9,$791fc - $791f9 .asm_791fc ld a, [$cf1b] and a ld a, b jr z, .asm_79204 ld a, c .asm_79204 ld [rBGP], a ; $FF00+$47 ret INCBIN "baserom.gbc",$79207,$79209 - $79207 ; known jump sources: 78de0 (1e:4de0) Func_79209: ; 79209 (1e:5209) ld a, $21 jp Predef ; indirect jump to Func_480ff (480ff (12:40ff)) ld b, $8 ; known jump sources: 78de8 (1e:4de8), 78dfb (1e:4dfb) Func_79210: ; 79210 (1e:5210) ld a, $24 jp Predef ; indirect jump to Func_48125 (48125 (12:4125)) xor a ld [$d09f], a call LoadAnimationTileset ld d, $20 ld a, $f0 ld [W_BASECOORDX], a ; $d081 ld a, $71 ld [$d09f], a .asm_79228 ld a, $10 ld [W_BASECOORDY], a ; $d082 ld a, $0 ld [$d08a], a call Func_79246 ld a, $18 ld [W_BASECOORDY], a ; $d082 ld a, $20 ld [$d08a], a call Func_79246 dec d jr nz, .asm_79228 ret ; known jump sources: 79232 (1e:5232), 7923f (1e:523f) Func_79246: ; 79246 (1e:5246) ld hl, $c300 .asm_79249 ld a, [W_BASECOORDY] ; $d082 ld [hli], a ld a, [W_BASECOORDX] ; $d081 add $1b ld [W_BASECOORDX], a ; $d081 ld [hli], a ld a, [$d09f] ld [hli], a xor a ld [hli], a ld a, [W_BASECOORDX] ; $d081 cp $90 jr c, .asm_79249 sub $a8 ld [W_BASECOORDX], a ; $d081 ld a, [W_BASECOORDY] ; $d082 add $10 ld [W_BASECOORDY], a ; $d082 cp $70 jr c, .asm_79249 call AnimationCleanOAM jp DelayFrame INCBIN "baserom.gbc",$7927a,$79297 - $7927a ; known jump sources: 7975d (1e:575d) Func_79297: ; 79297 (1e:5297) xor a call Func_79842 .asm_7929b call Func_79820 push bc push de call Func_79aae call Delay3 call Func_79801 pop de pop bc dec b jr nz, .asm_7929b ret ; known jump sources: 79762 (1e:5762) Func_792af: ; 792af (1e:52af) ld e, $8 ld a, $3 ld [W_SUBANIMTRANSFORM], a ; $d08b jp Func_795f8 ; known jump sources: 3c226 (f:4226) Func_792b9: ; 792b9 (1e:52b9) ld hl, $52af jp CallWithTurnFlipped INCBIN "baserom.gbc",$792bf,$79329 - $792bf ; known jump sources: 7952a (1e:552a), 797fa (1e:57fa) Func_79329: ; 79329 (1e:5329) ld a, e add $8 ld e, a ld [hli], a ld a, [W_BASECOORDX] ; $d081 ld [hli], a ld a, d ld [hli], a xor a ld [hli], a ret ld l, e ld h, d ; known jump sources: 79eaa (1e:5eaa), 79eb7 (1e:5eb7), 79ef8 (1e:5ef8), 79f05 (1e:5f05), 79f12 (1e:5f12), 79f1f (1e:5f1f) Func_79339: ; 79339 (1e:5339) ld de, $4 .asm_7933c ld a, [$d08a] ld b, a ld a, [hl] add b cp $a8 jr c, .asm_7934a dec hl ld a, $a0 ld [hli], a .asm_7934a ld [hl], a add hl, de dec c jr nz, .asm_7933c ret ld l, e ld h, d ; known jump sources: 79ee5 (1e:5ee5) Func_79352: ; 79352 (1e:5352) ld de, $4 .asm_79355 ld a, [$d08a] ld b, a ld a, [hl] add b cp $70 jr c, .asm_79363 dec hl ld a, $a0 ld [hli], a .asm_79363 ld [hl], a add hl, de dec c jr nz, .asm_79355 ret ; known jump sources: 78df3 (1e:4df3) Func_79369: ; 79369 (1e:5369) ld hl, $536f jp CallWithTurnFlipped push af ld c, $6 .asm_79372 push bc call Func_79801 ld c, $5 call DelayFrames call Func_7939e ld c, $5 call DelayFrames pop bc dec c jr nz, .asm_79372 pop af ret ; known jump sources: 7976b (1e:576b) Func_79389: ; 79389 (1e:5389) ld a, [$d014] ld [$ceea], a ld a, [$cfe5] ld [$cee9], a jp Func_79793 INCBIN "baserom.gbc",$79398,$7939e - $79398 ; known jump sources: 7937b (1e:537b), 79421 (1e:5421), 795c1 (1e:55c1), 7976e (1e:576e) Func_7939e: ; 7939e (1e:539e) xor a call Func_79842 call Func_79820 call Func_79aae jp Delay3 ld hl, $539e jp CallWithTurnFlipped INCBIN "baserom.gbc",$793b1,$793f9 - $793b1 call Func_79801 ld a, [H_WHOSETURN] ; $FF00+$f3 and a ld hl, $c406 jr z, .asm_79407 ld hl, $c3ab .asm_79407 xor a push hl call Func_79842 pop hl call Func_79aae ld c, $3 jp DelayFrames ld a, [H_WHOSETURN] ; $FF00+$f3 and a ld a, $66 jr z, .asm_7941e ld a, $b .asm_7941e call Func_7980c jp Func_7939e ld a, [H_WHOSETURN] ; $FF00+$f3 and a jr z, .asm_79435 ld a, $d8 ld [$d08a], a ld a, $50 ld [W_SUBANIMTRANSFORM], a ; $d08b jr .asm_7943c .asm_79435 xor a ld [$d08a], a ld [W_SUBANIMTRANSFORM], a ; $d08b .asm_7943c ld d, $7a ld c, $3 xor a call Func_797e8 ld hl, $5476 .asm_79447 push hl ld c, $3 ld de, $c300 .asm_7944d ld a, [hl] cp $ff jr z, .asm_7946f ld a, [$d08a] add [hl] ld [de], a inc de inc hl ld a, [W_SUBANIMTRANSFORM] ; $d08b add [hl] ld [de], a inc hl inc de inc de inc de dec c jr nz, .asm_7944d ld c, $5 call DelayFrames pop hl inc hl inc hl jr .asm_79447 .asm_7946f pop hl call AnimationCleanOAM jp AnimationFlashScreen INCBIN "baserom.gbc",$79476,$794a1 - $79476 ld c, $4 .asm_794a3 push bc ld a, [H_WHOSETURN] ; $FF00+$f3 and a jr z, .asm_794b1 ld hl, $c3b0 ld de, $c3ae jr .asm_794b7 .asm_794b1 ld hl, $c409 ld de, $c407 .asm_794b7 push de xor a ld [$d09f], a call Func_794d4 pop hl ld a, $1 ld [$d09f], a call Func_794d4 pop bc dec c jr nz, .asm_794a3 call Func_79801 ld c, $2 jp DelayFrame ; known jump sources: 794bc (1e:54bc), 794c5 (1e:54c5) Func_794d4: ; 794d4 (1e:54d4) ld c, $7 .asm_794d6 push bc push hl ld c, $3 ld a, [$d09f] cp $0 jr nz, .asm_794e7 call asm_7985b dec hl jr .asm_794eb .asm_794e7 call Func_79862 inc hl .asm_794eb ld [hl], $7f pop hl ld de, $14 add hl, de pop bc dec c jr nz, .asm_794d6 jp Delay3 ld a, [H_WHOSETURN] ; $FF00+$f3 and a jr z, .asm_79503 ld bc, $80 jr .asm_79506 .asm_79503 ld bc, $3028 .asm_79506 ld a, b ld [W_BASECOORDY], a ; $d082 ld a, c ld [W_BASECOORDX], a ; $d081 ld bc, $501 call Func_79517 jp AnimationCleanOAM ; known jump sources: 79511 (1e:5511) Func_79517: ; 79517 (1e:5517) push bc xor a ld [$d09f], a call LoadAnimationTileset pop bc ld d, $7a ld hl, $c300 push bc ld a, [W_BASECOORDY] ; $d082 ld e, a .asm_7952a call Func_79329 dec b jr nz, .asm_7952a call DelayFrame pop bc ld a, b ld [$d08a], a .asm_79538 push bc ld hl, $c300 .asm_7953c ld a, [W_BASECOORDY] ; $d082 add $8 ld e, a ld a, [hl] cp e jr z, .asm_7954b add $fc ld [hl], a jr .asm_79554 .asm_7954b ld [hl], $0 ld a, [$d08a] dec a ld [$d08a], a .asm_79554 ld de, $4 add hl, de dec b jr nz, .asm_7953c call DelayFrames pop bc ld a, [$d08a] and a jr nz, .asm_79538 ret INCBIN "baserom.gbc",$79566,$7959f - $79566 ; known jump sources: 79768 (1e:5768) Func_7959f: ; 7959f (1e:559f) ld hl, $c6e8 push hl xor a ld bc, $310 call FillMemory pop hl ld de, $194 add hl, de ld de, $55c4 ld c, $5 .asm_795b4 ld a, [de] ld [hli], a ld [hli], a inc de dec c jr nz, .asm_795b4 call Func_79652 call Delay3 jp Func_7939e INCBIN "baserom.gbc",$795c4,$795f8 - $795c4 ; known jump sources: 792b6 (1e:52b6) Func_795f8: ; 795f8 (1e:55f8) ld a, [H_WHOSETURN] ; $FF00+$f3 and a jr z, .asm_79602 ld hl, $c3ac jr .asm_79605 .asm_79602 ld hl, $c404 .asm_79605 ld d, $8 .asm_79607 push hl ld b, $7 .asm_7960a ld c, $8 .asm_7960c ld a, [H_WHOSETURN] ; $FF00+$f3 and a jr z, .asm_79616 call Func_7963c jr .asm_79619 .asm_79616 call Func_79633 .asm_79619 ld [hli], a dec c jr nz, .asm_7960c push de ld de, $c add hl, de pop de dec b jr nz, .asm_7960a ld a, [W_SUBANIMTRANSFORM] ; $d08b ld c, a call DelayFrames pop hl dec d dec e jr nz, .asm_79607 ret ; known jump sources: 79616 (1e:5616) Func_79633: ; 79633 (1e:5633) ld a, [hl] add $7 cp $61 ret c ld a, $7f ret ; known jump sources: 79611 (1e:5611) Func_7963c: ; 7963c (1e:563c) ld a, [hl] sub $7 cp $30 ret c ld a, $7f ret INCBIN "baserom.gbc",$79645,$79652 - $79645 ; known jump sources: 795bb (1e:55bb) Func_79652: ; 79652 (1e:5652) ld a, [H_WHOSETURN] ; $FF00+$f3 and a ld hl, $9310 jr z, .asm_7965d ld hl, $9000 .asm_7965d ld de, $c6e8 ld bc, $31 jp CopyVideoData INCBIN "baserom.gbc",$79666,$79747 - $79666 ; known jump sources: 3e295 (f:6295) Func_79747: ; 79747 (1e:5747) ld a, [H_WHOSETURN] ; $FF00+$f3 and a ld hl, $ccf7 ld a, [W_PLAYERBATTSTATUS2] ; $d063 jr z, .asm_79758 ld hl, $ccf3 ld a, [W_ENEMYBATTSTATUS2] ; $d068 .asm_79758 push hl bit 4, a jr nz, .asm_79762 call Func_79297 jr .asm_79765 .asm_79762 call Func_792af .asm_79765 pop hl ld a, [hl] and a jp nz, Func_7959f call Func_79389 jp Func_7939e INCBIN "baserom.gbc",$79771,$79787 - $79771 ld a, [$cfe5] ld [$ceea], a ld a, [$d014] ld [$cee9], a ; known jump sources: 708ee (1c:48ee), 79395 (1e:5395) Func_79793: ; 79793 (1e:5793) ld a, [H_WHOSETURN] ; $FF00+$f3 and a jr z, .asm_797b0 ld a, [$cee9] ld [$cf91], a ld [$d0b5], a xor a ld [$d0aa], a call GetBaseStats ld hl, $c3ac call Func_1389 jr .asm_797d3 .asm_797b0 ld a, [$cfd9] push af ld a, [$ceea] ld [$cfd9], a ld [$d0b5], a call GetBaseStats ld a, $4 call Predef ; indirect jump to Func_3f103 (3f103 (f:7103)) xor a call Func_79842 call Func_79820 call Func_79aae pop af ld [$cfd9], a .asm_797d3 ld b, $1 jp GoPAL_SET xor a ld [H_AUTOBGTRANSFERENABLED], a ; $FF00+$ba ld hl, $5801 call CallWithTurnFlipped ld a, $1 ld [H_AUTOBGTRANSFERENABLED], a ; $FF00+$ba jp Delay3 ; known jump sources: 79441 (1e:5441) Func_797e8: ; 797e8 (1e:57e8) push bc push de ld [$d09f], a call LoadAnimationTileset pop de pop bc xor a ld e, a ld [W_BASECOORDX], a ; $d081 ld hl, $c300 .asm_797fa call Func_79329 dec c jr nz, .asm_797fa ret ; known jump sources: 792a6 (1e:52a6), 79373 (1e:5373), 793f9 (1e:53f9), 794cc (1e:54cc) Func_79801: ; 79801 (1e:5801) ld a, [H_WHOSETURN] ; $FF00+$f3 and a jr z, .asm_7980a ld a, $c jr Func_7980c .asm_7980a ld a, $65 ; known jump sources: 79049 (1e:5049), 7941e (1e:541e), 79808 (1e:5808) Func_7980c: ; 7980c (1e:580c) push hl push de push bc ld e, a ld d, $0 ld hl, $c3a0 add hl, de ld bc, $707 call ClearScreenArea pop bc pop de pop hl ret ; known jump sources: 7929b (1e:529b), 793a2 (1e:53a2), 797c9 (1e:57c9) Func_79820: ; 79820 (1e:5820) push de ld a, [H_WHOSETURN] ; $FF00+$f3 and a jr nz, .asm_7982a ld a, $65 jr .asm_7982c .asm_7982a ld a, $c .asm_7982c ld hl, $c3a0 ld e, a ld d, $0 add hl, de ld a, $7 sub b and a jr z, .asm_79840 ld de, $14 .asm_7983c add hl, de dec a jr nz, .asm_7983c .asm_79840 pop de ret ; known jump sources: 79298 (1e:5298), 7939f (1e:539f), 79409 (1e:5409), 797c6 (1e:57c6), 79de2 (1e:5de2) Func_79842: ; 79842 (1e:5842) ld hl, $5aea ld e, a ld d, $0 add hl, de add hl, de add hl, de ld a, [hli] ld e, a ld a, [hli] ld d, a ld a, [hli] ld b, a and $f ld c, a ld a, b swap a and $f ld b, a ret asm_7985b: ; 7985b (1e:585b) ld a, [hld] ld [hli], a inc hl dec c jr nz, asm_7985b ret ; known jump sources: 78f7d (1e:4f7d), 794e7 (1e:54e7), 79866 (1e:5866) Func_79862: ; 79862 (1e:5862) ld a, [hli] ld [hld], a dec hl dec c jr nz, Func_79862 ret INCBIN "baserom.gbc",$79869,$7986f - $79869 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 ; known jump sources: 792a0 (1e:52a0), 793a5 (1e:53a5), 7940d (1e:540d), 797cc (1e:57cc) Func_79aae: ; 79aae (1e:5aae) ld a, [H_WHOSETURN] ; $FF00+$f3 and a ld a, $31 jr z, .asm_79ab6 xor a .asm_79ab6 ld [H_DOWNARROWBLINKCNT1], a ; $FF00+$8b jr asm_79acb ; known jump sources: 3cd11 (f:4d11), 3cd2c (f:4d2c), 3f09a (f:709a), 3f0af (f:70af) Func_79aba: ; 79aba (1e:5aba) call Load16BitRegisters ld a, [$cd6c] and a jr nz, .asm_79ac8 ld de, $5b02 jr asm_79acb .asm_79ac8 ld de, $5b1b asm_79acb: ; 79acb (1e:5acb) xor a ld [H_AUTOBGTRANSFERENABLED], a ; $FF00+$ba ; known jump sources: 79de6 (1e:5de6) Func_79ace: ; 79ace (1e:5ace) push hl .asm_79acf push bc push hl ld a, [H_DOWNARROWBLINKCNT1] ; $FF00+$8b ld b, a .asm_79ad4 ld a, [de] add b inc de ld [hli], a dec c jr nz, .asm_79ad4 pop hl ld bc, $14 add hl, bc pop bc dec b jr nz, .asm_79acf ld a, $1 ld [H_AUTOBGTRANSFERENABLED], a ; $FF00+$ba pop hl ret INCBIN "baserom.gbc",$79aea,$79dda - $79aea ; known jump sources: 41846 (10:5846), 70374 (1c:4374) Func_79dda: ; 79dda (1e:5dda) call Load16BitRegisters ld a, c ld [H_DOWNARROWBLINKCNT1], a ; $FF00+$8b ld a, b push hl call Func_79842 pop hl jp Func_79ace INCBIN "baserom.gbc",$79de9,$79e16 - $79de9 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 ; known jump sources: 78ddb (1e:4ddb), 78de3 (1e:4de3), 78df0 (1e:4df0), 78df6 (1e:4df6) Func_79e6a: ; 79e6a (1e:5e6a) call Func_3748 ld a, [$d05b] and $7f ret z cp $a ld a, $20 ld b, $30 ld c, $a6 jr z, .asm_79e8b ld a, $e0 ld b, $ff ld c, $b0 jr nc, .asm_79e8b ld a, $50 ld b, $1 ld c, $a7 .asm_79e8b ld [$c0f1], a ld a, b ld [$c0f2], a ld a, c jp Func_23b1 ; known jump sources: efdb (3:6fdb) Func_79e96: ; 79e96 (1e:5e96) ld a, [$cd4d] cp $52 jr z, .asm_79ec8 ld c, $8 .asm_79e9f push bc ld hl, $c391 ld a, $1 ld [$d08a], a ld c, $2 call Func_79339 ld hl, $c399 ld a, $ff ld [$d08a], a ld c, $2 call Func_79339 ld a, [rOBP1] ; $FF00+$49 xor $64 ld [rOBP1], a ; $FF00+$49 call DelayFrame pop bc dec c jr nz, .asm_79e9f ret .asm_79ec8 ld c, $2 .asm_79eca push bc ld c, $8 call Func_79eed call Func_79f30 ld c, $8 call Func_79eed call Func_79f30 ld hl, $c390 ld a, $2 ld [$d08a], a ld c, $4 call Func_79352 pop bc dec c jr nz, .asm_79eca ret ; known jump sources: 79ecd (1e:5ecd), 79ed5 (1e:5ed5), 79f2d (1e:5f2d) Func_79eed: ; 79eed (1e:5eed) push bc ld hl, $c391 ld a, $1 ld [$d08a], a ld c, $1 call Func_79339 ld hl, $c395 ld a, $2 ld [$d08a], a ld c, $1 call Func_79339 ld hl, $c399 ld a, $fe ld [$d08a], a ld c, $1 call Func_79339 ld hl, $c39d ld a, $ff ld [$d08a], a ld c, $1 call Func_79339 ld a, [rOBP1] ; $FF00+$49 xor $64 ld [rOBP1], a ; $FF00+$49 call DelayFrame pop bc dec c jr nz, Func_79eed ret ; known jump sources: 79ed0 (1e:5ed0), 79ed8 (1e:5ed8) Func_79f30: ; 79f30 (1e:5f30) ld hl, $c390 ld de, $cee9 ld bc, $8 call CopyData ld hl, $c398 ld de, $c390 ld bc, $8 call CopyData ld hl, $cee9 ld de, $c398 ld bc, $8 jp CopyData ; known jump sources: f2c0 (3:72c0) Func_79f54: ; 79f54 (1e:5f54) ld a, $1 ld [$cd50], a ld a, [$cfcb] push af ld a, $ff ld [$cfcb], a ld a, $e4 ld [rOBP1], a ; $FF00+$49 call Func_79fc0 ld b, BANK(asm_f055) ld hl, asm_f055 call Bankswitch ; indirect jump to asm_f055 (f055 (3:7055)) ld c, $8 .asm_79f73 push bc call Func_79f92 ld bc, $5f7e push bc ld c, $4 jp [hl] ld a, [rOBP1] ; $FF00+$49 xor $64 ld [rOBP1], a ; $FF00+$49 call Delay3 pop bc dec c jr nz, .asm_79f73 pop af ld [$cfcb], a jp LoadPlayerSpriteGraphics ; known jump sources: 79f74 (1e:5f74) Func_79f92: ; 79f92 (1e:5f92) ld a, [$c109] ld hl, $5fb0 ld c, a ld b, $0 add hl, bc ld a, [hli] ld [$d08a], a ld a, [hli] ld e, a ld a, [hli] ld h, [hl] ld l, a push hl ld hl, $c390 ld d, $0 add hl, de ld e, l ld d, h pop hl ret INCBIN "baserom.gbc",$79fb0,$79fc0 - $79fb0 ; known jump sources: 1dbb4 (7:5bb4), 79f66 (1e:5f66) Func_79fc0: ; 79fc0 (1e:5fc0) ld hl, $8fc0 ld c, $4 .asm_79fc5 push bc push hl call Func_79fd4 pop hl ld bc, $10 add hl, bc pop bc dec c jr nz, .asm_79fc5 ret ; known jump sources: 79fc7 (1e:5fc7) Func_79fd4: ; 79fd4 (1e:5fd4) ld de, $5fdd ld bc, $1e01 jp CopyVideoData INCBIN "baserom.gbc",$79fdd,$7af74 - $79fdd 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,$7bde9 - $7b068 ; known jump sources: 3adf7 (e:6df7) Func_7bde9: ; 7bde9 (1e:7de9) push hl push de push bc ld a, [$cf91] push af ld a, [$d0b5] push af xor a ld [$d083], a ld [$c02a], a dec a ld [$c0ee], a call Func_23b1 ld a, $1 ld [H_AUTOBGTRANSFERENABLED], a ; $FF00+$ba ld a, $8c call Func_23b1 call Delay3 xor a ld [H_AUTOBGTRANSFERENABLED], a ; $FF00+$ba ld [$FF00+$d7], a ld a, [$cee9] ld [$cf1d], a ld c, $0 call Func_7beb4 ld a, [$ceea] ld [$cf91], a ld [$d0b5], a call Func_7beb9 ld de, $9000 ld hl, $9310 ld bc, $31 call CopyVideoData ld a, [$cee9] ld [$cf91], a ld [$d0b5], a call Func_7beb9 ld a, $1 ld [H_AUTOBGTRANSFERENABLED], a ; $FF00+$ba ld a, [$cee9] call PlayCry call Func_3748 ld c, $2 ld a, $e5 call Func_23a1 ld c, $50 call DelayFrames ld c, $1 call Func_7beb4 ld bc, $110 .asm_7be63 push bc call asm_7befa jr c, .asm_7bea9 call asm_7bec2 pop bc inc b dec c dec c jr nz, .asm_7be63 xor a ld [$ceec], a ld a, $31 ld [$ceeb], a call Func_7bed6 ld a, [$ceea] .asm_7be81 ld [$cf1d], a ld a, $ff ld [$c0ee], a call Func_23b1 ld a, [$cf1d] call PlayCry ld c, $0 call Func_7beb4 pop af ld [$d0b5], a pop af ld [$cf91], a pop bc pop de pop hl ld a, [$ceec] and a ret z scf ret .asm_7bea9 pop bc ld a, $1 ld [$ceec], a ld a, [$cee9] jr .asm_7be81 ; known jump sources: 7be1b (1e:7e1b), 7be5d (1e:7e5d), 7be94 (1e:7e94) Func_7beb4: ; 7beb4 (1e:7eb4) ld b, $b jp GoPAL_SET ; known jump sources: 7be27 (1e:7e27), 7be3f (1e:7e3f) Func_7beb9: ; 7beb9 (1e:7eb9) call GetBaseStats ld hl, $c3cf jp Func_1384 asm_7bec2: ; 7bec2 (1e:7ec2) ld a, $31 ld [$ceeb], a call Func_7bed6 ld a, $cf ld [$ceeb], a call Func_7bed6 dec b jr nz, asm_7bec2 ret ; known jump sources: 7be7b (1e:7e7b), 7bec7 (1e:7ec7), 7becf (1e:7ecf) Func_7bed6: ; 7bed6 (1e:7ed6) push bc xor a ld [H_AUTOBGTRANSFERENABLED], a ; $FF00+$ba ld hl, $c3cf ld bc, $707 ld de, $d .asm_7bee3 push bc .asm_7bee4 ld a, [$ceeb] add [hl] ld [hli], a dec c jr nz, .asm_7bee4 pop bc add hl, de dec b jr nz, .asm_7bee3 ld a, $1 ld [H_AUTOBGTRANSFERENABLED], a ; $FF00+$ba call Delay3 pop bc ret asm_7befa: ; 7befa (1e:7efa) call DelayFrame push bc call GetJoypadStateLowSensitivity ld a, [$FF00+$b5] pop bc and $2 jr nz, .asm_7bf0d .asm_7bf08 dec c jr nz, asm_7befa and a ret .asm_7bf0d ld a, [$ccd4] and a jr nz, .asm_7bf08 scf ret ; known jump sources: 4582f (11:582f) Func_7bf15: ; 7bf15 (1e:7f15) ld de, $ffe0 call Func_7bf64 ld de, $240 call Func_7bf64 call Delay3 ld a, $ff call Func_23b1 ld a, [$FF00+$af] ld d, a ld e, $1 ld b, $64 .asm_7bf30 ld a, e xor $fe ld e, a add d ld [$FF00+$af], a push bc ld c, $2 ld a, $b4 call Func_23a1 pop bc ld c, $2 call DelayFrames dec b jr nz, .asm_7bf30 ld a, d ld [$FF00+$af], a ld a, $ff call Func_23b1 ld c, $2 ld a, $b9 call Func_23a1 .asm_7bf57 ld a, [$c02a] cp $b9 jr z, .asm_7bf57 call Func_2429 jp Func_2307 ; known jump sources: 7bf18 (1e:7f18), 7bf1e (1e:7f1e) Func_7bf64: ; 7bf64 (1e:7f64) ld hl, $d527 ld a, [hld] push af ld a, [hl] push af push hl push hl ld a, [hli] ld h, [hl] ld l, a add hl, de ld a, h and $3 or $98 ld d, a ld a, l pop hl ld [hli], a ld [hl], d call ScheduleNorthRowRedraw pop hl pop af ld [hli], a pop af ld [hl], a jp Delay3 ; known jump sources: 3819 (0:3819) Func_7bf86: ; 7bf86 (1e:7f86) ld a, [$cf91] sub $c9 ret c ld d, a ld hl, $7fa7 srl a ld c, a ld b, $0 add hl, bc ld a, [hl] srl d jr nc, .asm_7bf9d swap a .asm_7bf9d and $f0 ld [H_DOWNARROWBLINKCNT2], a ; $FF00+$8c xor a ld [H_DOWNARROWBLINKCNT1], a ; $FF00+$8b ld [$FF00+$8d], a ret INCBIN "baserom.gbc",$7bfa7,$7c000 - $7bfa7 SECTION "bank1F",DATA,BANK[$1F] INCBIN "baserom.gbc",$7C000,$7C45E-$7C000 IF _RED UnknSong_md_7c45e: ;0x7C45E mus_duty duty50 mus_note noteD, note4_16 db $f4 mus_note noteC, note16 mus_note noteC, note2 mus_note noteD, note4 mus_octave oct3 mus_note noteG#, note16 mus_note noteC, note4_8_16 mus_note noteD, note4 mus_octave oct3 mus_note noteRst, note16 mus_note noteC, note4_8_16 mus_note noteD, note4 mus_octave oct3 mus_note noteC, note16 mus_note noteC, note2 mus_note noteD, note8_16 mus_octave oct3 mus_note noteA#, note16 mus_note noteC, note2 mus_end UnknSong_md_7c475: ;0x7C475 mus_duty duty50 mus_note noteD, note4_16 mus_note noteC, note2_16 mus_note noteC, note16 mus_note noteC, note16 mus_note noteD, note4 db $d4 mus_note noteC, note8 mus_note noteC, note2 mus_note noteD, note4 mus_note noteRst, note4_16 mus_note noteG#, note8 mus_note noteC, note4_8_16 mus_note noteD, note4 mus_note noteRst, note4_16 mus_note noteRst, note8 mus_note noteC, note4_8_16 mus_note noteD, note4 mus_note noteRst, note4_16 mus_note noteC, note8 mus_note noteC, note2 mus_note noteD, note8_16 mus_note noteRst, note4_16 mus_note noteA#, note8 mus_note noteC, note2 mus_end ENDC IF _BLUE UnknSong_md_7c45e: ;0x7C45E mus_duty duty50 mus_note noteD, note4 mus_octave oct3 mus_note noteC, note16 mus_note noteC, note4_8_16 mus_note noteD, note4 mus_octave oct3 mus_note noteG#, note16 mus_note noteC, note4_8_16 mus_note noteD, note4 mus_octave oct3 mus_note noteRst, note16 mus_note noteC, note4_8_16 mus_note noteD, note4 mus_octave oct3 mus_note noteC, note16 mus_note noteC, note2 mus_note noteD, note1 db $f2 mus_octave oct7 mus_note noteC, note2 mus_end UnknSong_md_7c475: ; 0x7C475 mus_duty duty50 mus_note noteD, note4 mus_note noteC, note2_16 mus_note noteC, note16 mus_note noteC, note16 mus_note noteD, note4 mus_note noteRst, note4_16 mus_note noteC, note8 mus_note noteC, note4_8_16 mus_note noteD, note4 mus_note noteRst, note4_16 mus_note noteG#, note8 mus_note noteC, note4_8_16 mus_note noteD, note4 mus_note noteRst, note4_16 mus_note noteRst, note8 mus_note noteC, note4_8_16 mus_note noteD, note4 mus_note noteRst, note4_16 mus_note noteC, note8 mus_note noteC, note2 mus_note noteD, note1 db $d2 mus_octave oct6 mus_note noteC, note2 mus_end ENDC INCBIN "baserom.gbc",$7c490,$7d13b - $7c490 ; known jump sources: 441b0 (11:41b0) Func_7d13b: ; 7d13b (1f:513b) ld a, [$FF00+$dc] ld c, $0 ld hl, $5170 .asm_7d142 cp [hl] jr c, .asm_7d149 inc c inc hl jr .asm_7d142 .asm_7d149 push bc ld a, $ff ld [$c0ee], a call Func_3740 pop bc ld b, $0 ld hl, $5162 add hl, bc add hl, bc ld a, [hli] ld c, [hl] call Func_23a1 jp Func_2307 INCBIN "baserom.gbc",$7d162,$7d177 - $7d162 ld c, $0 .asm_7d179 ld b, $0 ld hl, $c026 add hl, bc ld a, [hl] and a jr z, .asm_7d1a5 ld a, c cp $4 jr nc, .asm_7d1a2 ld a, [$c002] and a jr z, .asm_7d1a2 bit 7, a jr nz, .asm_7d1a5 set 7, a ld [$c002], a xor a ld [$FF00+$25], a ld [$FF00+$1a], a ld a, $80 ld [$FF00+$1a], a jr .asm_7d1a5 .asm_7d1a2 call Func_7d1ac .asm_7d1a5 ld a, c inc c cp $7 jr nz, .asm_7d179 ret ; known jump sources: 7d1a2 (1f:51a2) Func_7d1ac: ; 7d1ac (1f:51ac) ld b, $0 ld hl, $c0b6 add hl, bc ld a, [hl] cp $1 jp z, Func_7d244 dec a ld [hl], a ld a, c cp $4 jr nc, .asm_7d1c8 ld hl, $c02a add hl, bc ld a, [hl] and a jr z, .asm_7d1c8 ret .asm_7d1c8 ld hl, $c02e add hl, bc bit 6, [hl] jr z, .asm_7d1d3 call Func_7d881 .asm_7d1d3 ld b, $0 ld hl, $c036 add hl, bc bit 0, [hl] jr nz, .asm_7d1e5 ld hl, $c02e add hl, bc bit 2, [hl] jr nz, .asm_7d1f9 .asm_7d1e5 ld hl, $c02e add hl, bc bit 4, [hl] jr z, .asm_7d1f0 jp Func_7d76d .asm_7d1f0 ld hl, $c04e add hl, bc ld a, [hl] and a jr z, .asm_7d1fa dec [hl] .asm_7d1f9 ret .asm_7d1fa ld hl, $c056 add hl, bc ld a, [hl] and a jr nz, .asm_7d203 ret .asm_7d203 ld d, a ld hl, $c05e add hl, bc ld a, [hl] and $f and a jr z, .asm_7d210 dec [hl] ret .asm_7d210 ld a, [hl] swap [hl] or [hl] ld [hl], a ld hl, $c066 add hl, bc ld e, [hl] ld hl, $c02e add hl, bc bit 3, [hl] jr z, .asm_7d230 res 3, [hl] ld a, d and $f ld d, a ld a, e sub d jr nc, .asm_7d22e ld a, $0 .asm_7d22e jr .asm_7d23c .asm_7d230 set 3, [hl] ld a, d and $f0 swap a add e jr nc, .asm_7d23c ld a, $ff .asm_7d23c ld d, a ld b, $3 call Func_7d8ac ld [hl], d ret ; known jump sources: 7d1b5 (1f:51b5) Func_7d244: ; 7d244 (1f:5244) ld hl, $c06e add hl, bc ld a, [hl] ld hl, $c04e add hl, bc ld [hl], a ld hl, $c02e add hl, bc res 4, [hl] res 5, [hl] call Func_7d25a ret ; known jump sources: 7d256 (1f:5256), 7d2b0 (1f:52b0), 7d31a (1f:531a), 7d33c (1f:533c), 7d355 (1f:5355), 7d394 (1f:5394), 7d3a6 (1f:53a6), 7d3de (1f:53de), 7d42b (1f:542b), 7d46b (1f:546b), 7d478 (1f:5478), 7d497 (1f:5497), 7d4b5 (1f:54b5), 7d4c1 (1f:54c1), 7d4d0 (1f:54d0), 7d4e3 (1f:54e3), 7d54c (1f:554c) Func_7d25a: ; 7d25a (1f:525a) call Func_7d899 ld d, a cp $ff jp nz, Func_7d2e8 ld b, $0 ld hl, $c02e add hl, bc bit 1, [hl] jr nz, .asm_7d298 ld a, c cp $3 jr nc, .asm_7d274 jr .asm_7d2b3 .asm_7d274 res 2, [hl] ld hl, $c036 add hl, bc res 0, [hl] cp $6 jr nz, .asm_7d288 ld a, $0 ld [$FF00+$1a], a ld a, $80 ld [$FF00+$1a], a .asm_7d288 jr nz, .asm_7d296 ld a, [$c003] and a jr z, .asm_7d296 xor a ld [$c003], a jr .asm_7d2b3 .asm_7d296 jr .asm_7d2bc .asm_7d298 res 1, [hl] ld d, $0 ld a, c add a ld e, a ld hl, $c006 add hl, de push hl ld hl, $c016 add hl, de ld e, l ld d, h pop hl ld a, [de] ld [hli], a inc de ld a, [de] ld [hl], a jp Func_7d25a .asm_7d2b3 ld hl, $5b93 add hl, bc ld a, [$FF00+$25] and [hl] ld [$FF00+$25], a .asm_7d2bc ld a, [$c02a] cp $14 jr nc, .asm_7d2c5 jr .asm_7d2e2 .asm_7d2c5 ld a, [$c02a] cp $86 jr z, .asm_7d2e2 jr c, .asm_7d2d0 jr .asm_7d2e2 .asm_7d2d0 ld a, c cp $4 jr z, .asm_7d2d9 call Func_7d73b ret c .asm_7d2d9 ld a, [$c005] ld [$FF00+$24], a xor a ld [$c005], a .asm_7d2e2 ld hl, $c026 add hl, bc ld [hl], b ret ; known jump sources: 7d260 (1f:5260) Func_7d2e8: ; 7d2e8 (1f:52e8) cp $fd jp nz, Func_7d31d call Func_7d899 push af call Func_7d899 ld d, a pop af ld e, a push de ld d, $0 ld a, c add a ld e, a ld hl, $c006 add hl, de push hl ld hl, $c016 add hl, de ld e, l ld d, h pop hl ld a, [hli] ld [de], a inc de ld a, [hld] ld [de], a pop de ld [hl], e inc hl ld [hl], d ld b, $0 ld hl, $c02e add hl, bc set 1, [hl] jp Func_7d25a ; known jump sources: 7d2ea (1f:52ea) Func_7d31d: ; 7d31d (1f:531d) cp $fe jp nz, Func_7d358 call Func_7d899 ld e, a and a jr z, .asm_7d341 ld b, $0 ld hl, $c0be add hl, bc ld a, [hl] cp e jr nz, .asm_7d33f ld a, $1 ld [hl], a call Func_7d899 call Func_7d899 jp Func_7d25a .asm_7d33f inc a ld [hl], a .asm_7d341 call Func_7d899 push af call Func_7d899 ld b, a ld d, $0 ld a, c add a ld e, a ld hl, $c006 add hl, de pop af ld [hli], a ld [hl], b jp Func_7d25a ; known jump sources: 7d31f (1f:531f) Func_7d358: ; 7d358 (1f:5358) and $f0 cp $d0 jp nz, Func_7d397 ld a, d and $f ld b, $0 ld hl, $c0c6 add hl, bc ld [hl], a ld a, c cp $3 jr z, .asm_7d394 call Func_7d899 ld d, a ld a, c cp $2 jr z, .asm_7d380 cp $6 jr nz, .asm_7d38d ld hl, $c0e7 jr .asm_7d383 .asm_7d380 ld hl, $c0e6 .asm_7d383 ld a, d and $f ld [hl], a ld a, d and $30 sla a ld d, a .asm_7d38d ld b, $0 ld hl, $c0de add hl, bc ld [hl], d .asm_7d394 jp Func_7d25a ; known jump sources: 7d35c (1f:535c) Func_7d397: ; 7d397 (1f:5397) ld a, d cp $e8 jr nz, .asm_7d3a9 ld b, $0 ld hl, $c02e add hl, bc ld a, [hl] xor $1 ld [hl], a jp Func_7d25a .asm_7d3a9 cp $ea jr nz, .asm_7d3e1 call Func_7d899 ld b, $0 ld hl, $c04e add hl, bc ld [hl], a ld hl, $c06e add hl, bc ld [hl], a call Func_7d899 ld d, a and $f0 swap a ld b, $0 ld hl, $c056 add hl, bc srl a ld e, a adc b swap a or e ld [hl], a ld a, d and $f ld d, a ld hl, $c05e add hl, bc swap a or d ld [hl], a jp Func_7d25a .asm_7d3e1 cp $eb jr nz, .asm_7d419 call Func_7d899 ld b, $0 ld hl, $c076 add hl, bc ld [hl], a call Func_7d899 ld d, a and $f0 swap a ld b, a ld a, d and $f call Func_7d8cc ld b, $0 ld hl, $c0a6 add hl, bc ld [hl], d ld hl, $c0ae add hl, bc ld [hl], e ld b, $0 ld hl, $c02e add hl, bc set 4, [hl] call Func_7d899 ld d, a jp Func_7d57e .asm_7d419 cp $ec jr nz, .asm_7d42e call Func_7d899 rrca rrca and $c0 ld b, $0 ld hl, $c03e add hl, bc ld [hl], a jp Func_7d25a .asm_7d42e cp $ed jr nz, .asm_7d46e ld a, c cp $4 jr nc, .asm_7d452 call Func_7d899 ld [$c0e8], a call Func_7d899 ld [$c0e9], a xor a ld [$c0ce], a ld [$c0cf], a ld [$c0d0], a ld [$c0d1], a jr .asm_7d46b .asm_7d452 call Func_7d899 ld [$c0ea], a call Func_7d899 ld [$c0eb], a xor a ld [$c0d2], a ld [$c0d3], a ld [$c0d4], a ld [$c0d5], a .asm_7d46b jp Func_7d25a .asm_7d46e cp $ee jr nz, .asm_7d47b call Func_7d899 ld [$c004], a jp Func_7d25a .asm_7d47b cp $ef jr nz, .asm_7d49a call Func_7d899 push bc call Func_7d8ea pop bc ld a, [$c003] and a jr nz, .asm_7d497 ld a, [$c02d] ld [$c003], a xor a ld [$c02d], a .asm_7d497 jp Func_7d25a .asm_7d49a cp $fc jr nz, .asm_7d4b8 call Func_7d899 ld b, $0 ld hl, $c046 add hl, bc ld [hl], a and $c0 ld hl, $c03e add hl, bc ld [hl], a ld hl, $c02e add hl, bc set 6, [hl] jp Func_7d25a .asm_7d4b8 cp $f0 jr nz, .asm_7d4c4 call Func_7d899 ld [$FF00+$24], a jp Func_7d25a .asm_7d4c4 cp $f8 jr nz, .asm_7d4d3 ld b, $0 ld hl, $c036 add hl, bc set 0, [hl] jp Func_7d25a .asm_7d4d3 and $f0 cp $e0 jr nz, .asm_7d4e6 ld hl, $c0d6 ld b, $0 add hl, bc ld a, d and $f ld [hl], a jp Func_7d25a .asm_7d4e6 cp $20 jr nz, .asm_7d533 ld a, c cp $3 jr c, .asm_7d533 ld b, $0 ld hl, $c036 add hl, bc bit 0, [hl] jr nz, .asm_7d533 call Func_7d57e ld d, a ld b, $0 ld hl, $c03e add hl, bc ld a, [hl] or d ld d, a ld b, $1 call Func_7d8ac ld [hl], d call Func_7d899 ld d, a ld b, $2 call Func_7d8ac ld [hl], d call Func_7d899 ld e, a ld a, c cp $7 ld a, $0 jr z, .asm_7d526 push de call Func_7d899 pop de .asm_7d526 ld d, a push de call Func_7d69d call Func_7d66c pop de call Func_7d6bf ret .asm_7d533 ld a, c cp $4 jr c, .asm_7d54f ld a, d cp $10 jr nz, .asm_7d54f ld b, $0 ld hl, $c036 add hl, bc bit 0, [hl] jr nz, .asm_7d54f call Func_7d899 ld [$FF00+$10], a jp Func_7d25a .asm_7d54f ld a, c cp $3 jr nz, Func_7d57e ld a, d and $f0 cp $b0 jr z, .asm_7d569 jr nc, Func_7d57e swap a ld b, a ld a, d and $f ld d, a ld a, b push de push bc jr .asm_7d571 .asm_7d569 ld a, d and $f push af push bc call Func_7d899 .asm_7d571 ld d, a ld a, [$c003] and a jr nz, .asm_7d57c ld a, d call Func_7d8ea .asm_7d57c pop bc pop de ; known jump sources: 7d416 (1f:5416), 7d4f9 (1f:54f9), 7d552 (1f:5552), 7d55b (1f:555b) Func_7d57e: ; 7d57e (1f:557e) ld a, d push af and $f inc a ld b, $0 ld e, a ld d, b ld hl, $c0c6 add hl, bc ld a, [hl] ld l, b call Func_7d8bb ld a, c cp $4 jr nc, .asm_7d59f ld a, [$c0e8] ld d, a ld a, [$c0e9] ld e, a jr .asm_7d5b2 .asm_7d59f ld d, $1 ld e, $0 cp $7 jr z, .asm_7d5b2 call Func_7d707 ld a, [$c0ea] ld d, a ld a, [$c0eb] ld e, a .asm_7d5b2 ld a, l ld b, $0 ld hl, $c0ce add hl, bc ld l, [hl] call Func_7d8bb ld e, l ld d, h ld hl, $c0ce add hl, bc ld [hl], e ld a, d ld hl, $c0b6 add hl, bc ld [hl], a ld hl, $c036 add hl, bc bit 0, [hl] jr nz, .asm_7d5dc ld hl, $c02e add hl, bc bit 2, [hl] jr z, .asm_7d5dc pop hl ret .asm_7d5dc pop af and $f0 cp $c0 jr nz, .asm_7d613 ld a, c cp $4 jr nc, .asm_7d5f0 ld hl, $c02a add hl, bc ld a, [hl] and a jr nz, .asm_7d612 .asm_7d5f0 ld a, c cp $2 jr z, .asm_7d5f9 cp $6 jr nz, .asm_7d606 .asm_7d5f9 ld b, $0 ld hl, $5b93 add hl, bc ld a, [$FF00+$25] and [hl] ld [$FF00+$25], a jr .asm_7d612 .asm_7d606 ld b, $2 call Func_7d8ac ld a, $8 ld [hli], a inc hl ld a, $80 ld [hl], a .asm_7d612 ret .asm_7d613 swap a ld b, $0 ld hl, $c0d6 add hl, bc ld b, [hl] call Func_7d8cc ld b, $0 ld hl, $c02e add hl, bc bit 4, [hl] jr z, .asm_7d62c call Func_7d803 .asm_7d62c push de ld a, c cp $4 jr nc, .asm_7d641 ld hl, $c02a ld d, $0 ld e, a add hl, de ld a, [hl] and a jr nz, .asm_7d63f jr .asm_7d641 .asm_7d63f pop de ret .asm_7d641 ld b, $0 ld hl, $c0de add hl, bc ld d, [hl] ld b, $2 call Func_7d8ac ld [hl], d call Func_7d69d call Func_7d66c pop de ld b, $0 ld hl, $c02e add hl, bc bit 0, [hl] jr z, .asm_7d663 inc e jr nc, .asm_7d663 inc d .asm_7d663 ld hl, $c066 add hl, bc ld [hl], e call Func_7d6bf ret ; known jump sources: 7d52b (1f:552b), 7d651 (1f:5651) Func_7d66c: ; 7d66c (1f:566c) ld b, $0 ld hl, $5b9b add hl, bc ld a, [$FF00+$25] or [hl] ld d, a ld a, c cp $7 jr z, .asm_7d687 cp $4 jr nc, .asm_7d699 ld hl, $c02a add hl, bc ld a, [hl] and a jr nz, .asm_7d699 .asm_7d687 ld a, [$c004] ld hl, $5b9b add hl, bc and [hl] ld d, a ld a, [$FF00+$25] ld hl, $5b93 add hl, bc and [hl] or d ld d, a .asm_7d699 ld a, d ld [$FF00+$25], a ret ; known jump sources: 7d528 (1f:5528), 7d64e (1f:564e) Func_7d69d: ; 7d69d (1f:569d) ld b, $0 ld hl, $c0b6 add hl, bc ld d, [hl] ld a, c cp $2 jr z, .asm_7d6b8 cp $6 jr z, .asm_7d6b8 ld a, d and $3f ld d, a ld hl, $c03e add hl, bc ld a, [hl] or d ld d, a .asm_7d6b8 ld b, $1 call Func_7d8ac ld [hl], d ret ; known jump sources: 7d52f (1f:552f), 7d668 (1f:5668) Func_7d6bf: ; 7d6bf (1f:56bf) ld a, c cp $2 jr z, .asm_7d6c8 cp $6 jr nz, .asm_7d6f5 .asm_7d6c8 push de ld de, $c0e6 cp $2 jr z, .asm_7d6d3 ld de, $c0e7 .asm_7d6d3 ld a, [de] add a ld d, $0 ld e, a ld hl, $4361 add hl, de ld e, [hl] inc hl ld d, [hl] ld hl, $ff30 ld b, $f ld a, $0 ld [$FF00+$1a], a .asm_7d6e8 ld a, [de] inc de ld [hli], a ld a, b dec b and a jr nz, .asm_7d6e8 ld a, $80 ld [$FF00+$1a], a pop de .asm_7d6f5 ld a, d or $80 and $c7 ld d, a ld b, $3 call Func_7d8ac ld [hl], e inc hl ld [hl], d call Func_7d729 ret ; known jump sources: 7d5a7 (1f:55a7) Func_7d707: ; 7d707 (1f:5707) call Func_7d759 jr nc, .asm_7d71f ld d, $0 ld a, [$c0f2] add $80 jr nc, .asm_7d716 inc d .asm_7d716 ld [$c0eb], a ld a, d ld [$c0ea], a jr .asm_7d728 .asm_7d71f xor a ld [$c0eb], a ld a, $1 ld [$c0ea], a .asm_7d728 ret ; known jump sources: 7d703 (1f:5703) Func_7d729: ; 7d729 (1f:5729) call Func_7d759 jr nc, .asm_7d73a ld a, [$c0f1] add e jr nc, .asm_7d735 inc d .asm_7d735 dec hl ld e, a ld [hl], e inc hl ld [hl], d .asm_7d73a ret ; known jump sources: 7d2d5 (1f:52d5) Func_7d73b: ; 7d73b (1f:573b) call Func_7d759 jr nc, .asm_7d756 ld hl, $c006 ld e, c ld d, $0 sla e rl d add hl, de ld a, [hl] sub $1 ld [hl], a inc hl ld a, [hl] sbc $0 ld [hl], a scf ret .asm_7d756 scf ccf ret ; known jump sources: 7d707 (1f:5707), 7d729 (1f:5729), 7d73b (1f:573b) Func_7d759: ; 7d759 (1f:5759) ld a, [$c02a] cp $14 jr nc, .asm_7d762 jr .asm_7d768 .asm_7d762 cp $86 jr z, .asm_7d768 jr c, .asm_7d76b .asm_7d768 scf ccf ret .asm_7d76b scf ret ; known jump sources: 7d1ed (1f:51ed) Func_7d76d: ; 7d76d (1f:576d) ld hl, $c02e add hl, bc bit 5, [hl] jp nz, Func_7d7b4 ld hl, $c09e add hl, bc ld e, [hl] ld hl, $c096 add hl, bc ld d, [hl] ld hl, $c07e add hl, bc ld l, [hl] ld h, b add hl, de ld d, h ld e, l ld hl, $c08e add hl, bc push hl ld hl, $c086 add hl, bc ld a, [hl] pop hl add [hl] ld [hl], a ld a, $0 adc e ld e, a ld a, $0 adc d ld d, a ld hl, $c0a6 add hl, bc ld a, [hl] cp d jp c, Func_7d7fa jr nz, asm_7d7e7 ld hl, $c0ae add hl, bc ld a, [hl] cp e jp c, Func_7d7fa jr asm_7d7e7 ; known jump sources: 7d773 (1f:5773) Func_7d7b4: ; 7d7b4 (1f:57b4) ld hl, $c09e add hl, bc ld a, [hl] ld hl, $c096 add hl, bc ld d, [hl] ld hl, $c07e add hl, bc ld e, [hl] sub e ld e, a ld a, d sbc b ld d, a ld hl, $c086 add hl, bc ld a, [hl] add a ld [hl], a ld a, e sbc b ld e, a ld a, d sbc b ld d, a ld hl, $c0a6 add hl, bc ld a, d cp [hl] jr c, Func_7d7fa jr nz, asm_7d7e7 ld hl, $c0ae add hl, bc ld a, e cp [hl] jr c, Func_7d7fa asm_7d7e7: ; 7d7e7 (1f:57e7) ld hl, $c09e add hl, bc ld [hl], e ld hl, $c096 add hl, bc ld [hl], d ld b, $3 call Func_7d8ac ld a, e ld [hli], a ld [hl], d ret ; known jump sources: 7d7a4 (1f:57a4), 7d7af (1f:57af), 7d7db (1f:57db), 7d7e5 (1f:57e5) Func_7d7fa: ; 7d7fa (1f:57fa) ld hl, $c02e add hl, bc res 4, [hl] res 5, [hl] ret ; known jump sources: 7d629 (1f:5629) Func_7d803: ; 7d803 (1f:5803) ld hl, $c096 add hl, bc ld [hl], d ld hl, $c09e add hl, bc ld [hl], e ld hl, $c0b6 add hl, bc ld a, [hl] ld hl, $c076 add hl, bc sub [hl] jr nc, .asm_7d81b ld a, $1 .asm_7d81b ld [hl], a ld hl, $c0ae add hl, bc ld a, e sub [hl] ld e, a ld a, d sbc b ld hl, $c0a6 add hl, bc sub [hl] jr c, .asm_7d837 ld d, a ld b, $0 ld hl, $c02e add hl, bc set 5, [hl] jr .asm_7d85a .asm_7d837 ld hl, $c096 add hl, bc ld d, [hl] ld hl, $c09e add hl, bc ld e, [hl] ld hl, $c0ae add hl, bc ld a, [hl] sub e ld e, a ld a, d sbc b ld d, a ld hl, $c0a6 add hl, bc ld a, [hl] sub d ld d, a ld b, $0 ld hl, $c02e add hl, bc res 5, [hl] .asm_7d85a ld hl, $c076 add hl, bc .asm_7d85e inc b ld a, e sub [hl] ld e, a jr nc, .asm_7d85e ld a, d and a jr z, .asm_7d86c dec a ld d, a jr .asm_7d85e .asm_7d86c ld a, e add [hl] ld d, b ld b, $0 ld hl, $c07e add hl, bc ld [hl], d ld hl, $c086 add hl, bc ld [hl], a ld hl, $c08e add hl, bc ld [hl], a ret ; known jump sources: 7d1d0 (1f:51d0) Func_7d881: ; 7d881 (1f:5881) ld b, $0 ld hl, $c046 add hl, bc ld a, [hl] rlca rlca ld [hl], a and $c0 ld d, a ld b, $1 call Func_7d8ac ld a, [hl] and $3f or d ld [hl], a ret ; known jump sources: 7d25a (1f:525a), 7d2ed (1f:52ed), 7d2f1 (1f:52f1), 7d322 (1f:5322), 7d336 (1f:5336), 7d339 (1f:5339), 7d341 (1f:5341), 7d345 (1f:5345), 7d36e (1f:536e), 7d3ad (1f:53ad), 7d3bc (1f:53bc), 7d3e5 (1f:53e5), 7d3ef (1f:53ef), 7d412 (1f:5412), 7d41d (1f:541d), 7d437 (1f:5437), 7d43d (1f:543d), 7d452 (1f:5452), 7d458 (1f:5458), 7d472 (1f:5472), 7d47f (1f:547f), 7d49e (1f:549e), 7d4bc (1f:54bc), 7d50c (1f:550c), 7d516 (1f:5516), 7d522 (1f:5522), 7d547 (1f:5547), 7d56e (1f:556e) Func_7d899: ; 7d899 (1f:5899) ld d, $0 ld a, c add a ld e, a ld hl, $c006 add hl, de ld a, [hli] ld e, a ld a, [hld] ld d, a ld a, [de] inc de ld [hl], e inc hl ld [hl], d ret ; known jump sources: 7d23f (1f:523f), 7d508 (1f:5508), 7d512 (1f:5512), 7d608 (1f:5608), 7d64a (1f:564a), 7d6ba (1f:56ba), 7d6fd (1f:56fd), 7d7f3 (1f:57f3), 7d890 (1f:5890) Func_7d8ac: ; 7d8ac (1f:58ac) ld a, c ld hl, $5b8b add l jr nc, .asm_7d8b4 inc h .asm_7d8b4 ld l, a ld a, [hl] add b ld l, a ld h, $ff ret ; known jump sources: 7d58d (1f:558d), 7d5ba (1f:55ba) Func_7d8bb: ; 7d8bb (1f:58bb) ld h, $0 .asm_7d8bd srl a jr nc, .asm_7d8c2 add hl, de .asm_7d8c2 sla e rl d and a jr z, .asm_7d8cb jr .asm_7d8bd .asm_7d8cb ret ; known jump sources: 7d3fb (1f:53fb), 7d61c (1f:561c) Func_7d8cc: ; 7d8cc (1f:58cc) ld h, $0 ld l, a add hl, hl ld d, h ld e, l ld hl, $5ba3 add hl, de ld e, [hl] inc hl ld d, [hl] ld a, b .asm_7d8da cp $7 jr z, .asm_7d8e5 sra d rr e inc a jr .asm_7d8da .asm_7d8e5 ld a, $8 add d ld d, a ret ; known jump sources: 7d483 (1f:5483), 7d579 (1f:5579) Func_7d8ea: ; 7d8ea (1f:58ea) ld [$c001], a cp $ff jp z, Func_7daa8 cp $c2 jp z, Func_7d9c2 jp c, Func_7d9c2 cp $fe jr z, .asm_7d901 jp nc, Func_7d9c2 .asm_7d901 xor a ld [$c000], a ld [$c003], a ld [$c0e9], a ld [$c0e6], a ld [$c0e7], a ld d, $8 ld hl, $c016 call Func_7dafd ld hl, $c006 call Func_7dafd ld d, $4 ld hl, $c026 call Func_7dafd ld hl, $c02e call Func_7dafd ld hl, $c03e call Func_7dafd ld hl, $c046 call Func_7dafd ld hl, $c04e call Func_7dafd ld hl, $c056 call Func_7dafd ld hl, $c05e call Func_7dafd ld hl, $c066 call Func_7dafd ld hl, $c06e call Func_7dafd ld hl, $c036 call Func_7dafd ld hl, $c076 call Func_7dafd ld hl, $c07e call Func_7dafd ld hl, $c086 call Func_7dafd ld hl, $c08e call Func_7dafd ld hl, $c096 call Func_7dafd ld hl, $c09e call Func_7dafd ld hl, $c0a6 call Func_7dafd ld hl, $c0ae call Func_7dafd ld a, $1 ld hl, $c0be call Func_7dafd ld hl, $c0b6 call Func_7dafd ld hl, $c0c6 call Func_7dafd ld [$c0e8], a ld a, $ff ld [$c004], a xor a ld [$FF00+$24], a ld a, $8 ld [$FF00+$10], a ld a, $0 ld [$FF00+$25], a xor a ld [$FF00+$1a], a ld a, $80 ld [$FF00+$1a], a ld a, $77 ld [$FF00+$24], a jp Func_7db03 ; known jump sources: 7d8f4 (1f:58f4), 7d8f7 (1f:58f7), 7d8fe (1f:58fe) Func_7d9c2: ; 7d9c2 (1f:59c2) ld l, a ld e, a ld h, $0 ld d, h add hl, hl add hl, de ld de, $4000 add hl, de ld a, h ld [$c0ec], a ld a, l ld [$c0ed], a ld a, [hl] and $c0 rlca rlca ld c, a ; known jump sources: 7daa5 (1f:5aa5) Func_7d9db: ; 7d9db (1f:59db) ld d, c ld a, c add a add c ld c, a ld b, $0 ld a, [$c0ec] ld h, a ld a, [$c0ed] ld l, a add hl, bc ld c, d ld a, [hl] and $f ld e, a ld d, $0 ld hl, $c026 add hl, de ld a, [hl] and a jr z, .asm_7da17 ld a, e cp $7 jr nz, .asm_7da0e ld a, [$c001] cp $14 jr nc, .asm_7da07 ret .asm_7da07 ld a, [hl] cp $14 jr z, .asm_7da17 jr c, .asm_7da17 .asm_7da0e ld a, [$c001] cp [hl] jr z, .asm_7da17 jr c, .asm_7da17 ret .asm_7da17 xor a push de ld h, d ld l, e add hl, hl ld d, h ld e, l ld hl, $c016 add hl, de ld [hli], a ld [hl], a ld hl, $c006 add hl, de ld [hli], a ld [hl], a pop de ld hl, $c026 add hl, de ld [hl], a ld hl, $c02e add hl, de ld [hl], a ld hl, $c03e add hl, de ld [hl], a ld hl, $c046 add hl, de ld [hl], a ld hl, $c04e add hl, de ld [hl], a ld hl, $c056 add hl, de ld [hl], a ld hl, $c05e add hl, de ld [hl], a ld hl, $c066 add hl, de ld [hl], a ld hl, $c06e add hl, de ld [hl], a ld hl, $c076 add hl, de ld [hl], a ld hl, $c07e add hl, de ld [hl], a ld hl, $c086 add hl, de ld [hl], a ld hl, $c08e add hl, de ld [hl], a ld hl, $c096 add hl, de ld [hl], a ld hl, $c09e add hl, de ld [hl], a ld hl, $c0a6 add hl, de ld [hl], a ld hl, $c0ae add hl, de ld [hl], a ld hl, $c036 add hl, de ld [hl], a ld a, $1 ld hl, $c0be add hl, de ld [hl], a ld hl, $c0b6 add hl, de ld [hl], a ld hl, $c0c6 add hl, de ld [hl], a ld a, e cp $4 jr nz, .asm_7da9f ld a, $8 ld [$FF00+$10], a .asm_7da9f ld a, c and a jp z, Func_7db03 dec c jp Func_7d9db ; known jump sources: 7d8ef (1f:58ef) Func_7daa8: ; 7daa8 (1f:5aa8) ld a, $80 ld [$FF00+$26], a ld [$FF00+$1a], a xor a ld [$FF00+$25], a ld [$FF00+$1c], a ld a, $8 ld [$FF00+$10], a ld [$FF00+$12], a ld [$FF00+$17], a ld [$FF00+$21], a ld a, $40 ld [$FF00+$14], a ld [$FF00+$19], a ld [$FF00+$23], a ld a, $77 ld [$FF00+$24], a xor a ld [$c000], a ld [$c003], a ld [$c002], a ld [$c0e9], a ld [$c0eb], a ld [$c0e6], a ld [$c0e7], a ld d, $a0 ld hl, $c006 call Func_7dafd ld a, $1 ld d, $18 ld hl, $c0b6 call Func_7dafd ld [$c0e8], a ld [$c0ea], a ld a, $ff ld [$c004], a ret ; known jump sources: 7d916 (1f:5916), 7d91c (1f:591c), 7d924 (1f:5924), 7d92a (1f:592a), 7d930 (1f:5930), 7d936 (1f:5936), 7d93c (1f:593c), 7d942 (1f:5942), 7d948 (1f:5948), 7d94e (1f:594e), 7d954 (1f:5954), 7d95a (1f:595a), 7d960 (1f:5960), 7d966 (1f:5966), 7d96c (1f:596c), 7d972 (1f:5972), 7d978 (1f:5978), 7d97e (1f:597e), 7d984 (1f:5984), 7d98a (1f:598a), 7d992 (1f:5992), 7d998 (1f:5998), 7d99e (1f:599e), 7dae4 (1f:5ae4), 7daee (1f:5aee) Func_7dafd: ; 7dafd (1f:5afd) ld b, d .asm_7dafe ld [hli], a dec b jr nz, .asm_7dafe ret ; known jump sources: 7d9bf (1f:59bf), 7daa1 (1f:5aa1) Func_7db03: ; 7db03 (1f:5b03) ld a, [$c001] ld l, a ld e, a ld h, $0 ld d, h add hl, hl add hl, de ld de, $4000 add hl, de ld e, l ld d, h ld hl, $c006 ld a, [de] ld b, a rlca rlca and $3 ld c, a ld a, b and $f ld b, c inc b inc de ld c, $0 .asm_7db25 cp c jr z, .asm_7db2d inc c inc hl inc hl jr .asm_7db25 .asm_7db2d push hl push bc push af ld b, $0 ld c, a ld hl, $c026 add hl, bc ld a, [$c001] ld [hl], a pop af cp $3 jr c, .asm_7db46 ld hl, $c02e add hl, bc set 2, [hl] .asm_7db46 pop bc pop hl ld a, [de] ld [hli], a inc de ld a, [de] ld [hli], a inc de inc c dec b ld a, b and a ld a, [de] inc de jr nz, .asm_7db25 ld a, [$c001] cp $14 jr nc, .asm_7db5f jr .asm_7db89 .asm_7db5f ld a, [$c001] cp $86 jr z, .asm_7db89 jr c, .asm_7db6a jr .asm_7db89 .asm_7db6a ld hl, $c02a ld [hli], a ld [hli], a ld [hli], a ld [hl], a ld hl, $c012 ld de, $5b8a ld [hl], e inc hl ld [hl], d ld a, [$c005] and a jr nz, .asm_7db89 ld a, [$FF00+$24] ld [$c005], a ld a, $77 ld [$FF00+$24], a .asm_7db89 ret INCBIN "baserom.gbc",$7db8a,$80000 - $7db8a 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 _BoulderText: ; 0x800b1 db $0, "This requires", $4f db "STRENGTH to move!", $57 _MartSignText: ; 0x800d2 db $0, "All your item", $4f db "needs fulfilled!", $55 db "#MON MART", $57 _PokeCenterSignText: ; 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 _FoundHiddenCoinsText: ; 0x8950b db $0, $52, " found", $4f db "@" db $2, $a0, $ff, $c2 ; XXX $2 db $0, " coins!@@" ; 0x89523 _FoundHiddenCoins2Text: ; 0x89523 db $0, $52, " found", $4f db "@" db $2, $a0, $ff, $c2 ; XXX $2 probably coins db $0, " coins!@@" ; 0x8953a _DroppedHiddenCoinsText: ; 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 ¥@" ;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 "¥@" 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 ¥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 ¥@" ; 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 ¥!", $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 ¥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 _VoltorbBattleText: ; 0x8c5e2 db $0, "Bzzzt!", $57 ; 0x8c5e2 + 8 bytes _ZapdosBattleText: ; 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 _ViridianMartText4: ; 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 ¥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, ¥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 ¥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 ¥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 ¥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 ¥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 ¥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 "¥@" 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 "¥@" 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@"