INCLUDE "constants.asm" NPC_SPRITES_1 EQU $4 NPC_SPRITES_2 EQU $5 GFX EQU $4 PICS_1 EQU $9 PICS_2 EQU $A PICS_3 EQU $B PICS_4 EQU $C PICS_5 EQU $D INCLUDE "home.asm" SECTION "bank1",ROMX,BANK[$1] INCLUDE "data/facing.asm" INCLUDE "engine/black_out.asm" MewPicFront:: INCBIN "pic/bmon/mew.pic" MewPicBack:: INCBIN "pic/monback/mewb.pic" INCLUDE "data/baseStats/mew.asm" INCLUDE "engine/battle/safari_zone.asm" INCLUDE "engine/titlescreen.asm" INCLUDE "engine/load_mon_data.asm" INCLUDE "data/item_prices.asm" INCLUDE "text/item_names.asm" INCLUDE "text/unused_names.asm" INCLUDE "engine/overworld/oam.asm" INCLUDE "engine/oam_dma.asm" INCLUDE "engine/print_waiting_text.asm" INCLUDE "engine/overworld/map_sprite_functions1.asm" INCLUDE "engine/test_battle.asm" INCLUDE "engine/overworld/item.asm" INCLUDE "engine/overworld/movement.asm" INCLUDE "engine/cable_club.asm" INCLUDE "engine/menu/main_menu.asm" INCLUDE "engine/oak_speech.asm" INCLUDE "engine/special_warps.asm" INCLUDE "engine/debug1.asm" INCLUDE "engine/menu/naming_screen.asm" INCLUDE "engine/oak_speech2.asm" INCLUDE "engine/subtract_paid_money.asm" INCLUDE "engine/menu/swap_items.asm" INCLUDE "engine/overworld/pokemart.asm" INCLUDE "engine/learn_move.asm" INCLUDE "engine/overworld/pokecenter.asm" INCLUDE "engine/overworld/set_blackout_map.asm" INCLUDE "engine/display_text_id_init.asm" INCLUDE "engine/menu/draw_start_menu.asm" INCLUDE "engine/overworld/cable_club_npc.asm" INCLUDE "engine/menu/text_box.asm" INCLUDE "engine/battle/moveEffects/drain_hp_effect.asm" INCLUDE "engine/menu/players_pc.asm" INCLUDE "engine/remove_pokemon.asm" INCLUDE "engine/display_pokedex.asm" SECTION "bank3",ROMX,BANK[$3] INCLUDE "engine/joypad.asm" INCLUDE "data/map_songs.asm" INCLUDE "data/map_header_banks.asm" ClearVariablesAfterLoadingMapData: ld a, SCREEN_HEIGHT_PIXELS ld [hWY], a ld [rWY], a xor a ld [H_AUTOBGTRANSFERENABLED], a ld [wStepCounter], a ld [wLoneAttackNo], a ld [hJoyPressed], a ld [hJoyReleased], a ld [hJoyHeld], a ld [wActionResultOrTookBattleTurn], a ld [wUnusedD5A3], a ld hl, wCardKeyDoorY ld [hli], a ld [hl], a ld hl, wWhichTrade ld bc, wStandingOnWarpPadOrHole - wWhichTrade call FillMemory ret ; only used for setting bit 2 of wd736 upon entering a new map IsPlayerStandingOnWarp: ld a, [wNumberOfWarps] and a ret z ld c, a ld hl, wWarpEntries .loop ld a, [wYCoord] cp [hl] jr nz, .nextWarp1 inc hl ld a, [wXCoord] cp [hl] jr nz, .nextWarp2 inc hl ld a, [hli] ; target warp ld [wDestinationWarpID], a ld a, [hl] ; target map ld [hWarpDestinationMap], a ld hl, wd736 set 2, [hl] ; standing on warp flag ret .nextWarp1 inc hl .nextWarp2 inc hl inc hl inc hl dec c jr nz, .loop ret CheckForceBikeOrSurf: ld hl, wd732 bit 5, [hl] ret nz ld hl, ForcedBikeOrSurfMaps ld a, [wYCoord] ld b, a ld a, [wXCoord] ld c, a ld a, [wCurMap] 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, [wCurMap] cp SEAFOAM_ISLANDS_4 ld a, $2 ld [wSeafoamIslands4CurScript], a jr z, .forceSurfing ld a, [wCurMap] cp SEAFOAM_ISLANDS_5 ld a, $2 ld [wSeafoamIslands5CurScript], a jr z, .forceSurfing ;force bike riding ld hl, wd732 set 5, [hl] ld a, $1 ld [wWalkBikeSurfState], a ld [wWalkBikeSurfStateCopy], a jp ForceBikeOrSurf .incorrectMap inc hl .incorrectY inc hl jr .loop .forceSurfing ld a, $2 ld [wWalkBikeSurfState], a ld [wWalkBikeSurfStateCopy], a jp ForceBikeOrSurf INCLUDE "data/force_bike_surf.asm" IsPlayerFacingEdgeOfMap: push hl push de push bc ld a, [wSpriteStateData1 + 9] ; player sprite's facing direction srl a ld c, a ld b, $0 ld hl, .functionPointerTable add hl, bc ld a, [hli] ld h, [hl] ld l, a ld a, [wYCoord] ld b, a ld a, [wXCoord] ld c, a ld de, .asm_c41e push de jp [hl] .asm_c41e pop bc pop de pop hl ret .functionPointerTable dw .facingDown dw .facingUp dw .facingLeft dw .facingRight .facingDown ld a, [wCurMapHeight] add a dec a cp b jr z, .setCarry jr .resetCarry .facingUp ld a, b and a jr z, .setCarry jr .resetCarry .facingLeft ld a, c and a jr z, .setCarry jr .resetCarry .facingRight ld a, [wCurMapWidth] add a dec a cp c jr z, .setCarry jr .resetCarry .resetCarry and a ret .setCarry scf ret IsWarpTileInFrontOfPlayer: push hl push de push bc call _GetTileAndCoordsInFrontOfPlayer ld a, [wCurMap] cp SS_ANNE_5 jr z, .ssAnne5 ld a, [wSpriteStateData1 + 9] ; player sprite's facing direction srl a ld c, a ld b, 0 ld hl, .warpTileListPointers add hl, bc ld a, [hli] ld h, [hl] ld l, a ld a, [wTileInFrontOfPlayer] ld de, $1 call IsInArray .done pop bc pop de pop hl ret .warpTileListPointers: dw .facingDownWarpTiles dw .facingUpWarpTiles dw .facingLeftWarpTiles dw .facingRightWarpTiles .facingDownWarpTiles db $01,$12,$17,$3D,$04,$18,$33,$FF .facingUpWarpTiles db $01,$5C,$FF .facingLeftWarpTiles db $1A,$4B,$FF .facingRightWarpTiles db $0F,$4E,$FF .ssAnne5 ld a, [wTileInFrontOfPlayer] cp $15 jr nz, .notSSAnne5Warp scf jr .done .notSSAnne5Warp and a jr .done IsPlayerStandingOnDoorTileOrWarpTile: push hl push de push bc callba IsPlayerStandingOnDoorTile jr c, .done ld a, [wCurMapTileset] add a ld c, a ld b, $0 ld hl, WarpTileIDPointers add hl, bc ld a, [hli] ld h, [hl] ld l, a ld de, $1 aCoord 8, 9 call IsInArray jr nc, .done ld hl, wd736 res 2, [hl] .done pop bc pop de pop hl ret INCLUDE "data/warp_tile_ids.asm" PrintSafariZoneSteps: ld a, [wCurMap] cp SAFARI_ZONE_EAST ret c cp UNKNOWN_DUNGEON_2 ret nc coord hl, 0, 0 ld b, 3 ld c, 7 call TextBoxBorder coord hl, 1, 1 ld de, wSafariSteps lb bc, 2, 3 call PrintNumber coord hl, 4, 1 ld de, SafariSteps call PlaceString coord hl, 1, 3 ld de, SafariBallText call PlaceString ld a, [wNumSafariBalls] cp 10 jr nc, .asm_c56d coord hl, 5, 3 ld a, " " ld [hl], a .asm_c56d coord hl, 6, 3 ld de, wNumSafariBalls lb bc, 1, 2 jp PrintNumber SafariSteps: db "/500@" SafariBallText: db "BALL×× @" GetTileAndCoordsInFrontOfPlayer: call GetPredefRegisters _GetTileAndCoordsInFrontOfPlayer: ld a, [wYCoord] ld d, a ld a, [wXCoord] ld e, a ld a, [wSpriteStateData1 + 9] ; player's sprite facing direction and a ; cp SPRITE_FACING_DOWN jr nz, .notFacingDown ; facing down aCoord 8, 11 inc d jr .storeTile .notFacingDown cp SPRITE_FACING_UP jr nz, .notFacingUp ; facing up aCoord 8, 7 dec d jr .storeTile .notFacingUp cp SPRITE_FACING_LEFT jr nz, .notFacingLeft ; facing left aCoord 6, 9 dec e jr .storeTile .notFacingLeft cp SPRITE_FACING_RIGHT jr nz, .storeTile ; facing right aCoord 10, 9 inc e .storeTile ld c, a ld [wTileInFrontOfPlayer], a ret GetTileTwoStepsInFrontOfPlayer: xor a ld [$ffdb], a ld hl, wYCoord ld a, [hli] ld d, a ld e, [hl] ld a, [wSpriteStateData1 + 9] ; player's sprite facing direction and a ; cp SPRITE_FACING_DOWN jr nz, .notFacingDown ; facing down ld hl, $ffdb set 0, [hl] aCoord 8, 13 inc d jr .storeTile .notFacingDown cp SPRITE_FACING_UP jr nz, .notFacingUp ; facing up ld hl, $ffdb set 1, [hl] aCoord 8, 5 dec d jr .storeTile .notFacingUp cp SPRITE_FACING_LEFT jr nz, .notFacingLeft ; facing left ld hl, $ffdb set 2, [hl] aCoord 4, 9 dec e jr .storeTile .notFacingLeft cp SPRITE_FACING_RIGHT jr nz, .storeTile ; facing right ld hl, $ffdb set 3, [hl] aCoord 12, 9 inc e .storeTile ld c, a ld [wTileInFrontOfBoulderAndBoulderCollisionResult], a ld [wTileInFrontOfPlayer], a ret CheckForCollisionWhenPushingBoulder: call GetTileTwoStepsInFrontOfPlayer ld hl, wTilesetCollisionPtr ld a, [hli] ld h, [hl] ld l, a .loop ld a, [hli] cp $ff jr z, .done ; if the tile two steps ahead is not passable cp c jr nz, .loop ld hl, TilePairCollisionsLand call CheckForTilePairCollisions2 ld a, $ff jr c, .done ; if there is an elevation difference between the current tile and the one two steps ahead ld a, [wTileInFrontOfBoulderAndBoulderCollisionResult] cp $15 ; stairs tile ld a, $ff jr z, .done ; if the tile two steps ahead is stairs call CheckForBoulderCollisionWithSprites .done ld [wTileInFrontOfBoulderAndBoulderCollisionResult], a ret ; sets a to $ff if there is a collision and $00 if there is no collision CheckForBoulderCollisionWithSprites: ld a, [wBoulderSpriteIndex] dec a swap a ld d, 0 ld e, a ld hl, wSpriteStateData2 + $14 add hl, de ld a, [hli] ; map Y position ld [$ffdc], a ld a, [hl] ; map X position ld [$ffdd], a ld a, [wNumSprites] ld c, a ld de, $f ld hl, wSpriteStateData2 + $14 ld a, [$ffdb] and $3 ; facing up or down? jr z, .pushingHorizontallyLoop .pushingVerticallyLoop inc hl ld a, [$ffdd] cp [hl] jr nz, .nextSprite1 ; if X coordinates don't match dec hl ld a, [hli] ld b, a ld a, [$ffdb] rrca jr c, .pushingDown ; pushing up ld a, [$ffdc] dec a jr .compareYCoords .pushingDown ld a, [$ffdc] inc a .compareYCoords cp b jr z, .failure .nextSprite1 dec c jr z, .success add hl, de jr .pushingVerticallyLoop .pushingHorizontallyLoop ld a, [hli] ld b, a ld a, [$ffdc] cp b jr nz, .nextSprite2 ld b, [hl] ld a, [$ffdb] bit 2, a jr nz, .pushingLeft ; pushing right ld a, [$ffdd] inc a jr .compareXCoords .pushingLeft ld a, [$ffdd] dec a .compareXCoords cp b jr z, .failure .nextSprite2 dec c jr z, .success add hl, de jr .pushingHorizontallyLoop .failure ld a, $ff ret .success xor a ret ApplyOutOfBattlePoisonDamage: ld a, [wd730] add a jp c, .noBlackOut ; no black out if joypad states are being simulated ld a, [wPartyCount] and a jp z, .noBlackOut call IncrementDayCareMonExp ld a, [wStepCounter] and $3 ; is the counter a multiple of 4? jp nz, .noBlackOut ; only apply poison damage every fourth step ld [wWhichPokemon], a ld hl, wPartyMon1Status ld de, wPartySpecies .applyDamageLoop ld a, [hl] and (1 << PSN) jr z, .nextMon2 ; not poisoned dec hl dec hl ld a, [hld] ld b, a ld a, [hli] or b jr z, .nextMon ; already fainted ; subtract 1 from HP ld a, [hl] dec a ld [hld], a inc a jr nz, .noBorrow ; borrow 1 from upper byte of HP dec [hl] inc hl jr .nextMon .noBorrow ld a, [hli] or [hl] jr nz, .nextMon ; didn't faint from damage ; the mon fainted from the damage push hl inc hl inc hl ld [hl], a ld a, [de] ld [wd11e], a push de ld a, [wWhichPokemon] ld hl, wPartyMonNicks call GetPartyMonName xor a ld [wJoyIgnore], a call EnableAutoTextBoxDrawing ld a, $d0 ld [hSpriteIndexOrTextID], a call DisplayTextID pop de pop hl .nextMon inc hl inc hl .nextMon2 inc de ld a, [de] inc a jr z, .applyDamageLoopDone ld bc, wPartyMon2 - wPartyMon1 add hl, bc push hl ld hl, wWhichPokemon inc [hl] pop hl jr .applyDamageLoop .applyDamageLoopDone ld hl, wPartyMon1Status ld a, [wPartyCount] ld d, a ld e, 0 .countPoisonedLoop ld a, [hl] and (1 << PSN) or e ld e, a ld bc, wPartyMon2 - wPartyMon1 add hl, bc dec d jr nz, .countPoisonedLoop ld a, e and a ; are any party members poisoned? jr z, .skipPoisonEffectAndSound ld b, $2 predef ChangeBGPalColor0_4Frames ; change BG white to dark grey for 4 frames ld a, SFX_POISONED call PlaySound .skipPoisonEffectAndSound predef AnyPartyAlive ld a, d and a jr nz, .noBlackOut call EnableAutoTextBoxDrawing ld a, $d1 ld [hSpriteIndexOrTextID], a call DisplayTextID ld hl, wd72e set 5, [hl] ld a, $ff jr .done .noBlackOut xor a .done ld [wOutOfBattleBlackout], a ret LoadTilesetHeader: call GetPredefRegisters push hl ld d, 0 ld a, [wCurMapTileset] add a add a ld b, a add a add b ; a = tileset * 12 jr nc, .noCarry inc d .noCarry ld e, a ld hl, Tilesets add hl, de ld de, wTilesetBank ld c, $b .copyTilesetHeaderLoop ld a, [hli] ld [de], a inc de dec c jr nz, .copyTilesetHeaderLoop ld a, [hl] ld [hTilesetType], a xor a ld [$ffd8], a pop hl ld a, [wCurMapTileset] push hl push de ld hl, DungeonTilesets ld de, $1 call IsInArray pop de pop hl jr c, .asm_c797 ld a, [wCurMapTileset] ld b, a ld a, [hPreviousTileset] cp b jr z, .done .asm_c797 ld a, [wDestinationWarpID] cp $ff jr z, .done call LoadDestinationWarpPosition ld a, [wYCoord] and $1 ld [wYBlockCoord], a ld a, [wXCoord] and $1 ld [wXBlockCoord], a .done ret INCLUDE "data/dungeon_tilesets.asm" INCLUDE "data/tileset_headers.asm" IncrementDayCareMonExp: ld a, [wDayCareInUse] and a ret z ld hl, wDayCareMonExp + 2 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 INCLUDE "data/hide_show_data.asm" PrintStrengthTxt: ld hl, wd728 set 0, [hl] ld hl, UsedStrengthText call PrintText ld hl, CanMoveBouldersText jp PrintText UsedStrengthText: TX_FAR _UsedStrengthText TX_ASM ld a, [wcf91] call PlayCry call Delay3 jp TextScriptEnd CanMoveBouldersText: TX_FAR _CanMoveBouldersText db "@" IsSurfingAllowed: ; Returns whether surfing is allowed in bit 1 of wd728. ; Surfing isn't allowed on the Cycling Road or in the lowest level of the ; Seafoam Islands before the current has been slowed with boulders. ld hl, wd728 set 1, [hl] ld a, [wd732] bit 5, a jr nz, .forcedToRideBike ld a, [wCurMap] cp SEAFOAM_ISLANDS_5 ret nz CheckBothEventsSet EVENT_SEAFOAM4_BOULDER1_DOWN_HOLE, EVENT_SEAFOAM4_BOULDER2_DOWN_HOLE ret z ld hl, CoordsData_cdf7 call ArePlayerCoordsInArray ret nc ld hl, wd728 res 1, [hl] ld hl, CurrentTooFastText jp PrintText .forcedToRideBike ld hl, wd728 res 1, [hl] ld hl, CyclingIsFunText jp PrintText CoordsData_cdf7: db $0B,$07,$FF CurrentTooFastText: TX_FAR _CurrentTooFastText db "@" CyclingIsFunText: TX_FAR _CyclingIsFunText db "@" ; function to add an item (in varying quantities) to the player's bag or PC box ; INPUT: ; hl = address of inventory (either wNumBagItems or wNumBoxItems) ; [wcf91] = item ID ; [wItemQuantity] = item quantity ; sets carry flag if successful, unsets carry flag if unsuccessful AddItemToInventory_: ld a,[wItemQuantity] ; a = item quantity push af push bc push de push hl push hl ld d,PC_ITEM_CAPACITY ; how many items the PC can hold ld a,wNumBagItems & $FF cp l jr nz,.checkIfInventoryFull ld a,wNumBagItems >> 8 cp h jr nz,.checkIfInventoryFull ; if the destination is the bag ld d,BAG_ITEM_CAPACITY ; how many items the bag can hold .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,[wcf91] ; 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,[wcf91] ld [hli],a ; store item ID ld a,[wItemQuantity] 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,[wItemQuantity] 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 [wItemQuantity],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 [wItemQuantity],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 wNumBagItems or wNumBoxItems) ; [wWhichPokemon] = index (within the inventory) of the item to remove ; [wItemQuantity] = quantity to remove RemoveItemFromInventory_: push hl inc hl ld a,[wWhichPokemon] ; 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,[wItemQuantity] ; quantity being removed ld e,a ld a,[hl] ; a = current quantity sub e ld [hld],a ; store new quantity ld [wMaxItemQuantity],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 [wListScrollOffset],a ld [wCurrentMenuItem],a ld [wBagSavedMenuItem],a ld [wSavedListScrollOffset],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 [wListCount],a cp a,2 jr c,.done ld [wMaxMenuItem],a jr .done .skipMovingUpSlots pop hl .done ret ; wild pokemon data: from 4EB8 to 55C7 LoadWildData: ld hl,WildDataPointers ld a,[wCurMap] ; 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 [wGrassRate],a and a jr z,.NoGrassData ; if no grass data, skip to surfing data push hl ld de,wGrassMons ; otherwise, load grass data ld bc,$0014 call CopyData pop hl ld bc,$0014 add hl,bc .NoGrassData ld a,[hli] ld [wWaterRate],a and a ret z ; if no water data, we're done ld de,wWaterMons ; otherwise, load surfing data ld bc,$0014 jp CopyData INCLUDE "data/wild_mons.asm" INCLUDE "engine/items/items.asm" DrawBadges: ; Draw 4x2 gym leader faces, with the faces replaced by ; badges if they are owned. Used in the player status screen. ; In Japanese versions, names are displayed above faces. ; Instead of removing relevant code, the name graphics were erased. ; Tile ids for face/badge graphics. ld de, wBadgeOrFaceTiles ld hl, .FaceBadgeTiles ld bc, 8 call CopyData ; Booleans for each badge. ld hl, wTempObtainedBadgesBooleans ld bc, 8 xor a call FillMemory ; Alter these based on owned badges. ld de, wTempObtainedBadgesBooleans ld hl, wBadgeOrFaceTiles ld a, [wObtainedBadges] ld b, a ld c, 8 .CheckBadge srl b jr nc, .NextBadge ld a, [hl] add 4 ; Badge graphics are after each face ld [hl], a ld a, 1 ld [de], a .NextBadge inc hl inc de dec c jr nz, .CheckBadge ; Draw two rows of badges. ld hl, wBadgeNumberTile ld a, $d8 ; [1] ld [hli], a ld [hl], $60 ; First name coord hl, 2, 11 ld de, wTempObtainedBadgesBooleans call .DrawBadgeRow coord hl, 2, 14 ld de, wTempObtainedBadgesBooleans + 4 ; call .DrawBadgeRow ; ret .DrawBadgeRow ; Draw 4 badges. ld c, 4 .DrawBadge push de push hl ; Badge no. ld a, [wBadgeNumberTile] ld [hli], a inc a ld [wBadgeNumberTile], a ; Names aren't printed if the badge is owned. ld a, [de] and a ld a, [wBadgeNameTile] jr nz, .SkipName call .PlaceTiles jr .PlaceBadge .SkipName inc a inc a inc hl .PlaceBadge ld [wBadgeNameTile], a ld de, SCREEN_WIDTH - 1 add hl, de ld a, [wBadgeOrFaceTiles] call .PlaceTiles add hl, de call .PlaceTiles ; Shift badge array back one byte. push bc ld hl, wBadgeOrFaceTiles + 1 ld de, wBadgeOrFaceTiles ld bc, 8 call CopyData pop bc pop hl ld de, 4 add hl, de pop de inc de dec c jr nz, .DrawBadge ret .PlaceTiles ld [hli], a inc a ld [hl], a inc a ret .FaceBadgeTiles db $20, $28, $30, $38, $40, $48, $50, $58 GymLeaderFaceAndBadgeTileGraphics: INCBIN "gfx/badges.2bpp" ; replaces a tile block with the one specified in [wNewTileBlockID] ; and redraws the map view if necessary ; b = Y ; c = X ReplaceTileBlock: call GetPredefRegisters ld hl, wOverworldMap ld a, [wCurMapWidth] add $6 ld e, a ld d, $0 add hl, de add hl, de add hl, de ld e, $3 add hl, de ld e, a ld a, b and a jr z, .addX ; add width * Y .addWidthYTimesLoop add hl, de dec b jr nz, .addWidthYTimesLoop .addX add hl, bc ; add X ld a, [wNewTileBlockID] ld [hl], a ld a, [wCurrentTileBlockMapViewPointer] ld c, a ld a, [wCurrentTileBlockMapViewPointer + 1] ld b, a call CompareHLWithBC ret c ; return if the replaced tile block is below the map view in memory push hl ld l, e ld h, $0 ld e, $6 ld d, h add hl, hl add hl, hl add hl, de add hl, bc pop bc call CompareHLWithBC ret c ; return if the replaced tile block is above the map view in memory RedrawMapView: ld a, [wIsInBattle] inc a ret z ld a, [H_AUTOBGTRANSFERENABLED] push af ld a, [hTilesetType] push af xor a ld [H_AUTOBGTRANSFERENABLED], a ld [hTilesetType], a ; no flower/water BG tile animations call LoadCurrentMapView call RunDefaultPaletteCommand ld hl, wMapViewVRAMPointer ld a, [hli] ld h, [hl] ld l, a ld de, -2 * 32 add hl, de ld a, h and $3 or $98 ld a, l ld [wBuffer], a ld a, h ld [wBuffer + 1], a ; this copy of the address is not used ld a, 2 ld [$ffbe], a ld c, 9 ; number of rows of 2x2 tiles (this covers the whole screen) .redrawRowLoop push bc push hl push hl ld hl, wTileMap - 2 * SCREEN_WIDTH ld de, SCREEN_WIDTH ld a, [$ffbe] .calcWRAMAddrLoop add hl, de dec a jr nz, .calcWRAMAddrLoop call CopyToRedrawRowOrColumnSrcTiles pop hl ld de, $20 ld a, [$ffbe] ld c, a .calcVRAMAddrLoop add hl, de ld a, h and $3 or $98 dec c jr nz, .calcVRAMAddrLoop ld [hRedrawRowOrColumnDest + 1], a ld a, l ld [hRedrawRowOrColumnDest], a ld a, REDRAW_ROW ld [hRedrawRowOrColumnMode], a call DelayFrame ld hl, $ffbe inc [hl] inc [hl] pop hl pop bc dec c jr nz, .redrawRowLoop pop af ld [hTilesetType], a pop af ld [H_AUTOBGTRANSFERENABLED], a ret CompareHLWithBC: ld a, h sub b ret nz ld a, l sub c ret INCLUDE "engine/overworld/cut.asm" MarkTownVisitedAndLoadMissableObjects: ld a, [wCurMap] cp ROUTE_1 jr nc, .notInTown ld c, a ld b, FLAG_SET ld hl, wTownVisitedFlag ; mark town as visited (for flying) predef FlagActionPredef .notInTown ld hl, MapHSPointers ld a, [wCurMap] ld b, $0 ld c, a add hl, bc add hl, bc ld a, [hli] ; load missable objects pointer in hl ld h, [hl] ; fall through LoadMissableObjects: ld l, a push hl ld de, MapHS00 ; calculate difference between out pointer and the base pointer ld a, l sub e jr nc, .asm_f13c dec h .asm_f13c ld l, a ld a, h sub d ld h, a ld a, h ld [H_DIVIDEND], a ld a, l ld [H_DIVIDEND+1], a xor a ld [H_DIVIDEND+2], a ld [H_DIVIDEND+3], a ld a, $3 ld [H_DIVISOR], a ld b, $2 call Divide ; divide difference by 3, resulting in the global offset (number of missable items before ours) ld a, [wCurMap] ld b, a ld a, [H_DIVIDEND+3] ld c, a ; store global offset in c ld de, wMissableObjectList pop hl .writeMissableObjectsListLoop ld a, [hli] cp $ff jr z, .done ; end of list cp b jr nz, .done ; not for current map anymore ld a, [hli] inc hl ld [de], a ; write (map-local) sprite ID inc de ld a, c inc c ld [de], a ; write (global) missable object index inc de jr .writeMissableObjectsListLoop .done ld a, $ff ld [de], a ; write sentinel ret InitializeMissableObjectsFlags: ld hl, wMissableObjectFlags ld bc, wMissableObjectFlagsEnd - wMissableObjectFlags xor a call FillMemory ; clear missable objects flags ld hl, MapHS00 xor a ld [wMissableObjectCounter], a .missableObjectsLoop ld a, [hli] cp $ff ; end of list ret z push hl inc hl ld a, [hl] cp Hide jr nz, .skip ld hl, wMissableObjectFlags ld a, [wMissableObjectCounter] ld c, a ld b, FLAG_SET call MissableObjectFlagAction ; set flag if Item is hidden .skip ld hl, wMissableObjectCounter inc [hl] pop hl inc hl inc hl jr .missableObjectsLoop ; tests if current sprite is a missable object that is hidden/has been removed IsObjectHidden: ld a, [H_CURRENTSPRITEOFFSET] swap a ld b, a ld hl, wMissableObjectList .loop ld a, [hli] cp $ff jr z, .notHidden ; not missable -> not hidden cp b ld a, [hli] jr nz, .loop ld c, a ld b, FLAG_TEST ld hl, wMissableObjectFlags call MissableObjectFlagAction ld a, c and a jr nz, .hidden .notHidden xor a .hidden ld [$ffe5], a ret ; adds missable object (items, leg. pokemon, etc.) to the map ; [wMissableObjectIndex]: index of the missable object to be added (global index) ShowObject: ShowObject2: ld hl, wMissableObjectFlags ld a, [wMissableObjectIndex] ld c, a ld b, FLAG_RESET call MissableObjectFlagAction ; reset "removed" flag jp UpdateSprites ; removes missable object (items, leg. pokemon, etc.) from the map ; [wMissableObjectIndex]: index of the missable object to be removed (global index) HideObject: ld hl, wMissableObjectFlags ld a, [wMissableObjectIndex] ld c, a ld b, FLAG_SET call MissableObjectFlagAction ; set "removed" flag jp UpdateSprites MissableObjectFlagAction: ; identical to FlagAction push hl push de push bc ; bit ld a, c ld d, a and 7 ld e, a ; byte ld a, d srl a srl a srl a add l ld l, a jr nc, .ok inc h .ok ; d = 1 << e (bitmask) inc e ld d, 1 .shift dec e jr z, .shifted sla d jr .shift .shifted ld a, b and a jr z, .reset cp 2 jr z, .read .set ld a, [hl] ld b, a ld a, d or b ld [hl], a jr .done .reset ld a, [hl] ld b, a ld a, d xor $ff and b ld [hl], a jr .done .read ld a, [hl] ld b, a ld a, d and b .done pop bc pop de pop hl ld c, a ret TryPushingBoulder: ld a, [wd728] bit 0, a ; using Strength? ret z ld a, [wFlags_0xcd60] bit 1, a ; has boulder dust animation from previous push played yet? ret nz xor a ld [hSpriteIndexOrTextID], a call IsSpriteInFrontOfPlayer ld a, [hSpriteIndexOrTextID] ld [wBoulderSpriteIndex], a and a jp z, ResetBoulderPushFlags ld hl, wSpriteStateData1 + 1 ld d, $0 ld a, [hSpriteIndexOrTextID] swap a ld e, a add hl, de res 7, [hl] call GetSpriteMovementByte2Pointer ld a, [hl] cp BOULDER_MOVEMENT_BYTE_2 jp nz, ResetBoulderPushFlags ld hl, wFlags_0xcd60 bit 6, [hl] set 6, [hl] ; indicate that the player has tried pushing ret z ; the player must try pushing twice before the boulder will move ld a, [hJoyHeld] and D_RIGHT | D_LEFT | D_UP | D_DOWN ret z predef CheckForCollisionWhenPushingBoulder ld a, [wTileInFrontOfBoulderAndBoulderCollisionResult] and a ; was there a collision? jp nz, ResetBoulderPushFlags ld a, [hJoyHeld] ld b, a ld a, [wSpriteStateData1 + 9] ; player's sprite facing direction cp SPRITE_FACING_UP jr z, .pushBoulderUp cp SPRITE_FACING_LEFT jr z, .pushBoulderLeft cp SPRITE_FACING_RIGHT jr z, .pushBoulderRight .pushBoulderDown bit 7, b ret z ld de, PushBoulderDownMovementData jr .done .pushBoulderUp bit 6, b ret z ld de, PushBoulderUpMovementData jr .done .pushBoulderLeft bit 5, b ret z ld de, PushBoulderLeftMovementData jr .done .pushBoulderRight bit 4, b ret z ld de, PushBoulderRightMovementData .done call MoveSprite ld a, SFX_PUSH_BOULDER call PlaySound ld hl, wFlags_0xcd60 set 1, [hl] ret PushBoulderUpMovementData: db NPC_MOVEMENT_UP,$FF PushBoulderDownMovementData: db NPC_MOVEMENT_DOWN,$FF PushBoulderLeftMovementData: db NPC_MOVEMENT_LEFT,$FF PushBoulderRightMovementData: db NPC_MOVEMENT_RIGHT,$FF DoBoulderDustAnimation: ld a, [wd730] bit 0, a ret nz callab AnimateBoulderDust call DiscardButtonPresses ld [wJoyIgnore], a call ResetBoulderPushFlags set 7, [hl] ld a, [wBoulderSpriteIndex] ld [H_SPRITEINDEX], a call GetSpriteMovementByte2Pointer ld [hl], $10 ld a, SFX_CUT jp PlaySound ResetBoulderPushFlags: ld hl, wFlags_0xcd60 res 1, [hl] res 6, [hl] ret _AddPartyMon: ; Adds a new mon to the player's or enemy's party. ; [wMonDataLocation] is used in an unusual way in this function. ; If the lower nybble is 0, the mon is added to the player's party, else the enemy's. ; If the entire value is 0, then the player is allowed to name the mon. ld de, wPartyCount ld a, [wMonDataLocation] and $f jr z, .next ld de, wEnemyPartyCount .next ld a, [de] inc a cp PARTY_LENGTH + 1 ret nc ; return if the party is already full ld [de], a ld a, [de] ld [hNewPartyLength], a add e ld e, a jr nc, .noCarry inc d .noCarry ld a, [wcf91] ld [de], a ; write species of new mon in party list inc de ld a, $ff ; terminator ld [de], a ld hl, wPartyMonOT ld a, [wMonDataLocation] and $f jr z, .next2 ld hl, wEnemyMonOT .next2 ld a, [hNewPartyLength] dec a call SkipFixedLengthTextEntries ld d, h ld e, l ld hl, wPlayerName ld bc, NAME_LENGTH call CopyData ld a, [wMonDataLocation] and a jr nz, .skipNaming ld hl, wPartyMonNicks ld a, [hNewPartyLength] dec a call SkipFixedLengthTextEntries ld a, NAME_MON_SCREEN ld [wNamingScreenType], a predef AskName .skipNaming ld hl, wPartyMons ld a, [wMonDataLocation] and $f jr z, .next3 ld hl, wEnemyMons .next3 ld a, [hNewPartyLength] dec a ld bc, wPartyMon2 - wPartyMon1 call AddNTimes ld e, l ld d, h push hl ld a, [wcf91] ld [wd0b5], a call GetMonHeader ld hl, wMonHeader ld a, [hli] ld [de], a ; species inc de pop hl push hl ld a, [wMonDataLocation] and $f ld a, $98 ; set enemy trainer mon IVs to fixed average values ld b, $88 jr nz, .next4 ; If the mon is being added to the player's party, update the pokedex. ld a, [wcf91] ld [wd11e], a push de predef IndexToPokedex pop de ld a, [wd11e] dec a ld c, a ld b, FLAG_TEST ld hl, wPokedexOwned call FlagAction ld a, c ; whether the mon was already flagged as owned ld [wUnusedD153], a ; not read ld a, [wd11e] dec a ld c, a ld b, FLAG_SET push bc call FlagAction pop bc ld hl, wPokedexSeen call FlagAction pop hl push hl ld a, [wIsInBattle] and a ; is this a wild mon caught in battle? jr nz, .copyEnemyMonData ; Not wild. call Random ; generate random IVs ld b, a call Random .next4 push bc ld bc, wPartyMon1DVs - wPartyMon1 add hl, bc pop bc ld [hli], a ld [hl], b ; write IVs ld bc, (wPartyMon1HPExp - 1) - (wPartyMon1DVs + 1) add hl, bc ld a, 1 ld c, a xor a ld b, a call CalcStat ; calc HP stat (set cur Hp to max HP) ld a, [H_MULTIPLICAND+1] ld [de], a inc de ld a, [H_MULTIPLICAND+2] ld [de], a inc de xor a ld [de], a ; box level inc de ld [de], a ; status ailments inc de jr .copyMonTypesAndMoves .copyEnemyMonData ld bc, wEnemyMon1DVs - wEnemyMon1 add hl, bc ld a, [wEnemyMonDVs] ; copy IVs from cur enemy mon ld [hli], a ld a, [wEnemyMonDVs + 1] ld [hl], a ld a, [wEnemyMonHP] ; copy HP from cur enemy mon ld [de], a inc de ld a, [wEnemyMonHP+1] ld [de], a inc de xor a ld [de], a ; box level inc de ld a, [wEnemyMonStatus] ; copy status ailments from cur enemy mon ld [de], a inc de .copyMonTypesAndMoves ld hl, wMonHTypes ld a, [hli] ; type 1 ld [de], a inc de ld a, [hli] ; type 2 ld [de], a inc de ld a, [hli] ; catch rate (held item in gen 2) ld [de], a ld hl, wMonHMoves ld a, [hli] inc de push de ld [de], a ld a, [hli] inc de ld [de], a ld a, [hli] inc de ld [de], a ld a, [hli] inc de ld [de], a push de dec de dec de dec de xor a ld [wLearningMovesFromDayCare], a predef WriteMonMoves pop de ld a, [wPlayerID] ; set trainer ID to player ID inc de ld [de], a ld a, [wPlayerID + 1] inc de ld [de], a push de ld a, [wCurEnemyLVL] ld d, a callab CalcExperience pop de inc de ld a, [hExperience] ; write experience ld [de], a inc de ld a, [hExperience + 1] ld [de], a inc de ld a, [hExperience + 2] ld [de], a xor a ld b, NUM_STATS * 2 .writeEVsLoop ; set all EVs to 0 inc de ld [de], a dec b jr nz, .writeEVsLoop inc de inc de pop hl call AddPartyMon_WriteMovePP inc de ld a, [wCurEnemyLVL] ld [de], a inc de ld a, [wIsInBattle] dec a jr nz, .calcFreshStats ld hl, wEnemyMonMaxHP ld bc, $a call CopyData ; copy stats of cur enemy mon pop hl jr .done .calcFreshStats pop hl ld bc, wPartyMon1HPExp - 1 - wPartyMon1 add hl, bc ld b, $0 call CalcStats ; calculate fresh set of stats .done scf ret LoadMovePPs: call GetPredefRegisters ; fallthrough AddPartyMon_WriteMovePP: ld b, NUM_MOVES .pploop ld a, [hli] ; read move ID and a jr z, .empty dec a push hl push de push bc ld hl, Moves ld bc, MoveEnd - Moves call AddNTimes ld de, wcd6d ld a, BANK(Moves) call FarCopyData pop bc pop de pop hl ld a, [wcd6d + 5] ; PP is byte 5 of move data .empty inc de ld [de], a dec b jr nz, .pploop ; there are still moves to read ret ; adds enemy mon [wcf91] (at position [wWhichPokemon] in enemy list) to own party ; used in the cable club trade center _AddEnemyMonToPlayerParty: ld hl, wPartyCount ld a, [hl] cp PARTY_LENGTH scf ret z ; party full, return failure inc a ld [hl], a ; add 1 to party members ld c, a ld b, $0 add hl, bc ld a, [wcf91] ld [hli], a ; add mon as last list entry ld [hl], $ff ; write new sentinel ld hl, wPartyMons ld a, [wPartyCount] dec a ld bc, wPartyMon2 - wPartyMon1 call AddNTimes ld e, l ld d, h ld hl, wLoadedMon call CopyData ; write new mon's data (from wLoadedMon) ld hl, wPartyMonOT ld a, [wPartyCount] dec a call SkipFixedLengthTextEntries ld d, h ld e, l ld hl, wEnemyMonOT ld a, [wWhichPokemon] call SkipFixedLengthTextEntries ld bc, NAME_LENGTH call CopyData ; write new mon's OT name (from an enemy mon) ld hl, wPartyMonNicks ld a, [wPartyCount] dec a call SkipFixedLengthTextEntries ld d, h ld e, l ld hl, wEnemyMonNicks ld a, [wWhichPokemon] call SkipFixedLengthTextEntries ld bc, NAME_LENGTH call CopyData ; write new mon's nickname (from an enemy mon) ld a, [wcf91] ld [wd11e], a predef IndexToPokedex ld a, [wd11e] dec a ld c, a ld b, FLAG_SET ld hl, wPokedexOwned push bc call FlagAction ; add to owned pokemon pop bc ld hl, wPokedexSeen call FlagAction ; add to seen pokemon and a ret ; return success _MoveMon: ld a, [wMoveMonType] and a jr z, .checkPartyMonSlots cp DAYCARE_TO_PARTY jr z, .checkPartyMonSlots cp PARTY_TO_DAYCARE ld hl, wDayCareMon jr z, .asm_f575 ld hl, wNumInBox ld a, [hl] cp MONS_PER_BOX jr nz, .partyOrBoxNotFull jr .boxFull .checkPartyMonSlots ld hl, wPartyCount ld a, [hl] cp PARTY_LENGTH jr nz, .partyOrBoxNotFull .boxFull scf ret .partyOrBoxNotFull inc a ld [hl], a ; increment number of mons in party/box ld c, a ld b, 0 add hl, bc ld a, [wMoveMonType] cp DAYCARE_TO_PARTY ld a, [wDayCareMon] jr z, .asm_f556 ld a, [wcf91] .asm_f556 ld [hli], a ; write new mon ID ld [hl], $ff ; write new sentinel ld a, [wMoveMonType] dec a ld hl, wPartyMons ld bc, wPartyMon2 - wPartyMon1 ; $2c ld a, [wPartyCount] jr nz, .skipToNewMonEntry ld hl, wBoxMons ld bc, wBoxMon2 - wBoxMon1 ; $21 ld a, [wNumInBox] .skipToNewMonEntry dec a call AddNTimes .asm_f575 push hl ld e, l ld d, h ld a, [wMoveMonType] and a ld hl, wBoxMons ld bc, wBoxMon2 - wBoxMon1 ; $21 jr z, .asm_f591 cp DAYCARE_TO_PARTY ld hl, wDayCareMon jr z, .asm_f597 ld hl, wPartyMons ld bc, wPartyMon2 - wPartyMon1 ; $2c .asm_f591 ld a, [wWhichPokemon] call AddNTimes .asm_f597 push hl push de ld bc, wBoxMon2 - wBoxMon1 call CopyData pop de pop hl ld a, [wMoveMonType] and a jr z, .asm_f5b4 cp DAYCARE_TO_PARTY jr z, .asm_f5b4 ld bc, wBoxMon2 - wBoxMon1 add hl, bc ld a, [hl] inc de inc de inc de ld [de], a .asm_f5b4 ld a, [wMoveMonType] cp PARTY_TO_DAYCARE ld de, wDayCareMonOT jr z, .asm_f5d3 dec a ld hl, wPartyMonOT ld a, [wPartyCount] jr nz, .asm_f5cd ld hl, wBoxMonOT ld a, [wNumInBox] .asm_f5cd dec a call SkipFixedLengthTextEntries ld d, h ld e, l .asm_f5d3 ld hl, wBoxMonOT ld a, [wMoveMonType] and a jr z, .asm_f5e6 ld hl, wDayCareMonOT cp DAYCARE_TO_PARTY jr z, .asm_f5ec ld hl, wPartyMonOT .asm_f5e6 ld a, [wWhichPokemon] call SkipFixedLengthTextEntries .asm_f5ec ld bc, NAME_LENGTH call CopyData ld a, [wMoveMonType] cp PARTY_TO_DAYCARE ld de, wDayCareMonName jr z, .asm_f611 dec a ld hl, wPartyMonNicks ld a, [wPartyCount] jr nz, .asm_f60b ld hl, wBoxMonNicks ld a, [wNumInBox] .asm_f60b dec a call SkipFixedLengthTextEntries ld d, h ld e, l .asm_f611 ld hl, wBoxMonNicks ld a, [wMoveMonType] and a jr z, .asm_f624 ld hl, wDayCareMonName cp DAYCARE_TO_PARTY jr z, .asm_f62a ld hl, wPartyMonNicks .asm_f624 ld a, [wWhichPokemon] call SkipFixedLengthTextEntries .asm_f62a ld bc, NAME_LENGTH call CopyData pop hl ld a, [wMoveMonType] cp PARTY_TO_BOX jr z, .asm_f664 cp PARTY_TO_DAYCARE jr z, .asm_f664 push hl srl a add $2 ld [wMonDataLocation], a call LoadMonData callba CalcLevelFromExperience ld a, d ld [wCurEnemyLVL], a pop hl ld bc, wBoxMon2 - wBoxMon1 add hl, bc ld [hli], a ld d, h ld e, l ld bc, -18 add hl, bc ld b, $1 call CalcStats .asm_f664 and a ret FlagActionPredef: call GetPredefRegisters FlagAction: ; Perform action b on bit c ; in the bitfield at hl. ; 0: reset ; 1: set ; 2: read ; Return the result in c. push hl push de push bc ; bit ld a, c ld d, a and 7 ld e, a ; byte ld a, d srl a srl a srl a add l ld l, a jr nc, .ok inc h .ok ; d = 1 << e (bitmask) inc e ld d, 1 .shift dec e jr z, .shifted sla d jr .shift .shifted ld a, b and a jr z, .reset cp 2 jr z, .read .set ld b, [hl] ld a, d or b ld [hl], a jr .done .reset ld b, [hl] ld a, d xor $ff and b ld [hl], a jr .done .read ld b, [hl] ld a, d and b .done pop bc pop de pop hl ld c, a ret HealParty: ; Restore HP and PP. ld hl, wPartySpecies ld de, wPartyMon1HP .healmon ld a, [hli] cp $ff jr z, .done push hl push de ld hl, wPartyMon1Status - wPartyMon1HP add hl, de xor a ld [hl], a push de ld b, NUM_MOVES ; A Pokémon has 4 moves .pp ld hl, wPartyMon1Moves - wPartyMon1HP add hl, de ld a, [hl] and a jr z, .nextmove dec a ld hl, wPartyMon1PP - wPartyMon1HP add hl, de push hl push de push bc ld hl, Moves ld bc, MoveEnd - Moves call AddNTimes ld de, wcd6d ld a, BANK(Moves) call FarCopyData ld a, [wcd6d + 5] ; PP is byte 5 of move data 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 .nextmove dec b jr nz, .pp pop de ld hl, wPartyMon1MaxHP - wPartyMon1HP add hl, de ld a, [hli] ld [de], a inc de ld a, [hl] ld [de], a pop de pop hl push hl ld bc, wPartyMon2 - wPartyMon1 ld h, d ld l, e add hl, bc ld d, h ld e, l pop hl jr .healmon .done xor a ld [wWhichPokemon], a ld [wd11e], a ld a, [wPartyCount] ld b, a .ppup push bc call RestoreBonusPP pop bc ld hl, wWhichPokemon inc [hl] dec b jr nz, .ppup ret DivideBCDPredef:: DivideBCDPredef2:: DivideBCDPredef3:: DivideBCDPredef4:: call GetPredefRegisters DivideBCD:: xor a ld [$ffa5], a ld [$ffa6], a ld [$ffa7], a ld d, $1 .asm_f72a ld a, [$ffa2] and $f0 jr nz, .asm_f75b inc d ld a, [$ffa2] swap a and $f0 ld b, a ld a, [$ffa3] swap a ld [$ffa3], a and $f or b ld [$ffa2], a ld a, [$ffa3] and $f0 ld b, a ld a, [$ffa4] swap a ld [$ffa4], a and $f or b ld [$ffa3], a ld a, [$ffa4] and $f0 ld [$ffa4], a jr .asm_f72a .asm_f75b push de push de call DivideBCD_f800 pop de ld a, b swap a and $f0 ld [$ffa5], a dec d jr z, .asm_f7bc push de call DivideBCD_f7d7 call DivideBCD_f800 pop de ld a, [$ffa5] or b ld [$ffa5], a dec d jr z, .asm_f7bc push de call DivideBCD_f7d7 call DivideBCD_f800 pop de ld a, b swap a and $f0 ld [$ffa6], a dec d jr z, .asm_f7bc push de call DivideBCD_f7d7 call DivideBCD_f800 pop de ld a, [$ffa6] or b ld [$ffa6], a dec d jr z, .asm_f7bc push de call DivideBCD_f7d7 call DivideBCD_f800 pop de ld a, b swap a and $f0 ld [$ffa7], a dec d jr z, .asm_f7bc push de call DivideBCD_f7d7 call DivideBCD_f800 pop de ld a, [$ffa7] or b ld [$ffa7], a .asm_f7bc ld a, [$ffa5] ld [$ffa2], a ld a, [$ffa6] ld [$ffa3], a ld a, [$ffa7] ld [$ffa4], a pop de ld a, $6 sub d and a ret z .asm_f7ce push af call DivideBCD_f7d7 pop af dec a jr nz, .asm_f7ce ret DivideBCD_f7d7: ld a, [$ffa4] swap a and $f ld b, a ld a, [$ffa3] swap a ld [$ffa3], a and $f0 or b ld [$ffa4], a ld a, [$ffa3] and $f ld b, a ld a, [$ffa2] swap a ld [$ffa2], a and $f0 or b ld [$ffa3], a ld a, [$ffa2] and $f ld [$ffa2], a ret DivideBCD_f800: 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 SubBCD pop bc jr .asm_f803 AddBCDPredef:: call GetPredefRegisters AddBCD:: and a ld b, c .add ld a, [de] adc [hl] daa ld [de], a dec de dec hl dec c jr nz, .add jr nc, .done ld a, $99 inc de .fill ld [de], a inc de dec b jr nz, .fill .done ret SubBCDPredef:: call GetPredefRegisters SubBCD:: and a ld b, c .sub ld a, [de] sbc [hl] daa ld [de], a dec de dec hl dec c jr nz, .sub jr nc, .done ld a, $00 inc de .fill ld [de], a inc de dec b jr nz, .fill scf .done ret InitPlayerData: InitPlayerData2: call Random ld a, [hRandomSub] ld [wPlayerID], a call Random ld a, [hRandomAdd] ld [wPlayerID + 1], a ld a, $ff ld [wUnusedD71B], a ld hl, wPartyCount call InitializeEmptyList ld hl, wNumInBox call InitializeEmptyList ld hl, wNumBagItems call InitializeEmptyList ld hl, wNumBoxItems call InitializeEmptyList START_MONEY EQU $3000 ld hl, wPlayerMoney + 1 ld a, START_MONEY / $100 ld [hld], a xor a ld [hli], a inc hl ld [hl], a ld [wMonDataLocation], a ld hl, wObtainedBadges ld [hli], a ld [hl], a ld hl, wPlayerCoins ld [hli], a ld [hl], a ld hl, wGameProgressFlags ld bc, wGameProgressFlagsEnd - wGameProgressFlags call FillMemory ; clear all game progress flags jp InitializeMissableObjectsFlags InitializeEmptyList: xor a ; count ld [hli], a dec a ; terminator ld [hl], a ret GetQuantityOfItemInBag: ; In: b = item ID ; Out: b = how many of that item are in the bag call GetPredefRegisters ld hl, wNumBagItems .loop inc hl ld a, [hli] cp $ff jr z, .notInBag cp b jr nz, .loop ld a, [hl] ld b, a ret .notInBag ld b, 0 ret FindPathToPlayer: xor a ld hl, hFindPathNumSteps ld [hli], a ; hFindPathNumSteps ld [hli], a ; hFindPathFlags ld [hli], a ; hFindPathYProgress ld [hl], a ; hFindPathXProgress ld hl, wNPCMovementDirections2 ld de, $0 .loop ld a, [hFindPathYProgress] ld b, a ld a, [hNPCPlayerYDistance] ; Y distance in steps call CalcDifference ld d, a and a jr nz, .asm_f8da ld a, [hFindPathFlags] set 0, a ; current end of path matches the player's Y coordinate ld [hFindPathFlags], a .asm_f8da ld a, [hFindPathXProgress] ld b, a ld a, [hNPCPlayerXDistance] ; X distance in steps call CalcDifference ld e, a and a jr nz, .asm_f8ec ld a, [hFindPathFlags] set 1, a ; current end of path matches the player's X coordinate ld [hFindPathFlags], a .asm_f8ec ld a, [hFindPathFlags] cp $3 ; has the end of the path reached the player's position? jr z, .done ; Compare whether the X distance between the player and the current of the path ; is greater or if the Y distance is. Then, try to reduce whichever is greater. ld a, e cp d jr c, .yDistanceGreater ; x distance is greater ld a, [hNPCPlayerRelativePosFlags] bit 1, a jr nz, .playerIsLeftOfNPC ld d, NPC_MOVEMENT_RIGHT jr .next1 .playerIsLeftOfNPC ld d, NPC_MOVEMENT_LEFT .next1 ld a, [hFindPathXProgress] add 1 ld [hFindPathXProgress], a jr .storeDirection .yDistanceGreater ld a, [hNPCPlayerRelativePosFlags] bit 0, a jr nz, .playerIsAboveNPC ld d, NPC_MOVEMENT_DOWN jr .next2 .playerIsAboveNPC ld d, NPC_MOVEMENT_UP .next2 ld a, [hFindPathYProgress] add 1 ld [hFindPathYProgress], a .storeDirection ld a, d ld [hli], a ld a, [hFindPathNumSteps] inc a ld [hFindPathNumSteps], a jp .loop .done ld [hl], $ff ret CalcPositionOfPlayerRelativeToNPC: xor a ld [hNPCPlayerRelativePosFlags], a ld a, [wSpriteStateData1 + 4] ; player's sprite screen Y position in pixels ld d, a ld a, [wSpriteStateData1 + 6] ; player's sprite screen X position in pixels ld e, a ld hl, wSpriteStateData1 ld a, [hNPCSpriteOffset] add l add $4 ld l, a jr nc, .noCarry inc h .noCarry ld a, d ld b, a ld a, [hli] ; NPC sprite screen Y position in pixels call CalcDifference jr nc, .NPCSouthOfOrAlignedWithPlayer .NPCNorthOfPlayer push hl ld hl, hNPCPlayerRelativePosFlags bit 0, [hl] set 0, [hl] pop hl jr .divideYDistance .NPCSouthOfOrAlignedWithPlayer push hl ld hl, hNPCPlayerRelativePosFlags bit 0, [hl] res 0, [hl] pop hl .divideYDistance push hl ld hl, hDividend2 ld [hli], a ld a, 16 ld [hli], a call DivideBytes ; divide Y absolute distance by 16 ld a, [hl] ; quotient ld [hNPCPlayerYDistance], a pop hl inc hl ld b, e ld a, [hl] ; NPC sprite screen X position in pixels call CalcDifference jr nc, .NPCEastOfOrAlignedWithPlayer .NPCWestOfPlayer push hl ld hl, hNPCPlayerRelativePosFlags bit 1, [hl] set 1, [hl] pop hl jr .divideXDistance .NPCEastOfOrAlignedWithPlayer push hl ld hl, hNPCPlayerRelativePosFlags bit 1, [hl] res 1, [hl] pop hl .divideXDistance ld [hDividend2], a ld a, 16 ld [hDivisor2], a call DivideBytes ; divide X absolute distance by 16 ld a, [hQuotient2] ld [hNPCPlayerXDistance], a ld a, [hNPCPlayerRelativePosPerspective] and a ret z ld a, [hNPCPlayerRelativePosFlags] cpl and $3 ld [hNPCPlayerRelativePosFlags], a ret ConvertNPCMovementDirectionsToJoypadMasks: ld a, [hNPCMovementDirections2Index] ld [wNPCMovementDirections2Index], a dec a ld de, wSimulatedJoypadStatesEnd ld hl, wNPCMovementDirections2 add l ld l, a jr nc, .loop inc h .loop ld a, [hld] call ConvertNPCMovementDirectionToJoypadMask ld [de], a inc de ld a, [hNPCMovementDirections2Index] dec a ld [hNPCMovementDirections2Index], a jr nz, .loop ret ConvertNPCMovementDirectionToJoypadMask: push hl ld b, a ld hl, NPCMovementDirectionsToJoypadMasksTable .loop ld a, [hli] cp $ff jr z, .done cp b jr z, .loadJoypadMask inc hl jr .loop .loadJoypadMask ld a, [hl] .done pop hl ret NPCMovementDirectionsToJoypadMasksTable: db NPC_MOVEMENT_UP, D_UP db NPC_MOVEMENT_DOWN, D_DOWN db NPC_MOVEMENT_LEFT, D_LEFT db NPC_MOVEMENT_RIGHT, D_RIGHT db $ff ; unreferenced ret INCLUDE "engine/hp_bar.asm" INCLUDE "engine/hidden_object_functions3.asm" SECTION "NPC Sprites 1", ROMX, BANK[NPC_SPRITES_1] OakAideSprite: INCBIN "gfx/sprites/oak_aide.2bpp" RockerSprite: INCBIN "gfx/sprites/rocker.2bpp" SwimmerSprite: INCBIN "gfx/sprites/swimmer.2bpp" WhitePlayerSprite: INCBIN "gfx/sprites/white_player.2bpp" GymHelperSprite: INCBIN "gfx/sprites/gym_helper.2bpp" OldPersonSprite: INCBIN "gfx/sprites/old_person.2bpp" MartGuySprite: INCBIN "gfx/sprites/mart_guy.2bpp" FisherSprite: INCBIN "gfx/sprites/fisher.2bpp" OldMediumWomanSprite: INCBIN "gfx/sprites/old_medium_woman.2bpp" NurseSprite: INCBIN "gfx/sprites/nurse.2bpp" CableClubWomanSprite: INCBIN "gfx/sprites/cable_club_woman.2bpp" MrMasterballSprite: INCBIN "gfx/sprites/mr_masterball.2bpp" LaprasGiverSprite: INCBIN "gfx/sprites/lapras_giver.2bpp" WardenSprite: INCBIN "gfx/sprites/warden.2bpp" SsCaptainSprite: INCBIN "gfx/sprites/ss_captain.2bpp" Fisher2Sprite: INCBIN "gfx/sprites/fisher2.2bpp" BlackbeltSprite: INCBIN "gfx/sprites/blackbelt.2bpp" GuardSprite: INCBIN "gfx/sprites/guard.2bpp" BallSprite: INCBIN "gfx/sprites/ball.2bpp" OmanyteSprite: INCBIN "gfx/sprites/omanyte.2bpp" BoulderSprite: INCBIN "gfx/sprites/boulder.2bpp" PaperSheetSprite: INCBIN "gfx/sprites/paper_sheet.2bpp" BookMapDexSprite: INCBIN "gfx/sprites/book_map_dex.2bpp" ClipboardSprite: INCBIN "gfx/sprites/clipboard.2bpp" SnorlaxSprite: INCBIN "gfx/sprites/snorlax.2bpp" OldAmberSprite: INCBIN "gfx/sprites/old_amber.2bpp" LyingOldManSprite: INCBIN "gfx/sprites/lying_old_man.2bpp" SECTION "Graphics", ROMX, BANK[GFX] PokemonLogoGraphics: INCBIN "gfx/pokemon_logo.2bpp" FontGraphics: INCBIN "gfx/font.1bpp" FontGraphicsEnd: ABTiles: INCBIN "gfx/AB.2bpp" HpBarAndStatusGraphics: INCBIN "gfx/hp_bar_and_status.2bpp" HpBarAndStatusGraphicsEnd: BattleHudTiles1: INCBIN "gfx/battle_hud1.1bpp" BattleHudTiles1End: BattleHudTiles2: INCBIN "gfx/battle_hud2.1bpp" BattleHudTiles3: INCBIN "gfx/battle_hud3.1bpp" BattleHudTiles3End: NintendoCopyrightLogoGraphics: INCBIN "gfx/copyright.2bpp" GamefreakLogoGraphics: INCBIN "gfx/gamefreak.2bpp" GamefreakLogoGraphicsEnd: TextBoxGraphics: INCBIN "gfx/text_box.2bpp" TextBoxGraphicsEnd: PokedexTileGraphics: INCBIN "gfx/pokedex.2bpp" PokedexTileGraphicsEnd: WorldMapTileGraphics: INCBIN "gfx/town_map.2bpp" WorldMapTileGraphicsEnd: PlayerCharacterTitleGraphics: INCBIN "gfx/player_title.2bpp" PlayerCharacterTitleGraphicsEnd: SECTION "Battle (bank 4)", ROMX, BANK[$4] INCLUDE "engine/overworld/is_player_just_outside_map.asm" INCLUDE "engine/menu/status_screen.asm" INCLUDE "engine/menu/party_menu.asm" RedPicFront:: INCBIN "pic/trainer/red.pic" ShrinkPic1:: INCBIN "pic/trainer/shrink1.pic" ShrinkPic2:: INCBIN "pic/trainer/shrink2.pic" INCLUDE "engine/turn_sprite.asm" INCLUDE "engine/menu/start_sub_menus.asm" INCLUDE "engine/items/tms.asm" INCLUDE "engine/battle/end_of_battle.asm" INCLUDE "engine/battle/wild_encounters.asm" INCLUDE "engine/battle/moveEffects/recoil_effect.asm" INCLUDE "engine/battle/moveEffects/conversion_effect.asm" INCLUDE "engine/battle/moveEffects/haze_effect.asm" INCLUDE "engine/battle/get_trainer_name.asm" INCLUDE "engine/random.asm" SECTION "NPC Sprites 2", ROMX, BANK[NPC_SPRITES_2] RedCyclingSprite: INCBIN "gfx/sprites/cycling.2bpp" RedSprite: INCBIN "gfx/sprites/red.2bpp" BlueSprite: INCBIN "gfx/sprites/blue.2bpp" OakSprite: INCBIN "gfx/sprites/oak.2bpp" BugCatcherSprite: INCBIN "gfx/sprites/bug_catcher.2bpp" SlowbroSprite: INCBIN "gfx/sprites/slowbro.2bpp" LassSprite: INCBIN "gfx/sprites/lass.2bpp" BlackHairBoy1Sprite: INCBIN "gfx/sprites/black_hair_boy_1.2bpp" LittleGirlSprite: INCBIN "gfx/sprites/little_girl.2bpp" BirdSprite: INCBIN "gfx/sprites/bird.2bpp" FatBaldGuySprite: INCBIN "gfx/sprites/fat_bald_guy.2bpp" GamblerSprite: INCBIN "gfx/sprites/gambler.2bpp" BlackHairBoy2Sprite: INCBIN "gfx/sprites/black_hair_boy_2.2bpp" GirlSprite: INCBIN "gfx/sprites/girl.2bpp" HikerSprite: INCBIN "gfx/sprites/hiker.2bpp" FoulardWomanSprite: INCBIN "gfx/sprites/foulard_woman.2bpp" GentlemanSprite: INCBIN "gfx/sprites/gentleman.2bpp" DaisySprite: INCBIN "gfx/sprites/daisy.2bpp" BikerSprite: INCBIN "gfx/sprites/biker.2bpp" SailorSprite: INCBIN "gfx/sprites/sailor.2bpp" CookSprite: INCBIN "gfx/sprites/cook.2bpp" BikeShopGuySprite: INCBIN "gfx/sprites/bike_shop_guy.2bpp" MrFujiSprite: INCBIN "gfx/sprites/mr_fuji.2bpp" GiovanniSprite: INCBIN "gfx/sprites/giovanni.2bpp" RocketSprite: INCBIN "gfx/sprites/rocket.2bpp" MediumSprite: INCBIN "gfx/sprites/medium.2bpp" WaiterSprite: INCBIN "gfx/sprites/waiter.2bpp" ErikaSprite: INCBIN "gfx/sprites/erika.2bpp" MomGeishaSprite: INCBIN "gfx/sprites/mom_geisha.2bpp" BrunetteGirlSprite: INCBIN "gfx/sprites/brunette_girl.2bpp" LanceSprite: INCBIN "gfx/sprites/lance.2bpp" MomSprite: INCBIN "gfx/sprites/mom.2bpp" BaldingGuySprite: INCBIN "gfx/sprites/balding_guy.2bpp" YoungBoySprite: INCBIN "gfx/sprites/young_boy.2bpp" GameboyKidSprite: INCBIN "gfx/sprites/gameboy_kid.2bpp" ClefairySprite: INCBIN "gfx/sprites/clefairy.2bpp" AgathaSprite: INCBIN "gfx/sprites/agatha.2bpp" BrunoSprite: INCBIN "gfx/sprites/bruno.2bpp" LoreleiSprite: INCBIN "gfx/sprites/lorelei.2bpp" SeelSprite: INCBIN "gfx/sprites/seel.2bpp" SECTION "Battle (bank 5)", ROMX, BANK[$5] INCLUDE "engine/load_pokedex_tiles.asm" INCLUDE "engine/overworld/map_sprites.asm" INCLUDE "engine/overworld/emotion_bubbles.asm" INCLUDE "engine/evolve_trade.asm" INCLUDE "engine/battle/moveEffects/substitute_effect.asm" INCLUDE "engine/menu/pc.asm" SECTION "bank6",ROMX,BANK[$6] INCLUDE "data/mapHeaders/celadoncity.asm" INCLUDE "data/mapObjects/celadoncity.asm" CeladonCityBlocks: INCBIN "maps/celadoncity.blk" INCLUDE "data/mapHeaders/pallettown.asm" INCLUDE "data/mapObjects/pallettown.asm" PalletTownBlocks: INCBIN "maps/pallettown.blk" INCLUDE "data/mapHeaders/viridiancity.asm" INCLUDE "data/mapObjects/viridiancity.asm" ViridianCityBlocks: INCBIN "maps/viridiancity.blk" INCLUDE "data/mapHeaders/pewtercity.asm" INCLUDE "data/mapObjects/pewtercity.asm" PewterCityBlocks: INCBIN "maps/pewtercity.blk" INCLUDE "data/mapHeaders/ceruleancity.asm" INCLUDE "data/mapObjects/ceruleancity.asm" CeruleanCityBlocks: INCBIN "maps/ceruleancity.blk" INCLUDE "data/mapHeaders/vermilioncity.asm" INCLUDE "data/mapObjects/vermilioncity.asm" VermilionCityBlocks: INCBIN "maps/vermilioncity.blk" INCLUDE "data/mapHeaders/fuchsiacity.asm" INCLUDE "data/mapObjects/fuchsiacity.asm" FuchsiaCityBlocks: INCBIN "maps/fuchsiacity.blk" INCLUDE "engine/play_time.asm" INCLUDE "scripts/pallettown.asm" INCLUDE "scripts/viridiancity.asm" INCLUDE "scripts/pewtercity.asm" INCLUDE "scripts/ceruleancity.asm" INCLUDE "scripts/vermilioncity.asm" INCLUDE "scripts/celadoncity.asm" INCLUDE "scripts/fuchsiacity.asm" INCLUDE "data/mapHeaders/blueshouse.asm" INCLUDE "scripts/blueshouse.asm" INCLUDE "data/mapObjects/blueshouse.asm" BluesHouseBlocks: INCBIN "maps/blueshouse.blk" INCLUDE "data/mapHeaders/vermilionhouse3.asm" INCLUDE "scripts/vermilionhouse3.asm" INCLUDE "data/mapObjects/vermilionhouse3.asm" VermilionHouse3Blocks: INCBIN "maps/vermilionhouse3.blk" INCLUDE "data/mapHeaders/indigoplateaulobby.asm" INCLUDE "scripts/indigoplateaulobby.asm" INCLUDE "data/mapObjects/indigoplateaulobby.asm" IndigoPlateauLobbyBlocks: INCBIN "maps/indigoplateaulobby.blk" INCLUDE "data/mapHeaders/silphco4.asm" INCLUDE "scripts/silphco4.asm" INCLUDE "data/mapObjects/silphco4.asm" SilphCo4Blocks: INCBIN "maps/silphco4.blk" INCLUDE "data/mapHeaders/silphco5.asm" INCLUDE "scripts/silphco5.asm" INCLUDE "data/mapObjects/silphco5.asm" SilphCo5Blocks: INCBIN "maps/silphco5.blk" INCLUDE "data/mapHeaders/silphco6.asm" INCLUDE "scripts/silphco6.asm" INCLUDE "data/mapObjects/silphco6.asm" SilphCo6Blocks: INCBIN "maps/silphco6.blk" INCLUDE "engine/overworld/npc_movement.asm" INCLUDE "engine/overworld/doors.asm" INCLUDE "engine/overworld/ledges.asm" SECTION "bank7",ROMX,BANK[$7] INCLUDE "data/mapHeaders/cinnabarisland.asm" INCLUDE "data/mapObjects/cinnabarisland.asm" CinnabarIslandBlocks: INCBIN "maps/cinnabarisland.blk" INCLUDE "data/mapHeaders/route1.asm" INCLUDE "data/mapObjects/route1.asm" Route1Blocks: INCBIN "maps/route1.blk" UndergroundPathEntranceRoute8Blocks: INCBIN "maps/undergroundpathentranceroute8.blk" OaksLabBlocks: INCBIN "maps/oakslab.blk" Route16HouseBlocks: Route2HouseBlocks: SaffronHouse1Blocks: SaffronHouse2Blocks: VermilionHouse1Blocks: NameRaterBlocks: LavenderHouse1Blocks: LavenderHouse2Blocks: CeruleanHouse1Blocks: PewterHouse1Blocks: PewterHouse2Blocks: ViridianHouseBlocks: INCBIN "maps/viridianhouse.blk" CeladonMansion5Blocks: SchoolBlocks: INCBIN "maps/school.blk" CeruleanHouseTrashedBlocks: INCBIN "maps/ceruleanhousetrashed.blk" DiglettsCaveEntranceRoute11Blocks: DiglettsCaveRoute2Blocks: INCBIN "maps/diglettscaveroute2.blk" INCLUDE "text/monster_names.asm" INCLUDE "engine/clear_save.asm" INCLUDE "engine/predefs7.asm" INCLUDE "scripts/cinnabarisland.asm" INCLUDE "scripts/route1.asm" INCLUDE "data/mapHeaders/oakslab.asm" INCLUDE "scripts/oakslab.asm" INCLUDE "data/mapObjects/oakslab.asm" INCLUDE "data/mapHeaders/viridianmart.asm" INCLUDE "scripts/viridianmart.asm" INCLUDE "data/mapObjects/viridianmart.asm" ViridianMartBlocks: INCBIN "maps/viridianmart.blk" INCLUDE "data/mapHeaders/school.asm" INCLUDE "scripts/school.asm" INCLUDE "data/mapObjects/school.asm" INCLUDE "data/mapHeaders/viridianhouse.asm" INCLUDE "scripts/viridianhouse.asm" INCLUDE "data/mapObjects/viridianhouse.asm" INCLUDE "data/mapHeaders/pewterhouse1.asm" INCLUDE "scripts/pewterhouse1.asm" INCLUDE "data/mapObjects/pewterhouse1.asm" INCLUDE "data/mapHeaders/pewterhouse2.asm" INCLUDE "scripts/pewterhouse2.asm" INCLUDE "data/mapObjects/pewterhouse2.asm" INCLUDE "data/mapHeaders/ceruleanhousetrashed.asm" INCLUDE "scripts/ceruleanhousetrashed.asm" INCLUDE "data/mapObjects/ceruleanhousetrashed.asm" INCLUDE "data/mapHeaders/ceruleanhouse1.asm" INCLUDE "scripts/ceruleanhouse1.asm" INCLUDE "data/mapObjects/ceruleanhouse1.asm" INCLUDE "data/mapHeaders/bikeshop.asm" INCLUDE "scripts/bikeshop.asm" INCLUDE "data/mapObjects/bikeshop.asm" BikeShopBlocks: INCBIN "maps/bikeshop.blk" INCLUDE "data/mapHeaders/lavenderhouse1.asm" INCLUDE "scripts/lavenderhouse1.asm" INCLUDE "data/mapObjects/lavenderhouse1.asm" INCLUDE "data/mapHeaders/lavenderhouse2.asm" INCLUDE "scripts/lavenderhouse2.asm" INCLUDE "data/mapObjects/lavenderhouse2.asm" INCLUDE "data/mapHeaders/namerater.asm" INCLUDE "scripts/namerater.asm" INCLUDE "data/mapObjects/namerater.asm" INCLUDE "data/mapHeaders/vermilionhouse1.asm" INCLUDE "scripts/vermilionhouse1.asm" INCLUDE "data/mapObjects/vermilionhouse1.asm" INCLUDE "data/mapHeaders/vermiliondock.asm" INCLUDE "scripts/vermiliondock.asm" INCLUDE "data/mapObjects/vermiliondock.asm" VermilionDockBlocks: INCBIN "maps/vermiliondock.blk" INCLUDE "data/mapHeaders/celadonmansion5.asm" INCLUDE "scripts/celadonmansion5.asm" INCLUDE "data/mapObjects/celadonmansion5.asm" INCLUDE "data/mapHeaders/fuchsiamart.asm" INCLUDE "scripts/fuchsiamart.asm" INCLUDE "data/mapObjects/fuchsiamart.asm" FuchsiaMartBlocks: INCBIN "maps/fuchsiamart.blk" INCLUDE "data/mapHeaders/saffronhouse1.asm" INCLUDE "scripts/saffronhouse1.asm" INCLUDE "data/mapObjects/saffronhouse1.asm" INCLUDE "data/mapHeaders/saffronhouse2.asm" INCLUDE "scripts/saffronhouse2.asm" INCLUDE "data/mapObjects/saffronhouse2.asm" INCLUDE "data/mapHeaders/diglettscaveroute2.asm" INCLUDE "scripts/diglettscaveroute2.asm" INCLUDE "data/mapObjects/diglettscaveroute2.asm" INCLUDE "data/mapHeaders/route2house.asm" INCLUDE "scripts/route2house.asm" INCLUDE "data/mapObjects/route2house.asm" INCLUDE "data/mapHeaders/route5gate.asm" INCLUDE "scripts/route5gate.asm" INCLUDE "data/mapObjects/route5gate.asm" Route5GateBlocks: INCBIN "maps/route5gate.blk" INCLUDE "data/mapHeaders/route6gate.asm" INCLUDE "scripts/route6gate.asm" INCLUDE "data/mapObjects/route6gate.asm" Route6GateBlocks: INCBIN "maps/route6gate.blk" INCLUDE "data/mapHeaders/route7gate.asm" INCLUDE "scripts/route7gate.asm" INCLUDE "data/mapObjects/route7gate.asm" Route7GateBlocks: INCBIN "maps/route7gate.blk" INCLUDE "data/mapHeaders/route8gate.asm" INCLUDE "scripts/route8gate.asm" INCLUDE "data/mapObjects/route8gate.asm" Route8GateBlocks: INCBIN "maps/route8gate.blk" INCLUDE "data/mapHeaders/undergroundpathentranceroute8.asm" INCLUDE "scripts/undergroundpathentranceroute8.asm" INCLUDE "data/mapObjects/undergroundpathentranceroute8.asm" INCLUDE "data/mapHeaders/powerplant.asm" INCLUDE "scripts/powerplant.asm" INCLUDE "data/mapObjects/powerplant.asm" PowerPlantBlocks: INCBIN "maps/powerplant.blk" INCLUDE "data/mapHeaders/diglettscaveroute11.asm" INCLUDE "scripts/diglettscaveroute11.asm" INCLUDE "data/mapObjects/diglettscaveroute11.asm" INCLUDE "data/mapHeaders/route16house.asm" INCLUDE "scripts/route16house.asm" INCLUDE "data/mapObjects/route16house.asm" INCLUDE "data/mapHeaders/route22gate.asm" INCLUDE "scripts/route22gate.asm" INCLUDE "data/mapObjects/route22gate.asm" Route22GateBlocks: INCBIN "maps/route22gate.blk" INCLUDE "data/mapHeaders/billshouse.asm" INCLUDE "scripts/billshouse.asm" INCLUDE "data/mapObjects/billshouse.asm" BillsHouseBlocks: INCBIN "maps/billshouse.blk" INCLUDE "engine/menu/oaks_pc.asm" INCLUDE "engine/hidden_object_functions7.asm" SECTION "Pics 1", ROMX, BANK[PICS_1] 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:: INCBIN "pic/monback/pinsirb.pic" TangelaPicFront:: INCBIN "pic/bmon/tangela.pic" TangelaPicBack:: INCBIN "pic/monback/tangelab.pic" SECTION "Battle (bank 9)", ROMX, BANK[$9] INCLUDE "engine/battle/print_type.asm" INCLUDE "engine/battle/save_trainer_name.asm" INCLUDE "engine/battle/moveEffects/focus_energy_effect.asm" SECTION "Pics 2", ROMX, BANK[PICS_2] 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" SECTION "Battle (bank A)", ROMX, BANK[$A] INCLUDE "engine/battle/moveEffects/leech_seed_effect.asm" SECTION "Pics 3", ROMX, BANK[PICS_3] 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" SECTION "Battle (bank B)", ROMX, BANK[$B] INCLUDE "engine/battle/display_effectiveness.asm" TrainerInfoTextBoxTileGraphics: INCBIN "gfx/trainer_info.2bpp" TrainerInfoTextBoxTileGraphicsEnd: BlankLeaderNames: INCBIN "gfx/blank_leader_names.2bpp" CircleTile: INCBIN "gfx/circle_tile.2bpp" BadgeNumbersTileGraphics: INCBIN "gfx/badge_numbers.2bpp" INCLUDE "engine/items/tmhm.asm" INCLUDE "engine/battle/scale_sprites.asm" INCLUDE "engine/battle/moveEffects/pay_day_effect.asm" INCLUDE "engine/game_corner_slots2.asm" SECTION "Pics 4", ROMX, BANK[PICS_4] 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" SECTION "Battle (bank C)", ROMX, BANK[$C] INCLUDE "engine/battle/moveEffects/mist_effect.asm" INCLUDE "engine/battle/moveEffects/one_hit_ko_effect.asm" SECTION "Pics 5", ROMX, BANK[PICS_5] 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" SECTION "Battle (bank D)", ROMX, BANK[$D] INCLUDE "engine/titlescreen2.asm" INCLUDE "engine/battle/link_battle_versus_text.asm" INCLUDE "engine/slot_machine.asm" INCLUDE "engine/overworld/pewter_guys.asm" INCLUDE "engine/multiply_divide.asm" INCLUDE "engine/game_corner_slots.asm" SECTION "bankE",ROMX,BANK[$E] INCLUDE "data/moves.asm" BaseStats: INCLUDE "data/base_stats.asm" INCLUDE "data/cries.asm" INCLUDE "engine/battle/unused_stats_functions.asm" INCLUDE "engine/battle/scroll_draw_trainer_pic.asm" INCLUDE "engine/battle/trainer_ai.asm" INCLUDE "engine/battle/draw_hud_pokeball_gfx.asm" TradingAnimationGraphics: INCBIN "gfx/game_boy.norepeat.2bpp" INCBIN "gfx/link_cable.2bpp" TradingAnimationGraphicsEnd: TradingAnimationGraphics2: ; Pokeball traveling through the link cable. INCBIN "gfx/trade2.2bpp" TradingAnimationGraphics2End: INCLUDE "engine/evos_moves.asm" INCLUDE "engine/battle/moveEffects/heal_effect.asm" INCLUDE "engine/battle/moveEffects/transform_effect.asm" INCLUDE "engine/battle/moveEffects/reflect_light_screen_effect.asm" SECTION "bankF",ROMX,BANK[$F] INCLUDE "engine/battle/core.asm" SECTION "bank10",ROMX,BANK[$10] INCLUDE "engine/menu/pokedex.asm" INCLUDE "engine/trade.asm" INCLUDE "engine/intro.asm" INCLUDE "engine/trade2.asm" SECTION "bank11",ROMX,BANK[$11] INCLUDE "data/mapHeaders/lavendertown.asm" INCLUDE "data/mapObjects/lavendertown.asm" LavenderTownBlocks: INCBIN "maps/lavendertown.blk" ViridianPokecenterBlocks: INCBIN "maps/viridianpokecenter.blk" SafariZoneRestHouse1Blocks: SafariZoneRestHouse2Blocks: SafariZoneRestHouse3Blocks: SafariZoneRestHouse4Blocks: INCBIN "maps/safarizoneresthouse1.blk" INCLUDE "scripts/lavendertown.asm" INCLUDE "engine/pokedex_rating.asm" INCLUDE "data/mapHeaders/viridianpokecenter.asm" INCLUDE "scripts/viridianpokecenter.asm" INCLUDE "data/mapObjects/viridianpokecenter.asm" INCLUDE "data/mapHeaders/mansion1.asm" INCLUDE "scripts/mansion1.asm" INCLUDE "data/mapObjects/mansion1.asm" Mansion1Blocks: INCBIN "maps/mansion1.blk" INCLUDE "data/mapHeaders/rocktunnel1.asm" INCLUDE "scripts/rocktunnel1.asm" INCLUDE "data/mapObjects/rocktunnel1.asm" RockTunnel1Blocks: INCBIN "maps/rocktunnel1.blk" INCLUDE "data/mapHeaders/seafoamislands1.asm" INCLUDE "scripts/seafoamislands1.asm" INCLUDE "data/mapObjects/seafoamislands1.asm" SeafoamIslands1Blocks: INCBIN "maps/seafoamislands1.blk" INCLUDE "data/mapHeaders/ssanne3.asm" INCLUDE "scripts/ssanne3.asm" INCLUDE "data/mapObjects/ssanne3.asm" SSAnne3Blocks: INCBIN "maps/ssanne3.blk" INCLUDE "data/mapHeaders/victoryroad3.asm" INCLUDE "scripts/victoryroad3.asm" INCLUDE "data/mapObjects/victoryroad3.asm" VictoryRoad3Blocks: INCBIN "maps/victoryroad3.blk" INCLUDE "data/mapHeaders/rockethideout1.asm" INCLUDE "scripts/rockethideout1.asm" INCLUDE "data/mapObjects/rockethideout1.asm" RocketHideout1Blocks: INCBIN "maps/rockethideout1.blk" INCLUDE "data/mapHeaders/rockethideout2.asm" INCLUDE "scripts/rockethideout2.asm" INCLUDE "data/mapObjects/rockethideout2.asm" RocketHideout2Blocks: INCBIN "maps/rockethideout2.blk" INCLUDE "data/mapHeaders/rockethideout3.asm" INCLUDE "scripts/rockethideout3.asm" INCLUDE "data/mapObjects/rockethideout3.asm" RocketHideout3Blocks: INCBIN "maps/rockethideout3.blk" INCLUDE "data/mapHeaders/rockethideout4.asm" INCLUDE "scripts/rockethideout4.asm" INCLUDE "data/mapObjects/rockethideout4.asm" RocketHideout4Blocks: INCBIN "maps/rockethideout4.blk" INCLUDE "data/mapHeaders/rockethideoutelevator.asm" INCLUDE "scripts/rockethideoutelevator.asm" INCLUDE "data/mapObjects/rockethideoutelevator.asm" RocketHideoutElevatorBlocks: INCBIN "maps/rockethideoutelevator.blk" INCLUDE "data/mapHeaders/silphcoelevator.asm" INCLUDE "scripts/silphcoelevator.asm" INCLUDE "data/mapObjects/silphcoelevator.asm" SilphCoElevatorBlocks: INCBIN "maps/silphcoelevator.blk" INCLUDE "data/mapHeaders/safarizoneeast.asm" INCLUDE "scripts/safarizoneeast.asm" INCLUDE "data/mapObjects/safarizoneeast.asm" SafariZoneEastBlocks: INCBIN "maps/safarizoneeast.blk" INCLUDE "data/mapHeaders/safarizonenorth.asm" INCLUDE "scripts/safarizonenorth.asm" INCLUDE "data/mapObjects/safarizonenorth.asm" SafariZoneNorthBlocks: INCBIN "maps/safarizonenorth.blk" INCLUDE "data/mapHeaders/safarizonecenter.asm" INCLUDE "scripts/safarizonecenter.asm" INCLUDE "data/mapObjects/safarizonecenter.asm" SafariZoneCenterBlocks: INCBIN "maps/safarizonecenter.blk" INCLUDE "data/mapHeaders/safarizoneresthouse1.asm" INCLUDE "scripts/safarizoneresthouse1.asm" INCLUDE "data/mapObjects/safarizoneresthouse1.asm" INCLUDE "data/mapHeaders/safarizoneresthouse2.asm" INCLUDE "scripts/safarizoneresthouse2.asm" INCLUDE "data/mapObjects/safarizoneresthouse2.asm" INCLUDE "data/mapHeaders/safarizoneresthouse3.asm" INCLUDE "scripts/safarizoneresthouse3.asm" INCLUDE "data/mapObjects/safarizoneresthouse3.asm" INCLUDE "data/mapHeaders/safarizoneresthouse4.asm" INCLUDE "scripts/safarizoneresthouse4.asm" INCLUDE "data/mapObjects/safarizoneresthouse4.asm" INCLUDE "data/mapHeaders/unknowndungeon2.asm" INCLUDE "scripts/unknowndungeon2.asm" INCLUDE "data/mapObjects/unknowndungeon2.asm" UnknownDungeon2Blocks: INCBIN "maps/unknowndungeon2.blk" INCLUDE "data/mapHeaders/unknowndungeon3.asm" INCLUDE "scripts/unknowndungeon3.asm" INCLUDE "data/mapObjects/unknowndungeon3.asm" UnknownDungeon3Blocks: INCBIN "maps/unknowndungeon3.blk" INCLUDE "data/mapHeaders/rocktunnel2.asm" INCLUDE "scripts/rocktunnel2.asm" INCLUDE "data/mapObjects/rocktunnel2.asm" RockTunnel2Blocks: INCBIN "maps/rocktunnel2.blk" INCLUDE "data/mapHeaders/seafoamislands2.asm" INCLUDE "scripts/seafoamislands2.asm" INCLUDE "data/mapObjects/seafoamislands2.asm" SeafoamIslands2Blocks: INCBIN "maps/seafoamislands2.blk" INCLUDE "data/mapHeaders/seafoamislands3.asm" INCLUDE "scripts/seafoamislands3.asm" INCLUDE "data/mapObjects/seafoamislands3.asm" SeafoamIslands3Blocks: INCBIN "maps/seafoamislands3.blk" INCLUDE "data/mapHeaders/seafoamislands4.asm" INCLUDE "scripts/seafoamislands4.asm" INCLUDE "data/mapObjects/seafoamislands4.asm" SeafoamIslands4Blocks: INCBIN "maps/seafoamislands4.blk" INCLUDE "data/mapHeaders/seafoamislands5.asm" INCLUDE "scripts/seafoamislands5.asm" INCLUDE "data/mapObjects/seafoamislands5.asm" SeafoamIslands5Blocks: INCBIN "maps/seafoamislands5.blk" INCLUDE "engine/overworld/hidden_objects.asm" SECTION "bank12",ROMX,BANK[$12] INCLUDE "data/mapHeaders/route7.asm" INCLUDE "data/mapObjects/route7.asm" Route7Blocks: INCBIN "maps/route7.blk" CeladonPokecenterBlocks: RockTunnelPokecenterBlocks: MtMoonPokecenterBlocks: INCBIN "maps/mtmoonpokecenter.blk" Route18GateBlocks: Route15GateBlocks: Route11GateBlocks: INCBIN "maps/route11gate.blk" Route18GateUpstairsBlocks: Route16GateUpstairsBlocks: Route12GateUpstairsBlocks: Route15GateUpstairsBlocks: Route11GateUpstairsBlocks: INCBIN "maps/route11gateupstairs.blk" INCLUDE "engine/predefs12.asm" INCLUDE "scripts/route7.asm" INCLUDE "data/mapHeaders/redshouse1f.asm" INCLUDE "scripts/redshouse1f.asm" INCLUDE "data/mapObjects/redshouse1f.asm" RedsHouse1FBlocks: INCBIN "maps/redshouse1f.blk" INCLUDE "data/mapHeaders/celadonmart3.asm" INCLUDE "scripts/celadonmart3.asm" INCLUDE "data/mapObjects/celadonmart3.asm" CeladonMart3Blocks: INCBIN "maps/celadonmart3.blk" INCLUDE "data/mapHeaders/celadonmart4.asm" INCLUDE "scripts/celadonmart4.asm" INCLUDE "data/mapObjects/celadonmart4.asm" CeladonMart4Blocks: INCBIN "maps/celadonmart4.blk" INCLUDE "data/mapHeaders/celadonmartroof.asm" INCLUDE "scripts/celadonmartroof.asm" INCLUDE "data/mapObjects/celadonmartroof.asm" CeladonMartRoofBlocks: INCBIN "maps/celadonmartroof.blk" INCLUDE "data/mapHeaders/celadonmartelevator.asm" INCLUDE "scripts/celadonmartelevator.asm" INCLUDE "data/mapObjects/celadonmartelevator.asm" CeladonMartElevatorBlocks: INCBIN "maps/celadonmartelevator.blk" INCLUDE "data/mapHeaders/celadonmansion1.asm" INCLUDE "scripts/celadonmansion1.asm" INCLUDE "data/mapObjects/celadonmansion1.asm" CeladonMansion1Blocks: INCBIN "maps/celadonmansion1.blk" INCLUDE "data/mapHeaders/celadonmansion2.asm" INCLUDE "scripts/celadonmansion2.asm" INCLUDE "data/mapObjects/celadonmansion2.asm" CeladonMansion2Blocks: INCBIN "maps/celadonmansion2.blk" INCLUDE "data/mapHeaders/celadonmansion3.asm" INCLUDE "scripts/celadonmansion3.asm" INCLUDE "data/mapObjects/celadonmansion3.asm" CeladonMansion3Blocks: INCBIN "maps/celadonmansion3.blk" INCLUDE "data/mapHeaders/celadonmansion4.asm" INCLUDE "scripts/celadonmansion4.asm" INCLUDE "data/mapObjects/celadonmansion4.asm" CeladonMansion4Blocks: INCBIN "maps/celadonmansion4.blk" INCLUDE "data/mapHeaders/celadonpokecenter.asm" INCLUDE "scripts/celadonpokecenter.asm" INCLUDE "data/mapObjects/celadonpokecenter.asm" INCLUDE "data/mapHeaders/celadongym.asm" INCLUDE "scripts/celadongym.asm" INCLUDE "data/mapObjects/celadongym.asm" CeladonGymBlocks: INCBIN "maps/celadongym.blk" INCLUDE "data/mapHeaders/celadongamecorner.asm" INCLUDE "scripts/celadongamecorner.asm" INCLUDE "data/mapObjects/celadongamecorner.asm" CeladonGameCornerBlocks: INCBIN "maps/celadongamecorner.blk" INCLUDE "data/mapHeaders/celadonmart5.asm" INCLUDE "scripts/celadonmart5.asm" INCLUDE "data/mapObjects/celadonmart5.asm" CeladonMart5Blocks: INCBIN "maps/celadonmart5.blk" INCLUDE "data/mapHeaders/celadonprizeroom.asm" INCLUDE "scripts/celadonprizeroom.asm" INCLUDE "data/mapObjects/celadonprizeroom.asm" CeladonPrizeRoomBlocks: INCBIN "maps/celadonprizeroom.blk" INCLUDE "data/mapHeaders/celadondiner.asm" INCLUDE "scripts/celadondiner.asm" INCLUDE "data/mapObjects/celadondiner.asm" CeladonDinerBlocks: INCBIN "maps/celadondiner.blk" INCLUDE "data/mapHeaders/celadonhouse.asm" INCLUDE "scripts/celadonhouse.asm" INCLUDE "data/mapObjects/celadonhouse.asm" CeladonHouseBlocks: INCBIN "maps/celadonhouse.blk" INCLUDE "data/mapHeaders/celadonhotel.asm" INCLUDE "scripts/celadonhotel.asm" INCLUDE "data/mapObjects/celadonhotel.asm" CeladonHotelBlocks: INCBIN "maps/celadonhotel.blk" INCLUDE "data/mapHeaders/mtmoonpokecenter.asm" INCLUDE "scripts/mtmoonpokecenter.asm" INCLUDE "data/mapObjects/mtmoonpokecenter.asm" INCLUDE "data/mapHeaders/rocktunnelpokecenter.asm" INCLUDE "scripts/rocktunnelpokecenter.asm" INCLUDE "data/mapObjects/rocktunnelpokecenter.asm" INCLUDE "data/mapHeaders/route11gate.asm" INCLUDE "scripts/route11gate.asm" INCLUDE "data/mapObjects/route11gate.asm" INCLUDE "data/mapHeaders/route11gateupstairs.asm" INCLUDE "scripts/route11gateupstairs.asm" INCLUDE "data/mapObjects/route11gateupstairs.asm" INCLUDE "data/mapHeaders/route12gate.asm" INCLUDE "scripts/route12gate.asm" INCLUDE "data/mapObjects/route12gate.asm" Route12GateBlocks: INCBIN "maps/route12gate.blk" INCLUDE "data/mapHeaders/route12gateupstairs.asm" INCLUDE "scripts/route12gateupstairs.asm" INCLUDE "data/mapObjects/route12gateupstairs.asm" INCLUDE "data/mapHeaders/route15gate.asm" INCLUDE "scripts/route15gate.asm" INCLUDE "data/mapObjects/route15gate.asm" INCLUDE "data/mapHeaders/route15gateupstairs.asm" INCLUDE "scripts/route15gateupstairs.asm" INCLUDE "data/mapObjects/route15gateupstairs.asm" INCLUDE "data/mapHeaders/route16gate.asm" INCLUDE "scripts/route16gate.asm" INCLUDE "data/mapObjects/route16gate.asm" Route16GateBlocks: INCBIN "maps/route16gate.blk" INCLUDE "data/mapHeaders/route16gateupstairs.asm" INCLUDE "scripts/route16gateupstairs.asm" INCLUDE "data/mapObjects/route16gateupstairs.asm" INCLUDE "data/mapHeaders/route18gate.asm" INCLUDE "scripts/route18gate.asm" INCLUDE "data/mapObjects/route18gate.asm" INCLUDE "data/mapHeaders/route18gateupstairs.asm" INCLUDE "scripts/route18gateupstairs.asm" INCLUDE "data/mapObjects/route18gateupstairs.asm" INCLUDE "data/mapHeaders/mtmoon1.asm" INCLUDE "scripts/mtmoon1.asm" INCLUDE "data/mapObjects/mtmoon1.asm" MtMoon1Blocks: INCBIN "maps/mtmoon1.blk" INCLUDE "data/mapHeaders/mtmoon3.asm" INCLUDE "scripts/mtmoon3.asm" INCLUDE "data/mapObjects/mtmoon3.asm" MtMoon3Blocks: INCBIN "maps/mtmoon3.blk" INCLUDE "data/mapHeaders/safarizonewest.asm" INCLUDE "scripts/safarizonewest.asm" INCLUDE "data/mapObjects/safarizonewest.asm" SafariZoneWestBlocks: INCBIN "maps/safarizonewest.blk" INCLUDE "data/mapHeaders/safarizonesecrethouse.asm" INCLUDE "scripts/safarizonesecrethouse.asm" INCLUDE "data/mapObjects/safarizonesecrethouse.asm" SafariZoneSecretHouseBlocks: INCBIN "maps/safarizonesecrethouse.blk" SECTION "bank13",ROMX,BANK[$13] TrainerPics:: 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" INCLUDE "data/mapHeaders/tradecenter.asm" INCLUDE "scripts/tradecenter.asm" INCLUDE "data/mapObjects/tradecenter.asm" TradeCenterBlocks: INCBIN "maps/tradecenter.blk" INCLUDE "data/mapHeaders/colosseum.asm" INCLUDE "scripts/colosseum.asm" INCLUDE "data/mapObjects/colosseum.asm" ColosseumBlocks: INCBIN "maps/colosseum.blk" INCLUDE "engine/give_pokemon.asm" INCLUDE "engine/predefs.asm" SECTION "bank14",ROMX,BANK[$14] INCLUDE "data/mapHeaders/route22.asm" INCLUDE "data/mapObjects/route22.asm" Route22Blocks: INCBIN "maps/route22.blk" INCLUDE "data/mapHeaders/route20.asm" INCLUDE "data/mapObjects/route20.asm" Route20Blocks: INCBIN "maps/route20.blk" INCLUDE "data/mapHeaders/route23.asm" INCLUDE "data/mapObjects/route23.asm" Route23Blocks: INCBIN "maps/route23.blk" INCLUDE "data/mapHeaders/route24.asm" INCLUDE "data/mapObjects/route24.asm" Route24Blocks: INCBIN "maps/route24.blk" INCLUDE "data/mapHeaders/route25.asm" INCLUDE "data/mapObjects/route25.asm" Route25Blocks: INCBIN "maps/route25.blk" INCLUDE "data/mapHeaders/indigoplateau.asm" INCLUDE "scripts/indigoplateau.asm" INCLUDE "data/mapObjects/indigoplateau.asm" IndigoPlateauBlocks: INCBIN "maps/indigoplateau.blk" INCLUDE "data/mapHeaders/saffroncity.asm" INCLUDE "data/mapObjects/saffroncity.asm" SaffronCityBlocks: INCBIN "maps/saffroncity.blk" INCLUDE "scripts/saffroncity.asm" INCLUDE "scripts/route20.asm" INCLUDE "scripts/route22.asm" INCLUDE "scripts/route23.asm" INCLUDE "scripts/route24.asm" INCLUDE "scripts/route25.asm" INCLUDE "data/mapHeaders/victoryroad2.asm" INCLUDE "scripts/victoryroad2.asm" INCLUDE "data/mapObjects/victoryroad2.asm" VictoryRoad2Blocks: INCBIN "maps/victoryroad2.blk" INCLUDE "data/mapHeaders/mtmoon2.asm" INCLUDE "scripts/mtmoon2.asm" INCLUDE "data/mapObjects/mtmoon2.asm" MtMoon2Blocks: INCBIN "maps/mtmoon2.blk" INCLUDE "data/mapHeaders/silphco7.asm" INCLUDE "scripts/silphco7.asm" INCLUDE "data/mapObjects/silphco7.asm" SilphCo7Blocks: INCBIN "maps/silphco7.blk" INCLUDE "data/mapHeaders/mansion2.asm" INCLUDE "scripts/mansion2.asm" INCLUDE "data/mapObjects/mansion2.asm" Mansion2Blocks: INCBIN "maps/mansion2.blk" INCLUDE "data/mapHeaders/mansion3.asm" INCLUDE "scripts/mansion3.asm" INCLUDE "data/mapObjects/mansion3.asm" Mansion3Blocks: INCBIN "maps/mansion3.blk" INCLUDE "data/mapHeaders/mansion4.asm" INCLUDE "scripts/mansion4.asm" INCLUDE "data/mapObjects/mansion4.asm" Mansion4Blocks: INCBIN "maps/mansion4.blk" INCLUDE "engine/battle/init_battle_variables.asm" INCLUDE "engine/battle/moveEffects/paralyze_effect.asm" INCLUDE "engine/overworld/card_key.asm" INCLUDE "engine/menu/prize_menu.asm" INCLUDE "engine/hidden_object_functions14.asm" SECTION "bank15",ROMX,BANK[$15] INCLUDE "data/mapHeaders/route2.asm" INCLUDE "data/mapObjects/route2.asm" Route2Blocks: INCBIN "maps/route2.blk" INCLUDE "data/mapHeaders/route3.asm" INCLUDE "data/mapObjects/route3.asm" Route3Blocks: INCBIN "maps/route3.blk" INCLUDE "data/mapHeaders/route4.asm" INCLUDE "data/mapObjects/route4.asm" Route4Blocks: INCBIN "maps/route4.blk" INCLUDE "data/mapHeaders/route5.asm" INCLUDE "data/mapObjects/route5.asm" Route5Blocks: INCBIN "maps/route5.blk" INCLUDE "data/mapHeaders/route9.asm" INCLUDE "data/mapObjects/route9.asm" Route9Blocks: INCBIN "maps/route9.blk" INCLUDE "data/mapHeaders/route13.asm" INCLUDE "data/mapObjects/route13.asm" Route13Blocks: INCBIN "maps/route13.blk" INCLUDE "data/mapHeaders/route14.asm" INCLUDE "data/mapObjects/route14.asm" Route14Blocks: INCBIN "maps/route14.blk" INCLUDE "data/mapHeaders/route17.asm" INCLUDE "data/mapObjects/route17.asm" Route17Blocks: INCBIN "maps/route17.blk" INCLUDE "data/mapHeaders/route19.asm" INCLUDE "data/mapObjects/route19.asm" Route19Blocks: INCBIN "maps/route19.blk" INCLUDE "data/mapHeaders/route21.asm" INCLUDE "data/mapObjects/route21.asm" Route21Blocks: INCBIN "maps/route21.blk" VermilionHouse2Blocks: Route12HouseBlocks: DayCareMBlocks: INCBIN "maps/daycarem.blk" FuchsiaHouse3Blocks: INCBIN "maps/fuchsiahouse3.blk" INCLUDE "engine/battle/experience.asm" INCLUDE "scripts/route2.asm" INCLUDE "scripts/route3.asm" INCLUDE "scripts/route4.asm" INCLUDE "scripts/route5.asm" INCLUDE "scripts/route9.asm" INCLUDE "scripts/route13.asm" INCLUDE "scripts/route14.asm" INCLUDE "scripts/route17.asm" INCLUDE "scripts/route19.asm" INCLUDE "scripts/route21.asm" INCLUDE "data/mapHeaders/vermilionhouse2.asm" INCLUDE "scripts/vermilionhouse2.asm" INCLUDE "data/mapObjects/vermilionhouse2.asm" INCLUDE "data/mapHeaders/celadonmart2.asm" INCLUDE "scripts/celadonmart2.asm" INCLUDE "data/mapObjects/celadonmart2.asm" CeladonMart2Blocks: INCBIN "maps/celadonmart2.blk" INCLUDE "data/mapHeaders/fuchsiahouse3.asm" INCLUDE "scripts/fuchsiahouse3.asm" INCLUDE "data/mapObjects/fuchsiahouse3.asm" INCLUDE "data/mapHeaders/daycarem.asm" INCLUDE "scripts/daycarem.asm" INCLUDE "data/mapObjects/daycarem.asm" INCLUDE "data/mapHeaders/route12house.asm" INCLUDE "scripts/route12house.asm" INCLUDE "data/mapObjects/route12house.asm" INCLUDE "data/mapHeaders/silphco8.asm" INCLUDE "scripts/silphco8.asm" INCLUDE "data/mapObjects/silphco8.asm" SilphCo8Blocks: INCBIN "maps/silphco8.blk" INCLUDE "engine/menu/diploma.asm" INCLUDE "engine/overworld/trainers.asm" SECTION "bank16",ROMX,BANK[$16] INCLUDE "data/mapHeaders/route6.asm" INCLUDE "data/mapObjects/route6.asm" Route6Blocks: INCBIN "maps/route6.blk" INCLUDE "data/mapHeaders/route8.asm" INCLUDE "data/mapObjects/route8.asm" Route8Blocks: INCBIN "maps/route8.blk" INCLUDE "data/mapHeaders/route10.asm" INCLUDE "data/mapObjects/route10.asm" Route10Blocks: INCBIN "maps/route10.blk" INCLUDE "data/mapHeaders/route11.asm" INCLUDE "data/mapObjects/route11.asm" Route11Blocks: INCBIN "maps/route11.blk" INCLUDE "data/mapHeaders/route12.asm" INCLUDE "data/mapObjects/route12.asm" Route12Blocks: INCBIN "maps/route12.blk" INCLUDE "data/mapHeaders/route15.asm" INCLUDE "data/mapObjects/route15.asm" Route15Blocks: INCBIN "maps/route15.blk" INCLUDE "data/mapHeaders/route16.asm" INCLUDE "data/mapObjects/route16.asm" Route16Blocks: INCBIN "maps/route16.blk" INCLUDE "data/mapHeaders/route18.asm" INCLUDE "data/mapObjects/route18.asm" Route18Blocks: INCBIN "maps/route18.blk" INCBIN "maps/unusedblocks58d7d.blk" INCLUDE "engine/battle/common_text.asm" INCLUDE "engine/experience.asm" INCLUDE "engine/overworld/oaks_aide.asm" INCLUDE "scripts/route6.asm" INCLUDE "scripts/route8.asm" INCLUDE "scripts/route10.asm" INCLUDE "scripts/route11.asm" INCLUDE "scripts/route12.asm" INCLUDE "scripts/route15.asm" INCLUDE "scripts/route16.asm" INCLUDE "scripts/route18.asm" INCLUDE "data/mapHeaders/fanclub.asm" INCLUDE "scripts/fanclub.asm" INCLUDE "data/mapObjects/fanclub.asm" FanClubBlocks: INCBIN "maps/fanclub.blk" INCLUDE "data/mapHeaders/silphco2.asm" INCLUDE "scripts/silphco2.asm" INCLUDE "data/mapObjects/silphco2.asm" SilphCo2Blocks: INCBIN "maps/silphco2.blk" INCLUDE "data/mapHeaders/silphco3.asm" INCLUDE "scripts/silphco3.asm" INCLUDE "data/mapObjects/silphco3.asm" SilphCo3Blocks: INCBIN "maps/silphco3.blk" INCLUDE "data/mapHeaders/silphco10.asm" INCLUDE "scripts/silphco10.asm" INCLUDE "data/mapObjects/silphco10.asm" SilphCo10Blocks: INCBIN "maps/silphco10.blk" INCLUDE "data/mapHeaders/lance.asm" INCLUDE "scripts/lance.asm" INCLUDE "data/mapObjects/lance.asm" LanceBlocks: INCBIN "maps/lance.blk" INCLUDE "data/mapHeaders/halloffameroom.asm" INCLUDE "scripts/halloffameroom.asm" INCLUDE "data/mapObjects/halloffameroom.asm" HallofFameRoomBlocks: INCBIN "maps/halloffameroom.blk" INCLUDE "engine/overworld/saffron_guards.asm" SECTION "bank17",ROMX,BANK[$17] SaffronMartBlocks: LavenderMartBlocks: CeruleanMartBlocks: VermilionMartBlocks: INCBIN "maps/vermilionmart.blk" CopycatsHouse2FBlocks: RedsHouse2FBlocks: INCBIN "maps/redshouse2f.blk" Museum1FBlocks: INCBIN "maps/museum1f.blk" Museum2FBlocks: INCBIN "maps/museum2f.blk" SaffronPokecenterBlocks: VermilionPokecenterBlocks: LavenderPokecenterBlocks: PewterPokecenterBlocks: INCBIN "maps/pewterpokecenter.blk" UndergroundPathEntranceRoute7Blocks: UndergroundPathEntranceRoute7CopyBlocks: UndergroundPathEntranceRoute6Blocks: UndergroundPathEntranceRoute5Blocks: INCBIN "maps/undergroundpathentranceroute5.blk" Route2GateBlocks: ViridianForestEntranceBlocks: ViridianForestExitBlocks: INCBIN "maps/viridianforestexit.blk" INCLUDE "data/mapHeaders/redshouse2f.asm" INCLUDE "scripts/redshouse2f.asm" INCLUDE "data/mapObjects/redshouse2f.asm" INCLUDE "engine/predefs17.asm" INCLUDE "data/mapHeaders/museum1f.asm" INCLUDE "scripts/museum1f.asm" INCLUDE "data/mapObjects/museum1f.asm" INCLUDE "data/mapHeaders/museum2f.asm" INCLUDE "scripts/museum2f.asm" INCLUDE "data/mapObjects/museum2f.asm" INCLUDE "data/mapHeaders/pewtergym.asm" INCLUDE "scripts/pewtergym.asm" INCLUDE "data/mapObjects/pewtergym.asm" PewterGymBlocks: INCBIN "maps/pewtergym.blk" INCLUDE "data/mapHeaders/pewterpokecenter.asm" INCLUDE "scripts/pewterpokecenter.asm" INCLUDE "data/mapObjects/pewterpokecenter.asm" INCLUDE "data/mapHeaders/ceruleanpokecenter.asm" INCLUDE "scripts/ceruleanpokecenter.asm" INCLUDE "data/mapObjects/ceruleanpokecenter.asm" CeruleanPokecenterBlocks: INCBIN "maps/ceruleanpokecenter.blk" INCLUDE "data/mapHeaders/ceruleangym.asm" INCLUDE "scripts/ceruleangym.asm" INCLUDE "data/mapObjects/ceruleangym.asm" CeruleanGymBlocks: INCBIN "maps/ceruleangym.blk" INCLUDE "data/mapHeaders/ceruleanmart.asm" INCLUDE "scripts/ceruleanmart.asm" INCLUDE "data/mapObjects/ceruleanmart.asm" INCLUDE "data/mapHeaders/lavenderpokecenter.asm" INCLUDE "scripts/lavenderpokecenter.asm" INCLUDE "data/mapObjects/lavenderpokecenter.asm" INCLUDE "data/mapHeaders/lavendermart.asm" INCLUDE "scripts/lavendermart.asm" INCLUDE "data/mapObjects/lavendermart.asm" INCLUDE "data/mapHeaders/vermilionpokecenter.asm" INCLUDE "scripts/vermilionpokecenter.asm" INCLUDE "data/mapObjects/vermilionpokecenter.asm" INCLUDE "data/mapHeaders/vermilionmart.asm" INCLUDE "scripts/vermilionmart.asm" INCLUDE "data/mapObjects/vermilionmart.asm" INCLUDE "data/mapHeaders/vermiliongym.asm" INCLUDE "scripts/vermiliongym.asm" INCLUDE "data/mapObjects/vermiliongym.asm" VermilionGymBlocks: INCBIN "maps/vermiliongym.blk" INCLUDE "data/mapHeaders/copycatshouse2f.asm" INCLUDE "scripts/copycatshouse2f.asm" INCLUDE "data/mapObjects/copycatshouse2f.asm" INCLUDE "data/mapHeaders/fightingdojo.asm" INCLUDE "scripts/fightingdojo.asm" INCLUDE "data/mapObjects/fightingdojo.asm" FightingDojoBlocks: INCBIN "maps/fightingdojo.blk" INCLUDE "data/mapHeaders/saffrongym.asm" INCLUDE "scripts/saffrongym.asm" INCLUDE "data/mapObjects/saffrongym.asm" SaffronGymBlocks: INCBIN "maps/saffrongym.blk" INCLUDE "data/mapHeaders/saffronmart.asm" INCLUDE "scripts/saffronmart.asm" INCLUDE "data/mapObjects/saffronmart.asm" INCLUDE "data/mapHeaders/silphco1.asm" INCLUDE "scripts/silphco1.asm" INCLUDE "data/mapObjects/silphco1.asm" SilphCo1Blocks: INCBIN "maps/silphco1.blk" INCLUDE "data/mapHeaders/saffronpokecenter.asm" INCLUDE "scripts/saffronpokecenter.asm" INCLUDE "data/mapObjects/saffronpokecenter.asm" INCLUDE "data/mapHeaders/viridianforestexit.asm" INCLUDE "scripts/viridianforestexit.asm" INCLUDE "data/mapObjects/viridianforestexit.asm" INCLUDE "data/mapHeaders/route2gate.asm" INCLUDE "scripts/route2gate.asm" INCLUDE "data/mapObjects/route2gate.asm" INCLUDE "data/mapHeaders/viridianforestentrance.asm" INCLUDE "scripts/viridianforestentrance.asm" INCLUDE "data/mapObjects/viridianforestentrance.asm" INCLUDE "data/mapHeaders/undergroundpathentranceroute5.asm" INCLUDE "scripts/undergroundpathentranceroute5.asm" INCLUDE "data/mapObjects/undergroundpathentranceroute5.asm" INCLUDE "data/mapHeaders/undergroundpathentranceroute6.asm" INCLUDE "scripts/undergroundpathentranceroute6.asm" INCLUDE "data/mapObjects/undergroundpathentranceroute6.asm" INCLUDE "data/mapHeaders/undergroundpathentranceroute7.asm" INCLUDE "scripts/undergroundpathentranceroute7.asm" INCLUDE "data/mapObjects/undergroundpathentranceroute7.asm" INCLUDE "data/mapHeaders/undergroundpathentranceroute7copy.asm" INCLUDE "scripts/undergroundpathentranceroute7copy.asm" INCLUDE "data/mapObjects/undergroundpathentranceroute7copy.asm" INCLUDE "data/mapHeaders/silphco9.asm" INCLUDE "scripts/silphco9.asm" INCLUDE "data/mapObjects/silphco9.asm" SilphCo9Blocks: INCBIN "maps/silphco9.blk" INCLUDE "data/mapHeaders/victoryroad1.asm" INCLUDE "scripts/victoryroad1.asm" INCLUDE "data/mapObjects/victoryroad1.asm" VictoryRoad1Blocks: INCBIN "maps/victoryroad1.blk" INCLUDE "engine/predefs17_2.asm" INCLUDE "engine/hidden_object_functions17.asm" SECTION "bank18",ROMX,BANK[$18] ViridianForestBlocks: INCBIN "maps/viridianforest.blk" UndergroundPathNSBlocks: INCBIN "maps/undergroundpathns.blk" UndergroundPathWEBlocks: INCBIN "maps/undergroundpathwe.blk" INCBIN "maps/unusedblocks60258.blk" SSAnne10Blocks: SSAnne9Blocks: INCBIN "maps/ssanne9.blk" INCLUDE "data/mapHeaders/pokemontower1.asm" INCLUDE "scripts/pokemontower1.asm" INCLUDE "data/mapObjects/pokemontower1.asm" PokemonTower1Blocks: INCBIN "maps/pokemontower1.blk" INCLUDE "data/mapHeaders/pokemontower2.asm" INCLUDE "scripts/pokemontower2.asm" INCLUDE "data/mapObjects/pokemontower2.asm" PokemonTower2Blocks: INCBIN "maps/pokemontower2.blk" INCLUDE "data/mapHeaders/pokemontower3.asm" INCLUDE "scripts/pokemontower3.asm" INCLUDE "data/mapObjects/pokemontower3.asm" PokemonTower3Blocks: INCBIN "maps/pokemontower3.blk" INCLUDE "data/mapHeaders/pokemontower4.asm" INCLUDE "scripts/pokemontower4.asm" INCLUDE "data/mapObjects/pokemontower4.asm" PokemonTower4Blocks: INCBIN "maps/pokemontower4.blk" INCLUDE "data/mapHeaders/pokemontower5.asm" INCLUDE "scripts/pokemontower5.asm" INCLUDE "data/mapObjects/pokemontower5.asm" PokemonTower5Blocks: INCBIN "maps/pokemontower5.blk" INCLUDE "data/mapHeaders/pokemontower6.asm" INCLUDE "scripts/pokemontower6.asm" INCLUDE "data/mapObjects/pokemontower6.asm" PokemonTower6Blocks: INCBIN "maps/pokemontower6.blk" INCBIN "maps/unusedblocks60cef.blk" INCLUDE "data/mapHeaders/pokemontower7.asm" INCLUDE "scripts/pokemontower7.asm" INCLUDE "data/mapObjects/pokemontower7.asm" PokemonTower7Blocks: INCBIN "maps/pokemontower7.blk" INCLUDE "data/mapHeaders/celadonmart1.asm" INCLUDE "scripts/celadonmart1.asm" INCLUDE "data/mapObjects/celadonmart1.asm" CeladonMart1Blocks: INCBIN "maps/celadonmart1.blk" INCLUDE "engine/overworld/cinnabar_lab.asm" INCLUDE "data/mapHeaders/viridianforest.asm" INCLUDE "scripts/viridianforest.asm" INCLUDE "data/mapObjects/viridianforest.asm" INCLUDE "data/mapHeaders/ssanne1.asm" INCLUDE "scripts/ssanne1.asm" INCLUDE "data/mapObjects/ssanne1.asm" SSAnne1Blocks: INCBIN "maps/ssanne1.blk" INCLUDE "data/mapHeaders/ssanne2.asm" INCLUDE "scripts/ssanne2.asm" INCLUDE "data/mapObjects/ssanne2.asm" SSAnne2Blocks: INCBIN "maps/ssanne2.blk" INCLUDE "data/mapHeaders/ssanne4.asm" INCLUDE "scripts/ssanne4.asm" INCLUDE "data/mapObjects/ssanne4.asm" SSAnne4Blocks: INCBIN "maps/ssanne4.blk" INCLUDE "data/mapHeaders/ssanne5.asm" INCLUDE "scripts/ssanne5.asm" INCLUDE "data/mapObjects/ssanne5.asm" SSAnne5Blocks: INCBIN "maps/ssanne5.blk" INCLUDE "data/mapHeaders/ssanne6.asm" INCLUDE "scripts/ssanne6.asm" INCLUDE "data/mapObjects/ssanne6.asm" SSAnne6Blocks: INCBIN "maps/ssanne6.blk" INCLUDE "data/mapHeaders/ssanne7.asm" INCLUDE "scripts/ssanne7.asm" INCLUDE "data/mapObjects/ssanne7.asm" SSAnne7Blocks: INCBIN "maps/ssanne7.blk" INCLUDE "data/mapHeaders/ssanne8.asm" INCLUDE "scripts/ssanne8.asm" INCLUDE "data/mapObjects/ssanne8.asm" SSAnne8Blocks: INCBIN "maps/ssanne8.blk" INCLUDE "data/mapHeaders/ssanne9.asm" INCLUDE "scripts/ssanne9.asm" INCLUDE "data/mapObjects/ssanne9.asm" INCLUDE "data/mapHeaders/ssanne10.asm" INCLUDE "scripts/ssanne10.asm" INCLUDE "data/mapObjects/ssanne10.asm" INCLUDE "data/mapHeaders/undergroundpathns.asm" INCLUDE "scripts/undergroundpathns.asm" INCLUDE "data/mapObjects/undergroundpathns.asm" INCLUDE "data/mapHeaders/undergroundpathwe.asm" INCLUDE "scripts/undergroundpathwe.asm" INCLUDE "data/mapObjects/undergroundpathwe.asm" INCLUDE "data/mapHeaders/diglettscave.asm" INCLUDE "scripts/diglettscave.asm" INCLUDE "data/mapObjects/diglettscave.asm" DiglettsCaveBlocks: INCBIN "maps/diglettscave.blk" INCLUDE "data/mapHeaders/silphco11.asm" INCLUDE "scripts/silphco11.asm" INCLUDE "data/mapObjects/silphco11.asm" SilphCo11Blocks: INCBIN "maps/silphco11.blk" INCLUDE "engine/hidden_object_functions18.asm" SECTION "bank19",ROMX,BANK[$19] Overworld_GFX: INCBIN "gfx/tilesets/overworld.t2.2bpp" Overworld_Block: INCBIN "gfx/blocksets/overworld.bst" RedsHouse1_GFX: RedsHouse2_GFX: INCBIN "gfx/tilesets/reds_house.t7.2bpp" RedsHouse1_Block: RedsHouse2_Block: INCBIN "gfx/blocksets/reds_house.bst" House_GFX: INCBIN "gfx/tilesets/house.t2.2bpp" House_Block: INCBIN "gfx/blocksets/house.bst" Mansion_GFX: INCBIN "gfx/tilesets/mansion.t2.2bpp" Mansion_Block: INCBIN "gfx/blocksets/mansion.bst" ShipPort_GFX: INCBIN "gfx/tilesets/ship_port.t2.2bpp" ShipPort_Block: INCBIN "gfx/blocksets/ship_port.bst" Interior_GFX: INCBIN "gfx/tilesets/interior.t1.2bpp" Interior_Block: INCBIN "gfx/blocksets/interior.bst" Plateau_GFX: INCBIN "gfx/tilesets/plateau.t10.2bpp" Plateau_Block: INCBIN "gfx/blocksets/plateau.bst" SECTION "bank1A",ROMX,BANK[$1A] INCLUDE "engine/battle/decrement_pp.asm" Version_GFX: IF DEF(_RED) INCBIN "gfx/red/redgreenversion.1bpp" ; 10 tiles ENDC IF DEF(_BLUE) INCBIN "gfx/blue/blueversion.1bpp" ; 8 tiles ENDC Version_GFXEnd: Dojo_GFX: Gym_GFX: INCBIN "gfx/tilesets/gym.2bpp" Dojo_Block: Gym_Block: INCBIN "gfx/blocksets/gym.bst" Mart_GFX: Pokecenter_GFX: INCBIN "gfx/tilesets/pokecenter.2bpp" Mart_Block: Pokecenter_Block: INCBIN "gfx/blocksets/pokecenter.bst" ForestGate_GFX: Museum_GFX: Gate_GFX: INCBIN "gfx/tilesets/gate.t1.2bpp" ForestGate_Block: Museum_Block: Gate_Block: INCBIN "gfx/blocksets/gate.bst" Forest_GFX: INCBIN "gfx/tilesets/forest.2bpp" Forest_Block: INCBIN "gfx/blocksets/forest.bst" Facility_GFX: INCBIN "gfx/tilesets/facility.2bpp" Facility_Block: INCBIN "gfx/blocksets/facility.bst" SECTION "bank1B",ROMX,BANK[$1B] Cemetery_GFX: INCBIN "gfx/tilesets/cemetery.t4.2bpp" Cemetery_Block: INCBIN "gfx/blocksets/cemetery.bst" Cavern_GFX: INCBIN "gfx/tilesets/cavern.t14.2bpp" Cavern_Block: INCBIN "gfx/blocksets/cavern.bst" Lobby_GFX: INCBIN "gfx/tilesets/lobby.t2.2bpp" Lobby_Block: INCBIN "gfx/blocksets/lobby.bst" Ship_GFX: INCBIN "gfx/tilesets/ship.t6.2bpp" Ship_Block: INCBIN "gfx/blocksets/ship.bst" Lab_GFX: INCBIN "gfx/tilesets/lab.t4.2bpp" Lab_Block: INCBIN "gfx/blocksets/lab.bst" Club_GFX: INCBIN "gfx/tilesets/club.t5.2bpp" Club_Block: INCBIN "gfx/blocksets/club.bst" Underground_GFX: INCBIN "gfx/tilesets/underground.t7.2bpp" Underground_Block: INCBIN "gfx/blocksets/underground.bst" SECTION "bank1C",ROMX,BANK[$1C] INCLUDE "engine/gamefreak.asm" INCLUDE "engine/hall_of_fame.asm" INCLUDE "engine/overworld/healing_machine.asm" INCLUDE "engine/overworld/player_animations.asm" INCLUDE "engine/battle/ghost_marowak_anim.asm" INCLUDE "engine/battle/battle_transitions.asm" INCLUDE "engine/town_map.asm" INCLUDE "engine/mon_party_sprites.asm" INCLUDE "engine/in_game_trades.asm" INCLUDE "engine/palettes.asm" INCLUDE "engine/save.asm" SECTION "bank1D",ROMX,BANK[$1D] CopycatsHouse1FBlocks: INCBIN "maps/copycatshouse1f.blk" CinnabarMartBlocks: PewterMartBlocks: INCBIN "maps/pewtermart.blk" FuchsiaHouse1Blocks: INCBIN "maps/fuchsiahouse1.blk" CinnabarPokecenterBlocks: FuchsiaPokecenterBlocks: INCBIN "maps/fuchsiapokecenter.blk" CeruleanHouse2Blocks: INCBIN "maps/ceruleanhouse2.blk" INCLUDE "engine/HoF_room_pc.asm" INCLUDE "engine/status_ailments.asm" INCLUDE "engine/items/itemfinder.asm" INCLUDE "scripts/ceruleancity2.asm" INCLUDE "data/mapHeaders/viridiangym.asm" INCLUDE "scripts/viridiangym.asm" INCLUDE "data/mapObjects/viridiangym.asm" ViridianGymBlocks: INCBIN "maps/viridiangym.blk" INCLUDE "data/mapHeaders/pewtermart.asm" INCLUDE "scripts/pewtermart.asm" INCLUDE "data/mapObjects/pewtermart.asm" INCLUDE "data/mapHeaders/unknowndungeon1.asm" INCLUDE "scripts/unknowndungeon1.asm" INCLUDE "data/mapObjects/unknowndungeon1.asm" UnknownDungeon1Blocks: INCBIN "maps/unknowndungeon1.blk" INCLUDE "data/mapHeaders/ceruleanhouse2.asm" INCLUDE "scripts/ceruleanhouse2.asm" INCLUDE "data/mapObjects/ceruleanhouse2.asm" INCLUDE "engine/menu/vending_machine.asm" INCLUDE "data/mapHeaders/fuchsiahouse1.asm" INCLUDE "scripts/fuchsiahouse1.asm" INCLUDE "data/mapObjects/fuchsiahouse1.asm" INCLUDE "data/mapHeaders/fuchsiapokecenter.asm" INCLUDE "scripts/fuchsiapokecenter.asm" INCLUDE "data/mapObjects/fuchsiapokecenter.asm" INCLUDE "data/mapHeaders/fuchsiahouse2.asm" INCLUDE "scripts/fuchsiahouse2.asm" INCLUDE "data/mapObjects/fuchsiahouse2.asm" FuchsiaHouse2Blocks: INCBIN "maps/fuchsiahouse2.blk" INCLUDE "data/mapHeaders/safarizoneentrance.asm" INCLUDE "scripts/safarizoneentrance.asm" INCLUDE "data/mapObjects/safarizoneentrance.asm" SafariZoneEntranceBlocks: INCBIN "maps/safarizoneentrance.blk" INCLUDE "data/mapHeaders/fuchsiagym.asm" INCLUDE "scripts/fuchsiagym.asm" INCLUDE "data/mapObjects/fuchsiagym.asm" FuchsiaGymBlocks: INCBIN "maps/fuchsiagym.blk" INCLUDE "data/mapHeaders/fuchsiameetingroom.asm" INCLUDE "scripts/fuchsiameetingroom.asm" INCLUDE "data/mapObjects/fuchsiameetingroom.asm" FuchsiaMeetingRoomBlocks: INCBIN "maps/fuchsiameetingroom.blk" INCLUDE "data/mapHeaders/cinnabargym.asm" INCLUDE "scripts/cinnabargym.asm" INCLUDE "data/mapObjects/cinnabargym.asm" CinnabarGymBlocks: INCBIN "maps/cinnabargym.blk" INCLUDE "data/mapHeaders/lab1.asm" INCLUDE "scripts/lab1.asm" INCLUDE "data/mapObjects/lab1.asm" Lab1Blocks: INCBIN "maps/lab1.blk" INCLUDE "data/mapHeaders/lab2.asm" INCLUDE "scripts/lab2.asm" INCLUDE "data/mapObjects/lab2.asm" Lab2Blocks: INCBIN "maps/lab2.blk" INCLUDE "data/mapHeaders/lab3.asm" INCLUDE "scripts/lab3.asm" INCLUDE "data/mapObjects/lab3.asm" Lab3Blocks: INCBIN "maps/lab3.blk" INCLUDE "data/mapHeaders/lab4.asm" INCLUDE "scripts/lab4.asm" INCLUDE "data/mapObjects/lab4.asm" Lab4Blocks: INCBIN "maps/lab4.blk" INCLUDE "data/mapHeaders/cinnabarpokecenter.asm" INCLUDE "scripts/cinnabarpokecenter.asm" INCLUDE "data/mapObjects/cinnabarpokecenter.asm" INCLUDE "data/mapHeaders/cinnabarmart.asm" INCLUDE "scripts/cinnabarmart.asm" INCLUDE "data/mapObjects/cinnabarmart.asm" INCLUDE "data/mapHeaders/copycatshouse1f.asm" INCLUDE "scripts/copycatshouse1f.asm" INCLUDE "data/mapObjects/copycatshouse1f.asm" INCLUDE "data/mapHeaders/gary.asm" INCLUDE "scripts/gary.asm" INCLUDE "data/mapObjects/gary.asm" GaryBlocks: INCBIN "maps/gary.blk" INCLUDE "data/mapHeaders/lorelei.asm" INCLUDE "scripts/lorelei.asm" INCLUDE "data/mapObjects/lorelei.asm" LoreleiBlocks: INCBIN "maps/lorelei.blk" INCLUDE "data/mapHeaders/bruno.asm" INCLUDE "scripts/bruno.asm" INCLUDE "data/mapObjects/bruno.asm" BrunoBlocks: INCBIN "maps/bruno.blk" INCLUDE "data/mapHeaders/agatha.asm" INCLUDE "scripts/agatha.asm" INCLUDE "data/mapObjects/agatha.asm" AgathaBlocks: INCBIN "maps/agatha.blk" INCLUDE "engine/menu/league_pc.asm" INCLUDE "engine/overworld/hidden_items.asm" SECTION "bank1E",ROMX,BANK[$1E] INCLUDE "engine/battle/animations.asm" INCLUDE "engine/overworld/cut2.asm" INCLUDE "engine/overworld/ssanne.asm" RedFishingTilesFront: INCBIN "gfx/red_fishing_tile_front.2bpp" RedFishingTilesBack: INCBIN "gfx/red_fishing_tile_back.2bpp" RedFishingTilesSide: INCBIN "gfx/red_fishing_tile_side.2bpp" RedFishingRodTiles: INCBIN "gfx/red_fishingrod_tiles.2bpp" INCLUDE "data/animations.asm" INCLUDE "engine/evolution.asm" INCLUDE "engine/overworld/elevator.asm" INCLUDE "engine/items/tm_prices.asm"