diff options
author | stag019 <stag019@gmail.com> | 2012-01-14 15:36:00 -0500 |
---|---|---|
committer | stag019 <stag019@gmail.com> | 2012-01-14 15:36:00 -0500 |
commit | dc667fb75a6c77a35263be9578cd90d84117f667 (patch) | |
tree | 5710d815797ce34843e2f9a33e9c2848cc569371 /common.asm | |
parent | 1113f19b183ec8c72e81379f4c80b11a12c4a551 (diff) |
Another attempt at splitting Red/Blue versions.
hg-commit-id: bd7cb987f964
Diffstat (limited to 'common.asm')
-rw-r--r-- | common.asm | 41477 |
1 files changed, 41477 insertions, 0 deletions
diff --git a/common.asm b/common.asm new file mode 100644 index 00000000..6830b5a0 --- /dev/null +++ b/common.asm @@ -0,0 +1,41477 @@ +INCLUDE "constants.asm" + +; the rst vectors are unused +SECTION "rst00",HOME[0] + db $FF +SECTION "rst08",HOME[8] + db $FF +SECTION "rst10",HOME[$10] + db $FF +SECTION "rst18",HOME[$18] + db $FF +SECTION "rst20",HOME[$20] + db $FF +SECTION "rst28",HOME[$28] + db $FF +SECTION "rst30",HOME[$30] + db $FF +SECTION "rst38",HOME[$38] + db $FF + +; interrupts +SECTION "vblank",HOME[$40] + jp $2024 +SECTION "lcdc",HOME[$48] + db $FF +SECTION "timer",HOME[$50] + jp $2306 +SECTION "serial",HOME[$58] + jp $2125 +SECTION "joypad",HOME[$60] + reti + +SECTION "bank0",HOME[$61] +DisableLCD: +;$0061 + xor a + ld [$ff0f],a + ld a,[$ffff] + ld b,a + res 0,a + ld [$ffff],a +.jr0\@ + ld a,[$ff44] + cp a,$91 + jr nz,.jr0\@ + ld a,[$ff40] + and a,$7f ; res 7,a + ld [$ff40],a + ld a,b + ld [$ffff],a + ret + +EnableLCD: +;$007b + ld a,[$ff40] + set 7,a + ld [$ff40],a + ret + +CleanLCD_OAM: +;$0082 + xor a + ld hl,$c300 + ld b,$a0 +.jr0\@ + ld [hli],a + dec b + jr nz,.jr0\@ + ret + +ResetLCD_OAM: +;$008d + ld a,$a0 + ld hl,$c300 + ld de,$0004 + ld b,$28 +.jr0\@ + ld [hl],a + add hl,de + dec b + jr nz,.jr0\@ + ret + +FarCopyData: ; 009D +; copy bc bytes of data from a:hl to de + ld [$CEE9],a ; save future bank # for later + ld a,[$FFB8] ; get current bank # + push af + ld a,[$CEE9] ; get future bank #, switch + ld [$FFB8],a + ld [$2000],a + call CopyData + pop af ; okay, done, time to switch back + ld [$FFB8],a + ld [$2000],a + ret +CopyData: ; 00B5 +; copy bc bytes of data from hl to de + ld a,[hli] + ld [de],a + inc de + dec bc + ld a,c + or b + jr nz,CopyData + ret + +SECTION "romheader",HOME[$100] +nop +jp Start + +Section "start",HOME[$150] +Start: +INCBIN "baserom.gbc",$150,$1AE - $150 +; see also MapHeaderBanks +MapHeaderPointers: ; $01AE + dw PalletTown_h ; PALLET_TOWN + dw ViridianCity_h ; VIRIDIAN_CITY + dw PewterCity_h ; PEWTER_CITY + dw CeruleanCity_h ; CERULEAN_CITY + dw LavenderTown_h ; LAVENDER_TOWN + dw VermilionCity_h ; VERMILION_CITY + dw CeladonCity_h ; CELADON_CITY + dw FuchsiaCity_h ; FUCHSIA_CITY + dw CinnabarIsland_h ; CINNABAR_ISLAND + dw IndigoPlateau_h ; INDIGO_PLATEAU + dw SaffronCity_h ; SAFFRON_CITY + dw SaffronCity_h ; unused + dw Route1_h ; ROUTE_1 + dw $4000 ; ROUTE_2 + dw Route3_h ; ROUTE_3 + dw Route4_h ; ROUTE_4 + dw Route5_h ; ROUTE_5 + dw Route6_h ; ROUTE_6 + dw Route7_h ; ROUTE_7 + dw Route8_h ; ROUTE_8 + dw Route9_h ; ROUTE_9 + dw Route10_h ; ROUTE_10 + dw Route11_h ; ROUTE_11 + dw Route12_h ; ROUTE_12 + dw Route13_h ; ROUTE_13 + dw Route14_h ; ROUTE_14 + dw Route15_h ; ROUTE_15 + dw Route16_h ; ROUTE_16 + dw Route17_h ; ROUTE_17 + dw Route18_h ; ROUTE_18 + dw Route19_h ; ROUTE_19 + dw Route20_h ; ROUTE_20 + dw Route21_h ; ROUTE_21 + dw Route22_h ; ROUTE_22 + dw Route23_h ; ROUTE_23 + dw Route24_h ; ROUTE_24 + dw Route25_h ; ROUTE_25 + dw RedsHouse1F_h + dw RedsHouse2F_h + dw BluesHouse_h + dw OaksLab_h + dw ViridianPokecenter_h + dw ViridianMart_h + dw School_h + dw ViridianHouse_h + dw ViridianGym_h + dw DiglettsCaveRoute2_h + dw ViridianForestexit_h + dw Route2House_h + dw Route2Gate_h + dw ViridianForestEntrance_h + dw ViridianForest_h + dw MuseumF1_h + dw MuseumF2_h + dw PewterGym_h + dw PewterHouse1_h + dw PewterMart_h + dw PewterHouse2_h + dw PewterPokecenter_h + dw MtMoon1_h + dw MtMoon2_h + dw MtMoon3_h + dw CeruleanHouseTrashed_h + dw CeruleanHouse2_h + dw CeruleanPokecenter_h + dw CeruleanGym_h + dw BikeShop_h + dw CeruleanMart_h + dw MtMoonPokecenter_h + dw CeruleanHouseTrashed_h ; copy of map 62 + dw Route5Gate_h + dw UndergroundTunnelEntranceRoute5_h + dw DayCareM_h + dw Route6Gate_h + dw UndergroundTunnelEntranceRoute6_h + dw $56e3 ; id=75 + dw Route7Gate_h + dw UndergroundPathEntranceRoute7_h + dw $575d + dw Route8Gate_h + dw UndergroundPathEntranceRoute8_h + dw RockTunnelPokecenter_h + dw RockTunnel1_h + dw PowerPlant_h + dw Route11Gate_h + dw DiglettsCaveEntranceRoute11_h + dw Route11GateUpstairs_h + dw Route12Gate_h + dw BillsHouse_h + dw VermilionPokecenter_h + dw FanClub_h + dw VermilionMart_h + dw VermilionGym_h + dw VermilionHouse1_h + dw VermilionDock_h + dw SSAnne1_h + dw SSAnne2_h + dw SSAnne3_h + dw SSAnne4_h + dw SSAnne5_h + dw SSAnne6_h + dw SSAnne7_h + dw SSAnne8_h + dw SSAnne9_h + dw SSAnne10_h ; id=104 + dw Lance_h ; unused + dw Lance_h ; unused + dw Lance_h ; unused + dw VictoryRoad1_h ; id=108 + dw Lance_h ; unused + dw Lance_h ; unused + dw Lance_h ; unused + dw Lance_h ; unused + dw Lance_h + dw Lance_h ; unused + dw Lance_h ; unused + dw Lance_h ; unused + dw Lance_h ; unused + dw $6492 + dw UndergroundPathNS_h + dw $5f11 + dw UndergroundPathWE_h + dw CeladonMart1_h + dw CeladonMart2_h + dw CeladonMart3_h + dw CeladonMart4_h + dw CeladonMartRoof_h + dw CeladonMartElevator_h + dw CeladonMansion1_h + dw CeladonMansion2_h + dw CeladonMansion3_h + dw CeladonMansion4_h + dw CeladonMansion5_h + dw CeladonPokecenter_h + dw CeladonGym_h + dw CeladonGameCorner_h + dw CeladonMart5_h + dw CeladonPrizeRoom_h + dw CeladonDiner_h + dw CeladonHouse_h + dw CeladonHotel_h + dw LavenderPokecenter_h + dw PokemonTower1_h + dw PokemonTower2_h + dw PokemonTower3_h + dw PokemonTower4_h + dw PokemonTower5_h + dw PokemonTower6_h + dw PokemonTower7_h + dw LavenderHouse1_h + dw LavenderMart_h + dw LavenderHouse2_h + dw FuchsiaMart_h + dw FuchsiaHouse1_h + dw FuchsiaPokecenter_h + dw FuchsiaHouse2_h + dw SafariZoneEntrance_h + dw FuchsiaGym_h + dw FuchsiaMeetingRoom_h + dw SeafoamIslands2_h + dw SeafoamIslands3_h + dw SeafoamIslands4_h + dw SeafoamIslands5_h + dw VermilionHouse2_h + dw FuchsiaHouse3_h + dw Mansion1_h + dw CinnabarGym_h + dw Lab1_h + dw Lab2_h + dw Lab3_h + dw Lab4_h + dw CinnabarPokecenter_h + dw CinnabarMart_h + dw $5e72 + dw IndigoPlateauLobby_h + dw CopycatsHouseF1_h + dw CopycatsHouseF2_h + dw FightingDojo_h + dw SaffronGym_h + dw SaffronHouse1_h + dw SaffronMart_h + dw SilphCo1_h + dw SaffronPokecenter_h + dw SaffronHouse2_h + dw Route15Gate_h + dw $563e + dw Route16GateMap_h + dw Route16GateUpstairs_h + dw Route16House_h + dw Route12House_h + dw Route18Gate_h + dw Route18GateHeader_h + dw SeafoamIslands1_h + dw Route22Gate_h + dw VictoryRoad2_h + dw Route12GateUpstairs_h + dw VermilionHouse3_h + dw DiglettsCave_h + dw VictoryRoad3_h + dw RocketHideout1_h + dw RocketHideout2_h + dw RocketHideout3_h + dw RocketHideout4_h + dw RocketHideoutElevator_h + dw $5704 + dw $5704 + dw $5704 + dw SilphCo2_h + dw SilphCo3_h ; id=208 + dw SilphCo4_h + dw SilphCo5_h + dw SilphCo6_h + dw SilphCo7_h + dw SilphCo8_h + dw Mansion2_h + dw Mansion3_h + dw Mansion4_h + dw SafariZoneEast_h + dw SafariZoneNorth_h + dw SafariZoneWest_h + dw SafariZoneCenter_h + dw SafariZoneRestHouse1_h + dw SafariZoneSecretHouse_h + dw SafariZoneRestHouse2_h + dw SafariZoneRestHouse3_h + dw SafariZoneRestHouse4_h + dw UnknownDungeon2_h + dw UnknownDungeon3_h + dw UnknownDungeon1_h + dw NameRater_h + dw CeruleanHouse3_h + dw $56b2 + dw RockTunnel2_h + dw SilphCo9_h + dw SilphCo10_h + dw SilphCo11_h + dw SilphCoElevator_h + dw $5ce5 + dw $5ce5 + dw BattleCenterM_h + dw TradeCenterM_h + dw $5CE5 + dw $5CE5 + dw $5CE5 + dw $5CE5 + dw Lorelei_h + dw Bruno_h + dw Agatha_h + +INCBIN "baserom.gbc",$39E,$1627 - $39E + +;XXX what does this do +;XXX what points to this +; offset 1627 + ld bc,$D0B8 + add hl,bc + ld a,[hli] + ld [$D0AB],a + ld a,[hl] + ld [$D0AC],a + +; offset 1633 +; define (by index number) the bank that a pokemon's image is in +; index = Mew, bank 1 +; index = Kabutops fossil, bank $B +; index < $1F, bank 9 +; $1F ≤ index < $4A, bank $A +; $4A ≤ index < $74, bank $B +; $74 ≤ index < $99, bank $C +; $99 ≤ index, bank $D + ld a,[$CF91] ; XXX name for this ram location + ld b,a + cp $15 + ld a,$01 + jr z,.GotBank\@ + ld a,b + cp $B6 + ld a,$0B + jr z,.GotBank\@ + ld a,b + cp $1F + ld a,$09 + jr c,.GotBank\@ + ld a,b + cp $4A + ld a,$0A + jr c,.GotBank\@ + ld a,b + cp $74 + ld a,$0B + jr c,.GotBank\@ + ld a,b + cp $99 + ld a,$0C + jr c,.GotBank\@ + ld a,$0D +.GotBank\@ + jp $24FD + +INCBIN "baserom.gbc",$1665,$172F - $1665 + +Tset0B_Coll: + INCBIN "baserom.gbc",$172F,$1735-$172F +Tset00_Coll: + INCBIN "baserom.gbc",$1735,$1749-$1735 +Tset01_Coll: + INCBIN "baserom.gbc",$1749,$1753-$1749 +Tset02_Coll: + INCBIN "baserom.gbc",$1753,$1759-$1753 +Tset05_Coll: + INCBIN "baserom.gbc",$1759,$1765-$1759 +Tset03_Coll: + INCBIN "baserom.gbc",$1765,$1775-$1765 +Tset08_Coll: + INCBIN "baserom.gbc",$1775,$177F-$1775 +Tset09_Coll: + INCBIN "baserom.gbc",$177F,$178A-$177F +Tset0D_Coll: + INCBIN "baserom.gbc",$178A,$1795-$178A +Tset0E_Coll: + INCBIN "baserom.gbc",$1795,$179A-$1795 +Tset0F_Coll: + INCBIN "baserom.gbc",$179A,$17A2-$179A +Tset10_Coll: + INCBIN "baserom.gbc",$17A2,$17AC-$17A2 +Tset11_Coll: + INCBIN "baserom.gbc",$17AC,$17B8-$17AC +Tset12_Coll: + INCBIN "baserom.gbc",$17B8,$17C0-$17B8 +Tset13_Coll: + INCBIN "baserom.gbc",$17C0,$17CA-$17C0 +Tset14_Coll: + INCBIN "baserom.gbc",$17CA,$17D1-$17CA +Tset15_Coll: + INCBIN "baserom.gbc",$17D1,$17DD-$17D1 +Tset16_Coll: + INCBIN "baserom.gbc",$17DD,$17F0-$17DD +Tset17_Coll: + INCBIN "baserom.gbc",$17F0,$190F-$17F0 + +ClearScreen: ; 190F +; clears all tiles in the tilemap, +; then wait three frames + ld bc,$0168 ; tilemap size + inc b + ld hl,$C3A0 ; TILEMAP_START + ld a,$7F ; $7F is blank tile +.loop\@ + ld [hli],a + dec c + jr nz,.loop\@ + dec b + jr nz,.loop\@ + jp Delay3 + +TextBoxBorder: ; 1922 +; draw a text box +; upper-left corner at coordinates hl +; height b +; width c + + ; first row + push hl + ld a,"┌" + ld [hli],a + inc a ; horizontal border ─ + call NPlaceChar + inc a ; upper-right border ┐ + ld [hl],a + + ; middle rows + pop hl + ld de,20 + add hl,de ; skip the top row + +.PlaceRow\@ + push hl + ld a,"│" + ld [hli],a + ld a," " + call NPlaceChar + ld [hl],"│" + + pop hl + ld de,20 + add hl,de ; move to next row + dec b + jr nz,.PlaceRow\@ + + ; bottom row + ld a,"└" + ld [hli],a + ld a,"─" + call NPlaceChar + ld [hl],"┘" + ret +; +NPlaceChar: +; place a row of width c of identical characters + ld d,c +.loop\@ + ld [hli],a + dec d + jr nz,.loop\@ + ret + +PlaceString: ; 1955 + push hl +PlaceNextChar: ; 1956 + ld a,[de] + + cp "@" + jr nz,.PlaceText\@ + ld b,h + ld c,l + pop hl + ret + +.PlaceText\@ + cp $4E + jr nz,.next\@ + ld bc,$0028 + ld a,[$FFF6] + bit 2,a + jr z,.next2\@ + ld bc,$14 +.next2\@ + pop hl + add hl,bc + push hl + jp Next19E8 + +.next\@ + cp $4F + jr nz,.next3\@ + pop hl + ld hl,$C4E1 + push hl + jp Next19E8 + +.next3\@ ; Check against a dictionary + and a + jp z,Char00 + cp $4C + jp z,$1B0A + cp $4B + jp z,Char4B + cp $51 + jp z,Char51 + cp $49 + jp z,Char49 + cp $52 + jp z,Char52 + cp $53 + jp z,Char53 + cp $54 + jp z,Char54 + cp $5B + jp z,Char5B + cp $5E + jp z,Char5E + cp $5C + jp z,Char5C + cp $5D + jp z,Char5D + cp $55 + jp z,$1A7C + cp $56 + jp z,Char56 + cp $57 + jp z,$1AAD + cp $58 + jp z,Char58 + cp $4A + jp z,Char4A + cp $5F + jp z,Char5F + cp $59 + jp z,Char59 + cp $5A + jp z,Char5A + ld [hli],a + call $38D3 +Next19E8: + inc de + jp PlaceNextChar + +Char00: + ld b,h + ld c,l + pop hl + ld de,Char00Text + dec de + ret + +Char00Text: ; “%d ERROR.” + TX_FAR _Char00Text + db "@" + +Char52: ; player’s name + push de + ld de,W_PLAYERNAME + jr FinishDTE + +Char53: ; rival’s name + push de + ld de,W_RIVALNAME + jr FinishDTE + +Char5D: ; TRAINER + push de + ld de,Char5DText + jr FinishDTE + +Char5C: ; TM + push de + ld de,Char5CText + jr FinishDTE + +Char5B: ; PC + push de + ld de,Char5BText + jr FinishDTE + +Char5E: ; ROCKET + push de + ld de,Char5EText + jr FinishDTE + +Char54: ; POKé + push de + ld de,Char54Text + jr FinishDTE + +Char56: ; …… + push de + ld de,Char56Text + jr FinishDTE + +Char4A: ; PKMN + push de + ld de,Char4AText + jr FinishDTE + +Char59: +; depending on whose turn it is, print +; enemy active monster’s name, prefixed with “Enemy ” +; or +; player active monster’s name +; (like Char5A but flipped) + ld a,[H_WHOSETURN] + xor 1 + jr MonsterNameCharsCommon + +Char5A: +; depending on whose turn it is, print +; player active monster’s name +; or +; enemy active monster’s name, prefixed with “Enemy ” + ld a,[H_WHOSETURN] +MonsterNameCharsCommon: + push de + and a + jr nz,.Enemy\@ + ld de,$D009 ; player active monster name + jr FinishDTE + +.Enemy\@ ; 1A40 + ; print “Enemy ” + ld de,Char5AText + call PlaceString + + ld h,b + ld l,c + ld de,$CFDA ; enemy active monster name + +FinishDTE: + call PlaceString + ld h,b + ld l,c + pop de + inc de + jp PlaceNextChar + +Char5CText: + db "TM@" +Char5DText: + db "TRAINER@" +Char5BText: + db "PC@" +Char5EText: + db "ROCKET@" +Char54Text: + db "POKé@" +Char56Text: + db "……@" +Char5AText: + db "Enemy @" +Char4AText: + db $E1,$E2,"@" ; PKMN + +Char55: + push de + ld b,h + ld c,l + ld hl,Char55Text + call $1B40 + ld h,b + ld l,c + pop de + inc de + jp PlaceNextChar + +Char55Text: +; equivalent to Char4B + TX_FAR _Char55Text + db "@" + +Char5F: +; ends a Pokédex entry + ld [hl],"." + pop hl + ret + +Char58: + ld a,[$D12B] + cp 4 + jp z,Next1AA2 + ld a,$EE + ld [$C4F2],a +Next1AA2: + call ProtectedDelay3 + call $3898 + ld a,$7F + ld [$C4F2],a + pop hl + ld de,Char58Text + dec de + ret + +Char58Text: + db "@" + +Char51: + push de + ld a,$EE + ld [$C4F2],a + call ProtectedDelay3 + call $3898 + ld hl,$C4A5 + ld bc,$0412 + call $18C4 + ld c,$14 + call DelayFrames + pop de + ld hl,$C4B9 + jp Next19E8 + +Char49: + push de + ld a,$EE + ld [$C4F2],a + call ProtectedDelay3 + call $3898 + ld hl,$C469 + ld bc,$0712 + call $18C4 + ld c,$14 + call DelayFrames + pop de + pop hl + ld hl,$C47D + push hl + jp Next19E8 + +Char4B: + ld a,$EE + ld [$C4F2],a + call ProtectedDelay3 + push de + call $3898 + pop de + ld a,$7F + ld [$C4F2],a + push de + call Next1B18 + call Next1B18 + ld hl,$C4E1 + pop de + jp Next19E8 + +Next1B18: + ld hl,$C4B8 + ld de,$C4A4 + ld b,$3C +.next\@ + ld a,[hli] + ld [de],a + inc de + dec b + jr nz,.next\@ + ld hl,$C4E1 + ld a,$7F + ld b,$12 +.next2\@ + ld [hli],a + dec b + jr nz,.next2\@ + + ; wait five frames + ld b,5 +.WaitFrame\@ + call DelayFrame + dec b + jr nz,.WaitFrame\@ + + ret + +ProtectedDelay3: + push bc + call Delay3 + pop bc + ret + +INCBIN "baserom.gbc",$1B40,$20AF - $1B40 + +DelayFrame: ; 20AF +; delay for one frame + ld a,1 + ld [$FFD6],a + +; wait for the next Vblank, halting to conserve battery +.halt\@ + db $76 ; XXX this is a hack--rgbasm adds a nop after this instr + ; even when ints are enabled + ld a,[$FFD6] + and a + jr nz,.halt\@ + + ret + +; These routines manage gradual fading +; (e.g., entering a doorway) +LoadGBPal: ; 20BA + ld a,[$d35d] ;tells if cur.map is dark + ld b,a ;(requires HM5_FLASH?) + ld hl,GBPalTable_00 ;16 + ld a,l + sub b + ld l,a + jr nc,.jr0\@ + dec h +.jr0\@ + ld a,[hli] + ld [rBGP],a + ld a,[hli] + ld [rOBP0],a + ld a,[hli] + ld [rOBP1],a + ret + +GBFadeOut1: ; 20D1 + ld hl,IncGradGBPalTable_01 ;0d + ld b,$04 + jr GBFadeOutCommon + +GBFadeOut2: ; 20D8 + ld hl,IncGradGBPalTable_02 ;1c + ld b,$03 + +GBFadeOutCommon: + ld a,[hli] + ld [rBGP],a + ld a,[hli] + ld [rOBP0],a + ld a,[hli] + ld [rOBP1],a + ld c,8 + call DelayFrames + dec b + jr nz,GBFadeOutCommon + ret + +GBFadeIn1: ; 20EF + ld hl,DecGradGBPalTable_01 ;18 + ld b,$04 + jr GBFadeInCommon + +GBFadeIn2: ; 20F6 + ld hl,DecGradGBPalTable_02 ;21 + ld b,$03 + +GBFadeInCommon: + ld a,[hld] + ld [rOBP1],a + ld a,[hld] + ld [rOBP0],a + ld a,[hld] + ld [rBGP],a + ld c,8 + call DelayFrames + dec b + jr nz,GBFadeInCommon + ret + +IncGradGBPalTable_01: ; 210D + db %11111111 ;BG Pal + db %11111111 ;OBJ Pal 1 + db %11111111 ;OBJ Pal 2 + ;and so on... + db %11111110 + db %11111110 + db %11111000 + + db %11111001 + db %11100100 + db %11100100 +GBPalTable_00: ;16 + db %11100100 + db %11010000 +DecGradGBPalTable_01: ;18 + db %11100000 + ;19 + db %11100100 + db %11010000 + db %11100000 +IncGradGBPalTable_02: ;1c + db %10010000 + db %10000000 + db %10010000 + + db %01000000 + db %01000000 +DecGradGBPalTable_02: ;21 + db %01000000 + + db %00000000 + db %00000000 + db %00000000 + +INCBIN "baserom.gbc",$2125,$2442 - $2125 + +; XXX where is the pointer to this data? +MartInventories: ; 2442 + ; first byte $FE, next byte # of items, last byte $FF + +; Viridian +ViridianMartText4: ; XXX confirm + db $FE,4,POKE_BALL,ANTIDOTE,PARLYZ_HEAL,BURN_HEAL,$FF + +; Pewter +PewterMartText1: + db $FE,7,POKE_BALL,POTION,ESCAPE_ROPE,ANTIDOTE,BURN_HEAL,AWAKENING + db PARLYZ_HEAL,$FF + +; Cerulean +CeruleanMartText1: + db $FE,7,POKE_BALL,POTION,REPEL,ANTIDOTE,BURN_HEAL,AWAKENING + db PARLYZ_HEAL,$FF + +; Bike shop + db $FE,1,BICYCLE,$FF + +; Vermilion +VermilionMartText1: + db $FE,6,POKE_BALL,SUPER_POTION,ICE_HEAL,AWAKENING,PARLYZ_HEAL + db REPEL,$FF + +; Lavender +LavenderMartText1: + db $FE,9,GREAT_BALL,SUPER_POTION,REVIVE,ESCAPE_ROPE,SUPER_REPEL + db ANTIDOTE,BURN_HEAL,ICE_HEAL,PARLYZ_HEAL,$FF + +; Celadon Dept. Store 2F (1) +CeladonMart2Text1: + db $FE,9,GREAT_BALL,SUPER_POTION,REVIVE,SUPER_REPEL,ANTIDOTE + db BURN_HEAL,ICE_HEAL,AWAKENING,PARLYZ_HEAL,$FF + +; Celadon Dept. Store 2F (2) +CeladonMart2Text2: + db $FE,9,TM_32,TM_33,TM_02,TM_07,TM_37,TM_01,TM_05,TM_09,TM_17,$FF + +; Celadon Dept. Store 4F +CeladonMart4Text1: + db $FE,5,POKE_DOLL,FIRE_STONE,THUNDER_STONE,WATER_STONE,LEAF_STONE,$FF + +; Celadon Dept. Store 5F (1) +CeladonMart5Text3: + db $FE,7,X_ACCURACY,GUARD_SPEC_,DIRE_HIT,X_ATTACK,X_DEFEND,X_SPEED + db X_SPECIAL,$FF + +; Celadon Dept. Store 5F (2) +CeladonMart5Text4: + db $FE,5,HP_UP,PROTEIN,IRON,CARBOS,CALCIUM,$FF + +; Fuchsia +FuchsiaMartText1: + db $FE,6,ULTRA_BALL,GREAT_BALL,SUPER_POTION,REVIVE,FULL_HEAL + db SUPER_REPEL,$FF + +; unused? + db $FE,5,GREAT_BALL,HYPER_POTION,SUPER_POTION,FULL_HEAL,REVIVE,$FF + +; Cinnabar +CinnabarMartText1: + db $FE,7,ULTRA_BALL,GREAT_BALL,HYPER_POTION,MAX_REPEL,ESCAPE_ROPE + db FULL_HEAL,REVIVE,$FF + +; Saffron +SaffronMartText1: + db $FE,6,GREAT_BALL,HYPER_POTION,MAX_REPEL,ESCAPE_ROPE,FULL_HEAL + db REVIVE,$FF + +; Indigo +IndigoPlateauLobbyText4: + db $FE,7,ULTRA_BALL,GREAT_BALL,FULL_RESTORE,MAX_POTION,FULL_HEAL + db REVIVE,MAX_REPEL,$FF + +TextScriptEndingChar: + db "@" +TextScriptEnd: ; 24D7 24d7 + ld hl,TextScriptEndingChar + ret + +INCBIN "baserom.gbc",$24DB,$24E5 - $24DB + +VictoryRoad3Text10: +VictoryRoad3Text9: +VictoryRoad3Text8: +VictoryRoad3Text7: +VictoryRoad2Text13: +VictoryRoad2Text12: +VictoryRoad2Text11: +SeafoamIslands1Text2: +SeafoamIslands1Text1: +SeafoamIslands5Text2: +SeafoamIslands5Text1: +SeafoamIslands4Text6: +SeafoamIslands4Text5: +SeafoamIslands4Text4: +SeafoamIslands4Text3: +SeafoamIslands4Text2: +SeafoamIslands4Text1: +SeafoamIslands3Text2: +SeafoamIslands3Text1: +SeafoamIslands2Text2: +SeafoamIslands2Text1: +FuchsiaHouse2Text3: +VictoryRoad1Text7: +VictoryRoad1Text6: ; _VictoryRoad1Text6 +VictoryRoad1Text5: ; 0x24e5 + TX_FAR _VictoryRoad1Text5 + db $50 + +SaffronCityText19: +CinnabarIslandText4: +FuchsiaCityText14: +VermilionCityText9: +LavenderTownText6: +CeruleanCityText14: +PewterCityText8: +ViridianCityText11: ; 0x24ea + TX_FAR _ViridianCityText11 + db $50 + +PewterCityText9: +CeruleanCityText15: +LavenderTownText7: +VermilionCityText10: +CeladonCityText12: +FuchsiaCityText15: +CinnabarIslandText5: +SaffronCityText23: +Route4Text4: +Route10Text8: +ViridianCityText12: ; 0x24ef + TX_FAR _ViridianCityText12 + db $50 + +Route2Text1: +Route4Text3: +Route9Text10: +Route12Text9: +Route12Text10: +Route15Text11: +Route24Text8: +Route25Text10: +ViridianGymText11: +ViridianForestText5: +ViridianForestText6: +ViridianForestText7: +MtMoon1Text8: +MtMoon1Text9: +MtMoon1Text10: +MtMoon1Text11: +MtMoon1Text12: +MtMoon1Text13: +MtMoon3Text8: +MtMoon3Text9: +PowerPlantText10: +PowerPlantText11: +PowerPlantText12: +PowerPlantText13: +PowerPlantText14: +SSAnne8Text10: +SSAnne9Text6: +SSAnne9Text9: +SSAnne10Text9: +SSAnne10Text10: +SSAnne10Text11: +VictoryRoad1Text3: +VictoryRoad1Text4: +PokemonTower3Text4: +PokemonTower4Text4: +PokemonTower4Text5: +PokemonTower4Text6: +PokemonTower5Text6: +PokemonTower6Text4: +PokemonTower6Text5: +FuchsiaHouse2Text2: +VictoryRoad2Text7: +VictoryRoad2Text8: +VictoryRoad2Text9: +VictoryRoad2Text10: +VictoryRoad3Text5: +VictoryRoad3Text6: +RocketHideout1Text6: +RocketHideout1Text7: +RocketHideout2Text2: +RocketHideout2Text3: +RocketHideout2Text4: +RocketHideout2Text5: +RocketHideout3Text3: +RocketHideout3Text4: +RocketHideout4Text5: +RocketHideout4Text6: +RocketHideout4Text7: +RocketHideout4Text8: +RocketHideout4Text9: +SilphCo3Text4: +SilphCo4Text5: +SilphCo4Text6: +SilphCo4Text7: +SilphCo5Text6: +SilphCo5Text7: +SilphCo5Text8: +SilphCo6Text9: +SilphCo6Text10: +SilphCo7Text10: +SilphCo7Text11: +SilphCo7Text12: +Mansion1Text2: +Mansion1Text3: +Mansion2Text2: +Mansion3Text3: +Mansion3Text4: +Mansion4Text3: +Mansion4Text4: +Mansion4Text5: +Mansion4Text6: +Mansion4Text8: +SafariZoneEastText1: +SafariZoneEastText2: +SafariZoneEastText3: +SafariZoneEastText4: +SafariZoneNorthText1: +SafariZoneNorthText2: +SafariZoneWestText1: +SafariZoneWestText2: +SafariZoneWestText3: +SafariZoneWestText4: +SafariZoneCenterText1: +UnknownDungeon2Text1: +UnknownDungeon2Text2: +UnknownDungeon2Text3: +UnknownDungeon3Text2: +UnknownDungeon3Text3: +UnknownDungeon1Text1: +UnknownDungeon1Text2: +UnknownDungeon1Text3: +SilphCo10Text4: +SilphCo10Text5: +SilphCo10Text6: +Route2Text2: ; 24f4 0x424f4 + db $08 ; asm + ld a, $5c + call Predef + jp $24d7 + +INCBIN "baserom.gbc",$24fd,$2f9e - $24fd + +GetMonName: ; 2F9E + push hl + ld a,[$ffb8] + push af + ld a,BANK(MonsterNames) ; 07 + ld [$ffb8],a + ld [$2000],a + ld a,[$d11e] + dec a + ld hl,MonsterNames ; 421E + ld c,10 + ld b,0 + call AddNTimes + ld de,$cd6d + push de + ld bc,10 + call CopyData + ld hl,$cd77 + ld [hl],$50 + pop de + pop af + ld [$ffb8],a + ld [$2000],a + pop hl + ret + +GetItemName: ; 2FCF +; given an item ID at [$D11E], store the name of the item into a string +; starting at $CD6D + push hl + push bc + ld a,[$D11E] + cp HM_01 ; is this a TM/HM? + jr nc,.Machine\@ + + ld [$D0B5],a + ld a,ITEM_NAME + ld [$D0B6],a + ld a,BANK(ItemNames) + ld [$D0B7],a + call GetName + jr .Finish\@ + +.Machine\@ + call GetMachineName +.Finish\@ + ld de,$CD6D ; pointer to where item name is stored in RAM + pop bc + pop hl + ret + +GetMachineName: +; copies the name of the TM/HM in [$D11E] to $CD6D + push hl + push de + push bc + ld a,[$D11E] + push af + cp TM_01 ; is this a TM? [not HM] + jr nc,.WriteTM\@ +; if HM, then write "HM" and add 5 to the item ID, so we can reuse the +; TM printing code + add 5 + ld [$D11E],a + ld hl,HiddenPrefix ; points to "HM" + ld bc,2 + jr .WriteMachinePrefix\@ +.WriteTM\@ + ld hl,TechnicalPrefix ; points to "TM" + ld bc,2 +.WriteMachinePrefix\@ + ld de,$CD6D + call CopyData + +; now get the machine number and convert it to text + ld a,[$D11E] + sub TM_01 - 1 + ld b,$F6 ; "0" +.FirstDigit\@ + sub 10 + jr c,.SecondDigit\@ + inc b + jr .FirstDigit\@ +.SecondDigit\@ + add 10 + push af + ld a,b + ld [de],a + inc de + pop af + ld b,$F6 ; "0" + add b + ld [de],a + inc de + ld a,"@" + ld [de],a + + pop af + ld [$D11E],a + pop bc + pop de + pop hl + ret + +TechnicalPrefix: + db "TM" +HiddenPrefix: + db "HM" + +INCBIN "baserom.gbc",$3040,$31cc - $3040 + +LoadTrainerHeader: ; 0x31cc + call $3157 + xor a + call $3193 + ld a, $2 + call $3193 + ld a, [$cc55] + ld c, a + ld b, $2 + call $31c7 + ld a, c + and a + jr z, .asm_c2964 ; 0x31e3 $8 + ld a, $6 + call $3193 + jp PrintText +.asm_c2964 ; 0x31ed + ld a, $4 + call $3193 + call PrintText + ld a, $a + call $3193 + push de + ld a, $8 + call $3193 + pop de + call $3354 + ld hl, $d733 + set 4, [hl] + ld hl, $cd60 + bit 0, [hl] + ret nz + call $336a + ld hl, $da39 + inc [hl] + jp $325d + call $3306 + ld a, [$cf13] + cp $ff + jr nz, .asm_76c22 ; 0x3221 $8 + xor a + ld [$cf13], a + ld [$cc55], a + ret +.asm_76c22 ; 0x322b + ld hl, $d733 + set 3, [hl] + ld [$cd4f], a + xor a + ld [$cd50], a + ld a, $4c + call Predef + ld a, $f0 + ld [$cd6b], a + xor a + ldh [$b4], a + call $32cf + ld hl, $da39 + inc [hl] + ret + +INCBIN "baserom.gbc",$324c,$3474 - $324c + +FuncTX_F7: ; 3474 +; XXX find a better name for this function +; special_F7 + ld b,BANK(CeladonPrizeMenu) + ld hl,CeladonPrizeMenu + call Bankswitch + jp $29DF ; continue to main text-engine function + +INCBIN "baserom.gbc",$347F,$3493 - $347F + +IsItemInBag: ; 3493 +; given an item_id in b +; set zero flag if item isn't in player's bag +; else reset zero flag +; related to Pokémon Tower and ghosts + ld a,$1C + call Predef + ld a,b + and a + ret + +INCBIN "baserom.gbc",$349B,$3541 - $349B + +Function3541: ; 3541 +; XXX what do these three functions do + push hl + call Function354E + ld [hl],$FF + call Function3558 + ld [hl],$FF + pop hl + ret + +Function354E: ; 354E + ld h,$C2 + ld a,[$FF8C] ; the sprite to move + swap a + add a,6 + ld l,a + ret + +Function3558: ; 3558 + push de + ld hl,$D4E4 + ld a,[$FF8C] ; the sprite to move + dec a + add a + ld d,0 + ld e,a + add hl,de + pop de + ret + +INCBIN "baserom.gbc",$3566,$35BC - $3566 + +BankswitchHome: ; 35BC +; switches to bank # in a +; Only use this when in the home bank! + ld [$CF09],a + ld a,[$FFB8] + ld [$CF08],a + ld a,[$CF09] + ld [$FFB8],a + ld [$2000],a + ret + +BankswitchBack: ; 35CD +; returns from BankswitchHome + ld a,[$CF08] + ld [$FFB8],a + ld [$2000],a + ret + +Bankswitch: ; 35D6 +; self-contained bankswitch, use this when not in the home bank +; switches to the bank in b + ld a,[$FFB8] + push af + ld a,b + ld [$FFB8],a + ld [$2000],a + ld bc,.Return\@ + push bc + jp [hl] +.Return\@ + pop bc + ld a,b + ld [$FFB8],a + ld [$2000],a + ret + +INCBIN "baserom.gbc",$35EC,$363A - $35EC + +MoveSprite: ; 363A +; move the sprite [$FF8C] with the movement pointed to by de +; actually only copies the movement data to $CC5B for later + call Function3541 + push hl + push bc + call Function354E + xor a + ld [hl],a + ld hl,$CC5B + ld c,0 + +.loop\@ + ld a,[de] + ldi [hl],a + inc de + inc c + cp a,$FF ; have we reached the end of the movement data? + jr nz,.loop\@ + + ld a,c + ld [$CF0F],a ; number of steps taken + + pop bc + ld hl,$D730 + set 0,[hl] + pop hl + xor a + ld [$CD3B],a + ld [$CCD3],a + dec a + ld [$CD6B],a + ld [$CD3A],a + ret + +INCBIN "baserom.gbc",$366B,$3739 - $366B + +DelayFrames: ; 3739 +; wait n frames, where n is the value in c + call DelayFrame + dec c + jr nz,DelayFrames + ret + +INCBIN "baserom.gbc",$3740,$375D - $3740 + +NamePointers: ; 375D + dw MonsterNames + dw MoveNames + dw UnusedNames + dw ItemNames + dw $D273 ; player's OT names list + dw $D9AC ; enemy's OT names list + dw TrainerNames + +GetName: ; 376B +; arguments: +; [$D0B5] = which name +; [$D0B6] = which list +; [$D0B7] = bank of list +; +; returns pointer to name in de + ld a,[$d0b5] + ld [$d11e],a + cp a,$C4 ;it's TM/HM + jp nc,GetMachineName + ld a,[$ffb8] + push af + push hl + push bc + push de + ld a,[$d0b6] ;List3759_entrySelector + dec a + jr nz,.otherEntries\@ + ;1 = MON_NAMES + call GetMonName + ld hl,11 + add hl,de + ld e,l + ld d,h + jr .gotPtr\@ +.otherEntries\@ ;$378d + ;2-7 = OTHER ENTRIES + ld a,[$d0b7] + ld [$ffb8],a + ld [$2000],a + ld a,[$d0b6] ;VariousNames' entryID + dec a + add a + ld d,0 + ld e,a + jr nc,.skip\@ + inc d +.skip\@ ;$37a0 + ld hl,NamePointers + add hl,de + ld a,[hli] + ld [$ff96],a + ld a,[hl] + ld [$ff95],a + ld a,[$ff95] + ld h,a + ld a,[$ff96] + ld l,a + ld a,[$d0b5] + ld b,a + ld c,0 +.nextName\@ + ld d,h + ld e,l +.nextChar\@ + ld a,[hli] + cp a,$50 + jr nz,.nextChar\@ + inc c ;entry counter + ld a,b ;wanted entry + cp c + jr nz,.nextName\@ + ld h,d + ld l,e + ld de,$cd6d + ld bc,$0014 + call CopyData +.gotPtr\@ ;$37cd + ld a,e + ld [$cf8d],a + ld a,d + ld [$cf8e],a + pop de + pop bc + pop hl + pop af + ld [$ffb8],a + ld [$2000],a + ret + +INCBIN "baserom.gbc",$37df,$3927 - $37df + +AddPokemonToParty: ; 0x3927 + push hl + push de + push bc + ld b, $3 ; BANK(MyFunction) + ld hl, $72e5 ; MyFunction + call Bankswitch + pop bc + pop de + pop hl + ret + +INCBIN "baserom.gbc",$3936,$3A87 - $3936 + +AddNTimes: ; 3A87 +; add bc to hl a times + and a + ret z +.loop\@ + add hl,bc + dec a + jr nz,.loop\@ + ret + +INCBIN "baserom.gbc",$3A8E,$3C49 - $3A8E + +PrintText: ; 3C49 +; given a pointer in hl, print the text there + push hl + ld a,1 + ld [$D125],a + call $30E8 + call $2429 + call Delay3 + pop hl + FuncCoord 1,14 + ld bc,Coord ;$C4B9 + jp $1B40 + +Func3C5F: ; 3C5F + push bc + xor a + ld [$FF95],a + ld [$FF96],a + ld [$FF97],a + ld a,b + and $F + cp 1 + jr z,.next\@ + cp 2 + jr z,.next2\@ + ld a,[de] + ld [$FF96],a + inc de + ld a,[de] + ld [$FF97],a + inc de + ld a,[de] + ld [$FF98],a + jr .next3\@ + +.next2\@ + ld a,[de] + ld [$FF97],a + inc de + ld a,[de] + ld [$FF98],a + jr .next3\@ + +.next\@ + ld a,[de] + ld [$FF98],a + +.next3\@ + push de + ld d,b + ld a,c + ld b,a + xor a + ld c,a + ld a,b + cp 2 + jr z,.next4\@ + cp 3 + jr z,.next5\@ + cp 4 + jr z,.next6\@ + cp 5 + jr z,.next7\@ + cp 6 + jr z,.next8\@ + ld a,$F + ld [$FF99],a + ld a,$42 + ld [$FF9A],a + ld a,$40 + ld [$FF9B],a + call $3D25 + call $3D89 +.next8\@ + ld a,1 + ld [$FF99],a + ld a,$86 + ld [$FF9A],a + ld a,$A0 + ld [$FF9B],a + call $3D25 + call $3D89 +.next7\@ + xor a + ld [$FF99],a + ld a,$27 + ld [$FF9A],a + ld a,$10 + ld [$FF9B],a + call $3D25 + call $3D89 +.next6\@ + xor a + ld [$FF99],a + ld a,3 + ld [$FF9A],a + ld a,$E8 + ld [$FF9B],a + call $3D25 + call $3D89 +.next5\@ + xor a + ld [$FF99],a + xor a + ld [$FF9A],a + ld a,$64 + ld [$FF9B],a + call $3D25 + call $3D89 +.next4\@ + ld c,0 + ld a,[$FF98] +.next10\@ + cp $A + jr c,.next9\@ + sub $A + inc c + jr .next10\@ +.next9\@ + ld b,a + ld a,[$FF95] + or c + ld [$FF95],a + jr nz,.next11\@ + call $3D83 + jr .next12\@ +.next11\@ + ld a,$F6 + add a,c + ld [hl],a +.next12\@ + call $3D89 + ld a,$F6 + add a,b + ld [hli],a + pop de + dec de + pop bc + ret + +INCBIN "baserom.gbc",$3D25,$3DAB - $3D25 + +IsInArray: ; 3DAB +; searches an array at hl for the value in a. +; skips (de − 1) bytes between reads, so to check every byte, de should be 1. +; if found, returns count in b and sets carry. + ld b,0 + ld c,a +.loop\@ + ld a,[hl] + cp a,$FF + jr z,.NotInArray\@ + cp c + jr z,.InArray\@ + inc b + add hl,de + jr .loop\@ +.NotInArray\@ + and a + ret +.InArray\@ + scf + ret + +INCBIN "baserom.gbc",$3DBE,$3DD7 - $3DBE + +Delay3: ; 3DD7 +; call Delay with a parameter of 3 + ld c,3 + jp DelayFrames + +INCBIN "baserom.gbc",$3DDC,$3DED - $3DDC + +GoPAL_SET_CF1C: ; 3ded + ld b,$ff +GoPAL_SET: ; 3def + ld a,[$cf1b] + and a + ret z + ld a,$45 + jp Predef + +INCBIN "baserom.gbc",$3df9,$3e2e - $3df9 + +GiveItem: ; 0x3e2e + ld a, b + ld [$d11e], a + ld [$cf91], a + ld a, c + ld [$cf96], a + ld hl,W_NUMBAGITEMS + call $2bcf + ret nc + call GetItemName ; $2fcf + call $3826 + scf + ret + +GivePokemon: ; 0x3e48 + ld a, b + ld [$cf91], a + ld a, c + ld [$d127], a + xor a + ld [$cc49], a + ld b, $13 + ld hl, $7da5 + jp Bankswitch + +GenRandom: ; 3E5C +; store a random 8-bit value in a + push hl + push de + push bc + ld b,BANK(GenRandom_) + ld hl,GenRandom_ + call Bankswitch + ld a,[H_RAND1] + pop bc + pop de + pop hl + ret + +Predef: ; 3E6D +; runs a predefined ASM command, where the command ID is read from $D0B7 +; $3E6D grabs the ath pointer from PredefPointers and executes it + + ld [$CC4E],a ; save the predef routine's ID for later + + ld a,[$FFB8] + ld [$CF12],a + + ; save bank and call 13:7E49 + push af + ld a,BANK(GetPredefPointer) + ld [$FFB8],a + ld [$2000],a + call GetPredefPointer + + ; call the predef function + ; ($D0B7 has the bank of the predef routine) + ld a,[$D0B7] + ld [$FFB8],a + ld [$2000],a + ld de,.Return\@ + push de + jp [hl] + ; after the predefined function finishes it returns here +.Return\@ + pop af + ld [$FFB8],a + ld [$2000],a + ret + +INCBIN "baserom.gbc",$3E94,$4000 - $3E94 + +SECTION "bank1",DATA,BANK[$1] + +INCBIN "baserom.gbc",$4000,$112 + +MewPicFront: + INCBIN "pic/bmon/mew.pic" +MewPicBack: + INCBIN "pic/monback/mewb.pic" + +INCBIN "baserom.gbc",$425B,$4588-$425B + +TitleMons: ; 4588 +; mons on the title screen are randomly chosen from here +IF _RED + db CHARMANDER + db SQUIRTLE + db BULBASAUR + db WEEDLE + db NIDORAN_M + db SCYTHER + db PIKACHU + db CLEFAIRY + db RHYDON + db ABRA + db GASTLY + db DITTO + db PIDGEOTTO + db ONIX + db PONYTA + db MAGIKARP +ENDC +IF _GREEN + db BULBASAUR + db CHARMANDER + db SQUIRTLE + db CATERPIE + db NIDORAN_F + db PINSIR + db PIKACHU + db CLEFAIRY + db RHYDON + db ABRA + db GASTLY + db DITTO + db PIDGEOTTO + db ONIX + db PONYTA + db MAGIKARP +ENDC +IF _BLUE + db SQUIRTLE + db CHARMANDER + db BULBASAUR + db MANKEY + db HITMONLEE + db VULPIX + db CHANSEY + db AERODACTYL + db JOLTEON + db SNORLAX + db GLOOM + db POLIWAG + db DODUO + db PORYGON + db GENGAR + db RAICHU +ENDC + +INCBIN "baserom.gbc",$4598,$472B-$4598 + +ItemNames: ; 472B + db "MASTER BALL@" + db "ULTRA BALL@" + db "GREAT BALL@" + db "POKé BALL@" + db "TOWN MAP@" + db "BICYCLE@" + db "?????@" + db "SAFARI BALL@" + db "POKéDEX@" + db "MOON STONE@" + db "ANTIDOTE@" + db "BURN HEAL@" + db "ICE HEAL@" + db "AWAKENING@" + db "PARLYZ HEAL@" + db "FULL RESTORE@" + db "MAX POTION@" + db "HYPER POTION@" + db "SUPER POTION@" + db "POTION@" + db "BOULDERBADGE@" + db "CASCADEBADGE@" + db "THUNDERBADGE@" + db "RAINBOWBADGE@" + db "SOULBADGE@" + db "MARSHBADGE@" + db "VOLCANOBADGE@" + db "EARTHBADGE@" + db "ESCAPE ROPE@" + db "REPEL@" + db "OLD AMBER@" + db "FIRE STONE@" + db "THUNDERSTONE@" + db "WATER STONE@" + db "HP UP@" + db "PROTEIN@" + db "IRON@" + db "CARBOS@" + db "CALCIUM@" + db "RARE CANDY@" + db "DOME FOSSIL@" + db "HELIX FOSSIL@" + db "SECRET KEY@" + db "?????@" + db "BIKE VOUCHER@" + db "X ACCURACY@" + db "LEAF STONE@" + db "CARD KEY@" + db "NUGGET@" + db "PP UP@" + db "POKé DOLL@" + db "FULL HEAL@" + db "REVIVE@" + db "MAX REVIVE@" + db "GUARD SPEC.@" + db "SUPER REPEL@" + db "MAX REPEL@" + db "DIRE HIT@" + db "COIN@" + db "FRESH WATER@" + db "SODA POP@" + db "LEMONADE@" + db "S.S.TICKET@" + db "GOLD TEETH@" + db "X ATTACK@" + db "X DEFEND@" + db "X SPEED@" + db "X SPECIAL@" + db "COIN CASE@" + db "OAK's PARCEL@" + db "ITEMFINDER@" + db "SILPH SCOPE@" + db "POKé FLUTE@" + db "LIFT KEY@" + db "EXP.ALL@" + db "OLD ROD@" + db "GOOD ROD@" + db "SUPER ROD@" + db "PP UP@" + db "ETHER@" + db "MAX ETHER@" + db "ELIXER@" + db "MAX ELIXER@" + db "B2F@" + db "B1F@" + db "1F@" + db "2F@" + db "3F@" + db "4F@" + db "5F@" + db "6F@" + db "7F@" + db "8F@" + db "9F@" + db "10F@" + db "11F@" + db "B4F@" + +UnusedNames: ; 4A92 + db "かみなりバッヂ@" + db "かいがらバッヂ@" + db "おじぞうバッヂ@" + db "はやぶさバッヂ@" + db "ひんやりバッヂ@" + db "なかよしバッヂ@" + db "バラバッヂ@" + db "ひのたまバッヂ@" + db "ゴールドバッヂ@" + db "たまご@" + db "ひよこ@" + db "ブロンズ@" + db "シルバー@" + db "ゴールド@" + db "プチキャプテン@" + db "キャプテン@" + db "プチマスター@" + db "マスター@" + +INCBIN "baserom.gbc",$4B09,$5AF2-$4B09 + +MainMenu: +; Check save file + call Func_5bff + xor a + ld [$D08A],a + inc a + ld [$D088],a + call $609E + jr nc,.next0\@ + + ; Predef 52 loads the save from SRAM to RAM + ld a,$52 + call Predef + +.next0\@ + ld c,20 + call DelayFrames + xor a + ld [$D12B],a + ld hl,$CC2B + ld [hli],a + ld [hli],a + ld [hli],a + ld [hl],a + ld [$D07C],a + ld hl,$D72E + res 6,[hl] + call ClearScreen + call $3DED + call $36A0 ; load some graphics in VRAM + call $3680 ; load fonts in VRAM + ld hl,$D730 + set 6,[hl] + ld a,[$D088] + cp a,1 + jr z,.next1\@ + FuncCoord 0,0 + ld hl,Coord + ld b,6 + ld c,13 + call TextBoxBorder + FuncCoord 2,2 + ld hl,Coord + ld de,$5D7E + call PlaceString + jr .next2\@ +.next1\@ + FuncCoord 0,0 + ld hl,Coord + ld b,4 + ld c,13 + call TextBoxBorder + FuncCoord 2,2 + ld hl,Coord + ld de,$5D87 + call PlaceString +.next2\@ + ld hl,$D730 + res 6,[hl] + call $2429 ; OAM? + xor a + ld [$CC26],a + ld [$CC2A],a + ld [$CC34],a + inc a + ld [$CC25],a + inc a + ld [$CC24],a + ld a,$B + ld [$CC29],a + ld a,[$D088] + ld [$CC28],a + call $3ABE + bit 1,a + jp nz,$42DD ; load title screen (gfx and arrangement) + ld c,20 + call DelayFrames + ld a,[$CC26] + ld b,a + ld a,[$D088] + cp a,2 + jp z,.next3\@ + inc b ; adjust MenuArrow_Counter +.next3\@ + ld a,b + and a + jr z,.next4\@ ; if press_A on Continue + cp a,1 + jp z,$5D52 ; if press_A on NewGame + call $5E8A ; if press_a on Options + ld a,1 + ld [$D08A],a + jp .next0\@ +.next4\@ + call $5DB5 + ld hl,$D126 + set 5,[hl] +.next6\@ + xor a + ld [$FFB3],a + ld [$FFB2],a + ld [$FFB4],a + call $19A + ld a,[$FFB4] + bit 0,a + jr nz,.next5\@ + bit 1,a + jp nz,.next0\@ + jr .next6\@ +.next5\@ + call $3DD4 + call ClearScreen + ld a,4 + ld [$D52A],a + ld c,10 + call DelayFrames + ld a,[$D5A2] + and a + jp z,$5D5F + ld a,[W_CURMAP] ; map ID + cp a,$76 ; Hall of Fame + jp nz,$5D5F + xor a + ld [$D71A],a + ld hl,$D732 + set 2,[hl] + call $62CE + jp $5D5F +Func_5bff: + ld a,1 + ld [$D358],a + ld a,3 + ld [$D355],a + ret + +INCBIN "baserom.gbc",$5C0A,$6115 - $5C0A + +OakSpeech: ; 6115 + ld a,$FF + call $23B1 ; stop music + ld a,2 ; bank of song + ld c,a + ld a,$EF ; song # + call $23A1 ; plays music + call ClearScreen + call $36A0 + call $60CA + ld a,$18 + call Predef + ld hl,$D53A + ld a,$14 + ld [$CF91],a + ld a,1 + ld [$CF96],a + call $2BCF + ld a,[$D07C] + ld [$D71A],a + call Function62CE + xor a + ld [$FFD7],a + ld a,[$D732] + bit 1,a ; XXX when is bit 1 set? + jp nz,Function61BC ; easter egg: skip the intro + ld de,$615F + ld bc,$1300 + call IntroPredef3B ; displays Oak pic? + call FadeInIntroPic + ld hl,OakSpeechText1 + call PrintText ; prints text box + call GBFadeOut2 + call ClearScreen + ld a,NIDORINO + ld [$D0B5],a ; pic displayed is stored at this location + ld [$CF91],a + call $1537 ; this is also related to the pic + ld hl,$C3F6 ; position on tilemap the pic is displayed + call $1384 ; displays pic? + call MovePicLeft + ld hl,OakSpeechText2 + call PrintText ; Prints text box + call GBFadeOut2 + call ClearScreen + ld de,$6EDE + ld bc,$0400 ; affects the position of the player pic + call IntroPredef3B ; displays player pic? + call MovePicLeft + ld hl,IntroducePlayerText + call PrintText + call $695D ; brings up NewName/Red/etc menu + call GBFadeOut2 + call ClearScreen + ld de,$6049 + ld bc,$1300 + call IntroPredef3B ; displays rival pic + call FadeInIntroPic + ld hl,IntroduceRivalText + call PrintText + call $69A4 +Function61BC: + call GBFadeOut2 + call ClearScreen + ld de,$6EDE + ld bc,$0400 + call IntroPredef3B + call GBFadeIn2 + ld a,[$D72D] + and a + jr nz,.next\@ + ld hl,OakSpeechText3 + call PrintText +.next\@ ld a,[$FFB8] + push af + ld a,$9C + call $23B1 + pop af + ld [$FFB8],a + ld [$2000],a + ld c,4 + call DelayFrames + ld de,$4180 + ld hl,$8000 + ld bc,$050C + call $1848 + ld de,$6FE8 + ld bc,$0400 + call IntroPredef3B + ld c,4 + call DelayFrames + ld de,$7042 + ld bc,$0400 + call IntroPredef3B + call $28A6 + ld a,[$FFB8] + push af + ld a,2 + ld [$C0EF],a + ld [$C0F0],a + ld a,$A + ld [$CFC7],a + ld a,$FF + ld [$C0EE],a + call $23B1 ; stop music + pop af + ld [$FFB8],a + ld [$2000],a + ld c,$14 + call DelayFrames + ld hl,$C40A + ld b,7 + ld c,7 + call $18C4 + call $36A0 + ld a,1 + ld [$CFCB],a + ld c,$32 + call DelayFrames + call GBFadeOut2 + jp ClearScreen +OakSpeechText1: + TX_FAR _OakSpeechText1 + db "@" +OakSpeechText2: + TX_FAR _OakSpeechText2A + db $14 + TX_FAR _OakSpeechText2B + db "@" +IntroducePlayerText: + TX_FAR _IntroducePlayerText + db "@" +IntroduceRivalText: + TX_FAR _IntroduceRivalText + db "@" +OakSpeechText3: + TX_FAR _OakSpeechText3 + db "@" + +FadeInIntroPic: + ld hl,IntroFadePalettes + ld b,6 +.next\@ + ld a,[hli] + ld [rBGP],a + ld c,10 + call DelayFrames + dec b + jr nz,.next\@ + ret + +IntroFadePalettes: + db %01010100 + db %10101000 + db %11111100 + db %11111000 + db %11110100 + db %11100100 + +MovePicLeft: + ld a,119 + ld [$FF4B],a + call DelayFrame + + ld a,$E4 + ld [rBGP],a +.next\@ + call DelayFrame + ld a,[$FF4B] + sub 8 + cp $FF + ret z + ld [$FF4B],a + jr .next\@ + +Predef3B: ; 62A1 + call $3E94 +IntroPredef3B: ; 62A4 + push bc + ld a,b + call $36EB + ld hl,$A188 + ld de,$A000 + ld bc,$0310 + call CopyData + ld de,$9000 + call $16EA + pop bc + ld a,c + and a + ld hl,$C3C3 + jr nz,.next\@ + ld hl,$C3F6 +.next\@ + xor a + ld [$FFE1],a + ld a,1 + jp $3E6D + +Function62CE: ; 62CE, XXX called by 4B2 948 989 5BF9 5D15 + call $62FF + ld a,$19 + call $3E6D + ld hl,$D732 + bit 2,[hl] + res 2,[hl] + jr z,.next\@ + ld a,[$D71A] + jr .next2\@ +.next\@ + bit 1,[hl] + jr z,.next3\@ + call $64EA +.next3\@ + ld a,0 +.next2\@ + ld b,a + ld a,[$D72D] + and a + jr nz,.next4\@ + ld a,b +.next4\@ + ld hl,$D732 + bit 4,[hl] + ret nz + ld [$D365],a + ret + +INCBIN "baserom.gbc",$62FF,$6420-$62FF + +FirstMapSpec: + db $26 ; RedHouse1F +; Original Format: +; [Event Displacement][Y-block][X-block][Y-sub_block][X-sub_block] +; Macro Format: +; FLYWARP_DATA [Map Width][Y-pos][X-pos] + FLYWARP_DATA 4,6,3 + db $04 ;Tileset_id + +INCBIN "baserom.gbc",$6428,$6448-$6428 + +FlyWarpDataPtr: + db $00,0 + dw Map00FlyWarp + db $01,0 + dw Map01FlyWarp + db $02,0 + dw Map02FlyWarp + db $03,0 + dw Map03FlyWarp + db $04,0 + dw Map04FlyWarp + db $05,0 + dw Map05FlyWarp + db $06,0 + dw Map06FlyWarp + db $07,0 + dw Map07FlyWarp + db $08,0 + dw Map08FlyWarp + db $09,0 + dw Map09FlyWarp + db $0A,0 + dw Map0aFlyWarp + db $0F,0 + dw Map0fFlyWarp + db $15,0 + dw Map15FlyWarp + +; Original Format: +; [Event Displacement][Y-block][X-block][Y-sub_block][X-sub_block] +; Macro Format: +; FLYWARP_DATA [Map Width][Y-pos][X-pos] +Map00FlyWarp: + FLYWARP_DATA 10,6,5 +Map01FlyWarp: + FLYWARP_DATA 20,26,23 +Map02FlyWarp: + FLYWARP_DATA 20,26,13 +Map03FlyWarp: + FLYWARP_DATA 20,18,19 +Map04FlyWarp: + FLYWARP_DATA 10,6,3 +Map05FlyWarp: + FLYWARP_DATA 20,4,11 +Map06FlyWarp: + FLYWARP_DATA 25,10,41 +Map07FlyWarp: + FLYWARP_DATA 20,28,19 +Map08FlyWarp: + FLYWARP_DATA 10,12,11 +Map09FlyWarp: + FLYWARP_DATA 10,6,9 +Map0aFlyWarp: + FLYWARP_DATA 20,30,9 +Map0fFlyWarp: + FLYWARP_DATA 45,6,11 +Map15FlyWarp: + FLYWARP_DATA 10,20,11 + +INCBIN "baserom.gbc",$64CA,$778D - $64CA + +FieldMoveNames: ; 778D + db "CUT@" + db "FLY@" + db "@" + db "SURF@" + db "STRENGTH@" + db "FLASH@" + db "DIG@" + db "TELEPORT@" + db "SOFTBOILED@" + +PokemonMenuEntries: ; 77C2 + db "STATS",$4E + db "SWITCH",$4E + db "CANCEL@" + +INCBIN "baserom.gbc",$77D6,$7AF5 - $77D6 + +PlayersPCMenuEntries: ; 7AF5 + db "WITHDRAW ITEM",$4E + db "DEPOSIT ITEM",$4E + db "TOSS ITEM",$4E + db "LOG OFF@" + +INCBIN "baserom.gbc",$7B22,$7C49 - $7B22 + +SECTION "bank2",DATA,BANK[$2] + +INCBIN "baserom.gbc",$8000,$4000 + +SECTION "bank3",DATA,BANK[$3] + +INCBIN "baserom.gbc",$C000,$C23D - $C000 + +; see also MapHeaderPointers +MapHeaderBanks: ; 423D + db BANK(PalletTown_h) + db BANK(ViridianCity_h) ; VIRIDIAN_CITY + db BANK(PewterCity_h) ; PEWTER_CITY + db BANK(CeruleanCity_h) ; CERULEAN_CITY + db BANK(LavenderTown_h) ; LAVENDER_TOWN + db BANK(VermilionCity_h) ; VERMILION_CITY + db BANK(CeladonCity_h) ; CELADON_CITY + db BANK(FuchsiaCity_h) ; FUCHSIA_CITY + db BANK(CinnabarIsland_h) ; CINNABAR_ISLAND + db BANK(IndigoPlateau_h) ; INDIGO_PLATEAU + db BANK(SaffronCity_h) ; SAFFRON_CITY + db $01 ; unused + db BANK(Route1_h) ; ROUTE_1 + db $15 ; ROUTE_2 + db BANK(Route3_h) ; ROUTE_3 + db BANK(Route4_h) ; ROUTE_4 + db BANK(Route5_h) ; ROUTE_5 + db BANK(Route6_h) ; ROUTE_6 + db BANK(Route7_h) ; ROUTE_7 + db BANK(Route8_h) ; ROUTE_8 + db BANK(Route9_h) ; ROUTE_9 + db BANK(Route10_h) ; ROUTE_10 + db BANK(Route11_h) ; ROUTE_11 + db BANK(Route12_h) ; ROUTE_12 + db BANK(Route13_h) ; ROUTE_13 + db BANK(Route14_h) ; ROUTE_14 + db BANK(Route15_h) ; ROUTE_15 + db BANK(Route16_h) ; ROUTE_16 + db BANK(Route17_h) ; ROUTE_17 + db BANK(Route18_h) ; ROUTE_18 + db BANK(Route19_h) ; ROUTE_19 + db BANK(Route20_h) ; ROUTE_20 + db BANK(Route21_h) ; ROUTE_21 + db BANK(Route22_h) ; ROUTE_22 + db BANK(Route23_h) ; ROUTE_23 + db BANK(Route24_h) ; ROUTE_24 + db BANK(Route25_h) ; ROUTE_25 + db BANK(RedsHouse1F_h) + db BANK(RedsHouse2F_h) + db BANK(BluesHouse_h) + db BANK(OaksLab_h) + db BANK(ViridianPokecenter_h) + db BANK(ViridianMart_h) + db BANK(School_h) + db BANK(ViridianHouse_h) + db BANK(ViridianGym_h) + db BANK(DiglettsCaveRoute2_h) + db BANK(ViridianForestexit_h) + db BANK(Route2House_h) + db BANK(Route2Gate_h) + db BANK(ViridianForestEntrance_h) + db BANK(ViridianForest_h) + db BANK(MuseumF1_h) + db BANK(MuseumF2_h) + db BANK(PewterGym_h) + db BANK(PewterHouse1_h) + db BANK(PewterMart_h) + db BANK(PewterHouse2_h) + db BANK(PewterPokecenter_h) + db BANK(MtMoon1_h) + db BANK(MtMoon2_h) + db BANK(MtMoon3_h) + db BANK(CeruleanHouseTrashed_h) + db BANK(CeruleanHouse2_h) + db BANK(CeruleanPokecenter_h) + db BANK(CeruleanGym_h) + db BANK(BikeShop_h) + db BANK(CeruleanMart_h) + db BANK(MtMoonPokecenter_h) + db BANK(CeruleanHouseTrashed_h) + db BANK(Route5Gate_h) + db BANK(UndergroundTunnelEntranceRoute5_h) + db BANK(DayCareM_h) + db BANK(Route6Gate_h) + db BANK(UndergroundTunnelEntranceRoute6_h) + db $17 + db BANK(Route7Gate_h) + db BANK(UndergroundPathEntranceRoute7_h) + db $17 + db BANK(Route8Gate_h) + db BANK(UndergroundPathEntranceRoute8_h) + db BANK(RockTunnelPokecenter_h) + db BANK(RockTunnel1_h) + db BANK(PowerPlant_h) + db BANK(Route11Gate_h) + db BANK(DiglettsCaveEntranceRoute11_h) + db BANK(Route11GateUpstairs_h) + db BANK(Route12Gate_h) + db BANK(BillsHouse_h) + db BANK(VermilionPokecenter_h) + db BANK(FanClub_h) + db BANK(VermilionMart_h) + db BANK(VermilionGym_h) + db BANK(VermilionHouse1_h) + db BANK(VermilionDock_h) + db BANK(SSAnne1_h) + db BANK(SSAnne2_h) + db BANK(SSAnne3_h) + db BANK(SSAnne4_h) + db BANK(SSAnne5_h) + db BANK(SSAnne6_h) + db BANK(SSAnne7_h) + db BANK(SSAnne8_h) + db BANK(SSAnne9_h) + db BANK(SSAnne10_h) + db $1D + db $1D + db $1D + db BANK(VictoryRoad1_h) + db $1D + db $1D + db $1D + db $1D + db BANK(Lance_h) + db $1D + db $1D + db $1D + db $1D + db $16 + db BANK(UndergroundPathNS_h) + db $1D + db BANK(UndergroundPathWE_h) + db BANK(CeladonMart1_h) + db BANK(CeladonMart2_h) + db BANK(CeladonMart3_h) + db BANK(CeladonMart4_h) + db BANK(CeladonMartRoof_h) + db BANK(CeladonMartElevator_h) + db BANK(CeladonMansion1_h) + db BANK(CeladonMansion2_h) + db BANK(CeladonMansion3_h) + db BANK(CeladonMansion4_h) + db BANK(CeladonMansion5_h) + db BANK(CeladonPokecenter_h) + db BANK(CeladonGym_h) + db BANK(CeladonGameCorner_h) + db BANK(CeladonMart5_h) + db BANK(CeladonPrizeRoom_h) + db BANK(CeladonDiner_h) + db BANK(CeladonHouse_h) + db BANK(CeladonHotel_h) + db BANK(LavenderPokecenter_h) + db BANK(PokemonTower1_h) + db BANK(PokemonTower2_h) + db BANK(PokemonTower3_h) + db BANK(PokemonTower4_h) + db BANK(PokemonTower5_h) + db BANK(PokemonTower6_h) + db BANK(PokemonTower7_h) + db BANK(LavenderHouse1_h) + db BANK(LavenderMart_h) + db BANK(LavenderHouse2_h) + db BANK(FuchsiaMart_h) + db BANK(FuchsiaHouse1_h) + db BANK(FuchsiaPokecenter_h) + db BANK(FuchsiaHouse2_h) + db BANK(SafariZoneEntrance_h) + db BANK(FuchsiaGym_h) + db BANK(FuchsiaMeetingRoom_h) + db BANK(SeafoamIslands2_h) + db BANK(SeafoamIslands3_h) + db BANK(SeafoamIslands4_h) + db BANK(SeafoamIslands5_h) + db BANK(VermilionHouse2_h) + db BANK(FuchsiaHouse3_h) + db BANK(Mansion1_h) + db BANK(CinnabarGym_h) + db BANK(Lab1_h) + db BANK(Lab2_h) + db BANK(Lab3_h) + db BANK(Lab4_h) + db BANK(CinnabarPokecenter_h) + db BANK(CinnabarMart_h) + db $1D + db BANK(IndigoPlateauLobby_h) + db BANK(CopycatsHouseF1_h) + db BANK(CopycatsHouseF2_h) + db BANK(FightingDojo_h) + db BANK(SaffronGym_h) + db BANK(SaffronHouse1_h) + db BANK(SaffronMart_h) + db BANK(SilphCo1_h) + db BANK(SaffronPokecenter_h) + db BANK(SaffronHouse2_h) + db BANK(Route15Gate_h) + db $12 + db BANK(Route16GateMap_h) + db BANK(Route16GateUpstairs_h) + db BANK(Route16House_h) + db BANK(Route12House_h) + db BANK(Route18Gate_h) + db BANK(Route18GateHeader_h) + db BANK(SeafoamIslands1_h) + db BANK(Route22Gate_h) + db BANK(VictoryRoad2_h) + db BANK(Route12GateUpstairs_h) + db BANK(VermilionHouse3_h) + db BANK(DiglettsCave_h) + db BANK(VictoryRoad3_h) + db BANK(RocketHideout1_h) + db BANK(RocketHideout2_h) + db BANK(RocketHideout3_h) + db BANK(RocketHideout4_h) + db BANK(RocketHideoutElevator_h) + db $01 + db $01 + db $01 + db BANK(SilphCo2_h) + db BANK(SilphCo3_h) + db BANK(SilphCo4_h) + db BANK(SilphCo5_h) + db BANK(SilphCo6_h) + db BANK(SilphCo7_h) + db BANK(SilphCo8_h) + db BANK(Mansion2_h) + db BANK(Mansion3_h) + db BANK(Mansion4_h) + db BANK(SafariZoneEast_h) + db BANK(SafariZoneNorth_h) + db BANK(SafariZoneWest_h) + db BANK(SafariZoneCenter_h) + db BANK(SafariZoneRestHouse1_h) + db BANK(SafariZoneSecretHouse_h) + db BANK(SafariZoneRestHouse2_h) + db BANK(SafariZoneRestHouse3_h) + db BANK(SafariZoneRestHouse4_h) + db BANK(UnknownDungeon2_h) + db BANK(UnknownDungeon3_h) + db BANK(UnknownDungeon1_h) + db BANK(NameRater_h) + db BANK(CeruleanHouse3_h) + db $01 + db BANK(RockTunnel2_h) + db BANK(SilphCo9_h) + db BANK(SilphCo10_h) + db BANK(SilphCo11_h) + db BANK(SilphCoElevator_h) + db $11 + db $11 + db BANK(BattleCenterM_h) + db BANK(TradeCenterM_h) + db $11 + db $11 + db $11 + db $11 + db BANK(Lorelei_h) + db BANK(Bruno_h) + db BANK(Agatha_h) + +INCBIN "baserom.gbc",$C335,$C766-$C335 + ld hl,TilesetsHeadPtr +INCBIN "baserom.gbc",$C769,$C7BE-$C769 + +TilesetsHeadPtr: + TSETHEAD Tset00_Block,Tset00_GFX,Tset00_Coll,$FF,$FF,$FF,$52,2 + TSETHEAD Tset01_Block,Tset01_GFX,Tset01_Coll,$FF,$FF,$FF,$FF,0 + TSETHEAD Tset02_Block,Tset02_GFX,Tset02_Coll,$18,$19,$1E,$FF,0 + TSETHEAD Tset03_Block,Tset03_GFX,Tset03_Coll,$FF,$FF,$FF,$20,1 + TSETHEAD Tset01_Block,Tset01_GFX,Tset01_Coll,$FF,$FF,$FF,$FF,0 + TSETHEAD Tset05_Block,Tset05_GFX,Tset05_Coll,$3A,$FF,$FF,$FF,2 + TSETHEAD Tset02_Block,Tset02_GFX,Tset02_Coll,$18,$19,$1E,$FF,0 + TSETHEAD Tset05_Block,Tset05_GFX,Tset05_Coll,$3A,$FF,$FF,$FF,2 + TSETHEAD Tset08_Block,Tset08_GFX,Tset08_Coll,$FF,$FF,$FF,$FF,0 + TSETHEAD Tset09_Block,Tset09_GFX,Tset09_Coll,$17,$32,$FF,$FF,0 + TSETHEAD Tset09_Block,Tset09_GFX,Tset09_Coll,$17,$32,$FF,$FF,0 + TSETHEAD Tset0B_Block,Tset0B_GFX,Tset0B_Coll,$FF,$FF,$FF,$FF,0 + TSETHEAD Tset09_Block,Tset09_GFX,Tset09_Coll,$17,$32,$FF,$FF,0 + TSETHEAD Tset0D_Block,Tset0D_GFX,Tset0D_Coll,$FF,$FF,$FF,$FF,1 + TSETHEAD Tset0E_Block,Tset0E_GFX,Tset0E_Coll,$FF,$FF,$FF,$FF,1 + TSETHEAD Tset0F_Block,Tset0F_GFX,Tset0F_Coll,$12,$FF,$FF,$FF,0 + TSETHEAD Tset10_Block,Tset10_GFX,Tset10_Coll,$FF,$FF,$FF,$FF,0 + TSETHEAD Tset11_Block,Tset11_GFX,Tset11_Coll,$FF,$FF,$FF,$FF,1 + TSETHEAD Tset12_Block,Tset12_GFX,Tset12_Coll,$15,$36,$FF,$FF,0 + TSETHEAD Tset13_Block,Tset13_GFX,Tset13_Coll,$FF,$FF,$FF,$FF,0 + TSETHEAD Tset14_Block,Tset14_GFX,Tset14_Coll,$FF,$FF,$FF,$FF,0 + TSETHEAD Tset15_Block,Tset15_GFX,Tset15_Coll,$07,$17,$FF,$FF,0 + TSETHEAD Tset16_Block,Tset16_GFX,Tset16_Coll,$12,$FF,$FF,$FF,1 + TSETHEAD Tset17_Block,Tset17_GFX,Tset17_Coll,$FF,$FF,$FF,$45,1 + +INCBIN "baserom.gbc",$C8DE,$C8F5-$C8DE + +; data for default hidden/shown +; objects for each map ($00-$F8) + +; Table of 2-Byte pointers, one pointer per map, +; goes up to Map_F7, ends with $FFFF. +MapHSPointers: ; 48F5 + dw MapHS00 + dw MapHS01 + dw MapHS02 + dw MapHS03 + dw MapHSXX + dw MapHSXX + dw MapHSXX + dw MapHSXX + dw MapHSXX + dw MapHSXX + dw MapHS0A + dw MapHSXX + dw MapHSXX + dw MapHS0D + dw MapHSXX + dw MapHS0F + dw MapHSXX + dw MapHSXX + dw MapHSXX + dw MapHSXX + dw MapHS14 + dw MapHSXX + dw MapHSXX + dw MapHS17 + dw MapHSXX + dw MapHSXX + dw MapHS1A + dw MapHS1B + dw MapHSXX + dw MapHSXX + dw MapHSXX + dw MapHSXX + dw MapHSXX + dw MapHS21 + dw MapHSXX + dw MapHS23 + dw MapHS24 + dw MapHSXX + dw MapHSXX + dw MapHS27 + dw MapHS28 + dw MapHSXX + dw MapHSXX + dw MapHSXX + dw MapHSXX + dw MapHS2D + dw MapHSXX + dw MapHSXX + dw MapHSXX + dw MapHSXX + dw MapHSXX + dw MapHS33 + dw MapHS34 + dw MapHSXX + dw MapHSXX + dw MapHSXX + dw MapHSXX + dw MapHSXX + dw MapHSXX + dw MapHS3B + dw MapHSXX + dw MapHS3D + dw MapHSXX + dw MapHSXX + dw MapHSXX + dw MapHSXX + dw MapHSXX + dw MapHSXX + dw MapHSXX + dw MapHSXX + dw MapHSXX + dw MapHSXX + dw MapHSXX + dw MapHSXX + dw MapHSXX + dw MapHSXX + dw MapHSXX + dw MapHSXX + dw MapHSXX + dw MapHSXX + dw MapHSXX + dw MapHSXX + dw MapHSXX + dw MapHS53 + dw MapHSXX + dw MapHSXX + dw MapHSXX + dw MapHSXX + dw MapHS58 + dw MapHSXX + dw MapHSXX + dw MapHSXX + dw MapHSXX + dw MapHSXX + dw MapHSXX + dw MapHSXX + dw MapHS60 + dw MapHSXX + dw MapHSXX + dw MapHSXX + dw MapHSXX + dw MapHSXX + dw MapHS66 + dw MapHS67 + dw MapHS68 + dw MapHSXX + dw MapHSXX + dw MapHSXX + dw MapHS6C + dw MapHSXX + dw MapHSXX + dw MapHSXX + dw MapHSXX + dw MapHSXX + dw MapHSXX + dw MapHSXX + dw MapHSXX + dw MapHSXX + dw MapHSXX + dw MapHSXX + dw MapHS78 + dw MapHSXX + dw MapHSXX + dw MapHSXX + dw MapHSXX + dw MapHSXX + dw MapHSXX + dw MapHSXX + dw MapHSXX + dw MapHSXX + dw MapHSXX + dw MapHSXX + dw MapHS84 + dw MapHSXX + dw MapHSXX + dw MapHS87 + dw MapHSXX + dw MapHSXX + dw MapHSXX + dw MapHSXX + dw MapHSXX + dw MapHSXX + dw MapHSXX + dw MapHS8F + dw MapHS90 + dw MapHS91 + dw MapHS92 + dw MapHS93 + dw MapHS94 + dw MapHS95 + dw MapHSXX + dw MapHSXX + dw MapHSXX + dw MapHSXX + dw MapHSXX + dw MapHS9B + dw MapHSXX + dw MapHSXX + dw MapHSXX + dw MapHS9F + dw MapHSA0 + dw MapHSA1 + dw MapHSA2 + dw MapHSXX + dw MapHSXX + dw MapHSA5 + dw MapHSXX + dw MapHSXX + dw MapHSXX + dw MapHSXX + dw MapHSXX + dw MapHSXX + dw MapHSXX + dw MapHSXX + dw MapHSXX + dw MapHSXX + dw MapHSXX + dw MapHSB1 + dw MapHSXX + dw MapHSXX + dw MapHSXX + dw MapHSB5 + dw MapHSXX + dw MapHSXX + dw MapHSXX + dw MapHSXX + dw MapHSXX + dw MapHSXX + dw MapHSXX + dw MapHSXX + dw MapHSXX + dw MapHSXX + dw MapHSC0 + dw MapHSXX + dw MapHSC2 + dw MapHSXX + dw MapHSXX + dw MapHSXX + dw MapHSC6 + dw MapHSC7 + dw MapHSC8 + dw MapHSC9 + dw MapHSCA + dw MapHSXX + dw MapHSXX + dw MapHSXX + dw MapHSXX + dw MapHSCF + dw MapHSD0 + dw MapHSD1 + dw MapHSD2 + dw MapHSD3 + dw MapHSD4 + dw MapHSD5 + dw MapHSD6 + dw MapHSD7 + dw MapHSD8 + dw MapHSD9 + dw MapHSDA + dw MapHSDB + dw MapHSDC + dw MapHSXX + dw MapHSXX + dw MapHSXX + dw MapHSXX + dw MapHSXX + dw MapHSE2 + dw MapHSE3 + dw MapHSE4 + dw MapHSXX + dw MapHSXX + dw MapHSXX + dw MapHSXX + dw MapHSE9 + dw MapHSEA + dw MapHSEB + dw MapHSXX + dw MapHSXX + dw MapHSXX + dw MapHSXX + dw MapHSXX + dw MapHSXX + dw MapHSXX + dw MapHSXX + dw MapHSF4 + dw MapHSXX + dw MapHSXX + dw MapHSXX + dw $FFFF + +; Structure: +; 3 bytes per object +; [Map_ID][Object_ID][H/S] +; +; Program stops reading when either: +; a) Map_ID = $FF +; b) Map_ID ≠ currentMapID +; +; This Data is loaded into RAM at $D5CE-$D5F?. + +; These constants come from the bytes for Predef functions: +Hide equ $11 +Show equ $15 + +MapHSXX: + db $FF,$FF,$FF +MapHS00: + db $00,$01,Hide +MapHS01: + db $01,$05,Show + db $01,$07,Hide +MapHS02: + db $02,$03,Show + db $02,$05,Show +MapHS03: + db $03,$01,Hide + db $03,$02,Show + db $03,$06,Hide + db $03,$0A,Show + db $03,$0B,Show +MapHS0A: + db $0A,$01,Show + db $0A,$02,Show + db $0A,$03,Show + db $0A,$04,Show + db $0A,$05,Show + db $0A,$06,Show + db $0A,$07,Show + db $0A,$08,Hide + db $0A,$09,Hide + db $0A,$0A,Hide + db $0A,$0B,Hide + db $0A,$0C,Hide + db $0A,$0D,Hide + db $0A,$0E,Show + db $0A,$0F,Hide +MapHS0D: + db $0D,$01,Show + db $0D,$02,Show +MapHS0F: + db $0F,$03,Show +MapHS14: + db $14,$0A,Show +MapHS17: + db $17,$01,Show + db $17,$09,Show + db $17,$0A,Show +MapHS1A: + db $1A,$0B,Show +MapHS1B: + db $1B,$07,Show +MapHS21: + db $21,$01,Hide + db $21,$02,Hide +MapHS23: + db $23,$01,Show + db $23,$08,Show +MapHS24: + db $24,$0A,Show +MapHS27: + db $27,$01,Show + db $27,$02,Hide + db $27,$03,Show +MapHS28: + db $28,$01,Show + db $28,$02,Show + db $28,$03,Show + db $28,$04,Show + db $28,$05,Hide + db $28,$06,Show + db $28,$07,Show + db $28,$08,Hide +MapHS2D: + db $2D,$01,Show + db $2D,$0B,Show +MapHS34: + db $34,$05,Show +MapHSE4: + db $E4,$01,Show + db $E4,$02,Show + db $E4,$03,Show +MapHS8F: + db $8F,$01,Show +MapHS90: + db $90,$04,Show +MapHS91: + db $91,$04,Show + db $91,$05,Show + db $91,$06,Show +MapHS92: + db $92,$06,Show +MapHS93: + db $93,$04,Show + db $93,$05,Show +MapHS94: + db $94,$01,Show + db $94,$02,Show + db $94,$03,Show + db $94,$04,Show +MapHS95: + db $95,$05,Hide +MapHS84: + db $84,$02,Show +MapHS87: + db $87,$0B,Show +MapHS9B: + db $9B,$02,Show +MapHSA5: + db $A5,$02,Show + db $A5,$03,Show +MapHSB1: + db $B1,$06,Show + db $B1,$07,Show +MapHSB5: + db $B5,$01,Hide +MapHS53: + db $53,$01,Show + db $53,$02,Show + db $53,$03,Show + db $53,$04,Show + db $53,$05,Show + db $53,$06,Show + db $53,$07,Show + db $53,$08,Show + db $53,$09,Show + db $53,$0A,Show + db $53,$0B,Show + db $53,$0C,Show + db $53,$0D,Show + db $53,$0E,Show +MapHSC2: + db $C2,$06,Show + db $C2,$07,Show + db $C2,$08,Show + db $C2,$09,Show + db $C2,$0A,Show + db $C2,$0D,Show +MapHS58: + db $58,$01,Show + db $58,$02,Hide + db $58,$03,Hide +MapHS33: + db $33,$05,Show + db $33,$06,Show + db $33,$07,Show +MapHS3B: + db $3B,$08,Show + db $3B,$09,Show + db $3B,$0A,Show + db $3B,$0B,Show + db $3B,$0C,Show + db $3B,$0D,Show +MapHS3D: + db $3D,$06,Show + db $3D,$07,Show + db $3D,$08,Show + db $3D,$09,Show +MapHS60: + db $60,$02,Hide +MapHS66: + db $66,$0A,Show +MapHS67: + db $67,$06,Show + db $67,$09,Show +MapHS68: + db $68,$09,Show + db $68,$0A,Show + db $68,$0B,Show +MapHSC6: + db $C6,$05,Show + db $C6,$06,Show + db $C6,$0A,Show +MapHSC7: + db $C7,$06,Show + db $C7,$07,Show +MapHSC8: + db $C8,$02,Show + db $C8,$03,Show + db $C8,$04,Show + db $C8,$05,Show +MapHSC9: + db $C9,$03,Show + db $C9,$04,Show +MapHSCA: + db $CA,$01,Show + db $CA,$05,Show + db $CA,$06,Show + db $CA,$07,Show + db $CA,$08,Hide + db $CA,$09,Hide +MapHSCF: + db $CF,$01,Show + db $CF,$02,Show + db $CF,$03,Show + db $CF,$04,Show + db $CF,$05,Show +MapHSD0: + db $D0,$02,Show + db $D0,$03,Show + db $D0,$04,Show +MapHSD1: + db $D1,$02,Show + db $D1,$03,Show + db $D1,$04,Show + db $D1,$05,Show + db $D1,$06,Show + db $D1,$07,Show +MapHSD2: + db $D2,$02,Show + db $D2,$03,Show + db $D2,$04,Show + db $D2,$05,Show + db $D2,$06,Show + db $D2,$07,Show + db $D2,$08,Show +MapHSD3: + db $D3,$06,Show + db $D3,$07,Show + db $D3,$08,Show + db $D3,$09,Show + db $D3,$0A,Show +MapHSD4: + db $D4,$05,Show + db $D4,$06,Show + db $D4,$07,Show + db $D4,$08,Show + db $D4,$09,Show + db $D4,$0A,Show + db $D4,$0B,Show + db $D4,$0C,Show +MapHSD5: + db $D5,$02,Show + db $D5,$03,Show + db $D5,$04,Show +MapHSE9: + db $E9,$02,Show + db $E9,$03,Show + db $E9,$04,Show +MapHSEA: + db $EA,$01,Show + db $EA,$02,Show + db $EA,$03,Show + db $EA,$04,Show + db $EA,$05,Show + db $EA,$06,Show +MapHSEB: + db $EB,$03,Show + db $EB,$04,Show + db $EB,$05,Show +MapHSF4: + db $F4,$02,Show +MapHSD6: + db $D6,$02,Show +MapHSD7: + db $D7,$03,Show + db $D7,$04,Show +MapHSD8: + db $D8,$03,Show + db $D8,$04,Show + db $D8,$05,Show + db $D8,$06,Show + db $D8,$08,Show +MapHSD9: + db $D9,$01,Show + db $D9,$02,Show + db $D9,$03,Show + db $D9,$04,Show +MapHSDA: + db $DA,$01,Show + db $DA,$02,Show +MapHSDB: + db $DB,$01,Show + db $DB,$02,Show + db $DB,$03,Show + db $DB,$04,Show +MapHSDC: + db $DC,$01,Show +MapHSE2: + db $E2,$01,Show + db $E2,$02,Show + db $E2,$03,Show +MapHSE3: + db $E3,$01,Show + db $E3,$02,Show + db $E3,$03,Show +MapHS6C: + db $6C,$03,Show + db $6C,$04,Show +MapHS78: + db $78,$02,Hide +MapHSC0: + db $C0,$01,Show + db $C0,$02,Show +MapHS9F: + db $9F,$01,Hide + db $9F,$02,Hide +MapHSA0: + db $A0,$01,Hide + db $A0,$02,Hide +MapHSA1: + db $A1,$02,Show + db $A1,$03,Show + db $A1,$05,Hide + db $A1,$06,Hide +MapHSA2: + db $A2,$01,Hide + db $A2,$02,Hide + db $A2,$03,Show + + db $FF + +INCBIN "baserom.gbc",$CD97,$CEB8-$CD97 + +; wild pokemon data: from 4EB8 to 55C7 + +LoadWildData: ; 4EB8 + ld hl,WildDataPointers + ld a,[W_CURMAP] + + ; get wild data for current map + ld c,a + ld b,0 + add hl,bc + add hl,bc + ld a,[hli] + ld h,[hl] + ld l,a ; hl now points to wild data for current map + ld a,[hli] + ld [W_GRASSRATE],a + and a + jr z,.NoGrassData\@ ; if no grass data, skip to surfing data + push hl + ld de,W_GRASSMONS ; otherwise, load grass data + ld bc,$0014 + call CopyData + pop hl + ld bc,$0014 + add hl,bc +.NoGrassData\@ + ld a,[hli] + ld [W_WATERRATE],a + and a + ret z ; if no water data, we're done + ld de,W_WATERMONS ; otherwise, load surfing data + ld bc,$0014 + jp CopyData + +WildDataPointers: ; 4EEB + dw NoMons ; PALLET_TOWN + dw NoMons ; VIRIDIAN_CITY + dw NoMons ; PEWTER_CITY + dw NoMons ; CERULEAN_CITY + dw NoMons ; LAVENDER_TOWN + dw NoMons ; VERMILION_CITY + dw NoMons ; CELADON_CITY + dw NoMons ; FUCHSIA_CITY + dw NoMons ; CINNABAR_ISLAND + dw NoMons ; INDIGO_PLATEAU + dw NoMons ; SAFFRON_CITY + dw NoMons ; unused + dw Route1Mons ; ROUTE_1 + dw Route2Mons ; ROUTE_2 + dw Route3Mons ; ROUTE_3 + dw Route4Mons ; ROUTE_4 + dw Route5Mons ; ROUTE_5 + dw Route6Mons ; ROUTE_6 + dw Route7Mons ; ROUTE_7 + dw Route8Mons ; ROUTE_8 + dw Route9Mons ; ROUTE_9 + dw Route10Mons ; ROUTE_10 + dw Route11Mons ; ROUTE_11 + dw Route12Mons ; ROUTE_12 + dw Route13Mons ; ROUTE_13 + dw Route14Mons ; ROUTE_14 + dw Route15Mons ; ROUTE_15 + dw Route16Mons ; ROUTE_16 + dw Route17Mons ; ROUTE_17 + dw Route18Mons ; ROUTE_18 + dw WaterMons ; ROUTE_19 + dw WaterMons ; ROUTE_20 + dw Route21Mons ; ROUTE_21 + dw Route22Mons ; ROUTE_22 + dw Route23Mons ; ROUTE_23 + dw Route24Mons ; ROUTE_24 + dw Route25Mons ; ROUTE_25 + dw NoMons ; REDS_HOUSE_1F + dw NoMons + dw NoMons + dw NoMons + dw NoMons + dw NoMons + dw NoMons + dw NoMons + dw NoMons + dw NoMons + dw NoMons + dw NoMons + dw NoMons + dw NoMons + dw ForestMons ; ViridianForest + dw NoMons + dw NoMons + dw NoMons + dw NoMons + dw NoMons + dw NoMons + dw NoMons + dw MoonMons1 + dw MoonMonsB1 + dw MoonMonsB2 + dw NoMons + dw NoMons + dw NoMons + dw NoMons + dw NoMons + dw NoMons + dw NoMons + dw NoMons + dw NoMons + dw NoMons + dw NoMons + dw NoMons + dw NoMons + dw NoMons + dw NoMons + dw NoMons + dw NoMons + dw NoMons + dw NoMons + dw NoMons + dw TunnelMonsB1 + dw PowerPlantMons + dw NoMons + dw NoMons + dw NoMons + dw NoMons + dw NoMons + dw NoMons + dw NoMons + dw NoMons + dw NoMons + dw NoMons + dw NoMons + dw NoMons + dw NoMons + dw NoMons + dw NoMons + dw NoMons + dw NoMons + dw NoMons + dw NoMons + dw NoMons + dw NoMons + dw NoMons + dw NoMons + dw NoMons + dw PlateauMons1 + dw NoMons + dw NoMons + dw NoMons + dw NoMons + dw NoMons + dw NoMons + dw NoMons + dw NoMons + dw NoMons + dw NoMons + dw NoMons + dw NoMons + dw NoMons + dw NoMons + dw NoMons + dw NoMons + dw NoMons + dw NoMons + dw NoMons + dw NoMons + dw NoMons + dw NoMons + dw NoMons + dw NoMons + dw NoMons + dw NoMons + dw NoMons + dw NoMons + dw NoMons + dw NoMons + dw NoMons + dw NoMons + dw NoMons + dw TowerMons1 + dw TowerMons2 + dw TowerMons3 + dw TowerMons4 + dw TowerMons5 + dw TowerMons6 + dw TowerMons7 + dw NoMons + dw NoMons + dw NoMons + dw NoMons + dw NoMons + dw NoMons + dw NoMons + dw NoMons + dw NoMons + dw NoMons + dw IslandMonsB1 + dw IslandMonsB2 + dw IslandMonsB3 + dw IslandMonsB4 + dw NoMons + dw NoMons + dw MansionMons1 + dw NoMons + dw NoMons + dw NoMons + dw NoMons + dw NoMons + dw NoMons + dw NoMons + dw NoMons + dw NoMons + dw NoMons + dw NoMons + dw NoMons + dw NoMons + dw NoMons + dw NoMons + dw NoMons + dw NoMons + dw NoMons + dw NoMons + dw NoMons + dw NoMons + dw NoMons + dw NoMons + dw NoMons + dw NoMons + dw NoMons + dw IslandMons1 + dw NoMons + dw PlateauMons2 + dw NoMons + dw NoMons + dw CaveMons + dw PlateauMons3 + dw NoMons + dw NoMons + dw NoMons + dw NoMons + dw NoMons + dw NoMons + dw NoMons + dw NoMons + dw NoMons + dw NoMons + dw NoMons + dw NoMons + dw NoMons + dw NoMons + dw NoMons + dw MansionMons2 + dw MansionMons3 + dw MansionMonsB1 + dw ZoneMons1 + dw ZoneMons2 + dw ZoneMons3 + dw ZoneMonsCenter + dw NoMons + dw NoMons + dw NoMons + dw NoMons + dw NoMons + dw DungeonMons2 + dw DungeonMonsB1 + dw DungeonMons1 + dw NoMons + dw NoMons + dw NoMons + dw TunnelMonsB2 + dw NoMons + dw NoMons + dw NoMons + dw NoMons + dw NoMons + dw NoMons + dw NoMons + dw NoMons + dw NoMons + dw NoMons + dw NoMons + dw NoMons + dw NoMons + dw NoMons + dw NoMons + dw $FFFF + +; wild pokemon data is divided into two parts. +; first part: pokemon found in grass +; second part: pokemon found while surfing +; each part goes as follows: + ; if first byte == 00, then + ; no wild pokemon on this map + ; if first byte != 00, then + ; first byte is encounter rate + ; followed by 20 bytes: + ; level, species (ten times) + +IF _RED +NoMons: + db $00 + + db $00 + +Route1Mons: + db $19 + db 3,PIDGEY + db 3,RATTATA + db 3,RATTATA + db 2,RATTATA + db 2,PIDGEY + db 3,PIDGEY + db 3,PIDGEY + db 4,RATTATA + db 4,PIDGEY + db 5,PIDGEY + + db $00 + +Route2Mons: + db $19 + db 3,RATTATA + db 3,PIDGEY + db 4,PIDGEY + db 4,RATTATA + db 5,PIDGEY + db 3,WEEDLE + db 2,RATTATA + db 5,RATTATA + db 4,WEEDLE + db 5,WEEDLE + + db $00 + +Route22Mons: + db $19 + db 3,RATTATA + db 3,NIDORAN_M + db 4,RATTATA + db 4,NIDORAN_M + db 2,RATTATA + db 2,NIDORAN_M + db 3,SPEAROW + db 5,SPEAROW + db 3,NIDORAN_F + db 4,NIDORAN_F + + db $00 + +ForestMons: + db $08 + db 4,WEEDLE + db 5,KAKUNA + db 3,WEEDLE + db 5,WEEDLE + db 4,KAKUNA + db 6,KAKUNA + db 4,METAPOD + db 3,CATERPIE + db 3,PIKACHU + db 5,PIKACHU + + db $00 + +Route3Mons: + db $14 + db 6,PIDGEY + db 5,SPEAROW + db 7,PIDGEY + db 6,SPEAROW + db 7,SPEAROW + db 8,PIDGEY + db 8,SPEAROW + db 3,JIGGLYPUFF + db 5,JIGGLYPUFF + db 7,JIGGLYPUFF + + db $00 + +MoonMons1: + db $0A + db 8,ZUBAT + db 7,ZUBAT + db 9,ZUBAT + db 8,GEODUDE + db 6,ZUBAT + db 10,ZUBAT + db 10,GEODUDE + db 8,PARAS + db 11,ZUBAT + db 8,CLEFAIRY + + db $00 + +MoonMonsB1: + db $0A + db 8,ZUBAT + db 7,ZUBAT + db 7,GEODUDE + db 8,GEODUDE + db 9,ZUBAT + db 10,PARAS + db 10,ZUBAT + db 11,ZUBAT + db 9,CLEFAIRY + db 9,GEODUDE + + db $00 + +MoonMonsB2: + db $0A + db 9,ZUBAT + db 9,GEODUDE + db 10,ZUBAT + db 10,GEODUDE + db 11,ZUBAT + db 10,PARAS + db 12,PARAS + db 10,CLEFAIRY + db 12,ZUBAT + db 12,CLEFAIRY + + db $00 + +Route4Mons: + db $14 + db 10,RATTATA + db 10,SPEAROW + db 8,RATTATA + db 6,EKANS + db 8,SPEAROW + db 10,EKANS + db 12,RATTATA + db 12,SPEAROW + db 8,EKANS + db 12,EKANS + + db $00 + +Route24Mons: + db $19 + db 7,WEEDLE + db 8,KAKUNA + db 12,PIDGEY + db 12,ODDISH + db 13,ODDISH + db 10,ABRA + db 14,ODDISH + db 13,PIDGEY + db 8,ABRA + db 12,ABRA + + db $00 + +Route25Mons: + db $0F + db 8,WEEDLE + db 9,KAKUNA + db 13,PIDGEY + db 12,ODDISH + db 13,ODDISH + db 12,ABRA + db 14,ODDISH + db 10,ABRA + db 7,METAPOD + db 8,CATERPIE + + db $00 + +Route9Mons: + db $0F + db 16,RATTATA + db 16,SPEAROW + db 14,RATTATA + db 11,EKANS + db 13,SPEAROW + db 15,EKANS + db 17,RATTATA + db 17,SPEAROW + db 13,EKANS + db 17,EKANS + + db $00 + +Route5Mons: + db $0F + db 13,ODDISH + db 13,PIDGEY + db 15,PIDGEY + db 10,MANKEY + db 12,MANKEY + db 15,ODDISH + db 16,ODDISH + db 16,PIDGEY + db 14,MANKEY + db 16,MANKEY + + db $00 + +Route6Mons: + db $0F + db 13,ODDISH + db 13,PIDGEY + db 15,PIDGEY + db 10,MANKEY + db 12,MANKEY + db 15,ODDISH + db 16,ODDISH + db 16,PIDGEY + db 14,MANKEY + db 16,MANKEY + + db $00 + +Route11Mons: + db $0F + db 14,EKANS + db 15,SPEAROW + db 12,EKANS + db 9,DROWZEE + db 13,SPEAROW + db 13,DROWZEE + db 15,EKANS + db 17,SPEAROW + db 11,DROWZEE + db 15,DROWZEE + + db $00 + +TunnelMonsB1: + db $0F + db 16,ZUBAT + db 17,ZUBAT + db 17,GEODUDE + db 15,MACHOP + db 16,GEODUDE + db 18,ZUBAT + db 15,ZUBAT + db 17,MACHOP + db 13,ONIX + db 15,ONIX + + db $00 + +TunnelMonsB2: + db $0F + db 16,ZUBAT + db 17,ZUBAT + db 17,GEODUDE + db 15,MACHOP + db 16,GEODUDE + db 18,ZUBAT + db 17,MACHOP + db 17,ONIX + db 13,ONIX + db 18,GEODUDE + + db $00 + +Route10Mons: + db $0F + db 16,VOLTORB + db 16,SPEAROW + db 14,VOLTORB + db 11,EKANS + db 13,SPEAROW + db 15,EKANS + db 17,VOLTORB + db 17,SPEAROW + db 13,EKANS + db 17,EKANS + + db $00 + +Route12Mons: + db $0F + db 24,ODDISH + db 25,PIDGEY + db 23,PIDGEY + db 24,VENONAT + db 22,ODDISH + db 26,VENONAT + db 26,ODDISH + db 27,PIDGEY + db 28,GLOOM + db 30,GLOOM + + db $00 + +Route8Mons: + db $0F + db 18,PIDGEY + db 18,MANKEY + db 17,EKANS + db 16,GROWLITHE + db 20,PIDGEY + db 20,MANKEY + db 19,EKANS + db 17,GROWLITHE + db 15,GROWLITHE + db 18,GROWLITHE + + db $00 + +Route7Mons: + db $0F + db 19,PIDGEY + db 19,ODDISH + db 17,MANKEY + db 22,ODDISH + db 22,PIDGEY + db 18,MANKEY + db 18,GROWLITHE + db 20,GROWLITHE + db 19,MANKEY + db 20,MANKEY + + db $00 + +TowerMons1: + db $00 + + db $00 + +TowerMons2: + db $00 + + db $00 + +TowerMons3: + db $0A + db 20,GASTLY + db 21,GASTLY + db 22,GASTLY + db 23,GASTLY + db 19,GASTLY + db 18,GASTLY + db 24,GASTLY + db 20,CUBONE + db 22,CUBONE + db 25,HAUNTER + + db $00 + +TowerMons4: + db $0A + db 20,GASTLY + db 21,GASTLY + db 22,GASTLY + db 23,GASTLY + db 19,GASTLY + db 18,GASTLY + db 25,HAUNTER + db 20,CUBONE + db 22,CUBONE + db 24,GASTLY + + db $00 + +TowerMons5: + db $0A + db 20,GASTLY + db 21,GASTLY + db 22,GASTLY + db 23,GASTLY + db 19,GASTLY + db 18,GASTLY + db 25,HAUNTER + db 20,CUBONE + db 22,CUBONE + db 24,GASTLY + + db $00 + +TowerMons6: + db $0F + db 21,GASTLY + db 22,GASTLY + db 23,GASTLY + db 24,GASTLY + db 20,GASTLY + db 19,GASTLY + db 26,HAUNTER + db 22,CUBONE + db 24,CUBONE + db 28,HAUNTER + + db $00 + +TowerMons7: + db $0F + db 21,GASTLY + db 22,GASTLY + db 23,GASTLY + db 24,GASTLY + db 20,GASTLY + db 28,HAUNTER + db 22,CUBONE + db 24,CUBONE + db 28,HAUNTER + db 30,HAUNTER + + db $00 + +Route13Mons: + db $14 + db 24,ODDISH + db 25,PIDGEY + db 27,PIDGEY + db 24,VENONAT + db 22,ODDISH + db 26,VENONAT + db 26,ODDISH + db 25,DITTO + db 28,GLOOM + db 30,GLOOM + + db $00 + +Route14Mons: + db $0F + db 24,ODDISH + db 26,PIDGEY + db 23,DITTO + db 24,VENONAT + db 22,ODDISH + db 26,VENONAT + db 26,ODDISH + db 30,GLOOM + db 28,PIDGEOTTO + db 30,PIDGEOTTO + + db $00 + +Route15Mons: + db $0F + db 24,ODDISH + db 26,DITTO + db 23,PIDGEY + db 26,VENONAT + db 22,ODDISH + db 28,VENONAT + db 26,ODDISH + db 30,GLOOM + db 28,PIDGEOTTO + db 30,PIDGEOTTO + + db $00 + +Route16Mons: + db $19 + db 20,SPEAROW + db 22,SPEAROW + db 18,RATTATA + db 20,DODUO + db 20,RATTATA + db 18,DODUO + db 22,DODUO + db 22,RATTATA + db 23,RATICATE + db 25,RATICATE + + db $00 + +Route17Mons: + db $19 + db 20,SPEAROW + db 22,SPEAROW + db 25,RATICATE + db 24,DODUO + db 27,RATICATE + db 26,DODUO + db 28,DODUO + db 29,RATICATE + db 25,FEAROW + db 27,FEAROW + + db $00 + +Route18Mons: + db $19 + db 20,SPEAROW + db 22,SPEAROW + db 25,RATICATE + db 24,DODUO + db 25,FEAROW + db 26,DODUO + db 28,DODUO + db 29,RATICATE + db 27,FEAROW + db 29,FEAROW + + db $00 + +ZoneMonsCenter: + db $1E + db 22,NIDORAN_M + db 25,RHYHORN + db 22,VENONAT + db 24,EXEGGCUTE + db 31,NIDORINO + db 25,EXEGGCUTE + db 31,NIDORINA + db 30,PARASECT + db 23,SCYTHER + db 23,CHANSEY + + db $00 + +ZoneMons1: + db $1E + db 24,NIDORAN_M + db 26,DODUO + db 22,PARAS + db 25,EXEGGCUTE + db 33,NIDORINO + db 23,EXEGGCUTE + db 24,NIDORAN_F + db 25,PARASECT + db 25,KANGASKHAN + db 28,SCYTHER + + db $00 + +ZoneMons2: + db $1E + db 22,NIDORAN_M + db 26,RHYHORN + db 23,PARAS + db 25,EXEGGCUTE + db 30,NIDORINO + db 27,EXEGGCUTE + db 30,NIDORINA + db 32,VENOMOTH + db 26,CHANSEY + db 28,TAUROS + + db $00 + +ZoneMons3: + db $1E + db 25,NIDORAN_M + db 26,DODUO + db 23,VENONAT + db 24,EXEGGCUTE + db 33,NIDORINO + db 26,EXEGGCUTE + db 25,NIDORAN_F + db 31,VENOMOTH + db 26,TAUROS + db 28,KANGASKHAN + + db $00 + +WaterMons: + db $00 + + db $05 + db 5,TENTACOOL + db 10,TENTACOOL + db 15,TENTACOOL + db 5,TENTACOOL + db 10,TENTACOOL + db 15,TENTACOOL + db 20,TENTACOOL + db 30,TENTACOOL + db 35,TENTACOOL + db 40,TENTACOOL + +IslandMons1: + db $0F + db 30,SEEL + db 30,SLOWPOKE + db 30,SHELLDER + db 30,HORSEA + db 28,HORSEA + db 21,ZUBAT + db 29,GOLBAT + db 28,PSYDUCK + db 28,SHELLDER + db 38,GOLDUCK + + db $00 + +IslandMonsB1: + db $0A + db 30,STARYU + db 30,HORSEA + db 32,SHELLDER + db 32,HORSEA + db 28,SLOWPOKE + db 30,SEEL + db 30,SLOWPOKE + db 28,SEEL + db 38,DEWGONG + db 37,SEADRA + + db $00 + +IslandMonsB2: + db $0A + db 30,SEEL + db 30,SLOWPOKE + db 32,SEEL + db 32,SLOWPOKE + db 28,HORSEA + db 30,STARYU + db 30,HORSEA + db 28,SHELLDER + db 30,GOLBAT + db 37,SLOWBRO + + db $00 + +IslandMonsB3: + db $0A + db 31,SLOWPOKE + db 31,SEEL + db 33,SLOWPOKE + db 33,SEEL + db 29,HORSEA + db 31,SHELLDER + db 31,HORSEA + db 29,SHELLDER + db 39,SEADRA + db 37,DEWGONG + + db $00 + +IslandMonsB4: + db $0A + db 31,HORSEA + db 31,SHELLDER + db 33,HORSEA + db 33,SHELLDER + db 29,SLOWPOKE + db 31,SEEL + db 31,SLOWPOKE + db 29,SEEL + db 39,SLOWBRO + db 32,GOLBAT + + db $00 + +MansionMons1: + db $0A + db 32,KOFFING + db 30,KOFFING + db 34,PONYTA + db 30,PONYTA + db 34,GROWLITHE + db 32,PONYTA + db 30,GRIMER + db 28,PONYTA + db 37,WEEZING + db 39,MUK + + db $00 + +MansionMons2: + db $0A + db 32,GROWLITHE + db 34,KOFFING + db 34,KOFFING + db 30,PONYTA + db 30,KOFFING + db 32,PONYTA + db 30,GRIMER + db 28,PONYTA + db 39,WEEZING + db 37,MUK + + db $00 + +MansionMons3: + db $0A + db 31,KOFFING + db 33,GROWLITHE + db 35,KOFFING + db 32,PONYTA + db 34,PONYTA + db 40,WEEZING + db 34,GRIMER + db 38,WEEZING + db 36,PONYTA + db 42,MUK + + db $00 + +MansionMonsB1: + db $0A + db 33,KOFFING + db 31,KOFFING + db 35,GROWLITHE + db 32,PONYTA + db 31,KOFFING + db 40,WEEZING + db 34,PONYTA + db 35,GRIMER + db 42,WEEZING + db 42,MUK + + db $00 + +Route21Mons: + db $19 + db 21,RATTATA + db 23,PIDGEY + db 30,RATICATE + db 23,RATTATA + db 21,PIDGEY + db 30,PIDGEOTTO + db 32,PIDGEOTTO + db 28,TANGELA + db 30,TANGELA + db 32,TANGELA + + db $05 + db 5,TENTACOOL + db 10,TENTACOOL + db 15,TENTACOOL + db 5,TENTACOOL + db 10,TENTACOOL + db 15,TENTACOOL + db 20,TENTACOOL + db 30,TENTACOOL + db 35,TENTACOOL + db 40,TENTACOOL + +DungeonMons1: + db $0A + db 46,GOLBAT + db 46,HYPNO + db 46,MAGNETON + db 49,DODRIO + db 49,VENOMOTH + db 52,ARBOK + db 49,KADABRA + db 52,PARASECT + db 53,RAICHU + db 53,DITTO + + db $00 + +DungeonMons2: + db $0F + db 51,DODRIO + db 51,VENOMOTH + db 51,KADABRA + db 52,RHYDON + db 52,MAROWAK + db 52,ELECTRODE + db 56,CHANSEY + db 54,WIGGLYTUFF + db 55,DITTO + db 60,DITTO + + db $00 + +DungeonMonsB1: + db $19 + db 55,RHYDON + db 55,MAROWAK + db 55,ELECTRODE + db 64,CHANSEY + db 64,PARASECT + db 64,RAICHU + db 57,ARBOK + db 65,DITTO + db 63,DITTO + db 67,DITTO + + db $00 + +PowerPlantMons: + db $0A + db 21,VOLTORB + db 21,MAGNEMITE + db 20,PIKACHU + db 24,PIKACHU + db 23,MAGNEMITE + db 23,VOLTORB + db 32,MAGNETON + db 35,MAGNETON + db 33,ELECTABUZZ + db 36,ELECTABUZZ + + db $00 + +Route23Mons: + db $0A + db 26,EKANS + db 33,DITTO + db 26,SPEAROW + db 38,FEAROW + db 38,DITTO + db 38,FEAROW + db 41,ARBOK + db 43,DITTO + db 41,FEAROW + db 43,FEAROW + + db $00 + +PlateauMons2: + db $0A + db 22,MACHOP + db 24,GEODUDE + db 26,ZUBAT + db 36,ONIX + db 39,ONIX + db 42,ONIX + db 41,MACHOKE + db 40,GOLBAT + db 40,MAROWAK + db 43,GRAVELER + + db $00 + +PlateauMons3: + db $0F + db 24,MACHOP + db 26,GEODUDE + db 22,ZUBAT + db 42,ONIX + db 40,VENOMOTH + db 45,ONIX + db 43,GRAVELER + db 41,GOLBAT + db 42,MACHOKE + db 45,MACHOKE + + db $00 + +PlateauMons1: + db $0F + db 24,MACHOP + db 26,GEODUDE + db 22,ZUBAT + db 36,ONIX + db 39,ONIX + db 42,ONIX + db 41,GRAVELER + db 41,GOLBAT + db 42,MACHOKE + db 43,MAROWAK + + db $00 + +CaveMons: + db $14 + db 18,DIGLETT + db 19,DIGLETT + db 17,DIGLETT + db 20,DIGLETT + db 16,DIGLETT + db 15,DIGLETT + db 21,DIGLETT + db 22,DIGLETT + db 29,DUGTRIO + db 31,DUGTRIO + + db $00 + +ENDC +IF _GREEN || !_JAPAN && _BLUE +NoMons: + db $00 + + db $00 + +Route1Mons: + db $19 + db 3,PIDGEY + db 3,RATTATA + db 3,RATTATA + db 2,RATTATA + db 2,PIDGEY + db 3,PIDGEY + db 3,PIDGEY + db 4,RATTATA + db 4,PIDGEY + db 5,PIDGEY + + db $00 + +Route2Mons: + db $19 + db 3,RATTATA + db 3,PIDGEY + db 4,PIDGEY + db 4,RATTATA + db 5,PIDGEY + db 3,CATERPIE + db 2,RATTATA + db 5,RATTATA + db 4,CATERPIE + db 5,CATERPIE + + db $00 + +Route22Mons: + db $19 + db 3,RATTATA + db 3,NIDORAN_F + db 4,RATTATA + db 4,NIDORAN_F + db 2,RATTATA + db 2,NIDORAN_F + db 3,SPEAROW + db 5,SPEAROW + db 3,NIDORAN_M + db 4,NIDORAN_M + + db $00 + +ForestMons: + db $08 + db 4,CATERPIE + db 5,METAPOD + db 3,CATERPIE + db 5,CATERPIE + db 4,METAPOD + db 6,METAPOD + db 4,KAKUNA + db 3,WEEDLE + db 3,PIKACHU + db 5,PIKACHU + + db $00 + +Route3Mons: + db $14 + db 6,PIDGEY + db 5,SPEAROW + db 7,PIDGEY + db 6,SPEAROW + db 7,SPEAROW + db 8,PIDGEY + db 8,SPEAROW + db 3,JIGGLYPUFF + db 5,JIGGLYPUFF + db 7,JIGGLYPUFF + + db $00 + +MoonMons1: + db $0A + db 8,ZUBAT + db 7,ZUBAT + db 9,ZUBAT + db 8,GEODUDE + db 6,ZUBAT + db 10,ZUBAT + db 10,GEODUDE + db 8,PARAS + db 11,ZUBAT + db 8,CLEFAIRY + + db $00 + +MoonMonsB1: + db $0A + db 8,ZUBAT + db 7,ZUBAT + db 7,GEODUDE + db 8,GEODUDE + db 9,ZUBAT + db 10,PARAS + db 10,ZUBAT + db 11,ZUBAT + db 9,CLEFAIRY + db 9,GEODUDE + + db $00 + +MoonMonsB2: + db $0A + db 9,ZUBAT + db 9,GEODUDE + db 10,ZUBAT + db 10,GEODUDE + db 11,ZUBAT + db 10,PARAS + db 12,PARAS + db 10,CLEFAIRY + db 12,ZUBAT + db 12,CLEFAIRY + + db $00 + +Route4Mons: + db $14 + db 10,RATTATA + db 10,SPEAROW + db 8,RATTATA + db 6,SANDSHREW + db 8,SPEAROW + db 10,SANDSHREW + db 12,RATTATA + db 12,SPEAROW + db 8,SANDSHREW + db 12,SANDSHREW + + db $00 + +Route24Mons: + db $19 + db 7,CATERPIE + db 8,METAPOD + db 12,PIDGEY + db 12,BELLSPROUT + db 13,BELLSPROUT + db 10,ABRA + db 14,BELLSPROUT + db 13,PIDGEY + db 8,ABRA + db 12,ABRA + + db $00 + +Route25Mons: + db $0F + db 8,CATERPIE + db 9,METAPOD + db 13,PIDGEY + db 12,BELLSPROUT + db 13,BELLSPROUT + db 12,ABRA + db 14,BELLSPROUT + db 10,ABRA + db 7,KAKUNA + db 8,WEEDLE + + db $00 + +Route9Mons: + db $0F + db 16,RATTATA + db 16,SPEAROW + db 14,RATTATA + db 11,SANDSHREW + db 13,SPEAROW + db 15,SANDSHREW + db 17,RATTATA + db 17,SPEAROW + db 13,SANDSHREW + db 17,SANDSHREW + + db $00 + +Route5Mons: + db $0F + db 13,BELLSPROUT + db 13,PIDGEY + db 15,PIDGEY + db 10,MEOWTH + db 12,MEOWTH + db 15,BELLSPROUT + db 16,BELLSPROUT + db 16,PIDGEY + db 14,MEOWTH + db 16,MEOWTH + + db $00 + +Route6Mons: + db $0F + db 13,BELLSPROUT + db 13,PIDGEY + db 15,PIDGEY + db 10,MEOWTH + db 12,MEOWTH + db 15,BELLSPROUT + db 16,BELLSPROUT + db 16,PIDGEY + db 14,MEOWTH + db 16,MEOWTH + + db $00 + +Route11Mons: + db $0F + db 14,SANDSHREW + db 15,SPEAROW + db 12,SANDSHREW + db 9,DROWZEE + db 13,SPEAROW + db 13,DROWZEE + db 15,SANDSHREW + db 17,SPEAROW + db 11,DROWZEE + db 15,DROWZEE + + db $00 + +TunnelMonsB1: + db $0F + db 16,ZUBAT + db 17,ZUBAT + db 17,GEODUDE + db 15,MACHOP + db 16,GEODUDE + db 18,ZUBAT + db 15,ZUBAT + db 17,MACHOP + db 13,ONIX + db 15,ONIX + + db $00 + +TunnelMonsB2: + db $0F + db 16,ZUBAT + db 17,ZUBAT + db 17,GEODUDE + db 15,MACHOP + db 16,GEODUDE + db 18,ZUBAT + db 17,MACHOP + db 17,ONIX + db 13,ONIX + db 18,GEODUDE + + db $00 + +Route10Mons: + db $0F + db 16,VOLTORB + db 16,SPEAROW + db 14,VOLTORB + db 11,SANDSHREW + db 13,SPEAROW + db 15,SANDSHREW + db 17,VOLTORB + db 17,SPEAROW + db 13,SANDSHREW + db 17,SANDSHREW + + db $00 + +Route12Mons: + db $0F + db 24,BELLSPROUT + db 25,PIDGEY + db 23,PIDGEY + db 24,VENONAT + db 22,BELLSPROUT + db 26,VENONAT + db 26,BELLSPROUT + db 27,PIDGEY + db 28,WEEPINBELL + db 30,WEEPINBELL + + db $00 + +Route8Mons: + db $0F + db 18,PIDGEY + db 18,MEOWTH + db 17,SANDSHREW + db 16,VULPIX + db 20,PIDGEY + db 20,MEOWTH + db 19,SANDSHREW + db 17,VULPIX + db 15,VULPIX + db 18,VULPIX + + db $00 + +Route7Mons: + db $0F + db 19,PIDGEY + db 19,BELLSPROUT + db 17,MEOWTH + db 22,BELLSPROUT + db 22,PIDGEY + db 18,MEOWTH + db 18,VULPIX + db 20,VULPIX + db 19,MEOWTH + db 20,MEOWTH + + db $00 + +TowerMons1: + db $00 + + db $00 + +TowerMons2: + db $00 + + db $00 + +TowerMons3: + db $0A + db 20,GASTLY + db 21,GASTLY + db 22,GASTLY + db 23,GASTLY + db 19,GASTLY + db 18,GASTLY + db 24,GASTLY + db 20,CUBONE + db 22,CUBONE + db 25,HAUNTER + + db $00 + +TowerMons4: + db $0A + db 20,GASTLY + db 21,GASTLY + db 22,GASTLY + db 23,GASTLY + db 19,GASTLY + db 18,GASTLY + db 25,HAUNTER + db 20,CUBONE + db 22,CUBONE + db 24,GASTLY + + db $00 + +TowerMons5: + db $0A + db 20,GASTLY + db 21,GASTLY + db 22,GASTLY + db 23,GASTLY + db 19,GASTLY + db 18,GASTLY + db 25,HAUNTER + db 20,CUBONE + db 22,CUBONE + db 24,GASTLY + + db $00 + +TowerMons6: + db $0F + db 21,GASTLY + db 22,GASTLY + db 23,GASTLY + db 24,GASTLY + db 20,GASTLY + db 19,GASTLY + db 26,HAUNTER + db 22,CUBONE + db 24,CUBONE + db 28,HAUNTER + + db $00 + +TowerMons7: + db $0F + db 21,GASTLY + db 22,GASTLY + db 23,GASTLY + db 24,GASTLY + db 20,GASTLY + db 28,HAUNTER + db 22,CUBONE + db 24,CUBONE + db 28,HAUNTER + db 30,HAUNTER + + db $00 + +Route13Mons: + db $14 + db 24,BELLSPROUT + db 25,PIDGEY + db 27,PIDGEY + db 24,VENONAT + db 22,BELLSPROUT + db 26,VENONAT + db 26,BELLSPROUT + db 25,DITTO + db 28,WEEPINBELL + db 30,WEEPINBELL + + db $00 + +Route14Mons: + db $0F + db 24,BELLSPROUT + db 26,PIDGEY + db 23,DITTO + db 24,VENONAT + db 22,BELLSPROUT + db 26,VENONAT + db 26,BELLSPROUT + db 30,WEEPINBELL + db 28,PIDGEOTTO + db 30,PIDGEOTTO + + db $00 + +Route15Mons: + db $0F + db 24,BELLSPROUT + db 26,DITTO + db 23,PIDGEY + db 26,VENONAT + db 22,BELLSPROUT + db 28,VENONAT + db 26,BELLSPROUT + db 30,WEEPINBELL + db 28,PIDGEOTTO + db 30,PIDGEOTTO + + db $00 + +Route16Mons: + db $19 + db 20,SPEAROW + db 22,SPEAROW + db 18,RATTATA + db 20,DODUO + db 20,RATTATA + db 18,DODUO + db 22,DODUO + db 22,RATTATA + db 23,RATICATE + db 25,RATICATE + + db $00 + +Route17Mons: + db $19 + db 20,SPEAROW + db 22,SPEAROW + db 25,RATICATE + db 24,DODUO + db 27,RATICATE + db 26,DODUO + db 28,DODUO + db 29,RATICATE + db 25,FEAROW + db 27,FEAROW + + db $00 + +Route18Mons: + db $19 + db 20,SPEAROW + db 22,SPEAROW + db 25,RATICATE + db 24,DODUO + db 25,FEAROW + db 26,DODUO + db 28,DODUO + db 29,RATICATE + db 27,FEAROW + db 29,FEAROW + + db $00 + +ZoneMonsCenter: + db $1E + db 22,NIDORAN_F + db 25,RHYHORN + db 22,VENONAT + db 24,EXEGGCUTE + db 31,NIDORINA + db 25,EXEGGCUTE + db 31,NIDORINO + db 30,PARASECT + db 23,PINSIR + db 23,CHANSEY + + db $00 + +ZoneMons1: + db $1E + db 24,NIDORAN_F + db 26,DODUO + db 22,PARAS + db 25,EXEGGCUTE + db 33,NIDORINA + db 23,EXEGGCUTE + db 24,NIDORAN_M + db 25,PARASECT + db 25,KANGASKHAN + db 28,PINSIR + + db $00 + +ZoneMons2: + db $1E + db 22,NIDORAN_F + db 26,RHYHORN + db 23,PARAS + db 25,EXEGGCUTE + db 30,NIDORINA + db 27,EXEGGCUTE + db 30,NIDORINO + db 32,VENOMOTH + db 26,CHANSEY + db 28,TAUROS + + db $00 + +ZoneMons3: + db $1E + db 25,NIDORAN_F + db 26,DODUO + db 23,VENONAT + db 24,EXEGGCUTE + db 33,NIDORINA + db 26,EXEGGCUTE + db 25,NIDORAN_M + db 31,VENOMOTH + db 26,TAUROS + db 28,KANGASKHAN + + db $00 + +WaterMons: + db $00 + + db $05 + db 5,TENTACOOL + db 10,TENTACOOL + db 15,TENTACOOL + db 5,TENTACOOL + db 10,TENTACOOL + db 15,TENTACOOL + db 20,TENTACOOL + db 30,TENTACOOL + db 35,TENTACOOL + db 40,TENTACOOL + +IslandMons1: + db $0F + db 30,SEEL + db 30,PSYDUCK + db 30,STARYU + db 30,KRABBY + db 28,KRABBY + db 21,ZUBAT + db 29,GOLBAT + db 28,SLOWPOKE + db 28,STARYU + db 38,SLOWBRO + + db $00 + +IslandMonsB1: + db $0A + db 30,SHELLDER + db 30,KRABBY + db 32,STARYU + db 32,KRABBY + db 28,PSYDUCK + db 30,SEEL + db 30,PSYDUCK + db 28,SEEL + db 38,DEWGONG + db 37,KINGLER + + db $00 + +IslandMonsB2: + db $0A + db 30,SEEL + db 30,PSYDUCK + db 32,SEEL + db 32,PSYDUCK + db 28,KRABBY + db 30,SHELLDER + db 30,KRABBY + db 28,STARYU + db 30,GOLBAT + db 37,GOLDUCK + + db $00 + +IslandMonsB3: + db $0A + db 31,PSYDUCK + db 31,SEEL + db 33,PSYDUCK + db 33,SEEL + db 29,KRABBY + db 31,STARYU + db 31,KRABBY + db 29,STARYU + db 39,KINGLER + db 37,DEWGONG + + db $00 + +IslandMonsB4: + db $0A + db 31,KRABBY + db 31,STARYU + db 33,KRABBY + db 33,STARYU + db 29,PSYDUCK + db 31,SEEL + db 31,PSYDUCK + db 29,SEEL + db 39,GOLDUCK + db 32,GOLBAT + + db $00 + +MansionMons1: + db $0A + db 32,GRIMER + db 30,GRIMER + db 34,PONYTA + db 30,PONYTA + db 34,VULPIX + db 32,PONYTA + db 30,KOFFING + db 28,PONYTA + db 37,MUK + db 39,WEEZING + + db $00 + +MansionMons2: + db $0A + db 32,VULPIX + db 34,GRIMER + db 34,GRIMER + db 30,PONYTA + db 30,GRIMER + db 32,PONYTA + db 30,KOFFING + db 28,PONYTA + db 39,MUK + db 37,WEEZING + + db $00 + +MansionMons3: + db $0A + db 31,GRIMER + db 33,VULPIX + db 35,GRIMER + db 32,PONYTA + db 34,MAGMAR + db 40,MUK + db 34,KOFFING + db 38,MUK + db 36,PONYTA + db 42,WEEZING + + db $00 + +MansionMonsB1: + db $0A + db 33,GRIMER + db 31,GRIMER + db 35,VULPIX + db 32,PONYTA + db 31,GRIMER + db 40,MUK + db 34,PONYTA + db 35,KOFFING + db 38,MAGMAR + db 42,WEEZING + + db $00 + +Route21Mons: + db $19 + db 21,RATTATA + db 23,PIDGEY + db 30,RATICATE + db 23,RATTATA + db 21,PIDGEY + db 30,PIDGEOTTO + db 32,PIDGEOTTO + db 28,TANGELA + db 30,TANGELA + db 32,TANGELA + + db $05 + db 5,TENTACOOL + db 10,TENTACOOL + db 15,TENTACOOL + db 5,TENTACOOL + db 10,TENTACOOL + db 15,TENTACOOL + db 20,TENTACOOL + db 30,TENTACOOL + db 35,TENTACOOL + db 40,TENTACOOL + +DungeonMons1: + db $0A + db 46,GOLBAT + db 46,HYPNO + db 46,MAGNETON + db 49,DODRIO + db 49,VENOMOTH + db 52,SANDSLASH + db 49,KADABRA + db 52,PARASECT + db 53,RAICHU + db 53,DITTO + + db $00 + +DungeonMons2: + db $0F + db 51,DODRIO + db 51,VENOMOTH + db 51,KADABRA + db 52,RHYDON + db 52,MAROWAK + db 52,ELECTRODE + db 56,CHANSEY + db 54,WIGGLYTUFF + db 55,DITTO + db 60,DITTO + + db $00 + +DungeonMonsB1: + db $19 + db 55,RHYDON + db 55,MAROWAK + db 55,ELECTRODE + db 64,CHANSEY + db 64,PARASECT + db 64,RAICHU + db 57,SANDSLASH + db 65,DITTO + db 63,DITTO + db 67,DITTO + + db $00 + +PowerPlantMons: + db $0A + db 21,VOLTORB + db 21,MAGNEMITE + db 20,PIKACHU + db 24,PIKACHU + db 23,MAGNEMITE + db 23,VOLTORB + db 32,MAGNETON + db 35,MAGNETON + db 33,RAICHU + db 36,RAICHU + + db $00 + +Route23Mons: + db $0A + db 26,SANDSHREW + db 33,DITTO + db 26,SPEAROW + db 38,FEAROW + db 38,DITTO + db 38,FEAROW + db 41,SANDSLASH + db 43,DITTO + db 41,FEAROW + db 43,FEAROW + + db $00 + +PlateauMons2: + db $0A + db 22,MACHOP + db 24,GEODUDE + db 26,ZUBAT + db 36,ONIX + db 39,ONIX + db 42,ONIX + db 41,MACHOKE + db 40,GOLBAT + db 40,MAROWAK + db 43,GRAVELER + + db $00 + +PlateauMons3: + db $0F + db 24,MACHOP + db 26,GEODUDE + db 22,ZUBAT + db 42,ONIX + db 40,VENOMOTH + db 45,ONIX + db 43,GRAVELER + db 41,GOLBAT + db 42,MACHOKE + db 45,MACHOKE + + db $00 + +PlateauMons1: + db $0F + db 24,MACHOP + db 26,GEODUDE + db 22,ZUBAT + db 36,ONIX + db 39,ONIX + db 42,ONIX + db 41,GRAVELER + db 41,GOLBAT + db 42,MACHOKE + db 43,MAROWAK + + db $00 + +CaveMons: + db $14 + db 18,DIGLETT + db 19,DIGLETT + db 17,DIGLETT + db 20,DIGLETT + db 16,DIGLETT + db 15,DIGLETT + db 21,DIGLETT + db 22,DIGLETT + db 29,DUGTRIO + db 31,DUGTRIO + + db $00 + +ENDC +IF _JAPAN && _BLUE +NoMons: + db $00 + + db $00 + +Route1Mons: + db $19 + db 3,PIDGEY + db 3,RATTATA + db 3,RATTATA + db 2,RATTATA + db 2,PIDGEY + db 3,PIDGEY + db 3,PIDGEY + db 4,RATTATA + db 4,PIDGEY + db 5,PIDGEY + + db $00 + +Route2Mons: + db $19 + db 3,RATTATA + db 3,PIDGEY + db 4,PIDGEY + db 4,RATTATA + db 5,PIDGEY + db 3,CATERPIE + db 2,RATTATA + db 5,RATTATA + db 4,CATERPIE + db 5,CATERPIE + + db $00 + +Route22Mons: + db $19 + db 3,RATTATA + db 3,NIDORAN_M + db 4,RATTATA + db 4,NIDORAN_M + db 2,RATTATA + db 2,NIDORAN_M + db 3,SPEAROW + db 5,SPEAROW + db 3,NIDORAN_F + db 4,NIDORAN_F + + db $00 + +ForestMons: + db $08 + db 4,CATERPIE + db 5,METAPOD + db 3,CATERPIE + db 5,CATERPIE + db 4,METAPOD + db 6,METAPOD + db 4,KAKUNA + db 3,WEEDLE + db 3,PIKACHU + db 5,PIKACHU + + db $00 + +Route3Mons: + db $14 + db 6,PIDGEY + db 5,SPEAROW + db 7,PIDGEY + db 6,SPEAROW + db 7,SPEAROW + db 8,PIDGEY + db 8,SPEAROW + db 3,JIGGLYPUFF + db 5,JIGGLYPUFF + db 7,JIGGLYPUFF + + db $00 + +MoonMons1: + db $0A + db 8,ZUBAT + db 7,ZUBAT + db 9,ZUBAT + db 8,GEODUDE + db 6,ZUBAT + db 10,ZUBAT + db 10,GEODUDE + db 8,PARAS + db 11,ZUBAT + db 8,CLEFAIRY + + db $00 + +MoonMonsB1: + db $0A + db 8,ZUBAT + db 7,ZUBAT + db 7,GEODUDE + db 8,GEODUDE + db 9,ZUBAT + db 10,PARAS + db 10,ZUBAT + db 11,ZUBAT + db 9,CLEFAIRY + db 9,GEODUDE + + db $00 + +MoonMonsB2: + db $0A + db 9,ZUBAT + db 9,GEODUDE + db 10,ZUBAT + db 10,GEODUDE + db 11,ZUBAT + db 10,PARAS + db 12,PARAS + db 10,CLEFAIRY + db 12,ZUBAT + db 12,CLEFAIRY + + db $00 + +Route4Mons: + db $14 + db 10,RATTATA + db 10,SPEAROW + db 8,RATTATA + db 6,SANDSHREW + db 8,SPEAROW + db 10,SANDSHREW + db 12,RATTATA + db 12,SPEAROW + db 8,SANDSHREW + db 12,SANDSHREW + + db $00 + +Route24Mons: + db $19 + db 7,CATERPIE + db 8,METAPOD + db 12,PIDGEY + db 12,ODDISH + db 13,ODDISH + db 10,ABRA + db 14,ODDISH + db 13,PIDGEY + db 8,ABRA + db 12,ABRA + + db $00 + +Route25Mons: + db $0F + db 8,CATERPIE + db 9,METAPOD + db 13,PIDGEY + db 12,ODDISH + db 13,ODDISH + db 12,ABRA + db 14,ODDISH + db 10,ABRA + db 7,KAKUNA + db 8,WEEDLE + + db $00 + +Route9Mons: + db $0F + db 16,RATTATA + db 16,SPEAROW + db 14,RATTATA + db 11,SANDSHREW + db 13,SPEAROW + db 15,SANDSHREW + db 17,RATTATA + db 17,SPEAROW + db 13,SANDSHREW + db 17,SANDSHREW + + db $00 + +Route5Mons: + db $0F + db 13,ODDISH + db 13,PIDGEY + db 15,PIDGEY + db 10,MEOWTH + db 12,MEOWTH + db 15,ODDISH + db 16,ODDISH + db 16,PIDGEY + db 14,MEOWTH + db 16,MEOWTH + + db $00 + +Route6Mons: + db $0F + db 13,ODDISH + db 13,PIDGEY + db 15,PIDGEY + db 10,MEOWTH + db 12,MEOWTH + db 15,ODDISH + db 16,ODDISH + db 16,PIDGEY + db 14,MEOWTH + db 16,MEOWTH + + db $00 + +Route11Mons: + db $0F + db 14,SANDSHREW + db 15,SPEAROW + db 12,SANDSHREW + db 9,DROWZEE + db 13,SPEAROW + db 13,DROWZEE + db 15,SANDSHREW + db 17,SPEAROW + db 11,DROWZEE + db 15,DROWZEE + + db $00 + +TunnelMonsB1: + db $0F + db 16,ZUBAT + db 17,ZUBAT + db 17,GEODUDE + db 15,MACHOP + db 16,GEODUDE + db 18,DITTO + db 15,ZUBAT + db 17,MACHOP + db 13,ONIX + db 15,ONIX + + db $00 + +TunnelMonsB2: + db $0F + db 16,ZUBAT + db 17,ZUBAT + db 17,GEODUDE + db 15,MACHOP + db 16,GEODUDE + db 18,DITTO + db 17,MACHOP + db 17,ONIX + db 13,ONIX + db 18,GEODUDE + + db $00 + +Route10Mons: + db $0F + db 16,VOLTORB + db 16,SPEAROW + db 14,VOLTORB + db 11,SANDSHREW + db 13,SPEAROW + db 15,SANDSHREW + db 17,VOLTORB + db 17,SPEAROW + db 13,SANDSHREW + db 17,SANDSHREW + + db $00 + +Route12Mons: + db $0F + db 24,ODDISH + db 25,PIDGEY + db 23,PIDGEY + db 24,VENONAT + db 22,ODDISH + db 26,VENONAT + db 26,ODDISH + db 27,PIDGEY + db 28,GLOOM + db 30,GLOOM + + db $00 + +Route8Mons: + db $0F + db 18,PIDGEY + db 18,MEOWTH + db 17,SANDSHREW + db 16,GROWLITHE + db 20,PIDGEY + db 20,MEOWTH + db 19,SANDSHREW + db 17,GROWLITHE + db 15,GROWLITHE + db 18,GROWLITHE + + db $00 + +Route7Mons: + db $0F + db 19,PIDGEY + db 19,ODDISH + db 17,MEOWTH + db 22,ODDISH + db 22,PIDGEY + db 18,MEOWTH + db 18,GROWLITHE + db 20,GROWLITHE + db 19,MEOWTH + db 20,MEOWTH + + db $00 + +TowerMons1: + db $00 + + db $00 + +TowerMons2: + db $00 + + db $00 + +TowerMons3: + db $0A + db 20,GASTLY + db 21,GASTLY + db 22,GASTLY + db 23,GASTLY + db 19,GASTLY + db 18,GASTLY + db 24,GASTLY + db 20,CUBONE + db 22,CUBONE + db 25,HAUNTER + + db $00 + +TowerMons4: + db $0A + db 20,GASTLY + db 21,GASTLY + db 22,GASTLY + db 23,GASTLY + db 19,GASTLY + db 18,GASTLY + db 25,HAUNTER + db 20,CUBONE + db 22,CUBONE + db 24,GASTLY + + db $00 + +TowerMons5: + db $0A + db 20,GASTLY + db 21,GASTLY + db 22,GASTLY + db 23,GASTLY + db 19,GASTLY + db 18,GASTLY + db 25,HAUNTER + db 20,CUBONE + db 22,CUBONE + db 24,GASTLY + + db $00 + +TowerMons6: + db $0F + db 21,GASTLY + db 22,GASTLY + db 23,GASTLY + db 24,GASTLY + db 20,GASTLY + db 19,GASTLY + db 26,HAUNTER + db 22,CUBONE + db 24,CUBONE + db 28,HAUNTER + + db $00 + +TowerMons7: + db $0F + db 21,GASTLY + db 22,GASTLY + db 23,GASTLY + db 24,GASTLY + db 20,GASTLY + db 28,HAUNTER + db 22,CUBONE + db 24,CUBONE + db 28,HAUNTER + db 30,HAUNTER + + db $00 + +Route13Mons: + db $14 + db 24,ODDISH + db 25,PIDGEY + db 27,PIDGEY + db 24,VENONAT + db 22,ODDISH + db 26,VENONAT + db 26,ODDISH + db 25,DITTO + db 28,GLOOM + db 30,GLOOM + + db $00 + +Route14Mons: + db $0F + db 24,ODDISH + db 26,PIDGEY + db 23,DITTO + db 24,VENONAT + db 22,ODDISH + db 26,VENONAT + db 26,ODDISH + db 30,GLOOM + db 28,PIDGEOTTO + db 30,PIDGEOTTO + + db $00 + +Route15Mons: + db $0F + db 24,ODDISH + db 26,DITTO + db 23,PIDGEY + db 26,VENONAT + db 22,ODDISH + db 28,VENONAT + db 26,ODDISH + db 30,GLOOM + db 28,PIDGEOTTO + db 30,PIDGEOTTO + + db $00 + +Route16Mons: + db $19 + db 20,SPEAROW + db 22,SPEAROW + db 18,RATTATA + db 20,DODUO + db 20,RATTATA + db 18,DODUO + db 22,DODUO + db 22,RATTATA + db 23,RATICATE + db 25,RATICATE + + db $00 + +Route17Mons: + db $19 + db 20,SPEAROW + db 22,SPEAROW + db 25,RATICATE + db 24,DODUO + db 27,RATICATE + db 26,DODUO + db 28,DODUO + db 29,RATICATE + db 25,FEAROW + db 27,FEAROW + + db $00 + +Route18Mons: + db $19 + db 20,SPEAROW + db 22,SPEAROW + db 25,RATICATE + db 24,DODUO + db 25,FEAROW + db 26,DODUO + db 28,DODUO + db 29,RATICATE + db 27,FEAROW + db 29,FEAROW + + db $00 + +ZoneMonsCenter: + db $1E + db 22,NIDORAN_M + db 25,RHYHORN + db 22,VENONAT + db 24,EXEGGCUTE + db 31,NIDORINO + db 25,EXEGGCUTE + db 31,NIDORINA + db 30,PARASECT + db 23,SCYTHER + db 23,CHANSEY + + db $00 + +ZoneMons1: + db $1E + db 24,NIDORAN_M + db 26,DODUO + db 22,PARAS + db 25,EXEGGCUTE + db 33,NIDORINO + db 23,EXEGGCUTE + db 24,NIDORAN_F + db 25,PARASECT + db 25,LICKITUNG + db 28,SCYTHER + + db $00 + +ZoneMons2: + db $1E + db 22,NIDORAN_M + db 26,RHYHORN + db 23,PARAS + db 25,EXEGGCUTE + db 30,NIDORINO + db 27,EXEGGCUTE + db 30,NIDORINA + db 32,VENOMOTH + db 26,CHANSEY + db 28,PINSIR + + db $00 + +ZoneMons3: + db $1E + db 25,NIDORAN_M + db 26,DODUO + db 23,VENONAT + db 24,EXEGGCUTE + db 33,NIDORINO + db 26,EXEGGCUTE + db 25,NIDORAN_F + db 31,VENOMOTH + db 26,PINSIR + db 28,LICKITUNG + + db $00 + +WaterMons: + db $00 + + db $05 + db 5,TENTACOOL + db 10,TENTACOOL + db 15,TENTACOOL + db 5,TENTACOOL + db 10,TENTACOOL + db 15,TENTACOOL + db 20,TENTACOOL + db 30,TENTACOOL + db 35,TENTACOOL + db 40,TENTACOOL + +WaterMons: + db $00 + + db $05 + db 5,TENTACOOL + db 10,TENTACOOL + db 15,TENTACOOL + db 5,TENTACOOL + db 10,TENTACOOL + db 15,TENTACOOL + db 20,TENTACOOL + db 30,TENTACOOL + db 35,TENTACOOL + db 40,TENTACOOL + +IslandMons1: + db $0F + db 30,SEEL + db 30,HORSEA + db 30,STARYU + db 30,KRABBY + db 28,KRABBY + db 21,ZUBAT + db 29,GOLBAT + db 28,SLOWPOKE + db 28,STARYU + db 38,SLOWBRO + + db $00 + +IslandMonsB1: + db $0A + db 30,SHELLDER + db 30,KRABBY + db 32,STARYU + db 32,KRABBY + db 28,HORSEA + db 30,SEEL + db 30,HORSEA + db 28,SEEL + db 38,DEWGONG + db 37,KINGLER + + db $00 + +IslandMonsB2: + db $0A + db 30,SEEL + db 30,HORSEA + db 32,SEEL + db 32,HORSEA + db 28,KRABBY + db 30,SHELLDER + db 30,KRABBY + db 28,STARYU + db 30,GOLBAT + db 37,JYNX + + db $00 + +IslandMonsB3: + db $0A + db 31,HORSEA + db 31,SEEL + db 33,HORSEA + db 33,SEEL + db 29,KRABBY + db 31,STARYU + db 31,KRABBY + db 29,STARYU + db 39,KINGLER + db 37,DEWGONG + + db $00 + +IslandMonsB4: + db $0A + db 31,KRABBY + db 31,STARYU + db 33,KRABBY + db 33,STARYU + db 29,HORSEA + db 31,SEEL + db 31,HORSEA + db 29,SEEL + db 39,JYNX + db 32,GOLBAT + + db $00 + +MansionMons1: + db $0A + db 32,GRIMER + db 30,GRIMER + db 34,PONYTA + db 30,PONYTA + db 34,GROWLITHE + db 32,PONYTA + db 30,KOFFING + db 28,PONYTA + db 37,MUK + db 39,WEEZING + + db $00 + +MansionMons2: + db $0A + db 32,GROWLITHE + db 34,GRIMER + db 34,GRIMER + db 30,PONYTA + db 30,GRIMER + db 32,PONYTA + db 30,KOFFING + db 28,PONYTA + db 39,MUK + db 37,WEEZING + + db $00 + +MansionMons3: + db $0A + db 31,GRIMER + db 33,GROWLITHE + db 35,GRIMER + db 32,PONYTA + db 34,PONYTA + db 40,MUK + db 34,KOFFING + db 38,MUK + db 36,PONYTA + db 42,WEEZING + + db $00 + +MansionMonsB1: + db $0A + db 33,GRIMER + db 31,GRIMER + db 35,GROWLITHE + db 32,PONYTA + db 31,GRIMER + db 40,MUK + db 34,PONYTA + db 35,KOFFING + db 38,MUK + db 42,WEEZING + + db $00 + +Route21Mons: + db $19 + db 21,RATTATA + db 23,PIDGEY + db 30,RATICATE + db 23,RATTATA + db 21,PIDGEY + db 30,PIDGEOTTO + db 32,PIDGEOTTO + db 28,TANGELA + db 30,TANGELA + db 32,TANGELA + + db $05 + db 5,TENTACOOL + db 10,TENTACOOL + db 15,TENTACOOL + db 5,TENTACOOL + db 10,TENTACOOL + db 15,TENTACOOL + db 20,TENTACOOL + db 30,TENTACOOL + db 35,TENTACOOL + db 40,TENTACOOL + +DungeonMons1: + db $0A + db 46,GOLBAT + db 46,HYPNO + db 46,MAGNETON + db 49,RAPIDASH + db 49,VENOMOTH + db 52,SANDSLASH + db 49,KADABRA + db 52,PARASECT + db 53,RAICHU + db 53,DITTO + + db $00 + +DungeonMons2: + db $0F + db 51,DODRIO + db 51,VENOMOTH + db 51,KADABRA + db 52,RHYDON + db 52,RATICATE + db 52,ELECTRODE + db 56,CHANSEY + db 54,WIGGLYTUFF + db 55,DITTO + db 60,DITTO + + db $00 + +DungeonMonsB1: + db $19 + db 55,RHYDON + db 55,MAROWAK + db 55,ELECTRODE + db 64,CLEFAIRY + db 64,PARASECT + db 64,RAICHU + db 57,SANDSLASH + db 65,DITTO + db 63,DITTO + db 67,DITTO + + db $00 + +PowerPlantMons: + db $0A + db 21,VOLTORB + db 21,MAGNEMITE + db 20,PIKACHU + db 24,PIKACHU + db 23,MAGNEMITE + db 23,VOLTORB + db 32,MAGNETON + db 35,MAGNETON + db 33,RAICHU + db 36,RAICHU + + db $00 + +Route23Mons: + db $0A + db 26,SANDSHREW + db 33,DITTO + db 26,SPEAROW + db 38,FEAROW + db 38,DITTO + db 38,FEAROW + db 41,SANDSLASH + db 43,DITTO + db 41,FEAROW + db 43,FEAROW + + db $00 + +PlateauMons2: + db $0A + db 22,MACHOP + db 24,GEODUDE + db 26,ZUBAT + db 36,ONIX + db 39,ONIX + db 42,ONIX + db 41,MACHOKE + db 40,GOLBAT + db 40,MAROWAK + db 43,GRAVELER + + db $00 + +PlateauMons3: + db $0F + db 24,MACHOP + db 26,GEODUDE + db 22,ZUBAT + db 42,ONIX + db 40,VENOMOTH + db 45,ONIX + db 43,GRAVELER + db 41,GOLBAT + db 42,MACHOKE + db 45,MACHOKE + + db $00 + +PlateauMons1: + db $0F + db 24,MACHOP + db 26,GEODUDE + db 22,ZUBAT + db 36,ONIX + db 39,ONIX + db 42,ONIX + db 41,GRAVELER + db 41,GOLBAT + db 42,MACHOKE + db 43,MAROWAK + + db $00 + +CaveMons: + db $14 + db 18,DIGLETT + db 19,DIGLETT + db 17,DIGLETT + db 20,DIGLETT + db 16,DIGLETT + db 15,DIGLETT + db 21,DIGLETT + db 22,DIGLETT + db 29,DUGTRIO + db 31,DUGTRIO + + db $00 + +ENDC +IF _YELLOW +NoMons: + db $00 + + db $00 + +Route1Mons: + db $19 + db 3,PIDGEY + db 4,PIDGEY + db 2,RATTATA + db 3,RATTATA + db 2,PIDGEY + db 3,PIDGEY + db 5,PIDGEY + db 4,RATTATA + db 6,PIDGEY + db 7,PIDGEY + + db $00 + +Route2Mons: + db $19 + db 3,RATTATA + db 3,PIDGEY + db 4,RATTATA + db 4,NIDORAN_M + db 4,NIDORAN_F + db 5,PIDGEY + db 6,NIDORAN_M + db 6,NIDORAN_F + db 7,PIDGEY + db 7,PIDGEY + + db $00 + +Route22Mons: + db $19 + db 2,NIDORAN_M + db 2,NIDORAN_F + db 3,MANKEY + db 3,RATTATA + db 4,NIDORAN_M + db 4,NIDORAN_F + db 5,MANKEY + db 2,SPEAROW + db 4,SPEAROW + db 6,SPEAROW + + db $00 + +ForestMons: + db $19 + db 3,CATERPIE + db 4,METAPOD + db 4,CATERPIE + db 5,CATERPIE + db 4,PIDGEY + db 6,PIDGEY + db 6,CATERPIE + db 6,METAPOD + db 8,PIDGEY + db 9,PIDGEOTTO + + db $00 + +Route3Mons: + db $14 + db 8,SPEAROW + db 9,SPEAROW + db 9,MANKEY + db 10,SPEAROW + db 8,SANDSHREW + db 10,RATTATA + db 10,SANDSHREW + db 12,RATTATA + db 11,SPEAROW + db 12,SPEAROW + + db $00 + +MoonMons1: + db $0A + db 8,ZUBAT + db 9,ZUBAT + db 10,GEODUDE + db 6,ZUBAT + db 7,ZUBAT + db 10,ZUBAT + db 10,GEODUDE + db 11,ZUBAT + db 12,SANDSHREW + db 11,CLEFAIRY + + db $00 + +MoonMonsB1: + db $0A + db 8,ZUBAT + db 9,ZUBAT + db 10,ZUBAT + db 10,GEODUDE + db 11,GEODUDE + db 11,ZUBAT + db 9,PARAS + db 11,PARAS + db 10,CLEFAIRY + db 12,CLEFAIRY + + db $00 + +MoonMonsB2: + db $0A + db 10,ZUBAT + db 11,GEODUDE + db 13,PARAS + db 11,ZUBAT + db 11,ZUBAT + db 12,ZUBAT + db 13,ZUBAT + db 9,CLEFAIRY + db 11,CLEFAIRY + db 13,CLEFAIRY + + db $00 + +Route4Mons: + db $14 + db 8,SPEAROW + db 9,SPEAROW + db 9,MANKEY + db 10,SPEAROW + db 8,SANDSHREW + db 10,RATTATA + db 10,SANDSHREW + db 12,RATTATA + db 11,SPEAROW + db 12,SPEAROW + + db $00 + +Route24Mons: + db $19 + db 12,ODDISH + db 12,BELLSPROUT + db 13,PIDGEY + db 14,ODDISH + db 14,BELLSPROUT + db 15,PIDGEY + db 13,VENONAT + db 16,VENONAT + db 17,PIDGEY + db 17,PIDGEOTTO + + db $00 + +Route25Mons: + db $0F + db 12,ODDISH + db 12,BELLSPROUT + db 13,PIDGEY + db 14,ODDISH + db 14,BELLSPROUT + db 15,PIDGEY + db 13,VENONAT + db 16,VENONAT + db 17,PIDGEY + db 17,PIDGEOTTO + + db $00 + +Route9Mons: + db $0F + db 16,NIDORAN_M + db 16,NIDORAN_F + db 18,RATTATA + db 18,NIDORAN_M + db 18,NIDORAN_F + db 17,SPEAROW + db 18,NIDORINO + db 18,NIDORINA + db 20,RATICATE + db 19,FEAROW + + db $00 + +Route5Mons: + db $0F + db 15,PIDGEY + db 14,RATTATA + db 7,ABRA + db 16,PIDGEY + db 16,RATTATA + db 17,PIDGEY + db 17,PIDGEOTTO + db 3,JIGGLYPUFF + db 5,JIGGLYPUFF + db 7,JIGGLYPUFF + + db $00 + +Route6Mons: + db $0F + db 15,PIDGEY + db 14,RATTATA + db 7,ABRA + db 16,PIDGEY + db 16,RATTATA + db 17,PIDGEY + db 17,PIDGEOTTO + db 3,JIGGLYPUFF + db 5,JIGGLYPUFF + db 7,JIGGLYPUFF + + db $03 + db 15,PSYDUCK + db 15,PSYDUCK + db 15,PSYDUCK + db 15,PSYDUCK + db 15,PSYDUCK + db 15,PSYDUCK + db 15,PSYDUCK + db 15,PSYDUCK + db 15,GOLDUCK + db 20,GOLDUCK + +Route11Mons: + db $0F + db 16,PIDGEY + db 15,RATTATA + db 18,PIDGEY + db 15,DROWZEE + db 17,RATTATA + db 17,DROWZEE + db 18,PIDGEOTTO + db 20,PIDGEOTTO + db 19,DROWZEE + db 17,RATICATE + + db $00 + +TunnelMonsB1: + db $0F + db 15,ZUBAT + db 16,GEODUDE + db 17,ZUBAT + db 19,ZUBAT + db 18,GEODUDE + db 20,GEODUDE + db 21,ZUBAT + db 17,MACHOP + db 19,MACHOP + db 21,MACHOP + + db $00 + +TunnelMonsB2: + db $0F + db 20,ZUBAT + db 17,GEODUDE + db 18,MACHOP + db 21,ZUBAT + db 22,ZUBAT + db 21,GEODUDE + db 20,MACHOP + db 14,ONIX + db 18,ONIX + db 22,ONIX + + db $00 + +Route10Mons: + db $0F + db 16,MAGNEMITE + db 18,RATTATA + db 18,MAGNEMITE + db 20,MAGNEMITE + db 17,NIDORAN_M + db 17,NIDORAN_F + db 22,MAGNEMITE + db 20,RATICATE + db 16,MACHOP + db 18,MACHOP + + db $00 + +Route12Mons: + db $0F + db 25,ODDISH + db 25,BELLSPROUT + db 28,PIDGEY + db 28,PIDGEOTTO + db 27,ODDISH + db 27,BELLSPROUT + db 29,GLOOM + db 29,WEEPINBELL + db 26,FARFETCH_D + db 31,FARFETCH_D + + db $03 + db 15,SLOWPOKE + db 15,SLOWPOKE + db 15,SLOWPOKE + db 15,SLOWPOKE + db 15,SLOWPOKE + db 15,SLOWPOKE + db 15,SLOWPOKE + db 15,SLOWPOKE + db 15,SLOWBRO + db 20,SLOWBRO + +Route8Mons: + db $0F + db 20,PIDGEY + db 22,PIDGEY + db 20,RATTATA + db 15,ABRA + db 19,ABRA + db 24,PIDGEOTTO + db 19,JIGGLYPUFF + db 24,JIGGLYPUFF + db 20,KADABRA + db 27,KADABRA + + db $00 + +Route7Mons: + db $0F + db 20,PIDGEY + db 22,PIDGEY + db 20,RATTATA + db 15,ABRA + db 19,ABRA + db 24,PIDGEOTTO + db 26,ABRA + db 19,JIGGLYPUFF + db 24,JIGGLYPUFF + db 24,JIGGLYPUFF + + db $00 + +TowerMons1: + db $00 + + db $00 + +TowerMons2: + db $00 + + db $00 + +TowerMons3: + db $0A + db 20,GASTLY + db 21,GASTLY + db 22,GASTLY + db 23,GASTLY + db 24,GASTLY + db 19,GASTLY + db 18,GASTLY + db 25,GASTLY + db 20,HAUNTER + db 25,HAUNTER + + db $00 + +TowerMons4: + db $0A + db 20,GASTLY + db 21,GASTLY + db 22,GASTLY + db 23,GASTLY + db 24,GASTLY + db 19,GASTLY + db 18,GASTLY + db 25,GASTLY + db 20,HAUNTER + db 25,HAUNTER + + db $00 + +TowerMons5: + db $0F + db 22,GASTLY + db 23,GASTLY + db 24,GASTLY + db 25,GASTLY + db 26,GASTLY + db 21,GASTLY + db 20,CUBONE + db 27,GASTLY + db 22,HAUNTER + db 27,HAUNTER + + db $00 + +TowerMons6: + db $0F + db 22,GASTLY + db 23,GASTLY + db 24,GASTLY + db 25,GASTLY + db 26,GASTLY + db 21,GASTLY + db 22,CUBONE + db 27,GASTLY + db 22,HAUNTER + db 27,HAUNTER + + db $00 + +TowerMons7: + db $14 + db 24,GASTLY + db 25,GASTLY + db 26,GASTLY + db 27,GASTLY + db 28,GASTLY + db 23,GASTLY + db 24,CUBONE + db 29,GASTLY + db 24,HAUNTER + db 29,HAUNTER + + db $00 + +Route13Mons: + db $0F + db 25,ODDISH + db 25,BELLSPROUT + db 28,PIDGEOTTO + db 28,PIDGEY + db 27,ODDISH + db 27,BELLSPROUT + db 29,GLOOM + db 29,WEEPINBELL + db 26,FARFETCH_D + db 31,FARFETCH_D + + db $03 + db 15,SLOWPOKE + db 15,SLOWPOKE + db 15,SLOWPOKE + db 15,SLOWPOKE + db 15,SLOWPOKE + db 15,SLOWPOKE + db 15,SLOWPOKE + db 15,SLOWPOKE + db 15,SLOWBRO + db 20,SLOWBRO + +Route14Mons: + db $0F + db 26,ODDISH + db 26,BELLSPROUT + db 24,VENONAT + db 30,PIDGEOTTO + db 28,ODDISH + db 28,BELLSPROUT + db 30,GLOOM + db 30,WEEPINBELL + db 27,VENONAT + db 30,VENOMOTH + + db $00 + +Route15Mons: + db $0F + db 26,ODDISH + db 26,BELLSPROUT + db 24,VENONAT + db 32,PIDGEOTTO + db 28,ODDISH + db 28,BELLSPROUT + db 30,GLOOM + db 30,WEEPINBELL + db 27,VENONAT + db 30,VENOMOTH + + db $00 + +Route16Mons: + db $19 + db 22,SPEAROW + db 22,DODUO + db 23,RATTATA + db 24,DODUO + db 24,RATTATA + db 26,DODUO + db 23,SPEAROW + db 24,FEAROW + db 25,RATICATE + db 26,RATICATE + + db $00 + +Route17Mons: + db $19 + db 26,DODUO + db 27,FEAROW + db 27,DODUO + db 28,DODUO + db 28,PONYTA + db 30,PONYTA + db 29,FEAROW + db 28,DODUO + db 32,PONYTA + db 29,DODRIO + + db $00 + +Route18Mons: + db $19 + db 22,SPEAROW + db 22,DODUO + db 23,RATTATA + db 24,DODUO + db 24,RATTATA + db 26,DODUO + db 23,SPEAROW + db 24,FEAROW + db 25,RATICATE + db 26,RATICATE + + db $00 + +ZoneMonsCenter: + db $1E + db 14,NIDORAN_M + db 36,NIDORAN_F + db 24,EXEGGCUTE + db 20,RHYHORN + db 23,NIDORINO + db 27,PARASECT + db 27,PARAS + db 32,PARASECT + db 22,TANGELA + db 7,CHANSEY + + db $00 + +ZoneMons1: + db $1E + db 21,NIDORAN_M + db 29,NIDORAN_F + db 22,EXEGGCUTE + db 21,TAUROS + db 32,NIDORINA + db 19,CUBONE + db 26,EXEGGCUTE + db 24,MAROWAK + db 21,CHANSEY + db 15,SCYTHER + + db $00 + +ZoneMons2: + db $1E + db 36,NIDORAN_M + db 14,NIDORAN_F + db 20,EXEGGCUTE + db 25,RHYHORN + db 23,NIDORINA + db 28,KANGASKHAN + db 16,CUBONE + db 33,KANGASKHAN + db 25,SCYTHER + db 15,PINSIR + + db $00 + +ZoneMons3: + db $1E + db 29,NIDORAN_M + db 21,NIDORAN_F + db 22,EXEGGCUTE + db 21,TAUROS + db 32,NIDORINO + db 19,CUBONE + db 26,EXEGGCUTE + db 24,MAROWAK + db 25,PINSIR + db 27,TANGELA + + db $00 + +WaterMons: + db $00 + + db $05 + db 5,TENTACOOL + db 10,TENTACOOL + db 15,TENTACOOL + db 5,TENTACOOL + db 10,TENTACOOL + db 15,TENTACOOL + db 20,TENTACOOL + db 30,TENTACOOL + db 35,TENTACOOL + db 40,TENTACOOL + +WaterMons: + db $00 + + db $05 + db 5,TENTACOOL + db 10,TENTACOOL + db 15,TENTACOOL + db 5,TENTACOOL + db 10,TENTACOOL + db 15,TENTACOOL + db 20,TENTACOOL + db 30,TENTACOOL + db 35,TENTACOOL + db 40,TENTACOOL + +IslandMons1: + db $0F + db 18,ZUBAT + db 25,KRABBY + db 27,KRABBY + db 27,ZUBAT + db 36,ZUBAT + db 28,SLOWPOKE + db 30,SLOWPOKE + db 9,ZUBAT + db 27,GOLBAT + db 36,GOLBAT + + db $00 + +IslandMonsB1: + db $0A + db 27,ZUBAT + db 26,KRABBY + db 36,ZUBAT + db 28,KRABBY + db 27,GOLBAT + db 29,SLOWPOKE + db 18,ZUBAT + db 28,KINGLER + db 22,SEEL + db 26,SEEL + + db $00 + +IslandMonsB2: + db $0A + db 27,ZUBAT + db 27,KRABBY + db 36,ZUBAT + db 27,GOLBAT + db 28,KINGLER + db 24,SEEL + db 29,KRABBY + db 36,GOLBAT + db 31,SLOWPOKE + db 31,SLOWBRO + + db $00 + +IslandMonsB3: + db $0A + db 27,GOLBAT + db 36,ZUBAT + db 29,KRABBY + db 27,ZUBAT + db 30,KINGLER + db 26,SEEL + db 31,KRABBY + db 30,SEEL + db 28,DEWGONG + db 32,DEWGONG + + db $05 + db 25,TENTACOOL + db 30,TENTACOOL + db 20,TENTACOOL + db 30,STARYU + db 35,TENTACOOL + db 30,STARYU + db 40,TENTACOOL + db 30,STARYU + db 30,STARYU + db 30,STARYU + +IslandMonsB4: + db $0A + db 36,GOLBAT + db 36,ZUBAT + db 30,KRABBY + db 32,KINGLER + db 28,SEEL + db 32,SEEL + db 27,GOLBAT + db 45,ZUBAT + db 30,DEWGONG + db 34,DEWGONG + + db $05 + db 25,TENTACOOL + db 30,TENTACOOL + db 20,TENTACOOL + db 30,STARYU + db 35,TENTACOOL + db 30,STARYU + db 40,TENTACOOL + db 30,STARYU + db 30,STARYU + db 30,STARYU + +MansionMons1: + db $0A + db 34,RATTATA + db 34,RATICATE + db 23,GRIMER + db 26,GROWLITHE + db 37,RATTATA + db 37,RATICATE + db 30,GROWLITHE + db 26,GRIMER + db 34,GROWLITHE + db 38,GROWLITHE + + db $00 + +MansionMons2: + db $0A + db 37,RATTATA + db 37,RATICATE + db 26,GRIMER + db 29,GRIMER + db 40,RATTATA + db 40,RATICATE + db 32,GRIMER + db 35,GRIMER + db 35,MUK + db 38,MUK + + db $00 + +MansionMons3: + db $0A + db 40,RATTATA + db 40,RATICATE + db 32,GRIMER + db 35,GRIMER + db 43,RATTATA + db 43,RATICATE + db 38,GRIMER + db 38,GRIMER + db 38,MUK + db 41,MUK + + db $00 + +MansionMonsB1: + db $0A + db 35,GRIMER + db 38,GRIMER + db 37,RATICATE + db 40,RATICATE + db 41,MUK + db 43,RATICATE + db 24,DITTO + db 46,RATICATE + db 18,DITTO + db 12,DITTO + + db $00 + +Route21Mons: + db $19 + db 15,PIDGEY + db 13,RATTATA + db 13,PIDGEY + db 11,PIDGEY + db 17,PIDGEY + db 15,RATTATA + db 15,RATICATE + db 17,PIDGEOTTO + db 19,PIDGEOTTO + db 15,PIDGEOTTO + + db $05 + db 5,TENTACOOL + db 10,TENTACOOL + db 15,TENTACOOL + db 5,TENTACOOL + db 10,TENTACOOL + db 15,TENTACOOL + db 20,TENTACOOL + db 30,TENTACOOL + db 35,TENTACOOL + db 40,TENTACOOL + +DungeonMons1: + db $0A + db 50,GOLBAT + db 55,GOLBAT + db 45,GRAVELER + db 55,GLOOM + db 55,WEEPINBELL + db 52,SANDSLASH + db 54,VENOMOTH + db 54,PARASECT + db 55,DITTO + db 60,DITTO + + db $00 + +DungeonMons2: + db $0F + db 52,GOLBAT + db 57,GOLBAT + db 50,GRAVELER + db 56,SANDSLASH + db 50,RHYHORN + db 60,DITTO + db 58,GLOOM + db 58,WEEPINBELL + db 60,RHYDON + db 58,RHYDON + + db $00 + +DungeonMonsB1: + db $19 + db 54,GOLBAT + db 59,GOLBAT + db 55,GRAVELER + db 52,RHYHORN + db 62,RHYDON + db 60,DITTO + db 56,CHANSEY + db 65,DITTO + db 55,LICKITUNG + db 50,LICKITUNG + + db $00 + +PowerPlantMons: + db $0A + db 30,MAGNEMITE + db 35,MAGNEMITE + db 33,MAGNETON + db 33,VOLTORB + db 37,VOLTORB + db 33,GRIMER + db 37,GRIMER + db 38,MAGNETON + db 33,MUK + db 37,MUK + + db $00 + +Route23Mons: + db $0A + db 41,NIDORINO + db 41,NIDORINA + db 36,MANKEY + db 44,NIDORINO + db 44,NIDORINA + db 40,FEAROW + db 41,MANKEY + db 45,FEAROW + db 41,PRIMEAPE + db 46,PRIMEAPE + + db $00 + +PlateauMons2: + db $0A + db 31,GEODUDE + db 36,GEODUDE + db 41,GEODUDE + db 44,ZUBAT + db 39,GOLBAT + db 44,GRAVELER + db 45,ONIX + db 47,ONIX + db 39,MACHOKE + db 42,MACHOKE + + db $00 + +PlateauMons3: + db $0F + db 36,GEODUDE + db 44,GOLBAT + db 41,GEODUDE + db 49,ONIX + db 46,GEODUDE + db 41,GRAVELER + db 42,MACHOKE + db 45,MACHOKE + db 47,GRAVELER + db 47,GRAVELER + + db $00 + +PlateauMons1: + db $0F + db 26,GEODUDE + db 31,GEODUDE + db 36,GEODUDE + db 39,ZUBAT + db 44,ZUBAT + db 41,GEODUDE + db 43,ONIX + db 45,ONIX + db 41,GRAVELER + db 47,GRAVELER + + db $00 + +CaveMons: + db $14 + db 18,DIGLETT + db 19,DIGLETT + db 17,DIGLETT + db 20,DIGLETT + db 16,DIGLETT + db 15,DIGLETT + db 21,DIGLETT + db 22,DIGLETT + db 29,DUGTRIO + db 31,DUGTRIO + + db $00 + +ENDC + +GetItemUse: ;$D5C7 + ld a,1 + ld [$cd6a],a + ld a,[$cf91] ;contains item_ID + cp a,HM_01 + jp nc,ItemUseTMHM + ld hl,ItemUsePtrTable + dec a + add a + ld c,a + ld b,0 + add hl,bc + ld a,[hli] + ld h,[hl] + ld l,a + jp [hl] + +ItemUsePtrTable: ;$D5E1 + dw ItemUseBall ;$5687 masterball + dw ItemUseBall ;$5687 ultraball + dw ItemUseBall ;$5687 greatball + dw ItemUseBall ;$5687 pokeball + dw ItemUseTownMap ;$5968 TownMap + dw $5977 ;ItemUseBicycle + dw $59B4 ;ItemUseSurfBoard (UNUSED, glitchy!) + dw ItemUseBall ;$5687 Safariball + dw $5A56 + dw $5A5B + dw $5ABB + dw $5ABB + dw $5ABB + dw $5ABB + dw $5ABB + dw $5ABB + dw $5ABB + dw $5ABB + dw $5ABB + dw $5ABB + dw $5F52 + dw $5F67 + dw $6476 + dw $6476 + dw $6476 + dw $6476 + dw $6476 + dw $6476 + dw $5FAF + dw $6003 + dw $6476 + dw $5A5B + dw $5A5B + dw $5A5B + dw $5AB4 + dw $5AB4 + dw $5AB4 + dw $5AB4 + dw $5AB4 + dw $5AB4 + dw $6476 + dw $6476 + dw $6476 + dw $6476 + dw $6476 + dw $6013 + dw $5A5B + dw $6022 + dw $6476 + dw $6476 + dw $60CD + dw $5ABB + dw $5ABB + dw $5ABB + dw $60DC + dw $60EB + dw $60F0 + dw $60F5 + dw $6476 + dw $5ABB + dw $5ABB + dw $5ABB + dw $6476 + dw $6476 + dw $6104 + dw $6104 + dw $6104 + dw $6104 + dw $623A + dw $62DE + dw $62E1 + dw $6476 + dw $6140 + dw $6476 + dw $6476 + dw $624C + dw GoodRodCode ;$6259 + dw $6283 + dw $6317 + dw $631E + dw $631E + dw $631E + dw $631E + +ItemUseBall: ;03:5687 + ld a,[W_ISINBATTLE] + and a + jp z,ItemUseNotTime ; not in battle + dec a + jp nz,$658b ; in trainer battle + ld a,[W_BATTLETYPE] + dec a + jr z,.UseBall\@ + ld a,[W_NUMINPARTY] ;is Party full? + cp a,6 + jr nz,.UseBall\@ + ld a,[W_NUMINBOX] ;is Box full? + cp a,20 + jp z,$65b1 +.UseBall\@ ;$56a7 +;ok, you can use a ball + xor a + ld [$d11c],a + ld a,[W_BATTLETYPE] + cp a,2 ;SafariBattle + jr nz,.next2\@ + ; remove a Safari Ball from inventory + ld hl,W_NUMSAFARIBALLS + dec [hl] +.next2\@ ;$56b6 + call GoPAL_SET_CF1C + ld a,$43 + ld [$d11e],a + call $3725 ;restore screenBuffer from Backup + ld hl,ItemUseText00 + call PrintText + ld hl,$583a + ld b,$0f + call Bankswitch + ld b,$10 + jp z,$5801 + ld a,[W_BATTLETYPE] + dec a + jr nz,.next3\@ + ld hl,W_GRASSRATE ;backups wildMon data + ld de,W_PLAYERNAME + ld bc,11 + call CopyData + jp .BallSuccess\@ ;$578b +.next3\@ ;$56e9 + ld a,[W_CURMAP] + cp a,$93 ;MonTower 6F + jr nz,.next4\@ + ld a,[$cfd8] + cp a,MAROWAK + ld b,$10 + jp z,$5801 +.next4\@ ;$56fa + call $3e5c ;GetRandom + ld b,a + ld hl,$cf91 + ld a,[hl] + cp a,MASTER_BALL;1 + jp z,.BallSuccess\@ ;$578b + cp a,POKE_BALL ;4 + jr z,.next5\@ + ld a,200 + cp b + jr c,.next4\@ ;get only numbers < 200 + ld a,[hl] + cp a,GREAT_BALL ;3 + jr z,.next5\@ + ld a,150 ;get only numbers < 150 + cp b + jr c,.next4\@ +.next5\@ ;$571a + ld a,[$cfe9] ;status ailments + and a + jr z,.next6\@ + and a,(FRZ + SLP) ;is frozen and/or asleep? + ld c,12 + jr z,.noAilments\@ + ld c,25 +.noAilments\@ ;$5728 + ld a,b + sub c + jp c,.BallSuccess\@ ;$578b + ld b,a +.next6\@ ;$572e + push bc ;save RANDOM number + xor a + ld [$ff96],a + ld hl,$cff4 ;enemy: Max HP + ld a,[hli] + ld [$ff97],a + ld a,[hl] + ld [$ff98],a + ld a,255 + ld [$ff99],a + call $38ac ;Multiply: MaxHP * 255 + ld a,[$cf91] + cp a,GREAT_BALL + ld a,12 ;any other BallFactor + jr nz,.next7\@ + ld a,8 +.next7\@ ;$574d + ld [$ff99],a + ld b,4 ;GreatBall's BallFactor + call $38b9 ;Divide + ld hl,$cfe6 ;currentHP + ld a,[hli] + ld b,a + ld a,[hl] + srl b ;explanation: + rr a ;we have a 16 bit value + srl b ;equal to [b << 8 | a]. + rr a ;This number is divided + and a ;by 4. The result is + jr nz,.next8\@ ;8 bit (reg. a). Always + inc a ;bigger than zero. +.next8\@ ;$5766 + ld [$ff99],a + ld b,4 + call $38b9 ;Divide + ld a,[$ff97] + and a + jr z,.next9\@ + ld a,255 + ld [$ff98],a +.next9\@ ;$5776 + pop bc + ld a,[$d007] ;enemy: Catch Rate + cp b + jr c,.next10\@ + ld a,[$ff97] + and a + jr nz,.BallSuccess\@ + call $3e5c ;get random number + ld b,a + ld a,[$ff98] + cp b + jr c,.next10\@ +.BallSuccess\@ ;$578b + jr .BallSuccess2\@ +.next10\@ ;$578d + ld a,[$ff98] + ld [$d11e],a + xor a + ld [$ff96],a + ld [$ff97],a + ld a,[$d007] ;enemy: Catch Rate + ld [$ff98],a + ld a,100 + ld [$ff99],a + call $38ac ;Multiply: CatchRate * 100 + ld a,[$cf91] + ld b,255 + cp a,POKE_BALL + jr z,.next11\@ + ld b,200 + cp a,GREAT_BALL + jr z,.next11\@ + ld b,150 + cp a,ULTRA_BALL + jr z,.next11\@ +.next11\@ ;$57b8 + ld a,b + ld [$ff99],a + ld b,4 + call $38b9 ;Divide + ld a,[$ff97] + and a + ld b,$63 + jr nz,.next12\@ + ld a,[$d11e] + ld [$ff99],a + call $38ac + ld a,255 + ld [$ff99],a + ld b,4 + call $38b9 + ld a,[$cfe9] ;status ailments + and a + jr z,.next13\@ + and a,(FRZ + SLP) + ld b,5 + jr z,.next14\@ + ld b,10 +.next14\@ ;$57e6 + ld a,[$ff98] + add b + ld [$ff98],a +.next13\@ ;$57eb + ld a,[$ff98] + cp a,10 + ld b,$20 + jr c,.next12\@ + cp a,30 + ld b,$61 + jr c,.next12\@ + cp a,70 + ld b,$62 + jr c,.next12\@ + ld b,$63 +.next12\@ ;$5801 + ld a,b + ld [$d11e],a +.BallSuccess2\@ ;$5805 + ld c,20 + call DelayFrames + ld a,$c1 + ld [$d07c],a + xor a + ld [$fff3],a + ld [$cc5b],a + ld [$d05b],a + ld a,[$cf92] + push af + ld a,[$cf91] + push af + ld a,$08 ;probably animations + call Predef + pop af + ld [$cf91],a + pop af + ld [$cf92],a + ld a,[$d11e] + cp a,$10 + ld hl,ItemUseBallText00 + jp z,.printText0\@ + cp a,$20 + ld hl,ItemUseBallText01 + jp z,.printText0\@ + cp a,$61 + ld hl,ItemUseBallText02 + jp z,.printText0\@ + cp a,$62 + ld hl,ItemUseBallText03 + jp z,.printText0\@ + cp a,$63 + ld hl,ItemUseBallText04 + jp z,.printText0\@ + ld hl,$cfe6 ;current HP + ld a,[hli] + push af + ld a,[hli] + push af ;backup currentHP... + inc hl + ld a,[hl] + push af ;...and status ailments + push hl + ld hl,$d069 + bit 3,[hl] + jr z,.next15\@ + ld a,$4c + ld [$cfd8],a + jr .next16\@ +.next15\@ ;$5871 + set 3,[hl] + ld hl,$cceb + ld a,[$cff1] + ld [hli],a + ld a,[$cff2] + ld [hl],a +.next16\@ ;$587e + ld a,[$cf91] + push af + ld a,[$cfd8] + ld [$cf91],a + ld a,[$cff3] + ld [$d127],a + ld hl,$6b01 + ld b,$0f + call Bankswitch + pop af + ld [$cf91],a + pop hl + pop af + ld [hld],a + dec hl + pop af + ld [hld],a + pop af + ld [hl],a + ld a,[$cfe5] ;enemy + ld [$d11c],a + ld [$cf91],a + ld [$d11e],a + ld a,[W_BATTLETYPE] + dec a + jr z,.printText1\@ + ld hl,ItemUseBallText05 + call PrintText + ld a,$3a ;convert order: Internal->Dex + call Predef + ld a,[$d11e] + dec a + ld c,a + ld b,2 + ld hl,$d2f7 ;Dex_own_flags (pokemon) + ld a,$10 + call Predef ;check Dex flag (own already or not) + ld a,c + push af + ld a,[$d11e] + dec a + ld c,a + ld b,1 + ld a,$10 ;set Dex_own_flag? + call Predef + pop af + and a + jr nz,.checkParty\@ + ld hl,ItemUseBallText06 + call PrintText + call CleanLCD_OAM + ld a,[$cfe5] ;caught mon_ID + ld [$d11e],a + ld a,$3d + call Predef +.checkParty\@ ;$58f4 + ld a,[W_NUMINPARTY] + cp a,6 ;is party full? + jr z,.sendToBox\@ + xor a + ld [$cc49],a + call CleanLCD_OAM + call AddPokemonToParty ;add mon to Party + jr .End\@ +.sendToBox\@ ;$5907 + call CleanLCD_OAM + call $67a4 + ld hl,ItemUseBallText07 + ld a,[$d7f1] + bit 0,a ;already met Bill? + jr nz,.sendToBox2\@ + ld hl,ItemUseBallText08 +.sendToBox2\@ ;$591a + call PrintText + jr .End\@ +.printText1\@ ;$591f + ld hl,ItemUseBallText05 +.printText0\@ ;$5922 + call PrintText + call CleanLCD_OAM +.End\@ ;$5928 + ld a,[W_BATTLETYPE] + and a + ret nz + ld hl,$d31d + inc a + ld [$cf96],a + jp $2bbb ;remove ITEM (XXX) +ItemUseBallText00: +;"It dodged the thrown ball!" +;"This pokemon can't be caught" + TX_FAR _ItemUseBallText00 + db "@" +ItemUseBallText01: +;"You missed the pokemon!" + TX_FAR _ItemUseBallText01 + db "@" +ItemUseBallText02: +;"Darn! The pokemon broke free!" + TX_FAR _ItemUseBallText02 + db "@" +ItemUseBallText03: +;"Aww! It appeared to be caught!" + TX_FAR _ItemUseBallText03 + db "@" +ItemUseBallText04: +;"Shoot! It was so close too!" + TX_FAR _ItemUseBallText04 + db "@" +ItemUseBallText05: +;"All right! {MonName} was caught!" +;play sound + TX_FAR _ItemUseBallText05 + db $12,$06 + db "@" +ItemUseBallText07: +;"X was transferred to Bill's PC" + TX_FAR _ItemUseBallText07 + db "@" +ItemUseBallText08: +;"X was transferred to someone's PC" + TX_FAR _ItemUseBallText08 + db "@" + +ItemUseBallText06: +;"New DEX data will be added..." +;play sound + TX_FAR _ItemUseBallText06 + db $13,$06 + db "@" + +ItemUseTownMap: ;03:5968 + ld a,[W_ISINBATTLE] ;in-battle or outside + and a + jp nz,ItemUseNotTime ;OAK: "this isn't the time..." + +INCBIN "baserom.gbc",$D96F,$E259 - $D96F + +GoodRodCode: ; 6259 + call $62B4 + jp c,ItemUseNotTime +Next625F: + call GenRandom + srl a + jr c,Next6278 + and 3 + cp 2 + jr nc,Next625F + ; choose which monster appears + ld hl,GoodRodMons + add a,a + ld c,a + ld b,0 + add hl,bc + ld b,[hl] + inc hl + ld c,[hl] + and a +Next6278: + ld a,0 + rla + xor 1 + jr Next628E + +GoodRodMons: + db 10,GOLDEEN + db 10,POLIWAG + +Next6283: + call $62B4 + jp c,ItemUseNotTime +Next6289: + call $68EA + ld a,e +Next628E: + ld [$CD3D],a + dec a + jr nz,.next\@ + ld a,1 + ld [$D05F],a + ld a,b + ld [$D127],a + ld a,c + ld [$D059],a +.next\@ + ld hl,$D700 + ld a,[hl] + push af + push hl + ld [hl],0 + ld b,$1C + ld hl,$47B6 + call Bankswitch + pop hl + pop af + ld [hl],a + ret + +INCBIN "baserom.gbc",$E2B4,$E479 - $E2B4 + +ItemUseTMHM: ;03:6479 + INCBIN "baserom.gbc",$E479,$E581 - $E479 +ItemUseNotTime: ;03:6581 + INCBIN "baserom.gbc",$E581,$E5E8 - $E581 +;ItemUseTexts: ;03:65e8 +ItemUseText00: ;03:65e8 + TX_FAR _ItemUseText001 + db $05 + TX_FAR _ItemUseText002 + db "@" +INCBIN "baserom.gbc",$E5F2,$E919 - $E5F2 + +; super rod data +; map, pointer to fishing group +SuperRodData: ; 6919 + dbw $00,FishingGroup1 + dbw $01,FishingGroup1 + dbw $03,FishingGroup3 + dbw $05,FishingGroup4 + dbw $06,FishingGroup5 + dbw $07,FishingGroup10 + dbw $08,FishingGroup8 + dbw $0F,FishingGroup3 + dbw $11,FishingGroup4 + dbw $15,FishingGroup5 + dbw $16,FishingGroup4 + dbw $17,FishingGroup7 + dbw $18,FishingGroup7 + dbw $1C,FishingGroup7 + dbw $1D,FishingGroup7 + dbw $1E,FishingGroup8 + dbw $1F,FishingGroup8 + dbw $20,FishingGroup8 + dbw $21,FishingGroup2 + dbw $22,FishingGroup9 + dbw $23,FishingGroup3 + dbw $24,FishingGroup3 + dbw $41,FishingGroup3 + dbw $5E,FishingGroup4 + dbw $A1,FishingGroup8 + dbw $A2,FishingGroup8 + dbw $D9,FishingGroup6 + dbw $DA,FishingGroup6 + dbw $DB,FishingGroup6 + dbw $DC,FishingGroup6 + dbw $E2,FishingGroup9 + dbw $E3,FishingGroup9 + dbw $E4,FishingGroup9 + db $FF + +; fishing groups +; number of monsters, followed by level/monster pairs +FishingGroup1: + db 2 + db 15,TENTACOOL + db 15,POLIWAG + +FishingGroup2: + db 2 + db 15,GOLDEEN + db 15,POLIWAG + +FishingGroup3: + db 3 + db 15,PSYDUCK + db 15,GOLDEEN + db 15,KRABBY + +FishingGroup4: + db 2 + db 15,KRABBY + db 15,SHELLDER + +FishingGroup5: + db 2 + db 23,POLIWHIRL + db 15,SLOWPOKE + +FishingGroup6: + db 4 + db 15,DRATINI + db 15,KRABBY + db 15,PSYDUCK + db 15,SLOWPOKE + +FishingGroup7: + db 4 + db 5,TENTACOOL + db 15,KRABBY + db 15,GOLDEEN + db 15,MAGIKARP + +FishingGroup8: + db 4 + db 15,STARYU + db 15,HORSEA + db 15,SHELLDER + db 15,GOLDEEN + +FishingGroup9: + db 4 + db 23,SLOWBRO + db 23,SEAKING + db 23,KINGLER + db 23,SEADRA + +FishingGroup10: + db 4 + db 23,SEAKING + db 15,KRABBY + db 15,GOLDEEN + db 15,MAGIKARP + +INCBIN "baserom.gbc",$E9C5,$10000 - $E9C5 + +SECTION "bank4",DATA,BANK[$4] + +INCBIN "baserom.gbc",$10000,$2EDE + +RedPicFront: + INCBIN "pic/trainer/red.pic" +ShrinkPic1: + INCBIN "pic/trainer/shrink1.pic" +ShrinkPic2: + INCBIN "pic/trainer/shrink2.pic" + +INCBIN "baserom.gbc",$13074,$13A8F-$13074 + +GenRandom_: ; 7A8F +; generate a random 16-bit integer and store it at $FFD3,$FFD4 + ld a,[rDIV] + ld b,a + ld a,[H_RAND1] + adc b + ld [H_RAND1],a + ld a,[rDIV] + ld b,a + ld a,[H_RAND2] + sbc b + ld [H_RAND2],a + ret + +SECTION "bank5",DATA,BANK[$5] + +INCBIN "baserom.gbc",$14000,$4000 + +SECTION "bank6",DATA,BANK[$6] + +CeladonCity_h: ; 0x18000 + db $00 ; tileset + db $12,$19 ; dimensions + dw CeladonCityBlocks, CeladonCityTexts, CeladonCityScript ; blocks, texts, scripts + db WEST | EAST ; connections + + ; connection data + + db ROUTE_16 + dw $4B95, $C7C1 ; pointers (connected, current) (strip) + db $09, $14 ; bigness, width + db $F8, $27 ; alignments (y, x) + dw $C716 ; window + + db ROUTE_7 + dw $4051, $C7DD ; pointers (connected, current) (strip) + db $09, $0A ; bigness, width + db $F8, $00 ; alignments (y, x) + dw $C6F9 ; window + + ; end connection data + + dw CeladonCityObject ; objects + +CeladonCityObject: ; 0x18022 (size=189) + db $f ; border tile + + db $d ; warps + db $d, $8, $0, CELADON_MART_1 + db $d, $a, $2, CELADON_MART_1 + db $9, $18, $0, CELADON_MANSION_1 + db $3, $18, $2, CELADON_MANSION_1 + db $3, $19, $2, CELADON_MANSION_1 + db $9, $29, $0, CELADON_POKECENTER + db $1b, $c, $0, CELADON_GYM + db $13, $1c, $0, GAME_CORNER + db $13, $27, $0, CELADON_MART_5 + db $13, $21, $0, CELADONPRIZE_ROOM + db $1b, $1f, $0, CELADON_DINER + db $1b, $23, $0, CELADON_HOUSE + db $1b, $2b, $0, CELADON_HOTEL + + db $9 ; signs + db $f, $1b, $a ; CeladonCityText10 + db $f, $13, $b ; CeladonCityText11 + db $9, $2a, $c ; CeladonCityText12 + db $1d, $d, $d ; CeladonCityText13 + db $9, $15, $e ; CeladonCityText14 + db $d, $c, $f ; CeladonCityText15 + db $15, $27, $10 ; CeladonCityText16 + db $15, $21, $11 ; CeladonCityText17 + db $15, $1b, $12 ; CeladonCityText18 + + db $9 ; people + db SPRITE_LITTLE_GIRL, $11 + 4, $8 + 4, $fe, $0, $1 ; person + db SPRITE_OLD_PERSON, $1c + 4, $b + 4, $ff, $d1, $2 ; person + db SPRITE_GIRL, $13 + 4, $e + 4, $fe, $1, $3 ; person + db SPRITE_OLD_PERSON, $16 + 4, $19 + 4, $ff, $d0, $4 ; person + db SPRITE_OLD_PERSON, $10 + 4, $16 + 4, $ff, $d0, $5 ; person + db SPRITE_FISHER2, $c + 4, $20 + 4, $ff, $d2, $6 ; person + db SPRITE_SLOWBRO, $c + 4, $1e + 4, $ff, $d3, $7 ; person + db SPRITE_ROCKET, $1d + 4, $20 + 4, $fe, $2, $8 ; person + db SPRITE_ROCKET, $e + 4, $2a + 4, $fe, $2, $9 ; person + + ; warp-to + EVENT_DISP $19, $d, $8 ; CELADON_MART_1 + EVENT_DISP $19, $d, $a ; CELADON_MART_1 + EVENT_DISP $19, $9, $18 ; CELADON_MANSION_1 + EVENT_DISP $19, $3, $18 ; CELADON_MANSION_1 + EVENT_DISP $19, $3, $19 ; CELADON_MANSION_1 + EVENT_DISP $19, $9, $29 ; CELADON_POKECENTER + EVENT_DISP $19, $1b, $c ; CELADON_GYM + EVENT_DISP $19, $13, $1c ; GAME_CORNER + EVENT_DISP $19, $13, $27 ; CELADON_MART_5 + EVENT_DISP $19, $13, $21 ; CELADONPRIZE_ROOM + EVENT_DISP $19, $1b, $1f ; CELADON_DINER + EVENT_DISP $19, $1b, $23 ; CELADON_HOUSE + EVENT_DISP $19, $1b, $2b ; CELADON_HOTEL + +CeladonCityBlocks: ; 450 + INCBIN "maps/celadoncity.blk" + +PalletTown_h: + db $00 ; tileset + db $09,$0A ; dimensions + dw PalletTownBlocks, PalletTownTexts, PalletTownScript + db NORTH | SOUTH ; connections + + db $0C ; Route 1 + dw $4192,$C6EB ; pointers + db $0A,$0A ; bigness, width + db $23,$00 ; alignments + dw $C809 ; window + + db $20 ; Route 21 + dw $506D,$C7AB ; pointers + db $0A,$0A ; bigness, width + db $00,$00 ; alignments + dw $C6F9 ; window + + dw PalletTownObject + +PalletTownObject: ; 0x182c3 (size=58) + db $b ; border tile + + db $3 ; warps + db $5, $5, $0, REDS_HOUSE_1F + db $5, $d, $0, BLUES_HOUSE + db $b, $c, $1, OAKS_LAB + + db $4 ; signs + db $d, $d, $4 ; PalletTownText4 + db $9, $7, $5 ; PalletTownText5 + db $5, $3, $6 ; PalletTownText6 + db $5, $b, $7 ; PalletTownText7 + + db $3 ; people + db SPRITE_OAK, $5 + 4, $8 + 4, $ff, $ff, $1 ; person + db SPRITE_GIRL, $8 + 4, $3 + 4, $fe, $0, $2 ; person + db SPRITE_FISHER2, $e + 4, $b + 4, $fe, $0, $3 ; person + + ; warp-to + EVENT_DISP $a, $5, $5 ; REDS_HOUSE_1F + EVENT_DISP $a, $5, $d ; BLUES_HOUSE + EVENT_DISP $a, $b, $c ; OAKS_LAB + +PalletTownBlocks: ; 0x182fd + INCBIN "maps/pallettown.blk" + +ViridianCity_h: ; 0x18357 to 0x18384 (45 bytes) (bank=6) (id=1) + db $00 ; tileset + db $12, $14 ; dimensions (y, x) + dw ViridianCityBlocks, ViridianCityTexts, ViridianCityScript ; blocks, texts, scripts + db NORTH | SOUTH | WEST ; connections + + ; connections data + + db ROUTE_2 + dw $41C8, $C6F0 ; pointers (connected, current) (strip) + db $0a, $0a ; bigness, width + db $47, $f6 ; alignments (y, x) + dw $c929 ; window + + db ROUTE_1 + dw $40fc, $c912 ; pointers (connected, current) (strip) + db $0a, $0a ; bigness, width + db $00, $f6 ; alignments (y, x) + dw $c6f9 ; window + + db ROUTE_22 + dw $404e, $c79e ; pointers (connected, current) (strip) + db $09, $14 ; bigness, width + db $f8, $27 ; alignments (y, x) + dw $c716 ; window + + ; end connection data + + dw ViridianCityObject ; objects + +ViridianCityObject: ; 0x18384 (size=104) + db $f ; border tile + + db $5 ; warps + db $19, $17, $0, VIRIDIAN_POKECENTER + db $13, $1d, $0, VIRIDIAN_MART + db $f, $15, $0, VIRIDIAN_SCHOOL + db $9, $15, $0, VIRIDIAN_HOUSE + db $7, $20, $0, VIRIDIAN_GYM + + db $6 ; signs + db $11, $11, $8 ; ViridianCityText8 + db $1, $13, $9 ; ViridianCityText9 + db $1d, $15, $a ; ViridianCityText10 + db $13, $1e, $b ; ViridianCityText11 + db $19, $18, $c ; ViridianCityText12 + db $7, $1b, $d ; ViridianCityText13 + + db $7 ; people + db SPRITE_BUG_CATCHER, $14 + 4, $d + 4, $fe, $0, $1 ; person + db SPRITE_GAMBLER, $8 + 4, $1e + 4, $ff, $ff, $2 ; person + db SPRITE_BUG_CATCHER, $19 + 4, $1e + 4, $fe, $0, $3 ; person + db SPRITE_GIRL, $9 + 4, $11 + 4, $ff, $d3, $4 ; person + db SPRITE_LYING_OLD_MAN, $9 + 4, $12 + 4, $ff, $ff, $5 ; person + db SPRITE_FISHER2, $17 + 4, $6 + 4, $ff, $d0, $6 ; person + db SPRITE_GAMBLER, $5 + 4, $11 + 4, $fe, $2, $7 ; person + + ; warp-to + EVENT_DISP $14, $19, $17 ; VIRIDIAN_POKECENTER + EVENT_DISP $14, $13, $1d ; VIRIDIAN_MART + EVENT_DISP $14, $f, $15 ; VIRIDIAN_SCHOOL + EVENT_DISP $14, $9, $15 ; VIRIDIAN_HOUSE + EVENT_DISP $14, $7, $20 ; VIRIDIAN_GYM + +ViridianCityBlocks: ; 360 + INCBIN "maps/viridiancity.blk" + +PewterCity_h: ; 0x18554 to 0x18576 (34 bytes) (bank=6) (id=2) + db $00 ; tileset + db $12, $14 ; dimensions (y, x) + dw PewterCityBlocks, PewterCityTexts, PewterCityScript ; blocks, texts, scripts + db SOUTH | EAST ; connections + + ; connections data + + db ROUTE_2 + dw $407e, $c912 ; pointers (connected, current) (strip) + db $0a, $0a ; bigness, width + db $00, $f6 ; alignments (y, x) + dw $c6f9 ; window + + db ROUTE_3 + dw $4255, $c7b5 ; pointers (connected, current) (strip) + db $09, $23 ; bigness, width + db $f8, $00 ; alignments (y, x) + dw $c712 ; window + + ; end connection data + + dw PewterCityObject ; objects + +INCBIN "baserom.gbc",$18576,$18577 - $18576 + +PewterCityObject: ; 0x18577 (size=111) + db $a ; border tile + + db $7 ; warps + db $7, $e, $0, MUSEUM_1F + db $5, $13, $2, MUSEUM_1F + db $11, $10, $0, PEWTER_GYM + db $d, $1d, $0, PEWTER_HOUSE_1 + db $11, $17, $0, PEWTER_MART + db $1d, $7, $0, PEWTER_HOUSE_2 + db $19, $d, $0, PEWTER_POKECENTER + + db $7 ; signs + db $1d, $13, $6 ; PewterCityText6 + db $13, $21, $7 ; PewterCityText7 + db $11, $18, $8 ; PewterCityText8 + db $19, $e, $9 ; PewterCityText9 + db $9, $f, $a ; PewterCityText10 + db $11, $b, $b ; PewterCityText11 + db $17, $19, $c ; PewterCityText12 + + db $5 ; people + db SPRITE_LASS, $f + 4, $8 + 4, $ff, $ff, $1 ; person + db SPRITE_BLACK_HAIR_BOY_1, $19 + 4, $11 + 4, $ff, $ff, $2 ; person + db SPRITE_BLACK_HAIR_BOY_2, $11 + 4, $1b + 4, $ff, $ff, $3 ; person + db SPRITE_BLACK_HAIR_BOY_2, $19 + 4, $1a + 4, $fe, $2, $4 ; person + db SPRITE_BUG_CATCHER, $10 + 4, $23 + 4, $ff, $d0, $5 ; person + + ; warp-to + EVENT_DISP $14, $7, $e ; MUSEUM_1F + EVENT_DISP $14, $5, $13 ; MUSEUM_1F + EVENT_DISP $14, $11, $10 ; PEWTER_GYM + EVENT_DISP $14, $d, $1d ; PEWTER_HOUSE_1 + EVENT_DISP $14, $11, $17 ; PEWTER_MART + EVENT_DISP $14, $1d, $7 ; PEWTER_HOUSE_2 + EVENT_DISP $14, $19, $d ; PEWTER_POKECENTER + +PewterCityBlocks: ; 360 + INCBIN "maps/pewtercity.blk" + +CeruleanCity_h: ; 0x1874e to 0x18786 (56 bytes) (bank=6) (id=3) + db $00 ; tileset + db $12, $14 ; dimensions (y, x) + dw CeruleanCityBlocks, CeruleanCityTexts, CeruleanCityScript ; blocks, texts, scripts + db NORTH | SOUTH | WEST | EAST ; connections + + ; connections data + + db ROUTE_24 + dw $477d, $c6f0 ; pointers (connected, current) (strip) + db $0a, $0a ; bigness, width + db $23, $f6 ; alignments (y, x) + dw $c809 ; window + + db ROUTE_5 + dw $45d2, $c912 ; pointers (connected, current) (strip) + db $0a, $0a ; bigness, width + db $00, $f6 ; alignments (y, x) + dw $c6f9 ; window + + db ROUTE_4 + dw $4416, $c79e ; pointers (connected, current) (strip) + db $09, $2d ; bigness, width + db $f8, $59 ; alignments (y, x) + dw $c748 ; window + + db ROUTE_9 + dw $46fe, $c7b5 ; pointers (connected, current) (strip) + db $09, $1e ; bigness, width + db $f8, $00 ; alignments (y, x) + dw $c70d ; window + + ; end connection data + + dw CeruleanCityObject ; objects + +CeruleanCityObject: ; 0x18786 (size=170) + db $f ; border tile + + db $a ; warps + db $b, $1b, $0, TRASHED_HOUSE + db $f, $d, $0, CERULEAN_HOUSE + db $11, $13, $0, CERULEAN_POKECENTER + db $13, $1e, $0, CERULEAN_GYM + db $19, $d, $0, BIKE_SHOP + db $19, $19, $0, CERULEAN_MART + db $b, $4, $0, UNKNOWN_DUNGEON_1 + db $9, $1b, $2, TRASHED_HOUSE + db $b, $9, $1, CERULEAN_HOUSE_3 + db $9, $9, $0, CERULEAN_HOUSE_3 + + db $6 ; signs + db $13, $17, $c ; CeruleanCityText12 + db $1d, $11, $d ; CeruleanCityText13 + db $19, $1a, $e ; CeruleanCityText14 + db $11, $14, $f ; CeruleanCityText15 + db $19, $b, $10 ; CeruleanCityText16 + db $15, $1b, $11 ; CeruleanCityText17 + + db $b ; people + db SPRITE_BLUE, $2 + 4, $14 + 4, $ff, $d0, $1 ; person + db SPRITE_ROCKET, $8 + 4, $1e + 4, $ff, $ff, $42, ROCKET + $C8, $5 ; trainer + db SPRITE_BLACK_HAIR_BOY_1, $14 + 4, $1f + 4, $ff, $d0, $3 ; person + db SPRITE_BLACK_HAIR_BOY_2, $12 + 4, $f + 4, $fe, $1, $4 ; person + db SPRITE_BLACK_HAIR_BOY_2, $15 + 4, $9 + 4, $fe, $2, $5 ; person + db SPRITE_GUARD, $c + 4, $1c + 4, $ff, $d0, $6 ; person + db SPRITE_LASS, $1a + 4, $1d + 4, $ff, $d2, $7 ; person + db SPRITE_SLOWBRO, $1a + 4, $1c + 4, $ff, $d0, $8 ; person + db SPRITE_LASS, $1b + 4, $9 + 4, $fe, $2, $9 ; person + db SPRITE_BLACK_HAIR_BOY_2, $c + 4, $4 + 4, $ff, $d0, $a ; person + db SPRITE_GUARD, $c + 4, $1b + 4, $ff, $d0, $b ; person + + ; warp-to + EVENT_DISP $14, $b, $1b ; TRASHED_HOUSE + EVENT_DISP $14, $f, $d ; CERULEAN_HOUSE + EVENT_DISP $14, $11, $13 ; CERULEAN_POKECENTER + EVENT_DISP $14, $13, $1e ; CERULEAN_GYM + EVENT_DISP $14, $19, $d ; BIKE_SHOP + EVENT_DISP $14, $19, $19 ; CERULEAN_MART + EVENT_DISP $14, $b, $4 ; UNKNOWN_DUNGEON_1 + EVENT_DISP $14, $9, $1b ; TRASHED_HOUSE + EVENT_DISP $14, $b, $9 ; CERULEAN_HOUSE_3 + EVENT_DISP $14, $9, $9 ; CERULEAN_HOUSE_3 + +CeruleanCityBlocks: ; 360 + INCBIN "maps/ceruleancity.blk" + +VermilionCity_h: ; 0x18998 to 0x189ba (34 bytes) (bank=6) (id=5) + db $00 ; tileset + db $12, $14 ; dimensions (y, x) + dw VermilionCityBlocks, VermilionCityTexts, VermilionCityScript ; blocks, texts, scripts + db NORTH | EAST ; connections + + ; connections data + + db ROUTE_6 + dw $410f, $c6f0 ; pointers (connected, current) (strip) + db $0a, $0a ; bigness, width + db $23, $f6 ; alignments (y, x) + dw $c809 ; window + + db ROUTE_11 + dw $455f, $c7b5 ; pointers (connected, current) (strip) + db $09, $1e ; bigness, width + db $f8, $00 ; alignments (y, x) + dw $c70d ; window + + ; end connection data + + dw VermilionCityObject ; objects + +VermilionCityObject: ; 0x189ba (size=133) + db $43 ; border tile + + db $9 ; warps + db $3, $b, $0, VERMILION_POKECENTER + db $d, $9, $0, POKEMON_FAN_CLUB + db $d, $17, $0, VERMILION_MART + db $13, $c, $0, VERMILION_GYM + db $13, $17, $0, VERMILION_HOUSE_1 + db $1f, $12, $0, VERMILION_DOCK + db $1f, $13, $0, VERMILION_DOCK + db $d, $f, $0, VERMILION_HOUSE_3 + db $3, $7, $0, VERMILION_HOUSE_2 + + db $7 ; signs + db $3, $1b, $7 ; VermilionCityText7 + db $d, $25, $8 ; VermilionCityText8 + db $d, $18, $9 ; VermilionCityText9 + db $3, $c, $a ; VermilionCityText10 + db $d, $7, $b ; VermilionCityText11 + db $13, $7, $c ; VermilionCityText12 + db $f, $1d, $d ; VermilionCityText13 + + db $6 ; people + db SPRITE_FOULARD_WOMAN, $7 + 4, $13 + 4, $fe, $2, $1 ; person + db SPRITE_GAMBLER, $6 + 4, $e + 4, $ff, $ff, $2 ; person + db SPRITE_SAILOR, $1e + 4, $13 + 4, $ff, $d1, $3 ; person + db SPRITE_GAMBLER, $7 + 4, $1e + 4, $ff, $ff, $4 ; person + db SPRITE_SLOWBRO, $9 + 4, $1d + 4, $fe, $1, $5 ; person + db SPRITE_SAILOR, $1b + 4, $19 + 4, $fe, $2, $6 ; person + + ; warp-to + EVENT_DISP $14, $3, $b ; VERMILION_POKECENTER + EVENT_DISP $14, $d, $9 ; POKEMON_FAN_CLUB + EVENT_DISP $14, $d, $17 ; VERMILION_MART + EVENT_DISP $14, $13, $c ; VERMILION_GYM + EVENT_DISP $14, $13, $17 ; VERMILION_HOUSE_1 + EVENT_DISP $14, $1f, $12 ; VERMILION_DOCK + EVENT_DISP $14, $1f, $13 ; VERMILION_DOCK + EVENT_DISP $14, $d, $f ; VERMILION_HOUSE_3 + EVENT_DISP $14, $3, $7 ; VERMILION_HOUSE_2 + +VermilionCityBlocks: ; 360 + INCBIN "maps/vermilioncity.blk" + +FuchsiaCity_h: ; 0x18ba7 to 0x18bd4 (45 bytes) (bank=6) (id=7) + db $00 ; tileset + db $12, $14 ; dimensions (y, x) + dw FuchsiaCityBlocks, FuchsiaCityTexts, FuchsiaCityScript ; blocks, texts, scripts + db SOUTH | WEST | EAST ; connections + + ; connections data + + db ROUTE_19 + dw $4ef1, $c912 ; pointers (connected, current) (strip) + db $0a, $0a ; bigness, width + db $00, $f6 ; alignments (y, x) + dw $c6f9 ; window + + db ROUTE_18 + dw $4cb2, $c79e ; pointers (connected, current) (strip) + db $09, $19 ; bigness, width + db $f8, $31 ; alignments (y, x) + dw $c720 ; window + + db ROUTE_15 + dw $49cc, $c7b5 ; pointers (connected, current) (strip) + db $09, $1e ; bigness, width + db $f8, $00 ; alignments (y, x) + dw $c70d ; window + + ; end connection data + + dw FuchsiaCityObject ; objects + +FuchsiaCityObject: ; 0x18bd4 (size=178) + db $f ; border tile + + db $9 ; warps + db $d, $5, $0, FUCHSIA_MART + db $1b, $b, $0, FUCHSIA_HOUSE_1 + db $1b, $13, $0, FUCHSIA_POKECENTER + db $1b, $1b, $0, FUCHSIA_HOUSE_2 + db $3, $12, $0, SAFARIZONEENTRANCE + db $1b, $5, $0, FUCHSIA_GYM + db $d, $16, $0, FUCHSIAMEETINGROOM + db $1b, $1f, $1, FUCHSIA_HOUSE_3 + db $18, $1f, $0, FUCHSIA_HOUSE_3 + + db $e ; signs + db $17, $f, $b ; FuchsiaCityText11 + db $f, $19, $c ; FuchsiaCityText12 + db $5, $11, $d ; FuchsiaCityText13 + db $d, $6, $e ; FuchsiaCityText14 + db $1b, $14, $f ; FuchsiaCityText15 + db $1d, $1b, $10 ; FuchsiaCityText16 + db $f, $15, $11 ; FuchsiaCityText17 + db $1d, $5, $12 ; FuchsiaCityText18 + db $7, $21, $13 ; FuchsiaCityText19 + db $7, $1b, $14 ; FuchsiaCityText20 + db $7, $d, $15 ; FuchsiaCityText21 + db $d, $1f, $16 ; FuchsiaCityText22 + db $f, $d, $17 ; FuchsiaCityText23 + db $7, $7, $18 ; FuchsiaCityText24 + + db $a ; people + db SPRITE_BUG_CATCHER, $c + 4, $a + 4, $fe, $2, $1 ; person + db SPRITE_GAMBLER, $11 + 4, $1c + 4, $fe, $2, $2 ; person + db SPRITE_FISHER2, $e + 4, $1e + 4, $ff, $d0, $3 ; person + db SPRITE_BUG_CATCHER, $8 + 4, $18 + 4, $ff, $d1, $4 ; person + db SPRITE_CLEFAIRY, $5 + 4, $1f + 4, $fe, $0, $5 ; person + db SPRITE_BALL, $6 + 4, $19 + 4, $ff, $ff, $6 ; person + db SPRITE_SLOWBRO, $6 + 4, $c + 4, $fe, $2, $7 ; person + db SPRITE_SLOWBRO, $c + 4, $1e + 4, $fe, $2, $8 ; person + db SPRITE_SEEL, $11 + 4, $8 + 4, $fe, $0, $9 ; person + db SPRITE_OMANYTE, $5 + 4, $6 + 4, $ff, $ff, $a ; person + + ; warp-to + EVENT_DISP $14, $d, $5 ; FUCHSIA_MART + EVENT_DISP $14, $1b, $b ; FUCHSIA_HOUSE_1 + EVENT_DISP $14, $1b, $13 ; FUCHSIA_POKECENTER + EVENT_DISP $14, $1b, $1b ; FUCHSIA_HOUSE_2 + EVENT_DISP $14, $3, $12 ; SAFARIZONEENTRANCE + EVENT_DISP $14, $1b, $5 ; FUCHSIA_GYM + EVENT_DISP $14, $d, $16 ; FUCHSIAMEETINGROOM + EVENT_DISP $14, $1b, $1f ; FUCHSIA_HOUSE_3 + EVENT_DISP $14, $18, $1f ; FUCHSIA_HOUSE_3 + +FuchsiaCityBlocks: ; 360 + INCBIN "maps/fuchsiacity.blk" + +INCBIN "baserom.gbc",$18dee,$6d + +PalletTownScript: + ld a,[$D74B] + bit 4,a + jr z,.next\@ + ld hl,$D747 + set 6,[hl] +.next\@ + call $3C3C + ld hl,PalletTownScriptPointers + ld a,[$D5F1] + jp $3D97 +; 0x18e73 + +PalletTownScriptPointers: + dw PalletTownScript1,PalletTownScript2,PalletTownScript3,PalletTownScript4,PalletTownScript5,PalletTownScript6,PalletTownScript7 + +PalletTownScript1: + ld a,[$D747] + bit 0,a + ret nz + ld a,[W_YCOORD] + cp 1 ; is player near north exit? + ret nz + xor a + ld [$FFB4],a + ld a,4 + ld [$D528],a + ld a,$FF + call $23B1 ; stop music + ld a,2 + ld c,a ; song bank + ld a,$DB ; “oak appears” music + call $23A1 ; plays music + ld a,$FC + ld [$CD6B],a + ld hl,$D74B + set 7,[hl] + + ; trigger the next script + ld a,1 + ld [$D5F1],a + ret + +PalletTownScript2: + xor a + ld [$CF0D],a + ld a,1 + ld [$FF8C],a + call $2920 + ld a,$FF + ld [$CD6B],a + ld a,0 + ld [$CC4D],a + ld a,$15 + call Predef + + ; trigger the next script + ld a,2 + ld [$D5F1],a + ret + +PalletTownScript3: + ld a,1 + ld [$FF8C],a + ld a,4 + ld [$FF8D],a + call $34A6 + call Delay3 + ld a,1 + ld [W_YCOORD],a + ld a,1 + ld [$FF9B],a + ld a,1 + swap a + ld [$FF95],a + ld a,$22 + call Predef + ld hl,$FF95 + dec [hl] + ld a,$20 + call Predef ; load Oak’s movement into $CC97 + ld de,$CC97 + ld a,1 ; oak + ld [$FF8C],a + call MoveSprite + ld a,$FF + ld [$CD6B],a + + ; trigger the next script + ld a,3 + ld [$D5F1],a + ret + +PalletTownScript4: + ld a,[$D730] + bit 0,a + ret nz + xor a + ld [$C109],a + ld a,1 + ld [$CF0D],a + ld a,$FC + ld [$CD6B],a + ld a,1 + ld [$FF8C],a + call $2920 + ld a,$FF + ld [$CD6B],a + ld a,1 + ld [$CF13],a + xor a + ld [$CF10],a + ld a,1 + ld [$CC57],a + ld a,[$FFB8] + ld [$CC58],a + + ; trigger the next script + ld a,4 + ld [$D5F1],a + ret + +PalletTownScript5: + ld a,[$CC57] + and a + ret nz + + ; trigger the next script + ld a,5 + ld [$D5F1],a + ret + +PalletTownScript6: + ld a,[$D74A] + bit 2,a + jr nz,.next\@ + and 3 + cp 3 + jr nz,.next\@ + ld hl,$D74A + set 2,[hl] + ld a,$27 + ld [$CC4D],a + ld a,$11 + call Predef + ld a,$28 + ld [$CC4D],a + ld a,$15 + jp Predef +.next\@ + ld a,[$D74B] + bit 4,a + ret z + ld hl,$D74B + set 6,[hl] +PalletTownScript7: + ret + +PalletTownTexts: ; 0x18f88 + dw PalletTownText1,PalletTownText2,PalletTownText3,PalletTownText4,PalletTownText5,PalletTownText6,PalletTownText7 + +PalletTownText1: ; 4F96 0x18f96 + db 8 + ld a,[$CF0D] + and a + jr nz,.next\@ + ld a,1 + ld [$CC3C],a + ld hl,OakAppearsText + jr .done\@ +.next\@ + ld hl,OakWalksUpText +.done\@ + call PrintText + jp $24D7 + +OakAppearsText: + TX_FAR _OakAppearsText + db 8 + ld c,10 + call DelayFrames + xor a + ld [$CD4F],a + ld [$CD50],a + ld a,$4C + call Predef ; display ! over head + ld a,4 + ld [$D528],a + jp $24D7 + +OakWalksUpText: + TX_FAR _OakWalksUpText + db "@" + +PalletTownText2: ; girl 0x18fd3 + TX_FAR _PalletTownText2 ; dc 42 29 pointing to 0xa42dc + db "@" + +PalletTownText3: ; fat man + TX_FAR _PalletTownText3 + db "@" + +PalletTownText4: ; sign by lab + TX_FAR _PalletTownText4 + db "@" + +PalletTownText5: ; sign by fence + TX_FAR _PalletTownText5 + db "@" + +PalletTownText6: ; sign by Red’s house + TX_FAR _PalletTownText6 + db "@" + +PalletTownText7: ; sign by Blue’s house + TX_FAR _PalletTownText7 + db "@" + +ViridianCityScript: ; 0x18ff1 + call $3c3c + ld hl, $4ffd + ld a, [$d5f4] + jp $3d97 +; 0x18ffd + +ViridianCityScripts: ; 0x18ffd + dw ViridianCityScript0 + +INCBIN "baserom.gbc",$18fff,$6 + +ViridianCityScript0: ; 0x19005 + call $500b + jp $503d +; 0x1900b + +INCBIN "baserom.gbc",$1900b,$d9 + +ViridianCityTexts: ; 0x190e4 + dw ViridianCityText1, ViridianCityText2, ViridianCityText3, ViridianCityText4, ViridianCityText5, ViridianCityText6, ViridianCityText7, ViridianCityText8, ViridianCityText9, ViridianCityText10, ViridianCityText11, ViridianCityText12, ViridianCityText13, ViridianCityText14, ViridianCityText15 + +ViridianCityText1: ; 0x19102 + TX_FAR _ViridianCityText1 + db $50 + +ViridianCityText2: ; 0x19107 + db $08 ; asm + ld a, [$d356] + cp $7f + ld hl, $5127 + jr z, .asm_ae9fe ; 0x19110 + ld a, [$d751] + bit 1, a + jr nz, .asm_ae9fe ; 0x19117 + ld hl, $5122 +.asm_ae9fe ; 0x1911c + call PrintText + jp $24d7 + +INCBIN "baserom.gbc",$19122,$1912c - $19122 + +ViridianCityText3: ; 0x1912c + db $08 ; asm + ld hl, $514d + call PrintText + call $35ec + ld a, [$cc26] + and a + jr nz, .asm_6dfea ; 0x1913a + ld hl, $5157 + call PrintText + jr .asm_d611f ; 0x19142 +.asm_6dfea ; 0x19144 + ld hl, $5152 + call PrintText +.asm_d611f ; 0x1914a + jp $24d7 + +INCBIN "baserom.gbc",$1914d,$1915c - $1914d + +ViridianCityText4: ; 0x1915c + db $08 ; asm + ld a, [$d74b] + bit 5, a + jr nz, .asm_83894 ; 0x19162 + ld hl, $5175 + call PrintText + jr .asm_700a6 ; 0x1916a +.asm_83894 ; 0x1916c + ld hl, $517a + call PrintText +.asm_700a6 ; 0x19172 + jp $24d7 + +INCBIN "baserom.gbc",$19175,$1917f - $19175 + +ViridianCityText5: ; 0x1917f + db $08 ; asm + ld hl, $5191 + call PrintText + call $50cf + ld a, $3 + ld [$d5f4], a + jp $24d7 + +INCBIN "baserom.gbc",$19191,$19196 - $19191 + +ViridianCityText6: ; 0x19196 + db $08 ; asm + ld a, [$d74c] + bit 1, a + jr nz, .asm_4e5a0 ; 0x1919c + ld hl, $51ca + call PrintText + ld bc,(TM_42 << 8) | 1 + call $3e2e + jr nc, .asm_b655e ; 0x191aa + ld hl, $51cf + call PrintText + ld hl, $d74c + set 1, [hl] + jr .asm_3c73c ; 0x191b7 +.asm_b655e ; 0x191b9 + ld hl, $51da + call PrintText + jr .asm_3c73c ; 0x191bf +.asm_4e5a0 ; 0x191c1 + ld hl, $51d5 + call PrintText +.asm_3c73c ; 0x191c7 + jp $24d7 + +INCBIN "baserom.gbc",$191ca,$191df - $191ca + +ViridianCityText7: ; 0x191df + db $08 ; asm + ld hl, $520a + call PrintText + ld c, $2 + call $3739 + call $35ec + ld a, [$cc26] + and a + jr z, .asm_42f68 ; 0x191f2 + ld hl, $520f + call PrintText + ld a, $1 + ld [$d5f4], a + jr .asm_2413a ; 0x191ff +.asm_42f68 ; 0x19201 + ld hl, $5214 + call PrintText +.asm_2413a ; 0x19207 + jp $24d7 + +INCBIN "baserom.gbc",$1920a,$19219 - $1920a + +ViridianCityText15: ; 0x19219 +INCBIN "baserom.gbc",$19219,$1921e - $19219 + +ViridianCityText8: ; 0x1921e + TX_FAR _ViridianCityText8 + db $50 + +ViridianCityText9: ; 0x19223 + TX_FAR _ViridianCityText9 + db $50 + +ViridianCityText10: ; 0x19228 + TX_FAR _ViridianCityText10 + db $50 + +ViridianCityText13: ; 0x1922d + TX_FAR _ViridianCityText13 + db $50 + +ViridianCityText14: +INCBIN "baserom.gbc",$19232,$19237 - $19232 + +PewterCityScript: ; 0x19237 + call $3c3c + ld hl, $5243 + ld a, [$d5f7] + jp $3d97 +; 0x19243 + +PewterCityScripts: ; 0x19243 + dw PewterCityScript0 + +INCBIN "baserom.gbc",$19245,$c + +PewterCityScript0: ; 0x19251 + xor a + ld [$d619], a + ld hl, $d754 + res 0, [hl] + call $525e + ret +; 0x1925e + +INCBIN "baserom.gbc",$1925e,$12d + +PewterCityTexts: ; 0x1938b + dw PewterCityText1, PewterCityText2, PewterCityText3, PewterCityText4, PewterCityText5, PewterCityText6, PewterCityText7, PewterCityText8, PewterCityText9, PewterCityText10, PewterCityText11, PewterCityText12, PewterCityText13, PewterCityText14 + +PewterCityText1: ; 0x193a7 + TX_FAR _PewterCityText1 + db $50 + +PewterCityText2: ; 0x193ac + TX_FAR _PewterCityText2 + db $50 + +PewterCityText3: ; 0x193b1 + db $08 ; asm + ld hl, $53f1 + call PrintText + call $35ec + ld a, [$cc26] + and a + jr nz, .asm_f46a9 ; 0x193bf + ld hl, $53f6 + call PrintText + jr .asm_ac429 ; 0x193c7 +.asm_f46a9 ; 0x193c9 + ld hl, $53fb + call PrintText + xor a + ldh [$b3], a + ldh [$b4], a + ld [$cf10], a + ld a, $2 + ld [$cc57], a + ldh a, [$b8] + ld [$cc58], a + ld a, $3 + ld [$cf13], a + call $32f4 + ld a, $1 + ld [$d5f7], a +.asm_ac429 ; 0x193ee + jp $24d7 + +INCBIN "baserom.gbc",$193f1,$19400 - $193f1 + +PewterCityText13: +INCBIN "baserom.gbc",$19400,$5 + +PewterCityText4: ; 0x19405 + db $8 + ld hl, $5427 + call PrintText + call $35ec + ld a, [$cc26] + cp $0 + jr nz, .asm_e4603 + ld hl, $542c + call PrintText + jr .asm_e4604 ; 0x1941c $6 +.asm_e4603 + ld hl, $5431 + call PrintText +.asm_e4604 ; 0x19424 + jp $24d7 +; 0x19427 + +INCBIN "baserom.gbc",$19427,$f + +PewterCityText5: ; 0x19436 + db $08 ; asm + ld hl, $545d + call PrintText + xor a + ldh [$b4], a + ld [$cf10], a + ld a, $3 + ld [$cc57], a + ldh a, [$b8] + ld [$cc58], a + ld a, $5 + ld [$cf13], a + call $32f4 + ld a, $4 + ld [$d5f7], a + jp $24d7 + +INCBIN "baserom.gbc",$1945d,$19462 - $1945d + +PewterCityText14: ; 0x19462 +INCBIN "baserom.gbc",$19462,$5 + +PewterCityText6: ; 0x19467 + TX_FAR _PewterCityText6 + db $50 + +PewterCityText7: ; 0x1946c + TX_FAR _PewterCityText7 + db $50 + +PewterCityText10: ; 0x19471 + TX_FAR _PewterCityText10 + db $50 + +PewterCityText11: ; 0x19476 + TX_FAR _PewterCityText11 + db $50 + +PewterCityText12: ; 0x1947b + TX_FAR _PewterCityText12 + db $50 + +CeruleanCityScript: ; 0x19480 + call $3c3c + ld hl, $549d + ld a, [$d60f] + jp $3d97 +; 0x1948c + +INCBIN "baserom.gbc",$1948c,$1949d - $1948c + +CeruleanCityScripts: ; 0x1949d + dw CeruleanCityScript0, CeruleanCityScript1, CeruleanCityScript2, CeruleanCityScript3 + +INCBIN "baserom.gbc",$194a5,$23 + +CeruleanCityScript0: ; 0x194c8 + ld a, [$d75b] + bit 7, a + jr nz, .asm_194f7 ; 0x194cd $28 + ld hl, $554f + call $34bf + jr nc, .asm_194f7 ; 0x194d5 $20 + ld a, [$cd3d] + cp $1 + ld a, $8 + ld b, $0 + jr nz, .asm_194e6 ; 0x194e0 $4 + ld a, $4 + ld b, $4 +.asm_194e6 + ld [$d528], a + ld a, b + ld [$c129], a + call Delay3 + ld a, $2 + ld [$ff00+$8c], a + jp $2920 +.asm_194f7 + ld a, [$d75a] + bit 0, a + ret nz + ld hl, $5554 + call $34bf + ret nc + ld a, [$d700] + and a + jr z, .asm_19512 ; 0x19508 $8 + ld a, $ff + ld [$c0ee], a + call $23b1 +.asm_19512 + ld c, $2 + ld a, $de + call $23a1 + xor a + ld [$ff00+$b4], a + ld a, $f0 + ld [$cd6b], a + ld a, [$d362] + cp $14 + jr z, .asm_19535 ; 0x19526 $d + ld a, $1 + ld [$ff00+$8c], a + ld a, $5 + ld [$ff00+$8b], a + call $3500 + ld [hl], $19 +.asm_19535 + ld a, $5 + ld [$cc4d], a + ld a, $15 + call Predef + ld de, $5559 + ld a, $1 + ld [$ff00+$8c], a + call $363a + ld a, $1 + ld [$d60f], a + ret +; 0x1954f + +INCBIN "baserom.gbc",$1954f,$19567 - $1954f + +CeruleanCityScript1: ; 0x19567 + ld a, [$d730] + bit 0, a + ret nz + xor a + ld [$cd6b], a + ld a, $1 + ld [$ff00+$8c], a + call $2920 + ld hl, $d72d + set 6, [hl] + set 7, [hl] + ld hl, $566d + ld de, $5672 + call $3354 + ld a, $e1 + ld [$d059], a + ld a, [$d715] + cp $b1 + jr nz, .asm_19598 ; 0x19592 $4 + ld a, $7 + jr .asm_195a2 ; 0x19596 $a +.asm_19598 + cp $99 + jr nz, .asm_195a0 ; 0x1959a $4 + ld a, $8 + jr .asm_195a2 ; 0x1959e $2 +.asm_195a0 + ld a, $9 +.asm_195a2 + ld [$d05d], a + xor a + ld [$ff00+$b4], a + call $555d + ld a, $2 + ld [$d60f], a + ret +; 0x195b1 + +CeruleanCityScript2: ; 0x195b1 + ld a, [$d057] + cp $ff + jp z, $548c + call $555d + ld a, $f0 + ld [$cd6b], a + ld hl, $d75a + set 0, [hl] + ld a, $1 + ld [$ff00+$8c], a + call $2920 + ld a, $ff + ld [$c0ee], a + call $23b1 + ld b, $2 + ld hl, $5b47 + call Bankswitch + ld a, $1 + ld [$ff00+$8c], a + call $3541 + ld a, [$d362] + cp $14 + jr nz, .asm_195f0 ; 0x195e9 $5 + ld de, $5608 + jr .asm_195f3 ; 0x195ee $3 +.asm_195f0 + ld de, $5600 +.asm_195f3 + ld a, $1 + ld [$ff00+$8c], a + call $363a + ld a, $3 + ld [$d60f], a + ret +; 0x19600 + +INCBIN "baserom.gbc",$19600,$19610 - $19600 + +CeruleanCityScript3: ; 0x19610 + ld a, [$d730] + bit 0, a + ret nz + ld a, $5 + ld [$cc4d], a + ld a, $11 + call Predef + xor a + ld [$cd6b], a + call $2307 + ld a, $0 + ld [$d60f], a + ret +; 0x1962d + +CeruleanCityTexts: ; 0x1962d + dw CeruleanCityText1, CeruleanCityText2, CeruleanCityText3, CeruleanCityText4, CeruleanCityText5, CeruleanCityText6, CeruleanCityText7, CeruleanCityText8, CeruleanCityText9, CeruleanCityText10, CeruleanCityText11, CeruleanCityText12, CeruleanCityText13, CeruleanCityText14, CeruleanCityText15, CeruleanCityText16, CeruleanCityText17 + +CeruleanCityText1: ; 0x1964f + db $08 ; asm + ld a, [$d75a] + bit 0, a + jr z, .asm_a89f9 ; 0x19655 + ld hl, $5677 + call PrintText + jr .asm_815c6 ; 0x1965d +.asm_a89f9 ; 0x1965f + ld hl, $5668 + call PrintText +.asm_815c6 ; 0x19665 + jp $24d7 + +INCBIN "baserom.gbc",$19668,$1967c - $19668 + +CeruleanCityText2: ; 0x1967c + db $8 + ld a, [$d75b] + bit 7, a + jr nz, .asm_4ca20 ; 0x19682 $29 + ld hl, $56d9 + call PrintText + ld hl, $d72d + set 6, [hl] + set 7, [hl] + ld hl, $56ee + ld de, $56ee + call $3354 + ld a, [$ff00+$8c] + ld [$cf13], a + call $336a + call $32d7 + ld a, $4 + ld [$d60f], a + jp $24d7 +.asm_4ca20 ; 0x196ad + ld hl, $56f3 + call PrintText + ld bc, $e401 + call GiveItem + jr c, .asm_8bbbd ; 0x196b9 $8 + ld hl, $56e9 + call PrintText + jr .asm_e4e6f ; 0x196c1 $13 +.asm_8bbbd ; 0x196c3 + ld a, $1 + ld [$cc3c], a + ld hl, $56de + call PrintText + ld b, $1d + ld hl, $4872 + call Bankswitch +.asm_e4e6f ; 0x196d6 + jp $24d7 +; 0x196d9 + +INCBIN "baserom.gbc",$196d9,$1f + +CeruleanCityText3: ; 0x196f8 + TX_FAR _CeruleanCityText3 + db $50 + +CeruleanCityText4: ; 0x196fd + TX_FAR _CeruleanCityText4 + db $50 + +CeruleanCityText5: ; 0x19702 + TX_FAR _CeruleanCityText5 + db $50 + +CeruleanCityText11: +CeruleanCityText6: ; 0x19707 + TX_FAR _CeruleanCityText6 + db $50 + +CeruleanCityText7: ; 0x1970c + db $08 ; asm + ldh a, [$d3] + cp $b4 + jr c, .asm_e9fc9 ; 0x19711 + ld hl, $5730 + call PrintText + jr .asm_d486e ; 0x19719 +.asm_e9fc9 ; 0x1971b + cp $64 + jr c, .asm_df99b ; 0x1971d + ld hl, $5735 + call PrintText + jr .asm_d486e ; 0x19725 +.asm_df99b ; 0x19727 + ld hl, $573a + call PrintText +.asm_d486e ; 0x1972d + jp $24d7 + +INCBIN "baserom.gbc",$19730,$1973f - $19730 + +CeruleanCityText8: ; 0x1973f + db $08 ; asm + ldh a, [$d3] + cp $b4 + jr c, .asm_e28da ; 0x19744 + ld hl, $576f + call PrintText + jr .asm_f2f38 ; 0x1974c +.asm_e28da ; 0x1974e + cp $78 + jr c, .asm_15d08 ; 0x19750 + ld hl, $5774 + call PrintText + jr .asm_f2f38 ; 0x19758 +.asm_15d08 ; 0x1975a + cp $3c + jr c, .asm_d7fea ; 0x1975c + ld hl, $5779 + call PrintText + jr .asm_f2f38 ; 0x19764 +.asm_d7fea ; 0x19766 + ld hl, $577e + call PrintText +.asm_f2f38 ; 0x1976c + jp $24d7 + +INCBIN "baserom.gbc",$1976f,$14 + +CeruleanCityText9: ; 0x19783 + TX_FAR _CeruleanCityText9 + db $50 + +CeruleanCityText10: ; 0x19788 + TX_FAR _CeruleanCityText10 + db $50 + +CeruleanCityText12: ; 0x1978d + TX_FAR _CeruleanCityText12 + db $50 + +CeruleanCityText13: ; 0x19792 + TX_FAR _CeruleanCityText13 + db $50 + +CeruleanCityText16: ; 0x19797 + TX_FAR _CeruleanCityText16 + db $50 + +CeruleanCityText17: ; 0x1979c + TX_FAR _CeruleanCityText17 + db $50 + +VermilionCityScript: ; 0x197a1 + call $3c3c + ld hl, $d126 + bit 6, [hl] + res 6, [hl] + push hl + call nz, $57cb + pop hl + bit 5, [hl] + res 5, [hl] + call nz, $57c0 + ld hl, $57dc + ld a, [$d62a] + jp $3d97 +; 0x197c0 + +INCBIN "baserom.gbc",$197c0,$197dc - $197c0 + +VermilionCityScripts: ; 0x197dc + dw VermilionCityScript0, VermilionCityScript1 + +INCBIN "baserom.gbc",$197e0,$6 + +VermilionCityScript0: ; 0x197e6 + ld a, [$c109] + and a + ret nz + ld hl, $5823 + call $34bf + ret nc + xor a + ld [$ff00+$b4], a + ld [$cf0d], a + ld a, $3 + ld [$ff00+$8c], a + call $2920 + ld a, [$d803] + bit 2, a + jr nz, .asm_19810 ; 0x19804 $a + ld b, $3f + ld a, $1c + call Predef + ld a, b + and a + ret nz +.asm_19810 + ld a, $40 + ld [$ccd3], a + ld a, $1 + ld [$cd38], a + call $3486 + ld a, $1 + ld [$d62a], a + ret +; 0x19823 + +INCBIN "baserom.gbc",$19823,$1985f - $19823 + +VermilionCityScript1: ; 0x1985f + ld a, [$cd38] + and a + ret nz + ld c, $a + call $3739 + ld a, $0 + ld [$d62a], a + ret +; 0x1986f + +VermilionCityTexts: ; 0x1986f + dw VermilionCityText1, VermilionCityText2, VermilionCityText3, VermilionCityText4, VermilionCityText5, VermilionCityText6, VermilionCityText7, VermilionCityText8, VermilionCityText9, VermilionCityText10, VermilionCityText11, VermilionCityText12, VermilionCityText13 + +VermilionCityText1: ; 0x19889 + TX_FAR _VermilionCityText1 + db $50 + +VermilionCityText2: ; 0x1988e + db $08 ; asm + ld a, [$d803] + bit 2, a + jr nz, .asm_359bd ; 0x19894 + ld hl, $58a7 + call PrintText + jr .asm_735d9 ; 0x1989c +.asm_359bd ; 0x1989e + ld hl, $58ac + call PrintText +.asm_735d9 ; 0x198a4 + jp $24d7 + +INCBIN "baserom.gbc",$198a7,$198b1 - $198a7 + +VermilionCityText3: ; 0x198b1 + db $08 ; asm + ld a, [$d803] + bit 2, a + jr nz, .asm_3e0e9 ; 0x198b7 + ld a, [$c109] + cp $c + jr z, .asm_07af3 ; 0x198be + ld hl, $58ff + call $34bf + jr nc, .asm_57b73 ; 0x198c6 +.asm_07af3 ; 0x198c8 + ld hl, $5904 + call PrintText + jr .asm_79bd1 ; 0x198ce +.asm_57b73 ; 0x198d0 + ld hl, $5909 + call PrintText + ld b, $3f + ld a, $1c + call Predef + ld a, b + and a + jr nz, .asm_0419b ; 0x198df + ld hl, $5913 + call PrintText + jr .asm_79bd1 ; 0x198e7 +.asm_0419b ; 0x198e9 + ld hl, $590e + call PrintText + ld a, $4 + ld [$d62a], a + jr .asm_79bd1 ; 0x198f4 +.asm_3e0e9 ; 0x198f6 + ld hl, $5918 + call PrintText +.asm_79bd1 ; 0x198fc + jp $24d7 + +INCBIN "baserom.gbc",$198ff,$1e + +VermilionCityText4: ; 0x1991d + TX_FAR _VermilionCityText4 + db $50 + +VermilionCityText5: ; 0x19922 + TX_FAR _VermilionCityText5 + db $08 ; asm + ld a, $6a + call $13d0 + call $3748 + ld hl, $5933 + ret + +;db $17, $6b, $58, $29, $50 +INCBIN "baserom.gbc",$19933,$5 + +VermilionCityText6: ; 0x19938 + TX_FAR _VermilionCityText6 + db $50 + +VermilionCityText7: ; 0x1993d + TX_FAR _VermilionCityText7 + db $50 + +VermilionCityText8: ; 0x19942 + TX_FAR _VermilionCityText8 + db $50 + +VermilionCityText11: ; 0x19947 + TX_FAR _VermilionCityText11 + db $50 + +VermilionCityText12: ; 0x1994c + TX_FAR _VermilionCityText12 + db $50 + +VermilionCityText13: ; 0x19951 + TX_FAR _VermilionCityText13 + db $50 + +CeladonCityScript: ; 0x19956 + call $3c3c + ld hl, $d77e + res 0, [hl] + res 7, [hl] + ld hl, $d816 + res 7, [hl] + ret +; 0x19966 + +CeladonCityTexts: ; 0x19966 + dw CeladonCityText1, CeladonCityText2, CeladonCityText3, CeladonCityText4, CeladonCityText5, CeladonCityText6, CeladonCityText7, CeladonCityText8, CeladonCityText9, CeladonCityText10, CeladonCityText11, CeladonCityText12, CeladonCityText13, CeladonCityText14, CeladonCityText15, CeladonCityText16, CeladonCityText17, CeladonCityText18 + +CeladonCityText1: ; 0x1998a + TX_FAR _CeladonCityText1 + db $50 + +CeladonCityText2: ; 0x1998f + TX_FAR _CeladonCityText2 + db $50 + +CeladonCityText3: ; 0x19994 + TX_FAR _CeladonCityText3 + db $50 + +CeladonCityText4: ; 0x19999 + TX_FAR _CeladonCityText4 + db $50 + +CeladonCityText5: ; 0x1999e + db $08 ; asm + ld a, [$d777] + bit 0, a + jr nz, .asm_7053f ; 0x199a4 + ld hl, $59d2 + call PrintText + ld bc,(TM_41 << 8) | 1 + call $3e2e + jr c, .asm_890ec ; 0x199b2 + ld hl, $59e2 + call PrintText + jr .asm_c765a ; 0x199ba +.asm_890ec ; 0x199bc + ld hl, $59d7 + call PrintText + ld hl, $d777 + set 0, [hl] + jr .asm_c765a ; 0x199c7 +.asm_7053f ; 0x199c9 + ld hl, $59dd + call PrintText +.asm_c765a ; 0x199cf + jp $24d7 + +INCBIN "baserom.gbc",$199d2,$15 + +CeladonCityText6: ; 0x199e7 + TX_FAR _CeladonCityText6 + db $50 + +CeladonCityText7: ; 0x199ec + TX_FAR _CeladonCityText7 + db $08 ; asm + ld a, $6f + call $13d0 + jp $24d7 + +CeladonCityText8: ; 0x199f9 + TX_FAR _CeladonCityText8 + db $50 + +CeladonCityText9: ; 0x199fe + TX_FAR _CeladonCityText9 + db $50 + +CeladonCityText10: ; 0x19a03 + TX_FAR _CeladonCityText10 + db $50 + +CeladonCityText11: ; 0x19a08 + TX_FAR _CeladonCityText11 + db $50 + +CeladonCityText13: ; 0x19a0d + TX_FAR _CeladonCityText13 + db $50 + +CeladonCityText14: ; 0x19a12 + TX_FAR _CeladonCityText14 + db $50 + +CeladonCityText15: ; 0x19a17 + TX_FAR _CeladonCityText15 + db $50 + +CeladonCityText16: ; 0x19a1c + TX_FAR _CeladonCityText16 + db $50 + +CeladonCityText17: ; 0x19a21 + TX_FAR _CeladonCityText17 + db $50 + +CeladonCityText18: ; 0x19a26 + TX_FAR _CeladonCityText18 + db $50 + +FuchsiaCityScript: ; 0x19a2b + jp $3c3c +; 0x19a2e + +FuchsiaCityTexts: ; 0x19a2e + dw FuchsiaCityText1, FuchsiaCityText2, FuchsiaCityText3, FuchsiaCityText4, FuchsiaCityText5, FuchsiaCityText6, FuchsiaCityText7, FuchsiaCityText8, FuchsiaCityText9, FuchsiaCityText10, FuchsiaCityText11, FuchsiaCityText12, FuchsiaCityText13, FuchsiaCityText14, FuchsiaCityText15, FuchsiaCityText16, FuchsiaCityText17, FuchsiaCityText18, FuchsiaCityText19, FuchsiaCityText20, FuchsiaCityText21, FuchsiaCityText22, FuchsiaCityText23, FuchsiaCityText24 + +FuchsiaCityText1: ; 0x19a5e + TX_FAR _FuchsiaCityText1 + db $50 + +FuchsiaCityText2: ; 0x19a63 + TX_FAR _FuchsiaCityText2 + db $50 + +FuchsiaCityText3: ; 0x19a68 + TX_FAR _FuchsiaCityText3 + db $50 + +FuchsiaCityText4: ; 0x19a6d + TX_FAR _FuchsiaCityText4 + db $50 + +FuchsiaCityText5: ; 0x19a72 +FuchsiaCityText6: +FuchsiaCityText7: +FuchsiaCityText8: +FuchsiaCityText9: +FuchsiaCityText10: ; 0x19a72 + TX_FAR _FuchsiaCityText5 + db $50 + +FuchsiaCityText12: +FuchsiaCityText11: ; 0x19a77 + TX_FAR _FuchsiaCityText11 + db $50 + +FuchsiaCityText13: ; 0x19a7c + TX_FAR _FuchsiaCityText13 + db $50 + +FuchsiaCityText16: ; 0x19a81 + TX_FAR _FuchsiaCityText16 + db $50 + +FuchsiaCityText17: ; 0x19a86 + TX_FAR _FuchsiaCityText17 + db $50 + +FuchsiaCityText18: ; 0x19a8b + TX_FAR _FuchsiaCityText18 + db $50 + +FuchsiaCityText19: ; 0x19a90 + db $08 ; asm + ld hl, $5a9f + call PrintText + ld a, $28 + call $349b + jp $24d7 + +INCBIN "baserom.gbc",$19a9f,$19aa4 - $19a9f + +FuchsiaCityText20: ; 0x19aa4 + db $08 ; asm + ld hl, $5ab3 + call PrintText + ld a, $6 + call $349b + jp $24d7 + +INCBIN "baserom.gbc",$19ab3,$19ab8 - $19ab3 + +FuchsiaCityText21: ; 0x19ab8 + db $08 ; asm + ld hl, $5ac7 + call PrintText + ld a, $2 + call $349b + jp $24d7 + +INCBIN "baserom.gbc",$19ac7,$19acc - $19ac7 + +FuchsiaCityText22: ; 0x19acc + db $08 ; asm + ld hl, $5adb + call PrintText + ld a, $25 + call $349b + jp $24d7 + +INCBIN "baserom.gbc",$19adb,$19ae0 - $19adb + +FuchsiaCityText23: ; 0x19ae0 + db $08 ; asm + ld hl, $5aef + call PrintText + ld a, $13 + call $349b + jp $24d7 + +INCBIN "baserom.gbc",$19aef,$19af4 - $19aef + +FuchsiaCityText24: ; 0x19af4 + db $08 ; asm + ld a, [$d7f6] + bit 6, a + jr nz, .asm_3b4e8 ; 0x19afa + bit 7, a + jr nz, .asm_667d5 ; 0x19afe + ld hl, $5b2a + call PrintText + jr .asm_4343f ; 0x19b06 +.asm_3b4e8 ; 0x19b08 + ld hl, $5b20 + call PrintText + ld a, $62 + jr .asm_81556 ; 0x19b10 +.asm_667d5 ; 0x19b12 + ld hl, $5b25 + call PrintText + ld a, $5a +.asm_81556 ; 0x19b1a + call $349b +.asm_4343f ; 0x19b1d + jp $24d7 + +INCBIN "baserom.gbc",$19b20,$f + +BluesHouse_h: ; 0x19b2f + db $08 ; tileset + db $04,$04 ; dimensions + dw BluesHouseBlocks, BluesHouseTexts, BluesHouseScript + db 0 + dw BluesHouseObject + +BluesHouseScript: + call $3C3C + ld hl,BluesHouseScriptPointers + ld a,[$D5F3] + jp $3D97 + +BluesHouseScriptPointers: + dw BluesHouseScript1,BluesHouseScript2 + +BluesHouseScript1: + ld hl,$D74A + set 1,[hl] + + ; trigger the next script + ld a,1 + ld [$D5F3],a + ret + +BluesHouseScript2: + ret + +BluesHouseTexts: ; 0x19B57 + dw BluesHouseText1,BluesHouseText2,BluesHouseText3 + +BluesHouseText1: ; 5B5D 0x19B5D + db 8 + ld a,[$D74A] + bit 0,a + jr nz,.GotMap\@ + ld a,[$D74B] + bit 5,a + jr nz,.GiveMap\@ + ld hl,DaisyInitialText + call PrintText + jr .done\@ +.GiveMap\@ + ld hl,DaisyOfferMapText + call PrintText + ld bc,(TOWN_MAP << 8) | 1 + call $3E2E + jr nc,.BagFull\@ + ld a,$29 + ld [$CC4D],a + ld a,$11 + call Predef ; hide table map object + ld hl,GotMapText + call PrintText + ld hl,$D74A + set 0,[hl] + jr .done\@ +.GotMap\@ + ld hl,DaisyUseMapText + call PrintText + jr .done\@ +.BagFull\@ + ld hl,DaisyBagFullText + call PrintText +.done\@ + jp $24D7 + +DaisyInitialText: + TX_FAR _DaisyInitialText + db "@" +DaisyOfferMapText: + TX_FAR _DaisyOfferMapText + db "@" +GotMapText: + TX_FAR _GotMapText + db $11,"@" +DaisyBagFullText: + TX_FAR _DaisyBagFullText + db "@" +DaisyUseMapText: + TX_FAR _DaisyUseMapText + db "@" +BluesHouseText2: ; Daisy, walking around + TX_FAR _BluesHouseText2 + db "@" +BluesHouseText3: ; map on table + TX_FAR _BluesHouseText3 + db "@" + +BluesHouseObject: + db $0A ; border tile + + db 2 ; warps + db 7,2,1,$FF + db 7,3,1,$FF + + db 0 ; signs + + db 3 ; people + db $11,4+3,4+2,$FF,$D3,1 ; Daisy, sitting by map + db $11,4+4,4+6,$FE,1,ITEM|2,0 ; map on table + db $41,4+3,4+3,$FF,$FF,ITEM|3,0 ; Daisy, walking around + + ; warp-to + dw $C712 + db 7,2 + + dw $C712 + db 7,3 + +BluesHouseBlocks: + INCBIN "maps/blueshouse.blk" + +VermilionHouse3_h: ; 0x19c06 to 0x19c12 (12 bytes) (bank=6) (id=196) + db $08 ; tileset + db $04, $04 ; dimensions (y, x) + dw VermilionHouse3Blocks, VermilionHouse3Texts, VermilionHouse3Script ; blocks, texts, scripts + db $00 ; connections + + dw VermilionHouse3Object ; objects + +VermilionHouse3Script: ; 0x19c12 + jp $3c3c +; 0x19c15 + +VermilionHouse3Texts: ; 0x19c15 + dw VermilionHouse3Text1 + +VermilionHouse3Text1: ; 0x19c17 + db $08 ; asm + ld a, $4 + ld [W_WHICHTRADE], a + ld a, $54 + call Predef + jp $24d7 + +VermilionHouse3Object: ; 0x19c25 (size=26) + db $a ; border tile + + db $2 ; warps + db $7, $2, $7, $ff + db $7, $3, $7, $ff + + db $0 ; signs + + db $1 ; people + db SPRITE_LITTLE_GIRL, $5 + 4, $3 + 4, $ff, $d1, $1 ; person + + ; warp-to + EVENT_DISP $4, $7, $2 + EVENT_DISP $4, $7, $3 + +VermilionHouse3Blocks: ; 16 + INCBIN "maps/vermilionhouse3.blk" + +IndigoPlateauLobby_h: ; 0x19c4f to 0x19c5b (12 bytes) (bank=6) (id=174) + db $02 ; tileset + db $06, $08 ; dimensions (y, x) + dw IndigoPlateauLobbyBlocks, IndigoPlateauLobbyTexts, IndigoPlateauLobbyScript ; blocks, texts, scripts + db $00 ; connections + + dw IndigoPlateauLobbyObject ; objects + +IndigoPlateauLobbyScript: ; 0x19c5b + call $22fa + call $3c3c + ld hl, $d126 + bit 6, [hl] + res 6, [hl] + ret z + ld hl, $d869 + res 7, [hl] + ld hl, $d734 + bit 1, [hl] + res 1, [hl] + ret z + ld hl, $d863 + xor a + ld [hli], a + ld [hli], a + ld [hli], a + ld [hl], a + ret +; 0x19c7f + +IndigoPlateauLobbyTexts: +INCBIN "baserom.gbc",$19c7f,$b + +IndigoPlateauLobbyText2: +IndigoPlateauLobbyText1: ; 0x19c8a + TX_FAR _IndigoPlateauLobbyText1 + db $50 + +INCBIN "baserom.gbc",$19c8f,$19c8f - $19c8f + +IndigoPlateauLobbyText3: ; 0x19c8f + TX_FAR _IndigoPlateauLobbyText3 + db $50 + +IndigoPlateauLobbyText5: + db $f6 + +IndigoPlateauLobbyObject: ; 0x19c95 (size=58) + db $0 ; border tile + + db $3 ; warps + db $b, $7, $0, $ff + db $b, $8, $1, $ff + db $0, $8, $0, LORELEIS_ROOM + + db $0 ; signs + + db $5 ; people + db SPRITE_NURSE, $5 + 4, $7 + 4, $ff, $d0, $1 ; person + db SPRITE_GYM_HELPER, $9 + 4, $4 + 4, $ff, $d3, $2 ; person + db SPRITE_LASS, $1 + 4, $5 + 4, $ff, $d0, $3 ; person + db SPRITE_MART_GUY, $5 + 4, $0 + 4, $ff, $d3, $4 ; person + db SPRITE_CABLE_CLUB_WOMAN, $6 + 4, $d + 4, $ff, $d0, $5 ; person + + ; warp-to + EVENT_DISP $8, $b, $7 + EVENT_DISP $8, $b, $8 + EVENT_DISP $8, $0, $8 ; LORELEIS_ROOM + +IndigoPlateauLobbyBlocks: ; 48 + INCBIN "maps/indigoplateaulobby.blk" + +SilphCo4_h: ; 0x19cff to 0x19d0b (12 bytes) (bank=6) (id=209) + db $16 ; tileset + db $09, $0f ; dimensions (y, x) + dw SilphCo4Blocks, SilphCo4Texts, SilphCo4Script ; blocks, texts, scripts + db $00 ; connections + + dw SilphCo4Object ; objects + +SilphCo4Script: ; 0x19d0b + call $5d21 + call $3c3c + ld hl, $5dae + ld de, $5d9a + ld a, [$d645] + call $3160 + ld [$d645], a + ret +; 0x19d21 + +INCBIN "baserom.gbc",$19d21,$7f + +SilphCo4Texts: ; 0x19da0 + dw SilphCo4Text1, SilphCo4Text2, SilphCo4Text3, SilphCo4Text4, SilphCo4Text5, SilphCo4Text6, SilphCo4Text7 + +INCBIN "baserom.gbc",$19dae,$25 + +SilphCo4Text1: ; 0x19dd3 + db $08 ; asm + ld hl, $5de0 + ld de, $5de5 + call $622f + jp $24d7 + +INCBIN "baserom.gbc",$19de0,$19dea - $19de0 + +SilphCo4Text2: ; 0x19dea + db $08 ; asm + ld hl, $5dae + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$19df4,$19e03 - $19df4 + +SilphCo4Text3: ; 0x19e03 + db $08 ; asm + ld hl, $5dba + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$19e0d,$19e1c - $19e0d + +SilphCo4Text4: ; 0x19e1c + db $08 ; asm + ld hl, $5dc6 + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$19e26,$f + +SilphCo4Object: ; 0x19e35 (size=111) + db $2e ; border tile + + db $7 ; warps + db $0, $18, $1, SILPH_CO_3F + db $0, $1a, $1, SILPH_CO_5F + db $0, $14, $0, SILPH_CO_ELEVATOR + db $7, $b, $3, SILPH_CO_10F + db $3, $11, $3, SILPH_CO_6F + db $f, $3, $4, SILPH_CO_10F + db $b, $11, $5, SILPH_CO_10F + + db $0 ; signs + + db $7 ; people + db SPRITE_LAPRAS_GIVER, $2 + 4, $6 + 4, $ff, $ff, $1 ; person + db SPRITE_ROCKET, $e + 4, $9 + 4, $ff, $d3, $42, ROCKET + $C8, $1a ; trainer + db SPRITE_OAK_AIDE, $6 + 4, $e + 4, $ff, $d2, $43, SCIENTIST + $C8, $5 ; trainer + db SPRITE_ROCKET, $a + 4, $1a + 4, $ff, $d1, $44, ROCKET + $C8, $1b ; trainer + db SPRITE_BALL, $9 + 4, $3 + 4, $ff, $ff, $85, FULL_HEAL ; item + db SPRITE_BALL, $7 + 4, $4 + 4, $ff, $ff, $86, MAX_REVIVE ; item + db SPRITE_BALL, $8 + 4, $5 + 4, $ff, $ff, $87, ESCAPE_ROPE ; item + + ; warp-to + EVENT_DISP $f, $0, $18 ; SILPH_CO_3F + EVENT_DISP $f, $0, $1a ; SILPH_CO_5F + EVENT_DISP $f, $0, $14 ; SILPH_CO_ELEVATOR + EVENT_DISP $f, $7, $b ; SILPH_CO_10F + EVENT_DISP $f, $3, $11 ; SILPH_CO_6F + EVENT_DISP $f, $f, $3 ; SILPH_CO_10F + EVENT_DISP $f, $b, $11 ; SILPH_CO_10F + +SilphCo4Blocks: ; 135 + INCBIN "maps/silphco4.blk" + +SilphCo5_h: ; 0x19f2b to 0x19f37 (12 bytes) (bank=6) (id=210) + db $16 ; tileset + db $09, $0f ; dimensions (y, x) + dw SilphCo5Blocks, SilphCo5Texts, SilphCo5Script ; blocks, texts, scripts + db $00 ; connections + + dw SilphCo5Object ; objects + +SilphCo5Script: ; 0x19f37 + call $5f4d + call $3c3c + ld hl, $5fd2 + ld de, $5fb6 + ld a, [$d646] + call $3160 + ld [$d646], a + ret +; 0x19f4d + +INCBIN "baserom.gbc",$19f4d,$6f + +SilphCo5Texts: ; 0x19fbc + dw SilphCo5Text1, SilphCo5Text2, SilphCo5Text3, SilphCo5Text4, SilphCo5Text5, SilphCo5Text6, SilphCo5Text7, SilphCo5Text8, SilphCo5Text9, SilphCo5Text10, SilphCo5Text11 + +INCBIN "baserom.gbc",$19fd2,$31 + +SilphCo5Text1: ; 0x1a003 + db $08 ; asm + ld hl, $6010 + ld de, $6015 + call $622f + jp $24d7 + +INCBIN "baserom.gbc",$1a010,$1a01a - $1a010 + +SilphCo5Text2: ; 0x1a01a + db $08 ; asm + ld hl, $5fd2 + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$1a024,$1a033 - $1a024 + +SilphCo5Text3: ; 0x1a033 + db $08 ; asm + ld hl, $5fde + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$1a03d,$1a04c - $1a03d + +SilphCo5Text4: ; 0x1a04c + db $08 ; asm + ld hl, $5fea + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$1a056,$1a065 - $1a056 + +SilphCo5Text5: ; 0x1a065 + db $08 ; asm + ld hl, $5ff6 + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$1a06f,$f + +SilphCo5Text9: ; 0x1a07e + TX_FAR _SilphCo5Text9 + db $50 + +SilphCo5Text10: ; 0x1a083 + TX_FAR _SilphCo5Text10 + db $50 + +SilphCo5Text11: ; 0x1a088 + TX_FAR _SilphCo5Text11 + db $50 + +SilphCo5Object: ; 0x1a08d (size=137) + db $2e ; border tile + + db $7 ; warps + db $0, $18, $1, SILPH_CO_6F + db $0, $1a, $1, SILPH_CO_4F + db $0, $14, $0, SILPH_CO_ELEVATOR + db $3, $1b, $5, SILPH_CO_7F + db $f, $9, $4, SILPH_CO_9F + db $5, $b, $4, SILPH_CO_3F + db $f, $3, $5, SILPH_CO_3F + + db $0 ; signs + + db $b ; people + db SPRITE_LAPRAS_GIVER, $9 + 4, $d + 4, $ff, $ff, $1 ; person + db SPRITE_ROCKET, $10 + 4, $8 + 4, $ff, $d3, $42, ROCKET + $C8, $1c ; trainer + db SPRITE_OAK_AIDE, $3 + 4, $8 + 4, $ff, $d3, $43, SCIENTIST + $C8, $6 ; trainer + db SPRITE_ROCKER, $a + 4, $12 + 4, $ff, $d1, $44, JUGGLER + $C8, $1 ; trainer + db SPRITE_ROCKET, $4 + 4, $1c + 4, $ff, $d1, $45, ROCKET + $C8, $1d ; trainer + db SPRITE_BALL, $d + 4, $2 + 4, $ff, $ff, $86, TM_09 ; item + db SPRITE_BALL, $6 + 4, $4 + 4, $ff, $ff, $87, PROTEIN ; item + db SPRITE_BALL, $10 + 4, $15 + 4, $ff, $ff, $88, CARD_KEY ; item + db SPRITE_CLIPBOARD, $c + 4, $16 + 4, $ff, $ff, $9 ; person + db SPRITE_CLIPBOARD, $a + 4, $19 + 4, $ff, $ff, $a ; person + db SPRITE_CLIPBOARD, $6 + 4, $18 + 4, $ff, $ff, $b ; person + + ; warp-to + EVENT_DISP $f, $0, $18 ; SILPH_CO_6F + EVENT_DISP $f, $0, $1a ; SILPH_CO_4F + EVENT_DISP $f, $0, $14 ; SILPH_CO_ELEVATOR + EVENT_DISP $f, $3, $1b ; SILPH_CO_7F + EVENT_DISP $f, $f, $9 ; SILPH_CO_9F + EVENT_DISP $f, $5, $b ; SILPH_CO_3F + EVENT_DISP $f, $f, $3 ; SILPH_CO_3F + +SilphCo5Blocks: ; 135 + INCBIN "maps/silphco5.blk" + +SilphCo6_h: ; 0x1a19d to 0x1a1a9 (12 bytes) (bank=6) (id=211) + db $16 ; tileset + db $09, $0d ; dimensions (y, x) + dw SilphCo6Blocks, SilphCo6Texts, SilphCo6Script ; blocks, texts, scripts + db $00 ; connections + + dw SilphCo6Object ; objects + +SilphCo6Script: ; 0x1a1a9 + call $61bf + call $3c3c + ld hl, $620a + ld de, $61f0 + ld a, [$d647] + call $3160 + ld [$d647], a + ret +; 0x1a1bf + +INCBIN "baserom.gbc",$1a1bf,$37 + +SilphCo6Texts: ; 0x1a1f6 + dw SilphCo6Text1, SilphCo6Text2, SilphCo6Text3, SilphCo6Text4, SilphCo6Text5, SilphCo6Text6, SilphCo6Text7, SilphCo6Text8, SilphCo6Text9, SilphCo6Text10 + +INCBIN "baserom.gbc",$1a20a,$33 + +SilphCo6Text1: ; 0x1a23d + db $08 ; asm + ld hl, $624a + ld de, $624f + call $622f + jp $24d7 + +INCBIN "baserom.gbc",$1a24a,$1a254 - $1a24a + +SilphCo6Text2: ; 0x1a254 + db $08 ; asm + ld hl, $6261 + ld de, $6266 + call $622f + jp $24d7 + +INCBIN "baserom.gbc",$1a261,$1a26b - $1a261 + +SilphCo6Text3: ; 0x1a26b + db $08 ; asm + ld hl, $6278 + ld de, $627d + call $622f + jp $24d7 + +INCBIN "baserom.gbc",$1a278,$1a282 - $1a278 + +SilphCo6Text4: ; 0x1a282 + db $08 ; asm + ld hl, $628f + ld de, $6294 + call $622f + jp $24d7 + +INCBIN "baserom.gbc",$1a28f,$1a299 - $1a28f + +SilphCo6Text5: ; 0x1a299 + db $08 ; asm + ld hl, $62a6 + ld de, $62ab + call $622f + jp $24d7 + +INCBIN "baserom.gbc",$1a2a6,$1a2b0 - $1a2a6 + +SilphCo6Text6: ; 0x1a2b0 + db $08 ; asm + ld hl, $620a + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$1a2ba,$1a2c9 - $1a2ba + +SilphCo6Text7: ; 0x1a2c9 + db $08 ; asm + ld hl, $6216 + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$1a2d3,$1a2e2 - $1a2d3 + +SilphCo6Text8: ; 0x1a2e2 + db $08 ; asm + ld hl, $6222 + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$1a2ec,$f + +SilphCo6Object: ; 0x1a2fb (size=112) + db $2e ; border tile + + db $5 ; warps + db $0, $10, $1, SILPH_CO_7F + db $0, $e, $0, SILPH_CO_5F + db $0, $12, $0, SILPH_CO_ELEVATOR + db $3, $3, $4, SILPH_CO_4F + db $3, $17, $6, SILPH_CO_2F + + db $0 ; signs + + db $a ; people + db SPRITE_LAPRAS_GIVER, $6 + 4, $a + 4, $ff, $ff, $1 ; person + db SPRITE_LAPRAS_GIVER, $6 + 4, $14 + 4, $ff, $ff, $2 ; person + db SPRITE_ERIKA, $6 + 4, $15 + 4, $ff, $d0, $3 ; person + db SPRITE_ERIKA, $a + 4, $b + 4, $ff, $d3, $4 ; person + db SPRITE_LAPRAS_GIVER, $d + 4, $12 + 4, $ff, $d1, $5 ; person + db SPRITE_ROCKET, $3 + 4, $11 + 4, $ff, $d3, $46, ROCKET + $C8, $1e ; trainer + db SPRITE_OAK_AIDE, $8 + 4, $7 + 4, $ff, $d0, $47, SCIENTIST + $C8, $7 ; trainer + db SPRITE_ROCKET, $f + 4, $e + 4, $ff, $d2, $48, ROCKET + $C8, $1f ; trainer + db SPRITE_BALL, $c + 4, $3 + 4, $ff, $ff, $89, HP_UP ; item + db SPRITE_BALL, $f + 4, $2 + 4, $ff, $ff, $8a, X_ACCURACY ; item + + ; warp-to + EVENT_DISP $d, $0, $10 ; SILPH_CO_7F + EVENT_DISP $d, $0, $e ; SILPH_CO_5F + EVENT_DISP $d, $0, $12 ; SILPH_CO_ELEVATOR + EVENT_DISP $d, $3, $3 ; SILPH_CO_4F + EVENT_DISP $d, $3, $17 ; SILPH_CO_2F + +SilphCo6Blocks: ; 117 + INCBIN "maps/silphco6.blk" + +INCBIN "baserom.gbc",$1a3e0,$1c20 + +SECTION "bank7",DATA,BANK[$7] + +CinnabarIsland_h: ; 0x1c000 to 0x1c022 (34 bytes) (bank=7) (id=8) + db $00 ; tileset + db $09, $0a ; dimensions (y, x) + dw CinnabarIslandBlocks, CinnabarIslandTexts, CinnabarIslandScript ; blocks, texts, scripts + db NORTH | EAST ; connections + + ; connections data + + db ROUTE_21 + dw $5211, $c6eb ; pointers (connected, current) (strip) + db $0a, $0a ; bigness, width + db $59, $00 ; alignments (y, x) + dw $c9b9 ; window + + db ROUTE_20 + dw $417d, $c725 ; pointers (connected, current) (strip) + db $09, $32 ; bigness, width + db $00, $00 ; alignments (y, x) + dw $c721 ; window + + ; end connection data + + dw CinnabarIslandObject ; objects + +CinnabarIslandObject: ; 0x1c022 (size=71) + db $43 ; border tile + + db $5 ; warps + db $3, $6, $1, MANSION_1 + db $3, $12, $0, CINNABAR_GYM + db $9, $6, $0, CINNABAR_LAB_1 + db $b, $b, $0, CINNABAR_POKECENTER + db $b, $f, $0, CINNABAR_MART + + db $5 ; signs + db $5, $9, $3 ; CinnabarIslandText3 + db $b, $10, $4 ; CinnabarIslandText4 + db $b, $c, $5 ; CinnabarIslandText5 + db $b, $9, $6 ; CinnabarIslandText6 + db $3, $d, $7 ; CinnabarIslandText7 + + db $2 ; people + db SPRITE_GIRL, $5 + 4, $c + 4, $fe, $2, $1 ; person + db SPRITE_GAMBLER, $6 + 4, $e + 4, $ff, $ff, $2 ; person + + ; warp-to + EVENT_DISP $a, $3, $6 ; MANSION_1 + EVENT_DISP $a, $3, $12 ; CINNABAR_GYM + EVENT_DISP $a, $9, $6 ; CINNABAR_LAB_1 + EVENT_DISP $a, $b, $b ; CINNABAR_POKECENTER + EVENT_DISP $a, $b, $f ; CINNABAR_MART + +CinnabarIslandBlocks: ; 90 + INCBIN "maps/cinnabarisland.blk" + +Route1_h: ; 0x1c0c3 to 0x1c0e5 (34 bytes) (bank=7) (id=12) + db $00 ; tileset + db $12, $0a ; dimensions (y, x) + dw Route1Blocks, Route1Texts, Route1Script ; blocks, texts, scripts + db NORTH | SOUTH ; connections + + ; connections data + + db VIRIDIAN_CITY + dw $451a, $c6e8 ; pointers (connected, current) (strip) + db $10, $14 ; bigness, width + db $23, $0a ; alignments (y, x) + dw $c8bd ; window + + db PALLET_TOWN + dw $42fd, $c83b ; pointers (connected, current) (strip) + db $0a, $0a ; bigness, width + db $00, $00 ; alignments (y, x) + dw $c6f9 ; window + + ; end connection data + + dw Route1Object ; objects + +Route1Object: ; 0x1c0e5 (size=19) + db $b ; border tile + + db $0 ; warps + + db $1 ; signs + db $1b, $9, $3 ; Route1Text3 + + db $2 ; people + db SPRITE_BUG_CATCHER, $18 + 4, $5 + 4, $fe, $1, $1 ; person + db SPRITE_BUG_CATCHER, $d + 4, $f + 4, $fe, $2, $2 ; person + +INCBIN "baserom.gbc",$1c0f8,$4 + +Route1Blocks: ; 180 + INCBIN "maps/route1.blk" + +UndergroundPathEntranceRoute8Blocks: ; 16 + INCBIN "maps/undergroundpathentranceroute8.blk" + +OaksLabBlocks: ; 30 + INCBIN "maps/oakslab.blk" + +Route16HouseBlocks: +Route2HouseBlocks: +SaffronHouse1Blocks: +SaffronHouse2Blocks: +VermilionHouse1Blocks: +NameRaterBlocks: +LavenderHouse1Blocks: +LavenderHouse2Blocks: +CeruleanHouse2Blocks: +PewterHouse1Blocks: +PewterHouse2Blocks: +ViridianHouseBlocks: ; 16 0x1c1de 41DE + INCBIN "maps/viridianhouse.blk" + +CeladonMansion5Blocks: +SchoolBlocks: ; 16 0x1c1ee 41EE + INCBIN "maps/school.blk" + +CeruleanHouseTrashedBlocks: ; 16 + INCBIN "maps/ceruleanhousetrashed.blk" + +DiglettsCaveEntranceRoute11Blocks: +DiglettsCaveRoute2Blocks: ; 16 + INCBIN "maps/diglettscaveroute2.blk" + +MonsterNames: ; 421E + db "RHYDON@@@@" + db "KANGASKHAN" + db "NIDORAN♂@@" + db "CLEFAIRY@@" + db "SPEAROW@@@" + db "VOLTORB@@@" + db "NIDOKING@@" + db "SLOWBRO@@@" + db "IVYSAUR@@@" + db "EXEGGUTOR@" + db "LICKITUNG@" + db "EXEGGCUTE@" + db "GRIMER@@@@" + db "GENGAR@@@@" + db "NIDORAN♀@@" + db "NIDOQUEEN@" + db "CUBONE@@@@" + db "RHYHORN@@@" + db "LAPRAS@@@@" + db "ARCANINE@@" + db "MEW@@@@@@@" + db "GYARADOS@@" + db "SHELLDER@@" + db "TENTACOOL@" + db "GASTLY@@@@" + db "SCYTHER@@@" + db "STARYU@@@@" + db "BLASTOISE@" + db "PINSIR@@@@" + db "TANGELA@@@" + db "MISSINGNO." + db "MISSINGNO." + db "GROWLITHE@" + db "ONIX@@@@@@" + db "FEAROW@@@@" + db "PIDGEY@@@@" + db "SLOWPOKE@@" + db "KADABRA@@@" + db "GRAVELER@@" + db "CHANSEY@@@" + db "MACHOKE@@@" + db "MR.MIME@@@" + db "HITMONLEE@" + db "HITMONCHAN" + db "ARBOK@@@@@" + db "PARASECT@@" + db "PSYDUCK@@@" + db "DROWZEE@@@" + db "GOLEM@@@@@" + db "MISSINGNO." + db "MAGMAR@@@@" + db "MISSINGNO." + db "ELECTABUZZ" + db "MAGNETON@@" + db "KOFFING@@@" + db "MISSINGNO." + db "MANKEY@@@@" + db "SEEL@@@@@@" + db "DIGLETT@@@" + db "TAUROS@@@@" + db "MISSINGNO." + db "MISSINGNO." + db "MISSINGNO." + db "FARFETCH'D" + db "VENONAT@@@" + db "DRAGONITE@" + db "MISSINGNO." + db "MISSINGNO." + db "MISSINGNO." + db "DODUO@@@@@" + db "POLIWAG@@@" + db "JYNX@@@@@@" + db "MOLTRES@@@" + db "ARTICUNO@@" + db "ZAPDOS@@@@" + db "DITTO@@@@@" + db "MEOWTH@@@@" + db "KRABBY@@@@" + db "MISSINGNO." + db "MISSINGNO." + db "MISSINGNO." + db "VULPIX@@@@" + db "NINETALES@" + db "PIKACHU@@@" + db "RAICHU@@@@" + db "MISSINGNO." + db "MISSINGNO." + db "DRATINI@@@" + db "DRAGONAIR@" + db "KABUTO@@@@" + db "KABUTOPS@@" + db "HORSEA@@@@" + db "SEADRA@@@@" + db "MISSINGNO." + db "MISSINGNO." + db "SANDSHREW@" + db "SANDSLASH@" + db "OMANYTE@@@" + db "OMASTAR@@@" + db "JIGGLYPUFF" + db "WIGGLYTUFF" + db "EEVEE@@@@@" + db "FLAREON@@@" + db "JOLTEON@@@" + db "VAPOREON@@" + db "MACHOP@@@@" + db "ZUBAT@@@@@" + db "EKANS@@@@@" + db "PARAS@@@@@" + db "POLIWHIRL@" + db "POLIWRATH@" + db "WEEDLE@@@@" + db "KAKUNA@@@@" + db "BEEDRILL@@" + db "MISSINGNO." + db "DODRIO@@@@" + db "PRIMEAPE@@" + db "DUGTRIO@@@" + db "VENOMOTH@@" + db "DEWGONG@@@" + db "MISSINGNO." + db "MISSINGNO." + db "CATERPIE@@" + db "METAPOD@@@" + db "BUTTERFREE" + db "MACHAMP@@@" + db "MISSINGNO." + db "GOLDUCK@@@" + db "HYPNO@@@@@" + db "GOLBAT@@@@" + db "MEWTWO@@@@" + db "SNORLAX@@@" + db "MAGIKARP@@" + db "MISSINGNO." + db "MISSINGNO." + db "MUK@@@@@@@" + db "MISSINGNO." + db "KINGLER@@@" + db "CLOYSTER@@" + db "MISSINGNO." + db "ELECTRODE@" + db "CLEFABLE@@" + db "WEEZING@@@" + db "PERSIAN@@@" + db "MAROWAK@@@" + db "MISSINGNO." + db "HAUNTER@@@" + db "ABRA@@@@@@" + db "ALAKAZAM@@" + db "PIDGEOTTO@" + db "PIDGEOT@@@" + db "STARMIE@@@" + db "BULBASAUR@" + db "VENUSAUR@@" + db "TENTACRUEL" + db "MISSINGNO." + db "GOLDEEN@@@" + db "SEAKING@@@" + db "MISSINGNO." + db "MISSINGNO." + db "MISSINGNO." + db "MISSINGNO." + db "PONYTA@@@@" + db "RAPIDASH@@" + db "RATTATA@@@" + db "RATICATE@@" + db "NIDORINO@@" + db "NIDORINA@@" + db "GEODUDE@@@" + db "PORYGON@@@" + db "AERODACTYL" + db "MISSINGNO." + db "MAGNEMITE@" + db "MISSINGNO." + db "MISSINGNO." + db "CHARMANDER" + db "SQUIRTLE@@" + db "CHARMELEON" + db "WARTORTLE@" + db "CHARIZARD@" + db "MISSINGNO." + db "MISSINGNO." + db "MISSINGNO." + db "MISSINGNO." + db "ODDISH@@@@" + db "GLOOM@@@@@" + db "VILEPLUME@" + db "BELLSPROUT" + db "WEEPINBELL" + db "VICTREEBEL" + +INCBIN "baserom.gbc",$1c98a,$1ca19 - $1c98a + +CinnabarIslandScript: ; 0x1ca19 + call $3c3c + ld hl, $d126 + set 5, [hl] + ld hl, $d796 + res 0, [hl] + ld hl, $d7a3 + res 1, [hl] + ld hl, $4a34 + ld a, [$d639] + jp $3d97 +; 0x1ca34 + +CinnabarIslandScripts: ; 0x1ca34 + dw CinnabarIslandScript0, CinnabarIslandScript1 + +CinnabarIslandScript0: ; 0x1ca38 + ld b, $2b + call $3493 + ret nz + ld a, [$d361] + cp $4 + ret nz + ld a, [$d362] + cp $12 + ret nz + ld a, $8 + ld [$d528], a + ld a, $8 + ld [$ff00+$8c], a + call $2920 + xor a + ld [$ff00+$b4], a + ld a, $1 + ld [$cd38], a + ld a, $80 + ld [$ccd3], a + call $3486 + xor a + ld [$c109], a + ld [$cd6b], a + ld a, $1 + ld [$d639], a + ret +; 0x1ca73 + +CinnabarIslandScript1: ; 0x1ca73 + ld a, [$cd38] + and a + ret nz + call Delay3 + ld a, $0 + ld [$d639], a + ret +; 0x1ca81 + +CinnabarIslandTexts: ; 0x1ca81 + dw CinnabarIslandText1, CinnabarIslandText2, CinnabarIslandText3, CinnabarIslandText4, CinnabarIslandText5, CinnabarIslandText6, CinnabarIslandText7, CinnabarIslandText8 + +CinnabarIslandText8: +INCBIN "baserom.gbc",$1ca91,$5 + +CinnabarIslandText1: ; 0x1ca96 + TX_FAR _CinnabarIslandText1 + db $50 + +CinnabarIslandText2: ; 0x1ca9b + TX_FAR _CinnabarIslandText2 + db $50 + +CinnabarIslandText3: ; 0x1caa0 + TX_FAR _CinnabarIslandText3 + db $50 + +CinnabarIslandText6: ; 0x1caa5 + TX_FAR _CinnabarIslandText6 + db $50 + +CinnabarIslandText7: ; 0x1caaa + TX_FAR _CinnabarIslandText7 + db $50 + +Route1Script: ; 0x1caaf + jp $3c3c +; 0x1cab2 + +Route1Texts: ; 0x1cab2 + dw Route1Text1, Route1Text2, Route1Text3 + +Route1Text1: ; 0x1cab8 + db $08 ; asm + ld hl, $d7bf + bit 0, [hl] + set 0, [hl] + jr nz, .asm_02840 ; 0x1cac0 + ld hl, $4ae3 + call PrintText + ld bc, (POTION << 8) | 1 + call $3e2e + jr nc, .asm_a630e ; 0x1cace + ld hl, $4ae8 + jr .asm_46d43 ; 0x1cad3 +.asm_a630e ; 0x1cad5 + ld hl, $4af3 + jr .asm_46d43 ; 0x1cad8 +.asm_02840 ; 0x1cada + ld hl, $4aee +.asm_46d43 ; 0x1cadd + call PrintText + jp $24d7 + +INCBIN "baserom.gbc",$1cae3,$15 + +Route1Text2: ; 0x1caf8 + TX_FAR _Route1Text2 + db $50 + +Route1Text3: ; 0x1cafd + TX_FAR _Route1Text3 + db $50 + +OaksLab_h: ; 0x1cb02 to 0x1cb0e (12 bytes) (bank=7) (id=40) + db $05 ; tileset + db $06, $05 ; dimensions (y, x) + dw OaksLabBlocks, OaksLabTexts, OaksLabScript ; blocks, texts, scripts + db $00 ; connections + + dw OaksLabObject ; objects + +OaksLabScript: ; 0x1cb0e + ld a, [$d74b] + bit 6, a + call nz, $5076 + ld a, $1 + ld [$cf0c], a + xor a + ld [$cc3c], a + ld hl, $4b28 + ld a, [$d5f0] + jp $3d97 +; 0x1cb28 + +OaksLabScripts: ; 0x1cb28 + dw OaksLabScript0, OaksLabScript1, OaksLabScript2, OaksLabScript3, OaksLabScript4, OaksLabScript5, OaksLabScript6, OaksLabScript7 + +INCBIN "baserom.gbc",$1cb38,$16 + +OaksLabScript0: ; 0x1cb4e + ld a, [$d74b] + bit 7, a + ret z + ld a, [$cf10] + and a + ret nz + ld a, $31 + ld [$cc4d], a + ld a, $15 + call Predef + ld hl, $d72e + res 4, [hl] + ld a, $1 + ld [$d5f0], a + ret +; 0x1cb6e + +OaksLabScript1: ; 0x1cb6e + ld a, $8 + ld [$ff00+$8c], a + ld de, $4b7e + call $363a + ld a, $2 + ld [$d5f0], a + ret +; 0x1cb7e + +INCBIN "baserom.gbc",$1cb7e,$1cb82 - $1cb7e + +OaksLabScript2: ; 0x1cb82 + ld a, [$d730] + bit 0, a + ret nz + ld a, $31 + ld [$cc4d], a + ld a, $11 + call Predef + ld a, $2e + ld [$cc4d], a + ld a, $15 + call Predef + ld a, $3 + ld [$d5f0], a + ret +; 0x1cba2 + +OaksLabScript3: ; 0x1cba2 + call Delay3 + ld hl, $ccd3 + ld de, $4bcf + call $350c + dec a + ld [$cd38], a + call $3486 + ld a, $1 + ld [$ff00+$8c], a + xor a + ld [$ff00+$8d], a + call $34a6 + ld a, $5 + ld [$ff00+$8c], a + xor a + ld [$ff00+$8d], a + call $34a6 + ld a, $4 + ld [$d5f0], a + ret +; 0x1cbcf + +INCBIN "baserom.gbc",$1cbcf,$1cbd2 - $1cbcf + +OaksLabScript4: ; 0x1cbd2 + ld a, [$cd38] + and a + ret nz + ld hl, $d747 + set 0, [hl] + ld hl, $d74b + set 0, [hl] + ld a, $1 + ld [$ff00+$8c], a + ld a, $4 + ld [$ff00+$8d], a + call $34a6 + call $2429 + ld hl, $d733 + res 1, [hl] + call $2307 + ld a, $5 + ld [$d5f0], a + ret +; 0x1cbfd + +OaksLabScript5: ; 0x1cbfd + ld a, $fc + ld [$cd6b], a + ld a, $11 + ld [$ff00+$8c], a + call $2920 + call Delay3 + ld a, $12 + ld [$ff00+$8c], a + call $2920 + call Delay3 + ld a, $13 + ld [$ff00+$8c], a + call $2920 + call Delay3 + ld a, $14 + ld [$ff00+$8c], a + call $2920 + ld hl, $d74b + set 1, [hl] + xor a + ld [$cd6b], a + ld a, $6 + ld [$d5f0], a + ret +; 0x1cc36 + +OaksLabScript6: ; 0x1cc36 + ld a, [$d361] + cp $6 + ret nz + ld a, $5 + ld [$ff00+$8c], a + xor a + ld [$ff00+$8d], a + call $34a6 + ld a, $1 + ld [$ff00+$8c], a + xor a + ld [$ff00+$8d], a + call $34a6 + call $2429 + ld a, $c + ld [$ff00+$8c], a + call $2920 + ld a, $1 + ld [$cd38], a + ld a, $40 + ld [$ccd3], a + call $3486 + ld a, $8 + ld [$d528], a + ld a, $7 + ld [$d5f0], a + ret +; 0x1cc72 + +OaksLabScript7: ; 0x1cc72 + ld a, [$cd38] + and a + ret nz + call Delay3 + ld a, $6 + ld [$d5f0], a + ret +; 0x1cc80 + +INCBIN "baserom.gbc",$1cc80,$402 + +OaksLabTexts: ; 0x1d082 + dw OaksLabText1, OaksLabText2, OaksLabText3, OaksLabText4, OaksLabText5, OaksLabText6, OaksLabText7, OaksLabText8, OaksLabText9, OaksLabText10, OaksLabText11, OaksLabText12, OaksLabText13, OaksLabText14, OaksLabText15, OaksLabText16, OaksLabText17, OaksLabText18, OaksLabText19, OaksLabText20, OaksLabText21, OaksLabText22, OaksLabText23, OaksLabText24, OaksLabText25, OaksLabText26, OaksLabText27 + +INCBIN "baserom.gbc",$1d0b8,22 + +OaksLabText1: ; 0x1d0ce + db $08 ; asm + ld a, [$d74b] + bit 0, a + jr nz, .asm_6a7a2 ; 0x1d0d4 + ld hl, $50f3 + call PrintText + jr .asm_ff2ed ; 0x1d0dc +.asm_6a7a2 ; 0x1d0de + bit 2, a + jr nz, .asm_56780 ; 0x1d0e0 + ld hl, $50f8 + call PrintText + jr .asm_ff2ed ; 0x1d0e8 +.asm_56780 ; 0x1d0ea + ld hl, $50fd + call PrintText +.asm_ff2ed ; 0x1d0f0 + jp $24d7 + +INCBIN "baserom.gbc",$1d0f3,$1d102 - $1d0f3 + +OaksLabText2: ; 0x1d102 + db $8 + ld a, $b1 + ld [$cd3d], a + ld a, $3 + ld [$cd3e], a + ld a, $b0 + ld b, $2 + jr asm_5e6bb ; 0x1d111 $20 + +OaksLabText3: ; 0x1d113 + db $8 + ld a, $99 + ld [$cd3d], a + ld a, $4 + ld [$cd3e], a + ld a, $b1 + ld b, $3 + jr asm_5e6bb ; 0x1d122 $f + +OaksLabText4: ; 0x1d124 + db $8 + ld a, $b0 + ld [$cd3d], a + ld a, $2 + ld [$cd3e], a + ld a, $99 + ld b, $4 + +asm_5e6bb: ; 0x1d133 + ld [$cf91], a + ld [$d11e], a + ld a, b + ld [$cf13], a + ld a, [$d74b] + bit 2, a + jp nz, $522d + bit 1, a + jr nz, asm_9eaa4 ; 0x1d147 $e + ld hl, $5152 + call PrintText + jp $24d7 +; 0x1d152 + +;XXX which text is this? +db $17, $df, $4d, $25, $50 + +asm_9eaa4: ; 0x1d157 + ld a, $5 + ld [$ff00+$8c], a + ld a, $9 + ld [$ff00+$8b], a + call $34fc + ld [hl], $0 + ; manually fixed some disassembler issues around here + ld a, $1 + ld [$FF8c], a + ld a, $9 + ld [$ff00+$8b], a + call $34fc + ld [hl], $c + ld hl, $d730 + set 6, [hl] + ld a, $46 + call Predef + ld hl, $d730 + res 6, [hl] + call $3071 + ld c, $a + call $3739 + ld a, [$cf13] + cp $2 + jr z, asm_f6e3a ; 0x1d18d $6 + cp $3 + jr z, asm_2391d ; 0x1d191 $c + jr asm_ddec1 ; 0x1d193 $14 +asm_f6e3a: ; 0x1d195 + ld hl, $519a + jr asm_b5ddf ; 0x1d198 $19 + rla ; probably a TX_FAR + ld b, $4e + dec h + ld d, b +asm_2391d: ; 0x1d19f + ld hl, $51a4 + jr asm_b5ddf ; 0x1d1a2 $f + rla ; probably a TX_FAR + cpl + ld c, [hl] + dec h + ld d, b +asm_ddec1: ; 0x1d1a9 + ld hl, $51ae + jr asm_b5ddf ; 0x1d1ac $5 + rla ; probably a TX_FAR + ld d, a + ld c, [hl] + dec h + ld d, b +asm_b5ddf: ; 0x1d1b3 + call PrintText + ld a, $1 + ld [$cc3c], a + call $35ec + ld a, [$cc26] + and a + jr nz, asm_6ccd7 ; 0x1d1c2 $5b + ld a, [$cf91] + ld [$d717], a + ld [$d11e], a + call GetMonName + ld a, [$cf13] + cp $2 + jr nz, asm_5b538 ; 0x1d1d5 $4 + ld a, $2b + jr asm_03e85 ; 0x1d1d9 $a +asm_5b538: ; 0x1d1db + cp $3 + jr nz, asm_f8b3f ; 0x1d1dd $4 + ld a, $2c + jr asm_03e85 ; 0x1d1e1 $2 +asm_f8b3f: ; 0x1d1e3 + ld a, $2d +asm_03e85: ; 0x1d1e5 + ld [$cc4d], a + ld a, $11 + call Predef + ld a, $1 + ld [$cc3c], a + ld hl, $5222 + call PrintText + ld hl, $5227 + call PrintText + xor a + ld [$cc49], a + ld a, $5 + ld [$d127], a + ld a, [$cf91] + ld [$d11e], a + call AddPokemonToParty + ld hl, $d72e + set 3, [hl] + ld a, $fc + ld [$cd6b], a + ld a, $8 + ld [$d5f0], a +asm_6ccd7: ; 0x1d21f + jp $24d7 +; 0x1d222 + +INCBIN "baserom.gbc",$1d222,$26 + +OaksLabText5: ; 0x1d248 + db $08 ; asm + ld a, [$d747] + bit 6, a + jr nz, .asm_50e81 ; 0x1d24e + ld hl, $d2f7 + ld b, $13 + call $2b7f + ld a, [$d11e] + cp $2 + jr c, .asm_b28b0 ; 0x1d25d + ld a, [$d74b] + bit 5, a + jr z, .asm_b28b0 ; 0x1d264 +.asm_50e81 ; 0x1d266 + ld hl, $531d + call PrintText + ld a, $1 + ld [$cc3c], a + ld a, $56 + call Predef + jp $52ed +.asm_b28b0 ; 0x1d279 + ld b,POKE_BALL + call $3493 + jr nz, .asm_17c30 ; 0x1d27e + ld a, [$d7eb] + bit 5, a + jr nz, .asm_f1adc ; 0x1d285 + ld a, [$d74b] + bit 5, a + jr nz, .asm_333a2 ; 0x1d28c + bit 3, a + jr nz, .asm_76269 ; 0x1d290 + ld a, [$d72e] + bit 3, a + jr nz, .asm_4a5e0 ; 0x1d297 + ld hl, $52f0 + call PrintText + jr .asm_0f042 ; 0x1d29f +.asm_4a5e0 ; 0x1d2a1 + ld hl, $52f5 + call PrintText + jr .asm_0f042 ; 0x1d2a7 +.asm_76269 ; 0x1d2a9 + ld b,OAKS_PARCEL + call $3493 + jr nz, .asm_a8fcf ; 0x1d2ae + ld hl, $52fa + call PrintText + jr .asm_0f042 ; 0x1d2b6 +.asm_a8fcf ; 0x1d2b8 + ld hl, $52ff + call PrintText + call $500a + ld a, $f + ld [$d5f0], a + jr .asm_0f042 ; 0x1d2c6 +.asm_333a2 ; 0x1d2c8 + ld hl, $5309 + call PrintText + jr .asm_0f042 ; 0x1d2ce +.asm_f1adc ; 0x1d2d0 + ld hl, $d74b + bit 4, [hl] + set 4, [hl] + jr nz, .asm_17c30 ; 0x1d2d7 + ld bc, (POKE_BALL << 8) | 5 + call $3e2e + ld hl, $530e + call PrintText + jr .asm_0f042 ; 0x1d2e5 +.asm_17c30 ; 0x1d2e7 + ld hl, $5318 + call PrintText +.asm_0f042 ; 0x1d2ed + jp $24d7 +; 0x1d2f0 + +INCBIN "baserom.gbc",$1d2f0,$32 + +OaksLabText7: ; 0x1d322 +OaksLabText6: ; 0x1d322 + db $08 ; asm + ld hl, $532c + call PrintText + jp $24d7 + +INCBIN "baserom.gbc",$1d32c,$5 + +OaksLabText8: ; 0x1d331 + TX_FAR _OaksLabText8 + db $50 + +OaksLabText9: ; 0x1d336 + db $08 ; asm + ld hl, $5340 + call PrintText + jp $24d7 + +INCBIN "baserom.gbc",$1d340,$1d345 - $1d340 + +OaksLabText17: ; 0x1d345 + db $8 + ld hl, $534f + call PrintText + jp $24d7 +; 0x1d34f + +INCBIN "baserom.gbc",$1d34f,$1d354 - $1d34f + +OaksLabText18: ; 0x1d354 + db $8 + ld hl, $535e + call PrintText + jp $24d7 +; 0x1d35e + +INCBIN "baserom.gbc",$1d35e,$1d363 - $1d35e + +OaksLabText19: ; 0x1d363 + db $8 + ld hl, $536d + call PrintText + jp $24d7 +; 0x1d36d + +INCBIN "baserom.gbc",$1d36d,$1d372 - $1d36d + +OaksLabText20: ; 0x1d372 + db $8 + ld hl, $537c + call PrintText + jp $24d7 +; 0x1d37c + +INCBIN "baserom.gbc",$1d37c,$1d381 - $1d37c + +OaksLabText12: ; 0x1d381 +INCBIN "baserom.gbc",$1d381,$5 + +INCBIN "baserom.gbc",$1d386,$1d390 - $1d386 + +OaksLabText13: ; 0x1d390 +INCBIN "baserom.gbc",$1d390,$5 + +INCBIN "baserom.gbc",$1d395,$1d39f - $1d395 + +OaksLabText14: ; 0x1d39f + db $8 + ld hl, $53a9 + call PrintText + jp $24d7 +; 0x1d3a9 + +INCBIN "baserom.gbc",$1d3a9,$1d3af - $1d3a9 + +OaksLabText15: ; 0x1d3af to 0x1d3b9 + db $8 + ld hl, $53b9 + call PrintText + jp $24d7 +; 0x1d3b9 + +INCBIN "baserom.gbc",$1d3b9,$1d3c8 - $1d3b9 + +OaksLabText16: ; 0x1d3c8 + db $8 + ld hl, $53d2 + call PrintText + jp $24d7 +; 0x1d3d2 + +INCBIN "baserom.gbc",$1d3d2,$1d3d7 - $1d3d2 + +OaksLabText21: ; 0x1d3d7 +INCBIN "baserom.gbc",$1d3d7,$5 + +OaksLabText22: ; 0x1d3dc +INCBIN "baserom.gbc",$1d3dc,$5 + +OaksLabText23: ; 0x1d3e1 +INCBIN "baserom.gbc",$1d3e1,$5 + +OaksLabText24: ; 0x1d3e6 +INCBIN "baserom.gbc",$1d3e6,$5 + +OaksLabText25: ; 0x1d3eb +INCBIN "baserom.gbc",$1d3eb,$4 + db $11 + db $50 + +OaksLabText26: ; 0x1d3f1 +INCBIN "baserom.gbc",$1d3f1,$1d3f6 - $1d3f1 + +OaksLabText27: ; 0x1d3f6 +INCBIN "baserom.gbc",$1d3f6,5 + +OaksLabText11: +OaksLabText10: ; 0x1d3fb + db $08 ; asm + ld hl, $5405 + call PrintText + jp $24d7 + +INCBIN "baserom.gbc",$1d405,$5 + +OaksLabObject: ; 0x1d40a (size=88) + db $3 ; border tile + + db $2 ; warps + db $b, $4, $2, $ff + db $b, $5, $2, $ff + + db $0 ; signs + + db $b ; people + db SPRITE_BLUE, $3 + 4, $4 + 4, $ff, $ff, $41, SONY1 + $C8, $1 ; trainer + db SPRITE_BALL, $3 + 4, $6 + 4, $ff, $ff, $2 ; person + db SPRITE_BALL, $3 + 4, $7 + 4, $ff, $ff, $3 ; person + db SPRITE_BALL, $3 + 4, $8 + 4, $ff, $ff, $4 ; person + db SPRITE_OAK, $2 + 4, $5 + 4, $ff, $d0, $5 ; person + db SPRITE_BOOK_MAP_DEX, $1 + 4, $2 + 4, $ff, $ff, $6 ; person + db SPRITE_BOOK_MAP_DEX, $1 + 4, $3 + 4, $ff, $ff, $7 ; person + db SPRITE_OAK, $a + 4, $5 + 4, $ff, $d1, $8 ; person + db SPRITE_GIRL, $9 + 4, $1 + 4, $fe, $1, $9 ; person + db SPRITE_OAK_AIDE, $a + 4, $2 + 4, $ff, $ff, $a ; person + db SPRITE_OAK_AIDE, $a + 4, $8 + 4, $ff, $ff, $b ; person + + ; warp-to + EVENT_DISP $5, $b, $4 + EVENT_DISP $5, $b, $5 + +ViridianMart_h: ; 0x1d462 to 0x1d46e (12 bytes) (bank=7) (id=42) + db $02 ; tileset + db $04, $04 ; dimensions (y, x) + dw ViridianMartBlocks, ViridianMartTexts, ViridianMartScript ; blocks, texts, scripts + db $00 ; connections + + dw ViridianMartObject ; objects + +ViridianMartScript: ; 0x1d46e + call $547d + call $3c3c + ld hl, $5495 + ld a, [$d60d] + jp $3d97 +; 0x1d47d + +INCBIN "baserom.gbc",$1d47d,$1e + +ViridianMartScript0: ; 0x1d49b + call $2429 + ld a, $4 + ld [$ff00+$8c], a + call $2920 + ld hl, $ccd3 + ld de, $54bb + call $350c + dec a + ld [$cd38], a + call $3486 + ld a, $1 + ld [$d60d], a + ret +; 0x1d4bb + +INCBIN "baserom.gbc",$1d4bb,$1d4c0 - $1d4bb + +ViridianMartScript1: ; 0x1d4c0 + ld a, [$cd38] + and a + ret nz + call Delay3 + ld a, $5 + ld [$ff00+$8c], a + call $2920 + ld bc, $4601 + call GiveItem + ld hl, $d74e + set 1, [hl] + ld a, $2 + ld [$d60d], a + ret +; 0x1d4e0 + +ViridianMartTexts: ; 0x1d4e0 + dw ViridianMartText1, ViridianMartText2, ViridianMartText3 ;, ViridianMartText4 + +INCBIN "baserom.gbc",$1d4e6,$a + +ViridianMartText1: ; 0x1d4f0 + TX_FAR _ViridianMartText1 + db $50 + +INCBIN "baserom.gbc",$1d4f5,$1d500 - $1d4f5 + +ViridianMartText2: ; 0x1d500 + TX_FAR _ViridianMartText2 + db $50 + +ViridianMartText3: ; 0x1d505 + TX_FAR _ViridianMartText3 + db $50 + +ViridianMartObject: ; 0x1d50a (size=38) + db $0 ; border tile + + db $2 ; warps + db $7, $3, $1, $ff + db $7, $4, $1, $ff + + db $0 ; signs + + db $3 ; people + db SPRITE_MART_GUY, $5 + 4, $0 + 4, $ff, $d3, $1 ; person + db SPRITE_BUG_CATCHER, $5 + 4, $5 + 4, $fe, $1, $2 ; person + db SPRITE_BLACK_HAIR_BOY_1, $3 + 4, $3 + 4, $ff, $ff, $3 ; person + + ; warp-to + EVENT_DISP $4, $7, $3 + EVENT_DISP $4, $7, $4 + +ViridianMartBlocks: ; 16 + INCBIN "maps/viridianmart.blk" + +School_h: ; 0x1d540 to 0x1d54c (12 bytes) (bank=7) (id=43) + db $08 ; tileset + db $04, $04 ; dimensions (y, x) + dw SchoolBlocks, SchoolTexts, SchoolScript ; blocks, texts, scripts + db $00 ; connections + + dw SchoolObject ; objects + +SchoolScript: ; 0x1d54c + jp $3c3c +; 0x1d54f + +SchoolTexts: ; 0x1d54f + dw SchoolText1, SchoolText2 + +SchoolText1: ; 0x1d553 + TX_FAR _SchoolText1 + db $50 + +SchoolText2: ; 0x1d558 + TX_FAR _SchoolText2 + db $50 + +SchoolObject: ; 0x1d55d (size=32) + db $a ; border tile + + db $2 ; warps + db $7, $2, $2, $ff + db $7, $3, $2, $ff + + db $0 ; signs + + db $2 ; people + db SPRITE_BRUNETTE_GIRL, $5 + 4, $3 + 4, $ff, $d1, $1 ; person + db SPRITE_LASS, $1 + 4, $4 + 4, $ff, $d0, $2 ; person + + ; warp-to + EVENT_DISP $4, $7, $2 + EVENT_DISP $4, $7, $3 + +ViridianHouse_h: ; 0x1d57d to 0x1d589 (12 bytes) (bank=7) (id=44) + db $08 ; tileset + db $04, $04 ; dimensions (y, x) + dw ViridianHouseBlocks, ViridianHouseTexts, ViridianHouseScript ; blocks, texts, scripts + db $00 ; connections + + dw ViridianHouseObject ; objects + +INCBIN "baserom.gbc",$1d589,$1d58a - $1d589 + +ViridianHouseScript: ; 0x1d58a + jp $3c3c +; 0x1d58d + +ViridianHouseTexts: ; 0x1d58d + dw ViridianHouseText1, ViridianHouseText2, ViridianHouseText3, ViridianHouseText4 + +ViridianHouseText1: ; 0x1d595 + TX_FAR _ViridianHouseText1 + db $50 + +ViridianHouseText2: ; 0x1d59a + TX_FAR _ViridianHouseText2 + db $50 + +ViridianHouseText3: ; 0x1d59f + db $08 ; asm + ld hl, $55b1 + call PrintText + ld a,SPEAROW + call $13d0 + call $3748 + jp $24d7 + +INCBIN "baserom.gbc",$1d5b1,$5 + +ViridianHouseText4: ; 0x1d5b6 + TX_FAR _ViridianHouseText4 + db $50 + +ViridianHouseObject: ; 0x1d5bb (size=44) + db $a ; border tile + + db $2 ; warps + db $7, $2, $3, $ff + db $7, $3, $3, $ff + + db $0 ; signs + + db $4 ; people + db SPRITE_BALDING_GUY, $3 + 4, $5 + 4, $ff, $ff, $1 ; person + db SPRITE_LITTLE_GIRL, $4 + 4, $1 + 4, $fe, $1, $2 ; person + db SPRITE_BIRD, $5 + 4, $5 + 4, $fe, $2, $3 ; person + db SPRITE_CLIPBOARD, $0 + 4, $4 + 4, $ff, $ff, $4 ; person + + ; warp-to + EVENT_DISP $4, $7, $2 + EVENT_DISP $4, $7, $3 + +PewterHouse1_h: ; 0x1d5e7 to 0x1d5f3 (12 bytes) (bank=7) (id=55) + db $08 ; tileset + db $04, $04 ; dimensions (y, x) + dw PewterHouse1Blocks, PewterHouse1Texts, PewterHouse1Script ; blocks, texts, scripts + db $00 ; connections + + dw PewterHouse1Object ; objects + +PewterHouse1Script: ; 0x1d5f3 + jp $3c3c +; 0x1d5f6 + +PewterHouse1Texts: ; 0x1d5f6 + dw PewterHouse1Text1, PewterHouse1Text2, PewterHouse1Text3 + +PewterHouse1Text1: ; 0x1d5fc + TX_FAR _PewterHouse1Text1 + db $08 ; asm + ld a, $3 + call $13d0 + call $3748 + jp $24d7 + +PewterHouse1Text2: ; 0x1d60c + TX_FAR _PewterHouse1Text2 + db $50 + +PewterHouse1Text3: ; 0x1d611 + TX_FAR _PewterHouse1Text3 + db $50 + +PewterHouse1Object: ; 0x1d616 (size=38) + db $a ; border tile + + db $2 ; warps + db $7, $2, $3, $ff + db $7, $3, $3, $ff + + db $0 ; signs + + db $3 ; people + db SPRITE_SLOWBRO, $5 + 4, $4 + 4, $ff, $d2, $1 ; person + db SPRITE_YOUNG_BOY, $5 + 4, $3 + 4, $ff, $d3, $2 ; person + db SPRITE_FAT_BALD_GUY, $2 + 4, $1 + 4, $ff, $ff, $3 ; person + + ; warp-to + EVENT_DISP $4, $7, $2 + EVENT_DISP $4, $7, $3 + +PewterHouse2_h: ; 0x1d63c to 0x1d648 (12 bytes) (bank=7) (id=57) + db $08 ; tileset + db $04, $04 ; dimensions (y, x) + dw PewterHouse2Blocks, PewterHouse2Texts, PewterHouse2Script ; blocks, texts, scripts + db $00 ; connections + + dw PewterHouse2Object ; objects + +PewterHouse2Script: ; 0x1d648 + jp $3c3c +; 0x1d64b + +PewterHouse2Texts: ; 0x1d64b + dw PewterHouse2Text1, PewterHouse2Text2 + +PewterHouse2Text1: ; 0x1d64f + TX_FAR _PewterHouse2Text1 + db $50 + +PewterHouse2Text2: ; 0x1d654 + TX_FAR _PewterHouse2Text2 + db $50 + +PewterHouse2Object: ; 0x1d659 (size=32) + db $a ; border tile + + db $2 ; warps + db $7, $2, $5, $ff + db $7, $3, $5, $ff + + db $0 ; signs + + db $2 ; people + db SPRITE_GAMBLER, $3 + 4, $2 + 4, $ff, $d3, $1 ; person + db SPRITE_BUG_CATCHER, $5 + 4, $4 + 4, $ff, $ff, $2 ; person + + ; warp-to + EVENT_DISP $4, $7, $2 + EVENT_DISP $4, $7, $3 + +CeruleanHouseTrashed_h: ; 0x1d679 to 0x1d685 (12 bytes) (bank=7) (id=62) + db $08 ; tileset + db $04, $04 ; dimensions (y, x) + dw CeruleanHouseTrashedBlocks, CeruleanHouseTrashedTexts, CeruleanHouseTrashedScript ; blocks, texts, scripts + db $00 ; connections + + dw CeruleanHouseTrashedObject ; objects + +CeruleanHouseTrashedScript: ; 0x1d685 + call $3c3c + ret +; 0x1d689 + +CeruleanHouseTrashedTexts: ; 0x1d689 + dw CeruleanHouseTrashedText1, CeruleanHouseTrashedText2, CeruleanHouseTrashedText3 + +CeruleanHouseTrashedText1: ; 0x1d68f + db $08 ; asm + ld b, $e4 + ld a, $1c + call Predef + and b + jr z, .asm_f8734 ; 0x1d698 + ld hl, $56b0 + call PrintText + jr .asm_8dfe9 ; 0x1d6a0 +.asm_f8734 ; 0x1d6a2 + ld hl, $56ab + call PrintText +.asm_8dfe9 ; 0x1d6a8 + jp $24d7 + +INCBIN "baserom.gbc",$1d6ab,$a + +CeruleanHouseTrashedText2: ; 0x1d6b5 + TX_FAR _CeruleanHouseTrashedText2 + db $50 + +CeruleanHouseTrashedText3: ; 0x1d6ba + TX_FAR _CeruleanHouseTrashedText3 + db $50 + +CeruleanHouseTrashedObject: ; 0x1d6bf (size=43) + db $a ; border tile + + db $3 ; warps + db $7, $2, $0, $ff + db $7, $3, $0, $ff + db $0, $3, $7, $ff + + db $1 ; signs + db $0, $3, $3 ; CeruleanHouseTrashedText3 + + db $2 ; people + db SPRITE_FISHER, $1 + 4, $2 + 4, $ff, $d0, $1 ; person + db SPRITE_GIRL, $6 + 4, $5 + 4, $fe, $2, $2 ; person + + ; warp-to + EVENT_DISP $4, $7, $2 + EVENT_DISP $4, $7, $3 + EVENT_DISP $4, $0, $3 + +CeruleanHouse2_h: ; 0x1d6ea to 0x1d6f6 (12 bytes) (bank=7) (id=63) + db $08 ; tileset + db $04, $04 ; dimensions (y, x) + dw CeruleanHouse2Blocks, CeruleanHouse2Texts, CeruleanHouse2Script ; blocks, texts, scripts + db $00 ; connections + + dw CeruleanHouse2Object ; objects + +CeruleanHouse2Script: ; 0x1d6f6 + jp $3c3c +; 0x1d6f9 + +CeruleanHouse2Texts: ; 0x1d6f9 + dw CeruleanHouse2Text1, CeruleanHouse2Text2 + +CeruleanHouse2Text1: ; 0x1d6fd + TX_FAR _CeruleanHouse2Text1 + db $50 + +CeruleanHouse2Text2: ; 0x1d702 + db $08 ; asm + ld a, $6 + ld [W_WHICHTRADE], a + ld a, $54 + call Predef + jp $24d7 + +CeruleanHouse2Object: ; 0x1d710 (size=32) + db $a ; border tile + + db $2 ; warps + db $7, $2, $1, $ff + db $7, $3, $1, $ff + + db $0 ; signs + + db $2 ; people + db SPRITE_OLD_MEDIUM_WOMAN, $4 + 4, $5 + 4, $ff, $d2, $1 ; person + db SPRITE_GAMBLER, $2 + 4, $1 + 4, $ff, $ff, $2 ; person + + ; warp-to + EVENT_DISP $4, $7, $2 + EVENT_DISP $4, $7, $3 + +BikeShop_h: ; 0x1d730 to 0x1d73c (12 bytes) (bank=7) (id=66) + db $15 ; tileset + db $04, $04 ; dimensions (y, x) + dw BikeShopBlocks, BikeShopTexts, BikeShopScript ; blocks, texts, scripts + db $00 ; connections + + dw BikeShopObject ; objects + +BikeShopScript: ; 0x1d73c + jp $3c3c +; 0x1d73f + +BikeShopTexts: ; 0x1d73f + dw BikeShopText1, BikeShopText2, BikeShopText3 + +BikeShopText1: ; 0x1d745 + db $08 ; asm + ld a, [$d75f] + bit 0, a + jr z, .asm_260d4 ; 0x1d74b + ld hl, $582f + call PrintText + jp $57f5 +.asm_260d4 ; 0x1d756 + ld b,BIKE_VOUCHER + call $3493 + jr z, .asm_41190 ; 0x1d75b + ld hl, $581f + call PrintText + ld bc,(BICYCLE << 8) | 1 + call $3e2e + jr nc, .asm_d0d90 ; 0x1d769 + ld a, $2d + ldh [$db], a + ld b, $5 ; BANK(MyFunction) + ld hl, $7f37 ; MyFunction + call Bankswitch + ld hl, $d75f + set 0, [hl] + ld hl, $5824 + call PrintText + jr .asm_99ef2 ; 0x1d782 +.asm_d0d90 ; 0x1d784 + ld hl, $5834 + call PrintText + jr .asm_99ef2 ; 0x1d78a +.asm_41190 ; 0x1d78c + ld hl, $5810 + call PrintText + xor a + ld [$cc26], a + ld [$cc2a], a + ld a, $3 + ld [$cc29], a + ld a, $1 + ld [$cc28], a + ld a, $2 + ld [$cc24], a + ld a, $1 + ld [$cc25], a + ld hl, $d730 + set 6, [hl] + ld hl, $c3a0 + ld b, $4 + ld c, $f + call $1922 + call $2429 + ld hl, $c3ca + ld de, $57f8 + call $1955 + ld hl, $c3e4 + ld de, $5807 + call $1955 + ld hl, $5815 + call PrintText + call $3abe + bit 1, a + jr nz, .asm_b7579 ; 0x1d7dc + ld hl, $d730 + res 6, [hl] + ld a, [$cc26] + and a + jr nz, .asm_b7579 ; 0x1d7e7 + ld hl, $581a + call PrintText +.asm_b7579 ; 0x1d7ef + ld hl, $582a + call PrintText +.asm_99ef2 ; 0x1d7f5 + jp $24d7 + +INCBIN "baserom.gbc",$1d7f8,$1d839 - $1d7f8 + +BikeShopText2: ; 0x1d839 + db $08 ; asm + ld hl, $5843 + call PrintText + jp $24d7 + +INCBIN "baserom.gbc",$1d843,$1d848 - $1d843 + +BikeShopText3: ; 0x1d848 + db $08 ; asm + ld a, [$d75f] + bit 0, a + ld hl, $5861 + jr nz, .asm_34d2d ; 0x1d851 + ld hl, $585c +.asm_34d2d ; 0x1d856 + call PrintText + jp $24d7 + +INCBIN "baserom.gbc",$1d85c,$a + +BikeShopObject: ; 0x1d866 (size=38) + db $e ; border tile + + db $2 ; warps + db $7, $2, $4, $ff + db $7, $3, $4, $ff + + db $0 ; signs + + db $3 ; people + db SPRITE_BIKE_SHOP_GUY, $2 + 4, $6 + 4, $ff, $ff, $1 ; person + db SPRITE_MOM_GEISHA, $6 + 4, $5 + 4, $fe, $1, $2 ; person + db SPRITE_BUG_CATCHER, $3 + 4, $1 + 4, $ff, $d1, $3 ; person + + ; warp-to + EVENT_DISP $4, $7, $2 + EVENT_DISP $4, $7, $3 + +BikeShopBlocks: ; 16 + INCBIN "maps/bikeshop.blk" + +LavenderHouse1_h: ; 0x1d89c to 0x1d8a8 (12 bytes) (bank=7) (id=149) + db $08 ; tileset + db $04, $04 ; dimensions (y, x) + dw LavenderHouse1Blocks, LavenderHouse1Texts, LavenderHouse1Script ; blocks, texts, scripts + db $00 ; connections + + dw LavenderHouse1Object ; objects + +LavenderHouse1Script: ; 0x1d8a8 + call $3c3c + ret +; 0x1d8ac + +LavenderHouse1Texts: ; 0x1d8ac + dw LavenderHouse1Text1, LavenderHouse1Text2, LavenderHouse1Text3, LavenderHouse1Text4, LavenderHouse1Text5, LavenderHouse1Text6 + +LavenderHouse1Text1: ; 0x1d8b8 + db $08 ; asm + ld a, [$d7e0] + bit 7, a + jr nz, .asm_72e5d ; 0x1d8be + ld hl, $58d1 + call PrintText + jr .asm_6957f ; 0x1d8c6 +.asm_72e5d ; 0x1d8c8 + ld hl, $58d6 + call PrintText +.asm_6957f ; 0x1d8ce + jp $24d7 + +INCBIN "baserom.gbc",$1d8d1,$1d8db - $1d8d1 + +LavenderHouse1Text2: ; 0x1d8db + db $08 ; asm + ld a, [$d7e0] + bit 7, a + jr nz, .asm_06470 ; 0x1d8e1 + ld hl, $58f4 + call PrintText + jr .asm_3d208 ; 0x1d8e9 +.asm_06470 ; 0x1d8eb + ld hl, $58f9 + call PrintText +.asm_3d208 ; 0x1d8f1 + jp $24d7 + +INCBIN "baserom.gbc",$1d8f4,$a + +LavenderHouse1Text3: ; 0x1d8fe + TX_FAR _LavenderHouse1Text3 + db $8 + ld a, $2f + call $13d0 + jp $24d7 + +LavenderHouse1Text4: ; 0x1d90b + TX_FAR _LavenderHouse1Text4 + db $8 + ld a, $a7 + call $13d0 + jp $24d7 +; 0x1d918 + +LavenderHouse1Text5: ; 0x1d918 + db $08 ; asm + ld a, [$d76c] + bit 0, a + jr nz, .asm_15ac2 ; 0x1d91e + ld hl, $594c + call PrintText + ld bc, (POKE_FLUTE << 8) | 1 + call $3e2e + jr nc, .asm_5ce36 ; 0x1d92c + ld hl, $5951 + call PrintText + ld hl, $d76c + set 0, [hl] + jr .asm_da749 ; 0x1d939 +.asm_5ce36 ; 0x1d93b + ld hl, $595b + call PrintText + jr .asm_da749 ; 0x1d941 +.asm_15ac2 ; 0x1d943 + ld hl, $5960 + call PrintText +.asm_da749 ; 0x1d949 + jp $24d7 + +INCBIN "baserom.gbc",$1d94c,$19 + +LavenderHouse1Text6: ; 0x1d965 + TX_FAR _LavenderHouse1Text6 + db $50 + +LavenderHouse1Object: ; 0x1d96a (size=56) + db $a ; border tile + + db $2 ; warps + db $7, $2, $2, $ff + db $7, $3, $2, $ff + + db $0 ; signs + + db $6 ; people + db SPRITE_BLACK_HAIR_BOY_2, $5 + 4, $3 + 4, $ff, $ff, $1 ; person + db SPRITE_LITTLE_GIRL, $3 + 4, $6 + 4, $ff, $d0, $2 ; person + db SPRITE_SLOWBRO, $4 + 4, $6 + 4, $ff, $d1, $3 ; person + db SPRITE_SLOWBRO, $3 + 4, $1 + 4, $ff, $ff, $4 ; person + db SPRITE_MR_FUJI, $1 + 4, $3 + 4, $ff, $ff, $5 ; person + db SPRITE_BOOK_MAP_DEX, $3 + 4, $3 + 4, $ff, $ff, $6 ; person + + ; warp-to + EVENT_DISP $4, $7, $2 + EVENT_DISP $4, $7, $3 + +LavenderHouse2_h: ; 0x1d9a2 to 0x1d9ae (12 bytes) (bank=7) (id=151) + db $08 ; tileset + db $04, $04 ; dimensions (y, x) + dw LavenderHouse2Blocks, LavenderHouse2Texts, LavenderHouse2Script ; blocks, texts, scripts + db $00 ; connections + + dw LavenderHouse2Object ; objects + +LavenderHouse2Script: ; 0x1d9ae + call $3c3c + ret +; 0x1d9b2 + +LavenderHouse2Texts: ; 0x1d9b2 + dw LavenderHouse2Text1, LavenderHouse2Text2 + +LavenderHouse2Text1: ; 0x1d9b6 + TX_FAR _LavenderHouse2Text1 + db $8 + ld a, $11 + call $13d0 + jp $24d7 +; 0x1d9c3 + +LavenderHouse2Text2: ; 0x1d9c3 + db $08 ; asm + ld a, [$d7e0] + bit 7, a + jr nz, .asm_65711 ; 0x1d9c9 + ld hl, $59dc + call PrintText + jr .asm_64be1 ; 0x1d9d1 +.asm_65711 ; 0x1d9d3 + ld hl, $59e1 + call PrintText +.asm_64be1 ; 0x1d9d9 + jp $24d7 + +INCBIN "baserom.gbc",$1d9dc,$a + +LavenderHouse2Object: ; 0x1d9e6 (size=32) + db $a ; border tile + + db $2 ; warps + db $7, $2, $4, $ff + db $7, $3, $4, $ff + + db $0 ; signs + + db $2 ; people + db SPRITE_SLOWBRO, $5 + 4, $3 + 4, $ff, $d1, $1 ; person + db SPRITE_BRUNETTE_GIRL, $4 + 4, $2 + 4, $ff, $d3, $2 ; person + + ; warp-to + EVENT_DISP $4, $7, $2 + EVENT_DISP $4, $7, $3 + +NameRater_h: ; 0x1da06 to 0x1da12 (12 bytes) (bank=7) (id=229) + db $08 ; tileset + db $04, $04 ; dimensions (y, x) + dw NameRaterBlocks, $5a54, NameRaterScript ; blocks, texts, scripts + db $00 ; connections + + dw NameRaterObject ; objects + +NameRaterScript: ; 0x1da12 + jp $3c3c +; 0x1da15 + +INCBIN "baserom.gbc",$1da15,$41 + +NameRaterText1: ; 0x1da56 + db $8 + call $36f4 + ld hl, $5ab3 + call $5a15 + jr nz, .asm_1daae ; 0x1da60 $4c + ld hl, $5ab8 + call PrintText + xor a + ld [$d07d], a + ld [$cfcb], a + ld [$cc35], a + call $13fc + push af + call $3dd4 + call $3dbe + call $20ba + pop af + jr c, .asm_1daae ; 0x1da80 $2c + call $15b4 + call $5a20 + ld hl, $5ad1 + jr c, .asm_1daa8 ; 0x1da8b $1b + ld hl, $5abd + call $5a15 + jr nz, .asm_1daae ; 0x1da93 $19 + ld hl, $5ac2 + call PrintText + ld b, $1 + ld hl, $655c + call Bankswitch + jr c, .asm_1daae ; 0x1daa3 $9 + ld hl, $5ac7 +.asm_1daa8 + call PrintText + jp $24d7 +.asm_1daae + ld hl, $5acc + jr .asm_1daa8 ; 0x1dab1 $f5 +; 0x1dab3 + +INCBIN "baserom.gbc",$1dab3,$23 + +NameRaterObject: ; 0x1dad6 (size=26) + db $a ; border tile + + db $2 ; warps + db $7, $2, $5, $ff + db $7, $3, $5, $ff + + db $0 ; signs + + db $1 ; people + db SPRITE_MR_MASTERBALL, $3 + 4, $5 + 4, $ff, $d2, $1 ; person + + ; warp-to + EVENT_DISP $4, $7, $2 + EVENT_DISP $4, $7, $3 + +VermilionHouse1_h: ; 0x1daf0 to 0x1dafc (12 bytes) (bank=7) (id=93) + db $08 ; tileset + db $04, $04 ; dimensions (y, x) + dw VermilionHouse1Blocks, VermilionHouse1Texts, VermilionHouse1Script ; blocks, texts, scripts + db $00 ; connections + + dw VermilionHouse1Object ; objects + +VermilionHouse1Script: ; 0x1dafc + call $3c3c + ret +; 0x1db00 + +VermilionHouse1Texts: ; 0x1db00 + dw VermilionHouse1Text1, VermilionHouse1Text2, VermilionHouse1Text3 + +VermilionHouse1Text1: ; 0x1db06 + TX_FAR _VermilionHouse1Text1 + db $50 + +VermilionHouse1Text2: ; 0x1db0b + TX_FAR _VermilionHouse1Text2 + db $08 ; asm + ld a, $24 + call $13d0 + call $3748 + jp $24d7 + +VermilionHouse1Text3: ; 0x1db1b + TX_FAR _VermilionHouse1Text3 + db $50 + +INCBIN "baserom.gbc", $1db1b + 5, $1db20 - ($1db1b + 5) + +VermilionHouse1Object: ; 0x1db20 (size=38) + db $a ; border tile + + db $2 ; warps + db $7, $2, $4, $ff + db $7, $3, $4, $ff + + db $0 ; signs + + db $3 ; people + db SPRITE_BUG_CATCHER, $3 + 4, $5 + 4, $ff, $d2, $1 ; person + db SPRITE_BIRD, $5 + 4, $3 + 4, $fe, $2, $2 ; person + db SPRITE_PAPER_SHEET, $3 + 4, $4 + 4, $ff, $ff, $3 ; person + + ; warp-to + EVENT_DISP $4, $7, $2 + EVENT_DISP $4, $7, $3 + +VermilionDock_h: ; 0x1db46 to 0x1db52 (12 bytes) (bank=7) (id=94) + db $0e ; tileset + db $06, $0e ; dimensions (y, x) + dw VermilionDockBlocks, $5cbf, VermilionDockScript ; blocks, texts, scripts + db $00 ; connections + + dw VermilionDockObject ; objects + +VermilionDockScript: ; 0x1db52 + call $3c3c + ld hl, $d803 + bit 4, [hl] + jr nz, .asm_1db8d ; 0x1db5a $31 + bit 0, [hl] + ret z + ld a, [$d42f] + cp $1 + ret nz + bit 2, [hl] + jp z, $5b9b + set 4, [hl] + call Delay3 + ld hl, $d730 + set 7, [hl] + ld hl, $ccd3 + ld a, $40 + ld [hli], a + ld [hli], a + ld [hl], a + ld a, $3 + ld [$cd38], a + xor a + ld [$c206], a + ld [$cd3b], a + dec a + ld [$cd6b], a + ret +.asm_1db8d + bit 5, [hl] + ret nz + ld a, [$cd38] + and a + ret nz + ld [$cd6b], a + set 5, [hl] + ret +; 0x1db9b + +INCBIN "baserom.gbc",$1db9b,$12b + +VermilionDockObject: ; 0x1dcc6 (size=20) + db $f ; border tile + + db $2 ; warps + db $0, $e, $5, $ff + db $2, $e, $1, SS_ANNE_1 + + db $0 ; signs + + db $0 ; people + + ; warp-to + EVENT_DISP $e, $0, $e + EVENT_DISP $e, $2, $e ; SS_ANNE_1 + +VermilionDockBlocks: ; 84 + INCBIN "maps/vermiliondock.blk" + +CeladonMansion5_h: ; 0x1dd2e to 0x1dd3a (12 bytes) (bank=7) (id=132) + db $08 ; tileset + db $04, $04 ; dimensions (y, x) + dw CeladonMansion5Blocks, CeladonMansion5Texts, CeladonMansion5Script ; blocks, texts, scripts + db $00 ; connections + + dw CeladonMansion5Object ; objects + +CeladonMansion5Script: ; 0x1dd3a + jp $3c3c +; 0x1dd3d + +CeladonMansion5Texts: ; 0x1dd3d + dw CeladonMansion5Text1, CeladonMansion5Text2 + +CeladonMansion5Text1: ; 0x1dd41 + TX_FAR _CeladonMansion5Text1 + db $50 + +CeladonMansion5Text2: ; 0x1dd46 + db $08 ; asm + ld bc,(EEVEE << 8) | 25 + call GivePokemon + jr nc, .asm_24365 ; 0x1dd4d + ld a, $45 + ld [$cc4d], a + ld a, $11 + call Predef +.asm_24365 ; 0x1dd59 + jp $24d7 + +CeladonMansion5Object: ; 0x1dd5c (size=32) + db $a ; border tile + + db $2 ; warps + db $7, $2, $2, CELADON_MANSION_4 + db $7, $3, $2, CELADON_MANSION_4 + + db $0 ; signs + + db $2 ; people + db SPRITE_HIKER, $2 + 4, $2 + 4, $ff, $d0, $1 ; person + db SPRITE_BALL, $3 + 4, $4 + 4, $ff, $ff, $2 ; person + + ; warp-to + EVENT_DISP $4, $7, $2 ; CELADON_MANSION_4 + EVENT_DISP $4, $7, $3 ; CELADON_MANSION_4 + +FuchsiaMart_h: ; 0x1dd7c to 0x1dd88 (12 bytes) (bank=7) (id=152) + db $02 ; tileset + db $04, $04 ; dimensions (y, x) + dw FuchsiaMartBlocks, FuchsiaMartTexts, FuchsiaMartScript ; blocks, texts, scripts + db $00 ; connections + + dw FuchsiaMartObject ; objects + +FuchsiaMartScript: ; 0x1dd88 + jp $3c3c +; 0x1dd8b + +FuchsiaMartTexts: ; 0x1dd8b + dw FuchsiaMartText1, FuchsiaMartText2, FuchsiaMartText3 + +FuchsiaMartText2: ; 0x1dd91 + TX_FAR _FuchsiaMartText2 + db $50 + +FuchsiaMartText3: ; 0x1dd96 + TX_FAR _FuchsiaMartText3 + db $50 + +FuchsiaMartObject: ; 0x1dd9b (size=38) + db $0 ; border tile + + db $2 ; warps + db $7, $3, $0, $ff + db $7, $4, $0, $ff + + db $0 ; signs + + db $3 ; people + db SPRITE_MART_GUY, $5 + 4, $0 + 4, $ff, $d3, $1 ; person + db SPRITE_FAT_BALD_GUY, $2 + 4, $4 + 4, $ff, $ff, $2 ; person + db SPRITE_LASS, $5 + 4, $6 + 4, $fe, $1, $3 ; person + + ; warp-to + EVENT_DISP $4, $7, $3 + EVENT_DISP $4, $7, $4 + +FuchsiaMartBlocks: ; 16 + INCBIN "maps/fuchsiamart.blk" + +SaffronHouse1_h: ; 0x1ddd1 to 0x1dddd (12 bytes) (bank=7) (id=179) + db $08 ; tileset + db $04, $04 ; dimensions (y, x) + dw SaffronHouse1Blocks, SaffronHouse1Texts, SaffronHouse1Script ; blocks, texts, scripts + db $00 ; connections + + dw SaffronHouse1Object ; objects + +SaffronHouse1Script: ; 0x1dddd + jp $3c3c +; 0x1dde0 + +SaffronHouse1Texts: ; 0x1dde0 + dw SaffronHouse1Text1, SaffronHouse1Text2, SaffronHouse1Text3, SaffronHouse1Text4 + +SaffronHouse1Text1: ; 0x1dde8 + TX_FAR _SaffronHouse1Text1 + db $50 + +SaffronHouse1Text2: ; 0x1dded + TX_FAR _SaffronHouse1Text2 + db $8 + ld a, $24 + call $13d0 + jp $24d7 +; 0x1ddfa + +SaffronHouse1Text3: ; 0x1ddfa + TX_FAR _SaffronHouse1Text3 + db $50 + +SaffronHouse1Text4: ; 0x1ddff + TX_FAR _SaffronHouse1Text4 + db $50 + +SaffronHouse1Object: ; 0x1de04 (size=44) + db $a ; border tile + + db $2 ; warps + db $7, $2, $3, $ff + db $7, $3, $3, $ff + + db $0 ; signs + + db $4 ; people + db SPRITE_BRUNETTE_GIRL, $3 + 4, $2 + 4, $ff, $d3, $1 ; person + db SPRITE_BIRD, $4 + 4, $0 + 4, $fe, $1, $2 ; person + db SPRITE_BUG_CATCHER, $1 + 4, $4 + 4, $ff, $d0, $3 ; person + db SPRITE_PAPER_SHEET, $3 + 4, $3 + 4, $ff, $ff, $4 ; person + + ; warp-to + EVENT_DISP $4, $7, $2 + EVENT_DISP $4, $7, $3 + +SaffronHouse2_h: ; 0x1de30 to 0x1de3c (12 bytes) (bank=7) (id=183) + db $08 ; tileset + db $04, $04 ; dimensions (y, x) + dw SaffronHouse2Blocks, SaffronHouse2Texts, SaffronHouse2Script ; blocks, texts, scripts + db $00 ; connections + + dw SaffronHouse2Object ; objects + +SaffronHouse2Script: ; 0x1de3c + jp $3c3c +; 0x1de3f + +SaffronHouse2Texts: ; 0x1de3f + dw SaffronHouse2Text1 + +SaffronHouse2Text1: ; 0x1de41 + db $08 ; asm + ld a, [$d7bd] + bit 0, a + jr nz, .asm_9e72b ; 0x1de47 + ld hl, $5e75 + call PrintText + ld bc,(TM_29 << 8) | 1 + call $3e2e + jr nc, .asm_4b1da ; 0x1de55 + ld hl, $5e7a + call PrintText + ld hl, $d7bd + set 0, [hl] + jr .asm_fe4e1 ; 0x1de62 +.asm_4b1da ; 0x1de64 + ld hl, $5e85 + call PrintText + jr .asm_fe4e1 ; 0x1de6a +.asm_9e72b ; 0x1de6c + ld hl, $5e80 + call PrintText +.asm_fe4e1 ; 0x1de72 + jp $24d7 + +INCBIN "baserom.gbc",$1de75,$15 + +SaffronHouse2Object: ; 0x1de8a (size=26) + db $a ; border tile + + db $2 ; warps + db $7, $2, $7, $ff + db $7, $3, $7, $ff + + db $0 ; signs + + db $1 ; people + db SPRITE_FISHER, $3 + 4, $5 + 4, $ff, $d2, $1 ; person + + ; warp-to + EVENT_DISP $4, $7, $2 + EVENT_DISP $4, $7, $3 + +DiglettsCaveRoute2_h: ; 0x1dea4 to 0x1deb0 (12 bytes) (bank=7) (id=46) + db $11 ; tileset + db $04, $04 ; dimensions (y, x) + dw DiglettsCaveRoute2Blocks, DiglettsCaveRoute2Texts, DiglettsCaveRoute2Script ; blocks, texts, scripts + db $00 ; connections + + dw DiglettsCaveRoute2Object ; objects + +DiglettsCaveRoute2Script: ; 0x1deb0 + ld a, $d + ld [$d365], a + jp $3c3c +; 0x1deb8 + +DiglettsCaveRoute2Texts: ; 0x1deb8 + dw DiglettsCaveRoute2Text1 + +DiglettsCaveRoute2Text1: ; 0x1deba + TX_FAR _DiglettsCaveRoute2Text1 + db $50 + +DiglettsCaveRoute2Object: ; 0x1debf (size=34) + db $7d ; border tile + + db $3 ; warps + db $7, $2, $0, $ff + db $7, $3, $0, $ff + db $4, $4, $0, DIGLETTS_CAVE + + db $0 ; signs + + db $1 ; people + db SPRITE_FISHER, $3 + 4, $3 + 4, $ff, $ff, $1 ; person + + ; warp-to + EVENT_DISP $4, $7, $2 + EVENT_DISP $4, $7, $3 + EVENT_DISP $4, $4, $4 ; DIGLETTS_CAVE + +Route2House_h: ; 0x1dee1 to 0x1deed (12 bytes) (bank=7) (id=48) + db $08 ; tileset + db $04, $04 ; dimensions (y, x) + dw Route2HouseBlocks, Route2HouseTexts, Route2HouseScript ; blocks, texts, scripts + db $00 ; connections + + dw Route2HouseObject ; objects + +Route2HouseScript: ; 0x1deed + jp $3c3c +; 0x1def0 + +Route2HouseTexts: ; 0x1def0 + dw Route2HouseText1, Route2HouseText2 + +Route2HouseText1: ; 0x1def4 + TX_FAR _Route2HouseText1 + db $50 + +Route2HouseText2: ; 0x1def9 + db $08 ; asm + ld a, $1 + ld [W_WHICHTRADE], a + ld a, $54 + call Predef + jp $24d7 + +Route2HouseObject: ; 0x1df07 (size=32) + db $a ; border tile + + db $2 ; warps + db $7, $2, $2, $ff + db $7, $3, $2, $ff + + db $0 ; signs + + db $2 ; people + db SPRITE_OAK_AIDE, $4 + 4, $2 + 4, $ff, $d3, $1 ; person + db SPRITE_GAMEBOY_KID_COPY, $1 + 4, $4 + 4, $ff, $d0, $2 ; person + + ; warp-to + EVENT_DISP $4, $7, $2 + EVENT_DISP $4, $7, $3 + +Route5Gate_h: ; 0x1df27 to 0x1df33 (12 bytes) (bank=7) (id=70) + db $0c ; tileset + db $03, $04 ; dimensions (y, x) + dw Route5GateBlocks, Route5GateTexts, Route5GateScript ; blocks, texts, scripts + db $00 ; connections + + dw Route5GateObject ; objects + +Route5GateScript: ; 0x1df33 + call $3c3c + ld a, [$d662] + ld hl, $5f3f + jp $3d97 +; 0x1df3f + +Route5GateScripts: ; 0x1df3f + dw Route5GateScript0 + +INCBIN "baserom.gbc",$1df41,$f + +Route5GateScript0: ; 0x1df50 + ld a, [$d728] + bit 6, a + ret nz + ld hl, $5f8f + call $34bf + ret nc + ld a, $2 + ld [$d528], a + xor a + ld [$ff00+$b4], a + ld b, $16 + ld hl, $659f + call Bankswitch + ld a, [$ff00+$db] + and a + jr nz, .asm_1df82 ; 0x1df70 $10 + ld a, $2 + ld [$ff00+$8c], a + call $2920 + call $5f43 + ld a, $1 + ld [$d662], a + ret +.asm_1df82 + ld a, $3 + ld [$ff00+$8c], a + call $2920 + ld hl, $d728 + set 6, [hl] + ret +; 0x1df8f + +INCBIN "baserom.gbc",$1df8f,$15 + +Route5GateTexts: ; 0x1dfa4 + dw Route5GateText1, Route5GateText2, Route5GateText3 + +Route8GateText1: +Route7GateText1: +Route6GateText1: +Route5GateText1: ; 0x1dfaa + db $8 + ld a, [$d728] + bit 6, a + jr nz, .asm_88856 ; 0x1dfb0 $2c + ld b, $16 + ld hl, $659f + call Bankswitch + ld a, [$ff00+$db] + and a + jr nz, .asm_768a2 ; 0x1dfbd $11 + ld hl, $5fe7 + call PrintText + call $5f43 + ld a, $1 + ld [$d662], a + jp $24d7 +.asm_768a2 ; 0x1dfd0 + ld hl, $5fec + call PrintText + ld hl, $d728 + set 6, [hl] + jp $24d7 +.asm_88856 ; 0x1dfde + ld hl, $5ff6 + call PrintText + jp $24d7 +; 0x1dfe7 + +Route8GateText2: +Route7GateText2: +Route6GateText2: +Route5GateText2: ; 0x1dfe7 +INCBIN "baserom.gbc",$1dfe7,$5 + +Route8GateText3: +Route7GateText3: +Route6GateText3: +Route5GateText3: ; 0x1dfec +INCBIN "baserom.gbc",$1dfec,$5 + +INCBIN "baserom.gbc",$1dff1,$1dffb - $1dff1 + +Route5GateObject: ; 0x1dffb (size=42) + db $a ; border tile + + db $4 ; warps + db $5, $3, $2, $ff + db $5, $4, $2, $ff + db $0, $3, $1, $ff + db $0, $4, $0, $ff + + db $0 ; signs + + db $1 ; people + db SPRITE_GUARD, $3 + 4, $1 + 4, $ff, $d3, $1 ; person + + ; warp-to + EVENT_DISP $4, $5, $3 + EVENT_DISP $4, $5, $4 + EVENT_DISP $4, $0, $3 + EVENT_DISP $4, $0, $4 + +Route5GateBlocks: ; 12 + INCBIN "maps/route5gate.blk" + +Route6Gate_h: ; 0x1e031 to 0x1e03d (12 bytes) (bank=7) (id=73) + db $0c ; tileset + db $03, $04 ; dimensions (y, x) + dw Route6GateBlocks, Route6GateTexts, Route6GateScript ; blocks, texts, scripts + db $00 ; connections + + dw Route6GateObject ; objects + +Route6GateScript: ; 0x1e03d + call $3c3c + ld hl, $604a + ld a, [$d636] + call $3d97 + ret +; 0x1e04a + +Route6GateScripts: ; 0x1e04a + dw Route6GateScript0 + +INCBIN "baserom.gbc",$1e04c,$2 + +Route6GateScript0: ; 0x1e04e + ld a, [$d728] + bit 6, a + ret nz + ld hl, $608c + call $34bf + ret nc + ld a, $1 + ld [$d528], a + xor a + ld [$ff00+$b4], a + ld b, $16 + ld hl, $659f + call Bankswitch + ld a, [$ff00+$db] + and a + jr nz, .asm_1e080 ; 0x1e06e $10 + ld a, $2 + ld [$ff00+$8c], a + call $2920 + call $60a1 + ld a, $1 + ld [$d636], a + ret +.asm_1e080 + ld hl, $d728 + set 6, [hl] + ld a, $3 + ld [$ff00+$8c], a + jp $2920 +; 0x1e08c + +INCBIN "baserom.gbc",$1e08c,$2c + +Route6GateTexts: ; 0x1e0b8 + dw Route6GateText1, Route6GateText2, Route6GateText3 + +Route6GateObject: ; 0x1e0be (size=42) + db $a ; border tile + + db $4 ; warps + db $5, $3, $2, $ff + db $5, $4, $2, $ff + db $0, $3, $1, $ff + db $0, $4, $1, $ff + + db $0 ; signs + + db $1 ; people + db SPRITE_GUARD, $2 + 4, $6 + 4, $ff, $d2, $1 ; person + + ; warp-to + EVENT_DISP $4, $5, $3 + EVENT_DISP $4, $5, $4 + EVENT_DISP $4, $0, $3 + EVENT_DISP $4, $0, $4 + +Route6GateBlocks: ; 12 + INCBIN "maps/route6gate.blk" + +Route7Gate_h: ; 0x1e0f4 to 0x1e100 (12 bytes) (bank=7) (id=76) + db $0c ; tileset + db $04, $03 ; dimensions (y, x) + dw Route7GateBlocks, Route7GateTexts, Route7GateScript ; blocks, texts, scripts + db $00 ; connections + + dw Route7GateObject ; objects + +Route7GateScript: ; 0x1e100 + call $3c3c + ld a, [$d663] + ld hl, $610d + call $3d97 + ret +; 0x1e10d + +Route7GateScripts: ; 0x1e10d + dw Route7GateScript0 + +INCBIN "baserom.gbc",$1e10f,$19 + +Route7GateScript0: ; 0x1e128 + ld a, [$d728] + bit 6, a + ret nz + ld hl, $6167 + call $34bf + ret nc + ld a, $8 + ld [$d528], a + xor a + ld [$ff00+$b4], a + ld b, $16 + ld hl, $659f + call Bankswitch + ld a, [$ff00+$db] + and a + jr nz, .asm_1e15a ; 0x1e148 $10 + ld a, $2 + ld [$ff00+$8c], a + call $2920 + call $6111 + ld a, $1 + ld [$d663], a + ret +.asm_1e15a + ld a, $3 + ld [$ff00+$8c], a + call $2920 + ld hl, $d728 + set 6, [hl] + ret +; 0x1e167 + +INCBIN "baserom.gbc",$1e167,$18 + +Route7GateTexts: ; 0x1e17f + dw Route7GateText1, Route7GateText2, Route7GateText3 + +Route7GateObject: ; 0x1e185 (size=42) + db $a ; border tile + + db $4 ; warps + db $3, $0, $3, $ff + db $4, $0, $3, $ff + db $3, $5, $0, $ff + db $4, $5, $1, $ff + + db $0 ; signs + + db $1 ; people + db SPRITE_GUARD, $1 + 4, $3 + 4, $ff, $d0, $1 ; person + + ; warp-to + EVENT_DISP $3, $3, $0 + EVENT_DISP $3, $4, $0 + EVENT_DISP $3, $3, $5 + EVENT_DISP $3, $4, $5 + +Route7GateBlocks: ; 12 + INCBIN "maps/route7gate.blk" + +Route8Gate_h: ; 0x1e1bb to 0x1e1c7 (12 bytes) (bank=7) (id=79) + db $0c ; tileset + db $04, $03 ; dimensions (y, x) + dw Route8GateBlocks, Route8GateTexts, Route8GateScript ; blocks, texts, scripts + db $00 ; connections + + dw Route8GateObject ; objects + +Route8GateScript: ; 0x1e1c7 + call $3c3c + ld hl, $61d3 + ld a, [$d637] + jp $3d97 +; 0x1e1d3 + +Route8GateScripts: ; 0x1e1d3 + dw Route8GateScript0 + +INCBIN "baserom.gbc",$1e1d5,$19 + +Route8GateScript0: ; 0x1e1ee + ld a, [$d728] + bit 6, a + ret nz + ld hl, $622c + call $34bf + ret nc + ld a, $2 + ld [$d528], a + xor a + ld [$ff00+$b4], a + ld b, $16 + ld hl, $659f + call Bankswitch + ld a, [$ff00+$db] + and a + jr nz, .asm_1e220 ; 0x1e20e $10 + ld a, $2 + ld [$ff00+$8c], a + call $2920 + call $61d7 + ld a, $1 + ld [$d637], a + ret +.asm_1e220 + ld hl, $d728 + set 6, [hl] + ld a, $3 + ld [$ff00+$8c], a + jp $2920 +; 0x1e22c +INCBIN "baserom.gbc",$1e22c,$15 + +Route8GateTexts: ; 0x1e241 + dw Route8GateText1, Route8GateText2, Route8GateText3 + +Route8GateObject: ; 0x1e247 (size=42) + db $a ; border tile + + db $4 ; warps + db $3, $0, $0, $ff + db $4, $0, $1, $ff + db $3, $5, $2, $ff + db $4, $5, $3, $ff + + db $0 ; signs + + db $1 ; people + db SPRITE_GUARD, $1 + 4, $2 + 4, $ff, $d0, $1 ; person + + ; warp-to + EVENT_DISP $3, $3, $0 + EVENT_DISP $3, $4, $0 + EVENT_DISP $3, $3, $5 + EVENT_DISP $3, $4, $5 + +Route8GateBlocks: ; 12 + INCBIN "maps/route8gate.blk" + +UndergroundPathEntranceRoute8_h: ; 0x1e27d to 0x1e289 (12 bytes) (bank=7) (id=80) + db $0c ; tileset + db $04, $04 ; dimensions (y, x) + dw UndergroundPathEntranceRoute8Blocks, UndergroundPathEntranceRoute8Texts, UndergroundPathEntranceRoute8Script ; blocks, texts, scripts + db $00 ; connections + + dw UndergroundPathEntranceRoute8Object ; objects + +UndergroundPathEntranceRoute8Script: ; 0x1e289 + ld a, $13 + ld [$d365], a + jp $3c3c +; 0x1e291 + +UndergroundPathEntranceRoute8Texts: ; 0x1e291 + dw UndergroundPathEntranceRoute8Text1 + +;XXX wtf? syntax error +UndergroundPathEntranceRoute8Text1: ; 0x1e293 + db $17, $8d, $42, $23 + ;TX_FAR _UndergroundPathEntranceRoute8Text1 + db $50 + +UndergroundPathEntranceRoute8Object: ; 0x1e298 (size=34) + db $a ; border tile + + db $3 ; warps + db $7, $3, $4, $ff + db $7, $4, $4, $ff + db $4, $4, $1, UNDERGROUND_PATH_WE + + db $0 ; signs + + db $1 ; people + db SPRITE_GIRL, $4 + 4, $3 + 4, $ff, $ff, $1 ; person + + ; warp-to + EVENT_DISP $4, $7, $3 + EVENT_DISP $4, $7, $4 + EVENT_DISP $4, $4, $4 ; UNDERGROUND_PATH_WE + +PowerPlant_h: ; 0x1e2ba to 0x1e2c6 (12 bytes) (bank=7) (id=83) + db $16 ; tileset + db $12, $14 ; dimensions (y, x) + dw PowerPlantBlocks, PowerPlantTexts, PowerPlantScript ; blocks, texts, scripts + db $00 ; connections + + dw PowerPlantObject ; objects + +PowerPlantScript: ; 0x1e2c6 + call $3c3c + ld hl, $62fb + ld de, $62d9 + ld a, [$d663] + call $3160 + ld [$d663], a + ret +; 0x1e2d9 + +INCBIN "baserom.gbc",$1e2d9,$6 + +PowerPlantTexts: ; 0x1e2df + dw PowerPlantText1, PowerPlantText2, PowerPlantText3, PowerPlantText4, PowerPlantText5, PowerPlantText6, PowerPlantText7, PowerPlantText8, PowerPlantText9, PowerPlantText10, PowerPlantText11, PowerPlantText12, PowerPlantText13, PowerPlantText14 + +INCBIN "baserom.gbc",$1e2fb,$6d + +asm_234cc: + call $31cc + ld a, [$da39] + ld [$d663], a + jp $24d7 +; 0x1e374 + +PowerPlantText1: ; maybe + db $8 ; asm + ld hl, $62fb + jr asm_234cc ; 0x1e378 $ee + +PowerPlantText2: + db $8 ; asm + ld hl, $6307 + jr asm_234cc ; 0x1e37e $e8 + +PowerPlantText3: + db $8 ; asm + ld hl, $6313 + jr asm_234cc ; 0x1e384 $e2 + +PowerPlantText4: + db $8 ; asm + ld hl, $631f + jr asm_234cc ; 0x1e38a $dc + +PowerPlantText5: + db $8 ; asm + ld hl, $632b + jr asm_234cc ; 0x1e390 $d6 + +PowerPlantText6: + db $8 ; asm + ld hl, $6337 + jr asm_234cc ; 0x1e396 $d0 + +PowerPlantText7: + db $8 ; asm + ld hl, $6343 + jr asm_234cc ; 0x1e39c $ca + +PowerPlantText8: + db $8 ; asm + ld hl, $634f + jr asm_234cc ; 0x1e3a2 $c4 + +PowerPlantText9: + db $8 ; asm + ld hl, $635b + jr asm_234cc ; 0x1e3a8 $be + rla ; probably a TX_FAR + ld [$ff00+c], a + ld b, l + inc hl + ld d, b + rla + ld [$2345], a + db $8 + ld a, $4b + call $13d0 + call $3748 + jp $24d7 +; 0x1e3bf + +PowerPlantObject: ; 0x1e3bf (size=135) + db $2e ; border tile + + db $3 ; warps + db $23, $4, $3, $ff + db $23, $5, $3, $ff + db $b, $0, $3, $ff + + db $0 ; signs + + db $e ; people + db SPRITE_BALL, $14 + 4, $9 + 4, $ff, $ff, $41, VOLTORB, $28 ; trainer + db SPRITE_BALL, $12 + 4, $20 + 4, $ff, $ff, $42, VOLTORB, $28 ; trainer + db SPRITE_BALL, $19 + 4, $15 + 4, $ff, $ff, $43, VOLTORB, $28 ; trainer + db SPRITE_BALL, $12 + 4, $19 + 4, $ff, $ff, $44, ELECTRODE, $2b ; trainer + db SPRITE_BALL, $22 + 4, $17 + 4, $ff, $ff, $45, VOLTORB, $28 ; trainer + db SPRITE_BALL, $1c + 4, $1a + 4, $ff, $ff, $46, VOLTORB, $28 ; trainer + db SPRITE_BALL, $e + 4, $15 + 4, $ff, $ff, $47, ELECTRODE, $2b ; trainer + db SPRITE_BALL, $20 + 4, $25 + 4, $ff, $ff, $48, VOLTORB, $28 ; trainer + db SPRITE_BIRD, $9 + 4, $4 + 4, $ff, $d1, $49, ZAPDOS, $32 ; trainer + db SPRITE_BALL, $19 + 4, $7 + 4, $ff, $ff, $8a, CARBOS ; item + db SPRITE_BALL, $3 + 4, $1c + 4, $ff, $ff, $8b, HP_UP ; item + db SPRITE_BALL, $3 + 4, $22 + 4, $ff, $ff, $8c, RARE_CANDY ; item + db SPRITE_BALL, $20 + 4, $1a + 4, $ff, $ff, $8d, TM_25 ; item + db SPRITE_BALL, $20 + 4, $14 + 4, $ff, $ff, $8e, TM_33 ; item + + ; warp-to + EVENT_DISP $14, $23, $4 + EVENT_DISP $14, $23, $5 + EVENT_DISP $14, $b, $0 + +PowerPlantBlocks: ; 360 + INCBIN "maps/powerplant.blk" + +DiglettsCaveEntranceRoute11_h: ; 0x1e5ae to 0x1e5ba (12 bytes) (bank=7) (id=85) + db $11 ; tileset + db $04, $04 ; dimensions (y, x) + dw DiglettsCaveEntranceRoute11Blocks, DiglettsCaveEntranceRoute11Texts, DiglettsCaveEntranceRoute11Script ; blocks, texts, scripts + db $00 ; connections + + dw DiglettsCaveEntranceRoute11Object ; objects + +DiglettsCaveEntranceRoute11Script: ; 0x1e5ba + call $3c3c + ld a, $16 + ld [$d365], a + ret +; 0x1e5c3 + +DiglettsCaveEntranceRoute11Texts: ; 0x1e5c3 + dw DiglettsCaveEntranceRoute11Text1 + +; XXX wtf? syntax error +DiglettsCaveEntranceRoute11Text1: ; 0x1e5c5 + db $17, $f9, $47, $23 + ;TX_FAR _DiglettsCaveEntranceRoute11Text1 + db $50 + +DiglettsCaveEntranceRoute11Object: ; 0x1e5ca (size=34) + db $7d ; border tile + + db $3 ; warps + db $7, $2, $4, $ff + db $7, $3, $4, $ff + db $4, $4, $1, DIGLETTS_CAVE + + db $0 ; signs + + db $1 ; people + db SPRITE_GAMBLER, $3 + 4, $2 + 4, $ff, $ff, $1 ; person + + ; warp-to + EVENT_DISP $4, $7, $2 + EVENT_DISP $4, $7, $3 + EVENT_DISP $4, $4, $4 ; DIGLETTS_CAVE + +Route16House_h: ; 0x1e5ec to 0x1e5f8 (12 bytes) (bank=7) (id=188) + db $08 ; tileset + db $04, $04 ; dimensions (y, x) + dw Route16HouseBlocks, Route16HouseTexts, Route16HouseScript ; blocks, texts, scripts + db $00 ; connections + + dw Route16HouseObject ; objects + +Route16HouseScript: ; 0x1e5f8 + jp $3c3c +; 0x1e5fb + +Route16HouseTexts: ; 0x1e5fb + dw Route16HouseText1, Route16HouseText2 + +Route16HouseText1: ; 0x1e5ff + db $08 ; asm + ld a, [$d7e0] + bit 6, a + ld hl, $6636 + jr nz, .asm_13616 ; 0x1e608 + ld hl, $662b + call PrintText + ld bc,(HM_02 << 8) | 1 + call $3e2e + jr nc, .asm_d3ee3 ; 0x1e616 + ld hl, $d7e0 + set 6, [hl] + ld hl, $6630 + jr .asm_13616 ; 0x1e620 +.asm_d3ee3 ; 0x1e622 + ld hl, $663b +.asm_13616 ; 0x1e625 + call PrintText + jp $24d7 + +INCBIN "baserom.gbc",$1e62b,$1e640 - $1e62b + +Route16HouseText2: ; 0x1e640 + db $08 ; asm + ld hl, $6652 + call PrintText + ld a,FEAROW + call $13d0 + call $3748 + jp $24d7 + +INCBIN "baserom.gbc",$1e652,$5 + +Route16HouseObject: ; 0x1e657 (size=32) + db $a ; border tile + + db $2 ; warps + db $7, $2, $8, $ff + db $7, $3, $8, $ff + + db $0 ; signs + + db $2 ; people + db SPRITE_BRUNETTE_GIRL, $3 + 4, $2 + 4, $ff, $d3, $1 ; person + db SPRITE_BIRD, $4 + 4, $6 + 4, $fe, $0, $2 ; person + + ; warp-to + EVENT_DISP $4, $7, $2 + EVENT_DISP $4, $7, $3 + +Route22Gate_h: ; 0x1e677 to 0x1e683 (12 bytes) (bank=7) (id=193) + db $0c ; tileset + db $04, $05 ; dimensions (y, x) + dw Route22GateBlocks, Route22GateTexts, Route22GateScript ; blocks, texts, scripts + db $00 ; connections + + dw Route22GateObject ; objects + +Route22GateScript: ; 0x1e683 + call $3c3c + ld hl, $669e + ld a, [$d60e] + call $3d97 + ld a, [$d361] + cp $4 + ld a, $22 + jr c, .asm_1e69a ; 0x1e696 $2 + ld a, $21 +.asm_1e69a + ld [$d365], a + ret +; 0x1e69e + +Route22GateScripts: ; 0x1e69e + dw Route22GateScript0, Route22GateScript1 + +INCBIN "baserom.gbc",$1e6a2,$2 + +Route22GateScript0: ; 0x1e6a4 + ld hl, $66b5 + call $34bf + ret nc + xor a + ld [$ff00+$b4], a + ld a, $1 + ld [$ff00+$8c], a + jp $2920 +; 0x1e6b5 + +INCBIN "baserom.gbc",$1e6b5,$1e6cd - $1e6b5 + +Route22GateScript1: ; 0x1e6cd + ld a, [$cd38] + and a + ret nz + xor a + ld [$cd6b], a + call Delay3 + ld a, $0 + ld [$d60e], a + ret +; 0x1e6df + +Route22GateTexts: ; 0x1e6df + dw Route22GateText1 + +Route22GateText1: ; 0x1e6e1 + db $8 + ld a, [$d356] + bit 0, a + jr nz, .asm_8a809 ; 0x1e6e7 $d + ld hl, $6704 + call PrintText + call $66ba + ld a, $1 + jr .asm_20f7e ; 0x1e6f4 $8 +.asm_8a809 ; 0x1e6f6 + ld hl, $671a + call PrintText + ld a, $2 +.asm_20f7e ; 0x1e6fe + ld [$d60e], a + jp $24d7 +; 0x1e704 + +INCBIN "baserom.gbc",$1e704,$1c + +Route22GateObject: ; 0x1e720 (size=42) + db $a ; border tile + + db $4 ; warps + db $7, $4, $0, $ff + db $7, $5, $0, $ff + db $0, $4, $0, $ff + db $0, $5, $1, $ff + + db $0 ; signs + + db $1 ; people + db SPRITE_GUARD, $2 + 4, $6 + 4, $ff, $d2, $1 ; person + + ; warp-to + EVENT_DISP $5, $7, $4 + EVENT_DISP $5, $7, $5 + EVENT_DISP $5, $0, $4 + EVENT_DISP $5, $0, $5 + +Route22GateBlocks: ; 20 + INCBIN "maps/route22gate.blk" + +BillsHouse_h: ; 0x1e75e to 0x1e76a (12 bytes) (bank=7) (id=88) + db $10 ; tileset + db $04, $04 ; dimensions (y, x) + dw BillsHouseBlocks, BillsHouseTexts, BillsHouseScript ; blocks, texts, scripts + db $00 ; connections + + dw BillsHouseObject ; objects + +BillsHouseScript: ; 0x1e76a + call $3c3c + ld a, [$d661] + ld hl, $6776 + jp $3d97 +; 0x1e776 + +BillsHouseScripts: ; 0x1e776 + dw BillsHouseScript0 + +INCBIN "baserom.gbc",$1e778,$a + +BillsHouseScript0: ; 0x1e782 + ret +; 0x1e783 + +INCBIN "baserom.gbc",$1e783,$b1 + +BillsHouseTexts: ; 0x1e834 + dw BillsHouseText1, BillsHouseText2, BillsHouseText3, BillsHouseText4 + +BillsHouseText4: + db $fd + +BillsHouseText1: ; 0x1e83d + db $8 + ld hl, $6865 + call PrintText + call $35ec + ld a, [$cc26] + and a + jr nz, asm_6b196 ; 0x1e84b $d +asm_4d03c: + ld hl, $686a + call PrintText + ld a, $1 + ld [$d661], a + jr asm_fd4e2 ; 0x1e858 $8 +asm_6b196: ; 0x1e85a + ld hl, $686f + call PrintText + jr asm_4d03c ; 0x1e860 $eb +asm_fd4e2 ; 0x1e862 + jp $24d7 + +; dunno what this is (rla indicates $17 or TX_FAR) + rla + ld h, a + ld d, d + inc hl + ld d, b + rla + ld b, l + ld d, e + inc hl + ld d, b + rla + sub c + ld d, e + inc hl + ld d, b + +BillsHouseText2: ; 0x1e874 + db $08 ; asm + ld a, [$d7f2] + bit 4, a + jr nz, .asm_5491f ; 0x1e87a + ld hl, $68ba + call PrintText + ld bc,(S_S__TICKET << 8) | 1 + call $3e2e + jr nc, .asm_18a67 ; 0x1e888 + ld hl, $68bf + call PrintText + ld hl, $d7f2 + set 4, [hl] + ld a, $7 + ld [$cc4d], a + ld a, $15 + call Predef + ld a, $9 + ld [$cc4d], a + ld a, $11 + call Predef +.asm_5491f ; 0x1e8a9 + ld hl, $68cb + call PrintText + jr .asm_bd408 ; 0x1e8af +.asm_18a67 ; 0x1e8b1 + ld hl, $68c6 + call PrintText +.asm_bd408 ; 0x1e8b7 + jp $24d7 + +INCBIN "baserom.gbc",$1e8ba,$1e8d0 - $1e8ba + +BillsHouseText3: ; 0x1e8d0 + db $08 ; asm + ld hl, $68da + call PrintText + jp $24d7 +; 0x1e8da + +INCBIN "baserom.gbc",$1e8da,$5 + +BillsHouseObject: ; 0x1e8df (size=38) + db $d ; border tile + + db $2 ; warps + db $7, $2, $0, $ff + db $7, $3, $0, $ff + + db $0 ; signs + + db $3 ; people + db SPRITE_SLOWBRO, $5 + 4, $6 + 4, $ff, $ff, $1 ; person + db SPRITE_BLACK_HAIR_BOY_2, $4 + 4, $4 + 4, $ff, $ff, $2 ; person + db SPRITE_BLACK_HAIR_BOY_2, $5 + 4, $6 + 4, $ff, $ff, $3 ; person + + ; warp-to + EVENT_DISP $4, $7, $2 + EVENT_DISP $4, $7, $3 + +BillsHouseBlocks: + INCBIN "maps/billshouse.blk" + +INCBIN "baserom.gbc",$1e905 + 16,$16fb - 16 + +SECTION "bank8",DATA,BANK[$8] + +INCBIN "baserom.gbc",$20000,$4000 + +SECTION "bank9",DATA,BANK[$9] + +RhydonPicFront: + INCBIN "pic/bmon/rhydon.pic" +RhydonPicBack: + INCBIN "pic/monback/rhydonb.pic" +KangaskhanPicFront: + INCBIN "pic/bmon/kangaskhan.pic" +KangaskhanPicBack: + INCBIN "pic/monback/kangaskhanb.pic" +NidoranMPicFront: + INCBIN "pic/bmon/nidoranm.pic" +NidoranMPicBack: + INCBIN "pic/monback/nidoranmb.pic" +ClefairyPicFront: + INCBIN "pic/bmon/clefairy.pic" +ClefairyPicBack: + INCBIN "pic/monback/clefairyb.pic" +SpearowPicFront: + INCBIN "pic/bmon/spearow.pic" +SpearowPicBack: + INCBIN "pic/monback/spearowb.pic" +VoltorbPicFront: + INCBIN "pic/bmon/voltorb.pic" +VoltorbPicBack: + INCBIN "pic/monback/voltorbb.pic" +NidokingPicFront: + INCBIN "pic/bmon/nidoking.pic" +NidokingPicBack: + INCBIN "pic/monback/nidokingb.pic" +SlowbroPicFront: + INCBIN "pic/bmon/slowbro.pic" +SlowbroPicBack: + INCBIN "pic/monback/slowbrob.pic" +IvysaurPicFront: + INCBIN "pic/bmon/ivysaur.pic" +IvysaurPicBack: + INCBIN "pic/monback/ivysaurb.pic" +ExeggutorPicFront: + INCBIN "pic/bmon/exeggutor.pic" +ExeggutorPicBack: + INCBIN "pic/monback/exeggutorb.pic" +LickitungPicFront: + INCBIN "pic/bmon/lickitung.pic" +LickitungPicBack: + INCBIN "pic/monback/lickitungb.pic" +ExeggcutePicFront: + INCBIN "pic/bmon/exeggcute.pic" +ExeggcutePicBack: + INCBIN "pic/monback/exeggcuteb.pic" +GrimerPicFront: + INCBIN "pic/bmon/grimer.pic" +GrimerPicBack: + INCBIN "pic/monback/grimerb.pic" +GengarPicFront: + INCBIN "pic/bmon/gengar.pic" +GengarPicBack: + INCBIN "pic/monback/gengarb.pic" +NidoranFPicFront: + INCBIN "pic/bmon/nidoranf.pic" +NidoranFPicBack: + INCBIN "pic/monback/nidoranfb.pic" +NidoqueenPicFront: + INCBIN "pic/bmon/nidoqueen.pic" +NidoqueenPicBack: + INCBIN "pic/monback/nidoqueenb.pic" +CubonePicFront: + INCBIN "pic/bmon/cubone.pic" +CubonePicBack: + INCBIN "pic/monback/cuboneb.pic" +RhyhornPicFront: + INCBIN "pic/bmon/rhyhorn.pic" +RhyhornPicBack: + INCBIN "pic/monback/rhyhornb.pic" +LaprasPicFront: + INCBIN "pic/bmon/lapras.pic" +LaprasPicBack: + INCBIN "pic/monback/laprasb.pic" +ArcaninePicFront: + INCBIN "pic/bmon/arcanine.pic" +ArcaninePicBack: + INCBIN "pic/monback/arcanineb.pic" +GyaradosPicFront: + INCBIN "pic/bmon/gyarados.pic" +GyaradosPicBack: + INCBIN "pic/monback/gyaradosb.pic" +ShellderPicFront: + INCBIN "pic/bmon/shellder.pic" +ShellderPicBack: + INCBIN "pic/monback/shellderb.pic" +TentacoolPicFront: + INCBIN "pic/bmon/tentacool.pic" +TentacoolPicBack: + INCBIN "pic/monback/tentacoolb.pic" +GastlyPicFront: + INCBIN "pic/bmon/gastly.pic" +GastlyPicBack: + INCBIN "pic/monback/gastlyb.pic" +ScytherPicFront: + INCBIN "pic/bmon/scyther.pic" +ScytherPicBack: + INCBIN "pic/monback/scytherb.pic" +StaryuPicFront: + INCBIN "pic/bmon/staryu.pic" +StaryuPicBack: + INCBIN "pic/monback/staryub.pic" +BlastoisePicFront: + INCBIN "pic/bmon/blastoise.pic" +BlastoisePicBack: + INCBIN "pic/monback/blastoiseb.pic" +PinsirPicFront: + INCBIN "pic/bmon/pinsir.pic" +PinsirPicBack: + INCBIN "pic/monback/pinsirb.pic" +TangelaPicFront: + INCBIN "pic/bmon/tangela.pic" +TangelaPicBack: + INCBIN "pic/monback/tangelab.pic" + +INCBIN "baserom.gbc",$27d6b,$27DAE - $27d6b + +TypeNamePointers: ; 7DAE + dw Type00Name + dw Type01Name + dw Type02Name + dw Type03Name + dw Type04Name + dw Type05Name + dw Type06Name + dw Type07Name + dw Type08Name + dw Type00Name + dw Type00Name + dw Type00Name + dw Type00Name + dw Type00Name + dw Type00Name + dw Type00Name + dw Type00Name + dw Type00Name + dw Type00Name + dw Type00Name + dw Type14Name + dw Type15Name + dw Type16Name + dw Type17Name + dw Type18Name + dw Type19Name + dw Type1AName + +Type00Name: + db "NORMAL@" +Type01Name: + db "FIGHTING@" +Type02Name: + db "FLYING@" +Type03Name: + db "POISON@" +Type14Name: + db "FIRE@" +Type15Name: + db "WATER@" +Type16Name: + db "GRASS@" +Type17Name: + db "ELECTRIC@" +Type18Name: + db "PSYCHIC@" +Type19Name: + db "ICE@" +Type04Name: + db "GROUND@" +Type05Name: + db "ROCK@" +Type06Name: + db "BIRD@" +Type07Name: + db "BUG@" +Type08Name: + db "GHOST@" +Type1AName: + db "DRAGON@" + +SaveTrainerName: ; 7E4A + ld hl,TrainerNamePointers + ld a,[W_TRAINERCLASS] + dec a + ld c,a + ld b,0 + add hl,bc + add hl,bc + ld a,[hli] + ld h,[hl] + ld l,a + ld de,$CD6D +.CopyCharacter\@ + ld a,[hli] + ld [de],a + inc de + cp "@" + jr nz,.CopyCharacter\@ + ret + +TrainerNamePointers: +; what is the point of these? + dw YoungsterName + dw BugCatcherName + dw LassName + dw $D04A + dw JrTrainerMName + dw JrTrainerFName + dw PokemaniacName + dw SuperNerdName + dw $D04A + dw $D04A + dw BurglarName + dw EngineerName + dw JugglerXName + dw $D04A + dw SwimmerName + dw $D04A + dw $D04A + dw BeautyName + dw $D04A + dw RockerName + dw JugglerName + dw $D04A + dw $D04A + dw BlackbeltName + dw $D04A + dw ProfOakName + dw ChiefName + dw ScientistName + dw $D04A + dw RocketName + dw CooltrainerMName + dw CooltrainerFName + dw $D04A + dw $D04A + dw $D04A + dw $D04A + dw $D04A + dw $D04A + dw $D04A + dw $D04A + dw $D04A + dw $D04A + dw $D04A + dw $D04A + dw $D04A + dw $D04A + dw $D04A + +YoungsterName: + db "YOUNGSTER@" +BugCatcherName: + db "BUG CATCHER@" +LassName: + db "LASS@" +JrTrainerMName: + db "JR.TRAINER♂@" +JrTrainerFName: + db "JR.TRAINER♀@" +PokemaniacName: + db "POKéMANIAC@" +SuperNerdName: + db "SUPER NERD@" +BurglarName: + db "BURGLAR@" +EngineerName: + db "ENGINEER@" +JugglerXName: + db "JUGGLER@" +SwimmerName: + db "SWIMMER@" +BeautyName: + db "BEAUTY@" +RockerName: + db "ROCKER@" +JugglerName: + db "JUGGLER@" +BlackbeltName: + db "BLACKBELT@" +ProfOakName: + db "PROF.OAK@" +ChiefName: + db "CHIEF@" +ScientistName: + db "SCIENTIST@" +RocketName: + db "ROCKET@" +CooltrainerMName: + db "COOLTRAINER♂@" +CooltrainerFName: + db "COOLTRAINER♀@" + +INCBIN "baserom.gbc",$27f86,$27fb8-$27f86 + +SECTION "bankA",DATA,BANK[$A] +GrowlithePicFront: + INCBIN "pic/bmon/growlithe.pic" +GrowlithePicBack: + INCBIN "pic/monback/growlitheb.pic" +OnixPicFront: + INCBIN "pic/bmon/onix.pic" +OnixPicBack: + INCBIN "pic/monback/onixb.pic" +FearowPicFront: + INCBIN "pic/bmon/fearow.pic" +FearowPicBack: + INCBIN "pic/monback/fearowb.pic" +PidgeyPicFront: + INCBIN "pic/bmon/pidgey.pic" +PidgeyPicBack: + INCBIN "pic/monback/pidgeyb.pic" +SlowpokePicFront: + INCBIN "pic/bmon/slowpoke.pic" +SlowpokePicBack: + INCBIN "pic/monback/slowpokeb.pic" +KadabraPicFront: + INCBIN "pic/bmon/kadabra.pic" +KadabraPicBack: + INCBIN "pic/monback/kadabrab.pic" +GravelerPicFront: + INCBIN "pic/bmon/graveler.pic" +GravelerPicBack: + INCBIN "pic/monback/gravelerb.pic" +ChanseyPicFront: + INCBIN "pic/bmon/chansey.pic" +ChanseyPicBack: + INCBIN "pic/monback/chanseyb.pic" +MachokePicFront: + INCBIN "pic/bmon/machoke.pic" +MachokePicBack: + INCBIN "pic/monback/machokeb.pic" +MrMimePicFront: + INCBIN "pic/bmon/mr.mime.pic" +MrMimePicBack: + INCBIN "pic/monback/mr.mimeb.pic" +HitmonleePicFront: + INCBIN "pic/bmon/hitmonlee.pic" +HitmonleePicBack: + INCBIN "pic/monback/hitmonleeb.pic" +HitmonchanPicFront: + INCBIN "pic/bmon/hitmonchan.pic" +HitmonchanPicBack: + INCBIN "pic/monback/hitmonchanb.pic" +ArbokPicFront: + INCBIN "pic/bmon/arbok.pic" +ArbokPicBack: + INCBIN "pic/monback/arbokb.pic" +ParasectPicFront: + INCBIN "pic/bmon/parasect.pic" +ParasectPicBack: + INCBIN "pic/monback/parasectb.pic" +PsyduckPicFront: + INCBIN "pic/bmon/psyduck.pic" +PsyduckPicBack: + INCBIN "pic/monback/psyduckb.pic" +DrowzeePicFront: + INCBIN "pic/bmon/drowzee.pic" +DrowzeePicBack: + INCBIN "pic/monback/drowzeeb.pic" +GolemPicFront: + INCBIN "pic/bmon/golem.pic" +GolemPicBack: + INCBIN "pic/monback/golemb.pic" +MagmarPicFront: + INCBIN "pic/bmon/magmar.pic" +MagmarPicBack: + INCBIN "pic/monback/magmarb.pic" +ElectabuzzPicFront: + INCBIN "pic/bmon/electabuzz.pic" +ElectabuzzPicBack: + INCBIN "pic/monback/electabuzzb.pic" +MagnetonPicFront: + INCBIN "pic/bmon/magneton.pic" +MagnetonPicBack: + INCBIN "pic/monback/magnetonb.pic" +KoffingPicFront: + INCBIN "pic/bmon/koffing.pic" +KoffingPicBack: + INCBIN "pic/monback/koffingb.pic" +MankeyPicFront: + INCBIN "pic/bmon/mankey.pic" +MankeyPicBack: + INCBIN "pic/monback/mankeyb.pic" +SeelPicFront: + INCBIN "pic/bmon/seel.pic" +SeelPicBack: + INCBIN "pic/monback/seelb.pic" +DiglettPicFront: + INCBIN "pic/bmon/diglett.pic" +DiglettPicBack: + INCBIN "pic/monback/diglettb.pic" +TaurosPicFront: + INCBIN "pic/bmon/tauros.pic" +TaurosPicBack: + INCBIN "pic/monback/taurosb.pic" +FarfetchdPicFront: + INCBIN "pic/bmon/farfetchd.pic" +FarfetchdPicBack: + INCBIN "pic/monback/farfetchdb.pic" +VenonatPicFront: + INCBIN "pic/bmon/venonat.pic" +VenonatPicBack: + INCBIN "pic/monback/venonatb.pic" +DragonitePicFront: + INCBIN "pic/bmon/dragonite.pic" +DragonitePicBack: + INCBIN "pic/monback/dragoniteb.pic" +DoduoPicFront: + INCBIN "pic/bmon/doduo.pic" +DoduoPicBack: + INCBIN "pic/monback/doduob.pic" +PoliwagPicFront: + INCBIN "pic/bmon/poliwag.pic" +PoliwagPicBack: + INCBIN "pic/monback/poliwagb.pic" +JynxPicFront: + INCBIN "pic/bmon/jynx.pic" +JynxPicBack: + INCBIN "pic/monback/jynxb.pic" +MoltresPicFront: + INCBIN "pic/bmon/moltres.pic" +MoltresPicBack: + INCBIN "pic/monback/moltresb.pic" + +INCBIN "baserom.gbc",$2bea9,$3efc-$3ea9 + +SECTION "bankB",DATA,BANK[$B] +ArticunoPicFront: + INCBIN "pic/bmon/articuno.pic" +ArticunoPicBack: + INCBIN "pic/monback/articunob.pic" +ZapdosPicFront: + INCBIN "pic/bmon/zapdos.pic" +ZapdosPicBack: + INCBIN "pic/monback/zapdosb.pic" +DittoPicFront: + INCBIN "pic/bmon/ditto.pic" +DittoPicBack: + INCBIN "pic/monback/dittob.pic" +MeowthPicFront: + INCBIN "pic/bmon/meowth.pic" +MeowthPicBack: + INCBIN "pic/monback/meowthb.pic" +KrabbyPicFront: + INCBIN "pic/bmon/krabby.pic" +KrabbyPicBack: + INCBIN "pic/monback/krabbyb.pic" +VulpixPicFront: + INCBIN "pic/bmon/vulpix.pic" +VulpixPicBack: + INCBIN "pic/monback/vulpixb.pic" +NinetalesPicFront: + INCBIN "pic/bmon/ninetales.pic" +NinetalesPicBack: + INCBIN "pic/monback/ninetalesb.pic" +PikachuPicFront: + INCBIN "pic/bmon/pikachu.pic" +PikachuPicBack: + INCBIN "pic/monback/pikachub.pic" +RaichuPicFront: + INCBIN "pic/bmon/raichu.pic" +RaichuPicBack: + INCBIN "pic/monback/raichub.pic" +DratiniPicFront: + INCBIN "pic/bmon/dratini.pic" +DratiniPicBack: + INCBIN "pic/monback/dratinib.pic" +DragonairPicFront: + INCBIN "pic/bmon/dragonair.pic" +DragonairPicBack: + INCBIN "pic/monback/dragonairb.pic" +KabutoPicFront: + INCBIN "pic/bmon/kabuto.pic" +KabutoPicBack: + INCBIN "pic/monback/kabutob.pic" +KabutopsPicFront: + INCBIN "pic/bmon/kabutops.pic" +KabutopsPicBack: + INCBIN "pic/monback/kabutopsb.pic" +HorseaPicFront: + INCBIN "pic/bmon/horsea.pic" +HorseaPicBack: + INCBIN "pic/monback/horseab.pic" +SeadraPicFront: + INCBIN "pic/bmon/seadra.pic" +SeadraPicBack: + INCBIN "pic/monback/seadrab.pic" +SandshrewPicFront: + INCBIN "pic/bmon/sandshrew.pic" +SandshrewPicBack: + INCBIN "pic/monback/sandshrewb.pic" +SandslashPicFront: + INCBIN "pic/bmon/sandslash.pic" +SandslashPicBack: + INCBIN "pic/monback/sandslashb.pic" +OmanytePicFront: + INCBIN "pic/bmon/omanyte.pic" +OmanytePicBack: + INCBIN "pic/monback/omanyteb.pic" +OmastarPicFront: + INCBIN "pic/bmon/omastar.pic" +OmastarPicBack: + INCBIN "pic/monback/omastarb.pic" +JigglypuffPicFront: + INCBIN "pic/bmon/jigglypuff.pic" +JigglypuffPicBack: + INCBIN "pic/monback/jigglypuffb.pic" +WigglytuffPicFront: + INCBIN "pic/bmon/wigglytuff.pic" +WigglytuffPicBack: + INCBIN "pic/monback/wigglytuffb.pic" +EeveePicFront: + INCBIN "pic/bmon/eevee.pic" +EeveePicBack: + INCBIN "pic/monback/eeveeb.pic" +FlareonPicFront: + INCBIN "pic/bmon/flareon.pic" +FlareonPicBack: + INCBIN "pic/monback/flareonb.pic" +JolteonPicFront: + INCBIN "pic/bmon/jolteon.pic" +JolteonPicBack: + INCBIN "pic/monback/jolteonb.pic" +VaporeonPicFront: + INCBIN "pic/bmon/vaporeon.pic" +VaporeonPicBack: + INCBIN "pic/monback/vaporeonb.pic" +MachopPicFront: + INCBIN "pic/bmon/machop.pic" +MachopPicBack: + INCBIN "pic/monback/machopb.pic" +ZubatPicFront: + INCBIN "pic/bmon/zubat.pic" +ZubatPicBack: + INCBIN "pic/monback/zubatb.pic" +EkansPicFront: + INCBIN "pic/bmon/ekans.pic" +EkansPicBack: + INCBIN "pic/monback/ekansb.pic" +ParasPicFront: + INCBIN "pic/bmon/paras.pic" +ParasPicBack: + INCBIN "pic/monback/parasb.pic" +PoliwhirlPicFront: + INCBIN "pic/bmon/poliwhirl.pic" +PoliwhirlPicBack: + INCBIN "pic/monback/poliwhirlb.pic" +PoliwrathPicFront: + INCBIN "pic/bmon/poliwrath.pic" +PoliwrathPicBack: + INCBIN "pic/monback/poliwrathb.pic" +WeedlePicFront: + INCBIN "pic/bmon/weedle.pic" +WeedlePicBack: + INCBIN "pic/monback/weedleb.pic" +KakunaPicFront: + INCBIN "pic/bmon/kakuna.pic" +KakunaPicBack: + INCBIN "pic/monback/kakunab.pic" +BeedrillPicFront: + INCBIN "pic/bmon/beedrill.pic" +BeedrillPicBack: + INCBIN "pic/monback/beedrillb.pic" +FossilKabutopsPic: + INCBIN "pic/bmon/fossilkabutops.pic" + +INCBIN "baserom.gbc",$2fb7b,$2ff3c-$2fb7b + +SECTION "bankC",DATA,BANK[$C] +DodrioPicFront: + INCBIN "pic/bmon/dodrio.pic" +DodrioPicBack: + INCBIN "pic/monback/dodriob.pic" +PrimeapePicFront: + INCBIN "pic/bmon/primeape.pic" +PrimeapePicBack: + INCBIN "pic/monback/primeapeb.pic" +DugtrioPicFront: + INCBIN "pic/bmon/dugtrio.pic" +DugtrioPicBack: + INCBIN "pic/monback/dugtriob.pic" +VenomothPicFront: + INCBIN "pic/bmon/venomoth.pic" +VenomothPicBack: + INCBIN "pic/monback/venomothb.pic" +DewgongPicFront: + INCBIN "pic/bmon/dewgong.pic" +DewgongPicBack: + INCBIN "pic/monback/dewgongb.pic" +CaterpiePicFront: + INCBIN "pic/bmon/caterpie.pic" +CaterpiePicBack: + INCBIN "pic/monback/caterpieb.pic" +MetapodPicFront: + INCBIN "pic/bmon/metapod.pic" +MetapodPicBack: + INCBIN "pic/monback/metapodb.pic" +ButterfreePicFront: + INCBIN "pic/bmon/butterfree.pic" +ButterfreePicBack: + INCBIN "pic/monback/butterfreeb.pic" +MachampPicFront: + INCBIN "pic/bmon/machamp.pic" +MachampPicBack: + INCBIN "pic/monback/machampb.pic" +GolduckPicFront: + INCBIN "pic/bmon/golduck.pic" +GolduckPicBack: + INCBIN "pic/monback/golduckb.pic" +HypnoPicFront: + INCBIN "pic/bmon/hypno.pic" +HypnoPicBack: + INCBIN "pic/monback/hypnob.pic" +GolbatPicFront: + INCBIN "pic/bmon/golbat.pic" +GolbatPicBack: + INCBIN "pic/monback/golbatb.pic" +MewtwoPicFront: + INCBIN "pic/bmon/mewtwo.pic" +MewtwoPicBack: + INCBIN "pic/monback/mewtwob.pic" +SnorlaxPicFront: + INCBIN "pic/bmon/snorlax.pic" +SnorlaxPicBack: + INCBIN "pic/monback/snorlaxb.pic" +MagikarpPicFront: + INCBIN "pic/bmon/magikarp.pic" +MagikarpPicBack: + INCBIN "pic/monback/magikarpb.pic" +MukPicFront: + INCBIN "pic/bmon/muk.pic" +MukPicBack: + INCBIN "pic/monback/mukb.pic" +KinglerPicFront: + INCBIN "pic/bmon/kingler.pic" +KinglerPicBack: + INCBIN "pic/monback/kinglerb.pic" +CloysterPicFront: + INCBIN "pic/bmon/cloyster.pic" +CloysterPicBack: + INCBIN "pic/monback/cloysterb.pic" +ElectrodePicFront: + INCBIN "pic/bmon/electrode.pic" +ElectrodePicBack: + INCBIN "pic/monback/electrodeb.pic" +ClefablePicFront: + INCBIN "pic/bmon/clefable.pic" +ClefablePicBack: + INCBIN "pic/monback/clefableb.pic" +WeezingPicFront: + INCBIN "pic/bmon/weezing.pic" +WeezingPicBack: + INCBIN "pic/monback/weezingb.pic" +PersianPicFront: + INCBIN "pic/bmon/persian.pic" +PersianPicBack: + INCBIN "pic/monback/persianb.pic" +MarowakPicFront: + INCBIN "pic/bmon/marowak.pic" +MarowakPicBack: + INCBIN "pic/monback/marowakb.pic" +HaunterPicFront: + INCBIN "pic/bmon/haunter.pic" +HaunterPicBack: + INCBIN "pic/monback/haunterb.pic" +AbraPicFront: + INCBIN "pic/bmon/abra.pic" +AbraPicBack: + INCBIN "pic/monback/abrab.pic" +AlakazamPicFront: + INCBIN "pic/bmon/alakazam.pic" +AlakazamPicBack: + INCBIN "pic/monback/alakazamb.pic" +PidgeottoPicFront: + INCBIN "pic/bmon/pidgeotto.pic" +PidgeottoPicBack: + INCBIN "pic/monback/pidgeottob.pic" +PidgeotPicFront: + INCBIN "pic/bmon/pidgeot.pic" +PidgeotPicBack: + INCBIN "pic/monback/pidgeotb.pic" +StarmiePicFront: + INCBIN "pic/bmon/starmie.pic" +StarmiePicBack: + INCBIN "pic/monback/starmieb.pic" +RedPicBack: + INCBIN "pic/trainer/redb.pic" +OldManPic: + INCBIN "pic/trainer/oldman.pic" + +INCBIN "baserom.gbc",$33f2b,$3f90-$3f2b + +SECTION "bankD",DATA,BANK[$D] +BulbasaurPicFront: + INCBIN "pic/bmon/bulbasaur.pic" +BulbasaurPicBack: + INCBIN "pic/monback/bulbasaurb.pic" +VenusaurPicFront: + INCBIN "pic/bmon/venusaur.pic" +VenusaurPicBack: + INCBIN "pic/monback/venusaurb.pic" +TentacruelPicFront: + INCBIN "pic/bmon/tentacruel.pic" +TentacruelPicBack: + INCBIN "pic/monback/tentacruelb.pic" +GoldeenPicFront: + INCBIN "pic/bmon/goldeen.pic" +GoldeenPicBack: + INCBIN "pic/monback/goldeenb.pic" +SeakingPicFront: + INCBIN "pic/bmon/seaking.pic" +SeakingPicBack: + INCBIN "pic/monback/seakingb.pic" +PonytaPicFront: + INCBIN "pic/bmon/ponyta.pic" +RapidashPicFront: + INCBIN "pic/bmon/rapidash.pic" +PonytaPicBack: + INCBIN "pic/monback/ponytab.pic" +RapidashPicBack: + INCBIN "pic/monback/rapidashb.pic" +RattataPicFront: + INCBIN "pic/bmon/rattata.pic" +RattataPicBack: + INCBIN "pic/monback/rattatab.pic" +RaticatePicFront: + INCBIN "pic/bmon/raticate.pic" +RaticatePicBack: + INCBIN "pic/monback/raticateb.pic" +NidorinoPicFront: + INCBIN "pic/bmon/nidorino.pic" +NidorinoPicBack: + INCBIN "pic/monback/nidorinob.pic" +NidorinaPicFront: + INCBIN "pic/bmon/nidorina.pic" +NidorinaPicBack: + INCBIN "pic/monback/nidorinab.pic" +GeodudePicFront: + INCBIN "pic/bmon/geodude.pic" +GeodudePicBack: + INCBIN "pic/monback/geodudeb.pic" +PorygonPicFront: + INCBIN "pic/bmon/porygon.pic" +PorygonPicBack: + INCBIN "pic/monback/porygonb.pic" +AerodactylPicFront: + INCBIN "pic/bmon/aerodactyl.pic" +AerodactylPicBack: + INCBIN "pic/monback/aerodactylb.pic" +MagnemitePicFront: + INCBIN "pic/bmon/magnemite.pic" +MagnemitePicBack: + INCBIN "pic/monback/magnemiteb.pic" +CharmanderPicFront: + INCBIN "pic/bmon/charmander.pic" +CharmanderPicBack: + INCBIN "pic/monback/charmanderb.pic" +SquirtlePicFront: + INCBIN "pic/bmon/squirtle.pic" +SquirtlePicBack: + INCBIN "pic/monback/squirtleb.pic" +CharmeleonPicFront: + INCBIN "pic/bmon/charmeleon.pic" +CharmeleonPicBack: + INCBIN "pic/monback/charmeleonb.pic" +WartortlePicFront: + INCBIN "pic/bmon/wartortle.pic" +WartortlePicBack: + INCBIN "pic/monback/wartortleb.pic" +CharizardPicFront: + INCBIN "pic/bmon/charizard.pic" +CharizardPicBack: + INCBIN "pic/monback/charizardb.pic" +FossilAerodactylPic: + INCBIN "pic/bmon/fossilaerodactyl.pic" +GhostPic: + INCBIN "pic/other/ghost.pic" +OddishPicFront: + INCBIN "pic/bmon/oddish.pic" +OddishPicBack: + INCBIN "pic/monback/oddishb.pic" +GloomPicFront: + INCBIN "pic/bmon/gloom.pic" +GloomPicBack: + INCBIN "pic/monback/gloomb.pic" +VileplumePicFront: + INCBIN "pic/bmon/vileplume.pic" +VileplumePicBack: + INCBIN "pic/monback/vileplumeb.pic" +BellsproutPicFront: + INCBIN "pic/bmon/bellsprout.pic" +BellsproutPicBack: + INCBIN "pic/monback/bellsproutb.pic" +WeepinbellPicFront: + INCBIN "pic/bmon/weepinbell.pic" +WeepinbellPicBack: + INCBIN "pic/monback/weepinbellb.pic" +VictreebelPicFront: + INCBIN "pic/bmon/victreebel.pic" +VictreebelPicBack: + INCBIN "pic/monback/victreebelb.pic" + +INCBIN "baserom.gbc",$37244,$3e88-$3244 + +SECTION "bankE",DATA,BANK[$E] + +Attacks: ; 4000 +; characteristics of each attack +; animation, effect, power, type, accuracy, PP +db POUND ,$00,$28,NORMAL,$FF,35 +db KARATE_CHOP ,$00,$32,NORMAL,$FF,25 +db DOUBLESLAP ,$1D,$0F,NORMAL,$D8,10 +db COMET_PUNCH ,$1D,$12,NORMAL,$D8,15 +db MEGA_PUNCH ,$00,$50,NORMAL,$D8,20 +db PAY_DAY ,$10,$28,NORMAL,$FF,20 +db FIRE_PUNCH ,$04,$4B,FIRE,$FF,15 +db ICE_PUNCH ,$05,$4B,ICE,$FF,15 +db THUNDERPUNCH,$06,$4B,ELECTRIC,$FF,15 +db SCRATCH ,$00,$28,NORMAL,$FF,35 +db VICEGRIP ,$00,$37,NORMAL,$FF,30 +db GUILLOTINE ,$26,$01,NORMAL,$4C,5 +db RAZOR_WIND ,$27,$50,NORMAL,$BF,10 +db SWORDS_DANCE,$32,$00,NORMAL,$FF,30 +db CUT ,$00,$32,NORMAL,$F2,30 +db GUST ,$00,$28,NORMAL,$FF,35 +db WING_ATTACK ,$00,$23,FLYING,$FF,35 +db WHIRLWIND ,$1C,$00,NORMAL,$D8,20 +db FLY ,$2B,$46,FLYING,$F2,15 +db BIND ,$2A,$0F,NORMAL,$BF,20 +db SLAM ,$00,$50,NORMAL,$BF,20 +db VINE_WHIP ,$00,$23,GRASS,$FF,10 +db STOMP ,$25,$41,NORMAL,$FF,20 +db DOUBLE_KICK ,$2C,$1E,FIGHTING,$FF,30 +db MEGA_KICK ,$00,$78,NORMAL,$BF,5 +db JUMP_KICK ,$2D,$46,FIGHTING,$F2,25 +db ROLLING_KICK,$25,$3C,FIGHTING,$D8,15 +db SAND_ATTACK ,$16,$00,NORMAL,$FF,15 +db HEADBUTT ,$25,$46,NORMAL,$FF,15 +db HORN_ATTACK ,$00,$41,NORMAL,$FF,25 +db FURY_ATTACK ,$1D,$0F,NORMAL,$D8,20 +db HORN_DRILL ,$26,$01,NORMAL,$4C,5 +db TACKLE ,$00,$23,NORMAL,$F2,35 +db BODY_SLAM ,$24,$55,NORMAL,$FF,15 +db WRAP ,$2A,$0F,NORMAL,$D8,20 +db TAKE_DOWN ,$30,$5A,NORMAL,$D8,20 +db THRASH ,$1B,$5A,NORMAL,$FF,20 +db DOUBLE_EDGE ,$30,$64,NORMAL,$FF,15 +db TAIL_WHIP ,$13,$00,NORMAL,$FF,30 +db POISON_STING,$02,$0F,POISON,$FF,35 +db TWINEEDLE ,$4D,$19,BUG,$FF,20 +db PIN_MISSILE ,$1D,$0E,BUG,$D8,20 +db LEER ,$13,$00,NORMAL,$FF,30 +db BITE ,$1F,$3C,NORMAL,$FF,25 +db GROWL ,$12,$00,NORMAL,$FF,40 +db ROAR ,$1C,$00,NORMAL,$FF,20 +db SING ,$20,$00,NORMAL,$8C,15 +db SUPERSONIC ,$31,$00,NORMAL,$8C,20 +db SONICBOOM ,$29,$01,NORMAL,$E5,20 +db DISABLE ,$56,$00,NORMAL,$8C,20 +db ACID ,$45,$28,POISON,$FF,30 +db EMBER ,$04,$28,FIRE,$FF,25 +db FLAMETHROWER,$04,$5F,FIRE,$FF,15 +db MIST ,$2E,$00,ICE,$FF,30 +db WATER_GUN ,$00,$28,WATER,$FF,25 +db HYDRO_PUMP ,$00,$78,WATER,$CC,5 +db SURF ,$00,$5F,WATER,$FF,15 +db ICE_BEAM ,$05,$5F,ICE,$FF,10 +db BLIZZARD ,$05,$78,ICE,$E5,5 +db PSYBEAM ,$4C,$41,PSYCHIC,$FF,20 +db BUBBLEBEAM ,$46,$41,WATER,$FF,20 +db AURORA_BEAM ,$44,$41,ICE,$FF,20 +db HYPER_BEAM ,$50,$96,NORMAL,$E5,5 +db PECK ,$00,$23,FLYING,$FF,35 +db DRILL_PECK ,$00,$50,FLYING,$FF,20 +db SUBMISSION ,$30,$50,FIGHTING,$CC,25 +db LOW_KICK ,$25,$32,FIGHTING,$E5,20 +db COUNTER ,$00,$01,FIGHTING,$FF,20 +db SEISMIC_TOSS,$29,$01,FIGHTING,$FF,20 +db STRENGTH ,$00,$50,NORMAL,$FF,15 +db ABSORB ,$03,$14,GRASS,$FF,20 +db MEGA_DRAIN ,$03,$28,GRASS,$FF,10 +db LEECH_SEED ,$54,$00,GRASS,$E5,10 +db GROWTH ,$0D,$00,NORMAL,$FF,40 +db RAZOR_LEAF ,$00,$37,GRASS,$F2,25 +db SOLARBEAM ,$27,$78,GRASS,$FF,10 +db POISONPOWDER,$42,$00,POISON,$BF,35 +db STUN_SPORE ,$43,$00,GRASS,$BF,30 +db SLEEP_POWDER,$20,$00,GRASS,$BF,15 +db PETAL_DANCE ,$1B,$46,GRASS,$FF,20 +db STRING_SHOT ,$14,$00,BUG,$F2,40 +db DRAGON_RAGE ,$29,$01,DRAGON,$FF,10 +db FIRE_SPIN ,$2A,$0F,FIRE,$B2,15 +db THUNDERSHOCK,$06,$28,ELECTRIC,$FF,30 +db THUNDERBOLT ,$06,$5F,ELECTRIC,$FF,15 +db THUNDER_WAVE,$43,$00,ELECTRIC,$FF,20 +db THUNDER ,$06,$78,ELECTRIC,$B2,10 +db ROCK_THROW ,$00,$32,ROCK,$A5,15 +db EARTHQUAKE ,$00,$64,GROUND,$FF,10 +db FISSURE ,$26,$01,GROUND,$4C,5 +db DIG ,$27,$64,GROUND,$FF,10 +db TOXIC ,$42,$00,POISON,$D8,10 +db CONFUSION ,$4C,$32,PSYCHIC,$FF,25 +db PSYCHIC_M ,$47,$5A,PSYCHIC,$FF,10 +db HYPNOSIS ,$20,$00,PSYCHIC,$99,20 +db MEDITATE ,$0A,$00,PSYCHIC,$FF,40 +db AGILITY ,$34,$00,PSYCHIC,$FF,30 +db QUICK_ATTACK,$00,$28,NORMAL,$FF,30 +db RAGE ,$51,$14,NORMAL,$FF,20 +db TELEPORT ,$1C,$00,PSYCHIC,$FF,20 +db NIGHT_SHADE ,$29,$00,GHOST,$FF,15 +db MIMIC ,$52,$00,NORMAL,$FF,10 +db SCREECH ,$3B,$00,NORMAL,$D8,40 +db DOUBLE_TEAM ,$0F,$00,NORMAL,$FF,15 +db RECOVER ,$38,$00,NORMAL,$FF,20 +db HARDEN ,$0B,$00,NORMAL,$FF,30 +db MINIMIZE ,$0F,$00,NORMAL,$FF,20 +db SMOKESCREEN ,$16,$00,NORMAL,$FF,20 +db CONFUSE_RAY ,$31,$00,GHOST,$FF,10 +db WITHDRAW ,$0B,$00,WATER,$FF,40 +db DEFENSE_CURL,$0B,$00,NORMAL,$FF,40 +db BARRIER ,$33,$00,PSYCHIC,$FF,30 +db LIGHT_SCREEN,$40,$00,PSYCHIC,$FF,30 +db HAZE ,$19,$00,ICE,$FF,30 +db REFLECT ,$41,$00,PSYCHIC,$FF,20 +db FOCUS_ENERGY,$2F,$00,NORMAL,$FF,30 +db BIDE ,$1A,$00,NORMAL,$FF,10 +db METRONOME ,$53,$00,NORMAL,$FF,10 +db MIRROR_MOVE ,$09,$00,FLYING,$FF,20 +db SELFDESTRUCT,$07,$82,NORMAL,$FF,5 +db EGG_BOMB ,$00,$64,NORMAL,$BF,10 +db LICK ,$24,$14,GHOST,$FF,30 +db SMOG ,$21,$14,POISON,$B2,20 +db SLUDGE ,$21,$41,POISON,$FF,20 +db BONE_CLUB ,$1F,$41,GROUND,$D8,20 +db FIRE_BLAST ,$22,$78,FIRE,$D8,5 +db WATERFALL ,$00,$50,WATER,$FF,15 +db CLAMP ,$2A,$23,WATER,$BF,10 +db SWIFT ,$11,$3C,NORMAL,$FF,20 +db SKULL_BASH ,$27,$64,NORMAL,$FF,15 +db SPIKE_CANNON,$1D,$14,NORMAL,$FF,15 +db CONSTRICT ,$46,$0A,NORMAL,$FF,35 +db AMNESIA ,$35,$00,PSYCHIC,$FF,20 +db KINESIS ,$16,$00,PSYCHIC,$CC,15 +db SOFTBOILED ,$38,$00,NORMAL,$FF,10 +db HI_JUMP_KICK,$2D,$55,FIGHTING,$E5,20 +db GLARE ,$43,$00,NORMAL,$BF,30 +db DREAM_EATER ,$08,$64,PSYCHIC,$FF,15 +db POISON_GAS ,$42,$00,POISON,$8C,40 +db BARRAGE ,$1D,$0F,NORMAL,$D8,20 +db LEECH_LIFE ,$03,$14,BUG,$FF,15 +db LOVELY_KISS ,$20,$00,NORMAL,$BF,10 +db SKY_ATTACK ,$27,$8C,FLYING,$E5,5 +db TRANSFORM ,$39,$00,NORMAL,$FF,10 +db BUBBLE ,$46,$14,WATER,$FF,30 +db DIZZY_PUNCH ,$00,$46,NORMAL,$FF,10 +db SPORE ,$20,$00,GRASS,$FF,15 +db FLASH ,$16,$00,NORMAL,$B2,20 +db PSYWAVE ,$29,$01,PSYCHIC,$CC,15 +db SPLASH ,$55,$00,NORMAL,$FF,40 +db ACID_ARMOR ,$33,$00,POISON,$FF,40 +db CRABHAMMER ,$00,$5A,WATER,$D8,10 +db EXPLOSION ,$07,$AA,NORMAL,$FF,5 +db FURY_SWIPES ,$1D,$12,NORMAL,$CC,15 +db BONEMERANG ,$2C,$32,GROUND,$E5,10 +db REST ,$38,$00,PSYCHIC,$FF,10 +db ROCK_SLIDE ,$00,$4B,ROCK,$E5,10 +db HYPER_FANG ,$1F,$50,NORMAL,$E5,15 +db SHARPEN ,$0A,$00,NORMAL,$FF,30 +db CONVERSION ,$18,$00,NORMAL,$FF,30 +db TRI_ATTACK ,$00,$50,NORMAL,$FF,10 +db SUPER_FANG ,$28,$01,NORMAL,$E5,10 +db SLASH ,$00,$46,NORMAL,$FF,20 +db SUBSTITUTE ,$4F,$00,NORMAL,$FF,10 +db STRUGGLE ,$30,$32,NORMAL,$FF,10 + +INCBIN "baserom.gbc",$383DE,$39884 - $383DE + +ReadAttack: ; 5884 + push hl + push de + push bc + dec a + ld hl,Attacks + ld bc,6 + call AddNTimes + ld de,$CFCC + call CopyData + pop bc + pop de + pop hl + ret + +; trainer data: from 5C53 to 652E +INCBIN "baserom.gbc",$3989B,$39914 - $3989B + +; trainer pic pointers and base money. +dw YoungsterPic +db 0,$15,0 + +dw BugCatcherPic +db 0,$10,0 + +dw LassPic +db 0,$15,0 + +dw SailorPic +db 0,$30,0 + +dw JrTrainerMPic +db 0,$20,0 + +dw JrTrainerFPic +db 0,$20,0 + +dw PokemaniacPic +db 0,$50,0 + +dw SuperNerdPic +db 0,$25,0 + +dw HikerPic +db 0,$35,0 + +dw BikerPic +db 0,$20,0 + +dw BurglarPic +db 0,$90,0 + +dw EngineerPic +db 0,$50,0 + +dw JugglerPic +db 0,$35,0 + +dw FisherPic +db 0,$35,0 + +dw SwimmerPic +db 0,$05,0 + +dw CueBallPic +db 0,$25,0 + +dw GamblerPic +db 0,$70,0 + +dw BeautyPic +db 0,$70,0 + +dw PsychicPic +db 0,$10,0 + +dw RockerPic +db 0,$25,0 + +dw JugglerPic +db 0,$35,0 + +dw TamerPic +db 0,$40,0 + +dw BirdKeeperPic +db 0,$25,0 + +dw BlackbeltPic +db 0,$25,0 + +dw Rival1Pic +db 0,$35,0 + +dw ProfOakPic +db 0,$99,0 + +dw ChiefPic +db 0,$30,0 + +dw ScientistPic +db 0,$50,0 + +dw GiovanniPic +db 0,$99,0 + +dw RocketPic +db 0,$30,0 + +dw CooltrainerMPic +db 0,$35,0 + +dw CooltrainerFPic +db 0,$35,0 + +dw BrunoPic +db 0,$99,0 + +dw BrockPic +db 0,$99,0 + +dw MistyPic +db 0,$99,0 + +dw LtSurgePic +db 0,$99,0 + +dw ErikaPic +db 0,$99,0 + +dw KogaPic +db 0,$99,0 + +dw BlainePic +db 0,$99,0 + +dw SabrinaPic +db 0,$99,0 + +dw GentlemanPic +db 0,$70,0 + +dw Rival2Pic +db 0,$65,0 + +dw Rival3Pic +db 0,$99,0 + +dw LoreleiPic +db 0,$99,0 + +dw ChannelerPic +db 0,$30,0 + +dw AgathaPic +db 0,$99,0 + +dw LancePic +db 0,$99,0 + +TrainerNames: ; 59FF + db "YOUNGSTER@" + db "BUG CATCHER@" + db "LASS@" + db "SAILOR@" + db "JR.TRAINER♂@" + db "JR.TRAINER♀@" + db "POKéMANIAC@" + db "SUPER NERD@" + db "HIKER@" + db "BIKER@" + db "BURGLAR@" + db "ENGINEER@" + db "JUGGLER@" + db "FISHERMAN@" + db "SWIMMER@" + db "CUE BALL@" + db "GAMBLER@" + db "BEAUTY@" + db "PSYCHIC@" + db "ROCKER@" + db "JUGGLER@" + db "TAMER@" + db "BIRD KEEPER@" + db "BLACKBELT@" + db "RIVAL1@" + db "PROF.OAK@" + db "CHIEF@" + db "SCIENTIST@" + db "GIOVANNI@" + db "ROCKET@" + db "COOLTRAINER♂@" + db "COOLTRAINER♀@" + db "BRUNO@" + db "BROCK@" + db "MISTY@" + db "LT.SURGE@" + db "ERIKA@" + db "KOGA@" + db "BLAINE@" + db "SABRINA@" + db "GENTLEMAN@" + db "RIVAL2@" + db "RIVAL3@" + db "LORELEI@" + db "CHANNELER@" + db "AGATHA@" + db "LANCE@" + +INCBIN "baserom.gbc",$39B87,$39C53 - $39B87 + +ReadTrainer: ; 5C53 + +; don't change any moves in a link battle + ld a,[W_ISLINKBATTLE] + and a + ret nz + +; set [W_ENEMYMONCOUNT] to 0, [$D89D] to FF +; XXX first is total enemy pokemon? +; XXX second is species of first pokemon? + ld hl,W_ENEMYMONCOUNT + xor a + ld [hli],a + dec a + ld [hl],a + +; get the pointer to trainer data for this class + ld a,[W_CUROPPONENT] + sub $C9 ; convert value from pokemon to trainer + add a,a + ld hl,TrainerDataPointers + ld c,a + ld b,0 + add hl,bc ; hl points to trainer class + ld a,[hli] + ld h,[hl] + ld l,a + ld a,[W_TRAINERNO] + ld b,a +; At this point b contains the trainer number, +; and hl points to the trainer class. +; Our next task is to iterate through the trainers, +; decrementing b each time, until we get to the right one. +.outer\@ + dec b + jr z,.IterateTrainer +.inner\@ + ld a,[hli] + and a + jr nz,.inner\@ + jr .outer\@ + +; if the first byte of trainer data is FF, +; - each pokemon has a specific level +; (as opposed to the whole team being of the same level) +; - if [W_LONEATTACKNO] != 0, one pokemon on the team has a special move +; else the first byte is the level of every pokemon on the team +.IterateTrainer + ld a,[hli] + cp $FF ; is the trainer special? + jr z,.SpecialTrainer\@ ; if so, check for special attacks + ld [W_CURENEMYLVL],a +.LoopTrainerData\@ + ld a,[hli] + and a ; have we reached the end of the trainer data? + jr z,.FinishUp\@ + ld [$CF91],a ; write species somewhere (XXX why?) + ld a,1 + ld [$CC49],a + push hl + call AddPokemonToParty + pop hl + jr .LoopTrainerData\@ +.SpecialTrainer\@ +; if this code is being run: +; - each pokemon has a specific level +; (as opposed to the whole team being of the same level) +; - if [W_LONEATTACKNO] != 0, one pokemon on the team has a special move + ld a,[hli] + and a ; have we reached the end of the trainer data? + jr z,.AddLoneAttack\@ + ld [W_CURENEMYLVL],a + ld a,[hli] + ld [$CF91],a + ld a,1 + ld [$CC49],a + push hl + call AddPokemonToParty + pop hl + jr .SpecialTrainer\@ +.AddLoneAttack\@ +; does the trainer have a single monster with a different move + ld a,[W_LONEATTACKNO] ; Brock is 01, Misty is 02, Erika is 04, etc + and a + jr z,.AddTeamAttack\@ + dec a + add a,a + ld c,a + ld b,0 + ld hl,LoneAttacks + add hl,bc + ld a,[hli] + ld d,[hl] + ld hl,W_ENEMYMON1MOVE3 + ld bc,W_ENEMYMON2MOVE3 - W_ENEMYMON1MOVE3 + call AddNTimes + ld [hl],d + jr .FinishUp\@ +.AddTeamAttack\@ +; check if our trainer's team has special moves + +; get trainer class number + ld a,[$D059] + sub $C8 + ld b,a + ld hl,TeamAttacks + +; iterate through entries in TeamAttacks, checking each for our trainer class +.IterateTeamAttacks\@ + ld a,[hli] + cp b + jr z,.GiveTeamAttacks\@ ; is there a match? + inc hl ; if not, go to the next entry + inc a + jr nz,.IterateTeamAttacks\@ + + ; no matches found. is this trainer champion rival? + ld a,b + cp SONY3 + jr z,.ChampionRival\@ + jr .FinishUp\@ ; nope +.GiveTeamAttacks\@ + ld a,[hl] + ld [$D95E],a + jr .FinishUp\@ +.ChampionRival\@ ; give attacks to his team + +; pidgeot + ld a,SKY_ATTACK + ld [W_ENEMYMON1MOVE3],a + +; starter + ld a,[W_RIVALSTARTER] + cp BULBASAUR + ld b,MEGA_DRAIN + jr z,.GiveStarterMove\@ + cp CHARMANDER + ld b,FIRE_BLAST + jr z,.GiveStarterMove\@ + ld b,BLIZZARD ; must be squirtle +.GiveStarterMove\@ + ld a,b + ld [W_ENEMYMON6MOVE3],a +.FinishUp\@ ; XXX this needs documenting + xor a ; clear D079-D07B + ld de,$D079 + ld [de],a + inc de + ld [de],a + inc de + ld [de],a + ld a,[W_CURENEMYLVL] + ld b,a +.LastLoop\@ + ld hl,$D047 + ld c,2 + push bc + ld a,$B + call Predef + pop bc + inc de + inc de + dec b + jr nz,.LastLoop\@ + ret + +LoneAttacks: ; 5D22 +; these are used for gym leaders. +; this is not automatic! you have to write the number you want to W_LONEATTACKNO +; first. e.g., erika's script writes 4 to W_LONEATTACKNO to get mega drain, +; the fourth entry in the list. + +; first byte: pokemon in the trainer's party that gets the move +; second byte: move +; unterminated + db 1,BIDE + db 1,BUBBLEBEAM + db 2,THUNDERBOLT + db 2,MEGA_DRAIN + db 3,TOXIC + db 3,PSYWAVE + db 3,FIRE_BLAST + db 4,FISSURE + +TeamAttacks: ; 5D32 +; these are used for elite four. +; this is automatic, based on trainer class. +; don't be confused by LoneAttacks above, the two data structures are + ; _completely_ unrelated. + +; first byte: trainer (all trainers in this class have this move) +; second byte: move +; ff-terminated + db LORELEI,BLIZZARD + db BRUNO,FISSURE + db AGATHA,TOXIC + db LANCE,BARRIER + db $FF + +TrainerDataPointers: ; 5D3B + dw YoungsterData,BugCatcherData,LassData,SailorData,JrTrainerMData + dw JrTrainerFData,PokemaniacData,SuperNerdData,HikerData,BikerData + dw BurglarData,EngineerData,Juggler1Data,FisherData,SwimmerData + dw CueBallData,GamblerData,BeautyData,PsychicData,RockerData + dw JugglerData,TamerData,BirdKeeperData,BlackbeltData,Green1Data + dw ProfOakData,ChiefData,ScientistData,GiovanniData,RocketData + dw CooltrainerMData,CooltrainerFData,BrunoData,BrockData,MistyData + dw LtSurgeData,ErikaData,KogaData,BlaineData,SabrinaData + dw GentlemanData,Green2Data,Green3Data,LoreleiData,ChannelerData + dw AgathaData,LanceData + +; if first byte != FF, then + ; first byte is level (of all pokemon on this team) + ; all the next bytes are pokemon species + ; null-terminated +; if first byte == FF, then + ; first byte is FF (obviously) + ; every next two bytes are a level and species + ; null-terminated + +YoungsterData: + db 11,RATTATA,EKANS,0 + db 14,SPEAROW,0 + db 10,RATTATA,RATTATA,ZUBAT,0 + db 14,RATTATA,EKANS,ZUBAT,0 + db 15,RATTATA,SPEAROW,0 + db 17,SLOWPOKE,0 + db 14,EKANS,SANDSHREW,0 + db 21,NIDORAN_M,0 + db 21,EKANS,0 + db 19,SANDSHREW,ZUBAT,0 + db 17,RATTATA,RATTATA,RATICATE,0 + db 18,NIDORAN_M,NIDORINO,0 + db 17,SPEAROW,RATTATA,RATTATA,SPEAROW,0 +BugCatcherData: + db 6,WEEDLE,CATERPIE,0 + db 7,WEEDLE,KAKUNA,WEEDLE,0 + db 9,WEEDLE,0 + db 10,CATERPIE,WEEDLE,CATERPIE,0 + db 9,WEEDLE,KAKUNA,CATERPIE,METAPOD,0 + db 11,CATERPIE,METAPOD,0 + db 11,WEEDLE,KAKUNA,0 + db 10,CATERPIE,METAPOD,CATERPIE,0 + db 14,CATERPIE,WEEDLE,0 + db 16,WEEDLE,CATERPIE,WEEDLE,0 + db 20,BUTTERFREE,0 + db 18,METAPOD,CATERPIE,VENONAT,0 + db 19,BEEDRILL,BEEDRILL,0 + db 20,CATERPIE,WEEDLE,VENONAT,0 +LassData: + db 9,PIDGEY,PIDGEY,0 + db 10,RATTATA,NIDORAN_M,0 + db 14,JIGGLYPUFF,0 + db 31,PARAS,PARAS,PARASECT,0 + db 11,ODDISH,BELLSPROUT,0 + db 14,CLEFAIRY,0 + db 16,PIDGEY,NIDORAN_F,0 + db 14,PIDGEY,NIDORAN_F,0 + db 15,NIDORAN_M,NIDORAN_F,0 + db 13,ODDISH,PIDGEY,ODDISH,0 + db 18,PIDGEY,NIDORAN_F,0 + db 18,RATTATA,PIKACHU,0 + db 23,NIDORAN_F,NIDORINA,0 + db 24,MEOWTH,MEOWTH,MEOWTH,0 + db 19,PIDGEY,RATTATA,NIDORAN_M,MEOWTH,PIKACHU,0 + db 22,CLEFAIRY,CLEFAIRY,0 + db 23,BELLSPROUT,WEEPINBELL,0 + db 23,ODDISH,GLOOM,0 +SailorData: + db 18,MACHOP,SHELLDER,0 + db 17,MACHOP,TENTACOOL,0 + db 21,SHELLDER,0 + db 17,HORSEA,SHELLDER,TENTACOOL,0 + db 18,TENTACOOL,STARYU,0 + db 17,HORSEA,HORSEA,HORSEA,0 + db 20,MACHOP,0 + db 21,PIKACHU,PIKACHU,0 +JrTrainerMData: + db 11,DIGLETT,SANDSHREW,0 + db 14,RATTATA,EKANS,0 + db 18,MANKEY,0 + db 20,SQUIRTLE,0 + db 16,SPEAROW,RATICATE,0 + db 18,DIGLETT,DIGLETT,SANDSHREW,0 + db 21,GROWLITHE,CHARMANDER,0 + db 19,RATTATA,DIGLETT,EKANS,SANDSHREW,0 + db 29,NIDORAN_M,NIDORINO,0 +JrTrainerFData: + db 19,GOLDEEN,0 + db 16,RATTATA,PIKACHU,0 + db 16,PIDGEY,PIDGEY,PIDGEY,0 + db 22,BULBASAUR,0 + db 18,ODDISH,BELLSPROUT,ODDISH,BELLSPROUT,0 + db 23,MEOWTH,0 + db 20,PIKACHU,CLEFAIRY,0 + db 21,PIDGEY,PIDGEOTTO,0 + db 21,JIGGLYPUFF,PIDGEY,MEOWTH,0 + db 22,ODDISH,BULBASAUR,0 + db 24,BULBASAUR,IVYSAUR,0 + db 24,PIDGEY,MEOWTH,RATTATA,PIKACHU,MEOWTH,0 + db 30,POLIWAG,POLIWAG,0 + db 27,PIDGEY,MEOWTH,PIDGEY,PIDGEOTTO,0 + db 28,GOLDEEN,POLIWAG,HORSEA,0 + db 31,GOLDEEN,SEAKING,0 + db 22,BELLSPROUT,CLEFAIRY,0 + db 20,MEOWTH,ODDISH,PIDGEY,0 + db 19,PIDGEY,RATTATA,RATTATA,BELLSPROUT,0 + db 28,GLOOM,ODDISH,ODDISH,0 + db 29,PIKACHU,RAICHU,0 + db 33,CLEFAIRY,0 + db 29,BELLSPROUT,ODDISH,TANGELA,0 + db 30,TENTACOOL,HORSEA,SEEL,0 +PokemaniacData: + db 30,RHYHORN,LICKITUNG,0 + db 20,CUBONE,SLOWPOKE,0 + db 20,SLOWPOKE,SLOWPOKE,SLOWPOKE,0 + db 22,CHARMANDER,CUBONE,0 + db 25,SLOWPOKE,0 + db 40,CHARMELEON,LAPRAS,LICKITUNG,0 + db 23,CUBONE,SLOWPOKE,0 +SuperNerdData: + db 11,MAGNEMITE,VOLTORB,0 + db 12,GRIMER,VOLTORB,KOFFING,0 + db 20,VOLTORB,KOFFING,VOLTORB,MAGNEMITE,0 + db 22,GRIMER,MUK,GRIMER,0 + db 26,KOFFING,0 + db 22,KOFFING,MAGNEMITE,WEEZING,0 + db 20,MAGNEMITE,MAGNEMITE,KOFFING,MAGNEMITE,0 + db 24,MAGNEMITE,VOLTORB,0 + db 36,VULPIX,VULPIX,NINETALES,0 + db 34,PONYTA,CHARMANDER,VULPIX,GROWLITHE,0 + db 41,RAPIDASH,0 + db 37,GROWLITHE,VULPIX,0 +HikerData: + db 10,GEODUDE,GEODUDE,ONIX,0 + db 15,MACHOP,GEODUDE,0 + db 13,GEODUDE,GEODUDE,MACHOP,GEODUDE,0 + db 17,ONIX,0 + db 21,GEODUDE,ONIX,0 + db 20,GEODUDE,MACHOP,GEODUDE,0 + db 21,GEODUDE,ONIX,0 + db 19,ONIX,GRAVELER,0 + db 21,GEODUDE,GEODUDE,GRAVELER,0 + db 25,GEODUDE,0 + db 20,MACHOP,ONIX,0 + db 19,GEODUDE,MACHOP,GEODUDE,GEODUDE,0 + db 20,ONIX,ONIX,GEODUDE,0 + db 21,GEODUDE,GRAVELER,0 +BikerData: + db 28,KOFFING,KOFFING,KOFFING,0 + db 29,KOFFING,GRIMER,0 + db 25,KOFFING,KOFFING,WEEZING,KOFFING,GRIMER,0 + db 28,KOFFING,GRIMER,WEEZING,0 + db 29,GRIMER,KOFFING,0 + db 33,WEEZING,0 + db 26,GRIMER,GRIMER,GRIMER,GRIMER,0 + db 28,WEEZING,KOFFING,WEEZING,0 + db 33,MUK,0 + db 29,VOLTORB,VOLTORB,0 + db 29,WEEZING,MUK,0 + db 25,KOFFING,WEEZING,KOFFING,KOFFING,WEEZING,0 + db 26,KOFFING,KOFFING,GRIMER,KOFFING,0 + db 28,GRIMER,GRIMER,KOFFING,0 + db 29,KOFFING,MUK,0 +BurglarData: + db 29,GROWLITHE,VULPIX,0 + db 33,GROWLITHE,0 + db 28,VULPIX,CHARMANDER,PONYTA,0 + db 36,GROWLITHE,VULPIX,NINETALES,0 + db 41,PONYTA,0 + db 37,VULPIX,GROWLITHE,0 + db 34,CHARMANDER,CHARMELEON,0 + db 38,NINETALES,0 + db 34,GROWLITHE,PONYTA,0 +EngineerData: + db 21,VOLTORB,MAGNEMITE,0 + db 21,MAGNEMITE,0 + db 18,MAGNEMITE,MAGNEMITE,MAGNETON,0 +Juggler1Data: +; none +FisherData: + db 17,GOLDEEN,TENTACOOL,GOLDEEN,0 + db 17,TENTACOOL,STARYU,SHELLDER,0 + db 22,GOLDEEN,POLIWAG,GOLDEEN,0 + db 24,TENTACOOL,GOLDEEN,0 + db 27,GOLDEEN,0 + db 21,POLIWAG,SHELLDER,GOLDEEN,HORSEA,0 + db 28,SEAKING,GOLDEEN,SEAKING,SEAKING,0 + db 31,SHELLDER,CLOYSTER,0 + db 27,MAGIKARP,MAGIKARP,MAGIKARP,MAGIKARP,MAGIKARP,MAGIKARP,0 + db 33,SEAKING,GOLDEEN,0 + db 24,MAGIKARP,MAGIKARP,0 +SwimmerData: + db 16,HORSEA,SHELLDER,0 + db 30,TENTACOOL,SHELLDER,0 + db 29,GOLDEEN,HORSEA,STARYU,0 + db 30,POLIWAG,POLIWHIRL,0 + db 27,HORSEA,TENTACOOL,TENTACOOL,GOLDEEN,0 + db 29,GOLDEEN,SHELLDER,SEAKING,0 + db 30,HORSEA,HORSEA,0 + db 27,TENTACOOL,TENTACOOL,STARYU,HORSEA,TENTACRUEL,0 + db 31,SHELLDER,CLOYSTER,0 + db 35,STARYU,0 + db 28,HORSEA,HORSEA,SEADRA,HORSEA,0 + db 33,SEADRA,TENTACRUEL,0 + db 37,STARMIE,0 + db 33,STARYU,WARTORTLE,0 + db 32,POLIWHIRL,TENTACOOL,SEADRA,0 +CueBallData: + db 28,MACHOP,MANKEY,MACHOP,0 + db 29,MANKEY,MACHOP,0 + db 33,MACHOP,0 + db 29,MANKEY,PRIMEAPE,0 + db 29,MACHOP,MACHOKE,0 + db 33,MACHOKE,0 + db 26,MANKEY,MANKEY,MACHOKE,MACHOP,0 + db 29,PRIMEAPE,MACHOKE,0 + db 31,TENTACOOL,TENTACOOL,TENTACRUEL,0 +GamblerData: + db 18,POLIWAG,HORSEA,0 + db 18,BELLSPROUT,ODDISH,0 + db 18,VOLTORB,MAGNEMITE,0 + db 18,GROWLITHE,VULPIX,0 + db 22,POLIWAG,POLIWAG,POLIWHIRL,0 + db 22,ONIX,GEODUDE,GRAVELER,0 + db 24,GROWLITHE,VULPIX,0 +BeautyData: + db 21,ODDISH,BELLSPROUT,ODDISH,BELLSPROUT,0 + db 24,BELLSPROUT,BELLSPROUT,0 + db 26,EXEGGCUTE,0 + db 27,RATTATA,PIKACHU,RATTATA,0 + db 29,CLEFAIRY,MEOWTH,0 + db 35,SEAKING,0 + db 30,SHELLDER,SHELLDER,CLOYSTER,0 + db 31,POLIWAG,SEAKING,0 + db 29,PIDGEOTTO,WIGGLYTUFF,0 + db 29,BULBASAUR,IVYSAUR,0 + db 33,WEEPINBELL,BELLSPROUT,WEEPINBELL,0 + db 27,POLIWAG,GOLDEEN,SEAKING,GOLDEEN,POLIWAG,0 + db 30,GOLDEEN,SEAKING,0 + db 29,STARYU,STARYU,STARYU,0 + db 30,SEADRA,HORSEA,SEADRA,0 +PsychicData: + db 31,KADABRA,SLOWPOKE,MR_MIME,KADABRA,0 + db 34,MR_MIME,KADABRA,0 + db 33,SLOWPOKE,SLOWPOKE,SLOWBRO,0 + db 38,SLOWBRO,0 +RockerData: + db 20,VOLTORB,MAGNEMITE,VOLTORB,0 + db 29,VOLTORB,ELECTRODE,0 +JugglerData: + db 29,KADABRA,MR_MIME,0 + db 41,DROWZEE,HYPNO,KADABRA,KADABRA,0 + db 31,DROWZEE,DROWZEE,KADABRA,DROWZEE,0 + db 34,DROWZEE,HYPNO,0 + db 48,MR_MIME,0 + db 33,HYPNO,0 + db 38,HYPNO,0 + db 34,DROWZEE,KADABRA,0 +TamerData: + db 34,SANDSLASH,ARBOK,0 + db 33,ARBOK,SANDSLASH,ARBOK,0 + db 43,RHYHORN,0 + db 39,ARBOK,TAUROS,0 + db 44,PERSIAN,GOLDUCK,0 + db 42,RHYHORN,PRIMEAPE,ARBOK,TAUROS,0 +BirdKeeperData: + db 29,PIDGEY,PIDGEOTTO,0 + db 25,SPEAROW,PIDGEY,PIDGEY,SPEAROW,SPEAROW,0 + db 26,PIDGEY,PIDGEOTTO,SPEAROW,FEAROW,0 + db 33,FARFETCH_D,0 + db 29,SPEAROW,FEAROW,0 + db 26,PIDGEOTTO,FARFETCH_D,DODUO,PIDGEY,0 + db 28,DODRIO,DODUO,DODUO,0 + db 29,SPEAROW,FEAROW,0 + db 34,DODRIO,0 + db 26,SPEAROW,SPEAROW,FEAROW,SPEAROW,0 + db 30,FEAROW,FEAROW,PIDGEOTTO,0 + db 39,PIDGEOTTO,PIDGEOTTO,PIDGEY,PIDGEOTTO,0 + db 42,FARFETCH_D,FEAROW,0 + db 28,PIDGEY,DODUO,PIDGEOTTO,0 + db 26,PIDGEY,SPEAROW,PIDGEY,FEAROW,0 + db 29,PIDGEOTTO,FEAROW,0 + db 28,SPEAROW,DODUO,FEAROW,0 +BlackbeltData: + db 37,HITMONLEE,HITMONCHAN,0 + db 31,MANKEY,MANKEY,PRIMEAPE,0 + db 32,MACHOP,MACHOKE,0 + db 36,PRIMEAPE,0 + db 31,MACHOP,MANKEY,PRIMEAPE,0 + db 40,MACHOP,MACHOKE,0 + db 43,MACHOKE,0 + db 38,MACHOKE,MACHOP,MACHOKE,0 + db 43,MACHOKE,MACHOP,MACHOKE,0 +Green1Data: + db 5,SQUIRTLE,0 + db 5,BULBASAUR,0 + db 5,CHARMANDER,0 + db $FF,9,PIDGEY,8,SQUIRTLE,0 + db $FF,9,PIDGEY,8,BULBASAUR,0 + db $FF,9,PIDGEY,8,CHARMANDER,0 + db $FF,18,PIDGEOTTO,15,ABRA,15,RATTATA,17,SQUIRTLE,0 + db $FF,18,PIDGEOTTO,15,ABRA,15,RATTATA,17,BULBASAUR,0 + db $FF,18,PIDGEOTTO,15,ABRA,15,RATTATA,17,CHARMANDER,0 +ProfOakData: + db $FF,66,TAUROS,67,EXEGGUTOR,68,ARCANINE,69,BLASTOISE,70,GYARADOS,0 + db $FF,66,TAUROS,67,EXEGGUTOR,68,ARCANINE,69,VENUSAUR,70,GYARADOS,0 + db $FF,66,TAUROS,67,EXEGGUTOR,68,ARCANINE,69,CHARIZARD,70,GYARADOS,0 +ChiefData: +; none +ScientistData: + db 34,KOFFING,VOLTORB,0 + db 26,GRIMER,WEEZING,KOFFING,WEEZING,0 + db 28,MAGNEMITE,VOLTORB,MAGNETON,0 + db 29,ELECTRODE,WEEZING,0 + db 33,ELECTRODE,0 + db 26,MAGNETON,KOFFING,WEEZING,MAGNEMITE,0 + db 25,VOLTORB,KOFFING,MAGNETON,MAGNEMITE,KOFFING,0 + db 29,ELECTRODE,MUK,0 + db 29,GRIMER,ELECTRODE,0 + db 28,VOLTORB,KOFFING,MAGNETON,0 + db 29,MAGNEMITE,KOFFING,0 + db 33,MAGNEMITE,MAGNETON,VOLTORB,0 + db 34,MAGNEMITE,ELECTRODE,0 +GiovanniData: + db $FF,25,ONIX,24,RHYHORN,29,KANGASKHAN,0 + db $FF,37,NIDORINO,35,KANGASKHAN,37,RHYHORN,41,NIDOQUEEN,0 + db $FF,45,RHYHORN,42,DUGTRIO,44,NIDOQUEEN,45,NIDOKING,50,RHYDON,0 +RocketData: + db 13,RATTATA,ZUBAT,0 + db 11,SANDSHREW,RATTATA,ZUBAT,0 + db 12,ZUBAT,EKANS,0 + db 16,RATICATE,0 + db 17,MACHOP,DROWZEE,0 + db 15,EKANS,ZUBAT,0 + db 20,RATICATE,ZUBAT,0 + db 21,DROWZEE,MACHOP,0 + db 21,RATICATE,RATICATE,0 + db 20,GRIMER,KOFFING,KOFFING,0 + db 19,RATTATA,RATICATE,RATICATE,RATTATA,0 + db 22,GRIMER,KOFFING,0 + db 17,ZUBAT,KOFFING,GRIMER,ZUBAT,RATICATE,0 + db 20,RATTATA,RATICATE,DROWZEE,0 + db 21,MACHOP,MACHOP,0 + db 23,SANDSHREW,EKANS,SANDSLASH,0 + db 23,EKANS,SANDSHREW,ARBOK,0 + db 21,KOFFING,ZUBAT,0 + db 25,ZUBAT,ZUBAT,GOLBAT,0 + db 26,KOFFING,DROWZEE,0 + db 23,ZUBAT,RATTATA,RATICATE,ZUBAT,0 + db 26,DROWZEE,KOFFING,0 + db 29,CUBONE,ZUBAT,0 + db 25,GOLBAT,ZUBAT,ZUBAT,RATICATE,ZUBAT,0 + db 28,RATICATE,HYPNO,RATICATE,0 + db 29,MACHOP,DROWZEE,0 + db 28,EKANS,ZUBAT,CUBONE,0 + db 33,ARBOK,0 + db 33,HYPNO,0 + db 29,MACHOP,MACHOKE,0 + db 28,ZUBAT,ZUBAT,GOLBAT,0 + db 26,RATICATE,ARBOK,KOFFING,GOLBAT,0 + db 29,CUBONE,CUBONE,0 + db 29,SANDSHREW,SANDSLASH,0 + db 26,RATICATE,ZUBAT,GOLBAT,RATTATA,0 + db 28,WEEZING,GOLBAT,KOFFING,0 + db 28,DROWZEE,GRIMER,MACHOP,0 + db 28,GOLBAT,DROWZEE,HYPNO,0 + db 33,MACHOKE,0 + db 25,RATTATA,RATTATA,ZUBAT,RATTATA,EKANS,0 + db 32,CUBONE,DROWZEE,MAROWAK,0 +CooltrainerMData: + db 39,NIDORINO,NIDOKING,0 + db 43,EXEGGUTOR,CLOYSTER,ARCANINE,0 + db 43,KINGLER,TENTACRUEL,BLASTOISE,0 + db 45,KINGLER,STARMIE,0 + db 42,IVYSAUR,WARTORTLE,CHARMELEON,CHARIZARD,0 + db 44,IVYSAUR,WARTORTLE,CHARMELEON,0 + db 49,NIDOKING,0 + db 44,KINGLER,CLOYSTER,0 + db 39,SANDSLASH,DUGTRIO,0 + db 43,RHYHORN,0 +CooltrainerFData: + db 24,WEEPINBELL,GLOOM,IVYSAUR,0 + db 43,BELLSPROUT,WEEPINBELL,VICTREEBEL,0 + db 43,PARASECT,DEWGONG,CHANSEY,0 + db 46,VILEPLUME,BUTTERFREE,0 + db 44,PERSIAN,NINETALES,0 + db 45,IVYSAUR,VENUSAUR,0 + db 45,NIDORINA,NIDOQUEEN,0 + db 43,PERSIAN,NINETALES,RAICHU,0 +BrunoData: + db $FF,53,ONIX,55,HITMONCHAN,55,HITMONLEE,56,ONIX,58,MACHAMP,0 +BrockData: + db $FF,12,GEODUDE,14,ONIX,0 +MistyData: + db $FF,18,STARYU,21,STARMIE,0 +LtSurgeData: + db $FF,21,VOLTORB,18,PIKACHU,24,RAICHU,0 +ErikaData: + db $FF,29,VICTREEBEL,24,TANGELA,29,VILEPLUME,0 +KogaData: + db $FF,37,KOFFING,39,MUK,37,KOFFING,43,WEEZING,0 +BlaineData: + db $FF,42,GROWLITHE,40,PONYTA,42,RAPIDASH,47,ARCANINE,0 +SabrinaData: + db $FF,38,KADABRA,37,MR_MIME,38,VENOMOTH,43,ALAKAZAM,0 +GentlemanData: + db 18,GROWLITHE,GROWLITHE,0 + db 19,NIDORAN_M,NIDORAN_F,0 + db 23,PIKACHU,0 + db 48,PRIMEAPE,0 + db 17,GROWLITHE,PONYTA,0 +Green2Data: + db $FF,19,PIDGEOTTO,16,RATICATE,18,KADABRA,20,WARTORTLE,0 + db $FF,19,PIDGEOTTO,16,RATICATE,18,KADABRA,20,IVYSAUR,0 + db $FF,19,PIDGEOTTO,16,RATICATE,18,KADABRA,20,CHARMELEON,0 + db $FF,25,PIDGEOTTO,23,GROWLITHE,22,EXEGGCUTE,20,KADABRA,25,WARTORTLE,0 + db $FF,25,PIDGEOTTO,23,GYARADOS,22,GROWLITHE,20,KADABRA,25,IVYSAUR,0 + db $FF,25,PIDGEOTTO,23,EXEGGCUTE,22,GYARADOS,20,KADABRA,25,CHARMELEON,0 + db $FF,37,PIDGEOT,38,GROWLITHE,35,EXEGGCUTE,35,ALAKAZAM,40,BLASTOISE,0 + db $FF,37,PIDGEOT,38,GYARADOS,35,GROWLITHE,35,ALAKAZAM,40,VENUSAUR,0 + db $FF,37,PIDGEOT,38,EXEGGCUTE,35,GYARADOS,35,ALAKAZAM,40,CHARIZARD,0 + db $FF,47,PIDGEOT,45,RHYHORN,45,GROWLITHE,47,EXEGGCUTE,50,ALAKAZAM ;\ + db 53,BLASTOISE,0 + db $FF,47,PIDGEOT,45,RHYHORN,45,GYARADOS,47,GROWLITHE,50,ALAKAZAM ;\ + db 53,VENUSAUR,0 + db $FF,47,PIDGEOT,45,RHYHORN,45,EXEGGCUTE,47,GYARADOS,50,ALAKAZAM ;\ + db 53,CHARIZARD,0 +Green3Data: + db $FF,61,PIDGEOT,59,ALAKAZAM,61,RHYDON,61,ARCANINE,63,EXEGGUTOR ;\ + db 65,BLASTOISE,0 + db $FF,61,PIDGEOT,59,ALAKAZAM,61,RHYDON,61,GYARADOS,63,ARCANINE ;\ + db 65,VENUSAUR,0 + db $FF,61,PIDGEOT,59,ALAKAZAM,61,RHYDON,61,EXEGGUTOR,63,GYARADOS ;\ + db 65,CHARIZARD,0 +LoreleiData: + db $FF,54,DEWGONG,53,CLOYSTER,54,SLOWBRO,56,JYNX,56,LAPRAS,0 +ChannelerData: + db 22,GASTLY,0 + db 24,GASTLY,0 + db 23,GASTLY,GASTLY,0 + db 24,GASTLY,0 + db 23,GASTLY,0 + db 24,GASTLY,0 + db 24,HAUNTER,0 + db 22,GASTLY,0 + db 24,GASTLY,0 + db 23,GASTLY,GASTLY,0 + db 24,GASTLY,0 + db 22,GASTLY,0 + db 24,GASTLY,0 + db 23,HAUNTER,0 + db 24,GASTLY,0 + db 22,GASTLY,0 + db 24,GASTLY,0 + db 22,HAUNTER,0 + db 22,GASTLY,GASTLY,GASTLY,0 + db 24,GASTLY,0 + db 24,GASTLY,0 + db 34,GASTLY,HAUNTER,0 + db 38,HAUNTER,0 + db 33,GASTLY,GASTLY,HAUNTER,0 +AgathaData: + db $FF,56,GENGAR,56,GOLBAT,55,HAUNTER,58,ARBOK,60,GENGAR,0 +LanceData: + db $FF,58,GYARADOS,56,DRAGONAIR,56,DRAGONAIR,60,AERODACTYL ;\ + db 62,DRAGONITE,0 + +TrainerAI: ; 652E +;XXX called at 34964, 3c342, 3c398 + and a + ld a,[W_ISINBATTLE] + dec a + ret z ; if not a trainer, we're done here + ld a,[W_ISLINKBATTLE] + cp 4 + ret z + ld a,[W_TRAINERCLASS] ; what trainer class is this? + dec a + ld c,a + ld b,0 + ld hl,TrainerAIPointers + add hl,bc + add hl,bc + add hl,bc + ld a,[W_AICOUNT] + and a + ret z ; if no AI uses left, we're done here + inc hl + inc a + jr nz,.getpointer\@ + dec hl + ld a,[hli] + ld [W_AICOUNT],a +.getpointer\@ + ld a,[hli] + ld h,[hl] + ld l,a + call GenRandom + jp [hl] + +TrainerAIPointers: ; 655C +; one entry per trainer class +; first byte, number of times (per Pokémon) it can occur +; next two bytes, pointer to AI subroutine for trainer class + dbw 3,GenericAI + dbw 3,GenericAI + dbw 3,GenericAI + dbw 3,GenericAI + dbw 3,GenericAI + dbw 3,GenericAI + dbw 3,GenericAI + dbw 3,GenericAI + dbw 3,GenericAI + dbw 3,GenericAI + dbw 3,GenericAI + dbw 3,GenericAI + dbw 3,JugglerAI ; juggler_x + dbw 3,GenericAI + dbw 3,GenericAI + dbw 3,GenericAI + dbw 3,GenericAI + dbw 3,GenericAI + dbw 3,GenericAI + dbw 3,GenericAI + dbw 3,JugglerAI ; juggler + dbw 3,GenericAI + dbw 3,GenericAI + dbw 2,BlackbeltAI ; blackbelt + dbw 3,GenericAI + dbw 3,GenericAI + dbw 1,GenericAI ; chief + dbw 3,GenericAI + dbw 1,GiovanniAI ; giovanni + dbw 3,GenericAI + dbw 2,CooltrainerMAI ; cooltrainerm + dbw 1,CooltrainerFAI ; cooltrainerf + dbw 2,BrunoAI ; bruno + dbw 5,BrockAI ; brock + dbw 1,MistyAI ; misty + dbw 1,LtSurgeAI ; surge + dbw 1,ErikaAI ; erika + dbw 2,KogaAI ; koga + dbw 2,BlaineAI ; blaine + dbw 1,SabrinaAI ; sabrina + dbw 3,GenericAI + dbw 1,Sony2AI ; sony2 + dbw 1,Sony3AI ; sony3 + dbw 2,LoreleiAI ; lorelei + dbw 3,GenericAI + dbw 2,AgathaAI ; agatha + dbw 1,LanceAI ; lance + +JugglerAI: + cp $40 + ret nc + jp $672A + +BlackbeltAI: + cp $20 + ret nc + jp AIUseXAttack + +GiovanniAI: + cp $40 + ret nc + jp AIUseGuardSpec + +CooltrainerMAI: + cp $40 + ret nc + jp AIUseXAttack + +CooltrainerFAI: + cp $40 + ld a,$A + call $67CF + jp c,AIUseHyperPotion + ld a,5 + call $67CF + ret nc + jp $672A + +BrockAI: +; if his active monster has a status condition, use a full heal + ld a,[W_OPPONENTSTATUS] + and a + ret z + jp AIUseFullHeal + +MistyAI: + cp $40 + ret nc + jp AIUseXDefend + +LtSurgeAI: + cp $40 + ret nc + jp AIUseXSpeed + +ErikaAI: + cp $80 + ret nc + ld a,$A + call $67CF + ret nc + jp AIUseSuperPotion + +KogaAI: + cp $40 + ret nc + jp AIUseXAttack + +BlaineAI: + cp $40 + ret nc + jp AIUseSuperPotion + +SabrinaAI: + cp $40 + ret nc + ld a,$A + call $67CF + ret nc + jp AIUseHyperPotion + +Sony2AI: + cp $20 + ret nc + ld a,5 + call $67CF + ret nc + jp AIUsePotion + +Sony3AI: + cp $20 + ret nc + ld a,5 + call $67CF + ret nc + jp AIUseFullRestore + +LoreleiAI: + cp $80 + ret nc + ld a,5 + call $67CF + ret nc + jp AIUseSuperPotion + +BrunoAI: + cp $40 + ret nc + jp AIUseXDefend + +AgathaAI: + cp $14 + jp c,$672A + cp $80 + ret nc + ld a,4 + call $67CF + ret nc + jp AIUseSuperPotion + +LanceAI: + cp $80 + ret nc + ld a,5 + call $67CF + ret nc + jp AIUseHyperPotion + +GenericAI: + and a ; clear carry + ret + +; end of individual trainer AI routines + +DecrementAICount: ; 6695 + ld hl,W_AICOUNT + dec [hl] + scf + ret + +Function669B: ; 669B +; XXX what does this do + ld a,$8E + jp $3740 + +AIUseFullRestore: + call AICureStatus + ld a,FULL_RESTORE + ld [$CF05],a + ld de,$CEEB + ld hl,$CFE7 + ld a,[hld] + ld [de],a + inc de + ld a,[hl] + ld [de],a + inc de + ld hl,$CFF5 + ld a,[hld] + ld [de],a + inc de + ld [$CEE9],a + ld [$CFE7],a + ld a,[hl] + ld [de],a + ld [$CEEA],a + ld [W_OPPONENTHP],a + jr Function6718 + +AIUsePotion: +; enemy trainer heals his monster with a potion + ld a,POTION + ld b,20 + jr AIRecoverHP + +AIUseSuperPotion: +; enemy trainer heals his monster with a super potion + ld a,SUPER_POTION + ld b,50 + jr AIRecoverHP + +AIUseHyperPotion: +; enemy trainer heals his monster with a hyper potion + ld a,HYPER_POTION + ld b,200 + ; fallthrough + +AIRecoverHP: ; 66DA +; heal b HP and print "trainer used $(a) on pokemon!" + ld [$CF05],a + ld hl,$CFE7 + ld a,[hl] + ld [$CEEB],a + add b + ld [hld],a + ld [$CEED],a + ld a,[hl] + ld [$CEEC],a + ld [$CEEE],a + jr nc,.next\@ + inc a + ld [hl],a + ld [$CEEE],a +.next\@ + inc hl + ld a,[hld] + ld b,a + ld de,$CFF5 + ld a,[de] + dec de + ld [$CEE9],a + sub b + ld a,[hli] + ld b,a + ld a,[de] + ld [$CEEA],a + sbc b + jr nc,Function6718 + inc de + ld a,[de] + dec de + ld [hld],a + ld [$CEED],a + ld a,[de] + ld [hl],a + ld [$CEEE],a + ; fallthrough + +Function6718: ; 6718 + call AIPrintItemUse_ + ld hl,$C3CA + xor a + ld [$CF94],a + ld a,$48 + call Predef + jp DecrementAICount + +Function672A: ; 672A + ld a,[W_ENEMYMONCOUNT] + ld c,a + ld hl,W_ENEMYMON1HP + + ld d,0 ; keep count of unfainted monsters + + ; count how many monsters haven't fainted yet +.loop\@ + ld a,[hli] + ld b,a + ld a,[hld] + or b + jr z,.Fainted\@ ; has monster fainted? + inc d +.Fainted\@ + push bc + ld bc,$2C + add hl,bc + pop bc + dec c + jr nz,.loop\@ + + ld a,d ; how many available monsters are there? + cp 2 ; don't bother if only 1 or 2 + jp nc,Function674B ; XXX check, does this jump when a = 2? + and a + ret + +Function674B: ; 674B + +; prepare to withdraw the active monster: copy hp, number, and status to roster + + ld a,[W_OPPONENTNUMBER] + ld hl,W_ENEMYMON1HP + ld bc,$2C + call AddNTimes + ld d,h + ld e,l + ld hl,W_OPPONENTHP + ld bc,4 + call CopyData + + ld hl,AIBattleWithdrawText + call PrintText + + ld a,1 + ld [$D11D],a + ld hl,EnemySendOut + ld b,BANK(EnemySendOut) + call Bankswitch + xor a + ld [$D11D],a + + ld a,[W_ISLINKBATTLE] + cp 4 + ret z + scf + ret + +AIBattleWithdrawText: + TX_FAR _AIBattleWithdrawText + db "@" + +AIUseFullHeal: + call $669B + call AICureStatus + ld a,FULL_HEAL + jp AIPrintItemUse + +AICureStatus: +; cures the status of enemy's active pokemon + ld a,[W_OPPONENTNUMBER] + ld hl,$D8A8 + ld bc,$2C + call AddNTimes + xor a + ld [hl],a ; clear status in enemy team roster + ld [W_OPPONENTSTATUS],a ; clear status of active enemy + ld hl,$D069 + res 0,[hl] + ret + +AIUseXAccuracy: ; unused + call $669B + ld hl,$D068 + set 0,[hl] + ld a,X_ACCURACY + jp AIPrintItemUse + +AIUseGuardSpec: + call $669B + ld hl,$D068 + set 1,[hl] + ld a,GUARD_SPEC_ + jp AIPrintItemUse + +AIUseDireHit: ; unused + call $669B + ld hl,$D068 + set 2,[hl] + ld a,DIRE_HIT + jp AIPrintItemUse + +Function67CF: ; 67CF + ld [$FF99],a + ld hl,$CFF4 + ld a,[hli] + ld [$FF95],a + ld a,[hl] + ld [$FF96],a + ld b,2 + call $38B9 + ld a,[$FF98] + ld c,a + ld a,[$FF97] + ld b,a + ld hl,$CFE7 + ld a,[hld] + ld e,a + ld a,[hl] + ld d,a + ld a,d + sub b + ret nz + ld a,e + sub c + ret + +AIUseXAttack: + ld b,$A + ld a,X_ATTACK + jr AIIncreaseStat + +AIUseXDefend: + ld b,$B + ld a,X_DEFEND + jr AIIncreaseStat + +AIUseXSpeed: + ld b,$C + ld a,X_SPEED + jr AIIncreaseStat + +AIUseXSpecial: + ld b,$D + ld a,X_SPECIAL + ; fallthrough + +AIIncreaseStat: + ld [$CF05],a + push bc + call AIPrintItemUse_ + pop bc + ld hl,$CFCD + ld a,[hld] + push af + ld a,[hl] + push af + push hl + ld a,$AF + ld [hli],a + ld [hl],b + ld hl,$7428 + ld b,$F + call Bankswitch + pop hl + pop af + ld [hli],a + pop af + ld [hl],a + jp DecrementAICount + +AIPrintItemUse: + ld [$CF05],a + call AIPrintItemUse_ + jp DecrementAICount + +AIPrintItemUse_: +; print "x used [$CF05] on z!" + ld a,[$CF05] + ld [$D11E],a + call GetItemName + ld hl,AIBattleUseItemText + jp PrintText + +AIBattleUseItemText: + TX_FAR _AIBattleUseItemText + db "@" + +INCBIN "baserom.gbc",$3A849,$3B05C - $3A849 + +EvosAttacksPointerTable: ; 705C + dw Mon112_EvosAttacks + dw Mon115_EvosAttacks + dw Mon032_EvosAttacks + dw Mon035_EvosAttacks + dw Mon021_EvosAttacks + dw Mon100_EvosAttacks + dw Mon034_EvosAttacks + dw Mon080_EvosAttacks + dw Mon002_EvosAttacks + dw Mon103_EvosAttacks + dw Mon108_EvosAttacks + dw Mon102_EvosAttacks + dw Mon088_EvosAttacks + dw Mon094_EvosAttacks + dw Mon029_EvosAttacks + dw Mon031_EvosAttacks + dw Mon104_EvosAttacks + dw Mon111_EvosAttacks + dw Mon131_EvosAttacks + dw Mon059_EvosAttacks + dw Mon151_EvosAttacks + dw Mon130_EvosAttacks + dw Mon090_EvosAttacks + dw Mon072_EvosAttacks + dw Mon092_EvosAttacks + dw Mon123_EvosAttacks + dw Mon120_EvosAttacks + dw Mon009_EvosAttacks + dw Mon127_EvosAttacks + dw Mon114_EvosAttacks + dw Mon152_EvosAttacks ;MissingNo + dw Mon153_EvosAttacks ;MissingNo + dw Mon058_EvosAttacks + dw Mon095_EvosAttacks + dw Mon022_EvosAttacks + dw Mon016_EvosAttacks + dw Mon079_EvosAttacks + dw Mon064_EvosAttacks + dw Mon075_EvosAttacks + dw Mon113_EvosAttacks + dw Mon067_EvosAttacks + dw Mon122_EvosAttacks + dw Mon106_EvosAttacks + dw Mon107_EvosAttacks + dw Mon024_EvosAttacks + dw Mon047_EvosAttacks + dw Mon054_EvosAttacks + dw Mon096_EvosAttacks + dw Mon076_EvosAttacks + dw Mon154_EvosAttacks ;MissingNo + dw Mon126_EvosAttacks + dw Mon155_EvosAttacks ;MissingNo + dw Mon125_EvosAttacks + dw Mon082_EvosAttacks + dw Mon109_EvosAttacks + dw Mon156_EvosAttacks ;MissingNo + dw Mon056_EvosAttacks + dw Mon086_EvosAttacks + dw Mon050_EvosAttacks + dw Mon128_EvosAttacks + dw Mon157_EvosAttacks ;MissingNo + dw Mon158_EvosAttacks ;MissingNo + dw Mon159_EvosAttacks ;MissingNo + dw Mon083_EvosAttacks + dw Mon048_EvosAttacks + dw Mon149_EvosAttacks + dw Mon160_EvosAttacks ;MissingNo + dw Mon161_EvosAttacks ;MissingNo + dw Mon162_EvosAttacks ;MissingNo + dw Mon084_EvosAttacks + dw Mon060_EvosAttacks + dw Mon124_EvosAttacks + dw Mon146_EvosAttacks + dw Mon144_EvosAttacks + dw Mon145_EvosAttacks + dw Mon132_EvosAttacks + dw Mon052_EvosAttacks + dw Mon098_EvosAttacks + dw Mon163_EvosAttacks ;MissingNo + dw Mon164_EvosAttacks ;MissingNo + dw Mon165_EvosAttacks ;MissingNo + dw Mon037_EvosAttacks + dw Mon038_EvosAttacks + dw Mon025_EvosAttacks + dw Mon026_EvosAttacks + dw Mon166_EvosAttacks ;MissingNo + dw Mon167_EvosAttacks ;MissingNo + dw Mon147_EvosAttacks + dw Mon148_EvosAttacks + dw Mon140_EvosAttacks + dw Mon141_EvosAttacks + dw Mon116_EvosAttacks + dw Mon117_EvosAttacks + dw Mon168_EvosAttacks ;MissingNo + dw Mon169_EvosAttacks ;MissingNo + dw Mon027_EvosAttacks + dw Mon028_EvosAttacks + dw Mon138_EvosAttacks + dw Mon139_EvosAttacks + dw Mon039_EvosAttacks + dw Mon040_EvosAttacks + dw Mon133_EvosAttacks + dw Mon136_EvosAttacks + dw Mon135_EvosAttacks + dw Mon134_EvosAttacks + dw Mon066_EvosAttacks + dw Mon041_EvosAttacks + dw Mon023_EvosAttacks + dw Mon046_EvosAttacks + dw Mon061_EvosAttacks + dw Mon062_EvosAttacks + dw Mon013_EvosAttacks + dw Mon014_EvosAttacks + dw Mon015_EvosAttacks + dw Mon170_EvosAttacks ;MissingNo + dw Mon085_EvosAttacks + dw Mon057_EvosAttacks + dw Mon051_EvosAttacks + dw Mon049_EvosAttacks + dw Mon087_EvosAttacks + dw Mon171_EvosAttacks ;MissingNo + dw Mon172_EvosAttacks ;MissingNo + dw Mon010_EvosAttacks + dw Mon011_EvosAttacks + dw Mon012_EvosAttacks + dw Mon068_EvosAttacks + dw Mon173_EvosAttacks ;MissingNo + dw Mon055_EvosAttacks + dw Mon097_EvosAttacks + dw Mon042_EvosAttacks + dw Mon150_EvosAttacks + dw Mon143_EvosAttacks + dw Mon129_EvosAttacks + dw Mon174_EvosAttacks ;MissingNo + dw Mon175_EvosAttacks ;MissingNo + dw Mon089_EvosAttacks + dw Mon176_EvosAttacks ;MissingNo + dw Mon099_EvosAttacks + dw Mon091_EvosAttacks + dw Mon177_EvosAttacks ;MissingNo + dw Mon101_EvosAttacks + dw Mon036_EvosAttacks + dw Mon110_EvosAttacks + dw Mon053_EvosAttacks + dw Mon105_EvosAttacks + dw Mon178_EvosAttacks ;MissingNo + dw Mon093_EvosAttacks + dw Mon063_EvosAttacks + dw Mon065_EvosAttacks + dw Mon017_EvosAttacks + dw Mon018_EvosAttacks + dw Mon121_EvosAttacks + dw Mon001_EvosAttacks + dw Mon003_EvosAttacks + dw Mon073_EvosAttacks + dw Mon179_EvosAttacks ;MissingNo + dw Mon118_EvosAttacks + dw Mon119_EvosAttacks + dw Mon180_EvosAttacks ;MissingNo + dw Mon181_EvosAttacks ;MissingNo + dw Mon182_EvosAttacks ;MissingNo + dw Mon183_EvosAttacks ;MissingNo + dw Mon077_EvosAttacks + dw Mon078_EvosAttacks + dw Mon019_EvosAttacks + dw Mon020_EvosAttacks + dw Mon033_EvosAttacks + dw Mon030_EvosAttacks + dw Mon074_EvosAttacks + dw Mon137_EvosAttacks + dw Mon142_EvosAttacks + dw Mon184_EvosAttacks ;MissingNo + dw Mon081_EvosAttacks + dw Mon185_EvosAttacks ;MissingNo + dw Mon186_EvosAttacks ;MissingNo + dw Mon004_EvosAttacks + dw Mon007_EvosAttacks + dw Mon005_EvosAttacks + dw Mon008_EvosAttacks + dw Mon006_EvosAttacks + dw Mon187_EvosAttacks ;MissingNo + dw Mon188_EvosAttacks ;MissingNo + dw Mon189_EvosAttacks ;MissingNo + dw Mon190_EvosAttacks ;MissingNo + dw Mon043_EvosAttacks + dw Mon044_EvosAttacks + dw Mon045_EvosAttacks + dw Mon069_EvosAttacks + dw Mon070_EvosAttacks + dw Mon071_EvosAttacks + +Mon112_EvosAttacks: +;RHYDON +;Evolutions + db 0 +;Learnset + db 30,STOMP + db 35,TAIL_WHIP + db 40,FURY_ATTACK + db 48,HORN_DRILL + db 55,LEER + db 64,TAKE_DOWN + db 0 +Mon115_EvosAttacks: +;KANGASKHAN +;Evolutions + db 0 +;Learnset + db 26,BITE + db 31,TAIL_WHIP + db 36,MEGA_PUNCH + db 41,LEER + db 46,DIZZY_PUNCH + db 0 +Mon032_EvosAttacks: +;NIDORAN_M +;Evolutions + db EV_LEVEL,16,NIDORINO + db 0 +;Learnset + db 8,HORN_ATTACK + db 14,POISON_STING + db 21,FOCUS_ENERGY + db 29,FURY_ATTACK + db 36,HORN_DRILL + db 43,DOUBLE_KICK + db 0 +Mon035_EvosAttacks: +;CLEFAIRY +;Evolutions + db EV_ITEM,MOON_STONE,1,CLEFABLE + db 0 +;Learnset + db 13,SING + db 18,DOUBLESLAP + db 24,MINIMIZE + db 31,METRONOME + db 39,DEFENSE_CURL + db 48,LIGHT_SCREEN + db 0 +Mon021_EvosAttacks: +;SPEAROW +;Evolutions + db EV_LEVEL,20,FEAROW + db 0 +;Learnset + db 9,LEER + db 15,FURY_ATTACK + db 22,MIRROR_MOVE + db 29,DRILL_PECK + db 36,AGILITY + db 0 +Mon100_EvosAttacks: +;VOLTORB +;Evolutions + db EV_LEVEL,30,ELECTRODE + db 0 +;Learnset + db 17,SONICBOOM + db 22,SELFDESTRUCT + db 29,LIGHT_SCREEN + db 36,SWIFT + db 43,EXPLOSION + db 0 +Mon034_EvosAttacks: +;NIDOKING +;Evolutions + db 0 +;Learnset + db 8,HORN_ATTACK + db 14,POISON_STING + db 23,THRASH + db 0 +Mon080_EvosAttacks: +;SLOWBRO +;Evolutions + db 0 +;Learnset + db 18,DISABLE + db 22,HEADBUTT + db 27,GROWL + db 33,WATER_GUN + db 37,WITHDRAW + db 44,AMNESIA + db 55,PSYCHIC_M + db 0 +Mon002_EvosAttacks: +;IVYSAUR +;Evolutions + db EV_LEVEL,32,VENUSAUR + db 0 +;Learnset + db 7,LEECH_SEED + db 13,VINE_WHIP + db 22,POISONPOWDER + db 30,RAZOR_LEAF + db 38,GROWTH + db 46,SLEEP_POWDER + db 54,SOLARBEAM + db 0 +Mon103_EvosAttacks: +;EXEGGUTOR +;Evolutions + db 0 +;Learnset + db 28,STOMP + db 0 +Mon108_EvosAttacks: +;LICKITUNG +;Evolutions + db 0 +;Learnset + db 7,STOMP + db 15,DISABLE + db 23,DEFENSE_CURL + db 31,SLAM + db 39,SCREECH + db 0 +Mon102_EvosAttacks: +;EXEGGCUTE +;Evolutions + db EV_ITEM,LEAF_STONE ,1,EXEGGUTOR + db 0 +;Learnset + db 25,REFLECT + db 28,LEECH_SEED + db 32,STUN_SPORE + db 37,POISONPOWDER + db 42,SOLARBEAM + db 48,SLEEP_POWDER + db 0 +Mon088_EvosAttacks: +;GRIMER +;Evolutions + db EV_LEVEL,38,MUK + db 0 +;Learnset + db 30,POISON_GAS + db 33,MINIMIZE + db 37,SLUDGE + db 42,HARDEN + db 48,SCREECH + db 55,ACID_ARMOR + db 0 +Mon094_EvosAttacks: +;GENGAR +;Evolutions + db 0 +;Learnset + db 29,HYPNOSIS + db 38,DREAM_EATER + db 0 +Mon029_EvosAttacks: +;NIDORAN_F +;Evolutions + db EV_LEVEL,16,NIDORINA + db 0 +;Learnset + db 8,SCRATCH + db 14,POISON_STING + db 21,TAIL_WHIP + db 29,BITE + db 36,FURY_SWIPES + db 43,DOUBLE_KICK + db 0 +Mon031_EvosAttacks: +;NIDOQUEEN +;Evolutions + db 0 +;Learnset + db 8,SCRATCH + db 14,POISON_STING + db 23,BODY_SLAM + db 0 +Mon104_EvosAttacks: +;CUBONE +;Evolutions + db EV_LEVEL,28,MAROWAK + db 0 +;Learnset + db 25,LEER + db 31,FOCUS_ENERGY + db 38,THRASH + db 43,BONEMERANG + db 46,RAGE + db 0 +Mon111_EvosAttacks: +;RHYHORN +;Evolutions + db EV_LEVEL,42,RHYDON + db 0 +;Learnset + db 30,STOMP + db 35,TAIL_WHIP + db 40,FURY_ATTACK + db 45,HORN_DRILL + db 50,LEER + db 55,TAKE_DOWN + db 0 +Mon131_EvosAttacks: +;LAPRAS +;Evolutions + db 0 +;Learnset + db 16,SING + db 20,MIST + db 25,BODY_SLAM + db 31,CONFUSE_RAY + db 38,ICE_BEAM + db 46,HYDRO_PUMP + db 0 +Mon059_EvosAttacks: +;ARCANINE +;Evolutions + db 0 +;Learnset + db 0 +Mon151_EvosAttacks: +;MEW +;Evolutions + db 0 +;Learnset + db 10,TRANSFORM + db 20,MEGA_PUNCH + db 30,METRONOME + db 40,PSYCHIC_M + db 0 +Mon130_EvosAttacks: +;GYARADOS +;Evolutions + db 0 +;Learnset + db 20,BITE + db 25,DRAGON_RAGE + db 32,LEER + db 41,HYDRO_PUMP + db 52,HYPER_BEAM + db 0 +Mon090_EvosAttacks: +;SHELLDER +;Evolutions + db EV_ITEM,WATER_STONE ,1,CLOYSTER + db 0 +;Learnset + db 18,SUPERSONIC + db 23,CLAMP + db 30,AURORA_BEAM + db 39,LEER + db 50,ICE_BEAM + db 0 +Mon072_EvosAttacks: +;TENTACOOL +;Evolutions + db EV_LEVEL,30,TENTACRUEL + db 0 +;Learnset + db 7,SUPERSONIC + db 13,WRAP + db 18,POISON_STING + db 22,WATER_GUN + db 27,CONSTRICT + db 33,BARRIER + db 40,SCREECH + db 48,HYDRO_PUMP + db 0 +Mon092_EvosAttacks: +;GASTLY +;Evolutions + db EV_LEVEL,25,HAUNTER + db 0 +;Learnset + db 27,HYPNOSIS + db 35,DREAM_EATER + db 0 +Mon123_EvosAttacks: +;SCYTHER +;Evolutions + db 0 +;Learnset + db 17,LEER + db 20,FOCUS_ENERGY + db 24,DOUBLE_TEAM + db 29,SLASH + db 35,SWORDS_DANCE + db 42,AGILITY + db 0 +Mon120_EvosAttacks: +;STARYU +;Evolutions + db EV_ITEM,WATER_STONE ,1,STARMIE + db 0 +;Learnset + db 17,WATER_GUN + db 22,HARDEN + db 27,RECOVER + db 32,SWIFT + db 37,MINIMIZE + db 42,LIGHT_SCREEN + db 47,HYDRO_PUMP + db 0 +Mon009_EvosAttacks: +;BLASTOISE +;Evolutions + db 0 +;Learnset + db 8,BUBBLE + db 15,WATER_GUN + db 24,BITE + db 31,WITHDRAW + db 42,SKULL_BASH + db 52,HYDRO_PUMP + db 0 +Mon127_EvosAttacks: +;PINSIR +;Evolutions + db 0 +;Learnset + db 25,SEISMIC_TOSS + db 30,GUILLOTINE + db 36,FOCUS_ENERGY + db 43,HARDEN + db 49,SLASH + db 54,SWORDS_DANCE + db 0 +Mon114_EvosAttacks: +;TANGELA +;Evolutions + db 0 +;Learnset + db 29,ABSORB + db 32,POISONPOWDER + db 36,STUN_SPORE + db 39,SLEEP_POWDER + db 45,SLAM + db 49,GROWTH + db 0 + +Mon152_EvosAttacks: +;MISSINGNO +;Evolutions + db 0 +;Learnset + db 0 + +Mon153_EvosAttacks: +;MISSINGNO +;Evolutions + db 0 +;Learnset + db 0 +Mon058_EvosAttacks: +;GROWLITHE +;Evolutions + db EV_ITEM,FIRE_STONE,1,ARCANINE + db 0 +;Learnset + db 18,EMBER + db 23,LEER + db 30,TAKE_DOWN + db 39,AGILITY + db 50,FLAMETHROWER + db 0 +Mon095_EvosAttacks: +;ONIX +;Evolutions + db 0 +;Learnset + db 15,BIND + db 19,ROCK_THROW + db 25,RAGE + db 33,SLAM + db 43,HARDEN + db 0 +Mon022_EvosAttacks: +;FEAROW +;Evolutions + db 0 +;Learnset + db 9,LEER + db 15,FURY_ATTACK + db 25,MIRROR_MOVE + db 34,DRILL_PECK + db 43,AGILITY + db 0 +Mon016_EvosAttacks: +;PIDGEY +;Evolutions + db EV_LEVEL,18,PIDGEOTTO + db 0 +;Learnset + db 5,SAND_ATTACK + db 12,QUICK_ATTACK + db 19,WHIRLWIND + db 28,WING_ATTACK + db 36,AGILITY + db 44,MIRROR_MOVE + db 0 +Mon079_EvosAttacks: +;SLOWPOKE +;Evolutions + db EV_LEVEL,37,SLOWBRO + db 0 +;Learnset + db 18,DISABLE + db 22,HEADBUTT + db 27,GROWL + db 33,WATER_GUN + db 40,AMNESIA + db 48,PSYCHIC_M + db 0 +Mon064_EvosAttacks: +;KADABRA +;Evolutions + db EV_TRADE,1,ALAKAZAM + db 0 +;Learnset + db 16,CONFUSION + db 20,DISABLE + db 27,PSYBEAM + db 31,RECOVER + db 38,PSYCHIC_M + db 42,REFLECT + db 0 +Mon075_EvosAttacks: +;GRAVELER +;Evolutions + db EV_TRADE,1,GOLEM + db 0 +;Learnset + db 11,DEFENSE_CURL + db 16,ROCK_THROW + db 21,SELFDESTRUCT + db 29,HARDEN + db 36,EARTHQUAKE + db 43,EXPLOSION + db 0 +Mon113_EvosAttacks: +;CHANSEY +;Evolutions + db 0 +;Learnset + db 24,SING + db 30,GROWL + db 38,MINIMIZE + db 44,DEFENSE_CURL + db 48,LIGHT_SCREEN + db 54,DOUBLE_EDGE + db 0 +Mon067_EvosAttacks: +;MACHOKE +;Evolutions + db EV_TRADE,1,MACHAMP + db 0 +;Learnset + db 20,LOW_KICK + db 25,LEER + db 36,FOCUS_ENERGY + db 44,SEISMIC_TOSS + db 52,SUBMISSION + db 0 +Mon122_EvosAttacks: +;MR_MIME +;Evolutions + db 0 +;Learnset + db 15,CONFUSION + db 23,LIGHT_SCREEN + db 31,DOUBLESLAP + db 39,MEDITATE + db 47,SUBSTITUTE + db 0 +Mon106_EvosAttacks: +;HITMONLEE +;Evolutions + db 0 +;Learnset + db 33,ROLLING_KICK + db 38,JUMP_KICK + db 43,FOCUS_ENERGY + db 48,HI_JUMP_KICK + db 53,MEGA_KICK + db 0 +Mon107_EvosAttacks: +;HITMONCHAN +;Evolutions + db 0 +;Learnset + db 33,FIRE_PUNCH + db 38,ICE_PUNCH + db 43,THUNDERPUNCH + db 48,MEGA_PUNCH + db 53,COUNTER + db 0 +Mon024_EvosAttacks: +;ARBOK +;Evolutions + db 0 +;Learnset + db 10,POISON_STING + db 17,BITE + db 27,GLARE + db 36,SCREECH + db 47,ACID + db 0 +Mon047_EvosAttacks: +;PARASECT +;Evolutions + db 0 +;Learnset + db 13,STUN_SPORE + db 20,LEECH_LIFE + db 30,SPORE + db 39,SLASH + db 48,GROWTH + db 0 +Mon054_EvosAttacks: +;PSYDUCK +;Evolutions + db EV_LEVEL,33,GOLDUCK + db 0 +;Learnset + db 28,TAIL_WHIP + db 31,DISABLE + db 36,CONFUSION + db 43,FURY_SWIPES + db 52,HYDRO_PUMP + db 0 +Mon096_EvosAttacks: +;DROWZEE +;Evolutions + db EV_LEVEL,26,HYPNO + db 0 +;Learnset + db 12,DISABLE + db 17,CONFUSION + db 24,HEADBUTT + db 29,POISON_GAS + db 32,PSYCHIC_M + db 37,MEDITATE + db 0 +Mon076_EvosAttacks: +;GOLEM +;Evolutions + db 0 +;Learnset + db 11,DEFENSE_CURL + db 16,ROCK_THROW + db 21,SELFDESTRUCT + db 29,HARDEN + db 36,EARTHQUAKE + db 43,EXPLOSION + db 0 + +Mon154_EvosAttacks: +;MISSINGNO +;Evolutions + db 0 +;Learnset + db 0 +Mon126_EvosAttacks: +;MAGMAR +;Evolutions + db 0 +;Learnset + db 36,LEER + db 39,CONFUSE_RAY + db 43,FIRE_PUNCH + db 48,SMOKESCREEN + db 52,SMOG + db 55,FLAMETHROWER + db 0 + +Mon155_EvosAttacks: +;MISSINGNO +;Evolutions + db 0 +;Learnset + db 0 +Mon125_EvosAttacks: +;ELECTABUZZ +;Evolutions + db 0 +;Learnset + db 34,THUNDERSHOCK + db 37,SCREECH + db 42,THUNDERPUNCH + db 49,LIGHT_SCREEN + db 54,THUNDER + db 0 +Mon082_EvosAttacks: +;MAGNETON +;Evolutions + db 0 +;Learnset + db 21,SONICBOOM + db 25,THUNDERSHOCK + db 29,SUPERSONIC + db 38,THUNDER_WAVE + db 46,SWIFT + db 54,SCREECH + db 0 +Mon109_EvosAttacks: +;KOFFING +;Evolutions + db EV_LEVEL,35,WEEZING + db 0 +;Learnset + db 32,SLUDGE + db 37,SMOKESCREEN + db 40,SELFDESTRUCT + db 45,HAZE + db 48,EXPLOSION + db 0 + +Mon156_EvosAttacks: +;MISSINGNO +;Evolutions + db 0 +;Learnset + db 0 +Mon056_EvosAttacks: +;MANKEY +;Evolutions + db EV_LEVEL,28,PRIMEAPE + db 0 +;Learnset + db 15,KARATE_CHOP + db 21,FURY_SWIPES + db 27,FOCUS_ENERGY + db 33,SEISMIC_TOSS + db 39,THRASH + db 0 +Mon086_EvosAttacks: +;SEEL +;Evolutions + db EV_LEVEL,34,DEWGONG + db 0 +;Learnset + db 30,GROWL + db 35,AURORA_BEAM + db 40,REST + db 45,TAKE_DOWN + db 50,ICE_BEAM + db 0 +Mon050_EvosAttacks: +;DIGLETT +;Evolutions + db EV_LEVEL,26,DUGTRIO + db 0 +;Learnset + db 15,GROWL + db 19,DIG + db 24,SAND_ATTACK + db 31,SLASH + db 40,EARTHQUAKE + db 0 +Mon128_EvosAttacks: +;TAUROS +;Evolutions + db 0 +;Learnset + db 21,STOMP + db 28,TAIL_WHIP + db 35,LEER + db 44,RAGE + db 51,TAKE_DOWN + db 0 + +Mon157_EvosAttacks: +;MISSINGNO +;Evolutions + db 0 +;Learnset + db 0 + +Mon158_EvosAttacks: +;MISSINGNO +;Evolutions + db 0 +;Learnset + db 0 + +Mon159_EvosAttacks: +;MISSINGNO +;Evolutions + db 0 +;Learnset + db 0 +Mon083_EvosAttacks: +;FARFETCH_D +;Evolutions + db 0 +;Learnset + db 7,LEER + db 15,FURY_ATTACK + db 23,SWORDS_DANCE + db 31,AGILITY + db 39,SLASH + db 0 +Mon048_EvosAttacks: +;VENONAT +;Evolutions + db EV_LEVEL,31,VENOMOTH + db 0 +;Learnset + db 24,POISONPOWDER + db 27,LEECH_LIFE + db 30,STUN_SPORE + db 35,PSYBEAM + db 38,SLEEP_POWDER + db 43,PSYCHIC_M + db 0 +Mon149_EvosAttacks: +;DRAGONITE +;Evolutions + db 0 +;Learnset + db 10,THUNDER_WAVE + db 20,AGILITY + db 35,SLAM + db 45,DRAGON_RAGE + db 60,HYPER_BEAM + db 0 + +Mon160_EvosAttacks: +;MISSINGNO +;Evolutions + db 0 +;Learnset + db 0 + +Mon161_EvosAttacks: +;MISSINGNO +;Evolutions + db 0 +;Learnset + db 0 + +Mon162_EvosAttacks: +;MISSINGNO +;Evolutions + db 0 +;Learnset + db 0 +Mon084_EvosAttacks: +;DODUO +;Evolutions + db EV_LEVEL,31,DODRIO + db 0 +;Learnset + db 20,GROWL + db 24,FURY_ATTACK + db 30,DRILL_PECK + db 36,RAGE + db 40,TRI_ATTACK + db 44,AGILITY + db 0 +Mon060_EvosAttacks: +;POLIWAG +;Evolutions + db EV_LEVEL,25,POLIWHIRL + db 0 +;Learnset + db 16,HYPNOSIS + db 19,WATER_GUN + db 25,DOUBLESLAP + db 31,BODY_SLAM + db 38,AMNESIA + db 45,HYDRO_PUMP + db 0 +Mon124_EvosAttacks: +;JYNX +;Evolutions + db 0 +;Learnset + db 18,LICK + db 23,DOUBLESLAP + db 31,ICE_PUNCH + db 39,BODY_SLAM + db 47,THRASH + db 58,BLIZZARD + db 0 +Mon146_EvosAttacks: +;MOLTRES +;Evolutions + db 0 +;Learnset + db 51,LEER + db 55,AGILITY + db 60,SKY_ATTACK + db 0 +Mon144_EvosAttacks: +;ARTICUNO +;Evolutions + db 0 +;Learnset + db 51,BLIZZARD + db 55,AGILITY + db 60,MIST + db 0 +Mon145_EvosAttacks: +;ZAPDOS +;Evolutions + db 0 +;Learnset + db 51,THUNDER + db 55,AGILITY + db 60,LIGHT_SCREEN + db 0 +Mon132_EvosAttacks: +;DITTO +;Evolutions + db 0 +;Learnset + db 0 +Mon052_EvosAttacks: +;MEOWTH +;Evolutions + db EV_LEVEL,28,PERSIAN + db 0 +;Learnset + db 12,BITE + db 17,PAY_DAY + db 24,SCREECH + db 33,FURY_SWIPES + db 44,SLASH + db 0 +Mon098_EvosAttacks: +;KRABBY +;Evolutions + db EV_LEVEL,28,KINGLER + db 0 +;Learnset + db 20,VICEGRIP + db 25,GUILLOTINE + db 30,STOMP + db 35,CRABHAMMER + db 40,HARDEN + db 0 + +Mon163_EvosAttacks: +;MISSINGNO +;Evolutions + db 0 +;Learnset + db 0 + +Mon164_EvosAttacks: +;MISSINGNO +;Evolutions + db 0 +;Learnset + db 0 + +Mon165_EvosAttacks: +;MISSINGNO +;Evolutions + db 0 +;Learnset + db 0 +Mon037_EvosAttacks: +;VULPIX +;Evolutions + db EV_ITEM,FIRE_STONE,1,NINETALES + db 0 +;Learnset + db 16,QUICK_ATTACK + db 21,ROAR + db 28,CONFUSE_RAY + db 35,FLAMETHROWER + db 42,FIRE_SPIN + db 0 +Mon038_EvosAttacks: +;NINETALES +;Evolutions + db 0 +;Learnset + db 0 +Mon025_EvosAttacks: +;PIKACHU +;Evolutions + db EV_ITEM,THUNDER_STONE ,1,RAICHU + db 0 +;Learnset + db 9,THUNDER_WAVE + db 16,QUICK_ATTACK + db 26,SWIFT + db 33,AGILITY + db 43,THUNDER + db 0 +Mon026_EvosAttacks: +;RAICHU +;Evolutions + db 0 +;Learnset + db 0 + +Mon166_EvosAttacks: +;MISSINGNO +;Evolutions + db 0 +;Learnset + db 0 + +Mon167_EvosAttacks: +;MISSINGNO +;Evolutions + db 0 +;Learnset + db 0 +Mon147_EvosAttacks: +;DRATINI +;Evolutions + db EV_LEVEL,30,DRAGONAIR + db 0 +;Learnset + db 10,THUNDER_WAVE + db 20,AGILITY + db 30,SLAM + db 40,DRAGON_RAGE + db 50,HYPER_BEAM + db 0 +Mon148_EvosAttacks: +;DRAGONAIR +;Evolutions + db EV_LEVEL,55,DRAGONITE + db 0 +;Learnset + db 10,THUNDER_WAVE + db 20,AGILITY + db 35,SLAM + db 45,DRAGON_RAGE + db 55,HYPER_BEAM + db 0 +Mon140_EvosAttacks: +;KABUTO +;Evolutions + db EV_LEVEL,40,KABUTOPS + db 0 +;Learnset + db 34,ABSORB + db 39,SLASH + db 44,LEER + db 49,HYDRO_PUMP + db 0 +Mon141_EvosAttacks: +;KABUTOPS +;Evolutions + db 0 +;Learnset + db 34,ABSORB + db 39,SLASH + db 46,LEER + db 53,HYDRO_PUMP + db 0 +Mon116_EvosAttacks: +;HORSEA +;Evolutions + db EV_LEVEL,32,SEADRA + db 0 +;Learnset + db 19,SMOKESCREEN + db 24,LEER + db 30,WATER_GUN + db 37,AGILITY + db 45,HYDRO_PUMP + db 0 +Mon117_EvosAttacks: +;SEADRA +;Evolutions + db 0 +;Learnset + db 19,SMOKESCREEN + db 24,LEER + db 30,WATER_GUN + db 41,AGILITY + db 52,HYDRO_PUMP + db 0 + +Mon168_EvosAttacks: +;MISSINGNO +;Evolutions + db 0 +;Learnset + db 0 + +Mon169_EvosAttacks: +;MISSINGNO +;Evolutions + db 0 +;Learnset + db 0 +Mon027_EvosAttacks: +;SANDSHREW +;Evolutions + db EV_LEVEL,22,SANDSLASH + db 0 +;Learnset + db 10,SAND_ATTACK + db 17,SLASH + db 24,POISON_STING + db 31,SWIFT + db 38,FURY_SWIPES + db 0 +Mon028_EvosAttacks: +;SANDSLASH +;Evolutions + db 0 +;Learnset + db 10,SAND_ATTACK + db 17,SLASH + db 27,POISON_STING + db 36,SWIFT + db 47,FURY_SWIPES + db 0 +Mon138_EvosAttacks: +;OMANYTE +;Evolutions + db EV_LEVEL,40,OMASTAR + db 0 +;Learnset + db 34,HORN_ATTACK + db 39,LEER + db 46,SPIKE_CANNON + db 53,HYDRO_PUMP + db 0 +Mon139_EvosAttacks: +;OMASTAR +;Evolutions + db 0 +;Learnset + db 34,HORN_ATTACK + db 39,LEER + db 44,SPIKE_CANNON + db 49,HYDRO_PUMP + db 0 +Mon039_EvosAttacks: +;JIGGLYPUFF +;Evolutions + db EV_ITEM,MOON_STONE,1,WIGGLYTUFF + db 0 +;Learnset + db 9,POUND + db 14,DISABLE + db 19,DEFENSE_CURL + db 24,DOUBLESLAP + db 29,REST + db 34,BODY_SLAM + db 39,DOUBLE_EDGE + db 0 +Mon040_EvosAttacks: +;WIGGLYTUFF +;Evolutions + db 0 +;Learnset + db 0 +Mon133_EvosAttacks: +;EEVEE +;Evolutions + db EV_ITEM,FIRE_STONE,1,FLAREON + db EV_ITEM,THUNDER_STONE ,1,JOLTEON + db EV_ITEM,WATER_STONE ,1,VAPOREON + db 0 +;Learnset + db 27,QUICK_ATTACK + db 31,TAIL_WHIP + db 37,BITE + db 45,TAKE_DOWN + db 0 +Mon136_EvosAttacks: +;FLAREON +;Evolutions + db 0 +;Learnset + db 27,QUICK_ATTACK + db 31,EMBER + db 37,TAIL_WHIP + db 40,BITE + db 42,LEER + db 44,FIRE_SPIN + db 48,RAGE + db 54,FLAMETHROWER + db 0 +Mon135_EvosAttacks: +;JOLTEON +;Evolutions + db 0 +;Learnset + db 27,QUICK_ATTACK + db 31,THUNDERSHOCK + db 37,TAIL_WHIP + db 40,THUNDER_WAVE + db 42,DOUBLE_KICK + db 44,AGILITY + db 48,PIN_MISSILE + db 54,THUNDER + db 0 +Mon134_EvosAttacks: +;VAPOREON +;Evolutions + db 0 +;Learnset + db 27,QUICK_ATTACK + db 31,WATER_GUN + db 37,TAIL_WHIP + db 40,BITE + db 42,ACID_ARMOR + db 44,HAZE + db 48,MIST + db 54,HYDRO_PUMP + db 0 +Mon066_EvosAttacks: +;MACHOP +;Evolutions + db EV_LEVEL,28,MACHOKE + db 0 +;Learnset + db 20,LOW_KICK + db 25,LEER + db 32,FOCUS_ENERGY + db 39,SEISMIC_TOSS + db 46,SUBMISSION + db 0 +Mon041_EvosAttacks: +;ZUBAT +;Evolutions + db EV_LEVEL,22,GOLBAT + db 0 +;Learnset + db 10,SUPERSONIC + db 15,BITE + db 21,CONFUSE_RAY + db 28,WING_ATTACK + db 36,HAZE + db 0 +Mon023_EvosAttacks: +;EKANS +;Evolutions + db EV_LEVEL,22,ARBOK + db 0 +;Learnset + db 10,POISON_STING + db 17,BITE + db 24,GLARE + db 31,SCREECH + db 38,ACID + db 0 +Mon046_EvosAttacks: +;PARAS +;Evolutions + db EV_LEVEL,24,PARASECT + db 0 +;Learnset + db 13,STUN_SPORE + db 20,LEECH_LIFE + db 27,SPORE + db 34,SLASH + db 41,GROWTH + db 0 +Mon061_EvosAttacks: +;POLIWHIRL +;Evolutions + db EV_ITEM,WATER_STONE ,1,POLIWRATH + db 0 +;Learnset + db 16,HYPNOSIS + db 19,WATER_GUN + db 26,DOUBLESLAP + db 33,BODY_SLAM + db 41,AMNESIA + db 49,HYDRO_PUMP + db 0 +Mon062_EvosAttacks: +;POLIWRATH +;Evolutions + db 0 +;Learnset + db 16,HYPNOSIS + db 19,WATER_GUN + db 0 +Mon013_EvosAttacks: +;WEEDLE +;Evolutions + db EV_LEVEL,7,KAKUNA + db 0 +;Learnset + db 0 +Mon014_EvosAttacks: +;KAKUNA +;Evolutions + db EV_LEVEL,10,BEEDRILL + db 0 +;Learnset + db 0 +Mon015_EvosAttacks: +;BEEDRILL +;Evolutions + db 0 +;Learnset + db 12,FURY_ATTACK + db 16,FOCUS_ENERGY + db 20,TWINEEDLE + db 25,RAGE + db 30,PIN_MISSILE + db 35,AGILITY + db 0 + +Mon170_EvosAttacks: +;MISSINGNO +;Evolutions + db 0 +;Learnset + db 0 +Mon085_EvosAttacks: +;DODRIO +;Evolutions + db 0 +;Learnset + db 20,GROWL + db 24,FURY_ATTACK + db 30,DRILL_PECK + db 39,RAGE + db 45,TRI_ATTACK + db 51,AGILITY + db 0 +Mon057_EvosAttacks: +;PRIMEAPE +;Evolutions + db 0 +;Learnset + db 15,KARATE_CHOP + db 21,FURY_SWIPES + db 27,FOCUS_ENERGY + db 37,SEISMIC_TOSS + db 46,THRASH + db 0 +Mon051_EvosAttacks: +;DUGTRIO +;Evolutions + db 0 +;Learnset + db 15,GROWL + db 19,DIG + db 24,SAND_ATTACK + db 35,SLASH + db 47,EARTHQUAKE + db 0 +Mon049_EvosAttacks: +;VENOMOTH +;Evolutions + db 0 +;Learnset + db 24,POISONPOWDER + db 27,LEECH_LIFE + db 30,STUN_SPORE + db 38,PSYBEAM + db 43,SLEEP_POWDER + db 50,PSYCHIC_M + db 0 +Mon087_EvosAttacks: +;DEWGONG +;Evolutions + db 0 +;Learnset + db 30,GROWL + db 35,AURORA_BEAM + db 44,REST + db 50,TAKE_DOWN + db 56,ICE_BEAM + db 0 + +Mon171_EvosAttacks: +;MISSINGNO +;Evolutions + db 0 +;Learnset + db 0 + +Mon172_EvosAttacks: +;MISSINGNO +;Evolutions + db 0 +;Learnset + db 0 +Mon010_EvosAttacks: +;CATERPIE +;Evolutions + db EV_LEVEL,7,METAPOD + db 0 +;Learnset + db 0 +Mon011_EvosAttacks: +;METAPOD +;Evolutions + db EV_LEVEL,10,BUTTERFREE + db 0 +;Learnset + db 0 +Mon012_EvosAttacks: +;BUTTERFREE +;Evolutions + db 0 +;Learnset + db 12,CONFUSION + db 15,POISONPOWDER + db 16,STUN_SPORE + db 17,SLEEP_POWDER + db 21,SUPERSONIC + db 26,WHIRLWIND + db 32,PSYBEAM + db 0 +Mon068_EvosAttacks: +;MACHAMP +;Evolutions + db 0 +;Learnset + db 20,LOW_KICK + db 25,LEER + db 36,FOCUS_ENERGY + db 44,SEISMIC_TOSS + db 52,SUBMISSION + db 0 + +Mon173_EvosAttacks: +;MISSINGNO +;Evolutions + db 0 +;Learnset + db 0 +Mon055_EvosAttacks: +;GOLDUCK +;Evolutions + db 0 +;Learnset + db 28,TAIL_WHIP + db 31,DISABLE + db 39,CONFUSION + db 48,FURY_SWIPES + db 59,HYDRO_PUMP + db 0 +Mon097_EvosAttacks: +;HYPNO +;Evolutions + db 0 +;Learnset + db 12,DISABLE + db 17,CONFUSION + db 24,HEADBUTT + db 33,POISON_GAS + db 37,PSYCHIC_M + db 43,MEDITATE + db 0 +Mon042_EvosAttacks: +;GOLBAT +;Evolutions + db 0 +;Learnset + db 10,SUPERSONIC + db 15,BITE + db 21,CONFUSE_RAY + db 32,WING_ATTACK + db 43,HAZE + db 0 +Mon150_EvosAttacks: +;MEWTWO +;Evolutions + db 0 +;Learnset + db 63,BARRIER + db 66,PSYCHIC_M + db 70,RECOVER + db 75,MIST + db 81,AMNESIA + db 0 +Mon143_EvosAttacks: +;SNORLAX +;Evolutions + db 0 +;Learnset + db 35,BODY_SLAM + db 41,HARDEN + db 48,DOUBLE_EDGE + db 56,HYPER_BEAM + db 0 +Mon129_EvosAttacks: +;MAGIKARP +;Evolutions + db EV_LEVEL,20,GYARADOS + db 0 +;Learnset + db 15,TACKLE + db 0 + +Mon174_EvosAttacks: +;MISSINGNO +;Evolutions + db 0 +;Learnset + db 0 + +Mon175_EvosAttacks: +;MISSINGNO +;Evolutions + db 0 +;Learnset + db 0 +Mon089_EvosAttacks: +;MUK +;Evolutions + db 0 +;Learnset + db 30,POISON_GAS + db 33,MINIMIZE + db 37,SLUDGE + db 45,HARDEN + db 53,SCREECH + db 60,ACID_ARMOR + db 0 + +Mon176_EvosAttacks: +;MISSINGNO +;Evolutions + db 0 +;Learnset + db 0 +Mon099_EvosAttacks: +;KINGLER +;Evolutions + db 0 +;Learnset + db 20,VICEGRIP + db 25,GUILLOTINE + db 34,STOMP + db 42,CRABHAMMER + db 49,HARDEN + db 0 +Mon091_EvosAttacks: +;CLOYSTER +;Evolutions + db 0 +;Learnset + db 50,SPIKE_CANNON + db 0 + +Mon177_EvosAttacks: +;MISSINGNO +;Evolutions + db 0 +;Learnset + db 0 +Mon101_EvosAttacks: +;ELECTRODE +;Evolutions + db 0 +;Learnset + db 17,SONICBOOM + db 22,SELFDESTRUCT + db 29,LIGHT_SCREEN + db 40,SWIFT + db 50,EXPLOSION + db 0 +Mon036_EvosAttacks: +;CLEFABLE +;Evolutions + db 0 +;Learnset + db 0 +Mon110_EvosAttacks: +;WEEZING +;Evolutions + db 0 +;Learnset + db 32,SLUDGE + db 39,SMOKESCREEN + db 43,SELFDESTRUCT + db 49,HAZE + db 53,EXPLOSION + db 0 +Mon053_EvosAttacks: +;PERSIAN +;Evolutions + db 0 +;Learnset + db 12,BITE + db 17,PAY_DAY + db 24,SCREECH + db 37,FURY_SWIPES + db 51,SLASH + db 0 +Mon105_EvosAttacks: +;MAROWAK +;Evolutions + db 0 +;Learnset + db 25,LEER + db 33,FOCUS_ENERGY + db 41,THRASH + db 48,BONEMERANG + db 55,RAGE + db 0 + +Mon178_EvosAttacks: +;MISSINGNO +;Evolutions + db 0 +;Learnset + db 0 +Mon093_EvosAttacks: +;HAUNTER +;Evolutions + db EV_TRADE,1,GENGAR + db 0 +;Learnset + db 29,HYPNOSIS + db 38,DREAM_EATER + db 0 +Mon063_EvosAttacks: +;ABRA +;Evolutions + db EV_LEVEL,16,KADABRA + db 0 +;Learnset + db 0 +Mon065_EvosAttacks: +;ALAKAZAM +;Evolutions + db 0 +;Learnset + db 16,CONFUSION + db 20,DISABLE + db 27,PSYBEAM + db 31,RECOVER + db 38,PSYCHIC_M + db 42,REFLECT + db 0 +Mon017_EvosAttacks: +;PIDGEOTTO +;Evolutions + db EV_LEVEL,36,PIDGEOT + db 0 +;Learnset + db 5,SAND_ATTACK + db 12,QUICK_ATTACK + db 21,WHIRLWIND + db 31,WING_ATTACK + db 40,AGILITY + db 49,MIRROR_MOVE + db 0 +Mon018_EvosAttacks: +;PIDGEOT +;Evolutions + db 0 +;Learnset + db 5,SAND_ATTACK + db 12,QUICK_ATTACK + db 21,WHIRLWIND + db 31,WING_ATTACK + db 44,AGILITY + db 54,MIRROR_MOVE + db 0 +Mon121_EvosAttacks: +;STARMIE +;Evolutions + db 0 +;Learnset + db 0 +Mon001_EvosAttacks: +;BULBASAUR +;Evolutions + db EV_LEVEL,16,IVYSAUR + db 0 +;Learnset + db 7,LEECH_SEED + db 13,VINE_WHIP + db 20,POISONPOWDER + db 27,RAZOR_LEAF + db 34,GROWTH + db 41,SLEEP_POWDER + db 48,SOLARBEAM + db 0 +Mon003_EvosAttacks: +;VENUSAUR +;Evolutions + db 0 +;Learnset + db 7,LEECH_SEED + db 13,VINE_WHIP + db 22,POISONPOWDER + db 30,RAZOR_LEAF + db 43,GROWTH + db 55,SLEEP_POWDER + db 65,SOLARBEAM + db 0 +Mon073_EvosAttacks: +;TENTACRUEL +;Evolutions + db 0 +;Learnset + db 7,SUPERSONIC + db 13,WRAP + db 18,POISON_STING + db 22,WATER_GUN + db 27,CONSTRICT + db 35,BARRIER + db 43,SCREECH + db 50,HYDRO_PUMP + db 0 + +Mon179_EvosAttacks: +;MISSINGNO +;Evolutions + db 0 +;Learnset + db 0 +Mon118_EvosAttacks: +;GOLDEEN +;Evolutions + db EV_LEVEL,33,SEAKING + db 0 +;Learnset + db 19,SUPERSONIC + db 24,HORN_ATTACK + db 30,FURY_ATTACK + db 37,WATERFALL + db 45,HORN_DRILL + db 54,AGILITY + db 0 +Mon119_EvosAttacks: +;SEAKING +;Evolutions + db 0 +;Learnset + db 19,SUPERSONIC + db 24,HORN_ATTACK + db 30,FURY_ATTACK + db 39,WATERFALL + db 48,HORN_DRILL + db 54,AGILITY + db 0 + +Mon180_EvosAttacks: +;MISSINGNO +;Evolutions + db 0 +;Learnset + db 0 + +Mon181_EvosAttacks: +;MISSINGNO +;Evolutions + db 0 +;Learnset + db 0 + +Mon182_EvosAttacks: +;MISSINGNO +;Evolutions + db 0 +;Learnset + db 0 + +Mon183_EvosAttacks: +;MISSINGNO +;Evolutions + db 0 +;Learnset + db 0 +Mon077_EvosAttacks: +;PONYTA +;Evolutions + db EV_LEVEL,40,RAPIDASH + db 0 +;Learnset + db 30,TAIL_WHIP + db 32,STOMP + db 35,GROWL + db 39,FIRE_SPIN + db 43,TAKE_DOWN + db 48,AGILITY + db 0 +Mon078_EvosAttacks: +;RAPIDASH +;Evolutions + db 0 +;Learnset + db 30,TAIL_WHIP + db 32,STOMP + db 35,GROWL + db 39,FIRE_SPIN + db 47,TAKE_DOWN + db 55,AGILITY + db 0 +Mon019_EvosAttacks: +;RATTATA +;Evolutions + db EV_LEVEL,20,RATICATE + db 0 +;Learnset + db 7,QUICK_ATTACK + db 14,HYPER_FANG + db 23,FOCUS_ENERGY + db 34,SUPER_FANG + db 0 +Mon020_EvosAttacks: +;RATICATE +;Evolutions + db 0 +;Learnset + db 7,QUICK_ATTACK + db 14,HYPER_FANG + db 27,FOCUS_ENERGY + db 41,SUPER_FANG + db 0 +Mon033_EvosAttacks: +;NIDORINO +;Evolutions + db EV_ITEM,MOON_STONE,1,NIDOKING + db 0 +;Learnset + db 8,HORN_ATTACK + db 14,POISON_STING + db 23,FOCUS_ENERGY + db 32,FURY_ATTACK + db 41,HORN_DRILL + db 50,DOUBLE_KICK + db 0 +Mon030_EvosAttacks: +;NIDORINA +;Evolutions + db EV_ITEM,MOON_STONE,1,NIDOQUEEN + db 0 +;Learnset + db 8,SCRATCH + db 14,POISON_STING + db 23,TAIL_WHIP + db 32,BITE + db 41,FURY_SWIPES + db 50,DOUBLE_KICK + db 0 +Mon074_EvosAttacks: +;GEODUDE +;Evolutions + db EV_LEVEL,25,GRAVELER + db 0 +;Learnset + db 11,DEFENSE_CURL + db 16,ROCK_THROW + db 21,SELFDESTRUCT + db 26,HARDEN + db 31,EARTHQUAKE + db 36,EXPLOSION + db 0 +Mon137_EvosAttacks: +;PORYGON +;Evolutions + db 0 +;Learnset + db 23,PSYBEAM + db 28,RECOVER + db 35,AGILITY + db 42,TRI_ATTACK + db 0 +Mon142_EvosAttacks: +;AERODACTYL +;Evolutions + db 0 +;Learnset + db 33,SUPERSONIC + db 38,BITE + db 45,TAKE_DOWN + db 54,HYPER_BEAM + db 0 + +Mon184_EvosAttacks: +;MISSINGNO +;Evolutions + db 0 +;Learnset + db 0 +Mon081_EvosAttacks: +;MAGNEMITE +;Evolutions + db EV_LEVEL,30,MAGNETON + db 0 +;Learnset + db 21,SONICBOOM + db 25,THUNDERSHOCK + db 29,SUPERSONIC + db 35,THUNDER_WAVE + db 41,SWIFT + db 47,SCREECH + db 0 + +Mon185_EvosAttacks: +;MISSINGNO +;Evolutions + db 0 +;Learnset + db 0 + +Mon186_EvosAttacks: +;MISSINGNO +;Evolutions + db 0 +;Learnset + db 0 +Mon004_EvosAttacks: +;CHARMANDER +;Evolutions + db EV_LEVEL,16,CHARMELEON + db 0 +;Learnset + db 9,EMBER + db 15,LEER + db 22,RAGE + db 30,SLASH + db 38,FLAMETHROWER + db 46,FIRE_SPIN + db 0 +Mon007_EvosAttacks: +;SQUIRTLE +;Evolutions + db EV_LEVEL,16,WARTORTLE + db 0 +;Learnset + db 8,BUBBLE + db 15,WATER_GUN + db 22,BITE + db 28,WITHDRAW + db 35,SKULL_BASH + db 42,HYDRO_PUMP + db 0 +Mon005_EvosAttacks: +;CHARMELEON +;Evolutions + db EV_LEVEL,36,CHARIZARD + db 0 +;Learnset + db 9,EMBER + db 15,LEER + db 24,RAGE + db 33,SLASH + db 42,FLAMETHROWER + db 56,FIRE_SPIN + db 0 +Mon008_EvosAttacks: +;WARTORTLE +;Evolutions + db EV_LEVEL,36,BLASTOISE + db 0 +;Learnset + db 8,BUBBLE + db 15,WATER_GUN + db 24,BITE + db 31,WITHDRAW + db 39,SKULL_BASH + db 47,HYDRO_PUMP + db 0 +Mon006_EvosAttacks: +;CHARIZARD +;Evolutions + db 0 +;Learnset + db 9,EMBER + db 15,LEER + db 24,RAGE + db 36,SLASH + db 46,FLAMETHROWER + db 55,FIRE_SPIN + db 0 + +Mon187_EvosAttacks: +;MISSINGNO +;Evolutions + db 0 +;Learnset + db 0 + +Mon188_EvosAttacks: +;MISSINGNO +;Evolutions + db 0 +;Learnset + db 0 + +Mon189_EvosAttacks: +;MISSINGNO +;Evolutions + db 0 +;Learnset + db 0 + +Mon190_EvosAttacks: +;MISSINGNO +;Evolutions + db 0 +;Learnset + db 0 +Mon043_EvosAttacks: +;ODDISH +;Evolutions + db EV_LEVEL,21,GLOOM + db 0 +;Learnset + db 15,POISONPOWDER + db 17,STUN_SPORE + db 19,SLEEP_POWDER + db 24,ACID + db 33,PETAL_DANCE + db 46,SOLARBEAM + db 0 +Mon044_EvosAttacks: +;GLOOM +;Evolutions + db EV_ITEM,LEAF_STONE ,1,VILEPLUME + db 0 +;Learnset + db 15,POISONPOWDER + db 17,STUN_SPORE + db 19,SLEEP_POWDER + db 28,ACID + db 38,PETAL_DANCE + db 52,SOLARBEAM + db 0 +Mon045_EvosAttacks: +;VILEPLUME +;Evolutions + db 0 +;Learnset + db 15,POISONPOWDER + db 17,STUN_SPORE + db 19,SLEEP_POWDER + db 0 +Mon069_EvosAttacks: +;BELLSPROUT +;Evolutions + db EV_LEVEL,21,WEEPINBELL + db 0 +;Learnset + db 13,WRAP + db 15,POISONPOWDER + db 18,SLEEP_POWDER + db 21,STUN_SPORE + db 26,ACID + db 33,RAZOR_LEAF + db 42,SLAM + db 0 +Mon070_EvosAttacks: +;WEEPINBELL +;Evolutions + db EV_ITEM,LEAF_STONE ,1,VICTREEBEL + db 0 +;Learnset + db 13,WRAP + db 15,POISONPOWDER + db 18,SLEEP_POWDER + db 23,STUN_SPORE + db 29,ACID + db 38,RAZOR_LEAF + db 49,SLAM + db 0 +Mon071_EvosAttacks: +;VICTREEBEL +;Evolutions + db 0 +;Learnset + db 13,WRAP + db 15,POISONPOWDER + db 18,SLEEP_POWDER + db 0 + +INCBIN "baserom.gbc",$3B9EC, $3C000 - $3B9EC + +SECTION "bankF",DATA,BANK[$F] + +; These are move effects (second value from the Attacks table in bank $E). +EffectsArray1: ; 4000 + db $18,$19,$1C,$2E,$2F,$31,$38,$39,$40,$41,$42,$43,$4F,$52,$54,$55,$FF +EffectsArray2: ; 4011 +; attacks that do damage but not through normal calculations +; e.g., Super Fang, Psywave + db $28,$29,$FF +EffectsArray3: ; 4014 +; non-damaging, stat‐affecting or status‐causing attacks? +; e.g., Meditate, Bide, Hypnosis + db $01,$0A,$0B,$0C,$0D,$0E,$0F,$12,$13,$14,$15,$16,$17,$1A,$20,$32,$33,$34,$35,$36,$37,$3A,$3B,$3C,$3D,$3E,$3F,$FF +EffectsArray4: ; 4030 + db $03,$07,$08,$10,$1D,$1E,$2C,$30,$4D,$51,$FF +EffectsArray5: ; 403B + db $03,$07,$08,$10,$11,$1D,$1E,$27,$28,$29,$2B,$2C,$2D,$30 ; fallthru +EffectsArray5B: ; 4049 +; attacks that prevent the player from switching attacks? + db $1B,$2A,$FF + +INCBIN "baserom.gbc",$3C04C,$90E - $4C + +; XXX this needs cleaning up. it's what runs when a juggler switches pokemon +EnemySendOut: ; 490E + ld hl,$D058 + xor a + ld [hl],a + ld a,[$CC2F] + ld c,a + ld b,1 + push bc + ld a,$10 + call Predef + ld hl,$CCF5 + xor a + ld [hl],a + pop bc + ld a,$10 + call Predef + xor a + ld hl,$D065 + ld [hli],a + ld [hli],a + ld [hli],a + ld [hli],a + ld [hl],a + ld [$D072],a + ld [$CCEF],a + ld [$CCF3],a + ld hl,$CCF1 + ld [hli],a + ld [hl],a + dec a + ld [W_AICOUNT],a + ld hl,$D062 + res 5,[hl] + ld hl,$C3B2 + ld a,8 + call $48DF + call $6E94 + call $3719 + ld a,[$D12B] + cp 4 + jr nz,.next\@ + ld a,[$CC3E] + sub 4 + ld [$CF92],a + jr .next3\@ +.next\@ + ld b,$FF +.next2\@ + inc b + ld a,[$CFE8] + cp b + jr z,.next2\@ + ld hl,$D8A4 + ld a,b + ld [$CF92],a + push bc + ld bc,$2C + call AddNTimes + pop bc + inc hl + ld a,[hli] + ld c,a + ld a,[hl] + or c + jr z,.next2\@ +.next3\@ + ld a,[$CF92] + ld hl,$D8C5 + ld bc,$2C + call AddNTimes + ld a,[hl] + ld [$D127],a + ld a,[$CF92] + inc a + ld hl,$D89C + ld c,a + ld b,0 + add hl,bc + ld a,[hl] + ld [$CFD8],a + ld [$CF91],a + call $6B01 + ld hl,$CFE6 + ld a,[hli] + ld [$CCE3],a + ld a,[hl] + ld [$CCE4],a + ld a,1 + ld [$CC26],a + ld a,[$D11D] + dec a + jr z,.next4\@ + ld a,[W_NUMINPARTY] + dec a + jr z,.next4\@ + ld a,[$D12B] + cp 4 + jr z,.next4\@ + ld a,[$D355] + bit 6,a + jr nz,.next4\@ + ld hl,TrainerAboutToUseText + call PrintText + ld hl,$C42C + ld bc,$0801 + ld a,$14 + ld [$D125],a + call $30E8 + ld a,[$CC26] + and a + jr nz,.next4\@ + ld a,2 + ld [$D07D],a + call $13FC +.next9\@ + ld a,1 + ld [$CC26],a + jr c,.next7\@ + ld hl,$CC2F + ld a,[$CF92] + cp [hl] + jr nz,.next6\@ + ld hl,$51F5 + call PrintText +.next8\@ + call $1411 + jr .next9\@ +.next6\@ + call $4A97 + jr z,.next8\@ + xor a + ld [$CC26],a +.next7\@ + call $3DE5 + call $6E5B + call $3725 +.next4\@ + call $0082 + ld hl,$C3A0 + ld bc,$040B + call $18C4 + ld b,1 + call $3DEF + call $3DDC + ld hl,TrainerSentOutText + call PrintText + ld a,[$CFD8] + ld [$CF91],a + ld [$D0B5],a + call $1537 + ld de,$9000 + call $1665 + ld a,$CF + ld [$FFE1],a + ld hl,$C427 + ld a,2 + call Predef + ld a,[$CFD8] + call $13D0 + call $4DEC + ld a,[$CC26] + and a + ret nz + xor a + ld [$D058],a + ld [$CCF5],a + call $3719 + jp $51BA + +TrainerAboutToUseText: + TX_FAR _TrainerAboutToUseText + db "@" + +TrainerSentOutText: + TX_FAR _TrainerSentOutText + db "@" + +INCBIN "baserom.gbc",$3CA83,$3D6A9 - $3CA83 + +; in-battle stuff + ld hl,$D062 + res 4,[hl] + res 6,[hl] + call $5AF5 + ld hl,DecrementPP + ld de,$CCDC ; pointer to the move just used + ld b,BANK(DecrementPP) + call Bankswitch + ld a,[$CFD3] ; effect of the attack just used + ld hl,EffectsArray1 + ld de,1 + call IsInArray + jp c,$7132 + ld a,[$CFD3] + ld hl,EffectsArray5B + ld de,1 + call IsInArray + call c,$7132 + ld a,[$CFD3] + ld hl,EffectsArray2 + ld de,1 + call IsInArray + jp c,$5702 + call $6023 + call $6093 + jr z,.next11\@ + call $5DCF + call $5F65 + jp z,$574B + call $63A5 + call $6687 + call $656B +.next11\@ + ld a,[$D05F] + and a + jr z,.next\@ + ld a,[$CFD3] + sub a,7 + jr z,.next2\@ + jr .next3\@ ; 574B +.next\@ + ld a,[$CFD3] + and a + ld a,4 + jr z,.next2\@ + ld a,5 +.next2\@ + push af + ld a,[$D063] + bit 4,a + ld hl,$5747 + ld b,$1E + call nz,Bankswitch + pop af + ld [$CC5B],a + ld a,[$CFD2] + call $6F07 + call $6ED3 + call $4D60 + ld a,[$D063] + bit 4,a + ld hl,$5771 + ld b,$1E + call nz,Bankswitch + jr .next4\@ +.next3\@ + ld c,$1E + call $3739 + ld a,[$CFD3] + cp a,$2B + jr z,.next5\@ + cp a,$27 ; XXX SLP | FRZ ? + jr z,.next5\@ + jr .next4\@ +.next5\@ + xor a + ld [$CC5B],a + ld a,$A7 + call $6F07 +.next4\@ + ld a,[$CFD3] + cp a,9 + jr nz,.next6\@ ; 577A + call $62FD + jp z,Function580A + xor a + ld [$CCED],a + jp $569A +.next6\@ + cp a,$53 + jr nz,.next7\@ ; 5784 + call $6348 + jp $569A +.next7\@ + ld a,[$CFD3] + ld hl,EffectsArray3 + ld de,1 + call IsInArray + jp c,$7132 + ld a,[$D05F] + and a + jr z,.next8\@ ; 57A6 + call $5BE2 + ld a,[$CFD3] + cp a,7 + jr z,.next9\@ ; 57B9 + jp Function580A +.next8\@ + call $60DF + call $5C5C + ld hl,$7B7B ; MyFunction + ld b,$B ; BANK(MyFunction) + call Bankswitch + ld a,1 + ld [$CCF4],a +.next9\@ + ld a,[$CFD3] + ld hl,EffectsArray4 + ld de,1 + call IsInArray + call c,$7132 + ld hl,$CFE6 + ld a,[hli] + ld b,[hl] + or b + ret z + call $62B6 + + ld hl,$D062 + bit 2,[hl] + jr z,.next10\@ ; 57EF + ld a,[$D06A] + dec a + ld [$D06A],a + jp nz,$5714 + + res 2,[hl] + ld hl,MultiHitText + call PrintText + xor a + ld [W_NUMHITS],a ; reset +.next10\@ + ld a,[$CFD3] + and a + jp z,Function580A + ld hl,EffectsArray5 + ld de,1 + call IsInArray + call nc,$7132 + jp Function580A + +MultiHitText: + TX_FAR _MultiHitText + db "@" + +Function580A: ; 580A + xor a + ld [$CD6A],a + ld b,1 + ret + +Function5811: ; 5811 +; print the ghost battle messages + call $583A + ret nz + ld a,[H_WHOSETURN] + and a + jr nz,.Ghost\@ + ld a,[W_CURMONSTATUS] ; player’s turn + and a,SLP | FRZ + ret nz + ld hl,ScaredText + call PrintText + xor a + ret +.Ghost\@ ; ghost’s turn + ld hl,GetOutText + call PrintText + xor a + ret + +ScaredText: + TX_FAR _ScaredText + db "@" + +GetOutText: + TX_FAR _GetOutText + db "@" + +Function583A: ; 583A + ld a,[W_ISINBATTLE] + dec a + ret nz + ld a,[W_CURMAP] + cp a,$8E ; Lavender Town + jr c,.next\@ + cp a,$95 ; Pokémon Tower + jr nc,.next\@ + ld b,SILPH_SCOPE + call IsItemInBag ; $3493 + ret z +.next\@ + ld a,1 + and a + ret + +Function5854: ; 5854 + ld hl,W_CURMONSTATUS + ld a,[hl] + and a,SLP + jr z,.FrozenCheck\@ ; to 5884 + + dec a + ld [W_CURMONSTATUS],a ; decrement sleep count + and a + jr z,.WakeUp\@ ; to 5874 + + xor a + ld [$CC5B],a + ld a,SLP_ANIM - 1 + call $6F07 + ld hl,FastAsleepText + call PrintText + jr .sleepDone\@ +.WakeUp\@ + ld hl,WokeUpText + call PrintText +.sleepDone\@ + xor a + ld [$CCF1],a + ld hl,Function580A + jp $5A37 + +.FrozenCheck\@ + bit 5,[hl] ; frozen? + jr z,.HeldInPlaceCheck\@ ; to 5898 + ld hl,FrozenText + call PrintText + xor a + ld [$CCF1],a + ld hl,Function580A + jp $5A37 + +.HeldInPlaceCheck\@ + ld a,[W_CURMONBATTSTATUS] + bit 5,a + jp z,FlinchedCheck + ld hl,CantMoveText + call PrintText + ld hl,Function580A + jp $5A37 + +FlinchedCheck: ; 58AC + ld hl,$D062 + bit 3,[hl] + jp z,HyperBeamCheck + res 3,[hl] + ld hl,FlinchedText + call PrintText + ld hl,Function580A + jp $5A37 + +HyperBeamCheck: ; 58C2 + ld hl,$D063 + bit 5,[hl] + jr z,.next\@ ; 58D7 + res 5,[hl] + ld hl,MustRechargeText + call PrintText + ld hl,$580A + jp $5A37 +.next\@ + ld hl,$D06D + ld a,[hl] + and a + jr z,.next2\@ ; 58EE + dec a + ld [hl],a + and a,$F + jr nz,.next2\@ + ld [hl],a + ld [$CCEE],a + ld hl,DisabledNoMoreText + call PrintText +.next2\@ + ld a,[$D062] + add a + jr nc,.next3\@ ; 5929 + ld hl,$D06B + dec [hl] + jr nz,.next4\@ ; 5907 + ld hl,$D062 + res 7,[hl] + ld hl,ConfusedNoMoreText + call PrintText + jr .next3\@ +.next4\@ + ld hl,IsConfusedText + call PrintText + xor a + ld [$CC5B],a + ld a,CONF_ANIM - 1 + call $6F07 + call $6E9B + cp a,$80 + jr c,.next3\@ + ld hl,$D062 + ld a,[hl] + and a,$80 + ld [hl],a + call $5AAD + jr .next5\@ ; 5952 +.next3\@ + ld a,[$CCEE] + and a + jr z,.ParalysisCheck\@ ; 593E + ld hl,$CCDC + cp [hl] + jr nz,.ParalysisCheck\@ + call $5A88 + ld hl,$580A + jp $5A37 +.ParalysisCheck\@ + ld hl,W_CURMONSTATUS + bit 6,[hl] + jr z,.next7\@ ; 5975 + call $6E9B ; random number? + cp a,$3F + jr nc,.next7\@ + ld hl,FullyParalyzedText + call PrintText +.next5\@ + ld hl,$D062 + ld a,[hl] + and a,$CC + ld [hl],a + ld a,[$CFD3] + cp a,$2B + jr z,.next8\@ ; 5966 + cp a,$27 + jr z,.next8\@ + jr .next9\@ ; 596F +.next8\@ + xor a + ld [$CC5B],a + ld a,$A7 + call $6F07 +.next9\@ + ld hl,$580A + jp $5A37 +.next7\@ + ld hl,$D062 + bit 0,[hl] + jr z,.next10\@ ; 59D0 + xor a + ld [$CFD2],a + ld hl,$D0D7 + ld a,[hli] + ld b,a + ld c,[hl] + ld hl,$D075 + ld a,[hl] + add c + ld [hld],a + ld a,[hl] + adc b + ld [hl],a + ld hl,$D06A + dec [hl] + jr z,.next11\@ ; 599B + ld hl,$580A + jp $5A37 +.next11\@ + ld hl,$D062 + res 0,[hl] + ld hl,UnleashedEnergyText + call PrintText + ld a,1 + ld [$CFD4],a + ld hl,$D075 + ld a,[hld] + add a + ld b,a + ld [$D0D8],a + ld a,[hl] + rl a + ld [$D0D7],a + or b + jr nz,.next12\@ ; 59C2 + ld a,1 + ld [$D05F],a +.next12\@ + xor a + ld [hli],a + ld [hl],a + ld a,$75 + ld [$CFD2],a + ld hl,$5705 + jp $5A37 +.next10\@ + bit 1,[hl] + jr z,.next13\@ ; 59FF + ld a,$25 + ld [$CFD2],a + ld hl,ThrashingAboutText + call PrintText + ld hl,$D06A + dec [hl] + ld hl,$56DC + jp nz,$5A37 + push hl + ld hl,$D062 + res 1,[hl] + set 7,[hl] + call $6E9B ; random number? + and a,3 + inc a + inc a + ld [$D06B],a + pop hl + jp $5A37 +.next13\@ + bit 5,[hl] + jp z,$5A1A + ld hl,AttackContinuesText + call PrintText + ld a,[$D06A] + dec a + ld [$D06A],a + ld hl,$5714 + jp nz,$5A37 + jp $5A37 + +INCBIN "baserom.gbc",$3DA1A,$3DA3D - $3DA1A + +FastAsleepText: + TX_FAR _FastAsleepText + db "@" + +WokeUpText: + TX_FAR _WokeUpText + db "@" + +FrozenText: + TX_FAR _FrozenText + db "@" + +FullyParalyzedText: + TX_FAR _FullyParalyzedText + db "@" + +FlinchedText: + TX_FAR _FlinchedText + db "@" + +MustRechargeText: + TX_FAR _MustRechargeText + db "@" + +DisabledNoMoreText: + TX_FAR _DisabledNoMoreText + db "@" + +IsConfusedText: + TX_FAR _IsConfusedText + db "@" + +HurtItselfText: + TX_FAR _HurtItselfText + db "@" + +ConfusedNoMoreText: + TX_FAR _ConfusedNoMoreText + db "@" + +SavingEnergyText: + TX_FAR _SavingEnergyText + db "@" + +UnleashedEnergyText: + TX_FAR _UnleashedEnergyText + db "@" + +ThrashingAboutText: + TX_FAR _ThrashingAboutText + db "@" + +AttackContinuesText: + TX_FAR _AttackContinuesText + db "@" + +CantMoveText: + TX_FAR _CantMoveText + db "@" + +INCBIN "baserom.gbc",$3DA88,$3E474 - $3DA88 + +TypeEffects: ; 6474 +; format: attacking type, defending type, damage multiplier +; the multiplier is a (decimal) fixed-point number: +; 20 is ×2.0 +; 05 is ×0.5 +; 00 is ×0 + db WATER,FIRE,20 + db FIRE,GRASS,20 + db FIRE,ICE,20 + db GRASS,WATER,20 + db ELECTRIC,WATER,20 + db WATER,ROCK,20 + db GROUND,FLYING,00 + db WATER,WATER,05 + db FIRE,FIRE,05 + db ELECTRIC,ELECTRIC,05 + db ICE,ICE,05 + db GRASS,GRASS,05 + db PSYCHIC,PSYCHIC,05 + db FIRE,WATER,05 + db GRASS,FIRE,05 + db WATER,GRASS,05 + db ELECTRIC,GRASS,05 + db NORMAL,ROCK,05 + db NORMAL,GHOST,00 + db GHOST,GHOST,20 + db FIRE,BUG,20 + db FIRE,ROCK,05 + db WATER,GROUND,20 + db ELECTRIC,GROUND,00 + db ELECTRIC,FLYING,20 + db GRASS,GROUND,20 + db GRASS,BUG,05 + db GRASS,POISON,05 + db GRASS,ROCK,20 + db GRASS,FLYING,05 + db ICE,WATER,05 + db ICE,GRASS,20 + db ICE,GROUND,20 + db ICE,FLYING,20 + db FIGHTING,NORMAL,20 + db FIGHTING,POISON,05 + db FIGHTING,FLYING,05 + db FIGHTING,PSYCHIC,05 + db FIGHTING,BUG,05 + db FIGHTING,ROCK,20 + db FIGHTING,ICE,20 + db FIGHTING,GHOST,00 + db POISON,GRASS,20 + db POISON,POISON,05 + db POISON,GROUND,05 + db POISON,BUG,20 + db POISON,ROCK,05 + db POISON,GHOST,05 + db GROUND,FIRE,20 + db GROUND,ELECTRIC,20 + db GROUND,GRASS,05 + db GROUND,BUG,05 + db GROUND,ROCK,20 + db GROUND,POISON,20 + db FLYING,ELECTRIC,05 + db FLYING,FIGHTING,20 + db FLYING,BUG,20 + db FLYING,GRASS,20 + db FLYING,ROCK,05 + db PSYCHIC,FIGHTING,20 + db PSYCHIC,POISON,20 + db BUG,FIRE,05 + db BUG,GRASS,20 + db BUG,FIGHTING,05 + db BUG,FLYING,05 + db BUG,PSYCHIC,20 + db BUG,GHOST,05 + db BUG,POISON,20 + db ROCK,FIRE,20 + db ROCK,FIGHTING,05 + db ROCK,GROUND,05 + db ROCK,FLYING,20 + db ROCK,BUG,20 + db ROCK,ICE,20 + db GHOST,NORMAL,00 + db GHOST,PSYCHIC,00 + db FIRE,DRAGON,05 + db WATER,DRAGON,05 + db ELECTRIC,DRAGON,05 + db GRASS,DRAGON,05 + db ICE,DRAGON,20 + db DRAGON,DRAGON,20 + db $FF + +INCBIN "baserom.gbc",$3E56B,$3EF07 - $3E56B + +PlayAttackAnimation: ; 6F07 + ld [$D07C],a + call Delay3 + ld a,8 + jp Predef + +INCBIN "baserom.gbc",$3EF12,$40000 - $3EF12 + +SECTION "bank10",DATA,BANK[$10] + +INCBIN "baserom.gbc",$40000,$47E + +PokedexEntryPointers: ; 447E + dw RhydonDexEntry + dw KangaskhanDexEntry + dw NidoranMDexEntry + dw ClefairyDexEntry + dw SpearowDexEntry + dw VoltorbDexEntry + dw NidokingDexEntry + dw SlowbroDexEntry + dw IvysaurDexEntry + dw ExeggutorDexEntry + dw LickitungDexEntry + dw ExeggcuteDexEntry + dw GrimerDexEntry + dw GengarDexEntry + dw NidoranFDexEntry + dw NidoqueenDexEntry + dw CuboneDexEntry + dw RhyhornDexEntry + dw LaprasDexEntry + dw ArcanineDexEntry + dw MewDexEntry + dw GyaradosDexEntry + dw ShellderDexEntry + dw TentacoolDexEntry + dw GastlyDexEntry + dw ScytherDexEntry + dw StaryuDexEntry + dw BlastoiseDexEntry + dw PinsirDexEntry + dw TangelaDexEntry + dw MissingNoDexEntry + dw MissingNoDexEntry + dw GrowlitheDexEntry + dw OnixDexEntry + dw FearowDexEntry + dw PidgeyDexEntry + dw SlowpokeDexEntry + dw KadabraDexEntry + dw GravelerDexEntry + dw ChanseyDexEntry + dw MachokeDexEntry + dw MrMimeDexEntry + dw HitmonleeDexEntry + dw HitmonchanDexEntry + dw ArbokDexEntry + dw ParasectDexEntry + dw PsyduckDexEntry + dw DrowzeeDexEntry + dw GolemDexEntry + dw MissingNoDexEntry + dw MagmarDexEntry + dw MissingNoDexEntry + dw ElectabuzzDexEntry + dw MagnetonDexEntry + dw KoffingDexEntry + dw MissingNoDexEntry + dw MankeyDexEntry + dw SeelDexEntry + dw DiglettDexEntry + dw TaurosDexEntry + dw MissingNoDexEntry + dw MissingNoDexEntry + dw MissingNoDexEntry + dw FarfetchdDexEntry + dw VenonatDexEntry + dw DragoniteDexEntry + dw MissingNoDexEntry + dw MissingNoDexEntry + dw MissingNoDexEntry + dw DoduoDexEntry + dw PoliwagDexEntry + dw JynxDexEntry + dw MoltresDexEntry + dw ArticunoDexEntry + dw ZapdosDexEntry + dw DittoDexEntry + dw MeowthDexEntry + dw KrabbyDexEntry + dw MissingNoDexEntry + dw MissingNoDexEntry + dw MissingNoDexEntry + dw VulpixDexEntry + dw NinetalesDexEntry + dw PikachuDexEntry + dw RaichuDexEntry + dw MissingNoDexEntry + dw MissingNoDexEntry + dw DratiniDexEntry + dw DragonairDexEntry + dw KabutoDexEntry + dw KabutopsDexEntry + dw HorseaDexEntry + dw SeadraDexEntry + dw MissingNoDexEntry + dw MissingNoDexEntry + dw SandshrewDexEntry + dw SandslashDexEntry + dw OmanyteDexEntry + dw OmastarDexEntry + dw JigglypuffDexEntry + dw WigglytuffDexEntry + dw EeveeDexEntry + dw FlareonDexEntry + dw JolteonDexEntry + dw VaporeonDexEntry + dw MachopDexEntry + dw ZubatDexEntry + dw EkansDexEntry + dw ParasDexEntry + dw PoliwhirlDexEntry + dw PoliwrathDexEntry + dw WeedleDexEntry + dw KakunaDexEntry + dw BeedrillDexEntry + dw MissingNoDexEntry + dw DodrioDexEntry + dw PrimeapeDexEntry + dw DugtrioDexEntry + dw VenomothDexEntry + dw DewgongDexEntry + dw MissingNoDexEntry + dw MissingNoDexEntry + dw CaterpieDexEntry + dw MetapodDexEntry + dw ButterfreeDexEntry + dw MachampDexEntry + dw MissingNoDexEntry + dw GolduckDexEntry + dw HypnoDexEntry + dw GolbatDexEntry + dw MewtwoDexEntry + dw SnorlaxDexEntry + dw MagikarpDexEntry + dw MissingNoDexEntry + dw MissingNoDexEntry + dw MukDexEntry + dw MissingNoDexEntry + dw KinglerDexEntry + dw CloysterDexEntry + dw MissingNoDexEntry + dw ElectrodeDexEntry + dw ClefableDexEntry + dw WeezingDexEntry + dw PersianDexEntry + dw MarowakDexEntry + dw MissingNoDexEntry + dw HaunterDexEntry + dw AbraDexEntry + dw AlakazamDexEntry + dw PidgeottoDexEntry + dw PidgeotDexEntry + dw StarmieDexEntry + dw BulbasaurDexEntry + dw VenusaurDexEntry + dw TentacruelDexEntry + dw MissingNoDexEntry + dw GoldeenDexEntry + dw SeakingDexEntry + dw MissingNoDexEntry + dw MissingNoDexEntry + dw MissingNoDexEntry + dw MissingNoDexEntry + dw PonytaDexEntry + dw RapidashDexEntry + dw RattataDexEntry + dw RaticateDexEntry + dw NidorinoDexEntry + dw NidorinaDexEntry + dw GeodudeDexEntry + dw PorygonDexEntry + dw AerodactylDexEntry + dw MissingNoDexEntry + dw MagnemiteDexEntry + dw MissingNoDexEntry + dw MissingNoDexEntry + dw CharmanderDexEntry + dw SquirtleDexEntry + dw CharmeleonDexEntry + dw WartortleDexEntry + dw CharizardDexEntry + dw MissingNoDexEntry + dw MissingNoDexEntry + dw MissingNoDexEntry + dw MissingNoDexEntry + dw OddishDexEntry + dw GloomDexEntry + dw VileplumeDexEntry + dw BellsproutDexEntry + dw WeepinbellDexEntry + dw VictreebelDexEntry + +; string: species name +; height in feet, inches +; weight in pounds +; text entry + +RhydonDexEntry: + db "DRILL@" + db 6,3 + dw 2650 + TX_FAR _RhydonDexEntry + db "@" + +KangaskhanDexEntry: + db "PARENT@" + db 7,3 + dw 1760 + TX_FAR _KangaskhanDexEntry + db "@" + +NidoranMDexEntry: + db "POISON PIN@" + db 1,8 + dw 200 + TX_FAR _NidoranMDexEntry + db "@" + +ClefairyDexEntry: + db "FAIRY@" + db 2,0 + dw 170 + TX_FAR _ClefairyDexEntry + db "@" + +SpearowDexEntry: + db "TINY BIRD@" + db 1,0 + dw 40 + TX_FAR _SpearowDexEntry + db "@" + +VoltorbDexEntry: + db "BALL@" + db 1,8 + dw 230 + TX_FAR _VoltorbDexEntry + db "@" + +NidokingDexEntry: + db "DRILL@" + db 4,7 + dw 1370 + TX_FAR _NidokingDexEntry + db "@" + +SlowbroDexEntry: + db "HERMITCRAB@" + db 5,3 + dw 1730 + TX_FAR _SlowbroDexEntry + db "@" + +IvysaurDexEntry: + db "SEED@" + db 3,3 + dw 290 + TX_FAR _IvysaurDexEntry + db "@" + +ExeggutorDexEntry: + db "COCONUT@" + db 6,7 + dw 2650 + TX_FAR _ExeggutorDexEntry + db "@" + +LickitungDexEntry: + db "LICKING@" + db 3,11 + dw 1440 + TX_FAR _LickitungDexEntry + db "@" + +ExeggcuteDexEntry: + db "EGG@" + db 1,4 + dw 60 + TX_FAR _ExeggcuteDexEntry + db "@" + +GrimerDexEntry: + db "SLUDGE@" + db 2,11 + dw 660 + TX_FAR _GrimerDexEntry + db "@" + +GengarDexEntry: + db "SHADOW@" + db 4,11 + dw 890 + TX_FAR _GengarDexEntry + db "@" + +NidoranFDexEntry: + db "POISON PIN@" + db 1,4 + dw 150 + TX_FAR _NidoranFDexEntry + db "@" + +NidoqueenDexEntry: + db "DRILL@" + db 4,3 + dw 1320 + TX_FAR _NidoqueenDexEntry + db "@" + +CuboneDexEntry: + db "LONELY@" + db 1,4 + dw 140 + TX_FAR _CuboneDexEntry + db "@" + +RhyhornDexEntry: + db "SPIKES@" + db 3,3 + dw 2540 + TX_FAR _RhyhornDexEntry + db "@" + +LaprasDexEntry: + db "TRANSPORT@" + db 8,2 + dw 4850 + TX_FAR _LaprasDexEntry + db "@" + +ArcanineDexEntry: + db "LEGENDARY@" + db 6,3 + dw 3420 + TX_FAR _ArcanineDexEntry + db "@" + +MewDexEntry: + db "NEW SPECIE@" + db 1,4 + dw 90 + TX_FAR _MewDexEntry + db "@" + +GyaradosDexEntry: + db "ATROCIOUS@" + db 21,4 + dw 5180 + TX_FAR _GyaradosDexEntry + db "@" + +ShellderDexEntry: + db "BIVALVE@" + db 1,0 + dw 90 + TX_FAR _ShellderDexEntry + db "@" + +TentacoolDexEntry: + db "JELLYFISH@" + db 2,11 + dw 1000 + TX_FAR _TentacoolDexEntry + db "@" + +GastlyDexEntry: + db "GAS@" + db 4,3 + dw 2 + TX_FAR _GastlyDexEntry + db "@" + +ScytherDexEntry: + db "MANTIS@" + db 4,11 + dw 1230 + TX_FAR _ScytherDexEntry + db "@" + +StaryuDexEntry: + db "STARSHAPE@" + db 2,7 + dw 760 + TX_FAR _StaryuDexEntry + db "@" + +BlastoiseDexEntry: + db "SHELLFISH@" + db 5,3 + dw 1890 + TX_FAR _BlastoiseDexEntry + db "@" + +PinsirDexEntry: + db "STAGBEETLE@" + db 4,11 + dw 1210 + TX_FAR _PinsirDexEntry + db "@" + +TangelaDexEntry: + db "VINE@" + db 3,3 + dw 770 + TX_FAR _TangelaDexEntry + db "@" + +GrowlitheDexEntry: + db "PUPPY@" + db 2,4 + dw 420 + TX_FAR _GrowlitheDexEntry + db "@" + +OnixDexEntry: + db "ROCK SNAKE@" + db 28,10 + dw 4630 + TX_FAR _OnixDexEntry + db "@" + +FearowDexEntry: + db "BEAK@" + db 3,11 + dw 840 + TX_FAR _FearowDexEntry + db "@" + +PidgeyDexEntry: + db "TINY BIRD@" + db 1,0 + dw 40 + TX_FAR _PidgeyDexEntry + db "@" + +SlowpokeDexEntry: + db "DOPEY@" + db 3,11 + dw 790 + TX_FAR _SlowpokeDexEntry + db "@" + +KadabraDexEntry: + db "PSI@" + db 4,3 + dw 1250 + TX_FAR _KadabraDexEntry + db "@" + +GravelerDexEntry: + db "ROCK@" + db 3,3 + dw 2320 + TX_FAR _GravelerDexEntry + db "@" + +ChanseyDexEntry: + db "EGG@" + db 3,7 + dw 760 + TX_FAR _ChanseyDexEntry + db "@" + +MachokeDexEntry: + db "SUPERPOWER@" + db 4,11 + dw 1550 + TX_FAR _MachokeDexEntry + db "@" + +MrMimeDexEntry: + db "BARRIER@" + db 4,3 + dw 1200 + TX_FAR _MrMimeDexEntry + db "@" + +HitmonleeDexEntry: + db "KICKING@" + db 4,11 + dw 1100 + TX_FAR _HitmonleeDexEntry + db "@" + +HitmonchanDexEntry: + db "PUNCHING@" + db 4,7 + dw 1110 + TX_FAR _HitmonchanDexEntry + db "@" + +ArbokDexEntry: + db "COBRA@" + db 11,6 + dw 1430 + TX_FAR _ArbokDexEntry + db "@" + +ParasectDexEntry: + db "MUSHROOM@" + db 3,3 + dw 650 + TX_FAR _ParasectDexEntry + db "@" + +PsyduckDexEntry: + db "DUCK@" + db 2,7 + dw 430 + TX_FAR _PsyduckDexEntry + db "@" + +DrowzeeDexEntry: + db "HYPNOSIS@" + db 3,3 + dw 710 + TX_FAR _DrowzeeDexEntry + db "@" + +GolemDexEntry: + db "MEGATON@" + db 4,7 + dw 6620 + TX_FAR _GolemDexEntry + db "@" + +MagmarDexEntry: + db "SPITFIRE@" + db 4,3 + dw 980 + TX_FAR _MagmarDexEntry + db "@" + +ElectabuzzDexEntry: + db "ELECTRIC@" + db 3,7 + dw 660 + TX_FAR _ElectabuzzDexEntry + db "@" + +MagnetonDexEntry: + db "MAGNET@" + db 3,3 + dw 1320 + TX_FAR _MagnetonDexEntry + db "@" + +KoffingDexEntry: + db "POISON GAS@" + db 2,0 + dw 20 + TX_FAR _KoffingDexEntry + db "@" + +MankeyDexEntry: + db "PIG MONKEY@" + db 1,8 + dw 620 + TX_FAR _MankeyDexEntry + db "@" + +SeelDexEntry: + db "SEA LION@" + db 3,7 + dw 1980 + TX_FAR _SeelDexEntry + db "@" + +DiglettDexEntry: + db "MOLE@" + db 0,8 + dw 20 + TX_FAR _DiglettDexEntry + db "@" + +TaurosDexEntry: + db "WILD BULL@" + db 4,7 + dw 1950 + TX_FAR _TaurosDexEntry + db "@" + +FarfetchdDexEntry: + db "WILD DUCK@" + db 2,7 + dw 330 + TX_FAR _FarfetchdDexEntry + db "@" + +VenonatDexEntry: + db "INSECT@" + db 3,3 + dw 660 + TX_FAR _VenonatDexEntry + db "@" + +DragoniteDexEntry: + db "DRAGON@" + db 7,3 + dw 4630 + TX_FAR _DragoniteDexEntry + db "@" + +DoduoDexEntry: + db "TWIN BIRD@" + db 4,7 + dw 860 + TX_FAR _DoduoDexEntry + db "@" + +PoliwagDexEntry: + db "TADPOLE@" + db 2,0 + dw 270 + TX_FAR _PoliwagDexEntry + db "@" + +JynxDexEntry: + db "HUMANSHAPE@" + db 4,7 + dw 900 + TX_FAR _JynxDexEntry + db "@" + +MoltresDexEntry: + db "FLAME@" + db 6,7 + dw 1320 + TX_FAR _MoltresDexEntry + db "@" + +ArticunoDexEntry: + db "FREEZE@" + db 5,7 + dw 1220 + TX_FAR _ArticunoDexEntry + db "@" + +ZapdosDexEntry: + db "ELECTRIC@" + db 5,3 + dw 1160 + TX_FAR _ZapdosDexEntry + db "@" + +DittoDexEntry: + db "TRANSFORM@" + db 1,0 + dw 90 + TX_FAR _DittoDexEntry + db "@" + +MeowthDexEntry: + db "SCRATCHCAT@" + db 1,4 + dw 90 + TX_FAR _MeowthDexEntry + db "@" + +KrabbyDexEntry: + db "RIVER CRAB@" + db 1,4 + dw 140 + TX_FAR _KrabbyDexEntry + db "@" + +VulpixDexEntry: + db "FOX@" + db 2,0 + dw 220 + TX_FAR _VulpixDexEntry + db "@" + +NinetalesDexEntry: + db "FOX@" + db 3,7 + dw 440 + TX_FAR _NinetalesDexEntry + db "@" + +PikachuDexEntry: + db "MOUSE@" + db 1,4 + dw 130 + TX_FAR _PikachuDexEntry + db "@" + +RaichuDexEntry: + db "MOUSE@" + db 2,7 + dw 660 + TX_FAR _RaichuDexEntry + db "@" + +DratiniDexEntry: + db "DRAGON@" + db 5,11 + dw 70 + TX_FAR _DratiniDexEntry + db "@" + +DragonairDexEntry: + db "DRAGON@" + db 13,1 + dw 360 + TX_FAR _DragonairDexEntry + db "@" + +KabutoDexEntry: + db "SHELLFISH@" + db 1,8 + dw 250 + TX_FAR _KabutoDexEntry + db "@" + +KabutopsDexEntry: + db "SHELLFISH@" + db 4,3 + dw 890 + TX_FAR _KabutopsDexEntry + db "@" + +HorseaDexEntry: + db "DRAGON@" + db 1,4 + dw 180 + TX_FAR _HorseaDexEntry + db "@" + +SeadraDexEntry: + db "DRAGON@" + db 3,11 + dw 550 + TX_FAR _SeadraDexEntry + db "@" + +SandshrewDexEntry: + db "MOUSE@" + db 2,0 + dw 260 + TX_FAR _SandshrewDexEntry + db "@" + +SandslashDexEntry: + db "MOUSE@" + db 3,3 + dw 650 + TX_FAR _SandslashDexEntry + db "@" + +OmanyteDexEntry: + db "SPIRAL@" + db 1,4 + dw 170 + TX_FAR _OmanyteDexEntry + db "@" + +OmastarDexEntry: + db "SPIRAL@" + db 3,3 + dw 770 + TX_FAR _OmastarDexEntry + db "@" + +JigglypuffDexEntry: + db "BALLOON@" + db 1,8 + dw 120 + TX_FAR _JigglypuffDexEntry + db "@" + +WigglytuffDexEntry: + db "BALLOON@" + db 3,3 + dw 260 + TX_FAR _WigglytuffDexEntry + db "@" + +EeveeDexEntry: + db "EVOLUTION@" + db 1,0 + dw 140 + TX_FAR _EeveeDexEntry + db "@" + +FlareonDexEntry: + db "FLAME@" + db 2,11 + dw 550 + TX_FAR _FlareonDexEntry + db "@" + +JolteonDexEntry: + db "LIGHTNING@" + db 2,7 + dw 540 + TX_FAR _JolteonDexEntry + db "@" + +VaporeonDexEntry: + db "BUBBLE JET@" + db 3,3 + dw 640 + TX_FAR _VaporeonDexEntry + db "@" + +MachopDexEntry: + db "SUPERPOWER@" + db 2,7 + dw 430 + TX_FAR _MachopDexEntry + db "@" + +ZubatDexEntry: + db "BAT@" + db 2,7 + dw 170 + TX_FAR _ZubatDexEntry + db "@" + +EkansDexEntry: + db "SNAKE@" + db 6,7 + dw 150 + TX_FAR _EkansDexEntry + db "@" + +ParasDexEntry: + db "MUSHROOM@" + db 1,0 + dw 120 + TX_FAR _ParasDexEntry + db "@" + +PoliwhirlDexEntry: + db "TADPOLE@" + db 3,3 + dw 440 + TX_FAR _PoliwhirlDexEntry + db "@" + +PoliwrathDexEntry: + db "TADPOLE@" + db 4,3 + dw 1190 + TX_FAR _PoliwrathDexEntry + db "@" + +WeedleDexEntry: + db "HAIRY BUG@" + db 1,0 + dw 70 + TX_FAR _WeedleDexEntry + db "@" + +KakunaDexEntry: + db "COCOON@" + db 2,0 + dw 220 + TX_FAR _KakunaDexEntry + db "@" + +BeedrillDexEntry: + db "POISON BEE@" + db 3,3 + dw 650 + TX_FAR _BeedrillDexEntry + db "@" + +DodrioDexEntry: + db "TRIPLEBIRD@" + db 5,11 + dw 1880 + TX_FAR _DodrioDexEntry + db "@" + +PrimeapeDexEntry: + db "PIG MONKEY@" + db 3,3 + dw 710 + TX_FAR _PrimeapeDexEntry + db "@" + +DugtrioDexEntry: + db "MOLE@" + db 2,4 + dw 730 + TX_FAR _DugtrioDexEntry + db "@" + +VenomothDexEntry: + db "POISONMOTH@" + db 4,11 + dw 280 + TX_FAR _VenomothDexEntry + db "@" + +DewgongDexEntry: + db "SEA LION@" + db 5,7 + dw 2650 + TX_FAR _DewgongDexEntry + db "@" + +CaterpieDexEntry: + db "WORM@" + db 1,0 + dw 60 + TX_FAR _CaterpieDexEntry + db "@" + +MetapodDexEntry: + db "COCOON@" + db 2,4 + dw 220 + TX_FAR _MetapodDexEntry + db "@" + +ButterfreeDexEntry: + db "BUTTERFLY@" + db 3,7 + dw 710 + TX_FAR _ButterfreeDexEntry + db "@" + +MachampDexEntry: + db "SUPERPOWER@" + db 5,3 + dw 2870 + TX_FAR _MachampDexEntry + db "@" + +GolduckDexEntry: + db "DUCK@" + db 5,7 + dw 1690 + TX_FAR _GolduckDexEntry + db "@" + +HypnoDexEntry: + db "HYPNOSIS@" + db 5,3 + dw 1670 + TX_FAR _HypnoDexEntry + db "@" + +GolbatDexEntry: + db "BAT@" + db 5,3 + dw 1210 + TX_FAR _GolbatDexEntry + db "@" + +MewtwoDexEntry: + db "GENETIC@" + db 6,7 + dw 2690 + TX_FAR _MewtwoDexEntry + db "@" + +SnorlaxDexEntry: + db "SLEEPING@" + db 6,11 + dw 10140 + TX_FAR _SnorlaxDexEntry + db "@" + +MagikarpDexEntry: + db "FISH@" + db 2,11 + dw 220 + TX_FAR _MagikarpDexEntry + db "@" + +MukDexEntry: + db "SLUDGE@" + db 3,11 + dw 660 + TX_FAR _MukDexEntry + db "@" + +KinglerDexEntry: + db "PINCER@" + db 4,3 + dw 1320 + TX_FAR _KinglerDexEntry + db "@" + +CloysterDexEntry: + db "BIVALVE@" + db 4,11 + dw 2920 + TX_FAR _CloysterDexEntry + db "@" + +ElectrodeDexEntry: + db "BALL@" + db 3,11 + dw 1470 + TX_FAR _ElectrodeDexEntry + db "@" + +ClefableDexEntry: + db "FAIRY@" + db 4,3 + dw 880 + TX_FAR _ClefableDexEntry + db "@" + +WeezingDexEntry: + db "POISON GAS@" + db 3,11 + dw 210 + TX_FAR _WeezingDexEntry + db "@" + +PersianDexEntry: + db "CLASSY CAT@" + db 3,3 + dw 710 + TX_FAR _PersianDexEntry + db "@" + +MarowakDexEntry: + db "BONEKEEPER@" + db 3,3 + dw 990 + TX_FAR _MarowakDexEntry + db "@" + +HaunterDexEntry: + db "GAS@" + db 5,3 + dw 2 + TX_FAR _HaunterDexEntry + db "@" + +AbraDexEntry: + db "PSI@" + db 2,11 + dw 430 + TX_FAR _AbraDexEntry + db "@" + +AlakazamDexEntry: + db "PSI@" + db 4,11 + dw 1060 + TX_FAR _AlakazamDexEntry + db "@" + +PidgeottoDexEntry: + db "BIRD@" + db 3,7 + dw 660 + TX_FAR _PidgeottoDexEntry + db "@" + +PidgeotDexEntry: + db "BIRD@" + db 4,11 + dw 870 + TX_FAR _PidgeotDexEntry + db "@" + +StarmieDexEntry: + db "MYSTERIOUS@" + db 3,7 + dw 1760 + TX_FAR _StarmieDexEntry + db "@" + +BulbasaurDexEntry: + db "SEED@" + db 2,4 + dw 150 + TX_FAR _BulbasaurDexEntry + db "@" + +VenusaurDexEntry: + db "SEED@" + db 6,7 + dw 2210 + TX_FAR _VenusaurDexEntry + db "@" + +TentacruelDexEntry: + db "JELLYFISH@" + db 5,3 + dw 1210 + TX_FAR _TentacruelDexEntry + db "@" + +GoldeenDexEntry: + db "GOLDFISH@" + db 2,0 + dw 330 + TX_FAR _GoldeenDexEntry + db "@" + +SeakingDexEntry: + db "GOLDFISH@" + db 4,3 + dw 860 + TX_FAR _SeakingDexEntry + db "@" + +PonytaDexEntry: + db "FIRE HORSE@" + db 3,3 + dw 660 + TX_FAR _PonytaDexEntry + db "@" + +RapidashDexEntry: + db "FIRE HORSE@" + db 5,7 + dw 2090 + TX_FAR _RapidashDexEntry + db "@" + +RattataDexEntry: + db "RAT@" + db 1,0 + dw 80 + TX_FAR _RattataDexEntry + db "@" + +RaticateDexEntry: + db "RAT@" + db 2,4 + dw 410 + TX_FAR _RaticateDexEntry + db "@" + +NidorinoDexEntry: + db "POISON PIN@" + db 2,11 + dw 430 + TX_FAR _NidorinoDexEntry + db "@" + +NidorinaDexEntry: + db "POISON PIN@" + db 2,7 + dw 440 + TX_FAR _NidorinaDexEntry + db "@" + +GeodudeDexEntry: + db "ROCK@" + db 1,4 + dw 440 + TX_FAR _GeodudeDexEntry + db "@" + +PorygonDexEntry: + db "VIRTUAL@" + db 2,7 + dw 800 + TX_FAR _PorygonDexEntry + db "@" + +AerodactylDexEntry: + db "FOSSIL@" + db 5,11 + dw 1300 + TX_FAR _AerodactylDexEntry + db "@" + +MagnemiteDexEntry: + db "MAGNET@" + db 1,0 + dw 130 + TX_FAR _MagnemiteDexEntry + db "@" + +CharmanderDexEntry: + db "LIZARD@" + db 2,0 + dw 190 + TX_FAR _CharmanderDexEntry + db "@" + +SquirtleDexEntry: + db "TINYTURTLE@" + db 1,8 + dw 200 + TX_FAR _SquirtleDexEntry + db "@" + +CharmeleonDexEntry: + db "FLAME@" + db 3,7 + dw 420 + TX_FAR _CharmeleonDexEntry + db "@" + +WartortleDexEntry: + db "TURTLE@" + db 3,3 + dw 500 + TX_FAR _WartortleDexEntry + db "@" + +CharizardDexEntry: + db "FLAME@" + db 5,7 + dw 2000 + TX_FAR _CharizardDexEntry + db "@" + +OddishDexEntry: + db "WEED@" + db 1,8 + dw 120 + TX_FAR _OddishDexEntry + db "@" + +GloomDexEntry: + db "WEED@" + db 2,7 + dw 190 + TX_FAR _GloomDexEntry + db "@" + +VileplumeDexEntry: + db "FLOWER@" + db 3,11 + dw 410 + TX_FAR _VileplumeDexEntry + db "@" + +BellsproutDexEntry: + db "FLOWER@" + db 2,4 + dw 90 + TX_FAR _BellsproutDexEntry + db "@" + +WeepinbellDexEntry: + db "FLYCATCHER@" + db 3,3 + dw 140 + TX_FAR _WeepinbellDexEntry + db "@" + +VictreebelDexEntry: + db "FLYCATCHER@" + db 5,7 + dw 340 + TX_FAR _VictreebelDexEntry + db "@" + +MissingNoDexEntry: + db "???@" + db 10 ; 1.0 m + db 100 ; 10.0 kg + db 0,"コメント さくせいちゅう@" ; コメント作成中 (Comment to be written) + +PokedexToIndex: + ; converts the Pokédex number at $D11E to an index + push bc + push hl + ld a,[$D11E] + ld b,a + ld c,0 + ld hl,PokedexOrder + +.loop\@ ; go through the list until we find an entry with a matching dex number + inc c + ld a,[hli] + cp b + jr nz,.loop\@ + + ld a,c + ld [$D11E],a + pop hl + pop bc + ret + +IndexToPokedex: + ; converts the indexédex number at $D11E to a Pokédex number + push bc + push hl + ld a,[$D11E] + dec a + ld hl,PokedexOrder + ld b,0 + ld c,a + add hl,bc + ld a,[hl] + ld [$D11E],a + pop hl + pop bc + ret + +PokedexOrder: ; 5024 + db DEX_RHYDON + db DEX_KANGASKHAN + db DEX_NIDORAN_M + db DEX_CLEFAIRY + db DEX_SPEAROW + db DEX_VOLTORB + db DEX_NIDOKING + db DEX_SLOWBRO + db DEX_IVYSAUR + db DEX_EXEGGUTOR + db DEX_LICKITUNG + db DEX_EXEGGCUTE + db DEX_GRIMER + db DEX_GENGAR + db DEX_NIDORAN_F + db DEX_NIDOQUEEN + db DEX_CUBONE + db DEX_RHYHORN + db DEX_LAPRAS + db DEX_ARCANINE + db DEX_MEW + db DEX_GYARADOS + db DEX_SHELLDER + db DEX_TENTACOOL + db DEX_GASTLY + db DEX_SCYTHER + db DEX_STARYU + db DEX_BLASTOISE + db DEX_PINSIR + db DEX_TANGELA + db 0 ; MISSINGNO. + db 0 ; MISSINGNO. + db DEX_GROWLITHE + db DEX_ONIX + db DEX_FEAROW + db DEX_PIDGEY + db DEX_SLOWPOKE + db DEX_KADABRA + db DEX_GRAVELER + db DEX_CHANSEY + db DEX_MACHOKE + db DEX_MR_MIME + db DEX_HITMONLEE + db DEX_HITMONCHAN + db DEX_ARBOK + db DEX_PARASECT + db DEX_PSYDUCK + db DEX_DROWZEE + db DEX_GOLEM + db 0 ; MISSINGNO. + db DEX_MAGMAR + db 0 ; MISSINGNO. + db DEX_ELECTABUZZ + db DEX_MAGNETON + db DEX_KOFFING + db 0 ; MISSINGNO. + db DEX_MANKEY + db DEX_SEEL + db DEX_DIGLETT + db DEX_TAUROS + db 0 ; MISSINGNO. + db 0 ; MISSINGNO. + db 0 ; MISSINGNO. + db DEX_FARFETCH_D + db DEX_VENONAT + db DEX_DRAGONITE + db 0 ; MISSINGNO. + db 0 ; MISSINGNO. + db 0 ; MISSINGNO. + db DEX_DODUO + db DEX_POLIWAG + db DEX_JYNX + db DEX_MOLTRES + db DEX_ARTICUNO + db DEX_ZAPDOS + db DEX_DITTO + db DEX_MEOWTH + db DEX_KRABBY + db 0 ; MISSINGNO. + db 0 ; MISSINGNO. + db 0 ; MISSINGNO. + db DEX_VULPIX + db DEX_NINETALES + db DEX_PIKACHU + db DEX_RAICHU + db 0 ; MISSINGNO. + db 0 ; MISSINGNO. + db DEX_DRATINI + db DEX_DRAGONAIR + db DEX_KABUTO + db DEX_KABUTOPS + db DEX_HORSEA + db DEX_SEADRA + db 0 ; MISSINGNO. + db 0 ; MISSINGNO. + db DEX_SANDSHREW + db DEX_SANDSLASH + db DEX_OMANYTE + db DEX_OMASTAR + db DEX_JIGGLYPUFF + db DEX_WIGGLYTUFF + db DEX_EEVEE + db DEX_FLAREON + db DEX_JOLTEON + db DEX_VAPOREON + db DEX_MACHOP + db DEX_ZUBAT + db DEX_EKANS + db DEX_PARAS + db DEX_POLIWHIRL + db DEX_POLIWRATH + db DEX_WEEDLE + db DEX_KAKUNA + db DEX_BEEDRILL + db 0 ; MISSINGNO. + db DEX_DODRIO + db DEX_PRIMEAPE + db DEX_DUGTRIO + db DEX_VENOMOTH + db DEX_DEWGONG + db 0 ; MISSINGNO. + db 0 ; MISSINGNO. + db DEX_CATERPIE + db DEX_METAPOD + db DEX_BUTTERFREE + db DEX_MACHAMP + db 0 ; MISSINGNO. + db DEX_GOLDUCK + db DEX_HYPNO + db DEX_GOLBAT + db DEX_MEWTWO + db DEX_SNORLAX + db DEX_MAGIKARP + db 0 ; MISSINGNO. + db 0 ; MISSINGNO. + db DEX_MUK + db 0 ; MISSINGNO. + db DEX_KINGLER + db DEX_CLOYSTER + db 0 ; MISSINGNO. + db DEX_ELECTRODE + db DEX_CLEFABLE + db DEX_WEEZING + db DEX_PERSIAN + db DEX_MAROWAK + db 0 ; MISSINGNO. + db DEX_HAUNTER + db DEX_ABRA + db DEX_ALAKAZAM + db DEX_PIDGEOTTO + db DEX_PIDGEOT + db DEX_STARMIE + db DEX_BULBASAUR + db DEX_VENUSAUR + db DEX_TENTACRUEL + db 0 ; MISSINGNO. + db DEX_GOLDEEN + db DEX_SEAKING + db 0 ; MISSINGNO. + db 0 ; MISSINGNO. + db 0 ; MISSINGNO. + db 0 ; MISSINGNO. + db DEX_PONYTA + db DEX_RAPIDASH + db DEX_RATTATA + db DEX_RATICATE + db DEX_NIDORINO + db DEX_NIDORINA + db DEX_GEODUDE + db DEX_PORYGON + db DEX_AERODACTYL + db 0 ; MISSINGNO. + db DEX_MAGNEMITE + db 0 ; MISSINGNO. + db 0 ; MISSINGNO. + db DEX_CHARMANDER + db DEX_SQUIRTLE + db DEX_CHARMELEON + db DEX_WARTORTLE + db DEX_CHARIZARD + db 0 ; MISSINGNO. + db 0 ; MISSINGNO. + db 0 ; MISSINGNO. + db 0 ; MISSINGNO. + db DEX_ODDISH + db DEX_GLOOM + db DEX_VILEPLUME + db DEX_BELLSPROUT + db DEX_WEEPINBELL + db DEX_VICTREEBEL +INCBIN "baserom.gbc",$410E2,$2769 - $10E2 + +; XXX what do these do + FuncCoord 5,0 + ld hl,Coord + ld de,OTString67E5 + call PlaceString + ld a,[$CD3D] + ld [$D11E],a + ld a,$3A + call Predef + ld hl,$C3A9 + ld de,$D11E + ld bc,$8103 + call $3C5F + FuncCoord 5,2 + ld hl,Coord + ld de,$CF4B + call PlaceString + FuncCoord 8,4 + ld hl,Coord + ld de,$CD41 + call PlaceString + ld hl,$C420 + ld de,$CD4C + ld bc,$8205 + jp $3C5F + + FuncCoord 5,10 + ld hl,Coord + ld de,OTString67E5 + call PlaceString + ld a,[$CD3E] + ld [$D11E],a + ld a,$3A + call Predef + ld hl,$C471 + ld de,$D11E + ld bc,$8103 + call $3C5F + FuncCoord 5,12 + ld hl,Coord + ld de,$CD6D + call PlaceString + FuncCoord 8,14 + ld hl,Coord + ld de,$CD4E + call PlaceString + ld hl,$C4E8 + ld de,$CD59 + ld bc,$8205 + jp $3C5F + +OTString67E5: ; 67E5 + db "──",$74,$F2,$4E + db $4E + db "OT/",$4E + db $73,"№",$F2,"@" + +SECTION "bank11",DATA,BANK[$11] + +LavenderTown_h: ; 0x44000 to 0x4402d (45 bytes) (bank=11) (id=4) + db $00 ; tileset + db $09, $0a ; dimensions (y, x) + dw LavenderTownBlocks, LavenderTownTexts, LavenderTownScript ; blocks, texts, scripts + db NORTH | SOUTH | WEST ; connections + + ; connections data + + db ROUTE_10 + dw $44a0, $c6eb ; pointers (connected, current) (strip) + db $0a, $0a ; bigness, width + db $47, $00 ; alignments (y, x) + dw $c929 ; window + + db ROUTE_12 + dw $4710, $c7ab ; pointers (connected, current) (strip) + db $0a, $0a ; bigness, width + db $00, $00 ; alignments (y, x) + dw $c6f9 ; window + + db ROUTE_8 + dw $41e1, $c718 ; pointers (connected, current) (strip) + db $09, $1e ; bigness, width + db $00, $3b ; alignments (y, x) + dw $c72a ; window + + ; end connection data + + dw LavenderTownObject ; objects + +LavenderTownObject: ; 0x4402d (size=88) + db $2c ; border tile + + db $6 ; warps + db $5, $3, $0, LAVENDER_POKECENTER + db $5, $e, $0, POKEMONTOWER_1 + db $9, $7, $0, LAVENDER_HOUSE_1 + db $d, $f, $0, LAVENDER_MART + db $d, $3, $0, LAVENDER_HOUSE_2 + db $d, $7, $0, NAME_RATERS_HOUSE + + db $6 ; signs + db $9, $b, $4 ; LavenderTownText4 + db $3, $9, $5 ; LavenderTownText5 + db $d, $10, $6 ; LavenderTownText6 + db $5, $4, $7 ; LavenderTownText7 + db $9, $5, $8 ; LavenderTownText8 + db $7, $11, $9 ; LavenderTownText9 + + db $3 ; people + db SPRITE_LITTLE_GIRL, $9 + 4, $f + 4, $fe, $0, $1 ; person + db SPRITE_BLACK_HAIR_BOY_1, $a + 4, $9 + 4, $ff, $ff, $2 ; person + db SPRITE_BLACK_HAIR_BOY_2, $7 + 4, $8 + 4, $fe, $2, $3 ; person + + ; warp-to + EVENT_DISP $a, $5, $3 ; LAVENDER_POKECENTER + EVENT_DISP $a, $5, $e ; POKEMONTOWER_1 + EVENT_DISP $a, $9, $7 ; LAVENDER_HOUSE_1 + EVENT_DISP $a, $d, $f ; LAVENDER_MART + EVENT_DISP $a, $d, $3 ; LAVENDER_HOUSE_2 + EVENT_DISP $a, $d, $7 ; NAME_RATERS_HOUSE + +LavenderTownBlocks: ; 90 + INCBIN "maps/lavendertown.blk" + +ViridianPokecenterBlocks: ; 28 + INCBIN "maps/viridianpokecenter.blk" + +SafariZoneRestHouse1Blocks: ; 16 + INCBIN "maps/safarizoneresthouse1.blk" + +LavenderTownScript: ; 0x4410b + jp $3c3c +; 0x4410e + +LavenderTownTexts: ; 0x4410e + dw LavenderTownText1, LavenderTownText2, LavenderTownText3, LavenderTownText4, LavenderTownText5, LavenderTownText6, LavenderTownText7, LavenderTownText8, LavenderTownText9 + +LavenderTownText1: ; 0x44120 + db $08 ; asm + ld hl, $413c + call PrintText + call $35ec + ld a, [$cc26] + and a + ld hl, $4146 + jr nz, .asm_40831 ; 0x44131 + ld hl, $4141 +.asm_40831 ; 0x44136 + call PrintText + jp $24d7 + +INCBIN "baserom.gbc",$4413c,$f + +LavenderTownText2: ; 0x4414b + TX_FAR _LavenderTownText2 + db $50 + +LavenderTownText3: ; 0x44150 + TX_FAR _LavenderTownText3 + db $50 + +LavenderTownText4: ; 0x44155 + TX_FAR _LavenderTownText4 + db $50 + +LavenderTownText5: ; 0x4415a + TX_FAR _LavenderTownText5 + db $50 + +LavenderTownText8: ; 0x4415f + TX_FAR _LavenderTownText8 + db $50 + +LavenderTownText9: ; 0x44164 + TX_FAR _LavenderTownText9 + db $50 + +INCBIN "baserom.gbc",$44169,$e8 + +ViridianPokecenter_h: ; 0x44251 to 0x4425d (12 bytes) (bank=11) (id=41) + db $06 ; tileset + db $04, $07 ; dimensions (y, x) + dw ViridianPokecenterBlocks, ViridianPokecenterTexts, ViridianPokeCenterScript ; blocks, texts, scripts + db $00 ; connections + + dw ViridianPokecenterObject ; objects + +ViridianPokeCenterScript: ; 0x4425d + call $22fa + jp $3c3c +; 0x44263 + +ViridianPokecenterTexts: ; 0x44263 + dw ViridianPokeCenterText1, ViridianPokeCenterText2, ViridianPokeCenterText3, ViridianPokeCenterText4 + +ViridianPokeCenterText1: ; 0x4426b + db $ff + +ViridianPokeCenterText2: ; 0x4426c + TX_FAR _ViridianPokeCenterText1 + db $50 + +INCBIN "baserom.gbc",$44271,$44271 - $44271 + +ViridianPokeCenterText3: ; 0x44271 + TX_FAR _ViridianPokeCenterText3 + db $50 + +ViridianPokeCenterText4: + db $f6 + +ViridianPokecenterObject: ; 0x44277 (size=44) + db $0 ; border tile + + db $2 ; warps + db $7, $3, $0, $ff + db $7, $4, $0, $ff + + db $0 ; signs + + db $4 ; people + db SPRITE_NURSE, $1 + 4, $3 + 4, $ff, $d0, $1 ; person + db SPRITE_GENTLEMAN, $5 + 4, $a + 4, $fe, $1, $2 ; person + db SPRITE_BLACK_HAIR_BOY_1, $3 + 4, $4 + 4, $ff, $ff, $3 ; person + db SPRITE_CABLE_CLUB_WOMAN, $2 + 4, $b + 4, $ff, $d0, $4 ; person + + ; warp-to + EVENT_DISP $7, $7, $3 + EVENT_DISP $7, $7, $4 + +Mansion1_h: ; 0x442a3 to 0x442af (12 bytes) (bank=11) (id=165) + db $16 ; tileset + db $0e, $0f ; dimensions (y, x) + dw Mansion1Blocks, Mansion1Texts, Mansion1Script ; blocks, texts, scripts + db $00 ; connections + + dw Mansion1Object ; objects + +Mansion1Script: + call Mansion1Subscript1 + call $3c3c + ld hl, $4334 + ld de, $4326 + ld a, [$d63a] + call $3160 + ld [$d63a], a + ret +; 0x442c5 + +Mansion1Subscript1: ; 0x442c5 + ld hl, $d126 + bit 5, [hl] + res 5, [hl] + ret z + ld a, [$d796] + bit 0, a + jr nz, .asm_442ec ; 0x442d2 $18 + ld bc, $060c + call $430b + ld bc, $0308 + call $4304 + ld bc, $080a + call $4304 + ld bc, $0d0d + jp $4304 +.asm_442ec + ld bc, $060c + call $4304 + ld bc, $0308 + call $430b + ld bc, $080a + call $430b + ld bc, $0d0d + jp $430b +; 0x44304 + +INCBIN "baserom.gbc",$44304,$4432c - $44304 + +Mansion1Texts: ; 4432c +INCBIN "baserom.gbc",$4432c,$44341 - $4432c + +Mansion1Text1: ; 0x44341 + db $08 ; asm + ld hl, $4334 + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$4434b,$59 + +Mansion1Object: ; 0x443a4 (size=90) + db $2e ; border tile + + db $8 ; warps + db $1b, $4, $0, $ff + db $1b, $5, $0, $ff + db $1b, $6, $0, $ff + db $1b, $7, $0, $ff + db $a, $5, $0, MANSION_2 + db $17, $15, $0, MANSION_4 + db $1b, $1a, $0, $ff + db $1b, $1b, $0, $ff + + db $0 ; signs + + db $3 ; people + db SPRITE_OAK_AIDE, $11 + 4, $11 + 4, $ff, $d2, $41, SCIENTIST + $C8, $4 ; trainer + db SPRITE_BALL, $3 + 4, $e + 4, $ff, $ff, $82, ESCAPE_ROPE ; item + db SPRITE_BALL, $15 + 4, $12 + 4, $ff, $ff, $83, CARBOS ; item + + ; warp-to + EVENT_DISP $f, $1b, $4 + EVENT_DISP $f, $1b, $5 + EVENT_DISP $f, $1b, $6 + EVENT_DISP $f, $1b, $7 + EVENT_DISP $f, $a, $5 ; MANSION_2 + EVENT_DISP $f, $17, $15 ; MANSION_4 + EVENT_DISP $f, $1b, $1a + EVENT_DISP $f, $1b, $1b + +Mansion1Blocks: ; 203 + INCBIN "maps/mansion1.blk" + +RockTunnel1_h: ; 0x444d0 to 0x444dc (12 bytes) (bank=11) (id=82) + db $11 ; tileset + db $12, $14 ; dimensions (y, x) + dw RockTunnel1Blocks, RockTunnel1Texts, RockTunnel1Script ; blocks, texts, scripts + db $00 ; connections + + dw RockTunnel1Object ; objects + +RockTunnel1Script: ; 0x444dc + call $3c3c + ld hl, $4505 + ld de, $44ef + ld a, [$d621] + call $3160 + ld [$d621], a + ret +; 0x444ef + +INCBIN "baserom.gbc",$444ef,$6 + +RockTunnel1Texts: ; 0x444f5 + dw RockTunnel1Text1, RockTunnel1Text2, RockTunnel1Text3, RockTunnel1Text4, RockTunnel1Text5, RockTunnel1Text6, RockTunnel1Text7, RockTunnel1Text8 + +INCBIN "baserom.gbc",$44505,$55 + +RockTunnel1Text1: ; 0x4455a + db $8 + ld hl, $4505 + jr asm_0c916 ; 0x4455e $22 + +RockTunnel1Text2: + db $8 + ld hl, $4511 + jr asm_0c916 ; 0x44564 $1c + +RockTunnel1Text3: + db $8 + ld hl, $451d + jr asm_0c916 ; 0x4456a $16 + +RockTunnel1Text4: + db $8 + ld hl, $4529 + jr asm_0c916 ; 0x44570 $10 + +RockTunnel1Text5: + db $8 + ld hl, $4535 + jr asm_0c916 ; 0x44576 $a + +RockTunnel1Text6: + db $8 + ld hl, $4541 + jr asm_0c916 ; 0x4457c $4 + +RockTunnel1Text7: + db $8 + ld hl, $454d +asm_0c916: ; 0x44582 + call $31cc + jp $24d7 + +INCBIN "baserom.gbc",$44588,$69 + +RockTunnel1Text8: ; 0x445f1 + TX_FAR _RockTunnel1Text8 + db $50 + +RockTunnel1Object: ; 0x445f6 (size=127) + db $3 ; border tile + + db $8 ; warps + db $3, $f, $1, $ff + db $0, $f, $1, $ff + db $21, $f, $2, $ff + db $23, $f, $2, $ff + db $3, $25, $0, ROCK_TUNNEL_2 + db $3, $5, $1, ROCK_TUNNEL_2 + db $b, $11, $2, ROCK_TUNNEL_2 + db $11, $25, $3, ROCK_TUNNEL_2 + + db $1 ; signs + db $1d, $b, $8 ; RockTunnel1Text8 + + db $7 ; people + db SPRITE_HIKER, $5 + 4, $7 + 4, $ff, $d0, $41, HIKER + $C8, $c ; trainer + db SPRITE_HIKER, $10 + 4, $5 + 4, $ff, $d0, $42, HIKER + $C8, $d ; trainer + db SPRITE_HIKER, $f + 4, $11 + 4, $ff, $d2, $43, HIKER + $C8, $e ; trainer + db SPRITE_BLACK_HAIR_BOY_2, $8 + 4, $17 + 4, $ff, $d2, $44, POKEMANIAC + $C8, $7 ; trainer + db SPRITE_LASS, $15 + 4, $25 + 4, $ff, $d2, $45, JR__TRAINER_F + $C8, $11 ; trainer + db SPRITE_LASS, $18 + 4, $16 + 4, $ff, $d0, $46, JR__TRAINER_F + $C8, $12 ; trainer + db SPRITE_LASS, $18 + 4, $20 + 4, $ff, $d3, $47, JR__TRAINER_F + $C8, $13 ; trainer + + ; warp-to + EVENT_DISP $14, $3, $f + EVENT_DISP $14, $0, $f + EVENT_DISP $14, $21, $f + EVENT_DISP $14, $23, $f + EVENT_DISP $14, $3, $25 ; ROCK_TUNNEL_2 + EVENT_DISP $14, $3, $5 ; ROCK_TUNNEL_2 + EVENT_DISP $14, $b, $11 ; ROCK_TUNNEL_2 + EVENT_DISP $14, $11, $25 ; ROCK_TUNNEL_2 + +RockTunnel1Blocks: ; 360 + INCBIN "maps/rocktunnel1.blk" + +SeafoamIslands1_h: ; 0x447dd to 0x447e9 (12 bytes) (bank=11) (id=192) + db $11 ; tileset + db $09, $0f ; dimensions (y, x) + dw SeafoamIslands1Blocks, SeafoamIslands1Texts, SeafoamIslands1Script ; blocks, texts, scripts + db $00 ; connections + + dw SeafoamIslands1Object ; objects + +SeafoamIslands1Script: ; 0x447e9 + call $3c3c + ld hl, $d7e7 + set 0, [hl] + ld hl, $cd60 + bit 7, [hl] + res 7, [hl] + jr z, .asm_4483b ; 0x447f8 $41 + ld hl, $4846 + call $34e4 + ret nc + ld hl, $d7e8 + ld a, [$cd3d] + cp $1 + jr nz, .asm_44819 ; 0x44809 $e + set 6, [hl] + ld a, $d7 + ld [$d079], a + ld a, $d9 + ld [$d07a], a + jr .asm_44825 ; 0x44817 $c +.asm_44819 + set 7, [hl] + ld a, $d8 + ld [$d079], a + ld a, $da + ld [$d07a], a +.asm_44825 + ld a, [$d079] + ld [$cc4d], a + ld a, $11 + call Predef + ld a, [$d07a] + ld [$cc4d], a + ld a, $15 + jp $3e6d +.asm_4483b + ld a, $9f + ld [$d71d], a + ld hl, $4846 + jp $6981 +; 0x44846 + +INCBIN "baserom.gbc",$44846,$5 + +SeafoamIslands1Texts: ; 0x4484b + dw SeafoamIslands1Text1, SeafoamIslands1Text2 + +SeafoamIslands1Object: ; 0x4484f (size=72) + db $7d ; border tile + + db $7 ; warps + db $11, $4, $0, $ff + db $11, $5, $0, $ff + db $11, $1a, $1, $ff + db $11, $1b, $1, $ff + db $5, $7, $1, SEAFOAM_ISLANDS_2 + db $3, $19, $6, SEAFOAM_ISLANDS_2 + db $f, $17, $4, SEAFOAM_ISLANDS_2 + + db $0 ; signs + + db $2 ; people + db SPRITE_BOULDER, $a + 4, $12 + 4, $ff, $10, $1 ; person + db SPRITE_BOULDER, $7 + 4, $1a + 4, $ff, $10, $2 ; person + + ; warp-to + EVENT_DISP $f, $11, $4 + EVENT_DISP $f, $11, $5 + EVENT_DISP $f, $11, $1a + EVENT_DISP $f, $11, $1b + EVENT_DISP $f, $5, $7 ; SEAFOAM_ISLANDS_2 + EVENT_DISP $f, $3, $19 ; SEAFOAM_ISLANDS_2 + EVENT_DISP $f, $f, $17 ; SEAFOAM_ISLANDS_2 + +INCBIN "baserom.gbc",$44897,$8 + +SeafoamIslands1Blocks: ; 135 + INCBIN "maps/seafoamislands1.blk" + +SSAnne3_h: ; 0x44926 to 0x44932 (12 bytes) (bank=11) (id=97) + db $0d ; tileset + db $03, $0a ; dimensions (y, x) + dw SSAnne3Blocks, SSAnne3Texts, SSAnne3Script ; blocks, texts, scripts + db $00 ; connections + + dw SSAnne3Object ; objects + +SSAnne3Script: ; 0x44932 + jp $3c3c +; 0x44935 + +SSAnne3Texts: ; 0x44935 + dw SSAnne3Text1 + +SSAnne3Text1: ; 0x44937 + TX_FAR _SSAnne3Text1 + db $50 + +SSAnne3Object: ; 0x4493c (size=26) + db $c ; border tile + + db $2 ; warps + db $3, $0, $0, SS_ANNE_5 + db $3, $13, $7, SS_ANNE_2 + + db $0 ; signs + + db $1 ; people + db SPRITE_SAILOR, $3 + 4, $9 + 4, $fe, $2, $1 ; person + + ; warp-to + EVENT_DISP $a, $3, $0 ; SS_ANNE_5 + EVENT_DISP $a, $3, $13 ; SS_ANNE_2 + +SSAnne3Blocks: ; 30 + INCBIN "maps/ssanne3.blk" + +VictoryRoad3_h: ; 0x44974 to 0x44980 (12 bytes) (bank=11) (id=198) + db $11 ; tileset + db $09, $0f ; dimensions (y, x) + dw VictoryRoad3Blocks, VictoryRoad3Texts, VictoryRoad3Script ; blocks, texts, scripts + db $00 ; connections + + dw VictoryRoad3Object ; objects + +VictoryRoad3Script: ; 0x44980 + call $4996 + call $3c3c + ld hl, $4a38 + ld de, $49b1 + ld a, [$d640] + call $3160 + ld [$d640], a + ret +; 0x44996 + +INCBIN "baserom.gbc",$44996,$8e + +VictoryRoad3Texts: ; 0x44a24 + dw VictoryRoad3Text1, VictoryRoad3Text2, VictoryRoad3Text3, VictoryRoad3Text4, VictoryRoad3Text5, VictoryRoad3Text6, VictoryRoad3Text7, VictoryRoad3Text8, VictoryRoad3Text9, VictoryRoad3Text10 + +INCBIN "baserom.gbc",$44a38,$31 + +VictoryRoad3Text1: ; 0x44a69 + db $08 ; asm + ld hl, $4a38 + call LoadTrainerHeader + jp $24d7 + +VictoryRoad3Text2: ; 0x44a73 + db $08 ; asm + ld hl, $4a44 + call LoadTrainerHeader + jp $24d7 + +VictoryRoad3Text3: ; 0x44a7d + db $08 ; asm + ld hl, $4a50 + call LoadTrainerHeader + jp $24d7 + +VictoryRoad3Text4: ; 0x44a87 + db $08 ; asm + ld hl, $4a5c + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$44a91,$3c + +VictoryRoad3Object: ; 0x44acd (size=106) + db $7d ; border tile + + db $4 ; warps + db $7, $17, $3, VICTORY_ROAD_2 + db $8, $1a, $5, VICTORY_ROAD_2 + db $f, $1b, $4, VICTORY_ROAD_2 + db $0, $2, $6, VICTORY_ROAD_2 + + db $0 ; signs + + db $a ; people + db SPRITE_BLACK_HAIR_BOY_1, $5 + 4, $1c + 4, $ff, $d2, $41, COOLTRAINER_M + $C8, $2 ; trainer + db SPRITE_LASS, $d + 4, $7 + 4, $ff, $d3, $42, COOLTRAINER_F + $C8, $2 ; trainer + db SPRITE_BLACK_HAIR_BOY_1, $e + 4, $6 + 4, $ff, $d2, $43, COOLTRAINER_M + $C8, $3 ; trainer + db SPRITE_LASS, $3 + 4, $d + 4, $ff, $d3, $44, COOLTRAINER_F + $C8, $3 ; trainer + db SPRITE_BALL, $5 + 4, $1a + 4, $ff, $ff, $85, MAX_REVIVE ; item + db SPRITE_BALL, $7 + 4, $7 + 4, $ff, $ff, $86, TM_47 ; item + db SPRITE_BOULDER, $3 + 4, $16 + 4, $ff, $10, $7 ; person + db SPRITE_BOULDER, $c + 4, $d + 4, $ff, $10, $8 ; person + db SPRITE_BOULDER, $a + 4, $18 + 4, $ff, $10, $9 ; person + db SPRITE_BOULDER, $f + 4, $16 + 4, $ff, $10, $a ; person + + ; warp-to + EVENT_DISP $f, $7, $17 ; VICTORY_ROAD_2 + EVENT_DISP $f, $8, $1a ; VICTORY_ROAD_2 + EVENT_DISP $f, $f, $1b ; VICTORY_ROAD_2 + EVENT_DISP $f, $0, $2 ; VICTORY_ROAD_2 + +VictoryRoad3Blocks: ; 135 + INCBIN "maps/victoryroad3.blk" + +RocketHideout1_h: ; 0x44bbe to 0x44bca (12 bytes) (bank=11) (id=199) + db $16 ; tileset + db $0e, $0f ; dimensions (y, x) + dw RocketHideout1Blocks, RocketHideout1Texts, RocketHideout1Script ; blocks, texts, scripts + db $00 ; connections + + dw RocketHideout1Object ; objects + +RocketHideout1Script: ; 0x44bca + call $4be0 + call $3c3c + ld hl, $4c22 + ld de, $4c0e + ld a, [$d631] + call $3160 + ld [$d631], a + ret +; 0x44be0 + +INCBIN "baserom.gbc",$44be0,$34 + +RocketHideout1Texts: ; 0x44c14 + dw RocketHideout1Text1, RocketHideout1Text2, RocketHideout1Text3, RocketHideout1Text4, RocketHideout1Text5, RocketHideout1Text6, RocketHideout1Text7 + +INCBIN "baserom.gbc",$44c22,$3d + +RocketHideout1Text1: ; 0x44c5f + db $08 ; asm + ld hl, $4c22 + call LoadTrainerHeader + jp $24d7 + +RocketHideout1Text2: ; 0x44c69 + db $08 ; asm + ld hl, $4c2e + call LoadTrainerHeader + jp $24d7 + +RocketHideout1Text3: ; 0x44c73 + db $08 ; asm + ld hl, $4c3a + call LoadTrainerHeader + jp $24d7 + +RocketHideout1Text4: ; 0x44c7d + db $08 ; asm + ld hl, $4c46 + call LoadTrainerHeader + jp $24d7 + +RocketHideout1Text5: ; 0x44c87 + db $08 ; asm + ld hl, $4c52 + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$44c91,$56 + +RocketHideout1Object: ; 0x44ce7 (size=98) + db $2e ; border tile + + db $5 ; warps + db $2, $17, $0, ROCKET_HIDEOUT_2 + db $2, $15, $2, GAME_CORNER + db $13, $18, $0, ROCKET_HIDEOUT_ELEVATOR + db $18, $15, $3, ROCKET_HIDEOUT_2 + db $13, $19, $1, ROCKET_HIDEOUT_ELEVATOR + + db $0 ; signs + + db $7 ; people + db SPRITE_ROCKET, $8 + 4, $1a + 4, $ff, $d2, $41, ROCKET + $C8, $8 ; trainer + db SPRITE_ROCKET, $6 + 4, $c + 4, $ff, $d3, $42, ROCKET + $C8, $9 ; trainer + db SPRITE_ROCKET, $11 + 4, $12 + 4, $ff, $d0, $43, ROCKET + $C8, $a ; trainer + db SPRITE_ROCKET, $19 + 4, $f + 4, $ff, $d3, $44, ROCKET + $C8, $b ; trainer + db SPRITE_ROCKET, $12 + 4, $1c + 4, $ff, $d2, $45, ROCKET + $C8, $c ; trainer + db SPRITE_BALL, $e + 4, $b + 4, $ff, $ff, $86, ESCAPE_ROPE ; item + db SPRITE_BALL, $11 + 4, $9 + 4, $ff, $ff, $87, HYPER_POTION ; item + + ; warp-to + EVENT_DISP $f, $2, $17 ; ROCKET_HIDEOUT_2 + EVENT_DISP $f, $2, $15 ; GAME_CORNER + EVENT_DISP $f, $13, $18 ; ROCKET_HIDEOUT_ELEVATOR + EVENT_DISP $f, $18, $15 ; ROCKET_HIDEOUT_2 + EVENT_DISP $f, $13, $19 ; ROCKET_HIDEOUT_ELEVATOR + +RocketHideout1Blocks: ; 210 + INCBIN "maps/rockethideout1.blk" + +RocketHideout2_h: ; 0x44e1b to 0x44e27 (12 bytes) (bank=11) (id=200) + db $16 ; tileset + db $0e, $0f ; dimensions (y, x) + dw RocketHideout2Blocks, RocketHideout2Texts, RocketHideout2Script ; blocks, texts, scripts + db $00 ; connections + + dw RocketHideout2Object ; objects + +RocketHideout2Script: ; 0x44e27 + call $3c3c + ld hl, $50d1 + ld de, $4e3a + ld a, [$d632] + call $3160 + ld [$d632], a + ret +; 0x44e3a + +INCBIN "baserom.gbc",$44e3a,$28d + +RocketHideout2Texts: ; 0x450c7 + dw RocketHideout2Text1, RocketHideout2Text2, RocketHideout2Text3, RocketHideout2Text4, RocketHideout2Text5 + +INCBIN "baserom.gbc",$450d1,$d + +RocketHideout2Text1: ; 0x450de + db $08 ; asm + ld hl, $50d1 + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$450e8,$f + +RocketHideout2Object: ; 0x450f7 (size=80) + db $2e ; border tile + + db $5 ; warps + db $8, $1b, $0, ROCKET_HIDEOUT_1 + db $8, $15, $0, ROCKET_HIDEOUT_3 + db $13, $18, $0, ROCKET_HIDEOUT_ELEVATOR + db $16, $15, $3, ROCKET_HIDEOUT_1 + db $13, $19, $1, ROCKET_HIDEOUT_ELEVATOR + + db $0 ; signs + + db $5 ; people + db SPRITE_ROCKET, $c + 4, $14 + 4, $ff, $d0, $41, ROCKET + $C8, $d ; trainer + db SPRITE_BALL, $b + 4, $1 + 4, $ff, $ff, $82, MOON_STONE ; item + db SPRITE_BALL, $8 + 4, $10 + 4, $ff, $ff, $83, NUGGET ; item + db SPRITE_BALL, $c + 4, $6 + 4, $ff, $ff, $84, TM_07 ; item + db SPRITE_BALL, $15 + 4, $3 + 4, $ff, $ff, $85, SUPER_POTION ; item + + ; warp-to + EVENT_DISP $f, $8, $1b ; ROCKET_HIDEOUT_1 + EVENT_DISP $f, $8, $15 ; ROCKET_HIDEOUT_3 + EVENT_DISP $f, $13, $18 ; ROCKET_HIDEOUT_ELEVATOR + EVENT_DISP $f, $16, $15 ; ROCKET_HIDEOUT_1 + EVENT_DISP $f, $13, $19 ; ROCKET_HIDEOUT_ELEVATOR + +RocketHideout2Blocks: ; 210 + INCBIN "maps/rockethideout2.blk" + +RocketHideout3_h: ; 0x45219 to 0x45225 (12 bytes) (bank=11) (id=201) + db $16 ; tileset + db $0e, $0f ; dimensions (y, x) + dw RocketHideout3Blocks, RocketHideout3Texts, RocketHideout3Script ; blocks, texts, scripts + db $00 ; connections + + dw RocketHideout3Object ; objects + +RocketHideout3Script: ; 0x45225 + call $3c3c + ld hl, $5302 + ld de, $5238 + ld a, [$d633] + call $3160 + ld [$d633], a + ret +; 0x45238 + +INCBIN "baserom.gbc",$45238,$c2 + +RocketHideout3Texts: ; 0x452fa + dw RocketHideout3Text1, RocketHideout3Text2, RocketHideout3Text3, RocketHideout3Text4 + +INCBIN "baserom.gbc",$45302,$19 + +RocketHideout3Text1: ; 0x4531b + db $08 ; asm + ld hl, $5302 + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$45325,$45334 - $45325 + +RocketHideout3Text2: ; 0x45334 + db $08 ; asm + ld hl, $530e + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$4533e,$f + +RocketHideout3Object: ; 0x4534d (size=50) + db $2e ; border tile + + db $2 ; warps + db $6, $19, $1, ROCKET_HIDEOUT_2 + db $12, $13, $0, ROCKET_HIDEOUT_4 + + db $0 ; signs + + db $4 ; people + db SPRITE_ROCKET, $16 + 4, $a + 4, $ff, $d3, $41, ROCKET + $C8, $e ; trainer + db SPRITE_ROCKET, $c + 4, $1a + 4, $ff, $d1, $42, ROCKET + $C8, $f ; trainer + db SPRITE_BALL, $11 + 4, $1a + 4, $ff, $ff, $83, TM_10 ; item + db SPRITE_BALL, $e + 4, $14 + 4, $ff, $ff, $84, RARE_CANDY ; item + + ; warp-to + EVENT_DISP $f, $6, $19 ; ROCKET_HIDEOUT_2 + EVENT_DISP $f, $12, $13 ; ROCKET_HIDEOUT_4 + +RocketHideout3Blocks: ; 210 + INCBIN "maps/rockethideout3.blk" + +RocketHideout4_h: ; 0x45451 to 0x4545d (12 bytes) (bank=11) (id=202) + db $16 ; tileset + db $0c, $0f ; dimensions (y, x) + dw RocketHideout4Blocks, RocketHideout4Texts, RocketHideout4Script ; blocks, texts, scripts + db $00 ; connections + + dw RocketHideout4Object ; objects + +RocketHideout4Script: ; 0x4545d + call $5473 + call $3c3c + ld hl, $5515 + ld de, $54ae + ld a, [$d634] + call $3160 + ld [$d634], a + ret +; 0x45473 + +INCBIN "baserom.gbc",$45473,$8e + +RocketHideout4Texts: ; 0x45501 + dw RocketHideout4Text1, RocketHideout4Text2, RocketHideout4Text3, RocketHideout4Text4, RocketHideout4Text5, RocketHideout4Text6, RocketHideout4Text7, RocketHideout4Text8, RocketHideout4Text9, RocketHideout4Text10 + +INCBIN "baserom.gbc",$45515,$25 + +RocketHideout4Text1: ; 0x4553a + db $08 ; asm + ld a, [$d81b] + bit 7, a + jp nz, $5571 + ld hl, $557a + call PrintText + ld hl, $d72d + set 6, [hl] + set 7, [hl] + ld hl, $557f + ld de, $557f + call $3354 + ldh a, [$8c] + ld [$cf13], a + call $336a + call $32d7 + xor a + ldh [$b4], a + ld a, $3 + ld [$d634], a + ld [$da39], a + jr .asm_209f0 ; 0x4556f + ld hl, $5584 + call PrintText +.asm_209f0 ; 0x45577 + jp $24d7 + +INCBIN "baserom.gbc",$4557a,$45584 - $4557a + +RocketHideout4Text10: ; 0x45584 +INCBIN "baserom.gbc",$45584,5 + +RocketHideout4Text2: ; 0x45589 + db $08 ; asm + ld hl, $5515 + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$45593,$455a2 - $45593 + +RocketHideout4Text3: ; 0x455a2 + db $08 ; asm + ld hl, $5521 + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$455ac,$455bb - $455ac + +RocketHideout4Text4: ; 0x455bb + db $08 ; asm + ld hl, $552d + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$455c5,$2c + +RocketHideout4Object: ; 0x455f1 (size=95) + db $2e ; border tile + + db $3 ; warps + db $a, $13, $1, ROCKET_HIDEOUT_3 + db $f, $18, $0, ROCKET_HIDEOUT_ELEVATOR + db $f, $19, $1, ROCKET_HIDEOUT_ELEVATOR + + db $0 ; signs + + db $9 ; people + db SPRITE_GIOVANNI, $3 + 4, $19 + 4, $ff, $d0, $41, GIOVANNI + $C8, $1 ; trainer + db SPRITE_ROCKET, $c + 4, $17 + 4, $ff, $d0, $42, ROCKET + $C8, $10 ; trainer + db SPRITE_ROCKET, $c + 4, $1a + 4, $ff, $d0, $43, ROCKET + $C8, $11 ; trainer + db SPRITE_ROCKET, $2 + 4, $b + 4, $ff, $d0, $44, ROCKET + $C8, $12 ; trainer + db SPRITE_BALL, $c + 4, $a + 4, $ff, $ff, $85, HP_UP ; item + db SPRITE_BALL, $4 + 4, $9 + 4, $ff, $ff, $86, TM_02 ; item + db SPRITE_BALL, $14 + 4, $c + 4, $ff, $ff, $87, IRON ; item + db SPRITE_BALL, $2 + 4, $19 + 4, $ff, $ff, $88, SILPH_SCOPE ; item + db SPRITE_BALL, $2 + 4, $a + 4, $ff, $ff, $89, LIFT_KEY ; item + + ; warp-to + EVENT_DISP $f, $a, $13 ; ROCKET_HIDEOUT_3 + EVENT_DISP $f, $f, $18 ; ROCKET_HIDEOUT_ELEVATOR + EVENT_DISP $f, $f, $19 ; ROCKET_HIDEOUT_ELEVATOR + +RocketHideout4Blocks: ; 180 + INCBIN "maps/rockethideout4.blk" + +RocketHideoutElevator_h: ; 0x45704 to 0x45710 (12 bytes) (bank=11) (id=203) + db $12 ; tileset + db $04, $03 ; dimensions (y, x) + dw RocketHideoutElevatorBlocks, RocketHideoutElevatorTexts, RocketHideoutElevatorScript ; blocks, texts, scripts + db $00 ; connections + + dw RocketHideoutElevatorObject ; objects + +RocketHideoutElevatorScript: ; 0x45710 + ld hl, $d126 + bit 5, [hl] + res 5, [hl] + push hl + call nz, $572c + pop hl + bit 7, [hl] + res 7, [hl] + call nz, $575f + xor a + ld [$cf0c], a + inc a + ld [$cc3c], a + ret +; 0x4572c + +INCBIN "baserom.gbc",$4572c,$3f + +RocketHideoutElevatorTexts: ; 0x4576b + dw RocketHideoutElevatorText1 + +RocketHideoutElevatorText1: ; 0x4576d + db $08 ; asm + ld b,LIFT_KEY + call $3493 + jr z, .asm_8d8f0 ; 0x45773 + call $5741 + ld hl, $5759 + ld a, $61 + call Predef + jr .asm_46c43 ; 0x45780 +.asm_8d8f0 ; 0x45782 + ld hl, $578b + call PrintText +.asm_46c43 ; 0x45788 + jp $24d7 + +INCBIN "baserom.gbc",$4578b,$6 + +RocketHideoutElevatorObject: ; 0x45791 (size=23) + db $f ; border tile + + db $2 ; warps + db $1, $2, $2, ROCKET_HIDEOUT_1 + db $1, $3, $4, ROCKET_HIDEOUT_1 + + db $1 ; signs + db $1, $1, $1 ; RocketHideoutElevatorText1 + + db $0 ; people + + ; warp-to + EVENT_DISP $3, $1, $2 ; ROCKET_HIDEOUT_1 + EVENT_DISP $3, $1, $3 ; ROCKET_HIDEOUT_1 + +RocketHideoutElevatorBlocks: ; 12 + INCBIN "maps/rockethideoutelevator.blk" + +SilphCoElevator_h: ; 0x457b4 to 0x457c0 (12 bytes) (bank=11) (id=236) + db $12 ; tileset + db $02, $02 ; dimensions (y, x) + dw SilphCoElevatorBlocks, SilphCoElevatorTexts, SilphCoElevatorScript ; blocks, texts, scripts + db $00 ; connections + + dw SilphCoElevatorObject ; objects + +SilphCoElevatorScript: ; 0x457c0 + ld hl, $d126 + bit 5, [hl] + res 5, [hl] + push hl + call nz, $57dc + pop hl + bit 7, [hl] + res 7, [hl] + call nz, $5827 + xor a + ld [$cf0c], a + inc a + ld [$cc3c], a + ret +; 0x457dc + +INCBIN "baserom.gbc",$457dc,$57 + +SilphCoElevatorTexts: ; 0x45833 + dw SilphCoElevatorText1 + +SilphCoElevatorText1: ; 0x45835 + db $08 ; asm + call $57f1 + ld hl, $5811 + ld a, $61 + call Predef + jp $24d7 + +SilphCoElevatorObject: ; 0x45844 (size=23) + db $f ; border tile + + db $2 ; warps + db $3, $1, $0, $ed + db $3, $2, $0, $ed + + db $1 ; signs + db $0, $3, $1 ; SilphCoElevatorText1 + + db $0 ; people + + ; warp-to + EVENT_DISP $2, $3, $1 + EVENT_DISP $2, $3, $2 + +SilphCoElevatorBlocks: ; 4 + INCBIN "maps/silphcoelevator.blk" + +SafariZoneEast_h: ; 0x4585f to 0x4586b (12 bytes) (bank=11) (id=217) + db $03 ; tileset + db $0d, $0f ; dimensions (y, x) + dw SafariZoneEastBlocks, SafariZoneEastTexts, SafariZoneEastScript ; blocks, texts, scripts + db $00 ; connections + + dw SafariZoneEastObject ; objects + +SafariZoneEastScript: ; 0x4586b + jp $3c3c +; 0x4586e + +SafariZoneEastTexts: ; 0x4586e + dw SafariZoneEastText1, SafariZoneEastText2, SafariZoneEastText3, SafariZoneEastText4, SafariZoneEastText5, SafariZoneEastText6, SafariZoneEastText7 + +SafariZoneEastText5: ; 0x4587c + TX_FAR _SafariZoneEastText5 + db $50 + +SafariZoneEastText6: ; 0x45881 + TX_FAR _SafariZoneEastText6 + db $50 + +SafariZoneEastText7: ; 0x45886 + TX_FAR _SafariZoneEastText7 + db $50 + +SafariZoneEastObject: ; 0x4588b (size=81) + db $0 ; border tile + + db $5 ; warps + db $4, $0, $6, SAFARI_ZONE_NORTH + db $5, $0, $7, SAFARI_ZONE_NORTH + db $16, $0, $6, SAFARI_ZONE_CENTER + db $17, $0, $6, SAFARI_ZONE_CENTER + db $9, $19, $0, SAFARI_ZONE_REST_HOUSE_3 + + db $3 ; signs + db $a, $1a, $5 ; SafariZoneEastText5 + db $4, $6, $6 ; SafariZoneEastText6 + db $17, $5, $7 ; SafariZoneEastText7 + + db $4 ; people + db SPRITE_BALL, $a + 4, $15 + 4, $ff, $ff, $81, FULL_RESTORE ; item + db SPRITE_BALL, $7 + 4, $3 + 4, $ff, $ff, $82, MAX_POTION ; item + db SPRITE_BALL, $d + 4, $14 + 4, $ff, $ff, $83, CARBOS ; item + db SPRITE_BALL, $c + 4, $f + 4, $ff, $ff, $84, TM_37 ; item + + ; warp-to + EVENT_DISP $f, $4, $0 ; SAFARI_ZONE_NORTH + EVENT_DISP $f, $5, $0 ; SAFARI_ZONE_NORTH + EVENT_DISP $f, $16, $0 ; SAFARI_ZONE_CENTER + EVENT_DISP $f, $17, $0 ; SAFARI_ZONE_CENTER + EVENT_DISP $f, $9, $19 ; SAFARI_ZONE_REST_HOUSE_3 + +SafariZoneEastBlocks: ; 195 + INCBIN "maps/safarizoneeast.blk" + +SafariZoneNorth_h: ; 0x4599f to 0x459ab (12 bytes) (bank=11) (id=218) + db $03 ; tileset + db $12, $14 ; dimensions (y, x) + dw SafariZoneNorthBlocks, SafariZoneNorthTexts, SafariZoneNorthScript ; blocks, texts, scripts + db $00 ; connections + + dw SafariZoneNorthObject ; objects + +SafariZoneNorthScript: ; 0x459ab + jp $3c3c +; 0x459ae + +SafariZoneNorthTexts: ; 0x459ae + dw SafariZoneNorthText1, SafariZoneNorthText2, SafariZoneNorthText3, SafariZoneNorthText4, SafariZoneNorthText5, SafariZoneNorthText6, SafariZoneNorthText7 + +SafariZoneNorthText3: ; 0x459bc + TX_FAR _SafariZoneNorthText3 + db $50 + +SafariZoneNorthText4: ; 0x459c1 + TX_FAR _SafariZoneNorthText4 + db $50 + +SafariZoneNorthText5: ; 0x459c6 + TX_FAR _SafariZoneNorthText5 + db $50 + +SafariZoneNorthText6: ; 0x459cb + TX_FAR _SafariZoneNorthText6 + db $50 + +SafariZoneNorthText7: ; 0x459d0 + TX_FAR _SafariZoneNorthText7 + db $50 + +SafariZoneNorthObject: ; 0x459d5 (size=105) + db $0 ; border tile + + db $9 ; warps + db $23, $2, $0, SAFARI_ZONE_WEST + db $23, $3, $1, SAFARI_ZONE_WEST + db $23, $8, $2, SAFARI_ZONE_WEST + db $23, $9, $3, SAFARI_ZONE_WEST + db $23, $14, $4, SAFARI_ZONE_CENTER + db $23, $15, $5, SAFARI_ZONE_CENTER + db $1e, $27, $0, SAFARI_ZONE_EAST + db $1f, $27, $1, SAFARI_ZONE_EAST + db $3, $23, $0, SAFARI_ZONE_REST_HOUSE_4 + + db $5 ; signs + db $4, $24, $3 ; SafariZoneNorthText3 + db $19, $4, $4 ; SafariZoneNorthText4 + db $1f, $d, $5 ; SafariZoneNorthText5 + db $21, $13, $6 ; SafariZoneNorthText6 + db $1c, $1a, $7 ; SafariZoneNorthText7 + + db $2 ; people + db SPRITE_BALL, $1 + 4, $19 + 4, $ff, $ff, $81, PROTEIN ; item + db SPRITE_BALL, $7 + 4, $13 + 4, $ff, $ff, $82, TM_40 ; item + + ; warp-to + EVENT_DISP $14, $23, $2 ; SAFARI_ZONE_WEST + EVENT_DISP $14, $23, $3 ; SAFARI_ZONE_WEST + EVENT_DISP $14, $23, $8 ; SAFARI_ZONE_WEST + EVENT_DISP $14, $23, $9 ; SAFARI_ZONE_WEST + EVENT_DISP $14, $23, $14 ; SAFARI_ZONE_CENTER + EVENT_DISP $14, $23, $15 ; SAFARI_ZONE_CENTER + EVENT_DISP $14, $1e, $27 ; SAFARI_ZONE_EAST + EVENT_DISP $14, $1f, $27 ; SAFARI_ZONE_EAST + EVENT_DISP $14, $3, $23 ; SAFARI_ZONE_REST_HOUSE_4 + +SafariZoneNorthBlocks: ; 360 + INCBIN "maps/safarizonenorth.blk" + +SafariZoneCenter_h: ; 0x45ba6 to 0x45bb2 (12 bytes) (bank=11) (id=220) + db $03 ; tileset + db $0d, $0f ; dimensions (y, x) + dw SafariZoneCenterBlocks, SafariZoneCenterTexts, SafariZoneCenterScript ; blocks, texts, scripts + db $00 ; connections + + dw SafariZoneCenterObject ; objects + +SafariZoneCenterScript: ; 0x45bb2 + jp $3c3c +; 0x45bb5 + +SafariZoneCenterTexts: ; 0x45bb5 + dw SafariZoneCenterText1, SafariZoneCenterText2, SafariZoneCenterText3 + +SafariZoneCenterText2: ; 0x45bbb + TX_FAR _SafariZoneCenterText2 + db $50 + +SafariZoneCenterText3: ; 0x45bc0 + TX_FAR _SafariZoneCenterText3 + db $50 + +SafariZoneCenterObject: ; 0x45bc5 (size=89) + db $0 ; border tile + + db $9 ; warps + db $19, $e, $2, SAFARIZONEENTRANCE + db $19, $f, $3, SAFARIZONEENTRANCE + db $a, $0, $4, SAFARI_ZONE_WEST + db $b, $0, $5, SAFARI_ZONE_WEST + db $0, $e, $4, SAFARI_ZONE_NORTH + db $0, $f, $5, SAFARI_ZONE_NORTH + db $a, $1d, $2, SAFARI_ZONE_EAST + db $b, $1d, $3, SAFARI_ZONE_EAST + db $13, $11, $0, SAFARI_ZONE_REST_HOUSE_1 + + db $2 ; signs + db $14, $12, $2 ; SafariZoneCenterText2 + db $16, $e, $3 ; SafariZoneCenterText3 + + db $1 ; people + db SPRITE_BALL, $a + 4, $e + 4, $ff, $ff, $81, NUGGET ; item + + ; warp-to + EVENT_DISP $f, $19, $e ; SAFARIZONEENTRANCE + EVENT_DISP $f, $19, $f ; SAFARIZONEENTRANCE + EVENT_DISP $f, $a, $0 ; SAFARI_ZONE_WEST + EVENT_DISP $f, $b, $0 ; SAFARI_ZONE_WEST + EVENT_DISP $f, $0, $e ; SAFARI_ZONE_NORTH + EVENT_DISP $f, $0, $f ; SAFARI_ZONE_NORTH + EVENT_DISP $f, $a, $1d ; SAFARI_ZONE_EAST + EVENT_DISP $f, $b, $1d ; SAFARI_ZONE_EAST + EVENT_DISP $f, $13, $11 ; SAFARI_ZONE_REST_HOUSE_1 + +SafariZoneCenterBlocks: ; 195 + INCBIN "maps/safarizonecenter.blk" + +SafariZoneRestHouse1_h: ; 0x45ce1 to 0x45ced (12 bytes) (bank=11) (id=221) + db $0c ; tileset + db $04, $04 ; dimensions (y, x) + dw SafariZoneRestHouse1Blocks, SafariZoneRestHouse1Texts, SafariZoneRestHouse1Script ; blocks, texts, scripts + db $00 ; connections + + dw SafariZoneRestHouse1Object ; objects + +SafariZoneRestHouse1Script: ; 0x45ced + jp $3c3c +; 0x45cf0 + +SafariZoneRestHouse1Texts: ; 0x45cf0 + dw SafariZoneRestHouse1Text1, SafariZoneRestHouse1Text2 + +SafariZoneRestHouse1Text1: ; 0x45cf4 + TX_FAR _SafariZoneRestHouse1Text1 + db $50 + +SafariZoneRestHouse1Text2: ; 0x45cf9 + TX_FAR _SafariZoneRestHouse1Text2 + db $50 + +SafariZoneRestHouse1Object: ; 0x45cfe (size=32) + db $a ; border tile + + db $2 ; warps + db $7, $2, $8, SAFARI_ZONE_CENTER + db $7, $3, $8, SAFARI_ZONE_CENTER + + db $0 ; signs + + db $2 ; people + db SPRITE_GIRL, $2 + 4, $3 + 4, $ff, $d0, $1 ; person + db SPRITE_OAK_AIDE, $4 + 4, $1 + 4, $fe, $1, $2 ; person + + ; warp-to + EVENT_DISP $4, $7, $2 ; SAFARI_ZONE_CENTER + EVENT_DISP $4, $7, $3 ; SAFARI_ZONE_CENTER + +SafariZoneRestHouse2_h: ; 0x45d1e to 0x45d2a (12 bytes) (bank=11) (id=223) + db $0c ; tileset + db $04, $04 ; dimensions (y, x) + dw $40fb, SafariZoneRestHouse2Texts, SafariZoneRestHouse2Script ; blocks, texts, scripts + db $00 ; connections + + dw SafariZoneRestHouse2Object ; objects + +SafariZoneRestHouse2Script: ; 0x45d2a + call $3c3c + ret +; 0x45d2e + +SafariZoneRestHouse2Texts: ; 0x45d2e + dw SafariZoneRestHouse2Text1, SafariZoneRestHouse2Text2, SafariZoneRestHouse2Text3 + +SafariZoneRestHouse2Text1: ; 0x45d34 + TX_FAR _SafariZoneRestHouse2Text1 + db $50 + +SafariZoneRestHouse2Text2: ; 0x45d39 + TX_FAR _SafariZoneRestHouse2Text2 + db $50 + +SafariZoneRestHouse2Text3: ; 0x45d3e + TX_FAR _SafariZoneRestHouse2Text3 + db $50 + +SafariZoneRestHouse2Object: ; 0x45d43 (size=38) + db $a ; border tile + + db $2 ; warps + db $7, $2, $7, SAFARI_ZONE_WEST + db $7, $3, $7, SAFARI_ZONE_WEST + + db $0 ; signs + + db $3 ; people + db SPRITE_OAK_AIDE, $4 + 4, $4 + 4, $fe, $0, $1 ; person + db SPRITE_BLACK_HAIR_BOY_1, $2 + 4, $0 + 4, $ff, $d3, $2 ; person + db SPRITE_ERIKA, $2 + 4, $6 + 4, $ff, $d0, $3 ; person + + ; warp-to + EVENT_DISP $4, $7, $2 ; SAFARI_ZONE_WEST + EVENT_DISP $4, $7, $3 ; SAFARI_ZONE_WEST + +SafariZoneRestHouse3_h: ; 0x45d69 to 0x45d75 (12 bytes) (bank=11) (id=224) + db $0c ; tileset + db $04, $04 ; dimensions (y, x) + dw $40fb, SafariZoneRestHouse3Texts, SafariZoneRestHouse3Script ; blocks, texts, scripts + db $00 ; connections + + dw SafariZoneRestHouse3Object ; objects + +SafariZoneRestHouse3Script: ; 0x45d75 + call $3c3c + ret +; 0x45d79 + +SafariZoneRestHouse3Texts: ; 0x45d79 + dw SafariZoneRestHouse3Text1, SafariZoneRestHouse3Text2, SafariZoneRestHouse3Text3 + +SafariZoneRestHouse3Text1: ; 0x45d7f + TX_FAR _SafariZoneRestHouse3Text1 + db $50 + +SafariZoneRestHouse3Text2: ; 0x45d84 + TX_FAR _SafariZoneRestHouse3Text2 + db $50 + +SafariZoneRestHouse3Text3: ; 0x45d89 + TX_FAR _SafariZoneRestHouse3Text3 + db $50 + +SafariZoneRestHouse3Object: ; 0x45d8e (size=38) + db $a ; border tile + + db $2 ; warps + db $7, $2, $4, SAFARI_ZONE_EAST + db $7, $3, $4, SAFARI_ZONE_EAST + + db $0 ; signs + + db $3 ; people + db SPRITE_OAK_AIDE, $3 + 4, $1 + 4, $fe, $1, $1 ; person + db SPRITE_ROCKER, $2 + 4, $4 + 4, $ff, $ff, $2 ; person + db SPRITE_LAPRAS_GIVER, $2 + 4, $5 + 4, $ff, $ff, $3 ; person + + ; warp-to + EVENT_DISP $4, $7, $2 ; SAFARI_ZONE_EAST + EVENT_DISP $4, $7, $3 ; SAFARI_ZONE_EAST + +SafariZoneRestHouse4_h: ; 0x45db4 to 0x45dc0 (12 bytes) (bank=11) (id=225) + db $0c ; tileset + db $04, $04 ; dimensions (y, x) + dw $40fb, SafariZoneRestHouse4Texts, SafariZoneRestHouse4Script ; blocks, texts, scripts + db $00 ; connections + + dw SafariZoneRestHouse4Object ; objects + +SafariZoneRestHouse4Script: ; 0x45dc0 + call $3c3c + ret +; 0x45dc4 + +SafariZoneRestHouse4Texts: ; 0x45dc4 + dw SafariZoneRestHouse4Text1, SafariZoneRestHouse4Text2, SafariZoneRestHouse4Text3 + +SafariZoneRestHouse4Text1: ; 0x45dca + TX_FAR _SafariZoneRestHouse4Text1 + db $50 + +SafariZoneRestHouse4Text2: ; 0x45dcf + TX_FAR _SafariZoneRestHouse4Text2 + db $50 + +SafariZoneRestHouse4Text3: ; 0x45dd4 + TX_FAR _SafariZoneRestHouse4Text3 + db $50 + +SafariZoneRestHouse4Object: ; 0x45dd9 (size=38) + db $a ; border tile + + db $2 ; warps + db $7, $2, $8, SAFARI_ZONE_NORTH + db $7, $3, $8, SAFARI_ZONE_NORTH + + db $0 ; signs + + db $3 ; people + db SPRITE_OAK_AIDE, $3 + 4, $6 + 4, $fe, $2, $1 ; person + db SPRITE_WHITE_PLAYER, $4 + 4, $3 + 4, $ff, $ff, $2 ; person + db SPRITE_GENTLEMAN, $5 + 4, $1 + 4, $fe, $1, $3 ; person + + ; warp-to + EVENT_DISP $4, $7, $2 ; SAFARI_ZONE_NORTH + EVENT_DISP $4, $7, $3 ; SAFARI_ZONE_NORTH + +UnknownDungeon2_h: ; 0x45dff to 0x45e0b (12 bytes) (bank=11) (id=226) + db $11 ; tileset + db $09, $0f ; dimensions (y, x) + dw UnknownDungeon2Blocks, UnknownDungeon2Texts, UnknownDungeon2Script ; blocks, texts, scripts + db $00 ; connections + + dw UnknownDungeon2Object ; objects + +UnknownDungeon2Script: ; 0x45e0b + jp $3c3c +; 0x45e0e + +UnknownDungeon2Texts: ; 0x45e0e + dw UnknownDungeon2Text1, UnknownDungeon2Text2, UnknownDungeon2Text3 + +UnknownDungeon2Object: ; 0x45e14 (size=73) + db $7d ; border tile + + db $6 ; warps + db $1, $1d, $2, UNKNOWN_DUNGEON_1 + db $6, $16, $3, UNKNOWN_DUNGEON_1 + db $7, $13, $4, UNKNOWN_DUNGEON_1 + db $1, $9, $5, UNKNOWN_DUNGEON_1 + db $3, $1, $6, UNKNOWN_DUNGEON_1 + db $b, $3, $7, UNKNOWN_DUNGEON_1 + + db $0 ; signs + + db $3 ; people + db SPRITE_BALL, $9 + 4, $1d + 4, $ff, $ff, $81, PP_UP ; item + db SPRITE_BALL, $f + 4, $4 + 4, $ff, $ff, $82, ULTRA_BALL ; item + db SPRITE_BALL, $6 + 4, $d + 4, $ff, $ff, $83, FULL_RESTORE ; item + + ; warp-to + EVENT_DISP $f, $1, $1d ; UNKNOWN_DUNGEON_1 + EVENT_DISP $f, $6, $16 ; UNKNOWN_DUNGEON_1 + EVENT_DISP $f, $7, $13 ; UNKNOWN_DUNGEON_1 + EVENT_DISP $f, $1, $9 ; UNKNOWN_DUNGEON_1 + EVENT_DISP $f, $3, $1 ; UNKNOWN_DUNGEON_1 + EVENT_DISP $f, $b, $3 ; UNKNOWN_DUNGEON_1 + +UnknownDungeon2Blocks: ; 135 + INCBIN "maps/unknowndungeon2.blk" + +UnknownDungeon3_h: ; 0x45ee4 to 0x45ef0 (12 bytes) (bank=11) (id=227) + db $11 ; tileset + db $09, $0f ; dimensions (y, x) + dw UnknownDungeon3Blocks, UnknownDungeon3Texts, UnknownDungeon3Script ; blocks, texts, scripts + db $00 ; connections + + dw UnknownDungeon3Object ; objects + +UnknownDungeon3Script: ; 0x45ef0 + call $3c3c + ld hl, $5f0f + ld de, $5f03 + ld a, [$d650] + call $3160 + ld [$d650], a + ret +; 0x45f03 + +INCBIN "baserom.gbc",$45f03,$6 + +UnknownDungeon3Texts: ; 0x45f09 + dw UnknownDungeon3Text1, UnknownDungeon3Text2, UnknownDungeon3Text3 + +INCBIN "baserom.gbc",$45f0f,$d + +UnknownDungeon3Text1: ; 0x45f1c + db $08 ; asm + ld hl, $5f0f + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$45f26,$10 + +UnknownDungeon3Object: ; 0x45f36 (size=34) + db $7d ; border tile + + db $1 ; warps + db $6, $3, $8, UNKNOWN_DUNGEON_1 + + db $0 ; signs + + db $3 ; people + db SPRITE_SLOWBRO, $d + 4, $1b + 4, $ff, $d0, $41, MEWTWO, $46 ; trainer + db SPRITE_BALL, $9 + 4, $10 + 4, $ff, $ff, $82, ULTRA_BALL ; item + db SPRITE_BALL, $1 + 4, $12 + 4, $ff, $ff, $83, MAX_REVIVE ; item + + ; warp-to + EVENT_DISP $f, $6, $3 ; UNKNOWN_DUNGEON_1 + +UnknownDungeon3Blocks: ; 135 + INCBIN "maps/unknowndungeon3.blk" + +RockTunnel2_h: ; 0x45fdf to 0x45feb (12 bytes) (bank=11) (id=232) + db $11 ; tileset + db $12, $14 ; dimensions (y, x) + dw RockTunnel2Blocks, RockTunnel2Texts, RockTunnel2Script ; blocks, texts, scripts + db $00 ; connections + + dw RockTunnel2Object ; objects + +RockTunnel2Script: ; 0x45feb + call $3c3c + ld hl, $6014 + ld de, $5ffe + ld a, [$d620] + call $3160 + ld [$d620], a + ret +; 0x45ffe + +INCBIN "baserom.gbc",$45ffe,$6 + +RockTunnel2Texts: ; 0x46004 + dw RockTunnel2Text1, RockTunnel2Text2, RockTunnel2Text3, RockTunnel2Text4, RockTunnel2Text5, RockTunnel2Text6, RockTunnel2Text7, RockTunnel2Text8 + +INCBIN "baserom.gbc",$46014,$61 + +RockTunnel2Text1: ; 0x46075 + db $08 ; asm + ld hl, $6014 + call LoadTrainerHeader + jp $24d7 + +RockTunnel2Text2: ; 0x4607f + db $08 ; asm + ld hl, $6020 + call LoadTrainerHeader + jp $24d7 + +RockTunnel2Text3: ; 0x46089 + db $08 ; asm + ld hl, $602c + call LoadTrainerHeader + jp $24d7 + +RockTunnel2Text4: ; 0x46093 + db $08 ; asm + ld hl, $6038 + call LoadTrainerHeader + jp $24d7 + +RockTunnel2Text5: ; 0x4609d + db $08 ; asm + ld hl, $6044 + call LoadTrainerHeader + jp $24d7 + +RockTunnel2Text6: ; 0x460a7 + db $08 ; asm + ld hl, $6050 + call LoadTrainerHeader + jp $24d7 + +RockTunnel2Text7: ; 0x460b1 + db $08 ; asm + ld hl, $605c + call LoadTrainerHeader + jp $24d7 + +RockTunnel2Text8: ; 0x460bb + db $08 ; asm + ld hl, $6068 + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$460c5,$78 + +RockTunnel2Object: ; 0x4613d (size=100) + db $3 ; border tile + + db $4 ; warps + db $19, $21, $4, ROCK_TUNNEL_1 + db $3, $1b, $5, ROCK_TUNNEL_1 + db $b, $17, $6, ROCK_TUNNEL_1 + db $3, $3, $7, ROCK_TUNNEL_1 + + db $0 ; signs + + db $8 ; people + db SPRITE_LASS, $d + 4, $b + 4, $ff, $d0, $41, JR__TRAINER_F + $C8, $9 ; trainer + db SPRITE_HIKER, $a + 4, $6 + 4, $ff, $d0, $42, HIKER + $C8, $9 ; trainer + db SPRITE_BLACK_HAIR_BOY_2, $5 + 4, $3 + 4, $ff, $d0, $43, POKEMANIAC + $C8, $3 ; trainer + db SPRITE_BLACK_HAIR_BOY_2, $15 + 4, $14 + 4, $ff, $d3, $44, POKEMANIAC + $C8, $4 ; trainer + db SPRITE_HIKER, $a + 4, $1e + 4, $ff, $d0, $45, HIKER + $C8, $a ; trainer + db SPRITE_LASS, $1c + 4, $e + 4, $ff, $d3, $46, JR__TRAINER_F + $C8, $a ; trainer + db SPRITE_HIKER, $5 + 4, $21 + 4, $ff, $d3, $47, HIKER + $C8, $b ; trainer + db SPRITE_BLACK_HAIR_BOY_2, $1e + 4, $1a + 4, $ff, $d0, $48, POKEMANIAC + $C8, $5 ; trainer + + ; warp-to + EVENT_DISP $14, $19, $21 ; ROCK_TUNNEL_1 + EVENT_DISP $14, $3, $1b ; ROCK_TUNNEL_1 + EVENT_DISP $14, $b, $17 ; ROCK_TUNNEL_1 + EVENT_DISP $14, $3, $3 ; ROCK_TUNNEL_1 + +RockTunnel2Blocks: ; 360 + INCBIN "maps/rocktunnel2.blk" + +SeafoamIslands2_h: ; 0x46309 to 0x46315 (12 bytes) (bank=11) (id=159) + db $11 ; tileset + db $09, $0f ; dimensions (y, x) + dw SeafoamIslands2Blocks, SeafoamIslands2Texts, SeafoamIslands2Script ; blocks, texts, scripts + db $00 ; connections + + dw SeafoamIslands2Object ; objects + +SeafoamIslands2Script: ; 0x46315 + call $3c3c + ld hl, $cd60 + bit 7, [hl] + res 7, [hl] + jr z, .asm_46362 ; 0x4631f $41 + ld hl, $636d + call $34e4 + ret nc + ld hl, $d87f + ld a, [$cd3d] + cp $1 + jr nz, .asm_46340 ; 0x46330 $e + set 0, [hl] + ld a, $d9 + ld [$d079], a + ld a, $db + ld [$d07a], a + jr .asm_4634c ; 0x4633e $c +.asm_46340 + set 1, [hl] + ld a, $da + ld [$d079], a + ld a, $dc + ld [$d07a], a +.asm_4634c + ld a, [$d079] + ld [$cc4d], a + ld a, $11 + call Predef + ld a, [$d07a] + ld [$cc4d], a + ld a, $15 + jp $3e6d +.asm_46362 + ld a, $a0 + ld [$d71d], a + ld hl, $636d + jp $6981 +; 0x4636d + +INCBIN "baserom.gbc",$4636d,$5 + +SeafoamIslands2Texts: ; 0x46372 + dw SeafoamIslands2Text1, SeafoamIslands2Text2 + +SeafoamIslands2Object: ; 0x46376 (size=72) + db $7d ; border tile + + db $7 ; warps + db $2, $4, $0, SEAFOAM_ISLANDS_3 + db $5, $7, $4, SEAFOAM_ISLANDS_1 + db $7, $d, $2, SEAFOAM_ISLANDS_3 + db $f, $13, $3, SEAFOAM_ISLANDS_3 + db $f, $17, $6, SEAFOAM_ISLANDS_1 + db $b, $19, $5, SEAFOAM_ISLANDS_3 + db $3, $19, $5, SEAFOAM_ISLANDS_1 + + db $0 ; signs + + db $2 ; people + db SPRITE_BOULDER, $6 + 4, $11 + 4, $ff, $10, $1 ; person + db SPRITE_BOULDER, $6 + 4, $16 + 4, $ff, $10, $2 ; person + + ; warp-to + EVENT_DISP $f, $2, $4 ; SEAFOAM_ISLANDS_3 + EVENT_DISP $f, $5, $7 ; SEAFOAM_ISLANDS_1 + EVENT_DISP $f, $7, $d ; SEAFOAM_ISLANDS_3 + EVENT_DISP $f, $f, $13 ; SEAFOAM_ISLANDS_3 + EVENT_DISP $f, $f, $17 ; SEAFOAM_ISLANDS_1 + EVENT_DISP $f, $b, $19 ; SEAFOAM_ISLANDS_3 + EVENT_DISP $f, $3, $19 ; SEAFOAM_ISLANDS_1 + +SeafoamIslands2Blocks: ; 135 + INCBIN "maps/seafoamislands2.blk" + +SeafoamIslands3_h: ; 0x46445 to 0x46451 (12 bytes) (bank=11) (id=160) + db $11 ; tileset + db $09, $0f ; dimensions (y, x) + dw SeafoamIslands3Blocks, SeafoamIslands3Texts, SeafoamIslands3Script ; blocks, texts, scripts + db $00 ; connections + + dw SeafoamIslands3Object ; objects + +SeafoamIslands3Script: ; 0x46451 + call $3c3c + ld hl, $cd60 + bit 7, [hl] + res 7, [hl] + jr z, .asm_4649e ; 0x4645b $41 + ld hl, $64a9 + call $34e4 + ret nc + ld hl, $d880 + ld a, [$cd3d] + cp $1 + jr nz, .asm_4647c ; 0x4646c $e + set 0, [hl] + ld a, $db + ld [$d079], a + ld a, $df + ld [$d07a], a + jr .asm_46488 ; 0x4647a $c +.asm_4647c + set 1, [hl] + ld a, $dc + ld [$d079], a + ld a, $e0 + ld [$d07a], a +.asm_46488 + ld a, [$d079] + ld [$cc4d], a + ld a, $11 + call Predef + ld a, [$d07a] + ld [$cc4d], a + ld a, $15 + jp $3e6d +.asm_4649e + ld a, $a1 + ld [$d71d], a + ld hl, $64a9 + jp $6981 +; 0x464a9 + +INCBIN "baserom.gbc",$464a9,$5 + +SeafoamIslands3Texts: ; 0x464ae + dw SeafoamIslands3Text1, SeafoamIslands3Text2 + +SeafoamIslands3Object: ; 0x464b2 (size=72) + db $7d ; border tile + + db $7 ; warps + db $3, $5, $0, SEAFOAM_ISLANDS_2 + db $d, $5, $0, SEAFOAM_ISLANDS_4 + db $7, $d, $2, SEAFOAM_ISLANDS_2 + db $f, $13, $3, SEAFOAM_ISLANDS_2 + db $3, $19, $3, SEAFOAM_ISLANDS_4 + db $b, $19, $5, SEAFOAM_ISLANDS_2 + db $e, $19, $4, SEAFOAM_ISLANDS_4 + + db $0 ; signs + + db $2 ; people + db SPRITE_BOULDER, $6 + 4, $12 + 4, $ff, $10, $1 ; person + db SPRITE_BOULDER, $6 + 4, $17 + 4, $ff, $10, $2 ; person + + ; warp-to + EVENT_DISP $f, $3, $5 ; SEAFOAM_ISLANDS_2 + EVENT_DISP $f, $d, $5 ; SEAFOAM_ISLANDS_4 + EVENT_DISP $f, $7, $d ; SEAFOAM_ISLANDS_2 + EVENT_DISP $f, $f, $13 ; SEAFOAM_ISLANDS_2 + EVENT_DISP $f, $3, $19 ; SEAFOAM_ISLANDS_4 + EVENT_DISP $f, $b, $19 ; SEAFOAM_ISLANDS_2 + EVENT_DISP $f, $e, $19 ; SEAFOAM_ISLANDS_4 + +SeafoamIslands3Blocks: ; 135 + INCBIN "maps/seafoamislands3.blk" + +SeafoamIslands4_h: ; 0x46581 to 0x4658d (12 bytes) (bank=11) (id=161) + db $11 ; tileset + db $09, $0f ; dimensions (y, x) + dw SeafoamIslands4Blocks, SeafoamIslands4Texts, SeafoamIslands4Script ; blocks, texts, scripts + db $00 ; connections + + dw SeafoamIslands4Object ; objects + +SeafoamIslands4Script: ; 0x4658d + call $3c3c + ld hl, $cd60 + bit 7, [hl] + res 7, [hl] + jr z, .asm_465dc ; 0x46597 $43 + ld hl, $65f6 + call $34e4 + ret nc + ld hl, $d881 + ld a, [$cd3d] + cp $1 + jr nz, .asm_465b8 ; 0x465a8 $e + set 0, [hl] + ld a, $dd + ld [$d079], a + ld a, $e1 + ld [$d07a], a + jr .asm_465c4 ; 0x465b6 $c +.asm_465b8 + set 1, [hl] + ld a, $de + ld [$d079], a + ld a, $e2 + ld [$d07a], a +.asm_465c4 + ld a, [$d079] + ld [$cc4d], a + ld a, $11 + call Predef + ld a, [$d07a] + ld [$cc4d], a + ld a, $15 + call Predef + jr .asm_465ed ; 0x465da $11 +.asm_465dc + ld a, $a2 + ld [$d71d], a + ld hl, $65f6 + call $6981 + ld a, [$d732] + bit 4, a + ret nz +.asm_465ed + ld hl, $65fb + ld a, [$d666] + jp $3d97 +; 0x465f6 + +INCBIN "baserom.gbc",$465f6,$465fb - $465f6 + +SeafoamIslands4Scripts: ; 0x465fb + dw SeafoamIslands4Script0, SeafoamIslands4Script1 + +INCBIN "baserom.gbc",$465ff,$4 + +SeafoamIslands4Script0: ; 0x46603 + ld a, [$d880] + and $3 + cp $3 + ret z + ld a, [$d361] + cp $8 + ret nz + ld a, [$d362] + cp $f + ret nz + ld hl, $ccd3 + ld de, $6632 + call $350c + dec a + ld [$cd38], a + call $3486 + ld hl, $d733 + set 2, [hl] + ld a, $1 + ld [$d666], a + ret +; 0x46632 + +INCBIN "baserom.gbc",$46632,$46639 - $46632 + +SeafoamIslands4Script1: ; 0x46639 + ld a, [$cd38] + and a + ret nz + ld a, $0 + ld [$d666], a + ret +; 0x46644 + +INCBIN "baserom.gbc",$46644,$56 + +SeafoamIslands4Texts: ; 0x4669a + dw SeafoamIslands4Text1, SeafoamIslands4Text2, SeafoamIslands4Text3, SeafoamIslands4Text4, SeafoamIslands4Text5, SeafoamIslands4Text6 + +SeafoamIslands4Object: ; 0x466a6 (size=96) + db $7d ; border tile + + db $7 ; warps + db $c, $5, $1, SEAFOAM_ISLANDS_3 + db $6, $8, $2, SEAFOAM_ISLANDS_5 + db $4, $19, $3, SEAFOAM_ISLANDS_5 + db $3, $19, $4, SEAFOAM_ISLANDS_3 + db $e, $19, $6, SEAFOAM_ISLANDS_3 + db $11, $14, $0, SEAFOAM_ISLANDS_5 + db $11, $15, $1, SEAFOAM_ISLANDS_5 + + db $0 ; signs + + db $6 ; people + db SPRITE_BOULDER, $e + 4, $5 + 4, $ff, $10, $1 ; person + db SPRITE_BOULDER, $f + 4, $3 + 4, $ff, $10, $2 ; person + db SPRITE_BOULDER, $e + 4, $8 + 4, $ff, $10, $3 ; person + db SPRITE_BOULDER, $e + 4, $9 + 4, $ff, $10, $4 ; person + db SPRITE_BOULDER, $6 + 4, $12 + 4, $ff, $ff, $5 ; person + db SPRITE_BOULDER, $6 + 4, $13 + 4, $ff, $ff, $6 ; person + + ; warp-to + EVENT_DISP $f, $c, $5 ; SEAFOAM_ISLANDS_3 + EVENT_DISP $f, $6, $8 ; SEAFOAM_ISLANDS_5 + EVENT_DISP $f, $4, $19 ; SEAFOAM_ISLANDS_5 + EVENT_DISP $f, $3, $19 ; SEAFOAM_ISLANDS_3 + EVENT_DISP $f, $e, $19 ; SEAFOAM_ISLANDS_3 + EVENT_DISP $f, $11, $14 ; SEAFOAM_ISLANDS_5 + EVENT_DISP $f, $11, $15 ; SEAFOAM_ISLANDS_5 + +SeafoamIslands4Blocks: ; 135 + INCBIN "maps/seafoamislands4.blk" + +SeafoamIslands5_h: ; 0x4678d to 0x46799 (12 bytes) (bank=11) (id=162) + db $11 ; tileset + db $09, $0f ; dimensions (y, x) + dw SeafoamIslands5Blocks, SeafoamIslands5Texts, SeafoamIslands5Script ; blocks, texts, scripts + db $00 ; connections + + dw SeafoamIslands5Object ; objects + +SeafoamIslands5Script: ; 0x46799 + call $3c3c + ld a, [$d668] + ld hl, $67ad + jp $3d97 +; 0x467a5 + +INCBIN "baserom.gbc",$467a5,$467ad - $467a5 + +SeafoamIslands5Scripts: ; 0x467ad + dw SeafoamIslands5Script0, SeafoamIslands5Script1 + +INCBIN "baserom.gbc",$467b1,$16 + +SeafoamIslands5Script0: ; 0x467c7 + ld a, [$d880] + and $3 + cp $3 + ret z + ld hl, $67fe + call $34bf + ret nc + ld a, [$cd3d] + cp $3 + jr nc, .asm_467e6 ; 0x467db $9 + ld a, $40 + ld [$ccd4], a + ld a, $2 + jr .asm_467e8 ; 0x467e4 $2 +.asm_467e6 + ld a, $1 +.asm_467e8 + ld [$cd38], a + ld a, $40 + ld [$ccd3], a + call $3486 + ld hl, $d733 + res 2, [hl] + ld a, $1 + ld [$d668], a + ret +; 0x467fe + +INCBIN "baserom.gbc",$467fe,$46807 - $467fe + +SeafoamIslands5Script1: ; 0x46807 + ld a, [$cd38] + and a + ret nz + xor a + ld [$cd6b], a + ld a, $0 + ld [$d668], a + ret +; 0x46816 + +INCBIN "baserom.gbc",$46816,$66 + +SeafoamIslands5Texts: ; 0x4687c + dw SeafoamIslands5Text1, SeafoamIslands5Text2, SeafoamIslands5Text3, SeafoamIslands5Text4, SeafoamIslands5Text5 + +INCBIN "baserom.gbc",$46886,$d + +SeafoamIslands5Text3: ; 0x46893 + db $08 ; asm + ld hl, $6886 + call LoadTrainerHeader + ld a, $4 + ld [$d668], a + jp $24d7 + +; 0x468a2 TX_FAR +db $17, $75, $40, $22 +; 0x468a6 + db $8 + ld a, $4a + call $13d0 + call $3748 + jp TextScriptEnd +; 0x468b2 + +SeafoamIslands5Text4: ; 0x468b2 + TX_FAR _SeafoamIslands5Text4 + db $50 + +SeafoamIslands5Text5: ; 0x468b7 + TX_FAR _SeafoamIslands5Text5 + db $50 + +SeafoamIslands5Object: ; 0x468bc (size=62) + db $7d ; border tile + + db $4 ; warps + db $11, $14, $5, SEAFOAM_ISLANDS_4 + db $11, $15, $6, SEAFOAM_ISLANDS_4 + db $7, $b, $1, SEAFOAM_ISLANDS_4 + db $4, $19, $2, SEAFOAM_ISLANDS_4 + + db $2 ; signs + db $f, $9, $4 ; SeafoamIslands5Text4 + db $1, $17, $5 ; SeafoamIslands5Text5 + + db $3 ; people + db SPRITE_BOULDER, $f + 4, $4 + 4, $ff, $ff, $1 ; person + db SPRITE_BOULDER, $f + 4, $5 + 4, $ff, $ff, $2 ; person + db SPRITE_BIRD, $1 + 4, $6 + 4, $ff, $d0, $43, ARTICUNO, $32 ; trainer + + ; warp-to + EVENT_DISP $f, $11, $14 ; SEAFOAM_ISLANDS_4 + EVENT_DISP $f, $11, $15 ; SEAFOAM_ISLANDS_4 + EVENT_DISP $f, $7, $b ; SEAFOAM_ISLANDS_4 + EVENT_DISP $f, $4, $19 ; SEAFOAM_ISLANDS_4 + +SeafoamIslands5Blocks: ; 135 + INCBIN "maps/seafoamislands5.blk" + +INCBIN "baserom.gbc",$46981,$167f + +SECTION "bank12",DATA,BANK[$12] + +Route7_h: ; 0x48000 to 0x48022 (34 bytes) (bank=12) (id=18) + db $00 ; tileset + db $09, $0a ; dimensions (y, x) + dw Route7Blocks, $4155, Route7Script ; blocks, texts, scripts + db WEST | EAST ; connections + + ; connections data + + db CELADON_CITY + dw $410e, $c6e8 ; pointers (connected, current) (strip) + db $0f, $19 ; bigness, width + db $08, $31 ; alignments (y, x) + dw $c720 ; window + + db SAFFRON_CITY + dw $4aac, $c6f5 ; pointers (connected, current) (strip) + db $0f, $14 ; bigness, width + db $08, $00 ; alignments (y, x) + dw $c703 ; window + + ; end connection data + + dw Route7Object ; objects + +Route7Object: ; 0x48022 (size=47) + db $f ; border tile + + db $5 ; warps + db $9, $12, $2, ROUTE_7_GATE + db $a, $12, $3, ROUTE_7_GATE + db $9, $b, $0, ROUTE_7_GATE + db $a, $b, $1, ROUTE_7_GATE + db $d, $5, $0, PATH_ENTRANCE_ROUTE_7 + + db $1 ; signs + db $d, $3, $1 ; Route7Text1 + + db $0 ; people + + ; warp-to + EVENT_DISP $a, $9, $12 ; ROUTE_7_GATE + EVENT_DISP $a, $a, $12 ; ROUTE_7_GATE + EVENT_DISP $a, $9, $b ; ROUTE_7_GATE + EVENT_DISP $a, $a, $b ; ROUTE_7_GATE + EVENT_DISP $a, $d, $5 ; PATH_ENTRANCE_ROUTE_7 + +Route7Blocks: ; 90 + INCBIN "maps/route7.blk" + +MtMoonPokecenterBlocks: ; 28 + INCBIN "maps/mtmoonpokecenter.blk" + +Route11GateBlocks: ; 20 + INCBIN "maps/route11gate.blk" + +Route11GateUpstairsBlocks: ; 16 + INCBIN "maps/route11gateupstairs.blk" + +INCBIN "baserom.gbc",$480eb,$48152 - $480eb + +Route7Script: ; 0x48152 + jp $3c3c +; 0x48155 + +INCBIN "baserom.gbc",$48155,$2 + +Route7Text1: ; 0x48157 + TX_FAR _Route7Text1 + db $50 + +RedsHouse1F_h: ; 415C + db $01 ; tileset + db $04,$04 ; dimensions + dw RedsHouse1FBlocks, RedsHouse1FTexts, RedsHouse1FScript + db 0 ; no connections + dw RedsHouse1FObject + +RedsHouse1FScript: ; 4168 + jp $3C3C + +RedsHouse1FTexts: ; 416B + dw RedsHouse1FText1,RedsHouse1FText2 + +RedsHouse1FText1: ; Mom + db 8 + ld a,[$D72E] + bit 3,a + jr nz,.heal\@ ; if player has received a Pokémon from Oak, heal team + ld hl,MomWakeUpText + call PrintText + jr .done\@ +.heal\@ + call MomHealPokemon +.done\@ + jp $24D7 + +MomWakeUpText: + TX_FAR _MomWakeUpText + db "@" + +MomHealPokemon: + ld hl,MomHealText1 + call PrintText + call GBFadeOut2 + call $3071 + ld a,7 + call Predef + ld a,$E8 + ld [$C0EE],a + call $23B1 ; play sound? +.next\@ + ld a,[$C026] + cp $E8 + jr z,.next\@ + ld a,[$D35B] + ld [$C0EE],a + call $23B1 + call GBFadeIn2 + ld hl,MomHealText2 + jp PrintText + +MomHealText1: + TX_FAR _MomHealText1 + db "@" +MomHealText2: + TX_FAR _MomHealText2 + db "@" + +RedsHouse1FText2: ; TV + db 8 + ld a,[$C109] + cp 4 + ld hl,TVWrongSideText + jr nz,.done\@ ; if player is not facing up + ld hl,StandByMeText +.done\@ + call PrintText + jp $24D7 + +StandByMeText: + TX_FAR _StandByMeText + db "@" + +TVWrongSideText: + TX_FAR _TVWrongSideText + db "@" + +RedsHouse1FObject: + db $0A ; border tile + + db 3 ; warps + db 7,2,0,$FF ; exit1 + db 7,3,0,$FF ; exit2 + db 1,7,0,$26 ; staircase + + db 1 ; signs + db 1,3,2 ; TV + + db 1 ; people + db $33,4+4,5+4,$FF,$D2,1 ; Mom + + ; warp-to + + dw $C6EF + 4 + (4 + 6) * (3) + 1 + db 7,2 + + dw $C6EF + 4 + (4 + 6) * (3) + 1 + db 7,3 + + dw $C6EF + 4 + (4 + 6) * (0) + 3 + db 1,7 + +RedsHouse1FBlocks: + INCBIN "maps/redshouse1f.blk" + +CeladonMart3_h: ; 0x48219 to 0x48225 (12 bytes) (bank=12) (id=124) + db $12 ; tileset + db $04, $0a ; dimensions (y, x) + dw CeladonMart3Blocks, CeladonMart3Texts, CeladonMart3Script ; blocks, texts, scripts + db $00 ; connections + + dw CeladonMart3Object ; objects + +CeladonMart3Script: ; 0x48225 + jp $3c3c +; 0x48228 + +CeladonMart3Texts: ; 0x48228 + dw CeladonMart3Text1, CeladonMart3Text2, CeladonMart3Text3, CeladonMart3Text4, CeladonMart3Text5, CeladonMart3Text6, CeladonMart3Text7, CeladonMart3Text8, CeladonMart3Text9, CeladonMart3Text10, CeladonMart3Text11, CeladonMart3Text12, CeladonMart3Text13, CeladonMart3Text14, CeladonMart3Text15, CeladonMart3Text16, CeladonMart3Text17 + +CeladonMart3Text1: ; 0x4824a + db $08 ; asm + ld a, [$d778] + bit 7, a + jr nz, .asm_a5463 ; 0x48250 + ld hl, $4278 + call PrintText + ld bc,(TM_18 << 8) | 1 + call $3e2e + jr nc, .asm_95f37 ; 0x4825e + ld hl, $d778 + set 7, [hl] + ld hl, $427d + jr .asm_81359 ; 0x48268 +.asm_95f37 ; 0x4826a + ld hl, $4288 + jr .asm_81359 ; 0x4826d +.asm_a5463 ; 0x4826f + ld hl, $4283 +.asm_81359 ; 0x48272 + call PrintText + jp $24d7 + +INCBIN "baserom.gbc",$48278,$15 + +CeladonMart3Text2: ; 0x4828d + TX_FAR _CeladonMart3Text2 + db $50 + +CeladonMart3Text3: ; 0x48292 + TX_FAR _CeladonMart3Text3 + db $50 + +CeladonMart3Text4: ; 0x48297 + TX_FAR _CeladonMart3Text4 + db $50 + +CeladonMart3Text5: ; 0x4829c + TX_FAR _CeladonMart3Text5 + db $50 + +CeladonMart3Text12 +CeladonMart3Text10: +CeladonMart3Text8: +CeladonMart3Text6: ; 0x482a1 + TX_FAR _CeladonMart3Text6 + db $50 + +CeladonMart3Text7: ; 0x482a6 + TX_FAR _CeladonMart3Text7 + db $50 + +CeladonMart3Text9: ; 0x482ab + TX_FAR _CeladonMart3Text9 + db $50 + +CeladonMart3Text11: ; 0x482b0 + TX_FAR _CeladonMart3Text11 + db $50 + +CeladonMart3Text13: ; 0x482b5 + TX_FAR _CeladonMart3Text13 + db $50 + +CeladonMart3Text14: ; 0x482ba + TX_FAR _CeladonMart3Text14 + db $50 + +CeladonMart3Text17: +CeladonMart3Text16: +CeladonMart3Text15: ; 0x482bf + TX_FAR _CeladonMart3Text15 + db $50 + +CeladonMart3Object: ; 0x482c4 (size=94) + db $f ; border tile + + db $3 ; warps + db $1, $c, $0, CELADON_MART_4 + db $1, $10, $1, CELADON_MART_2 + db $1, $1, $0, CELADON_MART_ELEVATOR + + db $c ; signs + db $4, $2, $6 ; CeladonMart3Text6 + db $4, $3, $7 ; CeladonMart3Text7 + db $4, $5, $8 ; CeladonMart3Text8 + db $4, $6, $9 ; CeladonMart3Text9 + db $6, $2, $a ; CeladonMart3Text10 + db $6, $3, $b ; CeladonMart3Text11 + db $6, $5, $c ; CeladonMart3Text12 + db $6, $6, $d ; CeladonMart3Text13 + db $1, $e, $e ; CeladonMart3Text14 + db $1, $4, $f ; CeladonMart3Text15 + db $1, $6, $10 ; CeladonMart3Text16 + db $1, $a, $11 ; CeladonMart3Text17 + + db $5 ; people + db SPRITE_MART_GUY, $5 + 4, $10 + 4, $ff, $ff, $1 ; person + db SPRITE_GAMEBOY_KID_COPY, $6 + 4, $b + 4, $ff, $d3, $2 ; person + db SPRITE_GAMEBOY_KID_COPY, $2 + 4, $7 + 4, $ff, $d0, $3 ; person + db SPRITE_GAMEBOY_KID_COPY, $2 + 4, $8 + 4, $ff, $d0, $4 ; person + db SPRITE_YOUNG_BOY, $5 + 4, $2 + 4, $ff, $d1, $5 ; person + + ; warp-to + EVENT_DISP $a, $1, $c ; CELADON_MART_4 + EVENT_DISP $a, $1, $10 ; CELADON_MART_2 + EVENT_DISP $a, $1, $1 ; CELADON_MART_ELEVATOR + +CeladonMart3Blocks: ; 40 + INCBIN "maps/celadonmart3.blk" + +CeladonMart4_h: ; 0x4834a to 0x48356 (12 bytes) (bank=12) (id=125) + db $12 ; tileset + db $04, $0a ; dimensions (y, x) + dw CeladonMart4Blocks, CeladonMart4Texts, CeladonMart4Script ; blocks, texts, scripts + db $00 ; connections + + dw CeladonMart4Object ; objects + +CeladonMart4Script: ; 0x48356 + jp $3c3c +; 0x48359 + +CeladonMart4Texts: ; 0x48359 + dw CeladonMart4Text1, CeladonMart4Text2, CeladonMart4Text3, CeladonMart4Text4 + +CeladonMart4Text2: ; 0x48361 + TX_FAR _CeladonMart4Text2 + db $50 + +CeladonMart4Text3: ; 0x48366 + TX_FAR _CeladonMart4Text3 + db $50 + +CeladonMart4Text4: ; 0x4836b + TX_FAR _CeladonMart4Text4 + db $50 + +CeladonMart4Object: ; 0x48370 (size=49) + db $f ; border tile + + db $3 ; warps + db $1, $c, $0, CELADON_MART_3 + db $1, $10, $1, CELADON_MART_5 + db $1, $1, $0, CELADON_MART_ELEVATOR + + db $1 ; signs + db $1, $e, $4 ; CeladonMart4Text4 + + db $3 ; people + db SPRITE_MART_GUY, $7 + 4, $5 + 4, $ff, $ff, $1 ; person + db SPRITE_BLACK_HAIR_BOY_2, $5 + 4, $f + 4, $fe, $2, $2 ; person + db SPRITE_BUG_CATCHER, $2 + 4, $5 + 4, $fe, $2, $3 ; person + + ; warp-to + EVENT_DISP $a, $1, $c ; CELADON_MART_3 + EVENT_DISP $a, $1, $10 ; CELADON_MART_5 + EVENT_DISP $a, $1, $1 ; CELADON_MART_ELEVATOR + +CeladonMart4Blocks: ; 40 + INCBIN "maps/celadonmart4.blk" + +CeladonMartRoof_h: ; 0x483c9 to 0x483d5 (12 bytes) (bank=12) (id=126) + db $12 ; tileset + db $04, $0a ; dimensions (y, x) + dw CeladonMartRoofBlocks, $455b, CeladonMartRoofScript ; blocks, texts, scripts + db $00 ; connections + + dw CeladonMartRoofObject ; objects + +CeladonMartRoofScript: ; 0x483d5 + jp $3c3c +; 0x483d8 + +INCBIN "baserom.gbc",$483d8,$18f + +CeladonMartRoofText1: ; 0x48567 + TX_FAR _CeladonMartRoofText1 + db $50 + +CeladonMartRoofText2: ; 0x4856c + db $08 ; asm + call $43d8 + ld a, [$cd37] + and a + jr z, .asm_914b9 ; 0x48574 + ld a, $1 + ld [$cc3c], a + ld hl, $459d + call PrintText + call $35ec + ld a, [$cc26] + and a + jr nz, .asm_05aa4 ; 0x48588 + call $440c + jr .asm_05aa4 ; 0x4858d +.asm_914b9 ; 0x4858f + ld hl, $4598 + call PrintText +.asm_05aa4 ; 0x48595 + jp $24d7 + +INCBIN "baserom.gbc",$48598,$b + +CeladonMartRoofText6: ; 0x485a3 + TX_FAR _CeladonMartRoofText6 + db $50 + +CeladonMartRoofObject: ; 0x485a8 (size=36) + db $42 ; border tile + + db $1 ; warps + db $2, $f, $0, CELADON_MART_5 + + db $4 ; signs + db $1, $a, $3 ; CeladonMartRoofText3 + db $1, $b, $4 ; CeladonMartRoofText4 + db $2, $c, $5 ; CeladonMartRoofText5 + db $2, $d, $6 ; CeladonMartRoofText6 + + db $2 ; people + db SPRITE_BLACK_HAIR_BOY_2, $4 + 4, $a + 4, $ff, $d2, $1 ; person + db SPRITE_LITTLE_GIRL, $5 + 4, $5 + 4, $fe, $0, $2 ; person + + ; warp-to + EVENT_DISP $a, $2, $f ; CELADON_MART_5 + +CeladonMartRoofBlocks: ; 40 + INCBIN "maps/celadonmart5.blk" + +CeladonMartElevator_h: ; 0x485f4 to 0x48600 (12 bytes) (bank=12) (id=127) + db $12 ; tileset + db $02, $02 ; dimensions (y, x) + dw CeladonMartElevatorBlocks, CeladonMartElevatorTexts, CeladonMartElevatorScript ; blocks, texts, scripts + db $00 ; connections + + dw CeladonMartElevatorObject ; objects + +CeladonMartElevatorScript: ; 0x48600 + ld hl, $d126 + bit 5, [hl] + res 5, [hl] + push hl + call nz, $461c + pop hl + bit 7, [hl] + res 7, [hl] + call nz, $4654 + xor a + ld [$cf0c], a + inc a + ld [$cc3c], a + ret +; 0x4861c + +INCBIN "baserom.gbc",$4861c,$40 + +CeladonMartElevatorTexts: ; 0x4865c + dw CeladonMartElevatorText1 + +CeladonMartElevatorText1: ; 0x4865e + db $08 ; asm + call $4631 + ld hl, $464a + ld a, $61 + call Predef + jp $24d7 + +CeladonMartElevatorObject: ; 0x4866d (size=23) + db $f ; border tile + + db $2 ; warps + db $3, $1, $5, CELADON_MART_1 + db $3, $2, $5, CELADON_MART_1 + + db $1 ; signs + db $0, $3, $1 ; CeladonMartElevatorText1 + + db $0 ; people + + ; warp-to + EVENT_DISP $2, $3, $1 ; CELADON_MART_1 + EVENT_DISP $2, $3, $2 ; CELADON_MART_1 + +CeladonMartElevatorBlocks: ; 4 + INCBIN "maps/celadonmart6.blk" + +CeladonMansion1_h: ; 0x48688 to 0x48694 (12 bytes) (bank=12) (id=128) + db $13 ; tileset + db $06, $04 ; dimensions (y, x) + dw CeladonMansion1Blocks, CeladonMansion1Texts, CeladonMansion1Script ; blocks, texts, scripts + db $00 ; connections + + dw CeladonMansion1Object ; objects + +CeladonMansion1Script: ; 0x48694 + jp $3c3c +; 0x48697 + +CeladonMansion1Texts: ; 0x48697 + dw CeladonMansion1Text1, CeladonMansion1Text2, CeladonMansion1Text3, CeladonMansion1Text4, CeladonMansion1Text5 + +;0x486a1 + call $13d0 + jp TextScriptEnd +; 0x486a7 + +CeladonMansion1Text1: ; 0x486a7 + TX_FAR _CeladonMansion1Text1 + db $08 ; asm + ld a, $4d + jp $46a1 + +CeladonMansion1Text2: ; 0x486b1 + TX_FAR _CeladonMansion1Text2 + db $50 + +CeladonMansion1Text3: ; 0x486b6 + TX_FAR _CeladonMansion1Text3 + db $8 + ld a, $4 + jp $46a1 +; 0x486c0 + +CeladonMansion1Text4: ; 0x486c0 + TX_FAR _CeladonMansion1Text4 + db $8 + ld a, $f + jp $46a1 +; 0x486ca + +CeladonMansion1Text5: ; 0x486ca + TX_FAR _CeladonMansion1Text5 + db $50 + +CeladonMansion1Object: ; 0x486cf (size=71) + db $f ; border tile + + db $5 ; warps + db $b, $4, $2, $ff + db $b, $5, $2, $ff + db $0, $4, $4, $ff + db $1, $7, $1, CELADON_MANSION_2 + db $1, $2, $2, CELADON_MANSION_2 + + db $1 ; signs + db $9, $4, $5 ; CeladonMansion1Text5 + + db $4 ; people + db SPRITE_SLOWBRO, $5 + 4, $0 + 4, $ff, $d3, $1 ; person + db SPRITE_OLD_MEDIUM_WOMAN, $5 + 4, $1 + 4, $ff, $d0, $2 ; person + db SPRITE_CLEFAIRY, $8 + 4, $1 + 4, $fe, $2, $3 ; person + db SPRITE_SLOWBRO, $4 + 4, $4 + 4, $fe, $1, $4 ; person + + ; warp-to + EVENT_DISP $4, $b, $4 + EVENT_DISP $4, $b, $5 + EVENT_DISP $4, $0, $4 + EVENT_DISP $4, $1, $7 ; CELADON_MANSION_2 + EVENT_DISP $4, $1, $2 ; CELADON_MANSION_2 + +CeladonMansion1Blocks: ; 24 + INCBIN "maps/celadonmansion1.blk" + +CeladonMansion2_h: ; 0x4872e to 0x4873a (12 bytes) (bank=12) (id=129) + db $13 ; tileset + db $06, $04 ; dimensions (y, x) + dw CeladonMansion2Blocks, CeladonMansion2Texts, CeladonMansion2Script ; blocks, texts, scripts + db $00 ; connections + + dw CeladonMansion2Object ; objects + +CeladonMansion2Script: ; 0x4873a + call $3c3c + ret +; 0x4873e + +CeladonMansion2Texts: ; 0x4873e + dw CeladonMansion2Text1 + +CeladonMansion2Text1: ; 0x48740 + TX_FAR _CeladonMansion2Text1 + db $50 + +CeladonMansion2Object: ; 0x48745 (size=39) + db $f ; border tile + + db $4 ; warps + db $1, $6, $0, CELADON_MANSION_3 + db $1, $7, $3, CELADON_MANSION_1 + db $1, $2, $4, CELADON_MANSION_1 + db $1, $4, $3, CELADON_MANSION_3 + + db $1 ; signs + db $9, $4, $1 ; CeladonMansion2Text1 + + db $0 ; people + + ; warp-to + EVENT_DISP $4, $1, $6 ; CELADON_MANSION_3 + EVENT_DISP $4, $1, $7 ; CELADON_MANSION_1 + EVENT_DISP $4, $1, $2 ; CELADON_MANSION_1 + EVENT_DISP $4, $1, $4 ; CELADON_MANSION_3 + +CeladonMansion2Blocks: ; 24 + INCBIN "maps/celadonmansion2.blk" + +CeladonMansion3_h: ; 0x48784 to 0x48790 (12 bytes) (bank=12) (id=130) + db $13 ; tileset + db $06, $04 ; dimensions (y, x) + dw CeladonMansion3Blocks, CeladonMansion3Texts, CeladonMansion3Script ; blocks, texts, scripts + db $00 ; connections + + dw CeladonMansion3Object ; objects + +CeladonMansion3Script: ; 0x48790 + jp $3c3c +; 0x48793 + +CeladonMansion3Texts: ; 0x48793 + dw CeladonMansion3Text1, CeladonMansion3Text2, CeladonMansion3Text3, CeladonMansion3Text4, CeladonMansion3Text5, CeladonMansion3Text6, CeladonMansion3Text7, CeladonMansion3Text8 + +CeladonMansion3Text1: ; 0x487a3 + TX_FAR _CeladonMansion3Text1 + db $50 + +CeladonMansion3Text2: ; 0x487a8 + TX_FAR _CeladonMansion3Text2 + db $50 + +CeladonMansion3Text3: ; 0x487ad + TX_FAR _CeladonMansion3Text3 + db $50 + +CeladonMansion3Text4: ; 0x487b2 + db $08 ; asm + ld hl, $d2f7 + ld b, $13 + call $2b7f + ld a, [$d11e] + cp $96 + jr nc, .asm_f03d0 ; 0x487c0 + ld hl, $47d0 + jr .asm_c13f0 ; 0x487c5 +.asm_f03d0 ; 0x487c7 + ld hl, $47d5 +.asm_c13f0 ; 0x487ca + call PrintText + jp $24d7 + +INCBIN "baserom.gbc",$487d0,$1b + +CeladonMansion3Text5: ; 0x487eb + TX_FAR _CeladonMansion3Text5 + db $50 + +CeladonMansion3Text6: ; 0x487f0 + TX_FAR _CeladonMansion3Text6 + db $50 + +CeladonMansion3Text7: ; 0x487f5 + TX_FAR _CeladonMansion3Text7 + db $50 + +CeladonMansion3Text8: ; 0x487fa + TX_FAR _CeladonMansion3Text8 + db $50 + +CeladonMansion3Object: ; 0x487ff (size=72) + db $f ; border tile + + db $4 ; warps + db $1, $6, $0, CELADON_MANSION_2 + db $1, $7, $0, CELADON_MANSION_4 + db $1, $2, $1, CELADON_MANSION_4 + db $1, $4, $3, CELADON_MANSION_2 + + db $4 ; signs + db $3, $1, $5 ; CeladonMansion3Text5 + db $3, $4, $6 ; CeladonMansion3Text6 + db $6, $1, $7 ; CeladonMansion3Text7 + db $9, $4, $8 ; CeladonMansion3Text8 + + db $4 ; people + db SPRITE_BIKE_SHOP_GUY, $4 + 4, $0 + 4, $ff, $d1, $1 ; person + db SPRITE_MART_GUY, $4 + 4, $3 + 4, $ff, $d1, $2 ; person + db SPRITE_BLACK_HAIR_BOY_2, $7 + 4, $0 + 4, $ff, $d1, $3 ; person + db SPRITE_LAPRAS_GIVER, $3 + 4, $2 + 4, $ff, $ff, $4 ; person + + ; warp-to + EVENT_DISP $4, $1, $6 ; CELADON_MANSION_2 + EVENT_DISP $4, $1, $7 ; CELADON_MANSION_4 + EVENT_DISP $4, $1, $2 ; CELADON_MANSION_4 + EVENT_DISP $4, $1, $4 ; CELADON_MANSION_2 + +CeladonMansion3Blocks: ; 24 + INCBIN "maps/celadonmansion3.blk" + +CeladonMansion4_h: ; 0x4885f to 0x4886b (12 bytes) (bank=12) (id=131) + db $13 ; tileset + db $06, $04 ; dimensions (y, x) + dw CeladonMansion4Blocks, CeladonMansion4Texts, CeladonMansion4Script ; blocks, texts, scripts + db $00 ; connections + + dw CeladonMansion4Object ; objects + +CeladonMansion4Script: ; 0x4886b + jp $3c3c +; 0x4886e + +CeladonMansion4Texts: ; 0x4886e + dw CeladonMansion4Text1 + +CeladonMansion4Text1: ; 0x48870 + TX_FAR _CeladonMansion4Text1 + db $50 + +CeladonMansion4Object: ; 0x48875 (size=31) + db $9 ; border tile + + db $3 ; warps + db $1, $6, $1, CELADON_MANSION_3 + db $1, $2, $2, CELADON_MANSION_3 + db $7, $2, $0, CELADON_MANSION_5 + + db $1 ; signs + db $7, $3, $1 ; CeladonMansion4Text1 + + db $0 ; people + + ; warp-to + EVENT_DISP $4, $1, $6 ; CELADON_MANSION_3 + EVENT_DISP $4, $1, $2 ; CELADON_MANSION_3 + EVENT_DISP $4, $7, $2 ; CELADON_MANSION_5 + +CeladonMansion4Blocks: ; 24 + INCBIN "maps/celadonmansion4.blk" + +CeladonPokecenter_h: ; 0x488ac to 0x488b8 (12 bytes) (bank=12) (id=133) + db $06 ; tileset + db $04, $07 ; dimensions (y, x) + dw $40ab, $48be, CeladonPokecenterScript ; blocks, texts, scripts + db $00 ; connections + + dw CeladonPokecenterObject ; objects + +CeladonPokecenterScript: ; 0x488b8 + call $22fa + jp $3c3c +; 0x488be + +INCBIN "baserom.gbc",$488be,$8 + +CeladonPokecenterText4: + db $f6, $ff + +CeladonPokecenterText2: ; _CeladonPokecenterText2 +CeladonPokecenterText1: ; 0x488c8 + TX_FAR _CeladonPokecenterText1 + +INCBIN "baserom.gbc",$488cc,$488cd - $488cc + +CeladonPokecenterText3: ; 0x488cd + TX_FAR _CeladonPokecenterText3 + db $50 + +CeladonPokecenterObject: ; 0x488d2 (size=44) + db $0 ; border tile + + db $2 ; warps + db $7, $3, $5, $ff + db $7, $4, $5, $ff + + db $0 ; signs + + db $4 ; people + db SPRITE_NURSE, $1 + 4, $3 + 4, $ff, $d0, $1 ; person + db SPRITE_GENTLEMAN, $3 + 4, $7 + 4, $fe, $2, $2 ; person + db SPRITE_FOULARD_WOMAN, $5 + 4, $a + 4, $fe, $0, $3 ; person + db SPRITE_CABLE_CLUB_WOMAN, $2 + 4, $b + 4, $ff, $d0, $4 ; person + + ; warp-to + EVENT_DISP $7, $7, $3 + EVENT_DISP $7, $7, $4 + +CeladonGym_h: ; 0x488fe to 0x4890a (12 bytes) (bank=12) (id=134) + db $07 ; tileset + db $09, $05 ; dimensions (y, x) + dw CeladonGymBlocks, CeladonGymTexts, CeladonGymScript ; blocks, texts, scripts + db $00 ; connections + + dw CeladonGymObject ; objects + +CeladonGymScript: ; 0x4890a + ld hl, $d126 + bit 6, [hl] + res 6, [hl] + call nz, $4927 + call $3c3c + ld hl, $49bc + ld de, $494e + ld a, [$d5ff] + call $3160 + ld [$d5ff], a + ret +; 0x48927 + +INCBIN "baserom.gbc",$48927,$7f + +CeladonGymTexts: ; 0x489a6 + dw CeladonGymText1, CeladonGymText2, CeladonGymText3, CeladonGymText4, CeladonGymText5, CeladonGymText6, CeladonGymText7, CeladonGymText8, CeladonGymText9, CeladonGymText10, CeladonGymText11 + +INCBIN "baserom.gbc",$489bc,$55 + +CeladonGymText1: ; 0x48a11 + db $08 ; asm + ld a, [$d77c] + bit 1, a + jr z, .asm_16064 ; 0x48a17 + bit 0, a + jr nz, .asm_3b22c ; 0x48a1b + call z, $4963 + call $30b6 + jr .asm_96252 ; 0x48a23 +.asm_3b22c ; 0x48a25 + ld hl, $4a68 + call PrintText + jr .asm_96252 ; 0x48a2b +.asm_16064 ; 0x48a2d + ld hl, $4a5e + call PrintText + ld hl, $d72d + set 6, [hl] + set 7, [hl] + ld hl, $4a63 + ld de, $4a63 + call $3354 + ldh a, [$8c] + ld [$cf13], a + call $336a + call $32d7 + ld a, $4 + ld [$d05c], a + ld a, $3 + ld [$d5ff], a + ld [$da39], a +.asm_96252 ; 0x48a5b + jp $24d7 + +INCBIN "baserom.gbc",$48a5e,$48a6d - $48a5e + +CeladonGymText9: ; 0x48a6d +INCBIN "baserom.gbc",$48a6d,$5 + +CeladonGymText10: ; 0x48a72 +INCBIN "baserom.gbc",$48a72,$4 +db $0b + +INCBIN "baserom.gbc",$48a77,$48a7c - $48a77 + +CeladonGymText11: ; 0x48a7c +INCBIN "baserom.gbc",$48a7c,$5 + +CeladonGymText2: ; 0x48a81 + db $08 ; asm + ld hl, $49bc + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$48a8b,$48a9a - $48a8b + +CeladonGymText3: ; 0x48a9a + db $08 ; asm + ld hl, $49c8 + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$48aa4,$48ab3 - $48aa4 + +CeladonGymText4: ; 0x48ab3 + db $08 ; asm + ld hl, $49d4 + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$48abd,$48acc - $48abd + +CeladonGymText5: ; 0x48acc + db $08 ; asm + ld hl, $49e0 + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$48ad6,$48ae5 - $48ad6 + +CeladonGymText6: ; 0x48ae5 + db $08 ; asm + ld hl, $49ec + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$48aef,$48afe - $48aef + +CeladonGymText7: ; 0x48afe + db $08 ; asm + ld hl, $49f8 + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$48b08,$48b17 - $48b08 + +CeladonGymText8: ; 0x48b17 + db $08 ; asm + ld hl, $4a04 + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$48b21,$f + +CeladonGymObject: ; 0x48b30 (size=84) + db $3 ; border tile + + db $2 ; warps + db $11, $4, $6, $ff + db $11, $5, $6, $ff + + db $0 ; signs + + db $8 ; people + db SPRITE_ERIKA, $3 + 4, $4 + 4, $ff, $d0, $41, ERIKA + $C8, $1 ; trainer + db SPRITE_LASS, $b + 4, $2 + 4, $ff, $d3, $42, LASS + $C8, $11 ; trainer + db SPRITE_FOULARD_WOMAN, $a + 4, $7 + 4, $ff, $d2, $43, BEAUTY + $C8, $1 ; trainer + db SPRITE_LASS, $5 + 4, $9 + 4, $ff, $d0, $44, JR__TRAINER_F + $C8, $b ; trainer + db SPRITE_FOULARD_WOMAN, $5 + 4, $1 + 4, $ff, $d0, $45, BEAUTY + $C8, $2 ; trainer + db SPRITE_LASS, $3 + 4, $6 + 4, $ff, $d0, $46, LASS + $C8, $12 ; trainer + db SPRITE_FOULARD_WOMAN, $3 + 4, $3 + 4, $ff, $d0, $47, BEAUTY + $C8, $3 ; trainer + db SPRITE_LASS, $3 + 4, $5 + 4, $ff, $d0, $48, COOLTRAINER_F + $C8, $1 ; trainer + + ; warp-to + EVENT_DISP $5, $11, $4 + EVENT_DISP $5, $11, $5 + +CeladonGymBlocks: ; 45 + INCBIN "maps/celadongym.blk" + +CeladonGameCorner_h: ; 0x48bb1 to 0x48bbd (12 bytes) (bank=12) (id=135) + db $12 ; tileset + db $09, $0a ; dimensions (y, x) + dw CeladonGameCornerBlocks, CeladonGameCornerTexts, CeladonGameCornerScript ; blocks, texts, scripts + db $00 ; connections + + dw CeladonGameCornerObject ; objects + +CeladonGameCornerScript: ; 0x48bbd + call $4bcf + call $4bec + call $3c3c + ld hl, $4c12 + ld a, [$d65f] + jp $3d97 +; 0x48bcf + +INCBIN "baserom.gbc",$48bcf,$48c12 - $48bcf + +CeladonGameCornerScripts: ; 0x48c12 + dw CeladonGameCornerScript0 + +INCBIN "baserom.gbc",$48c14,$4 + +CeladonGameCornerScript0: ; 0x48c18 + ret +; 0x48c19 + +INCBIN "baserom.gbc",$48c19,$71 + +CeladonGameCornerTexts: ; 0x48c8a + dw CeladonGameCornerText1, CeladonGameCornerText2, CeladonGameCornerText3, CeladonGameCornerText4, CeladonGameCornerText5, CeladonGameCornerText6, CeladonGameCornerText7, CeladonGameCornerText8, CeladonGameCornerText9, CeladonGameCornerText10, CeladonGameCornerText11, CeladonGameCornerText12, CeladonGameCornerText13 + +CeladonGameCornerText1: ; 0x48ca4 + TX_FAR _CeladonGameCornerText1 + db $50 + +CeladonGameCornerText2: ; 0x48ca9 + db $08 ; asm + call $4f1e + ld hl, $4d22 + call PrintText + call $35ec + ld a, [$cc26] + and a + jr nz, .asm_c650b ; 0x48cba + ld b,COIN_CASE + call $3493 + jr z, .asm_ed086 ; 0x48cc1 + call $4f95 + jr nc, .asm_31338 ; 0x48cc6 + xor a + ldh [$9f], a + ldh [$a1], a + ld a, $10 + ldh [$a0], a + call $35a6 + jr nc, .asm_b6ef0 ; 0x48cd4 + ld hl, $4d31 + jr .asm_e2afd ; 0x48cd9 +.asm_b6ef0 ; 0x48cdb + xor a + ldh [$9f], a + ldh [$a1], a + ld a, $10 + ldh [$a0], a + ld hl, $ffa1 + ld de, $d349 + ld c, $3 + ld a, $c + call Predef + xor a + ldh [$9f], a + ldh [$a0], a + ld a, $50 + ldh [$a1], a + ld de, $d5a5 + ld hl, $ffa1 + ld c, $2 + ld a, $b + call Predef + call $4f1e + ld hl, $4d27 + jr .asm_e2afd ; 0x48d0d +.asm_c650b ; 0x48d0f + ld hl, $4d2c + jr .asm_e2afd ; 0x48d12 +.asm_31338 ; 0x48d14 + ld hl, $4d36 + jr .asm_e2afd ; 0x48d17 +.asm_ed086 ; 0x48d19 + ld hl, $4d3b +.asm_e2afd ; 0x48d1c + call PrintText + jp $24d7 + +INCBIN "baserom.gbc",$48d22,$1e + +CeladonGameCornerText3: ; 0x48d40 + TX_FAR _CeladonGameCornerText3 + db $50 + +CeladonGameCornerText4: ; 0x48d45 + TX_FAR _CeladonGameCornerText4 + db $50 + +CeladonGameCornerText5: ; 0x48d4a + db $08 ; asm + ld a, [$d77e] + bit 2, a + jr nz, .asm_d0957 ; 0x48d50 + ld hl, $4d9c + call PrintText + ld b,COIN_CASE + call $3493 + jr z, .asm_5aef9 ; 0x48d5d + call $4f95 + jr nc, .asm_98546 ; 0x48d62 + xor a + ldh [$9f], a + ldh [$a0], a + ld a, $10 + ldh [$a1], a + ld de, $d5a5 + ld hl, $ffa1 + ld c, $2 + ld a, $b + call Predef + ld hl, $d77e + set 2, [hl] + ld a, $1 + ld [$cc3c], a + ld hl, $4da1 + jr .asm_c7d1a ; 0x48d87 +.asm_d0957 ; 0x48d89 + ld hl, $4dac + jr .asm_c7d1a ; 0x48d8c +.asm_98546 ; 0x48d8e + ld hl, $4da7 + jr .asm_c7d1a ; 0x48d91 +.asm_5aef9 ; 0x48d93 + ld hl, $4f19 +.asm_c7d1a ; 0x48d96 + call PrintText + jp $24d7 + +INCBIN "baserom.gbc",$48d9c,$15 + +CeladonGameCornerText6: ; 0x48db1 + TX_FAR _CeladonGameCornerText6 + db $50 + +CeladonGameCornerText7: ; 0x48db6 + db $08 ; asm + ld a, [$d77c] + bit 1, a + ld hl, $4dca + jr z, .asm_be3fd ; 0x48dbf + ld hl, $4dcf +.asm_be3fd ; 0x48dc4 + call PrintText + jp $24d7 + +INCBIN "baserom.gbc",$48dca,$a + +CeladonGameCornerText8: ; 0x48dd4 + TX_FAR _CeladonGameCornerText8 + db $50 + +CeladonGameCornerText9: ; 0x48dd9 + db $08 ; asm + ld a, [$d77e] + bit 4, a + jr nz, .asm_ed8bc ; 0x48ddf + ld hl, $4e26 + call PrintText + ld b,COIN_CASE + call $3493 + jr z, .asm_df794 ; 0x48dec + call $4f95 + jr nc, .asm_f17c3 ; 0x48df1 + xor a + ldh [$9f], a + ldh [$a0], a + ld a, $20 + ldh [$a1], a + ld de, $d5a5 + ld hl, $ffa1 + ld c, $2 + ld a, $b + call Predef + ld hl, $d77e + set 4, [hl] + ld hl, $4e2b + jr .asm_0ddc2 ; 0x48e11 +.asm_ed8bc ; 0x48e13 + ld hl, $4e36 + jr .asm_0ddc2 ; 0x48e16 +.asm_f17c3 ; 0x48e18 + ld hl, $4e31 + jr .asm_0ddc2 ; 0x48e1b +.asm_df794 ; 0x48e1d + ld hl, $4f19 +.asm_0ddc2 ; 0x48e20 + call PrintText + jp $24d7 + +INCBIN "baserom.gbc",$48e26,$48e3b - $48e26 + +CeladonGameCornerText10: ; 0x48e3b + db $08 ; asm + ld a, [$d77e] + bit 3, a + jr nz, .asm_ff080 ; 0x48e41 + ld hl, $4e88 + call PrintText + ld b,COIN_CASE + call $3493 + jr z, .asm_4fb0c ; 0x48e4e + call $4f95 + jr z, .asm_9505a ; 0x48e53 + xor a + ldh [$9f], a + ldh [$a0], a + ld a, $20 + ldh [$a1], a + ld de, $d5a5 + ld hl, $ffa1 + ld c, $2 + ld a, $b + call Predef + ld hl, $d77e + set 3, [hl] + ld hl, $4e8d + jr .asm_78d65 ; 0x48e73 +.asm_ff080 ; 0x48e75 + ld hl, $4e98 + jr .asm_78d65 ; 0x48e78 +.asm_9505a ; 0x48e7a + ld hl, $4e93 + jr .asm_78d65 ; 0x48e7d +.asm_4fb0c ; 0x48e7f + ld hl, $4f19 +.asm_78d65 ; 0x48e82 + call PrintText + jp $24d7 + +INCBIN "baserom.gbc",$48e88,$48e9d - $48e88 + +CeladonGameCornerText11: ; 0x48e9d + db $08 ; asm + ld hl, $4ece + call PrintText + ld hl, $d72d + set 6, [hl] + set 7, [hl] + ld hl, $4ed3 + ld de, $4ed3 + call $3354 + ldh a, [$8c] + ld [$cf13], a + call $336a + call $32d7 + xor a + ldh [$b4], a + ldh [$b3], a + ldh [$b2], a + ld a, $1 + ld [$d65f], a + jp $24d7 + +INCBIN "baserom.gbc",$48ece,$48ed8 - $48ece + +CeladonGameCornerText13: ; 0x48ed8 +INCBIN "baserom.gbc",$48ed8,5 + +CeladonGameCornerText12: ; 0x48edd + db $08 ; asm + ld a, $1 + ld [$cc3c], a + ld hl, $4f09 + call PrintText + call $3748 + ld a, $ad + call $23b1 + call $3748 + ld hl, $d77e + set 1, [hl] + ld a, $43 + ld [$d09f], a + ld bc, $0208 + ld a, $17 + call Predef + jp $24d7 + +INCBIN "baserom.gbc",$48f09,$97 + +CeladonGameCornerObject: ; 0x48fa0 (size=99) + db $f ; border tile + + db $3 ; warps + db $11, $f, $7, $ff + db $11, $10, $7, $ff + db $4, $11, $1, ROCKET_HIDEOUT_1 + + db $1 ; signs + db $4, $9, $c ; CeladonGameCornerText12 + + db $b ; people + db SPRITE_FOULARD_WOMAN, $6 + 4, $2 + 4, $ff, $d0, $1 ; person + db SPRITE_MART_GUY, $6 + 4, $5 + 4, $ff, $d0, $2 ; person + db SPRITE_FAT_BALD_GUY, $a + 4, $2 + 4, $ff, $d2, $3 ; person + db SPRITE_FOULARD_WOMAN, $d + 4, $2 + 4, $ff, $d2, $4 ; person + db SPRITE_FISHER, $b + 4, $5 + 4, $ff, $d3, $5 ; person + db SPRITE_MOM_GEISHA, $b + 4, $8 + 4, $ff, $d2, $6 ; person + db SPRITE_GYM_HELPER, $e + 4, $8 + 4, $ff, $d2, $7 ; person + db SPRITE_GAMBLER, $f + 4, $b + 4, $ff, $d3, $8 ; person + db SPRITE_MART_GUY, $b + 4, $e + 4, $ff, $d2, $9 ; person + db SPRITE_GENTLEMAN, $d + 4, $11 + 4, $ff, $d3, $a ; person + db SPRITE_ROCKET, $5 + 4, $9 + 4, $ff, $d1, $4b, ROCKET + $C8, $7 ; trainer + + ; warp-to + EVENT_DISP $a, $11, $f + EVENT_DISP $a, $11, $10 + EVENT_DISP $a, $4, $11 ; ROCKET_HIDEOUT_1 + +CeladonGameCornerBlocks: ; 90 + INCBIN "maps/celadongamecorner.blk" + +CeladonMart5_h: ; 0x4905d to 0x49069 (12 bytes) (bank=12) (id=136) + db $12 ; tileset + db $04, $0a ; dimensions (y, x) + dw CeladonMart5Blocks, CeladonMart5Texts, CeladonMart5Script ; blocks, texts, scripts + db $00 ; connections + + dw CeladonMart5Object ; objects + +CeladonMart5Script: ; 0x49069 + jp $3c3c +; 0x4906c + +CeladonMart5Texts: ; 0x4906c + dw CeladonMart5Text1, CeladonMart5Text2, CeladonMart5Text3, CeladonMart5Text4, CeladonMart5Text5 + +CeladonMart5Text1: ; 0x49076 + TX_FAR _CeladonMart5Text1 + db $50 + +CeladonMart5Text2: ; 0x4907b + TX_FAR _CeladonMart5Text2 + db $50 + +CeladonMart5Text5: ; 0x49080 + TX_FAR _CeladonMart5Text5 + db $50 + +CeladonMart5Object: ; 0x49085 (size=55) + db $f ; border tile + + db $3 ; warps + db $1, $c, $0, CELADON_MART_ROOF + db $1, $10, $1, CELADON_MART_4 + db $1, $1, $0, CELADON_MART_ELEVATOR + + db $1 ; signs + db $1, $e, $5 ; CeladonMart5Text5 + + db $4 ; people + db SPRITE_GENTLEMAN, $5 + 4, $e + 4, $fe, $1, $1 ; person + db SPRITE_SAILOR, $6 + 4, $2 + 4, $ff, $ff, $2 ; person + db SPRITE_MART_GUY, $3 + 4, $5 + 4, $ff, $d0, $3 ; person + db SPRITE_MART_GUY, $3 + 4, $6 + 4, $ff, $d0, $4 ; person + + ; warp-to + EVENT_DISP $a, $1, $c ; CELADON_MART_ROOF + EVENT_DISP $a, $1, $10 ; CELADON_MART_4 + EVENT_DISP $a, $1, $1 ; CELADON_MART_ELEVATOR + +CeladonMart5Blocks: ; 40 + INCBIN "maps/celadonhouse.blk" + +CeladonPrizeRoom_h: ; 0x490e4 to 0x490f0 (12 bytes) (bank=12) (id=137) + db $12 ; tileset + db $04, $05 ; dimensions (y, x) + dw CeladonPrizeRoomBlocks, $50f3, $50f0 ; blocks, texts, scripts + db $00 ; connections + + dw CeladonPrizeRoomObject ; objects + +CeladonPrizeRoomScript: ; 0x490f0 + jp $3c3c +; 0x490f3 + +INCBIN "baserom.gbc",$490f3,$a + +CeladonPrizeRoomText1: ; 0x490fd + TX_FAR _CeladonPrizeRoomText1 + db $50 + +CeladonPrizeRoomText2: ; 0x49102 + TX_FAR _CeladonPrizeRoomText2 + db $50 + +INCBIN "baserom.gbc",$49107,$1 + +CeladonPrizeRoomObject: ; 0x49108 (size=41) + db $f ; border tile + + db $2 ; warps + db $7, $4, $9, $ff + db $7, $5, $9, $ff + + db $3 ; signs + db $2, $2, $3 ; CeladonPrizeRoomText3 + db $2, $4, $4 ; CeladonPrizeRoomText4 + db $2, $6, $5 ; CeladonPrizeRoomText5 + + db $2 ; people + db SPRITE_BALDING_GUY, $4 + 4, $1 + 4, $ff, $ff, $1 ; person + db SPRITE_GAMBLER, $3 + 4, $7 + 4, $fe, $2, $2 ; person + + ; warp-to + EVENT_DISP $5, $7, $4 + EVENT_DISP $5, $7, $5 + +CeladonPrizeRoomBlocks: ; 20 + INCBIN "maps/celadonprizeroom.blk" + +CeladonDiner_h: ; 0x49145 to 0x49151 (12 bytes) (bank=12) (id=138) + db $12 ; tileset + db $04, $05 ; dimensions (y, x) + dw CeladonDinerBlocks, CeladonDinerTexts, CeladonDinerScript ; blocks, texts, scripts + db $00 ; connections + + dw CeladonDinerObject ; objects + +CeladonDinerScript: ; 0x49151 + call $3c3c + ret +; 0x49155 + +CeladonDinerTexts: ; 0x49155 + dw CeladonDinerText1, CeladonDinerText2, CeladonDinerText3, CeladonDinerText4, CeladonDinerText5 + +CeladonDinerText1: ; 0x4915f + TX_FAR _CeladonDinerText1 + db $50 + +CeladonDinerText2: ; 0x49164 + TX_FAR _CeladonDinerText2 + db $50 + +CeladonDinerText3: ; 0x49169 + TX_FAR _CeladonDinerText3 + db $50 + +CeladonDinerText4: ; 0x4916e + TX_FAR _CeladonDinerText4 + db $50 + +CeladonDinerText5: ; 0x49173 + db $08 ; asm + ld a, [$d783] + bit 0, a + jr nz, .asm_eb14d ; 0x49179 + ld hl, $51a7 + call PrintText + ld bc,(COIN_CASE << 8) | 1 + call $3e2e + jr nc, .asm_78e93 ; 0x49187 + ld hl, $d783 + set 0, [hl] + ld hl, $51ac + call PrintText + jr .asm_68b61 ; 0x49194 +.asm_78e93 ; 0x49196 + ld hl, $51b2 + call PrintText + jr .asm_68b61 ; 0x4919c +.asm_eb14d ; 0x4919e + ld hl, $51b7 + call PrintText +.asm_68b61 ; 0x491a4 + jp $24d7 + +INCBIN "baserom.gbc",$491a7,$15 + +CeladonDinerObject: ; 0x491bc (size=50) + db $f ; border tile + + db $2 ; warps + db $7, $3, $a, $ff + db $7, $4, $a, $ff + + db $0 ; signs + + db $5 ; people + db SPRITE_COOK, $5 + 4, $8 + 4, $fe, $2, $1 ; person + db SPRITE_MOM_GEISHA, $2 + 4, $7 + 4, $ff, $ff, $2 ; person + db SPRITE_FAT_BALD_GUY, $4 + 4, $1 + 4, $ff, $d0, $3 ; person + db SPRITE_FISHER2, $3 + 4, $5 + 4, $ff, $d3, $4 ; person + db SPRITE_GYM_HELPER, $1 + 4, $0 + 4, $ff, $d0, $5 ; person + + ; warp-to + EVENT_DISP $5, $7, $3 + EVENT_DISP $5, $7, $4 + +CeladonDinerBlocks: ; 20 + INCBIN "maps/celadondiner.blk" + +CeladonHouse_h: ; 0x49202 to 0x4920e (12 bytes) (bank=12) (id=139) + db $13 ; tileset + db $04, $04 ; dimensions (y, x) + dw CeladonHouseBlocks, CeladonHouseTexts, CeladonHouseScript ; blocks, texts, scripts + db $00 ; connections + + dw CeladonHouseObject ; objects + +CeladonHouseScript: ; 0x4920e + call $3c3c + ret +; 0x49212 + +CeladonHouseTexts: ; 0x49212 + dw CeladonHouseText1, CeladonHouseText2, CeladonHouseText3 + +CeladonHouseText1: ; 0x49218 + TX_FAR _CeladonHouseText1 + db $50 + +CeladonHouseText2: ; 0x4921d + TX_FAR _CeladonHouseText2 + db $50 + +CeladonHouseText3: ; 0x49222 + TX_FAR _CeladonHouseText3 + db $50 + +CeladonHouseObject: ; 0x49227 (size=38) + db $f ; border tile + + db $2 ; warps + db $7, $2, $b, $ff + db $7, $3, $b, $ff + + db $0 ; signs + + db $3 ; people + db SPRITE_OLD_PERSON, $2 + 4, $4 + 4, $ff, $d0, $1 ; person + db SPRITE_ROCKET, $4 + 4, $1 + 4, $fe, $0, $2 ; person + db SPRITE_SAILOR, $6 + 4, $5 + 4, $ff, $d2, $3 ; person + + ; warp-to + EVENT_DISP $4, $7, $2 + EVENT_DISP $4, $7, $3 + +CeladonHouseBlocks: ; 16 + INCBIN "maps/celadonhouse2.blk" + +CeladonHotel_h: ; 0x4925d to 0x49269 (12 bytes) (bank=12) (id=140) + db $06 ; tileset + db $04, $07 ; dimensions (y, x) + dw CeladonHotelBlocks, CeladonHotelTexts, CeladonHotelScript ; blocks, texts, scripts + db $00 ; connections + + dw CeladonHotelObject ; objects + +CeladonHotelScript: ; 0x49269 + jp $3c3c +; 0x4926c + +CeladonHotelTexts: ; 0x4926c + dw CeladonHotelText1, CeladonHotelText2, CeladonHotelText3 + +CeladonHotelText1: ; 0x49272 + TX_FAR _CeladonHotelText1 + db $50 + +CeladonHotelText2: ; 0x49277 + TX_FAR _CeladonHotelText2 + db $50 + +CeladonHotelText3: ; 0x4927c + TX_FAR _CeladonHotelText3 + db $50 + +CeladonHotelObject: ; 0x49281 (size=38) + db $0 ; border tile + + db $2 ; warps + db $7, $3, $c, $ff + db $7, $4, $c, $ff + + db $0 ; signs + + db $3 ; people + db SPRITE_OLD_MEDIUM_WOMAN, $1 + 4, $3 + 4, $ff, $d0, $1 ; person + db SPRITE_FOULARD_WOMAN, $4 + 4, $2 + 4, $ff, $ff, $2 ; person + db SPRITE_BLACK_HAIR_BOY_2, $4 + 4, $8 + 4, $fe, $2, $3 ; person + + ; warp-to + EVENT_DISP $7, $7, $3 + EVENT_DISP $7, $7, $4 + +CeladonHotelBlocks: ; 28 + INCBIN "maps/celadonhotel.blk" + +MtMoonPokecenter_h: ; 0x492c3 to 0x492cf (12 bytes) (bank=12) (id=68) + db $06 ; tileset + db $04, $07 ; dimensions (y, x) + dw MtMoonPokecenterBlocks, $52d5, MtMoonPokecenterScript ; blocks, texts, scripts + db $00 ; connections + + dw MtMoonPokecenterObject ; objects + +MtMoonPokecenterScript: ; 0x492cf + call $22fa + jp $3c3c +; 0x492d5 + +INCBIN "baserom.gbc",$492d5,$d + +MtMoonPokecenterText2: +MtMoonPokecenterText1: ; 0x492e2 + TX_FAR _MtMoonPokecenterText1 + db $50 + +MtMoonPokecenterText3: ; 0x492e7 + TX_FAR _MtMoonPokecenterText3 + db $50 + +MtMoonPokecenterText4: ; 0x492ec + db $08 ; asm + ld a, [$d7c6] + add a + jp c, $5353 + ld hl, $535c + call PrintText + ld a, $13 + ld [$d125], a + call $30e8 + call $35ec + ld a, [$cc26] + and a + jp nz, $534e + ldh [$9f], a + ldh [$a1], a + ld a, $5 + ldh [$a0], a + call $35a6 + jr nc, .asm_faa09 ; 0x49317 + ld hl, $5366 + jr .asm_ae354 ; 0x4931c +.asm_faa09 ; 0x4931e + ld bc,(MAGIKARP << 8) | 5 + call GivePokemon + jr nc, .asm_38361 ; 0x49324 + xor a + ld [W_WHICHTRADE], a + ld [$cd3f], a + ld a, $5 + ld [$cd3e], a + ld hl, $cd3f + ld de, $d349 + ld c, $3 + ld a, $c + call Predef + ld a, $13 + ld [$d125], a + call $30e8 + ld hl, $d7c6 + set 7, [hl] + jr .asm_38361 ; 0x4934c + ld hl, $5361 + jr .asm_ae354 ; 0x49351 + ld hl, $536b +.asm_ae354 ; 0x49356 + call PrintText +.asm_38361 ; 0x49359 + jp $24d7 + +INCBIN "baserom.gbc",$4935c,$14 + +MtMoonPokecenterText5: ; 0x49370 + TX_FAR _MtMoonPokecenterText5 + db $50 + +MtMoonPokecenterText6: + db $f6 + +MtMoonPokecenterObject: ; 0x49376 (size=56) + db $0 ; border tile + + db $2 ; warps + db $7, $3, $0, $ff + db $7, $4, $0, $ff + + db $0 ; signs + + db $6 ; people + db SPRITE_NURSE, $1 + 4, $3 + 4, $ff, $d0, $1 ; person + db SPRITE_BUG_CATCHER, $3 + 4, $4 + 4, $ff, $d1, $2 ; person + db SPRITE_GENTLEMAN, $3 + 4, $7 + 4, $ff, $d1, $3 ; person + db SPRITE_FAT_BALD_GUY, $6 + 4, $a + 4, $fe, $2, $4 ; person + db SPRITE_CLIPBOARD, $2 + 4, $7 + 4, $ff, $ff, $5 ; person + db SPRITE_CABLE_CLUB_WOMAN, $2 + 4, $b + 4, $ff, $d0, $6 ; person + + ; warp-to + EVENT_DISP $7, $7, $3 + EVENT_DISP $7, $7, $4 + +RockTunnelPokecenter_h: ; 0x493ae to 0x493ba (12 bytes) (id=81) + db $06 ; tileset + db $04, $07 ; dimensions (y, x) + dw $40ab, $53c0, RockTunnelPokecenterScript ; blocks, texts, scripts + db $00 ; connections + + dw RockTunnelPokecenterObject ; objects + +RockTunnelPokecenterScript: ; 0x493ba + call $22fa + jp $3c3c +; 0x493c0 + +INCBIN "baserom.gbc",$493c0,$9 + +RockTunnelPokecenterText2: +RockTunnelPokecenterText1: ; 0x493c9 + TX_FAR _RockTunnelPokecenterText1 + +INCBIN "baserom.gbc",$493cd,$493ce - $493cd + +RockTunnelPokecenterText3: ; 0x493ce + TX_FAR _RockTunnelPokecenterText3 + db $50 + +RockTunnelPokecenterText4: ; 0x493d3 + db $f6 + +RockTunnelPokecenterObject: ; 0x493d4 (size=44) + db $0 ; border tile + + db $2 ; warps + db $7, $3, $0, $ff + db $7, $4, $0, $ff + + db $0 ; signs + + db $4 ; people + db SPRITE_NURSE, $1 + 4, $3 + 4, $ff, $d0, $1 ; person + db SPRITE_GENTLEMAN, $3 + 4, $7 + 4, $fe, $2, $2 ; person + db SPRITE_FISHER2, $5 + 4, $2 + 4, $ff, $ff, $3 ; person + db SPRITE_CABLE_CLUB_WOMAN, $2 + 4, $b + 4, $ff, $d0, $4 ; person + + ; warp-to + EVENT_DISP $7, $7, $3 + EVENT_DISP $7, $7, $4 + +Route11Gate_h: ; 0x49400 to 0x4940c (12 bytes) (id=84) + db $0c ; tileset + db $05, $04 ; dimensions (y, x) + dw Route11GateBlocks, Route11GateTexts, Route11GateScript ; blocks, texts, scripts + db $00 ; connections + + dw Route11GateObject ; objects + +Route11GateScript: ; 0x4940c + jp $3c3c +; 0x4940f + +Route11GateTexts: ; 0x4940f + dw Route11GateText1 + +Route11GateText1: ; 0x49411 + TX_FAR _Route11GateText1 + db $50 + +Route11GateObject: ; 0x49416 (size=50) + db $a ; border tile + + db $5 ; warps + db $4, $0, $0, $ff + db $5, $0, $1, $ff + db $4, $7, $2, $ff + db $5, $7, $3, $ff + db $8, $6, $0, ROUTE_11_GATE_2F + + db $0 ; signs + + db $1 ; people + db SPRITE_GUARD, $1 + 4, $4 + 4, $ff, $ff, $1 ; person + + ; warp-to + EVENT_DISP $4, $4, $0 + EVENT_DISP $4, $5, $0 + EVENT_DISP $4, $4, $7 + EVENT_DISP $4, $5, $7 + EVENT_DISP $4, $8, $6 ; ROUTE_11_GATE_2F + +Route11GateUpstairs_h: ; 0x49448 to 0x49454 (12 bytes) (id=86) + db $0c ; tileset + db $04, $04 ; dimensions (y, x) + dw Route11GateUpstairsBlocks, $5457, Route11GateUpstairsScript ; blocks, texts, scripts + db $00 ; connections + + dw Route11GateUpstairsObject ; objects + +Route11GateUpstairsScript: ; 0x49454 + jp $3c3f +; 0x49457 + +INCBIN "baserom.gbc",$49457,$8 + +Route11GateUpstairsText1: ; 0x4945f + db $08 ; asm + xor a + ld [W_WHICHTRADE], a + ld a, $54 + call Predef +asm_49469: + jp $24d7 + +Route11GateUpstairsText2: ; 0x4946c + db $8 + ld a, [$d7d6] + add a + jr c, .asm_4949b ; 0x49471 $28 + ld a, $1e + ld [$ff00+$db], a + ld a, $47 + ld [$ff00+$dc], a + ld [$d11e], a + call $2fcf + ld h, d + ld l, e + ld de, $cc5b + ld bc, $000d + call CopyData + ld a, $62 + call Predef + ld a, [$ff00+$db] + dec a + jr nz, .asm_494a1 ; 0x49494 $b + ld hl, $d7d6 + set 7, [hl] +.asm_4949b + ld hl, $54a3 + call PrintText +.asm_494a1 + jr asm_49469 ; 0x494a1 $c6 +; 0x494a3 + +INCBIN "baserom.gbc",$494a3,$5 + +Route11GateUpstairsText3: ; 0x494a8 + db $08 ; asm + ld a, [$c109] + cp $4 + jp nz, $55c9 + ld a, [$d7d8] + bit 7, a + ld hl, $54c4 + jr z, .asm_5ac80 ; 0x494b9 + ld hl, $54c9 +.asm_5ac80 ; 0x494be + call PrintText + jp $24d7 + +INCBIN "baserom.gbc",$494c4,$494ce - $494c4 + +Route11GateUpstairsText4: ; 0x494ce + db $8 + ld hl, $54d5 + jp $55c9 +; 0x494d5 + +INCBIN "baserom.gbc",$494d5,$5 + +Route11GateUpstairsObject: ; 0x494da (size=30) + db $a ; border tile + + db $1 ; warps + db $7, $7, $4, ROUTE_11_GATE_1F + + db $2 ; signs + db $2, $1, $3 ; Route11GateUpstairsText3 + db $2, $6, $4 ; Route11GateUpstairsText4 + + db $2 ; people + db SPRITE_BUG_CATCHER, $2 + 4, $4 + 4, $fe, $2, $1 ; person + db SPRITE_OAK_AIDE, $6 + 4, $2 + 4, $ff, $ff, $2 ; person + + ; warp-to + EVENT_DISP $4, $7, $7 ; ROUTE_11_GATE_1F + +Route12Gate_h: ; 0x494f8 to 0x49504 (12 bytes) (id=87) + db $0c ; tileset + db $04, $05 ; dimensions (y, x) + dw Route12GateBlocks, Route12GateTexts, Route12GateScript ; blocks, texts, scripts + db $00 ; connections + + dw Route12GateObject ; objects + +Route12GateScript: ; 0x49504 + jp $3c3c +; 0x49507 + +Route12GateTexts: ; 0x49507 + dw Route12GateText1 + +Route12GateText1: ; 0x49509 + TX_FAR _Route12GateText1 + db $50 + +Route12GateObject: ; 0x4950e (size=50) + db $a ; border tile + + db $5 ; warps + db $0, $4, $0, $ff + db $0, $5, $1, $ff + db $7, $4, $2, $ff + db $7, $5, $2, $ff + db $6, $8, $0, ROUTE_12_GATE_2F + + db $0 ; signs + + db $1 ; people + db SPRITE_GUARD, $3 + 4, $1 + 4, $ff, $ff, $1 ; person + + ; warp-to + EVENT_DISP $5, $0, $4 + EVENT_DISP $5, $0, $5 + EVENT_DISP $5, $7, $4 + EVENT_DISP $5, $7, $5 + EVENT_DISP $5, $6, $8 ; ROUTE_12_GATE_2F + +Route12GateBlocks: ; 20 + INCBIN "maps/route12gate.blk" + +Route12GateUpstairs_h: ; 0x49554 to 0x49560 (12 bytes) (id=195) + db $0c ; tileset + db $04, $04 ; dimensions (y, x) + dw $40db, Route12GateUpstairsTexts, Route12GateUpstairsScript ; blocks, texts, scripts + db $00 ; connections + + dw Route12GateUpstairsObject ; objects + +Route12GateUpstairsScript: ; 0x49560 + jp $3c3f +; 0x49563 + +Route12GateUpstairsTexts: ; 0x49563 + dw Route12GateUpstairsText1, Route12GateUpstairsText2, Route12GateUpstairsText3 + +Route12GateUpstairsText1: ; 0x49569 + db $08 ; asm + ld a, [$d7d7] + rrca + jr c, .asm_0ad3c ; 0x4956e + ld hl, $559c + call PrintText + ld bc,(TM_39 << 8) | 1 + call $3e2e + jr nc, .asm_4c2be ; 0x4957c + ld hl, $55a1 + call PrintText + ld hl, $d7d7 + set 0, [hl] + jr .asm_4ba56 ; 0x49589 +.asm_4c2be ; 0x4958b + ld hl, $55ac + call PrintText + jr .asm_4ba56 ; 0x49591 +.asm_0ad3c ; 0x49593 + ld hl, $55a7 + call PrintText +.asm_4ba56 ; 0x49599 + jp $24d7 + +INCBIN "baserom.gbc",$4959c,$495b1 - $4959c + +Route12GateUpstairsText2: ; 0x495b1 + db $08 ; asm + ld hl, $55b8 + jp $55c9 + +;TX_FAR at 0x495b8 +db $17, $5a, $49, $23, $50 + +Route12GateUpstairsText3: ; 0x495bd + db $8 + ld hl, $55c4 + jp $55c9 +; 0x495c4 + +INCBIN "baserom.gbc",$495c4,$495de-$495c4 + +Route12GateUpstairsObject: ; 0x495de (size=24) + db $a ; border tile + + db $1 ; warps + db $7, $7, $4, ROUTE_12_GATE + + db $2 ; signs + db $2, $1, $2 ; Route12GateUpstairsText2 + db $2, $6, $3 ; Route12GateUpstairsText3 + + db $1 ; people + db SPRITE_BRUNETTE_GIRL, $4 + 4, $3 + 4, $fe, $1, $1 ; person + + ; warp-to + EVENT_DISP $4, $7, $7 ; ROUTE_12_GATE + +Route15Gate_h: ; 0x495f6 to 0x49602 (12 bytes) (id=184) + db $0c ; tileset + db $05, $04 ; dimensions (y, x) + dw $40c7, Route15GateTexts, Route15GateScript ; blocks, texts, scripts + db $00 ; connections + + dw Route15GateObject ; objects + +Route15GateScript: ; 0x49602 + jp $3c3c +; 0x49605 + +Route15GateTexts: ; 0x49605 + dw Route15GateText1 + +Route15GateText1: ; 0x49607 + TX_FAR _Route15GateText1 + db $50 + +Route15GateObject: ; 0x4960c (size=50) + db $a ; border tile + + db $5 ; warps + db $4, $0, $0, $ff + db $5, $0, $1, $ff + db $4, $7, $2, $ff + db $5, $7, $3, $ff + db $8, $6, $0, $b9 + + db $0 ; signs + + db $1 ; people + db SPRITE_GUARD, $1 + 4, $4 + 4, $ff, $ff, $1 ; person + + ; warp-to + EVENT_DISP $4, $4, $0 + EVENT_DISP $4, $5, $0 + EVENT_DISP $4, $4, $7 + EVENT_DISP $4, $5, $7 + EVENT_DISP $4, $8, $6 + +INCBIN "baserom.gbc",$4963e,$74 + +Route16GateMap_h: ; 0x496b2 to 0x496be (12 bytes) (id=186) + db $0c ; tileset + db $07, $04 ; dimensions (y, x) + dw Route16GateMapBlocks, Route16GateMapTexts, Route16GateMapScript ; blocks, texts, scripts + db $00 ; connections + + dw Route16GateMapObject ; objects + +Route16GateMapScript: ; 0x496be + ld hl, $d732 + res 5, [hl] + call $3c3c + ld a, [$d660] + ld hl, $56cf + jp $3d97 +; 0x496cf + +Route16GateMapScripts: ; 0x496cf + dw Route16GateMapScript0 + +INCBIN "baserom.gbc",$496d1,$6 + +Route16GateMapScript0: ; 0x496d7 + call $5755 + ret nz + ld hl, $5714 + call $34bf + ret nc + ld a, $3 + ld [$ff00+$8c], a + call $2920 + xor a + ld [$ff00+$b4], a + ld a, [$cd3d] + cp $1 + jr z, .asm_4970e ; 0x496f1 $1b + ld a, [$cd3d] + dec a + ld [$cd38], a + ld b, $0 + ld c, a + ld a, $40 + ld hl, $ccd3 + call $36e0 + call $3486 + ld a, $1 + ld [$d660], a + ret +.asm_4970e + ld a, $2 + ld [$d660], a + ret +; 0x49714 + +INCBIN "baserom.gbc",$49714,$46 + +Route16GateMapTexts: ; 0x4975a + dw Route16GateMapText1, Route16GateMapText2, Route16GateMapText3 + +Route16GateMapText1: ; 0x49760 + db $08 ; asm + call $5755 + jr z, .asm_0bdf3 ; 0x49764 + ld hl, $577c + call PrintText + jr .asm_56c9d ; 0x4976c +.asm_0bdf3 ; 0x4976e + ld hl, $5777 + call PrintText +.asm_56c9d ; 0x49774 + jp $24d7 + +INCBIN "baserom.gbc",$49777,$49781 - $49777 + +Route16GateMapText3: ; 0x49781 +INCBIN "baserom.gbc",$49781,5 + +Route16GateMapText2: ; 0x49786 + TX_FAR _Route16GateMapText2 + db $50 + +Route16GateMapObject: ; 0x4978b (size=88) + db $a ; border tile + + db $9 ; warps + db $8, $0, $0, $ff + db $9, $0, $1, $ff + db $8, $7, $2, $ff + db $9, $7, $2, $ff + db $2, $0, $4, $ff + db $3, $0, $5, $ff + db $2, $7, $6, $ff + db $3, $7, $7, $ff + db $c, $6, $0, ROUTE_16_GATE_2F + + db $0 ; signs + + db $2 ; people + db SPRITE_GUARD, $5 + 4, $4 + 4, $ff, $d0, $1 ; person + db SPRITE_GAMBLER, $3 + 4, $4 + 4, $ff, $ff, $2 ; person + + ; warp-to + EVENT_DISP $4, $8, $0 + EVENT_DISP $4, $9, $0 + EVENT_DISP $4, $8, $7 + EVENT_DISP $4, $9, $7 + EVENT_DISP $4, $2, $0 + EVENT_DISP $4, $3, $0 + EVENT_DISP $4, $2, $7 + EVENT_DISP $4, $3, $7 + EVENT_DISP $4, $c, $6 ; ROUTE_16_GATE_2F + +Route16GateMapBlocks: ; 28 + INCBIN "maps/route16gatemap.blk" + +Route16GateUpstairs_h: ; 0x497ff to 0x4980b (12 bytes) (id=187) + db $0c ; tileset + db $04, $04 ; dimensions (y, x) + dw $40db, Route16GateUpstairsTexts, Route16GateUpstairsScript ; blocks, texts, scripts + db $00 ; connections + + dw Route16GateUpstairsObject ; objects + +Route16GateUpstairsScript: ; 0x4980b + jp $3c3f +; 0x4980e + +Route16GateUpstairsTexts: ; 0x4980e + dw Route16GateUpstairsText1, Route16GateUpstairsText2, Route16GateUpstairsText3, Route16GateUpstairsText4 + +Route16GateUpstairsText1: ; 0x49816 + db $08 ; asm + ld hl, $5820 + call PrintText + jp $24d7 + +INCBIN "baserom.gbc",$49820,$49825 - $49820 + +Route16GateUpstairsText2: ; 0x49825 + db $08 ; asm + ld hl, $582f + call PrintText + jp $24d7 + +INCBIN "baserom.gbc",$4982f,$49834 - $4982f + +Route16GateUpstairsText3: ; 0x49834 + db $8 + ld hl, $583b + jp $55c9 +; 0x4983b + +INCBIN "baserom.gbc",$4983b,$5 + +Route16GateUpstairsText4: ; 0x49840 + db $8 + ld hl, $5847 + jp $55c9 +; 0x49847 + +INCBIN "baserom.gbc",$49847,$5 + +Route16GateUpstairsObject: ; 0x4984c (size=30) + db $a ; border tile + + db $1 ; warps + db $7, $7, $8, ROUTE_16_GATE_1F + + db $2 ; signs + db $2, $1, $3 ; Route16GateUpstairsText3 + db $2, $6, $4 ; Route16GateUpstairsText4 + + db $2 ; people + db SPRITE_YOUNG_BOY, $2 + 4, $4 + 4, $ff, $ff, $1 ; person + db SPRITE_LITTLE_GIRL, $5 + 4, $2 + 4, $fe, $2, $2 ; person + + ; warp-to + EVENT_DISP $4, $7, $7 ; ROUTE_16_GATE_1F + +Route18Gate_h: ; 0x4986a to 0x49876 (12 bytes) (id=190) + db $0c ; tileset + db $05, $04 ; dimensions (y, x) + dw $40c7, Route18GateTexts, Route18GateScript ; blocks, texts, scripts + db $00 ; connections + + dw Route18GateObject ; objects + +Route18GateScript: ; 0x49876 + ld hl, $d732 + res 5, [hl] + call $3c3c + ld a, [$d669] + ld hl, $5887 + jp $3d97 +; 0x49887 + +Route18GateScripts: ; 0x49887 + dw Route18GateScript0 + +INCBIN "baserom.gbc",$49889,$6 + +Route18GateScript0: ; 0x4988f + call $5755 + ret nz + ld hl, $58cc + call $34bf + ret nc + ld a, $2 + ld [$ff00+$8c], a + call $2920 + xor a + ld [$ff00+$b4], a + ld a, [$cd3d] + cp $1 + jr z, .asm_498c6 ; 0x498a9 $1b + ld a, [$cd3d] + dec a + ld [$cd38], a + ld b, $0 + ld c, a + ld a, $40 + ld hl, $ccd3 + call $36e0 + call $3486 + ld a, $1 + ld [$d669], a + ret +.asm_498c6 + ld a, $2 + ld [$d669], a + ret +; 0x498cc + +INCBIN "baserom.gbc",$498cc,$41 + +Route18GateTexts: ; 0x4990d + dw Route18GateText1, Route18GateText2 + +Route18GateText1: ; 0x49911 + db $08 ; asm + call $5755 + jr z, .asm_3c84d ; 0x49915 + ld hl, $592d + call PrintText + jr .asm_a8410 ; 0x4991d +.asm_3c84d ; 0x4991f + ld hl, $5928 + call PrintText +.asm_a8410 ; 0x49925 + jp $24d7 + +INCBIN "baserom.gbc",$49928,$49932 - $49928 + +Route18GateText2: ; 0x49932 +INCBIN "baserom.gbc",$49932,5 + +Route18GateObject: ; 0x49937 (size=50) + db $a ; border tile + + db $5 ; warps + db $4, $0, $0, $ff + db $5, $0, $1, $ff + db $4, $7, $2, $ff + db $5, $7, $3, $ff + db $8, $6, $0, ROUTE_18_GATE_2F + + db $0 ; signs + + db $1 ; people + db SPRITE_GUARD, $1 + 4, $4 + 4, $ff, $d0, $1 ; person + + ; warp-to + EVENT_DISP $4, $4, $0 + EVENT_DISP $4, $5, $0 + EVENT_DISP $4, $4, $7 + EVENT_DISP $4, $5, $7 + EVENT_DISP $4, $8, $6 ; ROUTE_18_GATE_2F + +Route18GateHeader_h: ; 0x49969 to 0x49975 (12 bytes) (id=191) + db $0c ; tileset + db $04, $04 ; dimensions (y, x) + dw $40db, Route18GateHeaderTexts, Route18GateHeaderScript ; blocks, texts, scripts + db $00 ; connections + + dw Route18GateHeaderObject ; objects + +Route18GateHeaderScript: ; 0x49975 + jp $3c3f +; 0x49978 + +Route18GateHeaderTexts: ; 0x49978 + dw Route18GateHeaderText1, Route18GateHeaderText2, Route18GateHeaderText3 + +Route18GateHeaderText1: ; 0x4997e + db $08 ; asm + ld a, $5 + ld [W_WHICHTRADE], a + ld a, $54 + call Predef + jp $24d7 + +Route18GateHeaderText2: ; 0x4998c + db $8 + ld hl, $5993 + jp $55c9 +; 0x49993 + +INCBIN "baserom.gbc",$49993,$5 + +Route18GateHeaderText3: ; 0x49998 + db $8 + ld hl, $599f + jp $55c9 +; 0x4999f + +INCBIN "baserom.gbc",$4999f,$5 + +Route18GateHeaderObject: ; 0x499a4 (size=24) + db $a ; border tile + + db $1 ; warps + db $7, $7, $4, ROUTE_18_GATE_1F + + db $2 ; signs + db $2, $1, $2 ; Route18GateHeaderText2 + db $2, $6, $3 ; Route18GateHeaderText3 + + db $1 ; people + db SPRITE_BUG_CATCHER, $2 + 4, $4 + 4, $fe, $2, $1 ; person + + ; warp-to + EVENT_DISP $4, $7, $7 ; ROUTE_18_GATE_1F + +MtMoon1_h: ; 0x499bc to 0x499c8 (12 bytes) (id=59) + db $11 ; tileset + db $12, $14 ; dimensions (y, x) + dw MtMoon1Blocks, MtMoon1Texts, MtMoon1Script ; blocks, texts, scripts + db $00 ; connections + + dw MtMoon1Object ; objects + +MtMoon1Script: ; 0x499c8 + call $3c3c + ld hl, $59fd + ld de, $59db + ld a, [$d606] + call $3160 + ld [$d606], a + ret +; 0x499db + +INCBIN "baserom.gbc",$499db,$6 + +MtMoon1Texts: ; 0x499e1 + dw MtMoon1Text1, MtMoon1Text2, MtMoon1Text3, MtMoon1Text4, MtMoon1Text5, MtMoon1Text6, MtMoon1Text7, MtMoon1Text8, MtMoon1Text9, MtMoon1Text10, MtMoon1Text11, MtMoon1Text12, MtMoon1Text13, MtMoon1Text14 + +INCBIN "baserom.gbc",$499fd,$55 + +MtMoon1Text1: ; 0x49a52 + db $08 ; asm + ld hl, $59fd + call LoadTrainerHeader + jp $24d7 + +MtMoon1Text2: ; 0x49a5c + db $08 ; asm + ld hl, $5a09 + call LoadTrainerHeader + jp $24d7 + +MtMoon1Text3: ; 0x49a66 + db $08 ; asm + ld hl, $5a15 + call LoadTrainerHeader + jp $24d7 + +MtMoon1Text4: ; 0x49a70 + db $08 ; asm + ld hl, $5a21 + call LoadTrainerHeader + jp $24d7 + +MtMoon1Text5: ; 0x49a7a + db $08 ; asm + ld hl, $5a2d + call LoadTrainerHeader + jp $24d7 + +MtMoon1Text6: ; 0x49a84 + db $08 ; asm + ld hl, $5a39 + call LoadTrainerHeader + jp $24d7 + +MtMoon1Text7: ; 0x49a8e + db $08 ; asm + ld hl, $5a45 + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$49a98,$69 + +MtMoon1Text14: ; 0x49b01 + TX_FAR _MtMoon1Text14 + db $50 + +MtMoon1Object: ; 0x49b06 (size=145) + db $3 ; border tile + + db $5 ; warps + db $23, $e, $1, $ff + db $23, $f, $1, $ff + db $5, $5, $0, MT_MOON_2 + db $b, $11, $2, MT_MOON_2 + db $f, $19, $3, MT_MOON_2 + + db $1 ; signs + db $17, $f, $e ; MtMoon1Text14 + + db $d ; people + db SPRITE_HIKER, $6 + 4, $5 + 4, $ff, $d0, $41, HIKER + $C8, $1 ; trainer + db SPRITE_BUG_CATCHER, $10 + 4, $c + 4, $ff, $d3, $42, YOUNGSTER + $C8, $3 ; trainer + db SPRITE_LASS, $4 + 4, $1e + 4, $ff, $d0, $43, LASS + $C8, $5 ; trainer + db SPRITE_BLACK_HAIR_BOY_2, $1f + 4, $18 + 4, $ff, $d1, $44, SUPER_NERD + $C8, $1 ; trainer + db SPRITE_LASS, $17 + 4, $10 + 4, $ff, $d0, $45, LASS + $C8, $6 ; trainer + db SPRITE_BUG_CATCHER, $16 + 4, $7 + 4, $ff, $d0, $46, BUG_CATCHER + $C8, $7 ; trainer + db SPRITE_BUG_CATCHER, $1b + 4, $1e + 4, $ff, $d3, $47, BUG_CATCHER + $C8, $8 ; trainer + db SPRITE_BALL, $14 + 4, $2 + 4, $ff, $ff, $88, POTION ; item + db SPRITE_BALL, $2 + 4, $2 + 4, $ff, $ff, $89, MOON_STONE ; item + db SPRITE_BALL, $1f + 4, $23 + 4, $ff, $ff, $8a, RARE_CANDY ; item + db SPRITE_BALL, $17 + 4, $24 + 4, $ff, $ff, $8b, ESCAPE_ROPE ; item + db SPRITE_BALL, $21 + 4, $14 + 4, $ff, $ff, $8c, POTION ; item + db SPRITE_BALL, $20 + 4, $5 + 4, $ff, $ff, $8d, TM_12 ; item + + ; warp-to + EVENT_DISP $14, $23, $e + EVENT_DISP $14, $23, $f + EVENT_DISP $14, $5, $5 ; MT_MOON_2 + EVENT_DISP $14, $b, $11 ; MT_MOON_2 + EVENT_DISP $14, $f, $19 ; MT_MOON_2 + +MtMoon1Blocks: ; 360 + INCBIN "maps/mtmoon1.blk" + +MtMoon3_h: ; 0x49cff to 0x49d0b (12 bytes) (id=61) + db $11 ; tileset + db $12, $14 ; dimensions (y, x) + dw MtMoon3Blocks, MtMoon3Texts, MtMoon3Script ; blocks, texts, scripts + db $00 ; connections + + dw MtMoon3Object ; objects + +MtMoon3Script: ; 0x49d0b + call $3c3c + ld hl, $5e48 + ld de, $5d63 + ld a, [$d607] + call $3160 + ld [$d607], a + ld a, [$d7f6] + bit 1, a + ret z + ld hl, $5d37 + call $34bf + jr nc, .asm_49d31 ; 0x49d29 $6 + ld hl, $d72e + set 4, [hl] + ret +.asm_49d31 + ld hl, $d72e + res 4, [hl] + ret +; 0x49d37 + +INCBIN "baserom.gbc",$49d37,$fd + +MtMoon3Texts: ; 0x49e34 + dw MtMoon3Text1, MtMoon3Text2, MtMoon3Text3, MtMoon3Text4, MtMoon3Text5, MtMoon3Text6, MtMoon3Text7, MtMoon3Text8, MtMoon3Text9 + +INCBIN "baserom.gbc",$49e46,$33 + +MtMoon3Text1: ; 0x49e79 + db $08 ; asm + ld a, [$d7f6] + bit 1, a + jr z, .asm_be1e0 ; 0x49e7f + and $c0 + jr nz, .asm_f8cd4 ; 0x49e83 + ld hl, $5f8f + call PrintText + jr .asm_f1fba ; 0x49e8b +.asm_be1e0 ; 0x49e8d + ld hl, $5f85 + call PrintText + ld hl, $d72d + set 6, [hl] + set 7, [hl] + ld hl, $5f8a + ld de, $5f8a + call $3354 + ldh a, [$8c] + ld [$cf13], a + call $336a + call $32d7 + ld a, $3 + ld [$d607], a + ld [$da39], a + jr .asm_f1fba ; 0x49eb6 +.asm_f8cd4 ; 0x49eb8 + ld hl, $5f94 + call PrintText +.asm_f1fba ; 0x49ebe + jp $24d7 + +MtMoon3Text2: ; 0x49ec1 + db $08 ; asm + ld hl, $5e48 + call LoadTrainerHeader + jp $24d7 + +MtMoon3Text3: ; 0x49ecb + db $08 ; asm + ld hl, $5e54 + call LoadTrainerHeader + jp $24d7 + +MtMoon3Text4: ; 0x49ed5 + db $08 ; asm + ld hl, $5e60 + call LoadTrainerHeader + jp $24d7 + +MtMoon3Text5: ; 0x49edf + db $08 ; asm + ld hl, $5e6c + call LoadTrainerHeader + jp $24d7 + +MtMoon3Text6: ; 0x49ee9 + db $08 ; asm + ld a, $1 + ld [$cc3c], a + ld hl, $5f24 + call PrintText + call $35ec + ld a, [$cc26] + and a + jr nz, .asm_1fa5e ; 0x49efc + ld bc,(DOME_FOSSIL << 8) | 1 + call $3e2e + jp nc, $5f76 + call $5f69 + ld a, $6d + ld [$cc4d], a + ld a, $11 + call Predef + ld hl, $d7f6 + set 6, [hl] + ld a, $4 + ld [$d607], a + ld [$da39], a +.asm_1fa5e ; 0x49f21 + jp $24d7 + +INCBIN "baserom.gbc",$49f24,$49f29 - $49f24 + +MtMoon3Text7: ; 0x49f29 + db $08 ; asm + ld a, $1 + ld [$cc3c], a + ld hl, $5f64 + call PrintText + call $35ec + ld a, [$cc26] + and a + jr nz, .asm_8e988 ; 0x49f3c + ld bc,(HELIX_FOSSIL << 8) | 1 + call $3e2e + jp nc, $5f76 + call $5f69 + ld a, $6e + ld [$cc4d], a + ld a, $11 + call Predef + ld hl, $d7f6 + set 7, [hl] + ld a, $4 + ld [$d607], a + ld [$da39], a +.asm_8e988 ; 0x49f61 + jp $24d7 + +INCBIN "baserom.gbc",$49f64,$77 + +MtMoon3Object: ; 0x49fdb (size=102) + db $3 ; border tile + + db $4 ; warps + db $9, $19, $1, MT_MOON_2 + db $11, $15, $4, MT_MOON_2 + db $1b, $f, $5, MT_MOON_2 + db $7, $5, $6, MT_MOON_2 + + db $0 ; signs + + db $9 ; people + db SPRITE_BLACK_HAIR_BOY_2, $8 + 4, $c + 4, $ff, $d3, $41, SUPER_NERD + $C8, $2 ; trainer + db SPRITE_ROCKET, $10 + 4, $b + 4, $ff, $d0, $42, ROCKET + $C8, $1 ; trainer + db SPRITE_ROCKET, $16 + 4, $f + 4, $ff, $d0, $43, ROCKET + $C8, $2 ; trainer + db SPRITE_ROCKET, $b + 4, $1d + 4, $ff, $d1, $44, ROCKET + $C8, $3 ; trainer + db SPRITE_ROCKET, $11 + 4, $1d + 4, $ff, $d2, $45, ROCKET + $C8, $4 ; trainer + db SPRITE_OMANYTE, $6 + 4, $c + 4, $ff, $ff, $6 ; person + db SPRITE_OMANYTE, $6 + 4, $d + 4, $ff, $ff, $7 ; person + db SPRITE_BALL, $15 + 4, $19 + 4, $ff, $ff, $88, HP_UP ; item + db SPRITE_BALL, $5 + 4, $1d + 4, $ff, $ff, $89, TM_01 ; item + + ; warp-to + EVENT_DISP $14, $9, $19 ; MT_MOON_2 + EVENT_DISP $14, $11, $15 ; MT_MOON_2 + EVENT_DISP $14, $1b, $f ; MT_MOON_2 + EVENT_DISP $14, $7, $5 ; MT_MOON_2 + +MtMoon3Blocks: ; 360 + INCBIN "maps/mtmoon3.blk" + +SafariZoneWest_h: ; 0x4a1a9 to 0x4a1b5 (12 bytes) (id=219) + db $03 ; tileset + db $0d, $0f ; dimensions (y, x) + dw SafariZoneWestBlocks, SafariZoneWestTexts, SafariZoneWestScript ; blocks, texts, scripts + db $00 ; connections + + dw SafariZoneWestObject ; objects + +SafariZoneWestScript: ; 0x4a1b5 + jp $3c3c +; 0x4a1b8 + +SafariZoneWestTexts: ; 0x4a1b8 + dw SafariZoneWestText1, SafariZoneWestText2, SafariZoneWestText3, SafariZoneWestText4, SafariZoneWestText5, SafariZoneWestText6, SafariZoneWestText7, SafariZoneWestText8 + +SafariZoneWestText5: ; 0x4a1c8 + TX_FAR _SafariZoneWestText5 + db $50 + +SafariZoneWestText6: ; 0x4a1cd + TX_FAR _SafariZoneWestText6 + db $50 + +SafariZoneWestText7: ; 0x4a1d2 + TX_FAR _SafariZoneWestText7 + db $50 + +SafariZoneWestText8: ; 0x4a1d7 + TX_FAR _SafariZoneWestText8 + db $50 + +SafariZoneWestObject: ; 0x4a1dc (size=108) + db $0 ; border tile + + db $8 ; warps + db $0, $14, $0, SAFARI_ZONE_NORTH + db $0, $15, $1, SAFARI_ZONE_NORTH + db $0, $1a, $2, SAFARI_ZONE_NORTH + db $0, $1b, $3, SAFARI_ZONE_NORTH + db $16, $1d, $2, SAFARI_ZONE_CENTER + db $17, $1d, $3, SAFARI_ZONE_CENTER + db $3, $3, $0, SAFARI_ZONE_SECRET_HOUSE + db $b, $b, $0, SAFARI_ZONE_REST_HOUSE_2 + + db $4 ; signs + db $c, $c, $5 ; SafariZoneWestText5 + db $3, $11, $6 ; SafariZoneWestText6 + db $4, $1a, $7 ; SafariZoneWestText7 + db $16, $18, $8 ; SafariZoneWestText8 + + db $4 ; people + db SPRITE_BALL, $14 + 4, $8 + 4, $ff, $ff, $81, MAX_POTION ; item + db SPRITE_BALL, $7 + 4, $9 + 4, $ff, $ff, $82, TM_32 ; item + db SPRITE_BALL, $12 + 4, $12 + 4, $ff, $ff, $83, MAX_REVIVE ; item + db SPRITE_BALL, $7 + 4, $13 + 4, $ff, $ff, $84, GOLD_TEETH ; item + + ; warp-to + EVENT_DISP $f, $0, $14 ; SAFARI_ZONE_NORTH + EVENT_DISP $f, $0, $15 ; SAFARI_ZONE_NORTH + EVENT_DISP $f, $0, $1a ; SAFARI_ZONE_NORTH + EVENT_DISP $f, $0, $1b ; SAFARI_ZONE_NORTH + EVENT_DISP $f, $16, $1d ; SAFARI_ZONE_CENTER + EVENT_DISP $f, $17, $1d ; SAFARI_ZONE_CENTER + EVENT_DISP $f, $3, $3 ; SAFARI_ZONE_SECRET_HOUSE + EVENT_DISP $f, $b, $b ; SAFARI_ZONE_REST_HOUSE_2 + +SafariZoneWestBlocks: ; 195 + INCBIN "maps/safarizonewest.blk" + +SafariZoneSecretHouse_h: ; 0x4a30b to 0x4a317 (12 bytes) (id=222) + db $14 ; tileset + db $04, $04 ; dimensions (y, x) + dw SafariZoneSecretHouseBlocks, SafariZoneSecretHouseTexts, SafariZoneSecretHouseScript ; blocks, texts, scripts + db $00 ; connections + + dw SafariZoneSecretHouseObject ; objects + +SafariZoneSecretHouseScript: ; 0x4a317 + jp $3c3c +; 0x4a31a + +SafariZoneSecretHouseTexts: ; 0x4a31a + dw SafariZoneSecretHouseText1 + +SafariZoneSecretHouseText1: ; 0x4a31c + db $08 ; asm + ld a, [$d857] + bit 0, a + jr nz, .asm_20a9b ; 0x4a322 + ld hl, $6350 + call PrintText + ld bc,(HM_03 << 8) | 1 + call $3e2e + jr nc, .asm_a21d2 ; 0x4a330 + ld hl, $6355 + call PrintText + ld hl, $d857 + set 0, [hl] + jr .asm_8f1fc ; 0x4a33d +.asm_a21d2 ; 0x4a33f + ld hl, $6360 + call PrintText + jr .asm_8f1fc ; 0x4a345 +.asm_20a9b ; 0x4a347 + ld hl, $635b + call PrintText +.asm_8f1fc ; 0x4a34d + jp $24d7 + +INCBIN "baserom.gbc",$4a350,$15 + +SafariZoneSecretHouseObject: ; 0x4a365 (size=26) + db $17 ; border tile + + db $2 ; warps + db $7, $2, $6, SAFARI_ZONE_WEST + db $7, $3, $6, SAFARI_ZONE_WEST + + db $0 ; signs + + db $1 ; people + db SPRITE_FISHER, $3 + 4, $3 + 4, $ff, $d0, $1 ; person + + ; warp-to + EVENT_DISP $4, $7, $2 ; SAFARI_ZONE_WEST + EVENT_DISP $4, $7, $3 ; SAFARI_ZONE_WEST + +SafariZoneSecretHouseBlocks: ; 16 + INCBIN "maps/safarizonesecrethouse.blk" + +INCBIN "baserom.gbc",$4a38f,$1c71 + +SECTION "bank13",DATA,BANK[$13] + +YoungsterPic: + INCBIN "pic/trainer/youngster.pic" +BugCatcherPic: + INCBIN "pic/trainer/bugcatcher.pic" +LassPic: + INCBIN "pic/trainer/lass.pic" +SailorPic: + INCBIN "pic/trainer/sailor.pic" +JrTrainerMPic: + INCBIN "pic/trainer/jr.trainerm.pic" +JrTrainerFPic: + INCBIN "pic/trainer/jr.trainerf.pic" +PokemaniacPic: + INCBIN "pic/trainer/pokemaniac.pic" +SuperNerdPic: + INCBIN "pic/trainer/supernerd.pic" +HikerPic: + INCBIN "pic/trainer/hiker.pic" +BikerPic: + INCBIN "pic/trainer/biker.pic" +BurglarPic: + INCBIN "pic/trainer/burglar.pic" +EngineerPic: + INCBIN "pic/trainer/engineer.pic" +FisherPic: + INCBIN "pic/trainer/fisher.pic" +SwimmerPic: + INCBIN "pic/trainer/swimmer.pic" +CueBallPic: + INCBIN "pic/trainer/cueball.pic" +GamblerPic: + INCBIN "pic/trainer/gambler.pic" +BeautyPic: + INCBIN "pic/trainer/beauty.pic" +PsychicPic: + INCBIN "pic/trainer/psychic.pic" +RockerPic: + INCBIN "pic/trainer/rocker.pic" +JugglerPic: + INCBIN "pic/trainer/juggler.pic" +TamerPic: + INCBIN "pic/trainer/tamer.pic" +BirdKeeperPic: + INCBIN "pic/trainer/birdkeeper.pic" +BlackbeltPic: + INCBIN "pic/trainer/blackbelt.pic" +Rival1Pic: + INCBIN "pic/trainer/rival1.pic" +ProfOakPic: + INCBIN "pic/trainer/prof.oak.pic" +ChiefPic: +ScientistPic: + INCBIN "pic/trainer/scientist.pic" +GiovanniPic: + INCBIN "pic/trainer/giovanni.pic" +RocketPic: + INCBIN "pic/trainer/rocket.pic" +CooltrainerMPic: + INCBIN "pic/trainer/cooltrainerm.pic" +CooltrainerFPic: + INCBIN "pic/trainer/cooltrainerf.pic" +BrunoPic: + INCBIN "pic/trainer/bruno.pic" +BrockPic: + INCBIN "pic/trainer/brock.pic" +MistyPic: + INCBIN "pic/trainer/misty.pic" +LtSurgePic: + INCBIN "pic/trainer/lt.surge.pic" +ErikaPic: + INCBIN "pic/trainer/erika.pic" +KogaPic: + INCBIN "pic/trainer/koga.pic" +BlainePic: + INCBIN "pic/trainer/blaine.pic" +SabrinaPic: + INCBIN "pic/trainer/sabrina.pic" +GentlemanPic: + INCBIN "pic/trainer/gentleman.pic" +Rival2Pic: + INCBIN "pic/trainer/rival2.pic" +Rival3Pic: + INCBIN "pic/trainer/rival3.pic" +LoreleiPic: + INCBIN "pic/trainer/lorelei.pic" +ChannelerPic: + INCBIN "pic/trainer/channeler.pic" +AgathaPic: + INCBIN "pic/trainer/agatha.pic" +LancePic: + INCBIN "pic/trainer/lance.pic" + +BattleCenterM_h: ; 0x4fd04 to 0x4fd10 (12 bytes) (id=239) + db $15 ; tileset + db $04, $05 ; dimensions (y, x) + dw BattleCenterMBlocks, BattleCenterMTexts, BattleCenterMScript ; blocks, texts, scripts + db $00 ; connections + + dw BattleCenterMObject ; objects + +BattleCenterMScript: ; 0x4fd10 + call $3c3c + ld a, [$ff00+$aa] + cp $2 + ld a, $8 + jr z, .asm_4fd1d ; 0x4fd19 $2 + ld a, $c +.asm_4fd1d + ld [$ff00+$8d], a + ld a, $1 + ld [$ff00+$8c], a + call $34ae + ld hl, $d72d + bit 0, [hl] + set 0, [hl] + ret nz + ld hl, $c214 + ld a, $8 + ld [hli], a + ld a, $a + ld [hl], a + ld a, $8 + ld [$c119], a + ld a, [$ff00+$aa] + cp $2 + ret z + ld a, $7 + ld [$c215], a + ld a, $c + ld [$c119], a + ret +; 0x4fd4c + +BattleCenterMTexts: ; 0x4fd4c + dw BattleCenterMText1 + +BattleCenterMText1: ; 0x4fd4e + TX_FAR _BattleCenterMText1 + db $50 + +BattleCenterMObject: ; 0x4fd53 (size=10) + db $e ; border tile + + db $0 ; warps + + db $0 ; signs + + db $1 ; people + db SPRITE_RED, $2 + 4, $2 + 4, $ff, $0, $1 ; person + +BattleCenterMBlocks: ; 20 + INCBIN "maps/battlecenterm.blk" + +TradeCenterM_h: ; 0x4fd71 to 0x4fd7d (12 bytes) (id=240) + db $15 ; tileset + db $04, $05 ; dimensions (y, x) + dw TradeCenterMBlocks, TradeCenterMTexts, TradeCenterMScript ; blocks, texts, scripts + db $00 ; connections + + dw TradeCenterMObject ; objects + +TradeCenterMScript: ; 0x4fd7d + jp $7d10 +; 0x4fd80 + +TradeCenterMTexts: ; 0x4fd80 + dw TradeCenterMText1 + +TradeCenterMText1: ; 0x4fd82 + TX_FAR _TradeCenterMText1 + db $50 + +TradeCenterMObject: ; 0x4fd87 (size=10) + db $e ; border tile + + db $0 ; warps + + db $0 ; signs + + db $1 ; people + db SPRITE_RED, $2 + 4, $2 + 4, $ff, $0, $1 ; person + +TradeCenterMBlocks: ; 20 + INCBIN "maps/tradecenterm.blk" + +INCBIN "baserom.gbc",$4fda5,$a4 + +GetPredefPointer: ; 7E49 +; stores hl in $CC4F,$CC50 +; stores de in $CC51,$CC52 +; stores bc in $CC53,$CC54 +; grabs a byte "n" from $CC4E, +; and gets the nth (3-byte) pointer in PredefPointers +; stores the bank of said pointer in [$D0B7] +; stores the pointer in hl and returns + ; ld $CC4F,hl + ld a,h + ld [$CC4F],a + ld a,l + ld [$CC50],a + + ; ld $CC51,de + ld hl,$CC51 + ld a,d + ld [hli],a + ld a,e + ld [hli],a + + ; ld $CC53,bc + ld a,b + ld [hli],a + ld [hl],c + + ld hl,PredefPointers + ld de,0 + + ; de = 3 * [$CC4E] + ld a,[$CC4E] + ld e,a + add a,a + add a,e + ld e,a + jr nc,.next\@ + inc d + +.next\@ + add hl,de + ld d,h + ld e,l + + ; get bank of predef routine + ld a,[de] + ld [$D0B7],a + + ; get pointer + inc de + ld a,[de] + ld l,a + inc de + ld a,[de] + ld h,a + + ret + +PredefPointers: ; 7E79 +; these are pointers to ASM routines. +; they appear to be used in overworld map scripts. + dbw $0F,$4D60 + dbw $0F,$70C6 + dbw $0F,$7073 + dbw $0B,$7E40 + dbw $0F,$7103 + dbw $1E,$5ABA + dbw $03,$7132 + dbw $03,$76A5 + dbw BANK(AttackAnimation),AttackAnimation; 08 play attack animation + dbw $03,$771E + dbw $03,$771E + dbw $03,$781D + dbw $03,$7836 + dbw $03,$771E + dbw $03,$771E + dbw $03,$7850 + dbw $03,$7666 + dbw $03,$71D7 + dbw $03,$71A6 + dbw $03,$469C + dbw $0F,$4A83 + dbw $03,$71C8 + dbw $03,$71C8 + dbw $03,$6E9E + dbw $03,$7850 + dbw $03,$4754 + dbw $0E,$6F5B + dbw $01,$6E43 + dbw $03,$78A5; 1C, used in Pokémon Tower + dbw $03,$3EB5 + dbw $03,$3E2E + dbw $12,$40EB + dbw $03,$78BA + dbw $12,$40FF + dbw $03,$7929 + dbw $03,$79A0 + dbw $12,$4125 + dbw $03,$7A1D + dbw $03,$79DC + dbw $01,$5AB0 + dbw $0F,$6D02 + dbw $10,$4000 + dbw $0E,$6D1C + dbw $1C,$778C + dbw $0F,$6F18 + dbw $01,$5A5F + dbw $03,$6A03 + dbw $10,$50F3 + dbw $1C,$496D + dbw $1E,$5DDA + dbw $10,$5682 + dbw $1E,$5869 + dbw $1C,$4B5D + dbw $03,$4586 + dbw $04,$6953 + dbw $04,$6B57 + dbw $10,$50E2 + dbw $15,$690F + dbw $10,$5010 + dbw BANK(Predef3B),Predef3B; 3B display pic? + dbw $03,$6F54 + dbw $10,$42D1 + dbw $0E,$6FB8 + dbw $1C,$770A + dbw $1C,$602B + dbw $03,$7113 + dbw $17,$5B5E + dbw $04,$773E + dbw $04,$7763 + dbw $1C,$5DDF + dbw $17,$40DC; 46 load dex screen + dbw $03,$72E5 + dbw $03,$7A1D + dbw $0F,$4DEC + dbw $1C,$4F60 + dbw $09,$7D6B + dbw $05,$7C47; 4C player exclamation + dbw $01,$5AAF + dbw $01,$64EB + dbw $0D,$7CA1 + dbw $1C,$780F + dbw $1C,$76BD + dbw $1C,$75E8 + dbw $1C,$77E2 + dbw BANK(Predef54),Predef54 ; 54 initiate trade + dbw $1D,$405C + dbw $11,$4169 + dbw $1E,$45BA + dbw $1E,$4510 + dbw $03,$45BE + dbw $03,$460B + dbw $03,$4D99 + dbw $01,$4DE1 + dbw $09,$7D98 + dbw $03,$7473 + dbw $04,$68EF + dbw $04,$68F6 + dbw $07,$49C6 + dbw $16,$5035 + +SECTION "bank14",DATA,BANK[$14] + +Route22_h: ; 0x50000 to 0x50022 (34 bytes) (id=33) + db $00 ; tileset + db $09, $14 ; dimensions (y, x) + dw Route22Blocks, Route22Texts, Route22Script ; blocks, texts, scripts + db NORTH | EAST ; connections + + ; connections data + + db ROUTE_23 + dw $4664, $c6eb ; pointers (connected, current) (strip) + db $0a, $0a ; bigness, width + db $8f, $00 ; alignments (y, x) + dw $cb69 ; window + + db VIRIDIAN_CITY + dw $4400, $c6ff ; pointers (connected, current) (strip) + db $0f, $14 ; bigness, width + db $08, $00 ; alignments (y, x) + dw $c703 ; window + + ; end connection data + + dw Route22Object ; objects + +Route22Object: ; 0x50022 (size=27) + db $2c ; border tile + + db $1 ; warps + db $5, $8, $0, ROUTE_22_GATE + + db $1 ; signs + db $b, $7, $3 ; Route22Text3 + + db $2 ; people + db SPRITE_BLUE, $5 + 4, $19 + 4, $ff, $ff, $1 ; person + db SPRITE_BLUE, $5 + 4, $19 + 4, $ff, $ff, $2 ; person + + ; warp-to + EVENT_DISP $14, $5, $8 ; ROUTE_22_GATE + +Route22Blocks: ; 180 + INCBIN "maps/route22.blk" + +Route20_h: ; 0x500f1 to 0x50113 (34 bytes) (id=31) + db $00 ; tileset + db $09, $32 ; dimensions (y, x) + dw Route20Blocks, Route20Texts, Route20Script ; blocks, texts, scripts + db WEST | EAST ; connections + + ; connections data + + db CINNABAR_ISLAND + dw $4070, $c790 ; pointers (connected, current) (strip) + db $09, $0a ; bigness, width + db $00, $13 ; alignments (y, x) + dw $c702 ; window + + db ROUTE_19 + dw $4f87, $c71d ; pointers (connected, current) (strip) + db $0c, $0a ; bigness, width + db $24, $00 ; alignments (y, x) + dw $c6f9 ; window + + ; end connection data + + dw Route20Object ; objects + +Route20Object: ; 0x50113 (size=106) + db $43 ; border tile + + db $2 ; warps + db $5, $30, $0, SEAFOAM_ISLANDS_1 + db $9, $3a, $2, SEAFOAM_ISLANDS_1 + + db $2 ; signs + db $7, $33, $b ; Route20Text11 + db $b, $39, $c ; Route20Text12 + + db $a ; people + db SPRITE_SWIMMER, $8 + 4, $57 + 4, $ff, $d1, $41, SWIMMER + $C8, $9 ; trainer + db SPRITE_SWIMMER, $b + 4, $44 + 4, $ff, $d1, $42, BEAUTY + $C8, $f ; trainer + db SPRITE_SWIMMER, $a + 4, $2d + 4, $ff, $d0, $43, BEAUTY + $C8, $6 ; trainer + db SPRITE_SWIMMER, $e + 4, $37 + 4, $ff, $d3, $44, JR__TRAINER_F + $C8, $18 ; trainer + db SPRITE_SWIMMER, $d + 4, $26 + 4, $ff, $d0, $45, SWIMMER + $C8, $a ; trainer + db SPRITE_SWIMMER, $d + 4, $57 + 4, $ff, $d1, $46, SWIMMER + $C8, $b ; trainer + db SPRITE_BLACK_HAIR_BOY_1, $9 + 4, $22 + 4, $ff, $d1, $47, BIRD_KEEPER + $C8, $b ; trainer + db SPRITE_SWIMMER, $7 + 4, $19 + 4, $ff, $d1, $48, BEAUTY + $C8, $7 ; trainer + db SPRITE_SWIMMER, $c + 4, $18 + 4, $ff, $d0, $49, JR__TRAINER_F + $C8, $10 ; trainer + db SPRITE_SWIMMER, $8 + 4, $f + 4, $ff, $d1, $4a, BEAUTY + $C8, $8 ; trainer + + ; warp-to + EVENT_DISP $32, $5, $30 ; SEAFOAM_ISLANDS_1 + EVENT_DISP $32, $9, $3a ; SEAFOAM_ISLANDS_1 + +Route20Blocks: ; 450 + INCBIN "maps/route20.blk" + +Route23_h: ; 0x5033f to 0x50361 (34 bytes) (id=34) + db $17 ; tileset + db $48, $0a ; dimensions (y, x) + dw Route23Blocks, Route23Texts, Route23Script ; blocks, texts, scripts + db NORTH | SOUTH ; connections + + ; connections data + + db INDIGO_PLATEAU + dw $4986, $c6eb ; pointers (connected, current) (strip) + db $0a, $0a ; bigness, width + db $11, $00 ; alignments (y, x) + dw $c779 ; window + + db ROUTE_22 + dw $403d, $cb9b ; pointers (connected, current) (strip) + db $0d, $14 ; bigness, width + db $00, $00 ; alignments (y, x) + dw $c703 ; window + + ; end connection data + + dw Route23Object ; objects + +Route23Object: ; 0x50361 (size=81) + db $f ; border tile + + db $4 ; warps + db $8b, $7, $2, ROUTE_22_GATE + db $8b, $8, $3, ROUTE_22_GATE + db $1f, $4, $0, VICTORY_ROAD_1 + db $1f, $e, $1, VICTORY_ROAD_2 + + db $1 ; signs + db $21, $3, $8 ; Route23Text8 + + db $7 ; people + db SPRITE_GUARD, $23 + 4, $4 + 4, $ff, $d0, $1 ; person + db SPRITE_GUARD, $38 + 4, $a + 4, $ff, $d0, $2 ; person + db SPRITE_SWIMMER, $55 + 4, $8 + 4, $ff, $d0, $3 ; person + db SPRITE_SWIMMER, $60 + 4, $b + 4, $ff, $d0, $4 ; person + db SPRITE_GUARD, $69 + 4, $c + 4, $ff, $d0, $5 ; person + db SPRITE_GUARD, $77 + 4, $8 + 4, $ff, $d0, $6 ; person + db SPRITE_GUARD, $88 + 4, $8 + 4, $ff, $d0, $7 ; person + + ; warp-to + EVENT_DISP $a, $8b, $7 ; ROUTE_22_GATE + EVENT_DISP $a, $8b, $8 ; ROUTE_22_GATE + EVENT_DISP $a, $1f, $4 ; VICTORY_ROAD_1 + EVENT_DISP $a, $1f, $e ; VICTORY_ROAD_2 + +Route23Blocks: ; 720 + INCBIN "maps/route23.blk" + +Route24_h: ; 0x50682 to 0x506a4 (34 bytes) (id=35) + db $00 ; tileset + db $12, $0a ; dimensions (y, x) + dw Route24Blocks, Route24Texts, Route24Script ; blocks, texts, scripts + db SOUTH | EAST ; connections + + ; connections data + + db CERULEAN_CITY + dw $4832, $c838 ; pointers (connected, current) (strip) + db $10, $14 ; bigness, width + db $00, $0a ; alignments (y, x) + dw $c703 ; window + + db ROUTE_25 + dw $4810, $c725 ; pointers (connected, current) (strip) + db $09, $1e ; bigness, width + db $00, $00 ; alignments (y, x) + dw $c70d ; window + + ; end connection data + + dw Route24Object ; objects + +Route24Object: ; 0x506a4 (size=67) + db $2c ; border tile + + db $0 ; warps + + db $0 ; signs + + db $8 ; people + db SPRITE_BLACK_HAIR_BOY_1, $f + 4, $b + 4, $ff, $d2, $41, ROCKET + $C8, $6 ; trainer + db SPRITE_BLACK_HAIR_BOY_1, $14 + 4, $5 + 4, $ff, $d1, $42, JR__TRAINER_M + $C8, $2 ; trainer + db SPRITE_BLACK_HAIR_BOY_1, $13 + 4, $b + 4, $ff, $d2, $43, JR__TRAINER_M + $C8, $3 ; trainer + db SPRITE_LASS, $16 + 4, $a + 4, $ff, $d3, $44, LASS + $C8, $7 ; trainer + db SPRITE_BUG_CATCHER, $19 + 4, $b + 4, $ff, $d2, $45, YOUNGSTER + $C8, $4 ; trainer + db SPRITE_LASS, $1c + 4, $a + 4, $ff, $d3, $46, LASS + $C8, $8 ; trainer + db SPRITE_BUG_CATCHER, $1f + 4, $b + 4, $ff, $d2, $47, BUG_CATCHER + $C8, $9 ; trainer + db SPRITE_BALL, $5 + 4, $a + 4, $ff, $ff, $88, TM_45 ; item + +Route24Blocks: ; 180 + INCBIN "maps/route24.blk" + +Route25_h: ; 0x5079b to 0x507b2 (23 bytes) (id=36) + db $00 ; tileset + db $09, $1e ; dimensions (y, x) + dw Route25Blocks, Route25Texts, Route25Script ; blocks, texts, scripts + db WEST ; connections + + ; connections data + + db ROUTE_24 + dw $46ee, $c754 ; pointers (connected, current) (strip) + db $0c, $0a ; bigness, width + db $00, $13 ; alignments (y, x) + dw $c702 ; window + + ; end connection data + + dw Route25Object ; objects + +Route25Object: ; 0x507b2 (size=94) + db $2c ; border tile + + db $1 ; warps + db $3, $2d, $0, BILLS_HOUSE + + db $1 ; signs + db $3, $2b, $b ; Route25Text11 + + db $a ; people + db SPRITE_BUG_CATCHER, $2 + 4, $e + 4, $ff, $d0, $41, YOUNGSTER + $C8, $5 ; trainer + db SPRITE_BUG_CATCHER, $5 + 4, $12 + 4, $ff, $d1, $42, YOUNGSTER + $C8, $6 ; trainer + db SPRITE_BLACK_HAIR_BOY_1, $4 + 4, $18 + 4, $ff, $d0, $43, JR__TRAINER_M + $C8, $2 ; trainer + db SPRITE_LASS, $8 + 4, $12 + 4, $ff, $d3, $44, LASS + $C8, $9 ; trainer + db SPRITE_BUG_CATCHER, $3 + 4, $20 + 4, $ff, $d2, $45, YOUNGSTER + $C8, $7 ; trainer + db SPRITE_LASS, $4 + 4, $25 + 4, $ff, $d0, $46, LASS + $C8, $a ; trainer + db SPRITE_HIKER, $4 + 4, $8 + 4, $ff, $d3, $47, HIKER + $C8, $2 ; trainer + db SPRITE_HIKER, $9 + 4, $17 + 4, $ff, $d1, $48, HIKER + $C8, $3 ; trainer + db SPRITE_HIKER, $7 + 4, $d + 4, $ff, $d3, $49, HIKER + $C8, $4 ; trainer + db SPRITE_BALL, $2 + 4, $16 + 4, $ff, $ff, $8a, TM_19 ; item + + ; warp-to + EVENT_DISP $1e, $3, $2d ; BILLS_HOUSE + +Route25Blocks: ; 270 + INCBIN "maps/route25.blk" + +IndigoPlateau_h: ; 0x5091e to 0x50935 (23 bytes) (id=9) + db $17 ; tileset + db $09, $0a ; dimensions (y, x) + dw IndigoPlateauBlocks, $4936, IndigoPlateauScript ; blocks, texts, scripts + db SOUTH ; connections + + ; connections data + + db ROUTE_23 + dw $43b2, $c7ab ; pointers (connected, current) (strip) + db $0a, $0a ; bigness, width + db $00, $00 ; alignments (y, x) + dw $c6f9 ; window + + ; end connection data + + dw IndigoPlateauObject ; objects + +IndigoPlateauScript: ; 0x50935 + ret +; 0x50936 + +IndigoPlateauObject: ; 0x50936 (size=20) + db $e ; border tile + + db $2 ; warps + db $5, $9, $0, INDIGO_PLATEAU_LOBBY + db $5, $a, $0, INDIGO_PLATEAU_LOBBY + + db $0 ; signs + + db $0 ; people + + ; warp-to + EVENT_DISP $a, $5, $9 ; INDIGO_PLATEAU_LOBBY + EVENT_DISP $a, $5, $a ; INDIGO_PLATEAU_LOBBY + +IndigoPlateauBlocks: ; 90 + INCBIN "maps/indigoplateau.blk" + +SaffronCity_h: ; 0x509a4 to 0x509dc (56 bytes) (id=10) + db $00 ; tileset + db $12, $14 ; dimensions (y, x) + dw SaffronCityBlocks, SaffronCityTexts, SaffronCityScript ; blocks, texts, scripts + db NORTH | SOUTH | WEST | EAST ; connections + + ; connections data + + db ROUTE_5 + dw $4668, $c6f0 ; pointers (connected, current) (strip) + db $0a, $0a ; bigness, width + db $23, $f6 ; alignments (y, x) + dw $c809 ; window + + db ROUTE_6 + dw $4079, $c912 ; pointers (connected, current) (strip) + db $0a, $0a ; bigness, width + db $00, $f6 ; alignments (y, x) + dw $c6f9 ; window + + db ROUTE_7 + dw $4058, $c79e ; pointers (connected, current) (strip) + db $09, $0a ; bigness, width + db $f8, $13 ; alignments (y, x) + dw $c702 ; window + + db ROUTE_8 + dw $41c6, $c7b5 ; pointers (connected, current) (strip) + db $09, $1e ; bigness, width + db $f8, $00 ; alignments (y, x) + dw $c70d ; window + + ; end connection data + + dw SaffronCityObject ; objects + +SaffronCityObject: ; 0x509dc (size=188) + db $f ; border tile + + db $8 ; warps + db $5, $7, $0, COPYCATS_HOUSE_1F + db $3, $1a, $0, FIGHTINGDOJO + db $3, $22, $0, SAFFRON_GYM + db $b, $d, $0, SAFFRON_HOUSE_1 + db $b, $19, $0, SAFFRON_MART + db $15, $12, $0, SILPH_CO_1F + db $1d, $9, $0, SAFFRON_POKECENTER + db $1d, $1d, $0, SAFFRON_HOUSE_2 + + db $a ; signs + db $5, $11, $10 ; SaffronCityText16 + db $5, $1b, $11 ; SaffronCityText17 + db $5, $23, $12 ; SaffronCityText18 + db $b, $1a, $13 ; SaffronCityText19 + db $13, $27, $14 ; SaffronCityText20 + db $15, $5, $15 ; SaffronCityText21 + db $15, $f, $16 ; SaffronCityText22 + db $1d, $a, $17 ; SaffronCityText23 + db $1d, $1b, $18 ; SaffronCityText24 + db $13, $1, $19 ; SaffronCityText25 + + db $f ; people + db SPRITE_ROCKET, $6 + 4, $7 + 4, $ff, $ff, $1 ; person + db SPRITE_ROCKET, $8 + 4, $14 + 4, $fe, $2, $2 ; person + db SPRITE_ROCKET, $4 + 4, $22 + 4, $ff, $ff, $3 ; person + db SPRITE_ROCKET, $c + 4, $d + 4, $ff, $ff, $4 ; person + db SPRITE_ROCKET, $19 + 4, $b + 4, $fe, $2, $5 ; person + db SPRITE_ROCKET, $d + 4, $20 + 4, $fe, $2, $6 ; person + db SPRITE_ROCKET, $1e + 4, $12 + 4, $fe, $2, $7 ; person + db SPRITE_OAK_AIDE, $e + 4, $8 + 4, $fe, $0, $8 ; person + db SPRITE_LAPRAS_GIVER, $17 + 4, $17 + 4, $ff, $ff, $9 ; person + db SPRITE_ERIKA, $1e + 4, $11 + 4, $fe, $2, $a ; person + db SPRITE_GENTLEMAN, $c + 4, $1e + 4, $ff, $d0, $b ; person + db SPRITE_BIRD, $c + 4, $1f + 4, $ff, $d0, $c ; person + db SPRITE_ROCKER, $8 + 4, $12 + 4, $ff, $d1, $d ; person + db SPRITE_ROCKET, $16 + 4, $12 + 4, $ff, $d0, $e ; person + db SPRITE_ROCKET, $16 + 4, $13 + 4, $ff, $d0, $f ; person + + ; warp-to + EVENT_DISP $14, $5, $7 ; COPYCATS_HOUSE_1F + EVENT_DISP $14, $3, $1a ; FIGHTINGDOJO + EVENT_DISP $14, $3, $22 ; SAFFRON_GYM + EVENT_DISP $14, $b, $d ; SAFFRON_HOUSE_1 + EVENT_DISP $14, $b, $19 ; SAFFRON_MART + EVENT_DISP $14, $15, $12 ; SILPH_CO_1F + EVENT_DISP $14, $1d, $9 ; SAFFRON_POKECENTER + EVENT_DISP $14, $1d, $1d ; SAFFRON_HOUSE_2 + +SaffronCityBlocks: ; 360 + INCBIN "maps/saffroncity.blk" + +SaffronCityScript: ; 0x50c00 + jp $3c3c +; 0x50c03 + +SaffronCityTexts: ; 0x50c03 + dw SaffronCityText1, SaffronCityText2, SaffronCityText3, SaffronCityText4, SaffronCityText5, SaffronCityText6, SaffronCityText7, SaffronCityText8, SaffronCityText9, SaffronCityText10, SaffronCityText11, SaffronCityText12, SaffronCityText13, SaffronCityText14, SaffronCityText15, SaffronCityText16, SaffronCityText17, SaffronCityText18, SaffronCityText19, SaffronCityText20, SaffronCityText21, SaffronCityText22, SaffronCityText23, SaffronCityText24, SaffronCityText25 + +SaffronCityText1: ; 0x50c35 + TX_FAR _SaffronCityText1 + db $50 + +SaffronCityText2: ; 0x50c3a + TX_FAR _SaffronCityText2 + db $50 + +SaffronCityText3: ; 0x50c3f + TX_FAR _SaffronCityText3 + db $50 + +SaffronCityText4: ; 0x50c44 + TX_FAR _SaffronCityText4 + db $50 + +SaffronCityText5: ; 0x50c49 + TX_FAR _SaffronCityText5 + db $50 + +SaffronCityText6: ; 0x50c4e + TX_FAR _SaffronCityText6 + db $50 + +SaffronCityText7: ; 0x50c53 + TX_FAR _SaffronCityText7 + db $50 + +SaffronCityText8: ; 0x50c58 + TX_FAR _SaffronCityText8 + db $50 + +SaffronCityText9: ; 0x50c5d + TX_FAR _SaffronCityText9 + db $50 + +SaffronCityText10: ; 0x50c62 + TX_FAR _SaffronCityText10 + db $50 + +SaffronCityText11: ; 0x50c67 + TX_FAR _SaffronCityText11 + db $50 + +SaffronCityText12: ; 0x50c6c + TX_FAR _SaffronCityText12 + +INCBIN "baserom.gbc",$50c70,$50c72 - $50c70 + +SaffronCityText13: ; 0x50c72 + TX_FAR _SaffronCityText13 + db $50 + +SaffronCityText14: ; 0x50c77 + TX_FAR _SaffronCityText14 + db $50 + +SaffronCityText15: ; 0x50c7c + TX_FAR _SaffronCityText15 + db $50 + +SaffronCityText16: ; 0x50c81 + TX_FAR _SaffronCityText16 + db $50 + +SaffronCityText17: ; 0x50c86 + TX_FAR _SaffronCityText17 + db $50 + +SaffronCityText18: ; 0x50c8b + TX_FAR _SaffronCityText18 + db $50 + +SaffronCityText20: ; 0x50c90 + TX_FAR _SaffronCityText20 + db $50 + +SaffronCityText21: ; 0x50c95 + TX_FAR _SaffronCityText21 + db $50 + +SaffronCityText22: ; 0x50c9a + TX_FAR _SaffronCityText22 + db $50 + +SaffronCityText24: ; 0x50c9f + TX_FAR _SaffronCityText24 + db $50 + +SaffronCityText25: ; 0x50ca4 + TX_FAR _SaffronCityText25 + db $50 + +Route20Script: ; 0x50ca9 + ld hl, $d7e7 + bit 0, [hl] + res 0, [hl] + call nz, $4cc6 + call $3c3c + ld hl, $4d3a + ld de, $4d1c + ld a, [$d628] + call $3160 + ld [$d628], a + ret +; 0x50cc6 + +INCBIN "baserom.gbc",$50cc6,$5c + +Route20Texts: ; 0x50d22 + dw Route20Text1, Route20Text2, Route20Text3, Route20Text4, Route20Text5, Route20Text6, Route20Text7, Route20Text8, Route20Text9, Route20Text10, Route20Text11, Route20Text12 + +INCBIN "baserom.gbc",$50d3a,$79 + +Route20Text1: ; 0x50db3 + db $08 ; asm + ld hl, $4d3a + call LoadTrainerHeader + jp $24d7 + +Route20Text2: ; 0x50dbd + db $08 ; asm + ld hl, $4d46 + call LoadTrainerHeader + jp $24d7 + +Route20Text3: ; 0x50dc7 + db $08 ; asm + ld hl, $4d52 + call LoadTrainerHeader + jp $24d7 + +Route20Text4: ; 0x50dd1 + db $08 ; asm + ld hl, $4d5e + call LoadTrainerHeader + jp $24d7 + +Route20Text5: ; 0x50ddb + db $08 ; asm + ld hl, $4d6a + call LoadTrainerHeader + jp $24d7 + +Route20Text6: ; 0x50de5 + db $08 ; asm + ld hl, $4d76 + call LoadTrainerHeader + jp $24d7 + +Route20Text7: ; 0x50def + db $08 ; asm + ld hl, $4d82 + call LoadTrainerHeader + jp $24d7 + +Route20Text8: ; 0x50df9 + db $08 ; asm + ld hl, $4d8e + call LoadTrainerHeader + jp $24d7 + +Route20Text9: ; 0x50e03 + db $08 ; asm + ld hl, $4d9a + call LoadTrainerHeader + jp $24d7 + +Route20Text10: ; 0x50e0d + db $08 ; asm + ld hl, $4da6 + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$50e17,$96 + +Route20Text12: +Route20Text11: ; 0x50ead + TX_FAR _Route20Text11 + db $50 + +Route22Script: ; 0x50eb2 + call $3c3c + ld hl, $4ebe + ld a, [$d60a] + jp $3d97 +; 0x50ebe + +Route22Scripts: ; 0x50ebe + dw Route22Script0, Route22Script1, Route22Script2, Route22Script3 + +INCBIN "baserom.gbc",$50ec6,$3a + +Route22Script0: ; 0x50f00 + ld a, [$d7eb] + bit 7, a + ret z + ld hl, $4f2d + call $34bf + ret nc + ld a, [$cd3d] + ld [$cf0d], a + xor a + ld [$ff00+$b4], a + ld a, $f0 + ld [$cd6b], a + ld a, $2 + ld [$d528], a + ld a, [$d7eb] + bit 0, a + jr nz, .asm_50f32 ; 0x50f25 $b + bit 1, a + jp nz, $504e + ret + inc b + dec e + dec b + dec e + rst $38 +.asm_50f32 + ld a, $1 + ld [$cd4f], a + xor a + ld [$cd50], a + ld a, $4c + call Predef + ld a, [$d700] + and a + jr z, .asm_50f4e ; 0x50f44 $8 + ld a, $ff + ld [$c0ee], a + call $23b1 +.asm_50f4e + ld c, $2 + ld a, $de + call $23a1 + ld a, $1 + ld [$ff00+$8c], a + call $4ee6 + ld a, $1 + ld [$d60a], a + ret +; 0x50f62 + +Route22Script1: ; 0x50f62 + ld a, [$d730] + bit 0, a + ret nz + ld a, [$cf0d] + cp $1 + jr nz, .asm_50f78 ; 0x50f6d $9 + ld a, $4 + ld [$d528], a + ld a, $4 + jr .asm_50f7a ; 0x50f76 $2 +.asm_50f78 + ld a, $c +.asm_50f7a + ld [$ff00+$8d], a + ld a, $1 + ld [$ff00+$8c], a + call $34a6 + xor a + ld [$cd6b], a + ld a, $1 + ld [$ff00+$8c], a + call $2920 + ld hl, $d72d + set 6, [hl] + set 7, [hl] + ld hl, $51b7 + ld de, $51bc + call $3354 + ld a, $e1 + ld [$d059], a + ld hl, $4faf + call $4ed6 + ld a, $2 + ld [$d60a], a + ret +; 0x50faf + +INCBIN "baserom.gbc",$50faf,$50fb5 - $50faf + +Route22Script2: ; 0x50fb5 + ld a, [$d057] + cp $ff + jp z, $4ece + ld a, [$c109] + and a + jr nz, .asm_50fc7 ; 0x50fc1 $4 + ld a, $4 + jr .asm_50fc9 ; 0x50fc5 $2 +.asm_50fc7 + ld a, $c +.asm_50fc9 + ld [$ff00+$8d], a + ld a, $1 + ld [$ff00+$8c], a + call $34a6 + ld a, $f0 + ld [$cd6b], a + ld hl, $d7eb + set 5, [hl] + ld a, $1 + ld [$ff00+$8c], a + call $2920 + ld a, $ff + ld [$c0ee], a + call $23b1 + ld b, $2 + ld hl, $5b47 + call Bankswitch + ld a, [$cf0d] + cp $1 + jr nz, .asm_50fff ; 0x50ff8 $5 + call $5008 + jr .asm_51002 ; 0x50ffd $3 +.asm_50fff + call $500d +.asm_51002 + ld a, $3 + ld [$d60a], a + ret +; 0x51008 + +INCBIN "baserom.gbc",$51008,$5102a - $51008 + +Route22Script3: ; 0x5102a + ld a, [$d730] + bit 0, a + ret nz + xor a + ld [$cd6b], a + ld a, $22 + ld [$cc4d], a + ld a, $11 + call Predef + call $2307 + ld hl, $d7eb + res 0, [hl] + res 7, [hl] + ld a, $0 + ld [$d60a], a + ret +; 0x5104e + +INCBIN "baserom.gbc",$5104e,$127 + +Route22Texts: ; 0x51175 + dw Route22Text1, Route22Text2, Route22Text3 + +Route22Text1: ; 0x5117b + db $08 ; asm + ld a, [$d7eb] + bit 5, a + jr z, .asm_a88cf ; 0x51181 + ld hl, $51b2 + call PrintText + jr .asm_48088 ; 0x51189 +.asm_a88cf ; 0x5118b + ld hl, $51ad + call PrintText +.asm_48088 ; 0x51191 + jp $24d7 + +Route22Text2: ; 0x51194 + db $08 ; asm + ld a, [$d7eb] + bit 6, a + jr z, .asm_58c0a ; 0x5119a + ld hl, $51c6 + call PrintText + jr .asm_673ee ; 0x511a2 +.asm_58c0a ; 0x511a4 + ld hl, $51c1 + call PrintText +.asm_673ee ; 0x511aa + jp $24d7 + +INCBIN "baserom.gbc",$511ad,$28 + +Route22Text3: ; 0x511d5 + TX_FAR _Route22Text3 + db $50 + +Route23Script: ; 0x511da + call $51e9 + call $3c3c + ld hl, $5213 + ld a, [$d667] + jp $3d97 +; 0x511e9 + +INCBIN "baserom.gbc",$511e9,$51213 - $511e9 + +Route23Scripts: ; 0x51213 + dw Route23Script0 + +INCBIN "baserom.gbc",$51215,$4 + +Route23Script0: ; 0x51219 + ld hl, $5255 + ld a, [$d361] + ld b, a + ld e, $0 + ld c, $7 +.asm_51224 + ld a, [hli] + cp $ff + ret z + inc e + dec c + cp b + jr nz, .asm_51224 ; 0x5122b $f7 + cp $23 + jr nz, .asm_51237 ; 0x5122f $6 + ld a, [$d362] + cp $e + ret nc +.asm_51237 + ld a, e + ld [$ff00+$8c], a + ld a, c + ld [$cd3d], a + ld b, $2 + ld hl, $d7ed + ld a, $10 + call Predef + ld a, c + and a + ret nz + call $525d + call $2920 + xor a + ld [$ff00+$b4], a + ret +; 0x51255 + +INCBIN "baserom.gbc",$51255,$a2 + +Route23Texts: ; 0x512f7 + dw Route23Text1, Route23Text2, Route23Text3, Route23Text4, Route23Text5, Route23Text6, Route23Text7, Route23Text8 + +Route23Text1: ; 0x51307 + db $08 ; asm + ld a, $6 + call $5346 + jp $24d7 + +Route23Text2: ; 0x51310 + db $08 ; asm + ld a, $5 + call $5346 + jp $24d7 + +Route23Text3: ; 0x51319 + db $08 ; asm + ld a, $4 + call $5346 + jp $24d7 + +Route23Text4: ; 0x51322 + db $08 ; asm + ld a, $3 + call $5346 + jp $24d7 + +Route23Text5: ; 0x5132b + db $08 ; asm + ld a, $2 + call $5346 + jp $24d7 + +Route23Text6: ; 0x51334 + db $08 ; asm + ld a, $1 + call $5346 + jp $24d7 + +Route23Text7: ; 0x5133d + db $8 + ld a, $0 + call $5346 + jp $24d7 +; 0x51346 + +INCBIN "baserom.gbc",$51346,$62 + +Route23Text8: ; 0x513a8 + TX_FAR _Route23Text8 + db $50 + +Route24Script: ; 0x513ad + call $3c3c + ld hl, $545b + ld de, $53cb + ld a, [$d602] + call $3160 + ld [$d602], a + ret +; 0x513c0 + +INCBIN "baserom.gbc",$513c0,$8b + +Route24Texts: ; 0x5144b + dw Route24Text1, Route24Text2, Route24Text3, Route24Text4, Route24Text5, Route24Text6, Route24Text7, Route24Text8 + +INCBIN "baserom.gbc",$5145b,$49 + +Route24Text1: ; 0x514a4 + db $8 + ld hl, $d7f0 + res 1, [hl] + ld a, [$d7ef] + bit 0, a + jr nz, .asm_a03f5 ; 0x514af $48 + ld hl, $5510 + call PrintText + ld bc, $3101 + call GiveItem + jr nc, .asm_3a23d ; 0x514bd $43 + ld hl, $d7ef + set 0, [hl] + ld hl, $551a + call PrintText + ld hl, $5526 + call PrintText + ld hl, $d72d + set 6, [hl] + set 7, [hl] + ld hl, $552b + ld de, $552b + call $3354 + ld a, [$ff00+$8c] + ld [$cf13], a + call $336a + call $32d7 + xor a + ld [$ff00+$b4], a + ld a, $3 + ld [$d602], a + ld [$da39], a + jp $24d7 +.asm_a03f5 ; 0x514f9 + ld hl, $5530 + call PrintText + jp $24d7 +.asm_3a23d ; 0x51502 + ld hl, $5521 + call PrintText + ld hl, $d7f0 + set 1, [hl] + jp $24d7 +; 0x51510 + +INCBIN "baserom.gbc",$51510,$25 + +Route24Text2: ; 0x51535 + db $08 ; asm + ld hl, $545b + call LoadTrainerHeader + jp $24d7 + +Route24Text3: ; 0x5153f + db $08 ; asm + ld hl, $5467 + call LoadTrainerHeader + jp $24d7 + +Route24Text4: ; 0x51549 + db $08 ; asm + ld hl, $5473 + call LoadTrainerHeader + jp $24d7 + +Route24Text5: ; 0x51553 + db $08 ; asm + ld hl, $547f + call LoadTrainerHeader + jp $24d7 + +Route24Text6: ; 0x5155d + db $08 ; asm + ld hl, $548b + call LoadTrainerHeader + jp $24d7 + +Route24Text7: ; 0x51567 + db $08 ; asm + ld hl, $5497 + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$51571,$515cb - $51571 + +Route25Script: ; 0x515cb + call $55e1 + call $3c3c + ld hl, $563e + ld de, $5622 + ld a, [$d603] + call $3160 + ld [$d603], a + ret +; 0x515e1 + +INCBIN "baserom.gbc",$515e1,$47 + +Route25Texts: ; 0x51628 + dw Route25Text1, Route25Text2, Route25Text3, Route25Text4, Route25Text5, Route25Text6, Route25Text7, Route25Text8, Route25Text9, Route25Text10, Route25Text11 + +INCBIN "baserom.gbc",$5163e,$6d + +Route25Text1: ; 0x516ab + db $08 ; asm + ld hl, $563e + call LoadTrainerHeader + jp $24d7 + +Route25Text2: ; 0x516b5 + db $08 ; asm + ld hl, $564a + call LoadTrainerHeader + jp $24d7 + +Route25Text3: ; 0x516bf + db $08 ; asm + ld hl, $5656 + call LoadTrainerHeader + jp $24d7 + +Route25Text4: ; 0x516c9 + db $08 ; asm + ld hl, $5662 + call LoadTrainerHeader + jp $24d7 + +Route25Text5: ; 0x516d3 + db $08 ; asm + ld hl, $566e + call LoadTrainerHeader + jp $24d7 + +Route25Text6: ; 0x516dd + db $08 ; asm + ld hl, $567a + call LoadTrainerHeader + jp $24d7 + +Route25Text7: ; 0x516e7 + db $08 ; asm + ld hl, $5686 + call LoadTrainerHeader + jp $24d7 + +Route25Text8: ; 0x516f1 + db $08 ; asm + ld hl, $5692 + call LoadTrainerHeader + jp $24d7 + +Route25Text9: ; 0x516fb + db $08 ; asm + ld hl, $569e + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$51705,$87 + +Route25Text11: ; 0x5178c + TX_FAR _Route25Text11 + db $50 + +VictoryRoad2_h: ; 0x51791 to 0x5179d (12 bytes) (id=194) + db $11 ; tileset + db $09, $0f ; dimensions (y, x) + dw VictoryRoad2Blocks, VictoryRoad2Texts, VictoryRoad2Script ; blocks, texts, scripts + db $00 ; connections + + dw VictoryRoad2Object ; objects + +VictoryRoad2Script: ; 0x5179d + ld hl, $d126 + bit 6, [hl] + res 6, [hl] + call nz, $57c4 + ld hl, $d126 + bit 5, [hl] + res 5, [hl] + call nz, $57c9 + call $3c3c + ld hl, $5835 + ld de, $57eb + ld a, [$d63f] + call $3160 + ld [$d63f], a + ret +; 0x517c4 + +INCBIN "baserom.gbc",$517c4,$57 + +VictoryRoad2Texts: ; 0x5181b + dw VictoryRoad2Text1, VictoryRoad2Text2, VictoryRoad2Text3, VictoryRoad2Text4, VictoryRoad2Text5, VictoryRoad2Text6, VictoryRoad2Text7, VictoryRoad2Text8, VictoryRoad2Text9, VictoryRoad2Text10, VictoryRoad2Text11, VictoryRoad2Text12, VictoryRoad2Text13 + +INCBIN "baserom.gbc",$51835,$49 + +VictoryRoad2Text1: ; 0x5187e + db $08 ; asm + ld hl, $5835 + call LoadTrainerHeader + jp $24d7 + +VictoryRoad2Text2: ; 0x51888 + db $08 ; asm + ld hl, $5841 + call LoadTrainerHeader + jp $24d7 + +VictoryRoad2Text3: ; 0x51892 + db $08 ; asm + ld hl, $584d + call LoadTrainerHeader + jp $24d7 + +VictoryRoad2Text4: ; 0x5189c + db $08 ; asm + ld hl, $5859 + call LoadTrainerHeader + jp $24d7 + +VictoryRoad2Text5: ; 0x518a6 + db $08 ; asm + ld hl, $5865 + call LoadTrainerHeader + jp $24d7 + +VictoryRoad2Text6: ; 0x518b0 + db $08 ; asm + ld hl, $5871 + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$518ba,$5b + +VictoryRoad2Object: ; 0x51915 (size=154) + db $7d ; border tile + + db $7 ; warps + db $8, $0, $2, VICTORY_ROAD_1 + db $7, $1d, $3, $ff + db $8, $1d, $3, $ff + db $7, $17, $0, VICTORY_ROAD_3 + db $e, $19, $2, VICTORY_ROAD_3 + db $7, $1b, $1, VICTORY_ROAD_3 + db $1, $1, $3, VICTORY_ROAD_3 + + db $0 ; signs + + db $d ; people + db SPRITE_HIKER, $9 + 4, $c + 4, $ff, $d2, $41, BLACKBELT + $C8, $9 ; trainer + db SPRITE_BLACK_HAIR_BOY_2, $d + 4, $15 + 4, $ff, $d2, $42, JUGGLER + $C8, $2 ; trainer + db SPRITE_BLACK_HAIR_BOY_1, $8 + 4, $13 + 4, $ff, $d0, $43, TAMER + $C8, $5 ; trainer + db SPRITE_BLACK_HAIR_BOY_2, $2 + 4, $4 + 4, $ff, $d0, $44, POKEMANIAC + $C8, $6 ; trainer + db SPRITE_BLACK_HAIR_BOY_2, $3 + 4, $1a + 4, $ff, $d2, $45, JUGGLER + $C8, $5 ; trainer + db SPRITE_BIRD, $5 + 4, $b + 4, $ff, $d1, $46, MOLTRES, $32 ; trainer + db SPRITE_BALL, $5 + 4, $1b + 4, $ff, $ff, $87, TM_17 ; item + db SPRITE_BALL, $9 + 4, $12 + 4, $ff, $ff, $88, FULL_HEAL ; item + db SPRITE_BALL, $b + 4, $9 + 4, $ff, $ff, $89, TM_05 ; item + db SPRITE_BALL, $0 + 4, $b + 4, $ff, $ff, $8a, GUARD_SPEC_ ; item + db SPRITE_BOULDER, $e + 4, $4 + 4, $ff, $10, $b ; person + db SPRITE_BOULDER, $5 + 4, $5 + 4, $ff, $10, $c ; person + db SPRITE_BOULDER, $10 + 4, $17 + 4, $ff, $10, $d ; person + + ; warp-to + EVENT_DISP $f, $8, $0 ; VICTORY_ROAD_1 + EVENT_DISP $f, $7, $1d + EVENT_DISP $f, $8, $1d + EVENT_DISP $f, $7, $17 ; VICTORY_ROAD_3 + EVENT_DISP $f, $e, $19 ; VICTORY_ROAD_3 + EVENT_DISP $f, $7, $1b ; VICTORY_ROAD_3 + EVENT_DISP $f, $1, $1 ; VICTORY_ROAD_3 + +VictoryRoad2Blocks: ; 135 + INCBIN "maps/victoryroad2.blk" + +MtMoon2_h: ; 0x51a36 to 0x51a42 (12 bytes) (id=60) + db $11 ; tileset + db $0e, $0e ; dimensions (y, x) + dw MtMoon2Blocks, $5a46, MtMoon2Script ; blocks, texts, scripts + db $00 ; connections + + dw MtMoon2Object ; objects + +MtMoon2Script: ; 0x51a42 + call $3c3c + ret +; 0x51a46 + +INCBIN "baserom.gbc",$51a46,$7 + +MtMoon2Object: ; 0x51a4d (size=68) + db $3 ; border tile + + db $8 ; warps + db $5, $5, $2, MT_MOON_1 + db $b, $11, $0, MT_MOON_3 + db $9, $19, $3, MT_MOON_1 + db $f, $19, $4, MT_MOON_1 + db $11, $15, $1, MT_MOON_3 + db $1b, $d, $2, MT_MOON_3 + db $3, $17, $3, MT_MOON_3 + db $3, $1b, $2, $ff + + db $0 ; signs + + db $0 ; people + + ; warp-to + EVENT_DISP $e, $5, $5 ; MT_MOON_1 + EVENT_DISP $e, $b, $11 ; MT_MOON_3 + EVENT_DISP $e, $9, $19 ; MT_MOON_1 + EVENT_DISP $e, $f, $19 ; MT_MOON_1 + EVENT_DISP $e, $11, $15 ; MT_MOON_3 + EVENT_DISP $e, $1b, $d ; MT_MOON_3 + EVENT_DISP $e, $3, $17 ; MT_MOON_3 + EVENT_DISP $e, $3, $1b + +MtMoon2Blocks: ; 196 + INCBIN "maps/mtmoon2.blk" + +SilphCo7_h: ; 0x51b55 to 0x51b61 (12 bytes) (id=212) + db $16 ; tileset + db $09, $0d ; dimensions (y, x) + dw SilphCo7Blocks, SilphCo7Texts, SilphCo7Script ; blocks, texts, scripts + db $00 ; connections + + dw SilphCo7Object ; objects + +SilphCo7Script: ; 0x51b61 + call $5b77 + call $3c3c + ld hl, $5d5d + ld de, $5c17 + ld a, [$d648] + call $3160 + ld [$d648], a + ret +; 0x51b77 + +INCBIN "baserom.gbc",$51b77,$1c8 + +SilphCo7Texts: ; 0x51d3f + dw SilphCo7Text1, SilphCo7Text2, SilphCo7Text3, SilphCo7Text4, SilphCo7Text5, SilphCo7Text6, SilphCo7Text7, SilphCo7Text8, SilphCo7Text9, SilphCo7Text10, SilphCo7Text11, SilphCo7Text12, SilphCo7Text13, SilphCo7Text14, SilphCo7Text15 + +INCBIN "baserom.gbc",$51d55 + 8,$39 - 8 + +SilphCo7Text1: ; 0x51d8e + db $08 ; asm + ld a, [$d72e] + bit 0, a + jr z, .asm_d7e17 ; 0x51d94 + ld a, [$d838] + bit 7, a + jr nz, .asm_688b4 ; 0x51d9b + ld hl, $5ddd + call PrintText + jr .asm_b3069 ; 0x51da3 +.asm_d7e17 ; 0x51da5 + ld hl, $5dd3 + call PrintText + ld bc,(LAPRAS << 8) | 15 + call GivePokemon + jr nc, .asm_b3069 ; 0x51db1 + ld a, [$ccd3] + and a + call z, $3865 + call $3c3c + ld hl, $5dd8 + call PrintText + ld hl, $d72e + set 0, [hl] + jr .asm_b3069 ; 0x51dc8 +.asm_688b4 ; 0x51dca + ld hl, $5de2 + call PrintText +.asm_b3069 ; 0x51dd0 + jp $24d7 + +INCBIN "baserom.gbc",$51dd3,$51de7 - $51dd3 + +SilphCo7Text2: ; 0x51de7 + db $8 + ld a, [$d838] + bit 7, a + jr nz, .asm_892ce ; 0x51ded $8 + ld hl, $5e00 + call PrintText + jr .asm_e4d89 ; 0x51df5 $6 +.asm_892ce ; 0x51df7 + ld hl, $5e05 + call PrintText +.asm_e4d89 ; 0x51dfd + jp $24d7 +; 0x51e00 +INCBIN "baserom.gbc",$51e00,$a + +SilphCo7Text3: ; 0x51e0a + db $08 ; asm + ld a, [$d838] + bit 7, a + jr nz, .asm_254aa ; 0x51e10 + ld hl, $5e23 + call PrintText + jr .asm_6472b ; 0x51e18 +.asm_254aa ; 0x51e1a + ld hl, $5e28 + call PrintText +.asm_6472b ; 0x51e20 + jp $24d7 + +INCBIN "baserom.gbc",$51e23,$51e2d - $51e23 + +SilphCo7Text4: ; 0x51e2d + db $08 ; asm + ld a, [$d838] + bit 7, a + jr nz, .asm_0f7ee ; 0x51e33 + ld hl, $5e46 + call PrintText + jr .asm_27a32 ; 0x51e3b +.asm_0f7ee ; 0x51e3d + ld hl, $5e4b + call PrintText +.asm_27a32 ; 0x51e43 + jp $24d7 + +INCBIN "baserom.gbc",$51e46,$51e50 - $51e46 + +SilphCo7Text5: ; 0x51e50 + db $08 ; asm + ld hl, $5d5d + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$51e5a,$51e69 - $51e5a + +SilphCo7Text6: ; 0x51e69 + db $08 ; asm + ld hl, $5d69 + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$51e73,$51e82 - $51e73 + +SilphCo7Text7: ; 0x51e82 + db $08 ; asm + ld hl, $5d75 + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$51e8c,$51e9b - $51e8c + +SilphCo7Text8: ; 0x51e9b + db $08 ; asm + ld hl, $5d81 + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$51ea5,$51eb4 - $51ea5 + +SilphCo7Text9: ; 0x51eb4 + db $08 ; asm + ld hl, $5ebe + call PrintText + jp $24d7 + +INCBIN "baserom.gbc",$51ebe,$51ec3 - $51ebe + +SilphCo7Text13: ; 0x51ec3 +INCBIN "baserom.gbc",$51ec3,5 + +SilphCo7Text14: ; 0x51ec8 +INCBIN "baserom.gbc",$51ec8,5 + +INCBIN "baserom.gbc",$51ecd,$51ed2 - $51ecd + +SilphCo7Text15: ; 0x51ed2 +INCBIN "baserom.gbc",$51ed2,5 + +SilphCo7Object: ; 0x51ed7 (size=128) + db $2e ; border tile + + db $6 ; warps + db $0, $10, $1, SILPH_CO_8F + db $0, $16, $0, SILPH_CO_6F + db $0, $12, $0, SILPH_CO_ELEVATOR + db $7, $5, $3, SILPH_CO_11F + db $3, $5, $8, SILPH_CO_3F + db $f, $15, $3, SILPH_CO_5F + + db $0 ; signs + + db $b ; people + db SPRITE_LAPRAS_GIVER, $5 + 4, $1 + 4, $ff, $ff, $1 ; person + db SPRITE_LAPRAS_GIVER, $d + 4, $d + 4, $ff, $d1, $2 ; person + db SPRITE_LAPRAS_GIVER, $a + 4, $7 + 4, $ff, $ff, $3 ; person + db SPRITE_ERIKA, $8 + 4, $a + 4, $ff, $ff, $4 ; person + db SPRITE_ROCKET, $1 + 4, $d + 4, $ff, $d0, $45, ROCKET + $C8, $20 ; trainer + db SPRITE_OAK_AIDE, $d + 4, $2 + 4, $ff, $d0, $46, SCIENTIST + $C8, $8 ; trainer + db SPRITE_ROCKET, $2 + 4, $14 + 4, $ff, $d2, $47, ROCKET + $C8, $21 ; trainer + db SPRITE_ROCKET, $e + 4, $13 + 4, $ff, $d3, $48, ROCKET + $C8, $22 ; trainer + db SPRITE_BLUE, $7 + 4, $3 + 4, $ff, $d1, $9 ; person + db SPRITE_BALL, $9 + 4, $1 + 4, $ff, $ff, $8a, CALCIUM ; item + db SPRITE_BALL, $b + 4, $18 + 4, $ff, $ff, $8b, TM_03 ; item + + ; warp-to + EVENT_DISP $d, $0, $10 ; SILPH_CO_8F + EVENT_DISP $d, $0, $16 ; SILPH_CO_6F + EVENT_DISP $d, $0, $12 ; SILPH_CO_ELEVATOR + EVENT_DISP $d, $7, $5 ; SILPH_CO_11F + EVENT_DISP $d, $3, $5 ; SILPH_CO_3F + EVENT_DISP $d, $f, $15 ; SILPH_CO_5F + +SilphCo7Blocks: ; 117 + INCBIN "maps/silphco7.blk" + +Mansion2_h: ; 0x51fcc to 0x51fd8 (12 bytes) (id=214) + db $16 ; tileset + db $0e, $0f ; dimensions (y, x) + dw $6110, $604d, $5fd8 ; blocks, texts, scripts + db $00 ; connections + + dw Mansion2Object ; objects + +INCBIN "baserom.gbc",$51fd8,$52064 - $51fd8 + +Mansion2Text1: ; 0x52064 + db $08 ; asm + ld hl, $6057 + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$5206e,$f + +Mansion2Text3: ; 0x5207d + TX_FAR _Mansion2Text3 + db $50 + +Mansion2Text4: ; 0x52082 + TX_FAR _Mansion2Text4 + db $50 + +INCBIN "baserom.gbc",$52087,$4a + +Mansion2Object: ; 0x520d1 (size=63) + db $1 ; border tile + + db $4 ; warps + db $a, $5, $4, MANSION_1 + db $a, $7, $0, MANSION_3 + db $e, $19, $2, MANSION_3 + db $1, $6, $1, MANSION_3 + + db $0 ; signs + + db $4 ; people + db SPRITE_BLACK_HAIR_BOY_2, $11 + 4, $3 + 4, $fe, $2, $41, BURGLAR + $C8, $7 ; trainer + db SPRITE_BALL, $7 + 4, $1c + 4, $ff, $ff, $82, CALCIUM ; item + db SPRITE_BOOK_MAP_DEX, $2 + 4, $12 + 4, $ff, $ff, $3 ; person + db SPRITE_BOOK_MAP_DEX, $16 + 4, $3 + 4, $ff, $ff, $4 ; person + + ; warp-to + EVENT_DISP $f, $a, $5 ; MANSION_1 + EVENT_DISP $f, $a, $7 ; MANSION_3 + EVENT_DISP $f, $e, $19 ; MANSION_3 + EVENT_DISP $f, $1, $6 ; MANSION_3 + +INCBIN "baserom.gbc",$52110,$d2 + +Mansion3_h: ; 0x521e2 to 0x521ee (12 bytes) (id=215) + db $16 ; tileset + db $09, $0f ; dimensions (y, x) + dw $6326, $628a, $61ee ; blocks, texts, scripts + db $00 ; connections + + dw Mansion3Object ; objects + +INCBIN "baserom.gbc",$521ee,$522af - $521ee + +Mansion3Text1: ; 0x522af + db $08 ; asm + ld hl, $6296 + call LoadTrainerHeader + jp $24d7 + +Mansion3Text2: ; 0x522b9 + db $08 ; asm + ld hl, $62a2 + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$522c3,$522e1 - $522c3 + +Mansion3Text5: ; 0x522e1 + TX_FAR _Mansion3Text5 + db $50 + +Mansion3Object: ; 0x522e6 (size=64) + db $1 ; border tile + + db $3 ; warps + db $a, $7, $1, MANSION_2 + db $1, $6, $3, MANSION_2 + db $e, $19, $2, MANSION_2 + + db $0 ; signs + + db $5 ; people + db SPRITE_BLACK_HAIR_BOY_2, $b + 4, $5 + 4, $fe, $2, $41, BURGLAR + $C8, $8 ; trainer + db SPRITE_OAK_AIDE, $b + 4, $14 + 4, $ff, $d2, $42, SCIENTIST + $C8, $c ; trainer + db SPRITE_BALL, $10 + 4, $1 + 4, $ff, $ff, $83, MAX_POTION ; item + db SPRITE_BALL, $5 + 4, $19 + 4, $ff, $ff, $84, IRON ; item + db SPRITE_BOOK_MAP_DEX, $c + 4, $6 + 4, $ff, $ff, $5 ; person + + ; warp-to + EVENT_DISP $f, $a, $7 ; MANSION_2 + EVENT_DISP $f, $1, $6 ; MANSION_2 + EVENT_DISP $f, $e, $19 ; MANSION_2 + +INCBIN "baserom.gbc",$52326,$87 + +Mansion4_h: ; 0x523ad to 0x523b9 (12 bytes) (id=216) + db $16 ; tileset + db $0e, $0f ; dimensions (y, x) + dw $64dd, $6436, $63b9 ; blocks, texts, scripts + db $00 ; connections + + dw Mansion4Object ; objects + +INCBIN "baserom.gbc",$523b9,$52461 - $523b9 + +Mansion4Text1: ; 0x52461 + db $08 ; asm + ld hl, $6448 + call LoadTrainerHeader + jp $24d7 + +Mansion4Text2: ; 0x5246b + db $08 ; asm + ld hl, $6454 + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$52475,$1e + +Mansion4Text7: ; 0x52493 + TX_FAR _Mansion4Text7 + db $50 + +Mansion4Object: ; 0x52498 (size=69) + db $1 ; border tile + + db $1 ; warps + db $16, $17, $5, MANSION_1 + + db $0 ; signs + + db $8 ; people + db SPRITE_BLACK_HAIR_BOY_2, $17 + 4, $10 + 4, $ff, $ff, $41, BURGLAR + $C8, $9 ; trainer + db SPRITE_OAK_AIDE, $b + 4, $1b + 4, $ff, $d0, $42, SCIENTIST + $C8, $d ; trainer + db SPRITE_BALL, $2 + 4, $a + 4, $ff, $ff, $83, RARE_CANDY ; item + db SPRITE_BALL, $16 + 4, $1 + 4, $ff, $ff, $84, FULL_RESTORE ; item + db SPRITE_BALL, $19 + 4, $13 + 4, $ff, $ff, $85, TM_14 ; item + db SPRITE_BALL, $4 + 4, $5 + 4, $ff, $ff, $86, TM_22 ; item + db SPRITE_BOOK_MAP_DEX, $14 + 4, $10 + 4, $ff, $ff, $7 ; person + db SPRITE_BALL, $d + 4, $5 + 4, $ff, $ff, $88, SECRET_KEY ; item + + ; warp-to + EVENT_DISP $f, $16, $17 ; MANSION_1 + +INCBIN "baserom.gbc",$524DD,$5271B - $524DD + +CeladonPrizeMenu: ; 14:671B + ld b,COIN_CASE + call IsItemInBag + jr nz,.havingCoinCase\@ + ld hl,RequireCoinCaseTextPtr + jp PrintText +.havingCoinCase\@ + ld hl,$D730 + set 6,[hl] + ld hl,ExchangeCoinsForPrizesTextPtr + call PrintText +; the following are the menu settings + xor a + ld [$CC26],a + ld [$CC2A],a + ld a,$03 + ld [$CC29],a + ld a,$03 + ld [$CC28],a + ld a,$04 + ld [$CC24],a + ld a,$01 + ld [$CC25],a + call PrintPrizePrice ; 687A + FuncCoord 0,2 + ld hl,Coord + ld b,$08 + ld c,$10 + call TextBoxBorder + call GetPrizeMenuId ;678E + call $2429 + ld hl,WhichPrizeTextPtr + call PrintText + call $3ABE ; menu choice handler + bit 1,a ; keypress = B (Cancel) + jr nz,.NoChoice\@ + ld a,[$CC26] + cp a,$03 ; "NO,THANKS" choice + jr z,.NoChoice\@ + call HandlePrizeChoice ; 14:68C6 +.NoChoice\@ + ld hl,$D730 + res 6,[hl] + ret + +RequireCoinCaseTextPtr: ; 14:677E + TX_FAR _RequireCoinCaseText ; 22:628E + db $0D + db "@" + +ExchangeCoinsForPrizesTextPtr: ; 14:6784 + TX_FAR _ExchangeCoinsForPrizesText ; 22:62A9 + db "@" + +WhichPrizeTextPtr: ; 14:6789 + TX_FAR _WhichPrizeText ; 22:62CD + db "@" + +GetPrizeMenuId: ; 14:678E +; determine which one among the three +; prize-texts has been selected +; using the text ID (stored in [$FF8C]) +; load the three prizes at $D13D-$D13F +; load the three prices ar $D141-$D146 +; display the three prizes' names +; (distinguishing between Pokemon names +; and Items (specifically TMs) names) + ld a,[$FF8C] + sub a,$03 ; prize-texts' id are 3, 4 and 5 + ld [$D12F],a ; prize-texts' id (relative, i.e. 0, 1 or 2) + add a + add a + ld d,$00 + ld e,a + ld hl,PrizeDifferentMenuPtrs + add hl,de + ld a,[hli] + ld d,[hl] + ld e,a + inc hl + push hl + ld hl,W_PRIZE1 + call $3829 ; XXX what does this do + pop hl + ld a,[hli] + ld h,[hl] + ld l,a + ld de,$D141 + ld bc,$0006 + call CopyData + ld a,[$D12F] + cp a,$02 ;is TM_menu? + jr nz,.putMonName\@ + ld a,[W_PRIZE1] + ld [$D11E],a + call GetItemName + FuncCoord 2,4 + ld hl,Coord + call PlaceString + ld a,[W_PRIZE2] + ld [$D11E],a + call GetItemName + FuncCoord 2,6 + ld hl,Coord + call PlaceString + ld a,[W_PRIZE3] + ld [$D11E],a + call GetItemName + FuncCoord 2,8 + ld hl,Coord + call PlaceString + jr .putNoThanksText\@ +.putMonName\@ ; 14:67EC + ld a,[W_PRIZE1] + ld [$D11E],a + call GetMonName + FuncCoord 2,4 + ld hl,Coord + call PlaceString + ld a,[W_PRIZE2] + ld [$D11E],a + call GetMonName + FuncCoord 2,6 + ld hl,Coord + call PlaceString + ld a,[W_PRIZE3] + ld [$D11E],a + call GetMonName + FuncCoord 2,8 + ld hl,Coord + call PlaceString +.putNoThanksText\@ ; 14:6819 + FuncCoord 2,10 + ld hl,Coord + ld de,NoThanksText + call PlaceString +; put prices on the right side of the textbox + ld de,$D141 + FuncCoord 13,5 + ld hl,Coord +; reg. c: +; [low nybble] number of bytes +; [bit 765 = %100] space-padding (not zero-padding) + ld c,(1 << 7 | 2) +; Function $15CD displays BCD value (same routine +; used by text-command $02) + call $15CD ; Print_BCD + ld de,$D143 + FuncCoord 13,7 + ld hl,Coord + ld c,(%1 << 7 | 2) + call $15CD + ld de,$D145 + FuncCoord 13,9 + ld hl,Coord + ld c,(1 << 7 | 2) + jp $15CD + +PrizeDifferentMenuPtrs: ; 14:6843 + dw PrizeMenuMon1Entries + dw PrizeMenuMon1Cost + + dw PrizeMenuMon2Entries + dw PrizeMenuMon2Cost + + dw PrizeMenuTMsEntries + dw PrizeMenuTMsCost + +NoThanksText: ; 14:684F + db "NO THANKS@" + +PrizeMenuMon1Entries: ; 14:6859 + db ABRA + db CLEFAIRY + db NIDORINA + db "@" +PrizeMenuMon1Cost: ; 14:685D + db $01,$80 + db $05,$00 + db $12,$00 + db "@" + +PrizeMenuMon2Entries: ; 14:6864 + db DRATINI + db SCYTHER + db PORYGON + db "@" +PrizeMenuMon2Cost: ; 14:6868 + db $28,$00 ; 2800 Coins + db $55,$00 ; 5500 Coins + db $99,$99 ; 9999 Coins + db "@" + +PrizeMenuTMsEntries: ; 14:686F + db TM_23 + db TM_15 + db TM_50 + db "@" +PrizeMenuTMsCost: ; 14:6873 + db $33,$00 ; 3300 Coins + db $55,$00 ; 5500 Coins + db $77,$00 ; 7700 Coins + db "@" + +PrintPrizePrice: ; 14:687A + FuncCoord 11,0 + ld hl,Coord + ld b,$01 + ld c,$07 + call TextBoxBorder + call $2429 ; XXX save OAM? + FuncCoord 12,0 + ld hl,Coord + ld de,.CoinText\@ + call PlaceString + FuncCoord 13,1 + ld hl,Coord + ld de,.SixSpacesText\@ + call PlaceString + FuncCoord 13,1 + ld hl,Coord + ld de,W_PLAYERCOINS1 + ld c,%10000010 + call $15CD + ret + +.CoinText\@ ; 14:68A5 + db "COIN@" + +.SixSpacesText\@ ; 14:68AA + db " @" + +LoadCoinsToSubtract: ; 14:68B1 + ld a,[$D139] ; backup of selected menu_entry + add a + ld d,$00 + ld e,a + ld hl,$D141 ; first prize's price + add hl,de ; get selected prize's price + xor a + ld [$FF9F],a + ld a,[hli] + ld [$FFA0],a + ld a,[hl] + ld [$FFA1],a + ret + +HandlePrizeChoice: ; 14:68C6 + ld a,[$CC26] ; selected menu_entry + ld [$D139],a + ld d,$00 + ld e,a + ld hl,W_PRIZE1 + add hl,de + ld a,[hl] + ld [$D11E],a + ld a,[$D12F] + cp a,$02 ; is prize a TM? + jr nz,.GetMonName\@ + call GetItemName + jr .GivePrize\@ +.GetMonName\@ ; 14:68E3 + call GetMonName +.GivePrize\@ ; 14:68E6 + ld hl,SoYouWantPrizeTextPtr + call PrintText + call $35EC ; yes/no textbox + ld a,[$CC26] ; yes/no answer (Y=0, N=1) + and a + jr nz,.PrintOhFineThen\@ + call LoadCoinsToSubtract + call $35B1 ; subtract COINs from COIN_CASE + jr c,.NotEnoughCoins\@ + ld a,[$D12F] + cp a,$02 + jr nz,.GiveMon\@ + ld a,[$D11E] + ld b,a + ld a,$01 + ld c,a + call $3E2E ; GiveItem + jr nc,.BagIsFull\@ + jr .SubtractCoins\@ +.GiveMon\@ ; 14:6912 + ld a,[$D11E] + ld [$CF91],a + push af + call GetPrizeMonLevel ; 14:6977 + ld c,a + pop af + ld b,a + call $3E48 ; GivePokemon + push af + ld a,[$CCD3] ; XXX is there room? + and a + call z,$3865 + pop af + ret nc +.SubtractCoins\@ ; 14:692C + call LoadCoinsToSubtract + ld hl,$FFA1 + ld de,W_PLAYERCOINS2 + ld c,$02 ; how many bytes + ld a,$0C + call Predef ; subtract coins (BCD daa operations) + jp PrintPrizePrice +.BagIsFull\@ ; 14:693F + ld hl,PrizeRoomBagIsFullTextPtr + jp PrintText +.NotEnoughCoins\@ ; 14:6945 + ld hl,SorryNeedMoreCoinsTextPtr + jp PrintText +.PrintOhFineThen\@ ; 14:694B + ld hl,OhFineThenTextPtr + jp PrintText + +UnknownData52951: ; 14:6951 +; XXX what's this? + db $00,$01,$00,$01,$00,$01,$00,$00,$01 + +HereYouGoTextPtr: + TX_FAR _HereYouGoText ; 22:62E7 + db $0D + db "@" + +SoYouWantPrizeTextPtr: ; 14:6960 + TX_FAR _SoYouWantPrizeText ; 22:62F6 + db "@" + +SorryNeedMoreCoinsTextPtr: ; 14:6965 + TX_FAR _SorryNeedMoreCoins ; 22:630B + db $0D + db "@" + +PrizeRoomBagIsFullTextPtr: ; 14:696B + TX_FAR _OopsYouDontHaveEnoughRoomText ; 22:6329 + db $0D + db "@" + +OhFineThenTextPtr: ; 14:6971 + TX_FAR _OhFineThenText; 22:634C + db $0D ; wait keypress (A/B) without blink + db "@" + +GetPrizeMonLevel: ; 14:6977 + ld a,[$CF91] + ld b,a + ld hl,PrizeMonLevelDictionary +.loop\@ ; 14:697E + ld a,[hli] + cp b + jr z,.matchFound\@ + inc hl + jr .loop\@ +.matchFound\@ ; 14:6985 + ld a,[hl] + ld [$D127],a + ret + +PrizeMonLevelDictionary: ; 14:698A + db ABRA,9 + db CLEFAIRY,8 + db NIDORINA,17 + + db DRATINI,18 + db SCYTHER,25 + db PORYGON,26 + +INCBIN "baserom.gbc",$52996,$54000 - $52996 + +SECTION "bank15",DATA,BANK[$15] + +INCBIN "baserom.gbc",$54000,$54022 - $54000 + +Route2Object: ; 0x54022 (size=72) + db $f ; border tile + + db $6 ; warps + db $9, $c, $0, DIGLETTS_CAVE_EXIT + db $b, $3, $1, VIRIDIAN_FOREST_EXIT + db $13, $f, $0, ROUTE_2_HOUSE + db $23, $10, $1, ROUTE_2_GATE + db $27, $f, $2, ROUTE_2_GATE + db $2b, $3, $2, VIRIDIAN_FOREST_ENTRANCE + + db $2 ; signs + db $41, $5, $3 ; Route2Text3 + db $b, $b, $4 ; Route2Text4 + + db $2 ; people + db SPRITE_BALL, $36 + 4, $d + 4, $ff, $ff, $81, MOON_STONE ; item + db SPRITE_BALL, $2d + 4, $d + 4, $ff, $ff, $82, HP_UP ; item + + ; warp-to + EVENT_DISP $a, $9, $c ; DIGLETTS_CAVE_EXIT + EVENT_DISP $a, $b, $3 ; VIRIDIAN_FOREST_EXIT + EVENT_DISP $a, $13, $f ; ROUTE_2_HOUSE + EVENT_DISP $a, $23, $10 ; ROUTE_2_GATE + EVENT_DISP $a, $27, $f ; ROUTE_2_GATE + EVENT_DISP $a, $2b, $3 ; VIRIDIAN_FOREST_ENTRANCE + +INCBIN "baserom.gbc",$5406a,$14 + +Route2Blocks: ; 360 + INCBIN "maps/route2.blk" + +Route3_h: ; 0x541e6 to 0x54208 (34 bytes) (id=14) + db $00 ; tileset + db $09, $23 ; dimensions (y, x) + dw Route3Blocks, Route3Texts, Route3Script ; blocks, texts, scripts + db NORTH | WEST ; connections + + ; connections data + + db ROUTE_4 + dw $44fa, $c704 ; pointers (connected, current) (strip) + db $0d, $2d ; bigness, width + db $11, $ce ; alignments (y, x) + dw $c8b4 ; window + + db PEWTER_CITY + dw $460b, $c6e8 ; pointers (connected, current) (strip) + db $0f, $14 ; bigness, width + db $08, $27 ; alignments (y, x) + dw $c716 ; window + + ; end connection data + + dw Route3Object ; objects + +Route3Object: ; 0x54208 (size=77) + db $2c ; border tile + + db $0 ; warps + + db $1 ; signs + db $9, $3b, $a ; Route3Text10 + + db $9 ; people + db SPRITE_BLACK_HAIR_BOY_2, $b + 4, $39 + 4, $ff, $ff, $1 ; person + db SPRITE_BUG_CATCHER, $6 + 4, $a + 4, $ff, $d3, $42, BUG_CATCHER + $C8, $4 ; trainer + db SPRITE_BUG_CATCHER, $4 + 4, $e + 4, $ff, $d0, $43, YOUNGSTER + $C8, $1 ; trainer + db SPRITE_LASS, $9 + 4, $10 + 4, $ff, $d2, $44, LASS + $C8, $1 ; trainer + db SPRITE_BUG_CATCHER, $5 + 4, $13 + 4, $ff, $d0, $45, BUG_CATCHER + $C8, $5 ; trainer + db SPRITE_LASS, $4 + 4, $17 + 4, $ff, $d2, $46, LASS + $C8, $2 ; trainer + db SPRITE_BUG_CATCHER, $9 + 4, $16 + 4, $ff, $d2, $47, YOUNGSTER + $C8, $2 ; trainer + db SPRITE_BUG_CATCHER, $6 + 4, $18 + 4, $ff, $d3, $48, BUG_CATCHER + $C8, $6 ; trainer + db SPRITE_LASS, $a + 4, $21 + 4, $ff, $d1, $49, LASS + $C8, $3 ; trainer + +Route3Blocks: ; 315 + INCBIN "maps/route3.blk" + +Route4_h: ; 0x54390 to 0x543b2 (34 bytes) (id=15) + db $00 ; tileset + db $09, $2d ; dimensions (y, x) + dw Route4Blocks, Route4Texts, Route4Script; blocks, texts, scripts + db SOUTH | EAST ; connections + + ; connections data + + db ROUTE_3 + dw $426b, $c94c ; pointers (connected, current) (strip) + db $0d, $23 ; bigness, width + db $00, $32 ; alignments (y, x) + dw $c712 ; window + + db CERULEAN_CITY + dw $4844, $c718 ; pointers (connected, current) (strip) + db $0f, $14 ; bigness, width + db $08, $00 ; alignments (y, x) + dw $c703 ; window + + ; end connection data + + dw Route4Object ; objects + +Route4Object: ; 0x543b2 (size=58) + db $2c ; border tile + + db $3 ; warps + db $5, $b, $0, MT_MOON_POKECENTER + db $5, $12, $0, MT_MOON_1 + db $5, $18, $7, MT_MOON_2 + + db $3 ; signs + db $5, $c, $4 ; Route4Text4 + db $7, $11, $5 ; Route4Text5 + db $7, $1b, $6 ; Route4Text6 + + db $3 ; people + db SPRITE_LASS, $8 + 4, $9 + 4, $fe, $0, $1 ; person + db SPRITE_LASS, $3 + 4, $3f + 4, $ff, $d3, $42, LASS + $C8, $4 ; trainer + db SPRITE_BALL, $3 + 4, $39 + 4, $ff, $ff, $83, TM_04 ; item + + ; warp-to + EVENT_DISP $2d, $5, $b ; MT_MOON_POKECENTER + EVENT_DISP $2d, $5, $12 ; MT_MOON_1 + EVENT_DISP $2d, $5, $18 ; MT_MOON_2 + +Route4Blocks: ; 405 + INCBIN "maps/route4.blk" + +Route5_h: ; 0x54581 to 0x545a3 (34 bytes) (id=16) + db $00 ; tileset + db $12, $0a ; dimensions (y, x) + dw Route5Blocks, Route5Texts, Route5Script ; blocks, texts, scripts + db NORTH | SOUTH ; connections + + ; connections data + + db CERULEAN_CITY + dw $495e, $c6e8 ; pointers (connected, current) (strip) + db $10, $14 ; bigness, width + db $23, $0a ; alignments (y, x) + dw $c8bd ; window + + db SAFFRON_CITY + dw $4a9a, $c838 ; pointers (connected, current) (strip) + db $10, $14 ; bigness, width + db $00, $0a ; alignments (y, x) + dw $c703 ; window + + ; end connection data + + dw Route5Object ; objects + +Route5Object: ; 0x545a3 (size=47) + db $a ; border tile + + db $5 ; warps + db $1d, $a, $3, ROUTE_5_GATE + db $1d, $9, $2, ROUTE_5_GATE + db $21, $a, $0, ROUTE_5_GATE + db $1b, $11, $0, PATH_ENTRANCE_ROUTE_5 + db $15, $a, $0, DAYCAREM + + db $1 ; signs + db $1d, $11, $1 ; Route5Text1 + + db $0 ; people + + ; warp-to + EVENT_DISP $a, $1d, $a ; ROUTE_5_GATE + EVENT_DISP $a, $1d, $9 ; ROUTE_5_GATE + EVENT_DISP $a, $21, $a ; ROUTE_5_GATE + EVENT_DISP $a, $1b, $11 ; PATH_ENTRANCE_ROUTE_5 + EVENT_DISP $a, $15, $a ; DAYCAREM + +Route5Blocks: ; 180 + INCBIN "maps/route5.blk" + +Route9_h: ; 0x54686 to 0x546a8 (34 bytes) (id=20) + db $00 ; tileset + db $09, $1e ; dimensions (y, x) + dw Route9Blocks, Route9Texts, Route9Script ; blocks, texts, scripts + db WEST | EAST ; connections + + ; connections data + + db CERULEAN_CITY + dw $4855, $c6e8 ; pointers (connected, current) (strip) + db $0f, $14 ; bigness, width + db $08, $27 ; alignments (y, x) + dw $c716 ; window + + db ROUTE_10 + dw $4356, $c775 ; pointers (connected, current) (strip) + db $0c, $0a ; bigness, width + db $00, $00 ; alignments (y, x) + dw $c6f9 ; window + + ; end connection data + + dw Route9Object ; objects + +Route9Object: ; 0x546a8 (size=86) + db $2c ; border tile + + db $0 ; warps + + db $1 ; signs + db $7, $19, $b ; Route9Text11 + + db $a ; people + db SPRITE_LASS, $a + 4, $d + 4, $ff, $d2, $41, JR__TRAINER_F + $C8, $5 ; trainer + db SPRITE_BLACK_HAIR_BOY_1, $7 + 4, $18 + 4, $ff, $d2, $42, JR__TRAINER_M + $C8, $7 ; trainer + db SPRITE_BLACK_HAIR_BOY_1, $7 + 4, $1f + 4, $ff, $d3, $43, JR__TRAINER_M + $C8, $8 ; trainer + db SPRITE_LASS, $8 + 4, $30 + 4, $ff, $d3, $44, JR__TRAINER_F + $C8, $6 ; trainer + db SPRITE_HIKER, $f + 4, $10 + 4, $ff, $d2, $45, HIKER + $C8, $b ; trainer + db SPRITE_HIKER, $3 + 4, $2b + 4, $ff, $d2, $46, HIKER + $C8, $6 ; trainer + db SPRITE_BUG_CATCHER, $2 + 4, $16 + 4, $ff, $d0, $47, BUG_CATCHER + $C8, $d ; trainer + db SPRITE_HIKER, $f + 4, $2d + 4, $ff, $d3, $48, HIKER + $C8, $5 ; trainer + db SPRITE_BUG_CATCHER, $8 + 4, $28 + 4, $ff, $d3, $49, BUG_CATCHER + $C8, $e ; trainer + db SPRITE_BALL, $f + 4, $a + 4, $ff, $ff, $8a, TM_30 ; item + +Route9Blocks: ; 270 + INCBIN "maps/route9.blk" + +Route13_h: ; 0x5480c to 0x5482e (34 bytes) (id=24) + db $00 ; tileset + db $09, $1e ; dimensions (y, x) + dw Route13Blocks, Route13Texts, Route13Script ; blocks, texts, scripts + db NORTH | WEST ; connections + + ; connections data + + db ROUTE_12 + dw $490e, $c6ff ; pointers (connected, current) (strip) + db $0a, $0a ; bigness, width + db $6b, $d8 ; alignments (y, x) + dw $ca49 ; window + + db ROUTE_14 + dw $4a19, $c754 ; pointers (connected, current) (strip) + db $0c, $0a ; bigness, width + db $00, $13 ; alignments (y, x) + dw $c702 ; window + + ; end connection data + + dw Route13Object ; objects + +Route13Object: ; 0x5482e (size=93) + db $43 ; border tile + + db $0 ; warps + + db $3 ; signs + db $d, $f, $b ; Route13Text11 + db $5, $21, $c ; Route13Text12 + db $b, $1f, $d ; Route13Text13 + + db $a ; people + db SPRITE_BLACK_HAIR_BOY_1, $a + 4, $31 + 4, $ff, $d3, $41, BIRD_KEEPER + $C8, $1 ; trainer + db SPRITE_LASS, $a + 4, $30 + 4, $ff, $d0, $42, JR__TRAINER_F + $C8, $c ; trainer + db SPRITE_LASS, $9 + 4, $1b + 4, $ff, $d0, $43, JR__TRAINER_F + $C8, $d ; trainer + db SPRITE_LASS, $a + 4, $17 + 4, $ff, $d2, $44, JR__TRAINER_F + $C8, $e ; trainer + db SPRITE_LASS, $5 + 4, $32 + 4, $ff, $d0, $45, JR__TRAINER_F + $C8, $f ; trainer + db SPRITE_BLACK_HAIR_BOY_1, $4 + 4, $c + 4, $ff, $d3, $46, BIRD_KEEPER + $C8, $2 ; trainer + db SPRITE_FOULARD_WOMAN, $6 + 4, $21 + 4, $ff, $d0, $47, BEAUTY + $C8, $4 ; trainer + db SPRITE_FOULARD_WOMAN, $6 + 4, $20 + 4, $ff, $d0, $48, BEAUTY + $C8, $5 ; trainer + db SPRITE_BIKER, $7 + 4, $a + 4, $ff, $d1, $49, BIKER + $C8, $1 ; trainer + db SPRITE_BLACK_HAIR_BOY_1, $d + 4, $7 + 4, $ff, $d1, $4a, BIRD_KEEPER + $C8, $3 ; trainer + +Route13Blocks: ; 270 + INCBIN "maps/route13.blk" + +Route14_h: ; 0x54999 to 0x549bb (34 bytes) (id=25) + db $00 ; tileset + db $1b, $0a ; dimensions (y, x) + dw Route14Blocks, Route14Texts, Route14Script ; blocks, texts, scripts + db WEST | EAST ; connections + + ; connections data + + db ROUTE_15 + dw $49e7, $c838 ; pointers (connected, current) (strip) + db $09, $1e ; bigness, width + db $dc, $3b ; alignments (y, x) + dw $c72a ; window + + db ROUTE_13 + dw $488b, $c725 ; pointers (connected, current) (strip) + db $09, $1e ; bigness, width + db $00, $00 ; alignments (y, x) + dw $c70d ; window + + ; end connection data + + dw Route14Object ; objects + +Route14Object: ; 0x549bb (size=87) + db $43 ; border tile + + db $0 ; warps + + db $1 ; signs + db $d, $11, $b ; Route14Text11 + + db $a ; people + db SPRITE_BLACK_HAIR_BOY_1, $4 + 4, $4 + 4, $ff, $d0, $41, BIRD_KEEPER + $C8, $e ; trainer + db SPRITE_BLACK_HAIR_BOY_1, $6 + 4, $f + 4, $ff, $d0, $42, BIRD_KEEPER + $C8, $f ; trainer + db SPRITE_BLACK_HAIR_BOY_1, $b + 4, $c + 4, $ff, $d0, $43, BIRD_KEEPER + $C8, $10 ; trainer + db SPRITE_BLACK_HAIR_BOY_1, $f + 4, $e + 4, $ff, $d1, $44, BIRD_KEEPER + $C8, $11 ; trainer + db SPRITE_BLACK_HAIR_BOY_1, $1f + 4, $f + 4, $ff, $d2, $45, BIRD_KEEPER + $C8, $4 ; trainer + db SPRITE_BLACK_HAIR_BOY_1, $31 + 4, $6 + 4, $ff, $d1, $46, BIRD_KEEPER + $C8, $5 ; trainer + db SPRITE_BIKER, $27 + 4, $5 + 4, $ff, $d0, $47, BIKER + $C8, $d ; trainer + db SPRITE_BIKER, $1e + 4, $4 + 4, $ff, $d3, $48, BIKER + $C8, $e ; trainer + db SPRITE_BIKER, $1e + 4, $f + 4, $ff, $d2, $49, BIKER + $C8, $f ; trainer + db SPRITE_BIKER, $1f + 4, $4 + 4, $ff, $d3, $4a, BIKER + $C8, $2 ; trainer + +Route14Blocks: ; 270 + INCBIN "maps/route14.blk" + +Route17_h: ; 0x54b20 to 0x54b42 (34 bytes) (id=28) + db $00 ; tileset + db $48, $0a ; dimensions (y, x) + dw Route17Blocks, Route17Texts, Route17Script ; blocks, texts, scripts + db NORTH | SOUTH ; connections + + ; connections data + + db ROUTE_16 + dw $4bfc, $c6eb ; pointers (connected, current) (strip) + db $0d, $14 ; bigness, width + db $11, $00 ; alignments (y, x) + dw $c7d3 ; window + + db ROUTE_18 + dw $4c9c, $cb9b ; pointers (connected, current) (strip) + db $0d, $19 ; bigness, width + db $00, $00 ; alignments (y, x) + dw $c708 ; window + + ; end connection data + + dw Route17Object ; objects + +Route17Object: ; 0x54b42 (size=102) + db $43 ; border tile + + db $0 ; warps + + db $6 ; signs + db $33, $9, $b ; Route17Text11 + db $3f, $9, $c ; Route17Text12 + db $4b, $9, $d ; Route17Text13 + db $57, $9, $e ; Route17Text14 + db $6f, $9, $f ; Route17Text15 + db $8d, $9, $10 ; Route17Text16 + + db $a ; people + db SPRITE_BIKER, $13 + 4, $c + 4, $ff, $d2, $41, CUE_BALL + $C8, $4 ; trainer + db SPRITE_BIKER, $10 + 4, $b + 4, $ff, $d3, $42, CUE_BALL + $C8, $5 ; trainer + db SPRITE_BIKER, $12 + 4, $4 + 4, $ff, $d1, $43, BIKER + $C8, $8 ; trainer + db SPRITE_BIKER, $20 + 4, $7 + 4, $ff, $d2, $44, BIKER + $C8, $9 ; trainer + db SPRITE_BIKER, $22 + 4, $e + 4, $ff, $d3, $45, BIKER + $C8, $a ; trainer + db SPRITE_BIKER, $3a + 4, $11 + 4, $ff, $d2, $46, CUE_BALL + $C8, $6 ; trainer + db SPRITE_BIKER, $44 + 4, $2 + 4, $ff, $d3, $47, CUE_BALL + $C8, $7 ; trainer + db SPRITE_BIKER, $62 + 4, $e + 4, $ff, $d3, $48, CUE_BALL + $C8, $8 ; trainer + db SPRITE_BIKER, $62 + 4, $5 + 4, $ff, $d2, $49, BIKER + $C8, $b ; trainer + db SPRITE_BIKER, $76 + 4, $a + 4, $ff, $d0, $4a, BIKER + $C8, $c ; trainer + +Route17Blocks: ; 720 + INCBIN "maps/route17.blk" + +Route19_h: ; 0x54e78 to 0x54e9a (34 bytes) (id=30) + db $00 ; tileset + db $1b, $0a ; dimensions (y, x) + dw Route19Blocks, Route19Texts, Route19Script ; blocks, texts, scripts + db NORTH | WEST ; connections + + ; connections data + + db FUCHSIA_CITY + dw $4db4, $c6e8 ; pointers (connected, current) (strip) + db $10, $14 ; bigness, width + db $23, $0a ; alignments (y, x) + dw $c8bd ; window + + db ROUTE_20 + dw $41ac, $c838 ; pointers (connected, current) (strip) + db $09, $32 ; bigness, width + db $dc, $63 ; alignments (y, x) + dw $c752 ; window + + ; end connection data + + dw Route19Object ; objects + +Route19Object: ; 0x54e9a (size=87) + db $43 ; border tile + + db $0 ; warps + + db $1 ; signs + db $9, $b, $b ; Route19Text11 + + db $a ; people + db SPRITE_BLACK_HAIR_BOY_1, $7 + 4, $8 + 4, $ff, $d2, $41, SWIMMER + $C8, $2 ; trainer + db SPRITE_BLACK_HAIR_BOY_1, $7 + 4, $d + 4, $ff, $d2, $42, SWIMMER + $C8, $3 ; trainer + db SPRITE_SWIMMER, $19 + 4, $d + 4, $ff, $d2, $43, SWIMMER + $C8, $4 ; trainer + db SPRITE_SWIMMER, $1b + 4, $4 + 4, $ff, $d3, $44, SWIMMER + $C8, $5 ; trainer + db SPRITE_SWIMMER, $1f + 4, $10 + 4, $ff, $d1, $45, SWIMMER + $C8, $6 ; trainer + db SPRITE_SWIMMER, $b + 4, $9 + 4, $ff, $d0, $46, SWIMMER + $C8, $7 ; trainer + db SPRITE_SWIMMER, $2b + 4, $8 + 4, $ff, $d2, $47, BEAUTY + $C8, $c ; trainer + db SPRITE_SWIMMER, $2b + 4, $b + 4, $ff, $d3, $48, BEAUTY + $C8, $d ; trainer + db SPRITE_SWIMMER, $2a + 4, $9 + 4, $ff, $d1, $49, SWIMMER + $C8, $8 ; trainer + db SPRITE_SWIMMER, $2c + 4, $a + 4, $ff, $d0, $4a, BEAUTY + $C8, $e ; trainer + +Route19Blocks: ; 270 + INCBIN "maps/route19.blk" + +Route21_h: ; 0x54fff to 0x55021 (34 bytes) (id=32) + db $00 ; tileset + db $2d, $0a ; dimensions (y, x) + dw Route21Blocks, Route21Texts, Route21Script ; blocks, texts, scripts + db NORTH | SOUTH ; connections + + ; connections data + + db PALLET_TOWN + dw $4339, $c6eb ; pointers (connected, current) (strip) + db $0a, $0a ; bigness, width + db $11, $00 ; alignments (y, x) + dw $c779 ; window + + db CINNABAR_ISLAND + dw $4069, $c9eb ; pointers (connected, current) (strip) + db $0a, $0a ; bigness, width + db $00, $00 ; alignments (y, x) + dw $c6f9 ; window + + ; end connection data + + dw Route21Object ; objects + +Route21Object: ; 0x55021 (size=76) + db $43 ; border tile + + db $0 ; warps + + db $0 ; signs + + db $9 ; people + db SPRITE_FISHER2, $18 + 4, $4 + 4, $ff, $d2, $41, FISHER + $C8, $7 ; trainer + db SPRITE_FISHER2, $19 + 4, $6 + 4, $ff, $d0, $42, FISHER + $C8, $9 ; trainer + db SPRITE_SWIMMER, $1f + 4, $a + 4, $ff, $d1, $43, SWIMMER + $C8, $c ; trainer + db SPRITE_SWIMMER, $1e + 4, $c + 4, $ff, $d3, $44, CUE_BALL + $C8, $9 ; trainer + db SPRITE_SWIMMER, $3f + 4, $10 + 4, $ff, $d0, $45, SWIMMER + $C8, $d ; trainer + db SPRITE_SWIMMER, $47 + 4, $5 + 4, $ff, $d3, $46, SWIMMER + $C8, $e ; trainer + db SPRITE_SWIMMER, $47 + 4, $f + 4, $ff, $d2, $47, SWIMMER + $C8, $f ; trainer + db SPRITE_FISHER2, $38 + 4, $e + 4, $ff, $d2, $48, FISHER + $C8, $8 ; trainer + db SPRITE_FISHER2, $39 + 4, $11 + 4, $ff, $d3, $49, FISHER + $C8, $a ; trainer + +Route21Blocks: ; 450 + INCBIN "maps/route21.blk" + +DayCareMBlocks: ; 16 + INCBIN "maps/daycarem.blk" + +FuchsiaHouse3Blocks: ; 16 + INCBIN "maps/fuchsiahouse3.blk" + +INCBIN "baserom.gbc",$5524f,$554e3 - $5524f + +Route2Script: ; 0x554e3 + jp $3c3c +; 0x554e6 + +INCBIN "baserom.gbc",$554e6,$8 + +Route2Text3: ; 0x554ee + TX_FAR _Route2Text3 + db $50 + +Route2Text4: ; 0x554f3 + TX_FAR _Route2Text4 + db $50 + +Route3Script: ; 0x554f8 + call $3c3c + ld hl, $5525 + ld de, $550b + ld a, [$d5f8] + call $3160 + ld [$d5f8], a + ret +; 0x5550b + +INCBIN "baserom.gbc",$5550b,$6 + +Route3Texts: ; 0x55511 + dw Route3Text1, Route3Text2, Route3Text3, Route3Text4, Route3Text5, Route3Text6, Route3Text7, Route3Text8, Route3Text9, Route3Text10 + +INCBIN "baserom.gbc",$55525,$61 + +Route3Text1: ; 0x55586 + TX_FAR _Route3Text1 + db $50 + +Route3Text2: ; 0x5558b + db $08 ; asm + ld hl, $5525 + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$55595,$555a4 - $55595 + +Route3Text3: ; 0x555a4 + db $08 ; asm + ld hl, $5531 + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$555ae,$555bd - $555ae + +Route3Text4: ; 0x555bd + db $08 ; asm + ld hl, $553d + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$555c7,$555d6 - $555c7 + +Route3Text5: ; 0x555d6 + db $08 ; asm + ld hl, $5549 + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$555e0,$555ef - $555e0 + +Route3Text6: ; 0x555ef + db $08 ; asm + ld hl, $5555 + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$555f9,$55608 - $555f9 + +Route3Text7: ; 0x55608 + db $08 ; asm + ld hl, $5561 + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$55612,$55621 - $55612 + +Route3Text8: ; 0x55621 + db $08 ; asm + ld hl, $556d + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$5562b,$5563a - $5562b + +Route3Text9: ; 0x5563a + db $08 ; asm + ld hl, $5579 + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$55644,$f + +Route3Text10: ; 0x55653 + TX_FAR _Route3Text10 + db $50 + +Route4Script: ; 0x55658 + call $3c3c + ld hl, $567d + ld de, $566b + ld a, [$d5f9] + call $3160 + ld [$d5f9], a + ret +; 0x5566b + +INCBIN "baserom.gbc",$5566b,$6 + +Route4Texts: ; 0x55671 + dw Route4Text1, Route4Text2, Route4Text3, Route4Text4, Route4Text5, Route4Text6 + +INCBIN "baserom.gbc",$5567d,$d + +Route4Text1: ; 0x5568a + TX_FAR _Route4Text1 + db $50 + +Route4Text2: ; 0x5568f + db $08 ; asm + ld hl, $567d + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$55699,$f + +Route4Text5: ; 0x556a8 + TX_FAR _Route4Text5 + db $50 + +Route4Text6: ; 0x556ad + TX_FAR _Route4Text6 + db $50 + +Route5Script: ; 0x556b2 + jp $3c3c +; 0x556b5 + +Route5Texts: ; 0x556b5 + dw Route5Text1 + +Route5Text1: ; 0x556b7 + TX_FAR _Route5Text1 + db $50 + +Route9Script: ; 0x556bc + call $3c3c + ld hl, $56eb + ld de, $56cf + ld a, [$d604] + call $3160 + ld [$d604], a + ret +; 0x556cf + +INCBIN "baserom.gbc",$556cf,$6 + +Route9Texts: ; 0x556d5 + dw Route9Text1, Route9Text2, Route9Text3, Route9Text4, Route9Text5, Route9Text6, Route9Text7, Route9Text8, Route9Text9, Route9Text10, Route9Text11 + +Route12Text13: ; 0x556eb +INCBIN "baserom.gbc",$556eb,$556f0 - $556eb + +Route12Text14: ; 0x556f0 +INCBIN "baserom.gbc",$556f0,$55758 - $556f0 + +Route9Text1: ; 0x55758 + db $8 ; asm + ld hl, $56eb + jr asm_8be3d ; 0x5575c $2e + +Route9Text2: + db $8 ; asm + ld hl, $56f7 + jr asm_8be3d ; 0x55762 $28 + +Route9Text3: + db $8 ; asm + ld hl, $5703 + jr asm_8be3d ; 0x55768 $22 + +Route9Text4: + db $8 ; asm + ld hl, $570f + jr asm_8be3d ; 0x5576e $1c + +Route9Text5: + db $8 ; asm + ld hl, $571b + jr asm_8be3d ; 0x55774 $16 + +Route9Text6: + db $8 ; asm + ld hl, $5727 + jr asm_8be3d ; 0x5577a $10 + +Route9Text7: + db $8 ; asm + ld hl, $5733 + jr asm_8be3d ; 0x55780 $a + +Route9Text8: + db $8 ; asm + ld hl, $573f + jr asm_8be3d ; 0x55786 $4 + +Route9Text9: + db $8 ; asm + ld hl, $574b +asm_8be3d: ; 0x5578c + call $31cc + jp $24d7 +; 0x55792 + +INCBIN "baserom.gbc",$55792,$87 + +Route9Text11: ; 0x55819 + TX_FAR _Route9Text11 + db $50 + +Route13Script: ; 0x5581e + call $3c3c + ld hl, $5851 + ld de, $5831 + ld a, [$d61a] + call $3160 + ld [$d61a], a + ret +; 0x55831 + +INCBIN "baserom.gbc",$55831,$6 + +Route13Texts: ; 0x55837 + dw Route13Text1, Route13Text2, Route13Text3, Route13Text4, Route13Text5, Route13Text6, Route13Text7, Route13Text8, Route13Text9, Route13Text10, Route13Text11, Route13Text12, Route13Text13 + +INCBIN "baserom.gbc",$55851,$79 + +Route13Text1: ; 0x558ca + db $08 ; asm + ld hl, $5851 + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$558d4,$558e3 - $558d4 + +Route13Text2: ; 0x558e3 + db $08 ; asm + ld hl, $585d + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$558ed,$558fc - $558ed + +Route13Text3: ; 0x558fc + db $08 ; asm + ld hl, $5869 + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$55906,$55915 - $55906 + +Route13Text4: ; 0x55915 + db $08 ; asm + ld hl, $5875 + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$5591f,$5592e - $5591f + +Route13Text5: ; 0x5592e + db $08 ; asm + ld hl, $5881 + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$55938,$55947 - $55938 + +Route13Text6: ; 0x55947 + db $08 ; asm + ld hl, $588d + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$55951,$55960 - $55951 + +Route13Text7: ; 0x55960 + db $08 ; asm + ld hl, $5899 + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$5596a,$55979 - $5596a + +Route13Text8: ; 0x55979 + db $08 ; asm + ld hl, $58a5 + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$55983,$55992 - $55983 + +Route13Text9: ; 0x55992 + db $08 ; asm + ld hl, $58b1 + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$5599c,$559ab - $5599c + +Route13Text10: ; 0x559ab + db $08 ; asm + ld hl, $58bd + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$559b5,$f + +Route13Text11: ; 0x559c4 + TX_FAR _Route13Text11 + db $50 + +Route13Text12: ; 0x559c9 + TX_FAR _Route13Text12 + db $50 + +Route13Text13: ; 0x559ce + TX_FAR _Route13Text13 + db $50 + +Route14Script: ; 0x559d3 + call $3c3c + ld hl, $5a02 + ld de, $59e6 + ld a, [$d61b] + call $3160 + ld [$d61b], a + ret +; 0x559e6 + +INCBIN "baserom.gbc",$559e6,$6 + +Route14Texts: ; 0x559ec + dw Route14Text1, Route14Text2, Route14Text3, Route14Text4, Route14Text5, Route14Text6, Route14Text7, Route14Text8, Route14Text9, Route14Text10, Route14Text11 + +INCBIN "baserom.gbc",$55a02,$79 + +Route14Text1: ; 0x55a7b + db $08 ; asm + ld hl, $5a02 + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$55a85,$55a94 - $55a85 + +Route14Text2: ; 0x55a94 + db $08 ; asm + ld hl, $5a0e + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$55a9e,$55aad - $55a9e + +Route14Text3: ; 0x55aad + db $08 ; asm + ld hl, $5a1a + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$55ab7,$55ac6 - $55ab7 + +Route14Text4: ; 0x55ac6 + db $08 ; asm + ld hl, $5a26 + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$55ad0,$55adf - $55ad0 + +Route14Text5: ; 0x55adf + db $08 ; asm + ld hl, $5a32 + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$55ae9,$55af8 - $55ae9 + +Route14Text6: ; 0x55af8 + db $08 ; asm + ld hl, $5a3e + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$55b02,$55b11 - $55b02 + +Route14Text7: ; 0x55b11 + db $08 ; asm + ld hl, $5a4a + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$55b1b,$55b2a - $55b1b + +Route14Text8: ; 0x55b2a + db $08 ; asm + ld hl, $5a56 + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$55b34,$55b43 - $55b34 + +Route14Text9: ; 0x55b43 + db $08 ; asm + ld hl, $5a62 + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$55b4d,$55b5c - $55b4d + +Route14Text10: ; 0x55b5c + db $08 ; asm + ld hl, $5a6e + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$55b66,$f + +Route14Text11: ; 0x55b75 + TX_FAR _Route14Text11 + db $50 + +Route17Script: ; 0x55b7a + call $3c3c + ld hl, $5bb3 + ld de, $5b8d + ld a, [$d61c] + call $3160 + ld [$d61c], a + ret +; 0x55b8d + +INCBIN "baserom.gbc",$55b8d,$6 + +Route17Texts: ; 0x55b93 + dw Route17Text1, Route17Text2, Route17Text3, Route17Text4, Route17Text5, Route17Text6, Route17Text7, Route17Text8, Route17Text9, Route17Text10, Route17Text11, Route17Text12, Route17Text13, Route17Text14, Route17Text15, Route17Text16 + +INCBIN "baserom.gbc",$55bb3,$79 + +Route17Text1: ; 0x55c2c + db $08 ; asm + ld hl, $5bb3 + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$55c36,$55c45 - $55c36 + +Route17Text2: ; 0x55c45 + db $08 ; asm + ld hl, $5bbf + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$55c4f,$55c5e - $55c4f + +Route17Text3: ; 0x55c5e + db $08 ; asm + ld hl, $5bcb + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$55c68,$55c77 - $55c68 + +Route17Text4: ; 0x55c77 + db $08 ; asm + ld hl, $5bd7 + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$55c81,$55c90 - $55c81 + +Route17Text5: ; 0x55c90 + db $08 ; asm + ld hl, $5be3 + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$55c9a,$55ca9 - $55c9a + +Route17Text6: ; 0x55ca9 + db $08 ; asm + ld hl, $5bef + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$55cb3,$55cc2 - $55cb3 + +Route17Text7: ; 0x55cc2 + db $08 ; asm + ld hl, $5bfb + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$55ccc,$55cdb - $55ccc + +Route17Text8: ; 0x55cdb + db $08 ; asm + ld hl, $5c07 + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$55ce5,$55cf4 - $55ce5 + +Route17Text9: ; 0x55cf4 + db $08 ; asm + ld hl, $5c13 + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$55cfe,$55d0d - $55cfe + +Route17Text10: ; 0x55d0d + db $08 ; asm + ld hl, $5c1f + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$55d17,$f + +Route17Text11: ; 0x55d26 + TX_FAR _Route17Text11 + db $50 + +Route17Text12: ; 0x55d2b + TX_FAR _Route17Text12 + db $50 + +Route17Text13: ; 0x55d30 + TX_FAR _Route17Text13 + db $50 + +Route17Text14: ; 0x55d35 + TX_FAR _Route17Text14 + db $50 + +Route17Text15: ; 0x55d3a + TX_FAR _Route17Text15 + db $50 + +Route17Text16: ; 0x55d3f + TX_FAR _Route17Text16 + db $50 + +Route19Script: ; 0x55d44 + call $3c3c + ld hl, $5d73 + ld de, $5d57 + ld a, [$d61d] + call $3160 + ld [$d61d], a + ret +; 0x55d57 + +INCBIN "baserom.gbc",$55d57,$6 + +Route19Texts: ; 0x55d5d + dw Route19Text1, Route19Text2, Route19Text3, Route19Text4, Route19Text5, Route19Text6, Route19Text7, Route19Text8, Route19Text9, Route19Text10, Route19Text11 + +INCBIN "baserom.gbc",$55d73,$79 + +Route19Text1: ; 0x55dec + db $08 ; asm + ld hl, $5d73 + call LoadTrainerHeader + jp $24d7 + +Route19Text2: ; 0x55df6 + db $08 ; asm + ld hl, $5d7f + call LoadTrainerHeader + jp $24d7 + +Route19Text3: ; 0x55e00 + db $08 ; asm + ld hl, $5d8b + call LoadTrainerHeader + jp $24d7 + +Route19Text4: ; 0x55e0a + db $08 ; asm + ld hl, $5d97 + call LoadTrainerHeader + jp $24d7 + +Route19Text5: ; 0x55e14 + db $08 ; asm + ld hl, $5da3 + call LoadTrainerHeader + jp $24d7 + +Route19Text6: ; 0x55e1e + db $08 ; asm + ld hl, $5daf + call LoadTrainerHeader + jp $24d7 + +Route19Text7: ; 0x55e28 + db $08 ; asm + ld hl, $5dbb + call LoadTrainerHeader + jp $24d7 + +Route19Text8: ; 0x55e32 + db $08 ; asm + ld hl, $5dc7 + call LoadTrainerHeader + jp $24d7 + +Route19Text9: ; 0x55e3c + db $08 ; asm + ld hl, $5dd3 + call LoadTrainerHeader + jp $24d7 + +Route19Text10: ; 0x55e46 + db $08 ; asm + ld hl, $5ddf + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$55e50,$96 + +Route19Text11: ; 0x55ee6 + TX_FAR _Route19Text11 + db $50 + +Route21Script: ; 0x55eeb + call $3c3c + ld hl, $5f16 + ld de, $5efe + ld a, [$d61e] + call $3160 + ld [$d61e], a + ret +; 0x55efe + +INCBIN "baserom.gbc",$55efe,$6 + +Route21Texts: ; 0x55f04 + dw Route21Text1, Route21Text2, Route21Text3, Route21Text4, Route21Text5, Route21Text6, Route21Text7, Route21Text8, Route21Text9 + +INCBIN "baserom.gbc",$55f16,$6d + +Route21Text1: ; 0x55f83 + db $08 ; asm + ld hl, $5f16 + call LoadTrainerHeader + jp $24d7 + +Route21Text2: ; 0x55f8d + db $08 ; asm + ld hl, $5f22 + call LoadTrainerHeader + jp $24d7 + +Route21Text3: ; 0x55f97 + db $08 ; asm + ld hl, $5f2e + call LoadTrainerHeader + jp $24d7 + +Route21Text4: ; 0x55fa1 + db $08 ; asm + ld hl, $5f3a + call LoadTrainerHeader + jp $24d7 + +Route21Text5: ; 0x55fab + db $08 ; asm + ld hl, $5f46 + call LoadTrainerHeader + jp $24d7 + +Route21Text6: ; 0x55fb5 + db $08 ; asm + ld hl, $5f52 + call LoadTrainerHeader + jp $24d7 + +Route21Text7: ; 0x55fbf + db $08 ; asm + ld hl, $5f5e + call LoadTrainerHeader + jp $24d7 + +Route21Text8: ; 0x55fc9 + db $08 ; asm + ld hl, $5f6a + call LoadTrainerHeader + jp $24d7 + +Route21Text9: ; 0x55fd3 + db $08 ; asm + ld hl, $5f76 + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$55fdd,$87 + +VermilionHouse2_h: ; 0x56064 to 0x56070 (12 bytes) (id=163) + db $08 ; tileset + db $04, $04 ; dimensions (y, x) + dw $522f, VermilionHouse2Texts, VermilionHouse2Script ; blocks, texts, scripts + db $00 ; connections + + dw VermilionHouse2Object ; objects + +VermilionHouse2Script: ; 0x56070 + jp $3c3c +; 0x56073 + +VermilionHouse2Texts: ; 0x56073 + dw VermilionHouse2Text1 + +VermilionHouse2Text1: ; 0x56075 + db $08 ; asm + ld a, [$d728] + bit 3, a + jr nz, asm_03ef5 ; 0x5607b + ld hl, $60b1 + call PrintText + call $35ec + ld a, [$cc26] + and a + jr nz, asm_eb1b7 ; 0x5608a + ld bc,(OLD_ROD << 8) | 1 + call $3e2e + jr nc, asm_fd67b ; 0x56092 + ld hl, $d728 + set 3, [hl] + ld hl, $60b6 + jr asm_5dd95 ; 0x5609c +asm_fd67b ; 0x5609e + ld hl, $60ca + jr asm_5dd95 ; 0x560a1 +asm_eb1b7 ; 0x560a3 + ld hl, $60c0 + jr asm_5dd95 ; 0x560a6 +asm_03ef5 ; 0x560a8 + ld hl, $60c5 +asm_5dd95 ; 0x560ab + call PrintText + jp $24d7 + +INCBIN "baserom.gbc",$560b1,$1e + +VermilionHouse2Object: ; 0x560cf (size=26) + db $a ; border tile + + db $2 ; warps + db $7, $2, $8, $ff + db $7, $3, $8, $ff + + db $0 ; signs + + db $1 ; people + db SPRITE_FISHER, $4 + 4, $2 + 4, $ff, $d3, $1 ; person + + ; warp-to + EVENT_DISP $4, $7, $2 + EVENT_DISP $4, $7, $3 + +CeladonMart2_h: ; 0x560e9 to 0x560f5 (12 bytes) (id=123) + db $12 ; tileset + db $04, $0a ; dimensions (y, x) + dw CeladonMart2Blocks, CeladonMart2Texts, CeladonMart2Script ; blocks, texts, scripts + db $00 ; connections + + dw CeladonMart2Object ; objects + +CeladonMart2Script: ; 0x560f5 + jp $3c3c +; 0x560f8 + +CeladonMart2Texts: ; 0x560f8 + dw CeladonMart2Text1, CeladonMart2Text2, CeladonMart2Text3, CeladonMart2Text4, CeladonMart2Text5 + +CeladonMart2Text3: ; 0x56102 + TX_FAR _CeladonMart2Text3 + db $50 + +CeladonMart2Text4: ; 0x56107 + TX_FAR _CeladonMart2Text4 + db $50 + +CeladonMart2Text5: ; 0x5610c + TX_FAR _CeladonMart2Text5 + db $50 + +CeladonMart2Object: ; 0x56111 (size=55) + db $f ; border tile + + db $3 ; warps + db $1, $c, $4, CELADON_MART_1 + db $1, $10, $1, CELADON_MART_3 + db $1, $1, $0, CELADON_MART_ELEVATOR + + db $1 ; signs + db $1, $e, $5 ; CeladonMart2Text5 + + db $4 ; people + db SPRITE_MART_GUY, $3 + 4, $5 + 4, $ff, $d0, $1 ; person + db SPRITE_MART_GUY, $3 + 4, $6 + 4, $ff, $d0, $2 ; person + db SPRITE_FAT_BALD_GUY, $5 + 4, $13 + 4, $ff, $ff, $3 ; person + db SPRITE_GIRL, $4 + 4, $e + 4, $fe, $1, $4 ; person + + ; warp-to + EVENT_DISP $a, $1, $c ; CELADON_MART_1 + EVENT_DISP $a, $1, $10 ; CELADON_MART_3 + EVENT_DISP $a, $1, $1 ; CELADON_MART_ELEVATOR + +CeladonMart2Blocks: ; 40 + INCBIN "maps/celadonmart2.blk" + +FuchsiaHouse3_h: ; 0x56170 to 0x5617c (12 bytes) (id=164) + db $0d ; tileset + db $04, $04 ; dimensions (y, x) + dw FuchsiaHouse3Blocks, FuchsiaHouse3Texts, FuchsiaHouse3Script ; blocks, texts, scripts + db $00 ; connections + + dw FuchsiaHouse3Object ; objects + +FuchsiaHouse3Script: ; 0x5617c + jp $3c3c +; 0x5617f + +FuchsiaHouse3Texts: ; 0x5617f + dw FuchsiaHouse3Text1 + +FuchsiaHouse3Text1: ; 0x56181 + db $08 ; asm + ld a, [$d728] + bit 4, a + jr nz, asm_6084e ; 0x56187 + ld hl, $61bd + call PrintText + call $35ec + ld a, [$cc26] + and a + jr nz, asm_3ace4 ; 0x56196 + ld bc,(GOOD_ROD << 8) | 1 + call $3e2e + jr nc, asm_628ee ; 0x5619e + ld hl, $d728 + set 4, [hl] + ld hl, $61c2 + jr asm_1b09c ; 0x561a8 +asm_628ee ; 0x561aa + ld hl, $621c + jr asm_1b09c ; 0x561ad +asm_3ace4 ; 0x561af + ld hl, $6212 + jr asm_1b09c ; 0x561b2 +asm_6084e ; 0x561b4 + ld hl, $6217 +asm_1b09c ; 0x561b7 + call PrintText + jp $24d7 + +INCBIN "baserom.gbc",$561bd,$64 + +FuchsiaHouse3Object: ; 0x56221 (size=34) + db $c ; border tile + + db $3 ; warps + db $0, $2, $8, $ff + db $7, $2, $7, $ff + db $7, $3, $7, $ff + + db $0 ; signs + + db $1 ; people + db SPRITE_FISHER, $3 + 4, $5 + 4, $ff, $d3, $1 ; person + + ; warp-to + EVENT_DISP $4, $0, $2 + EVENT_DISP $4, $7, $2 + EVENT_DISP $4, $7, $3 + +DayCareM_h: ; 0x56243 to 0x5624f (12 bytes) (id=72) + db $08 ; tileset + db $04, $04 ; dimensions (y, x) + dw DayCareMBlocks, DayCareMTexts, DayCareMScript ; blocks, texts, scripts + db $00 ; connections + + dw DayCareMObject ; objects + +DayCareMScript: ; 0x5624f + jp $3c3c +; 0x56252 + +DayCareMTexts: ; 0x56252 + dw DayCareMText1 + +DayCareMText1: ; 0x56254 + db $8 + call $36f4 + ld a, [$da48] + and a + jp nz, $62e1 + ld hl, $640f + call PrintText + call $35ec + ld a, [$cc26] + and a + ld hl, $643b + jp nz, $6409 + ld a, [$d163] + dec a + ld hl, $6445 + jp z, $6409 + ld hl, $6414 + call PrintText + xor a + ld [$cfcb], a + ld [$d07d], a + ld [$cc35], a + call $13fc + push af + call $3dd4 + call $3dbe + call $20ba + pop af + ld hl, $6437 + jp c, $6409 + ld hl, $571b + ld b, $8 + call Bankswitch + ld hl, $644a + jp c, $6409 + xor a + ld [$cc2b], a + ld a, [$cf92] + ld hl, $d2b5 + call $15ba + ld hl, $6419 + call PrintText + ld a, $1 + ld [$da48], a + ld a, $3 + ld [$cf95], a + call $3a68 + xor a + ld [$cf95], a + call $391f + ld a, [$cf91] + call $13d0 + ld hl, $641e + jp $6409 +; 0x562e1 +INCBIN "baserom.gbc",$562e1,$178 + +DayCareMObject: ; 0x56459 (size=26) + db $a ; border tile + + db $2 ; warps + db $7, $2, $4, $ff + db $7, $3, $4, $ff + + db $0 ; signs + + db $1 ; people + db SPRITE_GENTLEMAN, $3 + 4, $2 + 4, $ff, $d3, $1 ; person + + ; warp-to + EVENT_DISP $4, $7, $2 + EVENT_DISP $4, $7, $3 + +Route12House_h: ; 0x56473 to 0x5647f (12 bytes) (id=189) + db $08 ; tileset + db $04, $04 ; dimensions (y, x) + dw $522f, Route12HouseTexts, Route12HouseScript ; blocks, texts, scripts + db $00 ; connections + + dw Route12HouseObject ; objects + +Route12HouseScript: ; 0x5647f + jp $3c3c +; 0x56482 + +Route12HouseTexts: ; 0x56482 + dw Route12HouseText1 + +Route12HouseText1: ; 0x56484 + db $08 ; asm + ld a, [$d728] + bit 5, a + jr nz, asm_b4cad ; 0x5648a + ld hl, $64c0 + call PrintText + call $35ec + ld a, [$cc26] + and a + jr nz, asm_a2d76 ; 0x56499 + ld bc,(SUPER_ROD << 8) | 1 + call $3e2e + jr nc, asm_e3b89 ; 0x564a1 + ld hl, $d728 + set 5, [hl] + ld hl, $64c5 + jr asm_df984 ; 0x564ab +asm_e3b89 ; 0x564ad + ld hl, $64d9 + jr asm_df984 ; 0x564b0 +asm_a2d76 ; 0x564b2 + ld hl, $64cf + jr asm_df984 ; 0x564b5 +asm_b4cad ; 0x564b7 + ld hl, $64d4 +asm_df984 ; 0x564ba + call PrintText + jp $24d7 + +INCBIN "baserom.gbc",$564c0,$1e + +Route12HouseObject: ; 0x564de (size=26) + db $a ; border tile + + db $2 ; warps + db $7, $2, $3, $ff + db $7, $3, $3, $ff + + db $0 ; signs + + db $1 ; people + db SPRITE_FISHER, $4 + 4, $2 + 4, $ff, $d3, $1 ; person + + ; warp-to + EVENT_DISP $4, $7, $2 + EVENT_DISP $4, $7, $3 + +SilphCo8_h: ; 0x564f8 to 0x56504 (12 bytes) (id=213) + db $16 ; tileset + db $09, $0d ; dimensions (y, x) + dw SilphCo8Blocks, SilphCo8Texts, SilphCo8Script ; blocks, texts, scripts + db $00 ; connections + + dw SilphCo8Object ; objects + +SilphCo8Script: ; 0x56504 + call $651a + call $3c3c + ld hl, $6585 + ld de, $6577 + ld a, [$d649] + call $3160 + ld [$d649], a + ret +; 0x5651a + +INCBIN "baserom.gbc",$5651a,$63 + +SilphCo8Texts: ; 0x5657d + dw SilphCo8Text1, SilphCo8Text2, SilphCo8Text3, SilphCo8Text4 + +INCBIN "baserom.gbc",$56585,$25 + +SilphCo8Text1: ; 0x565aa + db $08 ; asm + ld a, [$d838] + bit 7, a + ld hl, $65c3 + jr nz, asm_a468f ; 0x565b3 + ld hl, $65be +asm_a468f ; 0x565b8 + call PrintText + jp $24d7 + +INCBIN "baserom.gbc",$565be,$565c8 - $565be + +SilphCo8Text2: ; 0x565c8 + db $08 ; asm + ld hl, $6585 + call LoadTrainerHeader + jp $24d7 + +SilphCo8Text3: ; 0x565d2 + db $08 ; asm + ld hl, $6591 + call LoadTrainerHeader + jp $24d7 + +SilphCo8Text4: ; 0x565dc + db $08 ; asm + ld hl, $659d + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$565e6,$2d + +SilphCo8Object: ; 0x56613 (size=90) + db $2e ; border tile + + db $7 ; warps + db $0, $10, $1, SILPH_CO_9F + db $0, $e, $0, SILPH_CO_7F + db $0, $12, $0, SILPH_CO_ELEVATOR + db $b, $3, $6, SILPH_CO_8F + db $f, $3, $4, SILPH_CO_2F + db $5, $b, $5, SILPH_CO_2F + db $9, $b, $3, SILPH_CO_8F + + db $0 ; signs + + db $4 ; people + db SPRITE_LAPRAS_GIVER, $2 + 4, $4 + 4, $ff, $ff, $1 ; person + db SPRITE_ROCKET, $2 + 4, $13 + 4, $ff, $d2, $42, ROCKET + $C8, $23 ; trainer + db SPRITE_OAK_AIDE, $2 + 4, $a + 4, $ff, $d0, $43, SCIENTIST + $C8, $9 ; trainer + db SPRITE_ROCKET, $f + 4, $c + 4, $ff, $d3, $44, ROCKET + $C8, $24 ; trainer + + ; warp-to + EVENT_DISP $d, $0, $10 ; SILPH_CO_9F + EVENT_DISP $d, $0, $e ; SILPH_CO_7F + EVENT_DISP $d, $0, $12 ; SILPH_CO_ELEVATOR + EVENT_DISP $d, $b, $3 ; SILPH_CO_8F + EVENT_DISP $d, $f, $3 ; SILPH_CO_2F + EVENT_DISP $d, $5, $b ; SILPH_CO_2F + EVENT_DISP $d, $9, $b ; SILPH_CO_8F + +SilphCo8Blocks: ; 117 + INCBIN "maps/silphco8.blk" + +INCBIN "baserom.gbc",$566e2,$191e + +SECTION "bank16",DATA,BANK[$16] + +Route6_h: ; 0x58000 to 0x58022 (34 bytes) (id=17) + db $00 ; tileset + db $12, $0a ; dimensions (y, x) + dw Route6Blocks, $50c9, Route6Script ; blocks, texts, scripts + db NORTH | SOUTH ; connections + + ; connections data + + db SAFFRON_CITY + dw $4bc6, $c6e8 ; pointers (connected, current) (strip) + db $10, $14 ; bigness, width + db $23, $0a ; alignments (y, x) + dw $c8bd ; window + + db VERMILION_CITY + dw $4a41, $c838 ; pointers (connected, current) (strip) + db $10, $14 ; bigness, width + db $00, $0a ; alignments (y, x) + dw $c703 ; window + + ; end connection data + + dw Route6Object ; objects + +Route6Object: ; 0x58022 (size=87) + db $f ; border tile + + db $4 ; warps + db $1, $9, $2, ROUTE_6_GATE + db $1, $a, $2, ROUTE_6_GATE + db $7, $a, $0, ROUTE_6_GATE + db $d, $11, $0, PATH_ENTRANCE_ROUTE_6 + + db $1 ; signs + db $f, $13, $7 ; Route6Text7 + + db $6 ; people + db SPRITE_BLACK_HAIR_BOY_1, $15 + 4, $a + 4, $ff, $d3, $41, JR__TRAINER_M + $C8, $4 ; trainer + db SPRITE_LASS, $15 + 4, $b + 4, $ff, $d2, $42, JR__TRAINER_F + $C8, $2 ; trainer + db SPRITE_BUG_CATCHER, $f + 4, $0 + 4, $ff, $d3, $43, BUG_CATCHER + $C8, $a ; trainer + db SPRITE_BLACK_HAIR_BOY_1, $1f + 4, $b + 4, $ff, $d2, $44, JR__TRAINER_M + $C8, $5 ; trainer + db SPRITE_LASS, $1e + 4, $b + 4, $ff, $d2, $45, JR__TRAINER_F + $C8, $3 ; trainer + db SPRITE_BUG_CATCHER, $1a + 4, $13 + 4, $ff, $d2, $46, BUG_CATCHER + $C8, $b ; trainer + + ; warp-to + EVENT_DISP $a, $1, $9 ; ROUTE_6_GATE + EVENT_DISP $a, $1, $a ; ROUTE_6_GATE + EVENT_DISP $a, $7, $a ; ROUTE_6_GATE + EVENT_DISP $a, $d, $11 ; PATH_ENTRANCE_ROUTE_6 + +Route6Blocks: ; 180 + INCBIN "maps/route6.blk" + +Route8_h: ; 0x5812d to 0x5814f (34 bytes) (id=19) + db $00 ; tileset + db $09, $1e ; dimensions (y, x) + dw Route8Blocks, $51cf, Route8Script ; blocks, texts, scripts + db WEST | EAST ; connections + + ; connections data + + db SAFFRON_CITY + dw $4abd, $c6e8 ; pointers (connected, current) (strip) + db $0f, $14 ; bigness, width + db $08, $27 ; alignments (y, x) + dw $c716 ; window + + db LAVENDER_TOWN + dw $4085, $c775 ; pointers (connected, current) (strip) + db $09, $0a ; bigness, width + db $00, $00 ; alignments (y, x) + dw $c6f9 ; window + + ; end connection data + + dw Route8Object ; objects + +Route8Object: ; 0x5814f (size=119) + db $2c ; border tile + + db $5 ; warps + db $9, $1, $0, ROUTE_8_GATE + db $a, $1, $1, ROUTE_8_GATE + db $9, $8, $2, ROUTE_8_GATE + db $a, $8, $3, ROUTE_8_GATE + db $3, $d, $0, PATH_ENTRANCE_ROUTE_8 + + db $1 ; signs + db $3, $11, $a ; Route8Text10 + + db $9 ; people + db SPRITE_BLACK_HAIR_BOY_2, $5 + 4, $8 + 4, $ff, $d3, $41, SUPER_NERD + $C8, $3 ; trainer + db SPRITE_GAMBLER, $9 + 4, $d + 4, $ff, $d1, $42, GAMBLER + $C8, $5 ; trainer + db SPRITE_BLACK_HAIR_BOY_2, $6 + 4, $2a + 4, $ff, $d1, $43, SUPER_NERD + $C8, $4 ; trainer + db SPRITE_LASS, $3 + 4, $1a + 4, $ff, $d2, $44, LASS + $C8, $d ; trainer + db SPRITE_BLACK_HAIR_BOY_2, $4 + 4, $1a + 4, $ff, $d3, $45, SUPER_NERD + $C8, $5 ; trainer + db SPRITE_LASS, $5 + 4, $1a + 4, $ff, $d2, $46, LASS + $C8, $e ; trainer + db SPRITE_LASS, $6 + 4, $1a + 4, $ff, $d3, $47, LASS + $C8, $f ; trainer + db SPRITE_GAMBLER, $d + 4, $2e + 4, $ff, $d0, $48, GAMBLER + $C8, $7 ; trainer + db SPRITE_LASS, $c + 4, $33 + 4, $ff, $d2, $49, LASS + $C8, $10 ; trainer + + ; warp-to + EVENT_DISP $1e, $9, $1 ; ROUTE_8_GATE + EVENT_DISP $1e, $a, $1 ; ROUTE_8_GATE + EVENT_DISP $1e, $9, $8 ; ROUTE_8_GATE + EVENT_DISP $1e, $a, $8 ; ROUTE_8_GATE + EVENT_DISP $1e, $3, $d ; PATH_ENTRANCE_ROUTE_8 + +Route8Blocks: ; 270 + INCBIN "maps/route8.blk" + +Route10_h: ; 0x582d4 to 0x582f6 (34 bytes) (id=21) + db $00 ; tileset + db $24, $0a ; dimensions (y, x) + dw Route10Blocks, Route10Texts, Route10Script ; blocks, texts, scripts + db SOUTH | WEST ; connections + + ; connections data + + db LAVENDER_TOWN + dw $4085, $c95b ; pointers (connected, current) (strip) + db $0a, $0a ; bigness, width + db $00, $00 ; alignments (y, x) + dw $c6f9 ; window + + db ROUTE_9 + dw $4719, $c718 ; pointers (connected, current) (strip) + db $09, $1e ; bigness, width + db $00, $3b ; alignments (y, x) + dw $c72a ; window + + ; end connection data + + dw Route10Object ; objects + +Route10Object: ; 0x582f6 (size=96) + db $2c ; border tile + + db $4 ; warps + db $13, $b, $0, ROCK_TUNNEL_POKECENTER + db $11, $8, $0, ROCK_TUNNEL_1 + db $35, $8, $2, ROCK_TUNNEL_1 + db $27, $6, $0, POWER_PLANT + + db $4 ; signs + db $13, $7, $7 ; Route10Text7 + db $13, $c, $8 ; Route10Text8 + db $37, $9, $9 ; Route10Text9 + db $29, $5, $a ; Route10Text10 + + db $6 ; people + db SPRITE_BLACK_HAIR_BOY_2, $2c + 4, $a + 4, $ff, $d2, $41, POKEMANIAC + $C8, $1 ; trainer + db SPRITE_HIKER, $39 + 4, $3 + 4, $ff, $d1, $42, HIKER + $C8, $7 ; trainer + db SPRITE_BLACK_HAIR_BOY_2, $40 + 4, $e + 4, $ff, $d2, $43, POKEMANIAC + $C8, $2 ; trainer + db SPRITE_LASS, $19 + 4, $7 + 4, $ff, $d2, $44, JR__TRAINER_F + $C8, $7 ; trainer + db SPRITE_HIKER, $3d + 4, $3 + 4, $ff, $d0, $45, HIKER + $C8, $8 ; trainer + db SPRITE_LASS, $36 + 4, $7 + 4, $ff, $d0, $46, JR__TRAINER_F + $C8, $8 ; trainer + + ; warp-to + EVENT_DISP $a, $13, $b ; ROCK_TUNNEL_POKECENTER + EVENT_DISP $a, $11, $8 ; ROCK_TUNNEL_1 + EVENT_DISP $a, $35, $8 ; ROCK_TUNNEL_1 + EVENT_DISP $a, $27, $6 ; POWER_PLANT + +Route10Blocks: ; 360 + INCBIN "maps/route10.blk" + +Route11_h: ; 0x584be to 0x584e0 (34 bytes) (id=22) + db $00 ; tileset + db $09, $1e ; dimensions (y, x) + dw Route11Blocks, $5465, Route11Script ; blocks, texts, scripts + db WEST | EAST ; connections + + ; connections data + + db VERMILION_CITY + dw $4a64, $c6e8 ; pointers (connected, current) (strip) + db $0f, $14 ; bigness, width + db $08, $27 ; alignments (y, x) + dw $c716 ; window + + db ROUTE_12 + dw $4800, $c709 ; pointers (connected, current) (strip) + db $0f, $0a ; bigness, width + db $36, $00 ; alignments (y, x) + dw $c6f9 ; window + + ; end connection data + + dw Route11Object ; objects + +Route11Object: ; 0x584e0 (size=127) + db $f ; border tile + + db $5 ; warps + db $8, $31, $0, ROUTE_11_GATE_1F + db $9, $31, $1, ROUTE_11_GATE_1F + db $8, $3a, $2, ROUTE_11_GATE_1F + db $9, $3a, $3, ROUTE_11_GATE_1F + db $5, $4, $0, DIGLETTS_CAVE_ENTRANCE + + db $1 ; signs + db $5, $1, $b ; Route11Text11 + + db $a ; people + db SPRITE_GAMBLER, $e + 4, $a + 4, $ff, $d0, $41, GAMBLER + $C8, $1 ; trainer + db SPRITE_GAMBLER, $9 + 4, $1a + 4, $ff, $d0, $42, GAMBLER + $C8, $2 ; trainer + db SPRITE_BUG_CATCHER, $5 + 4, $d + 4, $ff, $d2, $43, YOUNGSTER + $C8, $9 ; trainer + db SPRITE_BLACK_HAIR_BOY_2, $b + 4, $24 + 4, $ff, $d0, $44, ENGINEER + $C8, $2 ; trainer + db SPRITE_BUG_CATCHER, $4 + 4, $16 + 4, $ff, $d1, $45, YOUNGSTER + $C8, $a ; trainer + db SPRITE_GAMBLER, $7 + 4, $2d + 4, $ff, $d0, $46, GAMBLER + $C8, $3 ; trainer + db SPRITE_GAMBLER, $3 + 4, $21 + 4, $ff, $d1, $47, GAMBLER + $C8, $4 ; trainer + db SPRITE_BUG_CATCHER, $5 + 4, $2b + 4, $ff, $d3, $48, YOUNGSTER + $C8, $b ; trainer + db SPRITE_BLACK_HAIR_BOY_2, $10 + 4, $2d + 4, $ff, $d2, $49, ENGINEER + $C8, $3 ; trainer + db SPRITE_BUG_CATCHER, $c + 4, $16 + 4, $ff, $d1, $4a, YOUNGSTER + $C8, $c ; trainer + + ; warp-to + EVENT_DISP $1e, $8, $31 ; ROUTE_11_GATE_1F + EVENT_DISP $1e, $9, $31 ; ROUTE_11_GATE_1F + EVENT_DISP $1e, $8, $3a ; ROUTE_11_GATE_1F + EVENT_DISP $1e, $9, $3a ; ROUTE_11_GATE_1F + EVENT_DISP $1e, $5, $4 ; DIGLETTS_CAVE_ENTRANCE + +Route11Blocks: ; 270 + INCBIN "maps/route11.blk" + +Route12_h: ; 0x5866d to 0x5869a (45 bytes) (id=23) + db $00 ; tileset + db $36, $0a ; dimensions (y, x) + dw Route12Blocks, Route12Texts, Route12Script ; blocks, texts, scripts + db NORTH | SOUTH | WEST ; connections + + ; connections data + + db LAVENDER_TOWN + dw $40c1, $c6eb ; pointers (connected, current) (strip) + db $0a, $0a ; bigness, width + db $11, $00 ; alignments (y, x) + dw $c779 ; window + + db ROUTE_13 + dw $489c, $ca78 ; pointers (connected, current) (strip) + db $0d, $1e ; bigness, width + db $00, $28 ; alignments (y, x) + dw $c70d ; window + + db ROUTE_11 + dw $457a, $c8c8 ; pointers (connected, current) (strip) + db $09, $1e ; bigness, width + db $ca, $3b ; alignments (y, x) + dw $c72a ; window + + ; end connection data + + dw Route12Object ; objects + +Route12Object: ; 0x5869a (size=118) + db $43 ; border tile + + db $4 ; warps + db $f, $a, $0, ROUTE_12_GATE + db $f, $b, $1, ROUTE_12_GATE + db $15, $a, $2, ROUTE_12_GATE + db $4d, $b, $0, ROUTE_12_HOUSE + + db $2 ; signs + db $d, $d, $b ; Route12Text11 + db $3f, $b, $c ; Route12Text12 + + db $a ; people + db SPRITE_SNORLAX, $3e + 4, $a + 4, $ff, $d0, $1 ; person + db SPRITE_FISHER2, $1f + 4, $e + 4, $ff, $d2, $42, FISHER + $C8, $3 ; trainer + db SPRITE_FISHER2, $27 + 4, $5 + 4, $ff, $d1, $43, FISHER + $C8, $4 ; trainer + db SPRITE_BLACK_HAIR_BOY_1, $5c + 4, $b + 4, $ff, $d2, $44, JR__TRAINER_M + $C8, $9 ; trainer + db SPRITE_BLACK_HAIR_BOY_2, $4c + 4, $e + 4, $ff, $d1, $45, ROCKER + $C8, $2 ; trainer + db SPRITE_FISHER2, $28 + 4, $c + 4, $ff, $d2, $46, FISHER + $C8, $5 ; trainer + db SPRITE_FISHER2, $34 + 4, $9 + 4, $ff, $d3, $47, FISHER + $C8, $6 ; trainer + db SPRITE_FISHER2, $57 + 4, $6 + 4, $ff, $d0, $48, FISHER + $C8, $b ; trainer + db SPRITE_BALL, $23 + 4, $e + 4, $ff, $ff, $89, TM_16 ; item + db SPRITE_BALL, $59 + 4, $5 + 4, $ff, $ff, $8a, IRON ; item + + ; warp-to + EVENT_DISP $a, $f, $a ; ROUTE_12_GATE + EVENT_DISP $a, $f, $b ; ROUTE_12_GATE + EVENT_DISP $a, $15, $a ; ROUTE_12_GATE + EVENT_DISP $a, $4d, $b ; ROUTE_12_HOUSE + +Route12Blocks: ; 540 + INCBIN "maps/route12.blk" + +Route15_h: ; 0x5892c to 0x5894e (34 bytes) (id=26) + db $00 ; tileset + db $09, $1e ; dimensions (y, x) + dw Route15Blocks, Route15Texts, Route15Script ; blocks, texts, scripts + db WEST | EAST ; connections + + ; connections data + + db FUCHSIA_CITY + dw $4cab, $c6e8 ; pointers (connected, current) (strip) + db $0f, $14 ; bigness, width + db $08, $27 ; alignments (y, x) + dw $c716 ; window + + db ROUTE_14 + dw $4aa8, $c709 ; pointers (connected, current) (strip) + db $0c, $0a ; bigness, width + db $24, $00 ; alignments (y, x) + dw $c6f9 ; window + + ; end connection data + + dw Route15Object ; objects + +Route15Object: ; 0x5894e (size=126) + db $43 ; border tile + + db $4 ; warps + db $8, $7, $0, ROUTE_15_GATE + db $9, $7, $1, ROUTE_15_GATE + db $8, $e, $2, ROUTE_15_GATE + db $9, $e, $3, ROUTE_15_GATE + + db $1 ; signs + db $9, $27, $c ; Route15Text12 + + db $b ; people + db SPRITE_LASS, $b + 4, $29 + 4, $ff, $d0, $41, JR__TRAINER_F + $C8, $14 ; trainer + db SPRITE_LASS, $a + 4, $35 + 4, $ff, $d2, $42, JR__TRAINER_F + $C8, $15 ; trainer + db SPRITE_BLACK_HAIR_BOY_1, $d + 4, $1f + 4, $ff, $d1, $43, BIRD_KEEPER + $C8, $6 ; trainer + db SPRITE_BLACK_HAIR_BOY_1, $d + 4, $23 + 4, $ff, $d1, $44, BIRD_KEEPER + $C8, $7 ; trainer + db SPRITE_FOULARD_WOMAN, $b + 4, $35 + 4, $ff, $d0, $45, BEAUTY + $C8, $9 ; trainer + db SPRITE_FOULARD_WOMAN, $a + 4, $29 + 4, $ff, $d3, $46, BEAUTY + $C8, $a ; trainer + db SPRITE_BIKER, $a + 4, $30 + 4, $ff, $d0, $47, BIKER + $C8, $3 ; trainer + db SPRITE_BIKER, $a + 4, $2e + 4, $ff, $d0, $48, BIKER + $C8, $4 ; trainer + db SPRITE_LASS, $5 + 4, $25 + 4, $ff, $d3, $49, JR__TRAINER_F + $C8, $16 ; trainer + db SPRITE_LASS, $d + 4, $12 + 4, $ff, $d1, $4a, JR__TRAINER_F + $C8, $17 ; trainer + db SPRITE_BALL, $5 + 4, $12 + 4, $ff, $ff, $8b, TM_20 ; item + + ; warp-to + EVENT_DISP $1e, $8, $7 ; ROUTE_15_GATE + EVENT_DISP $1e, $9, $7 ; ROUTE_15_GATE + EVENT_DISP $1e, $8, $e ; ROUTE_15_GATE + EVENT_DISP $1e, $9, $e ; ROUTE_15_GATE + +Route15Blocks: ; 270 + INCBIN "maps/route15.blk" + +Route16_h: ; 0x58ada to 0x58afc (34 bytes) (id=27) + db $00 ; tileset + db $09, $14 ; dimensions (y, x) + dw Route16Blocks, Route16Texts, Route16Script ; blocks, texts, scripts + db SOUTH | EAST ; connections + + ; connections data + + db ROUTE_17 + dw $4ba8, $c823 ; pointers (connected, current) (strip) + db $0a, $0a ; bigness, width + db $00, $00 ; alignments (y, x) + dw $c6f9 ; window + + db CELADON_CITY + dw $40f8, $c6ff ; pointers (connected, current) (strip) + db $0f, $19 ; bigness, width + db $08, $00 ; alignments (y, x) + dw $c708 ; window + + ; end connection data + + dw Route16Object ; objects + +Route16Object: ; 0x58afc (size=136) + db $f ; border tile + + db $9 ; warps + db $a, $11, $0, ROUTE_16_GATE_1F + db $b, $11, $1, ROUTE_16_GATE_1F + db $a, $18, $2, ROUTE_16_GATE_1F + db $b, $18, $3, ROUTE_16_GATE_1F + db $4, $11, $4, ROUTE_16_GATE_1F + db $5, $11, $5, ROUTE_16_GATE_1F + db $4, $18, $6, ROUTE_16_GATE_1F + db $5, $18, $7, ROUTE_16_GATE_1F + db $5, $7, $0, ROUTE_16_HOUSE + + db $2 ; signs + db $b, $1b, $8 ; Route16Text8 + db $11, $5, $9 ; Route16Text9 + + db $7 ; people + db SPRITE_BIKER, $c + 4, $11 + 4, $ff, $d2, $41, BIKER + $C8, $5 ; trainer + db SPRITE_BIKER, $d + 4, $e + 4, $ff, $d3, $42, CUE_BALL + $C8, $1 ; trainer + db SPRITE_BIKER, $c + 4, $b + 4, $ff, $d1, $43, CUE_BALL + $C8, $2 ; trainer + db SPRITE_BIKER, $b + 4, $9 + 4, $ff, $d2, $44, BIKER + $C8, $6 ; trainer + db SPRITE_BIKER, $a + 4, $6 + 4, $ff, $d3, $45, CUE_BALL + $C8, $3 ; trainer + db SPRITE_BIKER, $c + 4, $3 + 4, $ff, $d3, $46, BIKER + $C8, $7 ; trainer + db SPRITE_SNORLAX, $a + 4, $1a + 4, $ff, $d0, $7 ; person + + ; warp-to + EVENT_DISP $14, $a, $11 ; ROUTE_16_GATE_1F + EVENT_DISP $14, $b, $11 ; ROUTE_16_GATE_1F + EVENT_DISP $14, $a, $18 ; ROUTE_16_GATE_1F + EVENT_DISP $14, $b, $18 ; ROUTE_16_GATE_1F + EVENT_DISP $14, $4, $11 ; ROUTE_16_GATE_1F + EVENT_DISP $14, $5, $11 ; ROUTE_16_GATE_1F + EVENT_DISP $14, $4, $18 ; ROUTE_16_GATE_1F + EVENT_DISP $14, $5, $18 ; ROUTE_16_GATE_1F + EVENT_DISP $14, $5, $7 ; ROUTE_16_HOUSE + +Route16Blocks: ; 180 + INCBIN "maps/route16.blk" + +Route18_h: ; 0x58c38 to 0x58c5a (34 bytes) (id=29) + db $00 ; tileset + db $09, $19 ; dimensions (y, x) + dw Route18Blocks, Route18Texts, Route18Script ; blocks, texts, scripts + db NORTH | EAST ; connections + + ; connections data + + db ROUTE_17 + dw $4e5a, $c6eb ; pointers (connected, current) (strip) + db $0a, $0a ; bigness, width + db $8f, $00 ; alignments (y, x) + dw $cb69 ; window + + db FUCHSIA_CITY + dw $4c9a, $c704 ; pointers (connected, current) (strip) + db $0f, $14 ; bigness, width + db $08, $00 ; alignments (y, x) + dw $c703 ; window + + ; end connection data + + dw Route18Object ; objects + +Route18Object: ; 0x58c5a (size=66) + db $43 ; border tile + + db $4 ; warps + db $8, $21, $0, ROUTE_18_GATE_1F + db $9, $21, $1, ROUTE_18_GATE_1F + db $8, $28, $2, ROUTE_18_GATE_1F + db $9, $28, $3, ROUTE_18_GATE_1F + + db $2 ; signs + db $7, $2b, $4 ; Route18Text4 + db $5, $21, $5 ; Route18Text5 + + db $3 ; people + db SPRITE_BLACK_HAIR_BOY_1, $b + 4, $24 + 4, $ff, $d3, $41, BIRD_KEEPER + $C8, $8 ; trainer + db SPRITE_BLACK_HAIR_BOY_1, $f + 4, $28 + 4, $ff, $d2, $42, BIRD_KEEPER + $C8, $9 ; trainer + db SPRITE_BLACK_HAIR_BOY_1, $d + 4, $2a + 4, $ff, $d2, $43, BIRD_KEEPER + $C8, $a ; trainer + + ; warp-to + EVENT_DISP $19, $8, $21 ; ROUTE_18_GATE_1F + EVENT_DISP $19, $9, $21 ; ROUTE_18_GATE_1F + EVENT_DISP $19, $8, $28 ; ROUTE_18_GATE_1F + EVENT_DISP $19, $9, $28 ; ROUTE_18_GATE_1F + +Route18Blocks: ; 225 + INCBIN "maps/route18.blk" + +INCBIN "baserom.gbc",$58d7d,$590b0 - $58d7d + +Route6Script: ; 0x590b0 + call $3c3c + ld hl, $50d7 + ld de, $50c3 + ld a, [$d600] + call $3160 + ld [$d600], a + ret +; 0x590c3 + +INCBIN "baserom.gbc",$590c3,$5d + +Route6Text1: ; 0x59120 + db $8 + ld hl, $50d7 + call $31cc + jp $24d7 +; 0x5912a + +INCBIN "baserom.gbc",$5912a,$f + +Route6Text2: ; 0x59139 + db $08 ; asm + ld hl, $50e3 + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$59143,$5914d - $59143 + +Route6Text3: ; 0x5914d + db $08 ; asm + ld hl, $50ef + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$59157,$59166 - $59157 + +Route6Text4: ; 0x59166 + db $08 ; asm + ld hl, $50fb + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$59170,$5917f - $59170 + +Route6Text5: ; 0x5917f + db $08 ; asm + ld hl, $5107 + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$59189,$59198 - $59189 + +Route6Text6: ; 0x59198 + db $08 ; asm + ld hl, $5113 + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$591a2,$f + +Route6Text7: ; 0x591b1 + TX_FAR _Route6Text7 + db $50 + +Route8Script: ; 0x591b6 + call $3c3c + ld hl, $51e3 + ld de, $51c9 + ld a, [$d601] + call $3160 + ld [$d601], a + ret +; 0x591c9 + +INCBIN "baserom.gbc",$591c9,$a0 + +Route8Text2: ; 0x59269 + db $08 ; asm + ld hl, $51ef + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$59273,$59282 - $59273 + +Route8Text3: ; 0x59282 + db $08 ; asm + ld hl, $51fb + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$5928c,$5929b - $5928c + +Route8Text4: ; 0x5929b + db $08 ; asm + ld hl, $5207 + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$592a5,$592b4 - $592a5 + +Route8Text5: ; 0x592b4 + db $08 ; asm + ld hl, $5213 + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$592be,$592cd - $592be + +Route8Text6: ; 0x592cd + db $08 ; asm + ld hl, $521f + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$592d7,$592e6 - $592d7 + +Route8Text7: ; 0x592e6 + db $08 ; asm + ld hl, $522b + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$592f0,$592ff - $592f0 + +Route8Text8: ; 0x592ff + db $08 ; asm + ld hl, $5237 + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$59309,$59318 - $59309 + +Route8Text9: ; 0x59318 + db $08 ; asm + ld hl, $5243 + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$59322,$f + +Route8Text10: ; 0x59331 + TX_FAR _Route8Text10 + db $50 + +Route10Script: ; 0x59336 + call $3c3c + ld hl, $5363 + ld de, $5349 + ld a, [$d605] + call $3160 + ld [$d605], a + ret +; 0x59349 + +INCBIN "baserom.gbc",$59349,$6 + +Route10Texts: ; 0x5934f + dw Route10Text1, Route10Text2, Route10Text3, Route10Text4, Route10Text5, Route10Text6, Route10Text7, Route10Text8, Route10Text9, Route10Text10 + +INCBIN "baserom.gbc",$59363,$49 + +Route10Text1: ; 0x593ac + db $08 ; asm + ld hl, $5363 + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$593b6,$593c5 - $593b6 + +Route10Text2: ; 0x593c5 + db $08 ; asm + ld hl, $536f + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$593cf,$593de - $593cf + +Route10Text3: ; 0x593de + db $08 ; asm + ld hl, $537b + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$593e8,$593f7 - $593e8 + +Route10Text4: ; 0x593f7 + db $08 ; asm + ld hl, $5387 + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$59401,$59410 - $59401 + +Route10Text5: ; 0x59410 + db $08 ; asm + ld hl, $5393 + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$5941a,$59429 - $5941a + +Route10Text6: ; 0x59429 + db $08 ; asm + ld hl, $539f + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$59433,$f + +Route10Text9: ; 0x59442 +Route10Text7: ; 0x59442 + TX_FAR _Route10Text7 ; _Route10Text9 + db $50 + +Route10Text10: ; 0x59447 + TX_FAR _Route10Text10 + db $50 + +Route11Script: ; 0x5944c + call $3c3c + ld hl, $547b + ld de, $545f + ld a, [$d623] + call $3160 + ld [$d623], a + ret +; 0x5945f + +INCBIN "baserom.gbc",$5945f,$ae + +Route11Text2: ; 0x5950d + db $08 ; asm + ld hl, $5487 + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$59517,$59526 - $59517 + +Route11Text3: ; 0x59526 + db $08 ; asm + ld hl, $5493 + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$59530,$5953f - $59530 + +Route11Text4: ; 0x5953f + db $08 ; asm + ld hl, $549f + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$59549,$59558 - $59549 + +Route11Text5: ; 0x59558 + db $08 ; asm + ld hl, $54ab + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$59562,$59571 - $59562 + +Route11Text6: ; 0x59571 + db $08 ; asm + ld hl, $54b7 + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$5957b,$5958a - $5957b + +Route11Text7: ; 0x5958a + db $08 ; asm + ld hl, $54c3 + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$59594,$595a3 - $59594 + +Route11Text8: ; 0x595a3 + db $08 ; asm + ld hl, $54cf + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$595ad,$595bc - $595ad + +Route11Text9: ; 0x595bc + db $08 ; asm + ld hl, $54db + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$595c6,$595d5 - $595c6 + +Route11Text10: ; 0x595d5 + db $08 ; asm + ld hl, $54e7 + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$595df,$f + +Route11Text11: ; 0x595ee + TX_FAR _Route11Text11 + db $50 + +Route12Script: ; 0x595f3 + call $3c3c + ld hl, $5691 + ld de, $5611 + ld a, [$d624] + call $3160 + ld [$d624], a + ret +; 0x59606 + +INCBIN "baserom.gbc",$59606,$6f + +Route12Texts: ; 0x59675 + dw Route12Text1, Route12Text2, Route12Text3, Route12Text4, Route12Text5, Route12Text6, Route12Text7, Route12Text8, Route12Text9, Route12Text10, Route12Text11, Route12Text12, Route12Text13, Route12Text14 + +INCBIN "baserom.gbc",$59691,$55 + +Route12Text1: ; 0x596e6 + TX_FAR _Route12Text1 + db $50 + +INCBIN "baserom.gbc",$596eb,$596f5 - $596eb + +Route12Text2: ; 0x596f5 + db $08 ; asm + ld hl, $5691 + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$596ff,$5970e - $596ff + +Route12Text3: ; 0x5970e + db $08 ; asm + ld hl, $569d + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$59718,$59727 - $59718 + +Route12Text4: ; 0x59727 + db $08 ; asm + ld hl, $56a9 + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$59731,$59740 - $59731 + +Route12Text5: ; 0x59740 + db $08 ; asm + ld hl, $56b5 + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$5974a,$59759 - $5974a + +Route12Text6: ; 0x59759 + db $08 ; asm + ld hl, $56c1 + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$59763,$59772 - $59763 + +Route12Text7: ; 0x59772 + db $08 ; asm + ld hl, $56cd + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$5977c,$5978b - $5977c + +Route12Text8: ; 0x5978b + db $08 ; asm + ld hl, $56d9 + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$59795,$f + +Route12Text11: ; 0x597a4 + TX_FAR _Route12Text11 + db $50 + +Route12Text12: ; 0x597a9 + TX_FAR _Route12Text12 + db $50 + +Route15Script: ; 0x597ae + call $3c3c + ld hl, $57df + ld de, $57c1 + ld a, [$d625] + call $3160 + ld [$d625], a + ret +; 0x597c1 + +INCBIN "baserom.gbc",$597c1,$6 + +Route15Texts: ; 0x597c7 + dw Route15Text1, Route15Text2, Route15Text3, Route15Text4, Route15Text5, Route15Text6, Route15Text7, Route15Text8, Route15Text9, Route15Text10, Route15Text11, Route15Text12 + +INCBIN "baserom.gbc",$597df,$79 + +Route15Text1: ; 0x59858 + db $8 ; asm + ld hl, $57df + jr asm_33cb7 ; 0x5985c $34 + +Route15Text2: + db $8 ; asm + ld hl, $57eb + jr asm_33cb7 ; 0x59862 $2e + +Route15Text3: + db $8 ; asm + ld hl, $57f7 + jr asm_33cb7 ; 0x59868 $28 + +Route15Text4: + db $8 ; asm + ld hl, $5803 + jr asm_33cb7 ; 0x5986e $22 + +Route15Text5: + db $8 ; asm + ld hl, $580f + jr asm_33cb7 ; 0x59874 $1c + +Route15Text6: + db $8 ; asm + ld hl, $581b + jr asm_33cb7 ; 0x5987a $16 + +Route15Text7: + db $8 ; asm + ld hl, $5827 + jr asm_33cb7 ; 0x59880 $10 + +Route15Text8: + db $8 ; asm + ld hl, $5833 + jr asm_33cb7 ; 0x59886 $a + +Route15Text9: + db $8 ; asm + ld hl, $583f + jr asm_33cb7 ; 0x5988c $4 + +Route15Text10: + db $8 ; asm + ld hl, $584b +asm_33cb7: ; 0x59892 + call $31cc + jp $24d7 +; 0x59898 + +INCBIN "baserom.gbc",$59898,$96 + +Route15Text12: ; 0x5992e + TX_FAR _Route15Text12 + db $50 + +Route16Script: ; 0x59933 + call $3c3c + ld hl, $59cf + ld de, $5951 + ld a, [$d626] + call $3160 + ld [$d626], a + ret +; 0x59946 + +INCBIN "baserom.gbc",$59946,$73 + +Route16Texts: ; 0x599b9 + dw Route16Text1, Route16Text2, Route16Text3, Route16Text4, Route16Text5, Route16Text6, Route16Text7, Route16Text8, Route16Text9, Route16Text10, Route16Text11 + +INCBIN "baserom.gbc",$599cb + 4,$4d - 4 + +Route16Text1: ; 0x59a18 + db $08 ; asm + ld hl, $59cf + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$59a22,$59a31 - $59a22 + +Route16Text2: ; 0x59a31 + db $08 ; asm + ld hl, $59db + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$59a3b,$59a4a - $59a3b + +Route16Text3: ; 0x59a4a + db $08 ; asm + ld hl, $59e7 + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$59a54,$59a63 - $59a54 + +Route16Text4: ; 0x59a63 + db $08 ; asm + ld hl, $59f3 + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$59a6d,$59a7c - $59a6d + +Route16Text5: ; 0x59a7c + db $08 ; asm + ld hl, $59ff + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$59a86,$59a95 - $59a86 + +Route16Text6: ; 0x59a95 + db $08 ; asm + ld hl, $5a0b + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$59a9f,$f + +Route16Text7: ; 0x59aae + TX_FAR _Route16Text7 + db $50 + +Route16Text10: ; 0x59ab3 +INCBIN "baserom.gbc",$59ab3,5 + +Route16Text11: ; 0x59ab8 +INCBIN "baserom.gbc",$59ab8,5 + +Route16Text8: ; 0x59abd + TX_FAR _Route16Text8 + db $50 + +Route16Text9: ; 0x59ac2 + TX_FAR _Route16Text9 + db $50 + +Route18Script: ; 0x59ac7 + call $3c3c + ld hl, $5aea + ld de, $5ada + ld a, [$d627] + call $3160 + ld [$d627], a + ret +; 0x59ada + +INCBIN "baserom.gbc",$59ada,$6 + +Route18Texts: ; 0x59ae0 + dw Route18Text1, Route18Text2, Route18Text3, Route18Text4, Route18Text5 + +INCBIN "baserom.gbc",$59aea,$25 + +Route18Text1: ; 0x59b0f + db $08 ; asm + ld hl, $5aea + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$59b19,$59b28 - $59b19 + +Route18Text2: ; 0x59b28 + db $08 ; asm + ld hl, $5af6 + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$59b32,$59b41 - $59b32 + +Route18Text3: ; 0x59b41 + db $08 ; asm + ld hl, $5b02 + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$59b4b,$f + +Route18Text4: ; 0x59b5a + TX_FAR _Route18Text4 + db $50 + +Route18Text5: ; 0x59b5f + TX_FAR _Route18Text5 + db $50 + +FanClub_h: ; 0x59b64 to 0x59b70 (12 bytes) (id=90) + db $10 ; tileset + db $04, $04 ; dimensions (y, x) + dw FanClubBlocks, FanClubTexts, FanClubScript ; blocks, texts, scripts + db $00 ; connections + + dw FanClubObject ; objects + +FanClubScript: ; 0x59b70 + jp $3c3c +; 0x59b73 + +INCBIN "baserom.gbc",$59b73,$11 + +FanClubTexts: ; 0x59b84 + dw FanClubText1, FanClubText2, FanClubText3, FanClubText4, FanClubText5, FanClubText6, FanClubText7, FanClubText8 + +FanClubText1: ; 0x59b94 + db $08 ; asm + ld a, [$d771] + bit 7, a + jr nz, asm_67b22 ; 0x59b9a + ld hl, $5bb7 + call PrintText + ld hl, $d771 + set 6, [hl] + jr asm_64f01 ; 0x59ba7 +asm_67b22 ; 0x59ba9 + ld hl, $5bbc + call PrintText + ld hl, $d771 + res 7, [hl] +asm_64f01 ; 0x59bb4 + jp $24d7 + +INCBIN "baserom.gbc",$59bb7,$59bc1 - $59bb7 + +FanClubText2: ; 0x59bc1 + db $08 ; asm + ld a, [$d771] + bit 6, a + jr nz, asm_5cd59 ; 0x59bc7 + ld hl, $5be4 + call PrintText + ld hl, $d771 + set 7, [hl] + jr asm_59625 ; 0x59bd4 +asm_5cd59 ; 0x59bd6 + ld hl, $5be9 + call PrintText + ld hl, $d771 + res 6, [hl] +asm_59625 ; 0x59be1 + jp $24d7 + +INCBIN "baserom.gbc",$59be4,$59bee - $59be4 + +FanClubText3: ; 0x59bee + db $8 + ld hl, $5c00 + call PrintText + ld a, $54 + call $13d0 + call $3748 + jp $24d7 +; 0x59c00 + +INCBIN "baserom.gbc",$59c00,$5 + +FanClubText4: ; 0x59c05 + db $08 ; asm + ld hl, $5c17 + call PrintText + ld a,SEEL + call $13d0 + call $3748 + jp $24d7 + +INCBIN "baserom.gbc",$59c17,$59c1c - $59c17 + +FanClubText5: ; 0x59c1c + db $08 ; asm + call $5b73 + jr nz, asm_38bb3 ; 0x59c20 + ld hl, $5c65 + call PrintText + call $35ec + ld a, [$cc26] + and a + jr nz, asm_2c8d7 ; 0x59c2f + ld hl, $5c6a + call PrintText + ld bc,(BIKE_VOUCHER << 8) | 1 + call $3e2e + jr nc, asm_867d4 ; 0x59c3d + ld hl, $5c6f + call PrintText + ld hl, $d771 + set 1, [hl] + jr asm_d3c26 ; 0x59c4a +asm_867d4 ; 0x59c4c + ld hl, $5c83 + call PrintText + jr asm_d3c26 ; 0x59c52 +asm_2c8d7 ; 0x59c54 + ld hl, $5c79 + call PrintText + jr asm_d3c26 ; 0x59c5a +asm_38bb3 ; 0x59c5c + ld hl, $5c7e + call PrintText +asm_d3c26 ; 0x59c62 + jp $24d7 + +INCBIN "baserom.gbc",$59c65,$59c88 - $59c65 + +FanClubText6: + TX_FAR _FanClubText6 + db $50 + +FanClubText7: + TX_FAR _FanClubText7 + db $50 + +FanClubText8: ; 0x59c92 + TX_FAR _FanClubText8 + db $50 + +FanClubObject: ; 0x59c97 (size=62) + db $d ; border tile + + db $2 ; warps + db $7, $2, $1, $ff + db $7, $3, $1, $ff + + db $2 ; signs + db $0, $1, $7 ; FanClubText7 + db $0, $6, $8 ; FanClubText8 + + db $6 ; people + db SPRITE_FISHER2, $3 + 4, $6 + 4, $ff, $d2, $1 ; person + db SPRITE_GIRL, $3 + 4, $1 + 4, $ff, $d3, $2 ; person + db SPRITE_CLEFAIRY, $4 + 4, $6 + 4, $ff, $d2, $3 ; person + db SPRITE_SEEL, $4 + 4, $1 + 4, $ff, $d3, $4 ; person + db SPRITE_GENTLEMAN, $1 + 4, $3 + 4, $ff, $d0, $5 ; person + db SPRITE_CABLE_CLUB_WOMAN, $1 + 4, $5 + 4, $ff, $d0, $6 ; person + + ; warp-to + EVENT_DISP $4, $7, $2 + EVENT_DISP $4, $7, $3 + +FanClubBlocks: ; 16 + INCBIN "maps/fanclub.blk" + +SilphCo2_h: ; 0x59ce5 to 0x59cf1 (12 bytes) (id=207) + db $16 ; tileset + db $09, $0f ; dimensions (y, x) + dw SilphCo2Blocks, SilphCo2Texts, SilphCo2Script ; blocks, texts, scripts + db $00 ; connections + + dw SilphCo2Object ; objects + +SilphCo2Script: ; 0x59cf1 + call $5d07 + call $3c3c + ld hl, $5d90 + ld de, $5d80 + ld a, [$d643] + call $3160 + ld [$d643], a + ret +; 0x59d07 + +INCBIN "baserom.gbc",$59d07,$7f + +SilphCo2Texts: ; 0x59d86 + dw SilphCo2Text1, SilphCo2Text2, SilphCo2Text3, SilphCo2Text4, SilphCo2Text5 + +INCBIN "baserom.gbc",$59d90,$31 + +SilphCo2Text1: ; 0x59dc1 + db $08 ; asm + ld a, [$d826] + bit 7, a + jr nz, asm_b8a0d ; 0x59dc7 + ld hl, $5ded + call PrintText + ld bc,(TM_36 << 8) | 1 + call $3e2e + ld hl, $5dfd + jr nc, asm_2c1e0 ; 0x59dd8 + ld hl, $d826 + set 7, [hl] + ld hl, $5df2 + jr asm_2c1e0 ; 0x59de2 +asm_b8a0d ; 0x59de4 + ld hl, $5df8 +asm_2c1e0 ; 0x59de7 + call PrintText + jp $24d7 + +INCBIN "baserom.gbc",$59ded,$59e02 - $59ded + +SilphCo2Text2: ; 0x59e02 + db $08 ; asm + ld hl, $5d90 + call LoadTrainerHeader + jp $24d7 + +SilphCo2Text3: ; 0x59e0c + db $08 ; asm + ld hl, $5d9c + call LoadTrainerHeader + jp $24d7 + +SilphCo2Text4: ; 0x59e16 + db $08 ; asm + ld hl, $5da8 + call LoadTrainerHeader + jp $24d7 + +SilphCo2Text5: ; 0x59e20 + db $08 ; asm + ld hl, $5db4 + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$59e2a,$3c + +SilphCo2Object: ; 0x59e66 (size=98) + db $2e ; border tile + + db $7 ; warps + db $0, $18, $2, SILPH_CO_1F + db $0, $1a, $0, SILPH_CO_3F + db $0, $14, $0, SILPH_CO_ELEVATOR + db $3, $3, $6, SILPH_CO_3F + db $3, $d, $4, SILPH_CO_8F + db $f, $1b, $5, SILPH_CO_8F + db $f, $9, $4, SILPH_CO_6F + + db $0 ; signs + + db $5 ; people + db SPRITE_ERIKA, $1 + 4, $a + 4, $ff, $d1, $1 ; person + db SPRITE_OAK_AIDE, $c + 4, $5 + 4, $ff, $d0, $42, SCIENTIST + $C8, $2 ; trainer + db SPRITE_OAK_AIDE, $d + 4, $18 + 4, $ff, $d2, $43, SCIENTIST + $C8, $3 ; trainer + db SPRITE_ROCKET, $b + 4, $10 + 4, $ff, $d1, $44, ROCKET + $C8, $17 ; trainer + db SPRITE_ROCKET, $7 + 4, $18 + 4, $ff, $d1, $45, ROCKET + $C8, $18 ; trainer + + ; warp-to + EVENT_DISP $f, $0, $18 ; SILPH_CO_1F + EVENT_DISP $f, $0, $1a ; SILPH_CO_3F + EVENT_DISP $f, $0, $14 ; SILPH_CO_ELEVATOR + EVENT_DISP $f, $3, $3 ; SILPH_CO_3F + EVENT_DISP $f, $3, $d ; SILPH_CO_8F + EVENT_DISP $f, $f, $1b ; SILPH_CO_8F + EVENT_DISP $f, $f, $9 ; SILPH_CO_6F + +SilphCo2Blocks: ; 135 + INCBIN "maps/silphco2.blk" + +SilphCo3_h: ; 0x59f4f to 0x59f5b (12 bytes) (id=208) + db $16 ; tileset + db $09, $0f ; dimensions (y, x) + dw SilphCo3Blocks, SilphCo3Texts, SilphCo3Script ; blocks, texts, scripts + db $00 ; connections + + dw SilphCo3Object ; objects + +SilphCo3Script: ; 0x59f5b + call $5f71 + call $3c3c + ld hl, $5fcc + ld de, $5fbe + ld a, [$d644] + call $3160 + ld [$d644], a + ret +; 0x59f71 + +INCBIN "baserom.gbc",$59f71,$53 + +SilphCo3Texts: ; 0x59fc4 + dw SilphCo3Text1, SilphCo3Text2, SilphCo3Text3, SilphCo3Text4 + +INCBIN "baserom.gbc",$59fcc,$19 + +SilphCo3Text1: ; 0x59fe5 + db $08 ; asm + ld a, [$d838] + bit 7, a + ld hl, $5ffe + jr nz, asm_8c56f ; 0x59fee + ld hl, $5ff9 +asm_8c56f ; 0x59ff3 + call PrintText + jp $24d7 + +INCBIN "baserom.gbc",$59ff9,$5a003 - $59ff9 + +SilphCo3Text2: ; 0x5a003 + db $08 ; asm + ld hl, $5fcc + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$5a00d,$5a01c - $5a00d + +SilphCo3Text3: ; 0x5a01c + db $08 ; asm + ld hl, $5fd8 + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$5a026,$f + +SilphCo3Object: ; 0x5a035 (size=113) + db $2e ; border tile + + db $a ; warps + db $0, $1a, $1, SILPH_CO_2F + db $0, $18, $0, SILPH_CO_4F + db $0, $14, $0, SILPH_CO_ELEVATOR + db $b, $17, $9, SILPH_CO_3F + db $3, $3, $5, SILPH_CO_5F + db $f, $3, $6, SILPH_CO_5F + db $3, $1b, $3, SILPH_CO_2F + db $b, $3, $3, SILPH_CO_9F + db $b, $b, $4, SILPH_CO_7F + db $f, $1b, $3, SILPH_CO_3F + + db $0 ; signs + + db $4 ; people + db SPRITE_LAPRAS_GIVER, $8 + 4, $18 + 4, $ff, $ff, $1 ; person + db SPRITE_ROCKET, $7 + 4, $14 + 4, $ff, $d2, $42, ROCKET + $C8, $19 ; trainer + db SPRITE_OAK_AIDE, $9 + 4, $7 + 4, $ff, $d0, $43, SCIENTIST + $C8, $4 ; trainer + db SPRITE_BALL, $5 + 4, $8 + 4, $ff, $ff, $84, HYPER_POTION ; item + + ; warp-to + EVENT_DISP $f, $0, $1a ; SILPH_CO_2F + EVENT_DISP $f, $0, $18 ; SILPH_CO_4F + EVENT_DISP $f, $0, $14 ; SILPH_CO_ELEVATOR + EVENT_DISP $f, $b, $17 ; SILPH_CO_3F + EVENT_DISP $f, $3, $3 ; SILPH_CO_5F + EVENT_DISP $f, $f, $3 ; SILPH_CO_5F + EVENT_DISP $f, $3, $1b ; SILPH_CO_2F + EVENT_DISP $f, $b, $3 ; SILPH_CO_9F + EVENT_DISP $f, $b, $b ; SILPH_CO_7F + EVENT_DISP $f, $f, $1b ; SILPH_CO_3F + +SilphCo3Blocks: ; 135 + INCBIN "maps/silphco3.blk" + +SilphCo10_h: ; 0x5a12d to 0x5a139 (12 bytes) (id=234) + db $16 ; tileset + db $09, $08 ; dimensions (y, x) + dw SilphCo10Blocks, SilphCo10Texts, SilphCo10Script ; blocks, texts, scripts + db $00 ; connections + + dw SilphCo10Object ; objects + +SilphCo10Script: ; 0x5a139 + call $614f + call $3c3c + ld hl, $6192 + ld de, $6180 + ld a, [$d658] + call $3160 + ld [$d658], a + ret +; 0x5a14f + +INCBIN "baserom.gbc",$5a14f,$37 + +SilphCo10Texts: ; 0x5a186 + dw SilphCo10Text1, SilphCo10Text2, SilphCo10Text3, SilphCo10Text4, SilphCo10Text5, SilphCo10Text6 + +INCBIN "baserom.gbc",$5a192,$19 + +SilphCo10Text1: ; 0x5a1ab + db $08 ; asm + ld hl, $6192 + call LoadTrainerHeader + jp $24d7 + +SilphCo10Text2: ; 0x5a1b5 + db $08 ; asm + ld hl, $619e + call LoadTrainerHeader + jp $24d7 + +SilphCo10Text3: ; 0x5a1bf + db $08 ; asm + ld a, [$d838] + bit 7, a + ld hl, $61d8 + jr nz, asm_cf85f ; 0x5a1c8 + ld hl, $61d3 +asm_cf85f ; 0x5a1cd + call PrintText + jp $24d7 + +INCBIN "baserom.gbc",$5a1d3,$28 + +SilphCo10Object: ; 0x5a1fb (size=95) + db $2e ; border tile + + db $6 ; warps + db $0, $8, $0, SILPH_CO_9F + db $0, $a, $0, SILPH_CO_11F + db $0, $c, $0, SILPH_CO_ELEVATOR + db $b, $9, $3, SILPH_CO_4F + db $f, $d, $5, SILPH_CO_4F + db $7, $d, $6, SILPH_CO_4F + + db $0 ; signs + + db $6 ; people + db SPRITE_ROCKET, $9 + 4, $1 + 4, $ff, $d3, $41, ROCKET + $C8, $27 ; trainer + db SPRITE_OAK_AIDE, $2 + 4, $a + 4, $ff, $d2, $42, SCIENTIST + $C8, $b ; trainer + db SPRITE_ERIKA, $f + 4, $9 + 4, $fe, $0, $3 ; person + db SPRITE_BALL, $c + 4, $2 + 4, $ff, $ff, $84, TM_26 ; item + db SPRITE_BALL, $e + 4, $4 + 4, $ff, $ff, $85, RARE_CANDY ; item + db SPRITE_BALL, $b + 4, $5 + 4, $ff, $ff, $86, CARBOS ; item + + ; warp-to + EVENT_DISP $8, $0, $8 ; SILPH_CO_9F + EVENT_DISP $8, $0, $a ; SILPH_CO_11F + EVENT_DISP $8, $0, $c ; SILPH_CO_ELEVATOR + EVENT_DISP $8, $b, $9 ; SILPH_CO_4F + EVENT_DISP $8, $f, $d ; SILPH_CO_4F + EVENT_DISP $8, $7, $d ; SILPH_CO_4F + +SilphCo10Blocks: ; 72 + INCBIN "maps/silphco10.blk" + +Lance_h: ; 0x5a2a2 to 0x5a2ae (12 bytes) (id=113) + db $05 ; tileset + db $0d, $0d ; dimensions (y, x) + dw LanceBlocks, LanceTexts, LanceScript ; blocks, texts, scripts + db $00 ; connections + + dw LanceObject ; objects + +LanceScript: ; 0x5a2ae + call $62c4 + call $3c3c + ld hl, $6397 + ld de, $62fa + ld a, [$d653] + call $3160 + ld [$d653], a + ret +; 0x5a2c4 + +INCBIN "baserom.gbc",$5a2c4,$d1 + +LanceTexts: ; 0x5a395 + dw LanceText1 + +INCBIN "baserom.gbc",$5a397,$d + +LanceText1: ; 0x5a3a4 + db $08 ; asm + ld hl, $6397 + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$5a3ae,$17 + +LanceObject: ; 0x5a3c5 (size=36) + db $3 ; border tile + + db $3 ; warps + db $10, $18, $2, AGATHAS_ROOM + db $0, $5, $0, CHAMPIONS_ROOM + db $0, $6, $0, CHAMPIONS_ROOM + + db $0 ; signs + + db $1 ; people + db SPRITE_LANCE, $1 + 4, $6 + 4, $ff, $d0, $41, LANCE + $C8, $1 ; trainer + + ; warp-to + EVENT_DISP $d, $10, $18 ; AGATHAS_ROOM + EVENT_DISP $d, $0, $5 ; CHAMPIONS_ROOM + EVENT_DISP $d, $0, $6 ; CHAMPIONS_ROOM + +LanceBlocks: ; 169 + INCBIN "maps/lance.blk" + +HallofFameRoom_h: ; 0x5a492 to 0x5a49e (12 bytes) (id=118) + db $07 ; tileset + db $04, $05 ; dimensions (y, x) + dw HallofFameRoomBlocks, HallofFameRoomTexts, HallofFameRoomScript ; blocks, texts, scripts + db $00 ; connections + + dw HallofFameRoomObject ; objects + +HallofFameRoomScript: ; 0x5a49e + call $3c3c + ld hl, $64b2 + ld a, [$d64b] + jp $3d97 +; 0x5a4aa + +INCBIN "baserom.gbc",$5a4aa,$5a4b2 - $5a4aa + +HallofFameRoomScripts: ; 0x5a4b2 + dw HallofFameRoomScript0, HallofFameRoomScript1, HallofFameRoomScript2 + +INCBIN "baserom.gbc",$5a4b8,$3 + +HallofFameRoomScript2: ; 0x5a4bb + call Delay3 + ld a, [$d358] + push af + xor a + ld [$cd6b], a + ld a, $55 + call Predef + pop af + ld [$d358], a + ld hl, $d733 + res 1, [hl] + inc hl + set 0, [hl] + xor a + ld hl, $d64d + ld [hli], a + ld [hli], a + ld [hl], a + ld [$d653], a + ld [$d64b], a + ld hl, $d863 + ld [hli], a + ld [hli], a + ld [hli], a + ld [hli], a + ld [hl], a + xor a + ld [$d64b], a + ld a, $0 + ld [$d719], a + ld b, $1c + ld hl, $7848 + call Bankswitch + ld b, $5 +.asm_5a4ff + ld c, $78 + call $3739 + dec b + jr nz, .asm_5a4ff ; 0x5a505 $f8 + call $3865 + jp $1f54 +; 0x5a50d + +HallofFameRoomScript0: ; 0x5a50d + ld a, $ff + ld [$cd6b], a + ld hl, $ccd3 + ld de, $6528 + call $350c + dec a + ld [$cd38], a + call $3486 + ld a, $1 + ld [$d64b], a + ret +; 0x5a528 + +INCBIN "baserom.gbc",$5a528,$5a52b - $5a528 + +HallofFameRoomScript1: ; 0x5a52b + ld a, [$cd38] + and a + ret nz + ld a, $1 + ld [$d528], a + ld a, $1 + ld [$ff00+$8c], a + call $3541 + ld a, $8 + ld [$ff00+$8d], a + call $34a6 + call Delay3 + xor a + ld [$cd6b], a + inc a + ld [$d528], a + ld a, $1 + ld [$ff00+$8c], a + call $2920 + ld a, $ff + ld [$cd6b], a + ld a, $8 + ld [$cc4d], a + ld a, $11 + call Predef + ld a, $2 + ld [$d64b], a + ret +; 0x5a56a + +HallofFameRoomTexts: ; 0x5a56a + dw HallofFameRoomText1 + +HallofFameRoomText1: ; 0x5a56c + TX_FAR _HallofFameRoomText1 + db $50 + +HallofFameRoomObject: ; 0x5a571 (size=26) + db $3 ; border tile + + db $2 ; warps + db $7, $4, $2, CHAMPIONS_ROOM + db $7, $5, $3, CHAMPIONS_ROOM + + db $0 ; signs + + db $1 ; people + db SPRITE_OAK, $2 + 4, $5 + 4, $ff, $d0, $1 ; person + + ; warp-to + EVENT_DISP $5, $7, $4 ; CHAMPIONS_ROOM + EVENT_DISP $5, $7, $5 ; CHAMPIONS_ROOM + +HallofFameRoomBlocks: ; 20 + INCBIN "maps/halloffameroom.blk" + +INCBIN "baserom.gbc",$5a59f,$1a61 + +SECTION "bank17",DATA,BANK[$17] + +VermilionMartBlocks: ; 16 + INCBIN "maps/vermilionmart.blk" + +RedsHouse2FBlocks: + INCBIN "maps/redshouse2f.blk" + +MuseumF1Blocks: ; 40 + INCBIN "maps/museumf1.blk" + +MuseumF2Blocks: ; 28 + INCBIN "maps/museumf2.blk" + +PewterPokecenterBlocks: ; 28 + INCBIN "maps/pewterpokecenter.blk" + +UndergroundTunnelEntranceRoute5Blocks: ; 16 + INCBIN "maps/undergroundtunnelentranceroute5.blk" + +ViridianForestexitBlocks: ; 20 + INCBIN "maps/viridianforestexit.blk" + +RedsHouse2F_h: + db $04 ; tileset + db $04,$04 ; dimensions + dw RedsHouse2FBlocks, RedsHouse2FTexts, RedsHouse2FScript + db 0 ; no connections + dw RedsHouse2FObject + +RedsHouse2FScript: + call $3C3C + ld hl,RedsHouse2FScriptPointers + ld a,[$D60C] + jp $3D97 + +RedsHouse2FScriptPointers: + dw RedsHouse2FScript1,RedsHouse2FScript2 + +RedsHouse2FScript1: + xor a + ld [$FFB4],a + ld a,8 + ld [$D528],a + ld a,1 + ld [$D60C],a + ret + +RedsHouse2FScript2: + ret + +RedsHouse2FTexts: + db "@" + +RedsHouse2FObject: + db $0A ; border tile + + db 1 ; warps + db 1,7,2,$25 + + db 0 ; signs + + db 0 ; people + + dw $C6EF + 4 + (4 + 6) * 0 + 3 + db 1,7 + +INCBIN "baserom.gbc",$5c0dc,$5c0eb - $5c0dc + +MuseumF1_h: ; 0x5c0eb to 0x5c0f7 (12 bytes) (id=52) + db $0a ; tileset + db $04, $0a ; dimensions (y, x) + dw MuseumF1Blocks, MuseumF1Texts, MuseumF1Script ; blocks, texts, scripts + db $00 ; connections + + dw MuseumF1Object ; objects + +MuseumF1Script: ; 0x5c0f7 + ld a, $1 + ld [$cf0c], a + xor a + ld [$cc3c], a + ld hl, $4109 + ld a, [$d619] + jp $3d97 +; 0x5c109 + +MuseumF1Scripts: ; 0x5c109 + dw MuseumF1Script0, MuseumF1Script1 + +MuseumF1Script0: ; 0x5c10d + ld a, [$d361] + cp $4 + ret nz + ld a, [$d362] + cp $9 + jr z, .asm_5c120 ; 0x5c118 $6 + ld a, [$d362] + cp $a + ret nz +.asm_5c120 + xor a + ld [$ff00+$b4], a + ld a, $1 + ld [$ff00+$8c], a + jp $2920 +; 0x5c12a + +MuseumF1Script1: ; 0x5c12a + ret +; 0x5c12b + +MuseumF1Texts: ; 0x5c12b + dw MuseumF1Text1, MuseumF1Text2, MuseumF1Text3, MuseumF1Text4, MuseumF1Text5 + +MuseumF1Text1: ; 0x5c135 + db $8 + ld a, [$d361] + cp $4 + jr nz, asm_8774b ; 0x5c13b $a + ld a, [$d362] + cp $d + jp z, $41f9 + jr asm_b8709 ; 0x5c145 $1c +asm_8774b: ; 0x5c147 + cp $3 + jr nz, asm_d49e7 ; 0x5c149 $8 + ld a, [$d362] + cp $c + jp z, $41f9 +asm_d49e7: ; 0x5c153 + ld a, [$d754] + bit 0, a + jr nz, asm_31a16 ; 0x5c158 $10 + ld hl, $423d + call PrintText + jp $4217 +asm_b8709: ; 0x5c163 + ld a, [$d754] + bit 0, a + jr z, asm_3ded4 ; 0x5c168 $9 +asm_31a16: ; 0x5c16a + ld hl, $4242 + call PrintText + jp $4217 +asm_3ded4: ; 0x5c173 + ld a, $13 + ld [$d125], a + call $30e8 + xor a + ld [$ff00+$b4], a + ld hl, $421f + call PrintText + call $35ec + ld a, [$cc26] + and a + jr nz, asm_de133 ; 0x5c18b $4d + xor a + ld [$ff00+$9f], a + ld [$ff00+$a0], a + ld a, $50 + ld [$ff00+$a1], a + call $35a6 + jr nc, asm_0f3e3 ; 0x5c199 $9 + ld hl, $4229 + call PrintText + jp $41da +asm_0f3e3: ; 0x5c1a4 + ld hl, $4224 + call PrintText + ld hl, $d754 + set 0, [hl] + xor a + ld [$cd3d], a + ld [$cd3e], a + ld a, $50 + ld [$cd3f], a + ld hl, $cd3f + ld de, $d349 + ld c, $3 + ld a, $c + call Predef + ld a, $13 + ld [$d125], a + call $30e8 + ld a, $b2 + call $3740 + call $3748 + jr asm_0b094 ; 0x5c1d8 $18 +asm_de133: ; 0x5c1da + ld hl, $421a + call PrintText + ld a, $1 + ld [$cd38], a + ld a, $80 + ld [$ccd3], a + call $3486 + call $2429 + jr asm_d1145 ; 0x5c1f0 $25 +asm_0b094: ; 0x5c1f2 + ld a, $1 + ld [$d619], a + jr asm_d1145 ; 0x5c1f7 $1e +;XXX what calls this? + ld hl, $422e + call PrintText + call $35ec + ld a, [$cc26] + cp $0 + jr nz, asm_d1144 + ld hl, $4233 + call PrintText + jr asm_d1145 ; 0x5c20f $6 +asm_d1144: + ld hl, $4238 + call PrintText +asm_d1145: ; 0x5c217 + jp $24d7 +; 0x5c21a + +INCBIN "baserom.gbc",$5c21a,$2d + +MuseumF1Text2: ; 0x5c247 + db $08 ; asm + ld hl, $4251 + call PrintText + jp $24d7 + +INCBIN "baserom.gbc",$5c251,$5c256 - $5c251 + +MuseumF1Text3: ; 0x5c256 + db $08 ; asm + ld a, [$d754] + bit 1, a + jr nz, .asm_16599 ; 0x5c25c + ld hl, $428e + call PrintText + ld bc,(OLD_AMBER << 8) | 1 + call $3e2e + jr nc, .asm_91ebf ; 0x5c26a + ld hl, $d754 + set 1, [hl] + ld a, $34 + ld [$cc4d], a + ld a, $11 + call Predef + ld hl, $4293 + jr .asm_52e0f ; 0x5c27e +.asm_91ebf ; 0x5c280 + ld hl, $429e + jr .asm_52e0f ; 0x5c283 +.asm_16599 ; 0x5c285 + ld hl, $4299 +.asm_52e0f ; 0x5c288 + call PrintText + jp $24d7 + +INCBIN "baserom.gbc",$5c28e,$5c2a3 - $5c28e + +MuseumF1Text4: ; 0x5c2a3 + db $08 ; asm + ld hl, $42ad + call PrintText + jp $24d7 + +INCBIN "baserom.gbc",$5c2ad,$5c2b2 - $5c2ad + +MuseumF1Text5: ; 0x5c2b2 + db $08 ; asm + ld hl, $42bc + call PrintText + jp $24d7 + +INCBIN "baserom.gbc",$5c2bc,$5 + +MuseumF1Object: ; 0x5c2c1 (size=74) + db $a ; border tile + + db $5 ; warps + db $7, $a, $0, $ff + db $7, $b, $0, $ff + db $7, $10, $1, $ff + db $7, $11, $1, $ff + db $7, $7, $0, MUSEUM_2F + + db $0 ; signs + + db $5 ; people + db SPRITE_OAK_AIDE, $4 + 4, $c + 4, $ff, $d2, $1 ; person + db SPRITE_GAMBLER, $4 + 4, $1 + 4, $ff, $ff, $2 ; person + db SPRITE_OAK_AIDE, $2 + 4, $f + 4, $ff, $d0, $3 ; person + db SPRITE_OAK_AIDE, $4 + 4, $11 + 4, $ff, $ff, $4 ; person + db SPRITE_OLD_AMBER, $2 + 4, $10 + 4, $ff, $ff, $5 ; person + + ; warp-to + EVENT_DISP $a, $7, $a + EVENT_DISP $a, $7, $b + EVENT_DISP $a, $7, $10 + EVENT_DISP $a, $7, $11 + EVENT_DISP $a, $7, $7 ; MUSEUM_2F + +MuseumF2_h: ; 0x5c30b to 0x5c317 (12 bytes) (id=53) + db $0a ; tileset + db $04, $07 ; dimensions (y, x) + dw MuseumF2Blocks, MuseumF2Texts, MuseumF2Script ; blocks, texts, scripts + db $00 ; connections + + dw MuseumF2Object ; objects + +MuseumF2Script: ; 0x5c317 + jp $3c3c +; 0x5c31a + +MuseumF2Texts: ; 0x5c31a + dw MuseumF2Text1, MuseumF2Text2, MuseumF2Text3, MuseumF2Text4, MuseumF2Text5, MuseumF2Text6, MuseumF2Text7 + +MuseumF2Text1: ; 0x5c328 + TX_FAR _MuseumF2Text1 + db $50 + +MuseumF2Text2: ; 0x5c32d + TX_FAR _MuseumF2Text2 + db $50 + +MuseumF2Text3: ; 0x5c332 + TX_FAR _MuseumF2Text3 + db $50 + +MuseumF2Text4: ; 0x5c337 + TX_FAR _MuseumF2Text4 + db $50 + +MuseumF2Text5: ; 0x5c33c + TX_FAR _MuseumF2Text5 + db $50 + +MuseumF2Text6: ; 0x5c341 + TX_FAR _MuseumF2Text6 + db $50 + +MuseumF2Text7: ; 0x5c346 + TX_FAR _MuseumF2Text7 + db $50 + +MuseumF2Object: ; 0x5c34b (size=48) + db $a ; border tile + + db $1 ; warps + db $7, $7, $4, MUSEUM_1F + + db $2 ; signs + db $2, $b, $6 ; MuseumF2Text6 + db $5, $2, $7 ; MuseumF2Text7 + + db $5 ; people + db SPRITE_BUG_CATCHER, $7 + 4, $1 + 4, $fe, $2, $1 ; person + db SPRITE_OLD_PERSON, $5 + 4, $0 + 4, $ff, $d0, $2 ; person + db SPRITE_OAK_AIDE, $5 + 4, $7 + 4, $ff, $d0, $3 ; person + db SPRITE_BRUNETTE_GIRL, $5 + 4, $b + 4, $ff, $ff, $4 ; person + db SPRITE_HIKER, $5 + 4, $c + 4, $ff, $d0, $5 ; person + + ; warp-to + EVENT_DISP $7, $7, $7 ; MUSEUM_1F + +PewterGym_h: ; 0x5c37b to 0x5c387 (12 bytes) (id=54) + db $07 ; tileset + db $07, $05 ; dimensions (y, x) + dw PewterGymBlocks, PewterGymTexts, PewterGymScript ; blocks, texts, scripts + db $00 ; connections + + dw PewterGymObject ; objects + +PewterGymScript: ; 0x5c387 + ld hl, $d126 + bit 6, [hl] + res 6, [hl] + call nz, $43a4 + call $3c3c + ld hl, $4441 + ld de, $43ca + ld a, [$d5fc] + call $3160 + ld [$d5fc], a + ret +; 0x5c3a4 + +INCBIN "baserom.gbc",$5c3a4,$91 + +PewterGymTexts: ; 0x5c435 + dw PewterGymText1, PewterGymText2, PewterGymText3, PewterGymText4, PewterGymText5, PewterGymText6 + +INCBIN "baserom.gbc",$5c43b + 6,$13 - 6 + +PewterGymText1: ; 0x5c44e + db $08 ; asm + ld a, [$d755] + bit 7, a + jr z, .asm_4a735 ; 0x5c454 + bit 6, a + jr nz, .asm_ff7d0 ; 0x5c458 + call z, $43df + call $30b6 + jr .asm_e0ffb ; 0x5c460 +.asm_ff7d0 ; 0x5c462 + ld hl, $44a3 + call PrintText + jr .asm_e0ffb ; 0x5c468 +.asm_4a735 ; 0x5c46a + ld hl, $449e + call PrintText + ld hl, $d72d + set 6, [hl] + set 7, [hl] + ld hl, $44bc + ld de, $44bc + call $3354 + ldh a, [$8c] + ld [$cf13], a + call $336a + call $32d7 + ld a, $1 + ld [$d05c], a + xor a + ldh [$b4], a + ld a, $3 + ld [$d5fc], a + ld [$da39], a +.asm_e0ffb ; 0x5c49b + jp $24d7 + +INCBIN "baserom.gbc",$5c49e,$5c4a8 - $5c49e + +PewterGymText4: ; 0x5c4a8 +INCBIN "baserom.gbc",$5c4a8,5 + +PewterGymText5: ; 0x5c4ad +INCBIN "baserom.gbc",$5c4ad,6 + +INCBIN "baserom.gbc",$5c4b3,$5c4b7 - $5c4b3 + +PewterGymText6: ; 0x5c4b7 +INCBIN "baserom.gbc",$5c4b7,5 + +INCBIN "baserom.gbc",$5c4bc,$5c4c6 - $5c4bc + +PewterGymText2: ; 0x5c4c6 + db $08 ; asm + ld hl, $4441 + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$5c4d0,$5c4df - $5c4d0 + +PewterGymText3: ; 0x5c4df + db $08 ; asm + ld a, [$d72a] + bit 0, a + jr nz, .asm_71369 ; 0x5c4e5 + ld hl, $4515 + call PrintText + call $35ec + ld a, [$cc26] + and a + jr nz, .asm_6123a ; 0x5c4f4 + ld hl, $451a + call PrintText + jr .asm_d1578 ; 0x5c4fc +.asm_6123a ; 0x5c4fe + ld hl, $4524 + call PrintText +.asm_d1578 ; 0x5c504 + ld hl, $451f + call PrintText + jr .asm_07013 ; 0x5c50a +.asm_71369 ; 0x5c50c + ld hl, $4529 + call PrintText +.asm_07013 ; 0x5c512 + jp $24d7 + +INCBIN "baserom.gbc",$5c515,$19 + +PewterGymObject: ; 0x5c52e (size=42) + db $3 ; border tile + + db $2 ; warps + db $d, $4, $2, $ff + db $d, $5, $2, $ff + + db $0 ; signs + + db $3 ; people + db SPRITE_BLACK_HAIR_BOY_2, $1 + 4, $4 + 4, $ff, $d0, $41, BROCK + $C8, $1 ; trainer + db SPRITE_BLACK_HAIR_BOY_1, $6 + 4, $3 + 4, $ff, $d3, $42, JR__TRAINER_M + $C8, $1 ; trainer + db SPRITE_GYM_HELPER, $a + 4, $7 + 4, $ff, $d0, $3 ; person + + ; warp-to + EVENT_DISP $5, $d, $4 + EVENT_DISP $5, $d, $5 + +PewterGymBlocks: ; 35 + INCBIN "maps/pewtergym.blk" + +PewterPokecenter_h: ; 0x5c57b to 0x5c587 (12 bytes) (id=58) + db $06 ; tileset + db $04, $07 ; dimensions (y, x) + dw PewterPokecenterBlocks, $458d, PewterPokecenterScript ; blocks, texts, scripts + db $00 ; connections + + dw PewterPokecenterObject ; objects + +PewterPokecenterScript: ; 0x5c587 + call $22fa + jp $3c3c +; 0x5c58d + +INCBIN "baserom.gbc",$5c58d,$9 + +PewterPokecenterText2: +PewterPokecenterText1: ; 0x5c596 + TX_FAR _PewterPokecenterText1 + db $50 + +PewterPokecenterText3: ; 0x5c59b + db $8 + ld a, $1 + ld [$cc3c], a + ld hl, $4603 + call PrintText + ld a, $ff + call $23b1 + ld c, $20 + call $3739 + ld hl, $4608 + ld de, $cd3f + ld bc, $0004 + call CopyData + ld a, [$c132] + ld hl, $cd3f +.asm_5c5c3 + cp [hl] + inc hl + jr nz, .asm_5c5c3 ; 0x5c5c5 $fc + dec hl + push hl + ld c, $1f + ld a, $d0 + call $23a1 + pop hl +.asm_5c5d1 + ld a, [hl] + ld [$c132], a + push hl + ld hl, $cd3f + ld de, $cd3e + ld bc, $0004 + call CopyData + ld a, [$cd3e] + ld [$cd42], a + pop hl + ld c, $18 + call $3739 + ld a, [$c026] + ld b, a + ld a, [$c027] + or b + jr nz, .asm_5c5d1 ; 0x5c5f6 $d9 + ld c, $30 + call $3739 + call $2307 + jp $24d7 +; 0x5c603 + +PewterPokecenterText4: ; broken TX_FAR to _PewterPokecenterText4 + db $17, $44, $47, $26 + db $50 + +;XXX wtf? +db $30, $38, $34, $3c + +PewterPokecenterText5: ; XXX confirm text_id number + db $f6 + +PewterPokecenterObject: ; 0x5c60d (size=44) + db $0 ; border tile + + db $2 ; warps + db $7, $3, $6, $ff + db $7, $4, $6, $ff + + db $0 ; signs + + db $4 ; people + db SPRITE_NURSE, $1 + 4, $3 + 4, $ff, $d0, $1 ; person + db SPRITE_GENTLEMAN, $7 + 4, $b + 4, $ff, $d2, $2 ; person + db SPRITE_CLEFAIRY, $3 + 4, $1 + 4, $ff, $d0, $3 ; person + db SPRITE_CABLE_CLUB_WOMAN, $2 + 4, $b + 4, $ff, $d0, $4 ; person + + ; warp-to + EVENT_DISP $7, $7, $3 + EVENT_DISP $7, $7, $4 + +CeruleanPokecenter_h: ; 0x5c639 to 0x5c645 (12 bytes) (id=64) + db $06 ; tileset + db $04, $07 ; dimensions (y, x) + dw CeruleanPokecenterBlocks, $464b, CeruleanPokecenterScript ; blocks, texts, scripts + db $00 ; connections + + dw CeruleanPokecenterObject ; objects + +CeruleanPokecenterScript: ; 0x5c645 + call $22fa + jp $3c3c +; 0x5c64b + +INCBIN "baserom.gbc",$5c64b,$8 + +CeruleanPokecenterText4: + db $f6, $ff + +CeruleanPokecenterText2: +CeruleanPokecenterText1: ; 0x5c655 + TX_FAR _CeruleanPokecenterText1 + db $50 + +CeruleanPokecenterText3: + TX_FAR _CeruleanPokecenterText3 + db $50 + +CeruleanPokecenterObject: ; 0x5c65f (size=44) + db $0 ; border tile + + db $2 ; warps + db $7, $3, $2, $ff + db $7, $4, $2, $ff + + db $0 ; signs + + db $4 ; people + db SPRITE_NURSE, $1 + 4, $3 + 4, $ff, $d0, $1 ; person + db SPRITE_BLACK_HAIR_BOY_2, $5 + 4, $a + 4, $fe, $0, $2 ; person + db SPRITE_GENTLEMAN, $3 + 4, $4 + 4, $ff, $d0, $3 ; person + db SPRITE_CABLE_CLUB_WOMAN, $2 + 4, $b + 4, $ff, $d0, $4 ; person + + ; warp-to + EVENT_DISP $7, $7, $3 + EVENT_DISP $7, $7, $4 + +CeruleanPokecenterBlocks: ; 28 + INCBIN "maps/ceruleanpokecenter.blk" + +CeruleanGym_h: ; 0x5c6a7 to 0x5c6b3 (12 bytes) (id=65) + db $07 ; tileset + db $07, $05 ; dimensions (y, x) + dw CeruleanGymBlocks, CeruleanGymTexts, CeruleanGymScript ; blocks, texts, scripts + db $00 ; connections + + dw CeruleanGymObject ; objects + +CeruleanGymScript: ; 0x5c6b3 + ld hl, $d126 + bit 6, [hl] + res 6, [hl] + call nz, $46d0 + call $3c3c + ld hl, $4758 + ld de, $46f8 + ld a, [$d5fd] + call $3160 + ld [$d5fd], a + ret +; 0x5c6d0 + +INCBIN "baserom.gbc",$5c6d0,$7a + +CeruleanGymTexts: ; 0x5c74a + dw CeruleanGymText1, CeruleanGymText2, CeruleanGymText3, CeruleanGymText4, CeruleanGymText5, CeruleanGymText6, CeruleanGymText7 + +INCBIN "baserom.gbc",$5c752 + 6,$1f - 6 + +CeruleanGymText1: ; 0x5c771 + db $08 ; asm + ld a, [$d75e] + bit 7, a + jr z, .asm_10854 ; 0x5c777 + bit 6, a + jr nz, .asm_37a1b ; 0x5c77b + call z, $470d + call $30b6 + jr .asm_95b04 ; 0x5c783 +.asm_37a1b ; 0x5c785 + ld hl, $47c3 + call PrintText + jr .asm_95b04 ; 0x5c78b +.asm_10854 ; 0x5c78d + ld hl, $47be + call PrintText + ld hl, $d72d + set 6, [hl] + set 7, [hl] + ld hl, $47d8 + ld de, $47d8 + call $3354 + ldh a, [$8c] + ld [$cf13], a + call $336a + call $32d7 + ld a, $2 + ld [$d05c], a + xor a + ldh [$b4], a + ld a, $3 + ld [$d5fd], a +.asm_95b04 ; 0x5c7bb + jp $24d7 + +INCBIN "baserom.gbc",$5c7be,$5c7c8 - $5c7be + +CeruleanGymText5: ; 0x5c7c8 +INCBIN "baserom.gbc",$5c7c8,5 + +CeruleanGymText6: ; 0x5c7cd +INCBIN "baserom.gbc",$5c7cd,4 +db $0b +db $50 + +CeruleanGymText7: ; 0x5c7d3 +INCBIN "baserom.gbc",$5c7d3,5 + +INCBIN "baserom.gbc",$5c7d8,$5c7df - $5c7d8 + +CeruleanGymText2: ; 0x5c7df + db $08 ; asm + ld hl, $4758 + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$5c7e9,$5c7f8 - $5c7e9 + +CeruleanGymText3: ; 0x5c7f8 + db $08 ; asm + ld hl, $4764 + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$5c802,$5c811 - $5c802 + +CeruleanGymText4: ; 0x5c811 + db $08 ; asm + ld a, [$d75e] + bit 7, a + jr nz, .asm_f80ce ; 0x5c817 + ld hl, $482a + call PrintText + jr .asm_18a31 ; 0x5c81f +.asm_f80ce ; 0x5c821 + ld hl, $482f + call PrintText +.asm_18a31 ; 0x5c827 + jp $24d7 + +INCBIN "baserom.gbc",$5c82a,$a + +CeruleanGymObject: ; 0x5c834 (size=50) + db $3 ; border tile + + db $2 ; warps + db $d, $4, $3, $ff + db $d, $5, $3, $ff + + db $0 ; signs + + db $4 ; people + db SPRITE_BRUNETTE_GIRL, $2 + 4, $4 + 4, $ff, $d0, $41, MISTY + $C8, $1 ; trainer + db SPRITE_LASS, $3 + 4, $2 + 4, $ff, $d3, $42, JR__TRAINER_F + $C8, $1 ; trainer + db SPRITE_SWIMMER, $7 + 4, $8 + 4, $ff, $d2, $43, SWIMMER + $C8, $1 ; trainer + db SPRITE_GYM_HELPER, $a + 4, $7 + 4, $ff, $d0, $4 ; person + + ; warp-to + EVENT_DISP $5, $d, $4 + EVENT_DISP $5, $d, $5 + +CeruleanGymBlocks: ; 35 + INCBIN "maps/ceruleangym.blk" + +CeruleanMart_h: ; 0x5c889 to 0x5c895 (12 bytes) (id=67) + db $02 ; tileset + db $04, $04 ; dimensions (y, x) + dw $4000, CeruleanMartTexts, CeruleanMartScript ; blocks, texts, scripts + db $00 ; connections + + dw CeruleanMartObject ; objects + +CeruleanMartScript: ; 0x5c895 + jp $3c3c +; 0x5c898 + +CeruleanMartTexts: ; 0x5c898 + dw CeruleanMartText1, CeruleanMartText2, CeruleanMartText3 + +CeruleanMartText2: ; 0x5c89e + TX_FAR _CeruleanMartText2 + db $50 + +CeruleanMartText3: ; 0x5c8a3 + TX_FAR _CeruleanMartText3 + db $50 + +CeruleanMartObject: ; 0x5c8a8 (size=38) + db $0 ; border tile + + db $2 ; warps + db $7, $3, $5, $ff + db $7, $4, $5, $ff + + db $0 ; signs + + db $3 ; people + db SPRITE_MART_GUY, $5 + 4, $0 + 4, $ff, $d3, $1 ; person + db SPRITE_BLACK_HAIR_BOY_1, $4 + 4, $3 + 4, $fe, $1, $2 ; person + db SPRITE_LASS, $2 + 4, $6 + 4, $fe, $2, $3 ; person + + ; warp-to + EVENT_DISP $4, $7, $3 + EVENT_DISP $4, $7, $4 + +LavenderPokecenter_h: ; 0x5c8ce to 0x5c8da (12 bytes) (id=141) + db $06 ; tileset + db $04, $07 ; dimensions (y, x) + dw $4064, $48e0, LavenderPokecenterScript ; blocks, texts, scripts + db $00 ; connections + + dw LavenderPokecenterObject ; objects + +LavenderPokecenterScript: ; 0x5c8da + call $22fa + jp $3c3c +; 0x5c8e0 + +INCBIN "baserom.gbc",$5c8e0,$8 + +LavenderPokecenterText4: + db $f6, $ff + +LavenderPokecenterText2: +LavenderPokecenterText1: ; 0x5c8ea + TX_FAR _LavenderPokecenterText1 + +INCBIN "baserom.gbc",$5c8ee,$5c8ef - $5c8ee + +LavenderPokecenterText3: ; 0x5c8ef + TX_FAR _LavenderPokecenterText3 + db $50 + +LavenderPokecenterObject: ; 0x5c8f4 (size=44) + db $0 ; border tile + + db $2 ; warps + db $7, $3, $0, $ff + db $7, $4, $0, $ff + + db $0 ; signs + + db $4 ; people + db SPRITE_NURSE, $1 + 4, $3 + 4, $ff, $d0, $1 ; person + db SPRITE_GENTLEMAN, $3 + 4, $5 + 4, $ff, $ff, $2 ; person + db SPRITE_LITTLE_GIRL, $6 + 4, $2 + 4, $fe, $1, $3 ; person + db SPRITE_CABLE_CLUB_WOMAN, $2 + 4, $b + 4, $ff, $d0, $4 ; person + + ; warp-to + EVENT_DISP $7, $7, $3 + EVENT_DISP $7, $7, $4 + +LavenderMart_h: ; 0x5c920 to 0x5c92c (12 bytes) (id=150) + db $02 ; tileset + db $04, $04 ; dimensions (y, x) + dw $4000, $492f, LavenderMartScript ; blocks, texts, scripts + db $00 ; connections + + dw LavenderMartObject ; objects + +LavenderMartScript: ; 0x5c92c + jp $3c3c +; 0x5c92f + +LavenderMartTexts: ; 0x5c92f + dw LavenderMartText1, LavenderMartText2, LavenderMartText3 + +LavenderMartText2: ; 0x5c935 + TX_FAR _LavenderMartText2 + db $50 + +LavenderMartText3: ; 0x5c93a + db $08 ; asm + ld a, [$d7e0] + bit 7, a + jr nz, .asm_c88d4 ; 0x5c940 + ld hl, $4953 + call PrintText + jr .asm_6d225 ; 0x5c948 +.asm_c88d4 ; 0x5c94a + ld hl, $4958 + call PrintText +.asm_6d225 ; 0x5c950 + jp $24d7 + +INCBIN "baserom.gbc",$5c953,$a + +LavenderMartObject: ; 0x5c95d (size=38) + db $0 ; border tile + + db $2 ; warps + db $7, $3, $3, $ff + db $7, $4, $3, $ff + + db $0 ; signs + + db $3 ; people + db SPRITE_MART_GUY, $5 + 4, $0 + 4, $ff, $d3, $1 ; person + db SPRITE_BALDING_GUY, $4 + 4, $3 + 4, $ff, $ff, $2 ; person + db SPRITE_BLACK_HAIR_BOY_1, $2 + 4, $7 + 4, $ff, $ff, $3 ; person + + ; warp-to + EVENT_DISP $4, $7, $3 + EVENT_DISP $4, $7, $4 + +VermilionPokecenter_h: ; 0x5c983 to 0x5c98f (12 bytes) (id=89) + db $06 ; tileset + db $04, $07 ; dimensions (y, x) + dw $4064, $4995, VermilionPokecenterScript ; blocks, texts, scripts + db $00 ; connections + + dw VermilionPokecenterObject ; objects + +VermilionPokecenterScript: ; 0x5c98f + call $22fa + jp $3c3c +; 0x5c995 + +INCBIN "baserom.gbc",$5c995,$9 + +VermilionPokecenterText2: +VermilionPokecenterText1: ; 0x5c99e + TX_FAR _VermilionPokecenterText1 + db $50 + +VermilionPokecenterText3: ; 0x5c9a3 + TX_FAR _VermilionPokecenterText3 + db $50 + +VermilionPokecenterText4: ; 0x5c9a8 + db $f6 + +VermilionPokecenterObject: ; 0x5c9a9 (size=44) + db $0 ; border tile + + db $2 ; warps + db $7, $3, $0, $ff + db $7, $4, $0, $ff + + db $0 ; signs + + db $4 ; people + db SPRITE_NURSE, $1 + 4, $3 + 4, $ff, $d0, $1 ; person + db SPRITE_FISHER, $5 + 4, $a + 4, $ff, $ff, $2 ; person + db SPRITE_SAILOR, $4 + 4, $5 + 4, $ff, $ff, $3 ; person + db SPRITE_CABLE_CLUB_WOMAN, $2 + 4, $b + 4, $ff, $d0, $4 ; person + + ; warp-to + EVENT_DISP $7, $7, $3 + EVENT_DISP $7, $7, $4 + +VermilionMart_h: ; 0x5c9d5 to 0x5c9e1 (12 bytes) (id=91) + db $02 ; tileset + db $04, $04 ; dimensions (y, x) + dw VermilionMartBlocks, VermilionMartTexts, VermilionMartScript ; blocks, texts, scripts + db $00 ; connections + + dw VermilionMartObject ; objects + +VermilionMartScript: ; 0x5c9e1 + jp $3c3c +; 0x5c9e4 + +VermilionMartTexts: ; 0x5c9e4 + dw VermilionMartText1, VermilionMartText2, VermilionMartText3 + +VermilionMartText2: ; 0x5c9ea + TX_FAR _VermilionMartText2 + db $50 + +VermilionMartText3: ; 0x5c9ef + TX_FAR _VermilionMartText3 + db $50 + +VermilionMartObject: ; 0x5c9f4 (size=38) + db $0 ; border tile + + db $2 ; warps + db $7, $3, $2, $ff + db $7, $4, $2, $ff + + db $0 ; signs + + db $3 ; people + db SPRITE_MART_GUY, $5 + 4, $0 + 4, $ff, $d3, $1 ; person + db SPRITE_BLACK_HAIR_BOY_1, $6 + 4, $5 + 4, $ff, $ff, $2 ; person + db SPRITE_LASS, $3 + 4, $3 + 4, $fe, $2, $3 ; person + + ; warp-to + EVENT_DISP $4, $7, $3 + EVENT_DISP $4, $7, $4 + +VermilionGym_h: ; 0x5ca1a to 0x5ca26 (12 bytes) (id=92) + db $07 ; tileset + db $09, $05 ; dimensions (y, x) + dw VermilionGymBlocks, VermilionGymTexts, VermilionGymScript ; blocks, texts, scripts + db $00 ; connections + + dw VermilionGymObject ; objects + +VermilionGymScript: ; 0x5ca26 + ld hl, $d126 + bit 5, [hl] + res 5, [hl] + push hl + call nz, $4a4c + pop hl + bit 6, [hl] + res 6, [hl] + call nz, $4a6d + call $3c3c + ld hl, $4af8 + ld de, $4a95 + ld a, [$d5fe] + call $3160 + ld [$d5fe], a + ret +; 0x5ca4c + +INCBIN "baserom.gbc",$5ca4c,$9c + +VermilionGymTexts: ; 0x5cae8 + dw VermilionGymText1, VermilionGymText2, VermilionGymText3, VermilionGymText4, VermilionGymText5, VermilionGymText6, VermilionGymText7, VermilionGymText8 + +INCBIN "baserom.gbc",$5caf8,37 + +VermilionGymText1: ; 0x5cb1d + db $08 ; asm + ld a, [$d773] + bit 7, a + jr z, .asm_7cc29 ; 0x5cb23 + bit 6, a + jr nz, .asm_41203 ; 0x5cb27 + call z, $4aaa + call $30b6 + jr .asm_23621 ; 0x5cb2f +.asm_41203 ; 0x5cb31 + ld hl, $4b72 + call PrintText + jr .asm_23621 ; 0x5cb37 +.asm_7cc29 ; 0x5cb39 + ld hl, $4b6d + call PrintText + ld hl, $d72d + set 6, [hl] + set 7, [hl] + ld hl, $4b8b + ld de, $4b8b + call $3354 + ldh a, [$8c] + ld [$cf13], a + call $336a + call $32d7 + ld a, $3 + ld [$d05c], a + xor a + ldh [$b4], a + ld a, $3 + ld [$d5fe], a + ld [$da39], a +.asm_23621 ; 0x5cb6a + jp $24d7 + +INCBIN "baserom.gbc",$5cb6d,$5cb77 - $5cb6d + +VermilionGymText6: ; 0x5cb77 +INCBIN "baserom.gbc",$5cb77,5 + +VermilionGymText7: ; 0x5cb7c +INCBIN "baserom.gbc",$5cb7c,5 + +INCBIN "baserom.gbc",$5cb81,5 + +VermilionGymText8: ; 0x5cb86 +INCBIN "baserom.gbc",$5cb86,5 + +INCBIN "baserom.gbc",$5cb8b,5 + +VermilionGymText2: ; 0x5cb90 + db $08 ; asm + ld hl, $4af8 + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$5cb9a,$5cba9 - $5cb9a + +VermilionGymText3: ; 0x5cba9 + db $08 ; asm + ld hl, $4b04 + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$5cbb3,$5cbc2 - $5cbb3 + +VermilionGymText4: ; 0x5cbc2 + db $08 ; asm + ld hl, $4b10 + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$5cbcc,$5cbdb - $5cbcc + +VermilionGymText5: ; 0x5cbdb + db $08 ; asm + ld a, [$d72a] + bit 2, a + jr nz, .asm_13b67 ; 0x5cbe1 + ld hl, $4bf4 + call PrintText + jr .asm_c2b38 ; 0x5cbe9 +.asm_13b67 ; 0x5cbeb + ld hl, $4bf9 + call PrintText +.asm_c2b38 ; 0x5cbf1 + jp $24d7 + +INCBIN "baserom.gbc",$5cbf4,$a + +VermilionGymObject: ; 0x5cbfe (size=58) + db $3 ; border tile + + db $2 ; warps + db $11, $4, $3, $ff + db $11, $5, $3, $ff + + db $0 ; signs + + db $5 ; people + db SPRITE_ROCKER, $1 + 4, $5 + 4, $ff, $d0, $41, LT__SURGE + $C8, $1 ; trainer + db SPRITE_GENTLEMAN, $6 + 4, $9 + 4, $ff, $d2, $42, GENTLEMAN + $C8, $3 ; trainer + db SPRITE_BLACK_HAIR_BOY_2, $8 + 4, $3 + 4, $ff, $d2, $43, ROCKER + $C8, $1 ; trainer + db SPRITE_SAILOR, $a + 4, $0 + 4, $ff, $d3, $44, SAILOR + $C8, $8 ; trainer + db SPRITE_GYM_HELPER, $e + 4, $4 + 4, $ff, $d0, $5 ; person + + ; warp-to + EVENT_DISP $5, $11, $4 + EVENT_DISP $5, $11, $5 + +VermilionGymBlocks: ; 45 + INCBIN "maps/vermiliongym.blk" + +CopycatsHouseF2_h: ; 0x5cc65 to 0x5cc71 (12 bytes) (id=176) + db $04 ; tileset + db $04, $04 ; dimensions (y, x) + dw $4010, CopycatsHouseF2Texts, CopycatsHouseF2Script ; blocks, texts, scripts + db $00 ; connections + + dw CopycatsHouseF2Object ; objects + +CopycatsHouseF2Script: ; 0x5cc71 + jp $3c3c +; 0x5cc74 + +CopycatsHouseF2Texts: ; 0x5cc74 + dw CopycatsHouseF2Text1, CopycatsHouseF2Text2, CopycatsHouseF2Text3, CopycatsHouseF2Text4, CopycatsHouseF2Text5, CopycatsHouseF2Text6, CopycatsHouseF2Text7 + +CopycatsHouseF2Text1: ; 0x5cc82 + db $08 ; asm + ld a, [$d7af] + bit 0, a + jr nz, .asm_7ccf3 ; 0x5cc88 + ld a, $1 + ld [$cc3c], a + ld hl, $4cd4 + call PrintText + ld b,POKE_DOLL + call $3493 + jr z, .asm_62ecd ; 0x5cc9a + ld hl, $4cd9 + call PrintText + ld bc,(TM_31 << 8) | 1 + call $3e2e + jr nc, .asm_16690 ; 0x5cca8 + ld hl, $4cde + call PrintText + ld a, $33 + ldh [$db], a + ld b, $5 ; BANK(MyFunction) + ld hl, $7f37 ; MyFunction + call Bankswitch + ld hl, $d7af + set 0, [hl] + jr .asm_62ecd ; 0x5ccc1 +.asm_16690 ; 0x5ccc3 + ld hl, $4cee + call PrintText + jr .asm_62ecd ; 0x5ccc9 +.asm_7ccf3 ; 0x5cccb + ld hl, $4ce9 + call PrintText +.asm_62ecd ; 0x5ccd1 + jp $24d7 + +INCBIN "baserom.gbc",$5ccd4,$20 + +CopycatsHouseF2Text2: ; 0x5ccf4 + TX_FAR _CopycatsHouseF2Text2 + db $50 + +CopycatsHouseF2Text5: +CopycatsHouseF2Text4: +CopycatsHouseF2Text3: ; 0x5ccf9 + TX_FAR _CopycatsHouseF2Text3 + db $50 + +CopycatsHouseF2Text6: ; 0x5ccfe + TX_FAR _CopycatsHouseF2Text6 + db $50 + +CopycatsHouseF2Text7: ; 0x5cd03 + db $08 ; asm + ld a, [$c109] + cp $4 + ld hl, $4d1c + jr nz, .asm_399a4 ; 0x5cd0c + ld hl, $4d17 +.asm_399a4 ; 0x5cd11 + call PrintText + jp $24d7 + +INCBIN "baserom.gbc",$5cd17,$a + +CopycatsHouseF2Object: ; 0x5cd21 (size=48) + db $a ; border tile + + db $1 ; warps + db $1, $7, $2, COPYCATS_HOUSE_1F + + db $2 ; signs + db $5, $3, $6 ; CopycatsHouseF2Text6 + db $1, $0, $7 ; CopycatsHouseF2Text7 + + db $5 ; people + db SPRITE_BRUNETTE_GIRL, $3 + 4, $4 + 4, $fe, $0, $1 ; person + db SPRITE_BIRD, $6 + 4, $4 + 4, $fe, $2, $2 ; person + db SPRITE_SLOWBRO, $1 + 4, $5 + 4, $ff, $d0, $3 ; person + db SPRITE_BIRD, $0 + 4, $2 + 4, $ff, $d0, $4 ; person + db SPRITE_CLEFAIRY, $6 + 4, $1 + 4, $ff, $d3, $5 ; person + + ; warp-to + EVENT_DISP $4, $1, $7 ; COPYCATS_HOUSE_1F + +FightingDojo_h: ; 0x5cd51 to 0x5cd5d (12 bytes) (id=177) + db $05 ; tileset + db $06, $05 ; dimensions (y, x) + dw FightingDojoBlocks, FightingDojoTexts, FightingDojoScript ; blocks, texts, scripts + db $00 ; connections + + dw FightingDojoObject ; objects + +FightingDojoScript: ; 0x5cd5d + call $3c3c + ld hl, $4e13 + ld de, $4d7b + ld a, [$d642] + call $3160 + ld [$d642], a + ret +; 0x5cd70 + +INCBIN "baserom.gbc",$5cd70,$93 + +FightingDojoTexts: ; 0x5ce03 + dw FightingDojoText1, FightingDojoText2, FightingDojoText3, FightingDojoText4, FightingDojoText5, FightingDojoText6, FightingDojoText7, FightingDojoText8 + +INCBIN "baserom.gbc",$5ce13,$31 + +FightingDojoText1: ; 0x5ce44 + db $08 ; asm + ld a, [$d7b1] + bit 0, a + jp nz, $4e7d + bit 1, a + jp nz, $4e85 + ld hl, $4e8e + call PrintText + ld hl, $d72d + set 6, [hl] + set 7, [hl] + ld hl, $4e93 + ld de, $4e93 + call $3354 + ldh a, [$8c] + ld [$cf13], a + call $336a + call $32d7 + ld a, $3 + ld [$d642], a + ld [$da39], a + jr .asm_9dba4 ; 0x5ce7b + ld hl, $4e9d + call PrintText + jr .asm_9dba4 ; 0x5ce83 + ld hl, $4e98 + call PrintText +.asm_9dba4 ; 0x5ce8b + jp $24d7 + +INCBIN "baserom.gbc",$5ce8e,$5ce98 - $5ce8e + +FightingDojoText8: ; 0x5ce98 +INCBIN "baserom.gbc",$5ce98,5 + +INCBIN "baserom.gbc",$5ce9d,5 + +FightingDojoText2: ; 0x5cea2 + db $08 ; asm + ld hl, $4e13 + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$5ceac,$5cebb - $5ceac + +FightingDojoText3: ; 0x5cebb + db $08 ; asm + ld hl, $4e1f + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$5cec5,$5ced4 - $5cec5 + +FightingDojoText4: ; 0x5ced4 + db $08 ; asm + ld hl, $4e2b + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$5cede,$5ceed - $5cede + +FightingDojoText5: ; 0x5ceed + db $08 ; asm + ld hl, $4e37 + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$5cef7,$5cf06 - $5cef7 + +FightingDojoText6: ; 0x5cf06 + db $08 ; asm + ld a, [$d7b1] + and $c0 + jr z, .asm_f8e28 ; 0x5cf0c + ld hl, $4f96 + call PrintText + jr .asm_3a2c8 ; 0x5cf14 +.asm_f8e28 ; 0x5cf16 + ld a, $2b + call $349b + ld hl, $4f49 + call PrintText + call $35ec + ld a, [$cc26] + and a + jr nz, .asm_3a2c8 ; 0x5cf28 + ld a, [$cf91] + ld b, a + ld c,30 + call GivePokemon + jr nc, .asm_3a2c8 ; 0x5cf33 + ld a, $4a + ld [$cc4d], a + ld a, $11 + call Predef + ld hl, $d7b1 + set 6, [hl] + set 0, [hl] +.asm_3a2c8 ; 0x5cf46 + jp $24d7 + +INCBIN "baserom.gbc",$5cf49,$5cf4e - $5cf49 + +FightingDojoText7: ; 0x5cf4e + db $08 ; asm + ld a, [$d7b1] + and $c0 + jr z, .asm_170a9 ; 0x5cf54 + ld hl, $4f96 + call PrintText + jr .asm_f1f47 ; 0x5cf5c +.asm_170a9 ; 0x5cf5e + ld a, $2c + call $349b + ld hl, $4f91 + call PrintText + call $35ec + ld a, [$cc26] + and a + jr nz, .asm_f1f47 ; 0x5cf70 + ld a, [$cf91] + ld b, a + ld c,30 + call GivePokemon + jr nc, .asm_f1f47 ; 0x5cf7b + ld hl, $d7b1 + set 7, [hl] + set 0, [hl] + ld a, $4b + ld [$cc4d], a + ld a, $11 + call Predef +.asm_f1f47 ; 0x5cf8e + jp $24d7 + +INCBIN "baserom.gbc",$5cf91,$a + +FightingDojoObject: ; 0x5cf9b (size=72) + db $3 ; border tile + + db $2 ; warps + db $b, $4, $1, $ff + db $b, $5, $1, $ff + + db $0 ; signs + + db $7 ; people + db SPRITE_HIKER, $3 + 4, $5 + 4, $ff, $d0, $41, BLACKBELT + $C8, $1 ; trainer + db SPRITE_HIKER, $4 + 4, $3 + 4, $ff, $d3, $42, BLACKBELT + $C8, $2 ; trainer + db SPRITE_HIKER, $6 + 4, $3 + 4, $ff, $d3, $43, BLACKBELT + $C8, $3 ; trainer + db SPRITE_HIKER, $5 + 4, $5 + 4, $ff, $d2, $44, BLACKBELT + $C8, $4 ; trainer + db SPRITE_HIKER, $7 + 4, $5 + 4, $ff, $d2, $45, BLACKBELT + $C8, $5 ; trainer + db SPRITE_BALL, $1 + 4, $4 + 4, $ff, $ff, $6 ; person + db SPRITE_BALL, $1 + 4, $5 + 4, $ff, $ff, $7 ; person + + ; warp-to + EVENT_DISP $5, $b, $4 + EVENT_DISP $5, $b, $5 + +FightingDojoBlocks: ; 30 + INCBIN "maps/fightingdojo.blk" + +SaffronGym_h: ; 0x5d001 to 0x5d00d (12 bytes) (id=178) + db $16 ; tileset + db $09, $0a ; dimensions (y, x) + dw SaffronGymBlocks, SaffronGymTexts, SaffronGymScript ; blocks, texts, scripts + db $00 ; connections + + dw SaffronGymObject ; objects + +SaffronGymScript: ; 0x5d00d + ld hl, $d126 + bit 6, [hl] + res 6, [hl] + call nz, $502a + call $3c3c + ld hl, $50c3 + ld de, $5053 + ld a, [$d65c] + call $3160 + ld [$d65c], a + ret +; 0x5d02a + +INCBIN "baserom.gbc",$5d02a,$81 + +SaffronGymTexts: ; 0x5d0ab + dw SaffronGymText1, SaffronGymText2, SaffronGymText3, SaffronGymText4, SaffronGymText5, SaffronGymText6, SaffronGymText7, SaffronGymText8, SaffronGymText9, SaffronGymText10, SaffronGymText11, SaffronGymText12 + +INCBIN "baserom.gbc",$5d0bd + 6,$5b - 6 + +SaffronGymText1: ; 0x5d118 + db $08 ; asm + ld a, [$d7b3] + bit 1, a + jr z, .asm_e3544 ; 0x5d11e + bit 0, a + jr nz, .asm_8d2f6 ; 0x5d122 + call z, $5068 + call $30b6 + jr .asm_34c2c ; 0x5d12a +.asm_8d2f6 ; 0x5d12c + ld hl, $516e + call PrintText + jr .asm_34c2c ; 0x5d132 +.asm_e3544 ; 0x5d134 + ld hl, $5162 + call PrintText + ld hl, $d72d + set 6, [hl] + set 7, [hl] + ld hl, $5167 + ld de, $5167 + call $3354 + ldh a, [$8c] + ld [$cf13], a + call $336a + call $32d7 + ld a, $6 + ld [$d05c], a + ld a, $3 + ld [$d65c], a +.asm_34c2c ; 0x5d15f + jp $24d7 + +INCBIN "baserom.gbc",$5d162,$5d173 - $5d162 + +SaffronGymText10: ; 0x5d173 +INCBIN "baserom.gbc",$5d173,5 + +SaffronGymText11: ; 0x5d178 +INCBIN "baserom.gbc",$5d178,5 + +INCBIN "baserom.gbc",$5d17d,$5d182 - $5d17d + +SaffronGymText12: ; 0x5d182 +INCBIN "baserom.gbc",$5d182,5 + +SaffronGymText2: ; 0x5d187 + db $08 ; asm + ld hl, $50c3 + call LoadTrainerHeader + jp $24d7 + +SaffronGymText3: ; 0x5d191 + db $08 ; asm + ld hl, $50cf + call LoadTrainerHeader + jp $24d7 + +SaffronGymText4: ; 0x5d19b + db $08 ; asm + ld hl, $50db + call LoadTrainerHeader + jp $24d7 + +SaffronGymText5: ; 0x5d1a5 + db $08 ; asm + ld hl, $50e7 + call LoadTrainerHeader + jp $24d7 + +SaffronGymText6: ; 0x5d1af + db $08 ; asm + ld hl, $50f3 + call LoadTrainerHeader + jp $24d7 + +SaffronGymText7: ; 0x5d1b9 + db $08 ; asm + ld hl, $50ff + call LoadTrainerHeader + jp $24d7 + +SaffronGymText8: ; 0x5d1c3 + db $08 ; asm + ld hl, $510b + call LoadTrainerHeader + jp $24d7 + +SaffronGymText9: ; 0x5d1cd + db $08 ; asm + ld a, [$d7b3] + bit 1, a + jr nz, .asm_13f3c ; 0x5d1d3 + ld hl, $51e6 + call PrintText + jr .asm_e9907 ; 0x5d1db +.asm_13f3c ; 0x5d1dd + ld hl, $51eb + call PrintText +.asm_e9907 ; 0x5d1e3 + jp $24d7 + +INCBIN "baserom.gbc",$5d1e6,$73 + +SaffronGymObject: ; 0x5d259 (size=330) + db $2e ; border tile + + db $20 ; warps + db $11, $8, $2, $ff + db $11, $9, $2, $ff + db $3, $1, $16, SAFFRON_GYM + db $3, $5, $f, SAFFRON_GYM + db $5, $1, $12, SAFFRON_GYM + db $5, $5, $8, SAFFRON_GYM + db $9, $1, $1b, SAFFRON_GYM + db $9, $5, $10, SAFFRON_GYM + db $b, $1, $5, SAFFRON_GYM + db $b, $5, $d, SAFFRON_GYM + db $f, $1, $17, SAFFRON_GYM + db $f, $5, $1e, SAFFRON_GYM + db $11, $1, $11, SAFFRON_GYM + db $11, $5, $9, SAFFRON_GYM + db $3, $9, $1a, SAFFRON_GYM + db $3, $b, $3, SAFFRON_GYM + db $5, $9, $7, SAFFRON_GYM + db $5, $b, $c, SAFFRON_GYM + db $b, $b, $4, SAFFRON_GYM + db $f, $b, $1f, SAFFRON_GYM + db $3, $f, $18, SAFFRON_GYM + db $3, $13, $1c, SAFFRON_GYM + db $5, $f, $2, SAFFRON_GYM + db $5, $13, $a, SAFFRON_GYM + db $9, $f, $14, SAFFRON_GYM + db $9, $13, $1d, SAFFRON_GYM + db $b, $f, $e, SAFFRON_GYM + db $b, $13, $6, SAFFRON_GYM + db $f, $f, $15, SAFFRON_GYM + db $f, $13, $19, SAFFRON_GYM + db $11, $f, $b, SAFFRON_GYM + db $11, $13, $13, SAFFRON_GYM + + db $0 ; signs + + db $9 ; people + db SPRITE_GIRL, $8 + 4, $9 + 4, $ff, $d0, $41, SABRINA + $C8, $1 ; trainer + db SPRITE_MEDIUM, $1 + 4, $a + 4, $ff, $d0, $42, CHANNELER + $C8, $16 ; trainer + db SPRITE_BUG_CATCHER, $1 + 4, $11 + 4, $ff, $d0, $43, PSYCHIC_TR + $C8, $1 ; trainer + db SPRITE_MEDIUM, $7 + 4, $3 + 4, $ff, $d0, $44, CHANNELER + $C8, $17 ; trainer + db SPRITE_BUG_CATCHER, $7 + 4, $11 + 4, $ff, $d0, $45, PSYCHIC_TR + $C8, $2 ; trainer + db SPRITE_MEDIUM, $d + 4, $3 + 4, $ff, $d0, $46, CHANNELER + $C8, $18 ; trainer + db SPRITE_BUG_CATCHER, $d + 4, $11 + 4, $ff, $d0, $47, PSYCHIC_TR + $C8, $3 ; trainer + db SPRITE_BUG_CATCHER, $1 + 4, $3 + 4, $ff, $d0, $48, PSYCHIC_TR + $C8, $4 ; trainer + db SPRITE_GYM_HELPER, $f + 4, $a + 4, $ff, $d0, $9 ; person + + ; warp-to + EVENT_DISP $a, $11, $8 + EVENT_DISP $a, $11, $9 + EVENT_DISP $a, $3, $1 ; SAFFRON_GYM + EVENT_DISP $a, $3, $5 ; SAFFRON_GYM + EVENT_DISP $a, $5, $1 ; SAFFRON_GYM + EVENT_DISP $a, $5, $5 ; SAFFRON_GYM + EVENT_DISP $a, $9, $1 ; SAFFRON_GYM + EVENT_DISP $a, $9, $5 ; SAFFRON_GYM + EVENT_DISP $a, $b, $1 ; SAFFRON_GYM + EVENT_DISP $a, $b, $5 ; SAFFRON_GYM + EVENT_DISP $a, $f, $1 ; SAFFRON_GYM + EVENT_DISP $a, $f, $5 ; SAFFRON_GYM + EVENT_DISP $a, $11, $1 ; SAFFRON_GYM + EVENT_DISP $a, $11, $5 ; SAFFRON_GYM + EVENT_DISP $a, $3, $9 ; SAFFRON_GYM + EVENT_DISP $a, $3, $b ; SAFFRON_GYM + EVENT_DISP $a, $5, $9 ; SAFFRON_GYM + EVENT_DISP $a, $5, $b ; SAFFRON_GYM + EVENT_DISP $a, $b, $b ; SAFFRON_GYM + EVENT_DISP $a, $f, $b ; SAFFRON_GYM + EVENT_DISP $a, $3, $f ; SAFFRON_GYM + EVENT_DISP $a, $3, $13 ; SAFFRON_GYM + EVENT_DISP $a, $5, $f ; SAFFRON_GYM + EVENT_DISP $a, $5, $13 ; SAFFRON_GYM + EVENT_DISP $a, $9, $f ; SAFFRON_GYM + EVENT_DISP $a, $9, $13 ; SAFFRON_GYM + EVENT_DISP $a, $b, $f ; SAFFRON_GYM + EVENT_DISP $a, $b, $13 ; SAFFRON_GYM + EVENT_DISP $a, $f, $f ; SAFFRON_GYM + EVENT_DISP $a, $f, $13 ; SAFFRON_GYM + EVENT_DISP $a, $11, $f ; SAFFRON_GYM + EVENT_DISP $a, $11, $13 ; SAFFRON_GYM + +SaffronGymBlocks: ; 90 + INCBIN "maps/saffrongym.blk" + +SaffronMart_h: ; 0x5d3fd to 0x5d409 (12 bytes) (id=180) + db $02 ; tileset + db $04, $04 ; dimensions (y, x) + dw $4000, SaffronMartTexts, SaffronMartScript ; blocks, texts, scripts + db $00 ; connections + + dw SaffronMartObject ; objects + +SaffronMartScript: ; 0x5d409 + jp $3c3c +; 0x5d40c + +SaffronMartTexts: ; 0x5d40c + dw SaffronMartText1, SaffronMartText2, SaffronMartText3 + +SaffronMartText2: ; 0x5d412 + TX_FAR _SaffronMartText2 + db $50 + +SaffronMartText3: ; 0x5d417 + TX_FAR _SaffronMartText3 + db $50 + +SaffronMartObject: ; 0x5d41c (size=38) + db $0 ; border tile + + db $2 ; warps + db $7, $3, $4, $ff + db $7, $4, $4, $ff + + db $0 ; signs + + db $3 ; people + db SPRITE_MART_GUY, $5 + 4, $0 + 4, $ff, $d3, $1 ; person + db SPRITE_BLACK_HAIR_BOY_2, $2 + 4, $4 + 4, $ff, $ff, $2 ; person + db SPRITE_LASS, $5 + 4, $6 + 4, $fe, $0, $3 ; person + + ; warp-to + EVENT_DISP $4, $7, $3 + EVENT_DISP $4, $7, $4 + +SilphCo1_h: ; 0x5d442 to 0x5d44e (12 bytes) (id=181) + db $16 ; tileset + db $09, $0f ; dimensions (y, x) + dw SilphCo1Blocks, SilphCo1Texts, SilphCo1Script ; blocks, texts, scripts + db $00 ; connections + + dw SilphCo1Object ; objects + +SilphCo1Script: ; 0x5d44e + call $3c3c + ld a, [$d838] + bit 7, a + ret z + ld hl, $d7b9 + bit 7, [hl] + set 7, [hl] + ret nz + ld a, $4c + ld [$cc4d], a + ld a, $15 + jp $3e6d +; 0x5d469 + +SilphCo1Texts: ; 0x5d469 + dw SilphCo1Text1 + +SilphCo1Text1: ; 0x5d46b + TX_FAR _SilphCo1Text1 + db $50 + +SilphCo1Object: ; 0x5d470 (size=50) + db $2e ; border tile + + db $5 ; warps + db $11, $a, $5, $ff + db $11, $b, $5, $ff + db $0, $1a, $0, SILPH_CO_2F + db $0, $14, $0, SILPH_CO_ELEVATOR + db $a, $10, $6, SILPH_CO_3F + + db $0 ; signs + + db $1 ; people + db SPRITE_CABLE_CLUB_WOMAN, $2 + 4, $4 + 4, $ff, $d0, $1 ; person + + ; warp-to + EVENT_DISP $f, $11, $a + EVENT_DISP $f, $11, $b + EVENT_DISP $f, $0, $1a ; SILPH_CO_2F + EVENT_DISP $f, $0, $14 ; SILPH_CO_ELEVATOR + EVENT_DISP $f, $a, $10 ; SILPH_CO_3F + +SilphCo1Blocks: ; 135 + INCBIN "maps/silphco1.blk" + +SaffronPokecenter_h: ; 0x5d529 to 0x5d535 (12 bytes) (id=182) + db $06 ; tileset + db $04, $07 ; dimensions (y, x) + dw $4064, $553b, SaffronPokecenterScript ; blocks, texts, scripts + db $00 ; connections + + dw SaffronPokecenterObject ; objects + +SaffronPokecenterScript: ; 0x5d535 + call $22fa + jp $3c3c +; 0x5d53b + +INCBIN "baserom.gbc",$5d53b,$9 + +SaffronPokecenterText2: ; maybe +SaffronPokecenterText1: ; 0x5d543 + TX_FAR _SaffronPokecenterText1 + +INCBIN "baserom.gbc",$5d548,$5d549 - $5d548 + +SaffronPokecenterText3: ; 0x5d549 + TX_FAR _SaffronPokecenterText3 + db $50 + +SaffronPokecenterText4: + db $f6 + +SaffronPokecenterObject: ; 0x5d54f (size=44) + db $0 ; border tile + + db $2 ; warps + db $7, $3, $6, $ff + db $7, $4, $6, $ff + + db $0 ; signs + + db $4 ; people + db SPRITE_NURSE, $1 + 4, $3 + 4, $ff, $d0, $1 ; person + db SPRITE_FOULARD_WOMAN, $5 + 4, $5 + 4, $ff, $ff, $2 ; person + db SPRITE_GENTLEMAN, $3 + 4, $8 + 4, $ff, $d0, $3 ; person + db SPRITE_CABLE_CLUB_WOMAN, $2 + 4, $b + 4, $ff, $d0, $4 ; person + + ; warp-to + EVENT_DISP $7, $7, $3 + EVENT_DISP $7, $7, $4 + +ViridianForestexit_h: ; 0x5d57b to 0x5d587 (12 bytes) (id=47) + db $09 ; tileset + db $04, $05 ; dimensions (y, x) + dw ViridianForestexitBlocks, ViridianForestexitTexts, ViridianForestexitScript ; blocks, texts, scripts + db $00 ; connections + + dw ViridianForestexitObject ; objects + +ViridianForestexitScript: ; 0x5d587 + jp $3c3c +; 0x5d58a + +ViridianForestexitTexts: ; 0x5d58a + dw ViridianForestexitText1, ViridianForestexitText2 + +ViridianForestexitText1: ; 0x5d58e + TX_FAR _ViridianForestexitText1 + db $50 + +ViridianForestexitText2: ; 0x5d593 + TX_FAR _ViridianForestexitText2 + db $50 + +ViridianForestexitObject: ; 0x5d598 (size=48) + db $a ; border tile + + db $4 ; warps + db $0, $4, $1, $ff + db $0, $5, $1, $ff + db $7, $4, $0, VIRIDIAN_FOREST + db $7, $5, $0, VIRIDIAN_FOREST + + db $0 ; signs + + db $2 ; people + db SPRITE_BLACK_HAIR_BOY_2, $2 + 4, $3 + 4, $ff, $ff, $1 ; person + db SPRITE_OLD_PERSON, $5 + 4, $2 + 4, $ff, $ff, $2 ; person + + ; warp-to + EVENT_DISP $5, $0, $4 + EVENT_DISP $5, $0, $5 + EVENT_DISP $5, $7, $4 ; VIRIDIAN_FOREST + EVENT_DISP $5, $7, $5 ; VIRIDIAN_FOREST + +Route2Gate_h: ; 0x5d5c8 to 0x5d5d4 (12 bytes) (id=49) + db $0c ; tileset + db $04, $05 ; dimensions (y, x) + dw $4090, Route2GateTexts, Route2GateScript ; blocks, texts, scripts + db $00 ; connections + + dw Route2GateObject ; objects + +Route2GateScript: ; 0x5d5d4 + jp $3c3c +; 0x5d5d7 + +Route2GateTexts: ; 0x5d5d7 + dw Route2GateText1, Route2GateText2 + +Route2GateText1: ; 0x5d5db + db $08 ; asm + ld a, [$d7c2] + bit 0, a + jr nz, .asm_6592c ; 0x5d5e1 + ld a, $a + ldh [$db], a + ld a, $c8 + ldh [$dc], a + ld [$d11e], a + call GetItemName ; $2fcf + ld hl, $cd6d + ld de, $cc5b + ld bc, $000d + call CopyData + ld a, $62 + call Predef + ldh a, [$db] + cp $1 + jr nz, .asm_ad646 ; 0x5d606 + ld hl, $d7c2 + set 0, [hl] +.asm_6592c ; 0x5d60d + ld hl, $5616 + call PrintText +.asm_ad646 ; 0x5d613 + jp $24d7 + +INCBIN "baserom.gbc",$5d616,$5 + +Route2GateText2: ; 0x5d61b + TX_FAR _Route2GateText2 + db $50 + +Route2GateObject: ; 0x5d620 (size=48) + db $a ; border tile + + db $4 ; warps + db $0, $4, $3, $ff + db $0, $5, $3, $ff + db $7, $4, $4, $ff + db $7, $5, $4, $ff + + db $0 ; signs + + db $2 ; people + db SPRITE_OAK_AIDE, $4 + 4, $1 + 4, $ff, $d2, $1 ; person + db SPRITE_BUG_CATCHER, $4 + 4, $5 + 4, $fe, $2, $2 ; person + + ; warp-to + EVENT_DISP $5, $0, $4 + EVENT_DISP $5, $0, $5 + EVENT_DISP $5, $7, $4 + EVENT_DISP $5, $7, $5 + +ViridianForestEntrance_h: ; 0x5d650 to 0x5d65c (12 bytes) (id=50) + db $09 ; tileset + db $04, $05 ; dimensions (y, x) + dw $4090, ViridianForestEntranceTexts, ViridianForestEntranceScript ; blocks, texts, scripts + db $00 ; connections + + dw ViridianForestEntranceObject ; objects + +ViridianForestEntranceScript: ; 0x5d65c + jp $3c3c +; 0x5d65f + +ViridianForestEntranceTexts: ; 0x5d65f + dw ViridianForestEntranceText1, ViridianForestEntranceText2 + +ViridianForestEntranceText1: ; 0x5d663 + TX_FAR _ViridianForestEntranceText1 + db $50 + +ViridianForestEntranceText2: ; 0x5d668 + TX_FAR _ViridianForestEntranceText2 + db $50 + +ViridianForestEntranceObject: ; 0x5d66d (size=48) + db $a ; border tile + + db $4 ; warps + db $0, $4, $3, VIRIDIAN_FOREST + db $0, $5, $4, VIRIDIAN_FOREST + db $7, $4, $5, $ff + db $7, $5, $5, $ff + + db $0 ; signs + + db $2 ; people + db SPRITE_GIRL, $4 + 4, $8 + 4, $ff, $d2, $1 ; person + db SPRITE_LITTLE_GIRL, $4 + 4, $2 + 4, $fe, $1, $2 ; person + + ; warp-to + EVENT_DISP $5, $0, $4 ; VIRIDIAN_FOREST + EVENT_DISP $5, $0, $5 ; VIRIDIAN_FOREST + EVENT_DISP $5, $7, $4 + EVENT_DISP $5, $7, $5 + +UndergroundTunnelEntranceRoute5_h: ; 0x5d69d to 0x5d6a9 (12 bytes) (id=71) + db $0c ; tileset + db $04, $04 ; dimensions (y, x) + dw UndergroundTunnelEntranceRoute5Blocks, UndergroundTunnelEntranceRoute5Texts, UndergroundTunnelEntranceRoute5Script ; blocks, texts, scripts + db $00 ; connections + + dw UndergroundTunnelEntranceRoute5Object ; objects + +UndergroundTunnelEntranceRoute5Script: ; 0x5d6a9 + ld a, $10 + ld [$d365], a + ret +; 0x5d6af + +INCBIN "baserom.gbc",$5d6af,$1 + +UndergroundTunnelEntranceRoute5Texts: ; 0x5d6b0 + dw UndergroundTunnelEntranceRoute5Text1 + +UndergroundTunnelEntranceRoute5Text1: ; 0x5d6b2 + db $08 ; asm + ld a, $9 + ld [W_WHICHTRADE], a + ld a, $54 + call Predef + ld hl, $56af + ret + +UndergroundTunnelEntranceRoute5Object: ; 0x5d6c1 (size=34) + db $a ; border tile + + db $3 ; warps + db $7, $3, $3, $ff + db $7, $4, $3, $ff + db $4, $4, $0, UNDERGROUND_PATH_NS + + db $0 ; signs + + db $1 ; people + db SPRITE_LITTLE_GIRL, $3 + 4, $2 + 4, $ff, $ff, $1 ; person + + ; warp-to + EVENT_DISP $4, $7, $3 + EVENT_DISP $4, $7, $4 + EVENT_DISP $4, $4, $4 ; UNDERGROUND_PATH_NS + +UndergroundTunnelEntranceRoute6_h: ; 0x5d6e3 to 0x5d6ef (12 bytes) (id=74) + db $0c ; tileset + db $04, $04 ; dimensions (y, x) + dw $4080, UndergroundTunnelEntranceRoute6Texts, UndergroundTunnelEntranceRoute6Script ; blocks, texts, scripts + db $00 ; connections + + dw UndergroundTunnelEntranceRoute6Object ; objects + +UndergroundTunnelEntranceRoute6Script: ; 0x5d6ef + ld a, $11 + ld [$d365], a + jp $3c3c +; 0x5d6f7 + +UndergroundTunnelEntranceRoute6Texts: ; 0x5d6f7 + dw UndergroundTunnelEntranceRoute6Text1 + +;XXX wtf? syntax error on TX_FAR? +UndergroundTunnelEntranceRoute6Text1: ; 0x5d6f9 + db $17, $cb, $40, $23 + ;TX_FAR _UndergroundTunnelEntranceRoute6Text1 ; $cb, $40, $23 + db $50 + +UndergroundTunnelEntranceRoute6Object: ; 0x5d6fe (size=34) + db $a ; border tile + + db $3 ; warps + db $7, $3, $3, $ff + db $7, $4, $3, $ff + db $4, $4, $1, UNDERGROUND_PATH_NS + + db $0 ; signs + + db $1 ; people + db SPRITE_GIRL, $3 + 4, $2 + 4, $ff, $ff, $1 ; person + + ; warp-to + EVENT_DISP $4, $7, $3 + EVENT_DISP $4, $7, $4 + EVENT_DISP $4, $4, $4 ; UNDERGROUND_PATH_NS + +UndergroundPathEntranceRoute7_h: ; 0x5d720 to 0x5d72c (12 bytes) (id=77) + db $0c ; tileset + db $04, $04 ; dimensions (y, x) + dw $4080, UndergroundPathEntranceRoute7Texts, UndergroundPathEntranceRoute7Script ; blocks, texts, scripts + db $00 ; connections + + dw UndergroundPathEntranceRoute7Object ; objects + +UndergroundPathEntranceRoute7Script: ; 0x5d72c + ld a, $12 + ld [$d365], a + jp $3c3c +; 0x5d734 + +UndergroundPathEntranceRoute7Texts: ; 0x5d734 + dw UndergroundPathEntranceRoute7Text1 + +UndergroundPathEntranceRoute7Text1: ; 0x5d736 + db $17, $ff, $40, $23 + ;TX_FAR _UndergroundPathEntranceRoute7Text1 + db $50 + +UndergroundPathEntranceRoute7Object: ; 0x5d73b (size=34) + db $a ; border tile + + db $3 ; warps + db $7, $3, $4, $ff + db $7, $4, $4, $ff + db $4, $4, $0, UNDERGROUND_PATH_WE + + db $0 ; signs + + db $1 ; people + db SPRITE_FAT_BALD_GUY, $4 + 4, $2 + 4, $ff, $ff, $1 ; person + + ; warp-to + EVENT_DISP $4, $7, $3 + EVENT_DISP $4, $7, $4 + EVENT_DISP $4, $4, $4 ; UNDERGROUND_PATH_WE + +INCBIN "baserom.gbc",$5d75d,$52 + +SilphCo9_h: ; 0x5d7af to 0x5d7bb (12 bytes) (id=233) + db $16 ; tileset + db $09, $0d ; dimensions (y, x) + dw SilphCo9Blocks, SilphCo9Texts, SilphCo9Script ; blocks, texts, scripts + db $00 ; connections + + dw SilphCo9Object ; objects + +SilphCo9Script: ; 0x5d7bb + call $57d1 + call $3c3c + ld hl, $5893 + ld de, $5885 + ld a, [$d64a] + call $3160 + ld [$d64a], a + ret +; 0x5d7d1 + +INCBIN "baserom.gbc",$5d7d1,$ba + +SilphCo9Texts: ; 0x5d88b + dw SilphCo9Text1, SilphCo9Text2, SilphCo9Text3, SilphCo9Text4 + +INCBIN "baserom.gbc",$5d893,$25 + +SilphCo9Text1: ; 0x5d8b8 + db $08 ; asm + ld a, [$d838] + bit 7, a + jr nz, .asm_a14c3 ; 0x5d8be + ld hl, $58e5 + call PrintText + ld a, $7 + call Predef + call $20d8 + call Delay3 + call $20f6 + ld hl, $58ea + call PrintText + jr .asm_b6e28 ; 0x5d8da +.asm_a14c3 ; 0x5d8dc + ld hl, $58ef + call PrintText +.asm_b6e28 ; 0x5d8e2 + jp $24d7 + +INCBIN "baserom.gbc",$5d8e5,$5d8f4 - $5d8e5 + +SilphCo9Text2: ; 0x5d8f4 + db $08 ; asm + ld hl, $5893 + call LoadTrainerHeader + jp $24d7 + +SilphCo9Text3: ; 0x5d8fe + db $08 ; asm + ld hl, $589f + call LoadTrainerHeader + jp $24d7 + +SilphCo9Text4: ; 0x5d908 + db $08 ; asm + ld hl, $58ab + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$5d912,$2d + +SilphCo9Object: ; 0x5d93f (size=74) + db $2e ; border tile + + db $5 ; warps + db $0, $e, $0, SILPH_CO_10F + db $0, $10, $0, SILPH_CO_8F + db $0, $12, $0, SILPH_CO_ELEVATOR + db $3, $9, $7, SILPH_CO_3F + db $f, $11, $4, SILPH_CO_5F + + db $0 ; signs + + db $4 ; people + db SPRITE_NURSE, $e + 4, $3 + 4, $ff, $d0, $1 ; person + db SPRITE_ROCKET, $4 + 4, $2 + 4, $ff, $d1, $42, ROCKET + $C8, $25 ; trainer + db SPRITE_OAK_AIDE, $d + 4, $15 + 4, $ff, $d0, $43, SCIENTIST + $C8, $a ; trainer + db SPRITE_ROCKET, $10 + 4, $d + 4, $ff, $d1, $44, ROCKET + $C8, $26 ; trainer + + ; warp-to + EVENT_DISP $d, $0, $e ; SILPH_CO_10F + EVENT_DISP $d, $0, $10 ; SILPH_CO_8F + EVENT_DISP $d, $0, $12 ; SILPH_CO_ELEVATOR + EVENT_DISP $d, $3, $9 ; SILPH_CO_3F + EVENT_DISP $d, $f, $11 ; SILPH_CO_5F + +SilphCo9Blocks: ; 117 + INCBIN "maps/silphco9.blk" + +VictoryRoad1_h: ; 0x5d9fe to 0x5da0a (12 bytes) (id=108) + db $11 ; tileset + db $09, $0a ; dimensions (y, x) + dw VictoryRoad1Blocks, VictoryRoad1Texts, VictoryRoad1Script ; blocks, texts, scripts + db $00 ; connections + + dw VictoryRoad1Object ; objects + +VictoryRoad1Script: ; 0x5da0a + ld hl, $d126 + bit 5, [hl] + res 5, [hl] + call nz, $5a27 + call $3c3c + ld hl, $5a6d + ld de, $5a3a + ld a, [$d651] + call $3160 + ld [$d651], a + ret +; 0x5da27 + +INCBIN "baserom.gbc",$5da27,$38 + +VictoryRoad1Texts: ; 0x5da5f + dw VictoryRoad1Text1, VictoryRoad1Text2, VictoryRoad1Text3, VictoryRoad1Text4, VictoryRoad1Text5, VictoryRoad1Text6, VictoryRoad1Text7 + +INCBIN "baserom.gbc",$5da6d,$19 + +VictoryRoad1Text1: ; 0x5da86 + db $08 ; asm + ld hl, $5a6d + call LoadTrainerHeader + jp $24d7 + +VictoryRoad1Text2: ; 0x5da90 + db $08 ; asm + ld hl, $5a79 + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$5da9a,$1e + +VictoryRoad1Object: ; 0x5dab8 (size=76) + db $7d ; border tile + + db $3 ; warps + db $11, $8, $2, $ff + db $11, $9, $2, $ff + db $1, $1, $0, VICTORY_ROAD_2 + + db $0 ; signs + + db $7 ; people + db SPRITE_LASS, $5 + 4, $7 + 4, $ff, $d3, $41, COOLTRAINER_F + $C8, $5 ; trainer + db SPRITE_BLACK_HAIR_BOY_1, $2 + 4, $3 + 4, $ff, $d0, $42, COOLTRAINER_M + $C8, $5 ; trainer + db SPRITE_BALL, $0 + 4, $b + 4, $ff, $ff, $83, TM_43 ; item + db SPRITE_BALL, $2 + 4, $9 + 4, $ff, $ff, $84, RARE_CANDY ; item + db SPRITE_BOULDER, $f + 4, $5 + 4, $ff, $10, $5 ; person + db SPRITE_BOULDER, $2 + 4, $e + 4, $ff, $10, $6 ; person + db SPRITE_BOULDER, $a + 4, $2 + 4, $ff, $10, $7 ; person + + ; warp-to + EVENT_DISP $a, $11, $8 + EVENT_DISP $a, $11, $9 + EVENT_DISP $a, $1, $1 ; VICTORY_ROAD_2 + +VictoryRoad1Blocks: ; 90 + INCBIN "maps/victoryroad1.blk" + +INCBIN "baserom.gbc",$5db5e,$24a2 + +SECTION "bank18",DATA,BANK[$18] + +INCBIN "baserom.gbc",$60000,$60198 - $60000 + +UndergroundPathNSBlocks: ; 96 + INCBIN "maps/undergroundpathns.blk" + +INCBIN "baserom.gbc",$601f8,$1c8 + +SSAnne9Blocks: ; 96 + INCBIN "maps/ssanne9.blk" + +PokemonTower1_h: ; 0x60420 to 0x6042c (12 bytes) (id=142) + db $0f ; tileset + db $09, $0a ; dimensions (y, x) + dw PokemonTower1Blocks, PokemonTower1Texts, PokemonTower1Script ; blocks, texts, scripts + db $00 ; connections + + dw PokemonTower1Object ; objects + +PokemonTower1Script: ; 0x6042c + jp $3c3c +; 0x6042f + +PokemonTower1Texts: ; 0x6042f + dw PokemonTower1Text1, PokemonTower1Text2, PokemonTower1Text3, PokemonTower1Text4, PokemonTower1Text5 + +PokemonTower1Text1: ; 0x60439 + TX_FAR _PokemonTower1Text1 + db $50 + +PokemonTower1Text2: ; 0x6043e + TX_FAR _PokemonTower1Text2 + db $50 + +PokemonTower1Text3: ; 0x60443 + TX_FAR _PokemonTower1Text3 + db $50 + +PokemonTower1Text4: ; 0x60448 + TX_FAR _PokemonTower1Text4 + db $50 + +PokemonTower1Text5: ; 0x6044d + TX_FAR _PokemonTower1Text5 + db $50 + +PokemonTower1Object: ; 0x60452 (size=58) + db $1 ; border tile + + db $3 ; warps + db $11, $a, $1, $ff + db $11, $b, $1, $ff + db $9, $12, $1, POKEMONTOWER_2 + + db $0 ; signs + + db $5 ; people + db SPRITE_CABLE_CLUB_WOMAN, $d + 4, $f + 4, $ff, $d1, $1 ; person + db SPRITE_MOM_GEISHA, $8 + 4, $6 + 4, $ff, $ff, $2 ; person + db SPRITE_BALDING_GUY, $c + 4, $8 + 4, $ff, $ff, $3 ; person + db SPRITE_GIRL, $7 + 4, $d + 4, $ff, $ff, $4 ; person + db SPRITE_MEDIUM, $7 + 4, $11 + 4, $ff, $d2, $5 ; person + + ; warp-to + EVENT_DISP $a, $11, $a + EVENT_DISP $a, $11, $b + EVENT_DISP $a, $9, $12 ; POKEMONTOWER_2 + +PokemonTower1Blocks: ; 90 + INCBIN "maps/pokemontower1.blk" + +PokemonTower2_h: ; 0x604e6 to 0x604f2 (12 bytes) (id=143) + db $0f ; tileset + db $09, $0a ; dimensions (y, x) + dw PokemonTower2Blocks, PokemonTower2Texts, PokemonTower2Script ; blocks, texts, scripts + db $00 ; connections + + dw PokemonTower2Object ; objects + +PokemonTower2Script: ; 0x604f2 + call $3c3c + ld hl, $4509 + ld a, [$d62b] + jp $3d97 +; 0x604fe + +INCBIN "baserom.gbc",$604fe,$60509 - $604fe + +PokemonTower2Scripts: ; 0x60509 + dw PokemonTower2Script0, PokemonTower2Script1, PokemonTower2Script2 + +PokemonTower2Script0: ; 0x6050f + ld a, [$d764] + bit 7, a + ret nz + ld hl, $455e + call $34bf + ret nc + ld a, $ff + ld [$c0ee], a + call $23b1 + ld c, $2 + ld a, $de + call $23a1 + ld hl, $d764 + res 6, [hl] + ld a, [$cd3d] + cp $1 + ld a, $8 + ld b, $0 + jr nz, .asm_60544 ; 0x60539 $9 + ld hl, $d764 + set 6, [hl] + ld a, $2 + ld b, $c +.asm_60544 + ld [$d528], a + ld a, $1 + ld [$ff00+$8c], a + ld a, b + ld [$ff00+$8d], a + call $34a6 + ld a, $1 + ld [$ff00+$8c], a + call $2920 + xor a + ld [$ff00+$b4], a + ld [$ff00+$b3], a + ret +; 0x6055e + +INCBIN "baserom.gbc",$6055e,$60563 - $6055e + +PokemonTower2Script1: ; 0x60563 + ld a, [$d057] + cp $ff + jp z, $44fe + ld a, $f0 + ld [$cd6b], a + ld hl, $d764 + set 7, [hl] + ld a, $1 + ld [$ff00+$8c], a + call $2920 + ld de, $45b2 + ld a, [$d764] + bit 6, a + jr nz, .asm_60589 ; 0x60584 $3 + ld de, $45a9 +.asm_60589 + ld a, $1 + ld [$ff00+$8c], a + call $363a + ld a, $ff + ld [$c0ee], a + call $23b1 + ld b, $2 + ld hl, $5b47 + call Bankswitch + ld a, $2 + ld [$d62b], a + ld [$da39], a + ret +; 0x605a9 + +INCBIN "baserom.gbc",$605a9,$605bb - $605a9 + +PokemonTower2Script2: ; 0x605bb + ld a, [$d730] + bit 0, a + ret nz + ld a, $38 + ld [$cc4d], a + ld a, $11 + call Predef + xor a + ld [$cd6b], a + call $2307 + ld a, $0 + ld [$d62b], a + ld [$da39], a + ret +; 0x605db + +PokemonTower2Texts: ; 0x605db + dw PokemonTower2Text1, PokemonTower2Text2 + +PokemonTower2Text1: ; 0x605df + db $08 ; asm + ld a, [$d764] + bit 7, a + jr z, .asm_16f24 ; 0x605e5 + ld hl, $463c + call PrintText + jr .asm_41852 ; 0x605ed +.asm_16f24 ; 0x605ef + ld hl, $462d + call PrintText + ld hl, $d72d + set 6, [hl] + set 7, [hl] + ld hl, $4632 + ld de, $4637 + call $3354 + ld a, $f2 + ld [$d059], a + ld a, [$d715] + cp $b1 + jr nz, .asm_0860c ; 0x6060f + ld a, $4 + jr .asm_99cea ; 0x60613 +.asm_0860c ; 0x60615 + cp $99 + jr nz, .asm_b3e6e ; 0x60617 + ld a, $5 + jr .asm_99cea ; 0x6061b +.asm_b3e6e ; 0x6061d + ld a, $6 +.asm_99cea ; 0x6061f + ld [$d05d], a + ld a, $1 + ld [$d62b], a + ld [$da39], a +.asm_41852 ; 0x6062a + jp $24d7 + +INCBIN "baserom.gbc",$6062d,$14 + +PokemonTower2Text2: ; 0x60641 + TX_FAR _PokemonTower2Text2 + db $50 + +PokemonTower2Object: ; 0x60646 (size=32) + db $1 ; border tile + + db $2 ; warps + db $9, $3, $0, POKEMONTOWER_3 + db $9, $12, $2, POKEMONTOWER_1 + + db $0 ; signs + + db $2 ; people + db SPRITE_BLUE, $5 + 4, $e + 4, $ff, $ff, $1 ; person + db SPRITE_MEDIUM, $7 + 4, $3 + 4, $ff, $d3, $2 ; person + + ; warp-to + EVENT_DISP $a, $9, $3 ; POKEMONTOWER_3 + EVENT_DISP $a, $9, $12 ; POKEMONTOWER_1 + +PokemonTower2Blocks: ; 90 + INCBIN "maps/pokemontower2.blk" + +PokemonTower3_h: ; 0x606c0 to 0x606cc (12 bytes) (id=144) + db $0f ; tileset + db $09, $0a ; dimensions (y, x) + dw PokemonTower3Blocks, PokemonTower3Texts, PokemonTower3Script ; blocks, texts, scripts + db $00 ; connections + + dw PokemonTower3Object ; objects + +PokemonTower3Script: ; 0x606cc + call $3c3c + ld hl, $46ed + ld de, $46df + ld a, [$d62c] + call $3160 + ld [$d62c], a + ret +; 0x606df + +INCBIN "baserom.gbc",$606df,$6 + +PokemonTower3Texts: ; 0x606e5 + dw PokemonTower3Text1, PokemonTower3Text2, PokemonTower3Text3, PokemonTower3Text4 + +INCBIN "baserom.gbc",$606ed,$25 + +PokemonTower3Text1: ; 0x60712 + db $08 ; asm + ld hl, $46ed + call LoadTrainerHeader + jp $24d7 + +PokemonTower3Text2: ; 0x6071c + db $08 ; asm + ld hl, $46f9 + call LoadTrainerHeader + jp $24d7 + +PokemonTower3Text3: ; 0x60726 + db $08 ; asm + ld hl, $4705 + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$60730,$2d + +PokemonTower3Object: ; 0x6075d (size=51) + db $1 ; border tile + + db $2 ; warps + db $9, $3, $0, POKEMONTOWER_2 + db $9, $12, $1, POKEMONTOWER_4 + + db $0 ; signs + + db $4 ; people + db SPRITE_MEDIUM, $3 + 4, $c + 4, $ff, $d2, $41, CHANNELER + $C8, $5 ; trainer + db SPRITE_MEDIUM, $8 + 4, $9 + 4, $ff, $d0, $42, CHANNELER + $C8, $6 ; trainer + db SPRITE_MEDIUM, $d + 4, $a + 4, $ff, $d0, $43, CHANNELER + $C8, $8 ; trainer + db SPRITE_BALL, $1 + 4, $c + 4, $ff, $ff, $84, ESCAPE_ROPE ; item + + ; warp-to + EVENT_DISP $a, $9, $3 ; POKEMONTOWER_2 + EVENT_DISP $a, $9, $12 ; POKEMONTOWER_4 + +PokemonTower3Blocks: ; 90 + INCBIN "maps/pokemontower3.blk" + +PokemonTower4_h: ; 0x607ea to 0x607f6 (12 bytes) (id=145) + db $0f ; tileset + db $09, $0a ; dimensions (y, x) + dw PokemonTower4Blocks, PokemonTower4Texts, PokemonTower4Script ; blocks, texts, scripts + db $00 ; connections + + dw PokemonTower4Object ; objects + +PokemonTower4Script: ; 0x607f6 + call $3c3c + ld hl, $481b + ld de, $4809 + ld a, [$d62d] + call $3160 + ld [$d62d], a + ret +; 0x60809 + +INCBIN "baserom.gbc",$60809,$6 + +PokemonTower4Texts: ; 0x6080f + dw PokemonTower4Text1, PokemonTower4Text2, PokemonTower4Text3, PokemonTower4Text4, PokemonTower4Text5, PokemonTower4Text6 + +INCBIN "baserom.gbc",$6081b,$25 + +PokemonTower4Text1: ; 0x60840 + db $08 ; asm + ld hl, $481b + call LoadTrainerHeader + jp $24d7 + +PokemonTower4Text2: ; 0x6084a + db $08 ; asm + ld hl, $4827 + call LoadTrainerHeader + jp $24d7 + +PokemonTower4Text3: ; 0x60854 + db $08 ; asm + ld hl, $4833 + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$6085e,$2d + +PokemonTower4Object: ; 0x6088b (size=65) + db $1 ; border tile + + db $2 ; warps + db $9, $3, $0, POKEMONTOWER_5 + db $9, $12, $1, POKEMONTOWER_3 + + db $0 ; signs + + db $6 ; people + db SPRITE_MEDIUM, $a + 4, $5 + 4, $ff, $d3, $41, CHANNELER + $C8, $9 ; trainer + db SPRITE_MEDIUM, $7 + 4, $f + 4, $ff, $d0, $42, CHANNELER + $C8, $a ; trainer + db SPRITE_MEDIUM, $c + 4, $e + 4, $ff, $d2, $43, CHANNELER + $C8, $c ; trainer + db SPRITE_BALL, $a + 4, $c + 4, $ff, $ff, $84, ELIXER ; item + db SPRITE_BALL, $a + 4, $9 + 4, $ff, $ff, $85, AWAKENING ; item + db SPRITE_BALL, $10 + 4, $c + 4, $ff, $ff, $86, HP_UP ; item + + ; warp-to + EVENT_DISP $a, $9, $3 ; POKEMONTOWER_5 + EVENT_DISP $a, $9, $12 ; POKEMONTOWER_3 + +PokemonTower4Blocks: ; 90 + INCBIN "maps/pokemontower4.blk" + +PokemonTower5_h: ; 0x60926 to 0x60932 (12 bytes) (id=146) + db $0f ; tileset + db $09, $0a ; dimensions (y, x) + dw PokemonTower5Blocks, PokemonTower5Texts, PokemonTower5Script ; blocks, texts, scripts + db $00 ; connections + + dw PokemonTower5Object ; objects + +PokemonTower5Script: ; 0x60932 + call $3c3c + ld hl, $49a9 + ld de, $4945 + ld a, [$d62e] + call $3160 + ld [$d62e], a + ret +; 0x60945 + +INCBIN "baserom.gbc",$60945,$56 + +PokemonTower5Texts: ; 0x6099b + dw PokemonTower5Text1, PokemonTower5Text2, PokemonTower5Text3, PokemonTower5Text4, PokemonTower5Text5, PokemonTower5Text6, PokemonTower5Text7 + +INCBIN "baserom.gbc",$609a9,$31 + +PokemonTower5Text1: ; 0x609da + TX_FAR _PokemonTower5Text1 + db $50 + +PokemonTower5Text2: ; 0x609df + db $08 ; asm + ld hl, $49a9 + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$609e9,$609f8 - $609e9 + +PokemonTower5Text3: ; 0x609f8 + db $08 ; asm + ld hl, $49b5 + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$60a02,$60a11 - $60a02 + +PokemonTower5Text4: ; 0x60a11 + db $08 ; asm + ld hl, $49c1 + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$60a1b,$60a2a - $60a1b + +PokemonTower5Text5: ; 0x60a2a + db $08 ; asm + ld hl, $49cd + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$60a34,$f + +PokemonTower5Text7: ; 0x60a43 +INCBIN "baserom.gbc",$60a43,5 + +PokemonTower5Object: ; 0x60a48 (size=65) + db $1 ; border tile + + db $2 ; warps + db $9, $3, $0, POKEMONTOWER_4 + db $9, $12, $0, POKEMONTOWER_6 + + db $0 ; signs + + db $6 ; people + db SPRITE_MEDIUM, $8 + 4, $c + 4, $ff, $ff, $1 ; person + db SPRITE_MEDIUM, $7 + 4, $11 + 4, $ff, $d2, $42, CHANNELER + $C8, $e ; trainer + db SPRITE_MEDIUM, $3 + 4, $e + 4, $ff, $d2, $43, CHANNELER + $C8, $10 ; trainer + db SPRITE_MEDIUM, $a + 4, $6 + 4, $ff, $d3, $44, CHANNELER + $C8, $11 ; trainer + db SPRITE_MEDIUM, $10 + 4, $9 + 4, $ff, $d3, $45, CHANNELER + $C8, $12 ; trainer + db SPRITE_BALL, $e + 4, $6 + 4, $ff, $ff, $86, NUGGET ; item + + ; warp-to + EVENT_DISP $a, $9, $3 ; POKEMONTOWER_4 + EVENT_DISP $a, $9, $12 ; POKEMONTOWER_6 + +PokemonTower5Blocks: ; 90 + INCBIN "maps/pokemontower5.blk" + +PokemonTower6_h: ; 0x60ae3 to 0x60aef (12 bytes) (id=147) + db $0f ; tileset + db $09, $0a ; dimensions (y, x) + dw PokemonTower6Blocks, PokemonTower6Texts, PokemonTower6Script ; blocks, texts, scripts + db $00 ; connections + + dw PokemonTower6Object ; objects + +PokemonTower6Script: ; 0x60aef + call $3c3c + ld hl, $4bbf + ld de, $4b0d + ld a, [$d62f] + call $3160 + ld [$d62f], a + ret +; 0x60b02 + +INCBIN "baserom.gbc",$60b02,$af + +PokemonTower6Texts: ; 0x60bb1 + dw PokemonTower6Text1, PokemonTower6Text2, PokemonTower6Text3, PokemonTower6Text4, PokemonTower6Text5, PokemonTower6Text6, PokemonTower6Text7 + +INCBIN "baserom.gbc",$60bbb + 4,$29 - 4 + +PokemonTower6Text1: ; 0x60be4 + db $08 ; asm + ld hl, $4bbf + call LoadTrainerHeader + jp $24d7 + +PokemonTower6Text2: ; 0x60bee + db $08 ; asm + ld hl, $4bcb + call LoadTrainerHeader + jp $24d7 + +PokemonTower6Text3: ; 0x60bf8 + db $08 ; asm + ld hl, $4bd7 + call LoadTrainerHeader + jp $24d7 + +PokemonTower6Text7: ; 0x60c02 +INCBIN "baserom.gbc",$60c02,$60c56 - $60c02 + +PokemonTower6Text6: ; 0x60c56 +INCBIN "baserom.gbc",$60c56,$60c5b - $60c56 + +PokemonTower6Object: ; 0x60c5b (size=58) + db $1 ; border tile + + db $2 ; warps + db $9, $12, $1, POKEMONTOWER_5 + db $10, $9, $0, POKEMONTOWER_7 + + db $0 ; signs + + db $5 ; people + db SPRITE_MEDIUM, $a + 4, $c + 4, $ff, $d3, $41, CHANNELER + $C8, $13 ; trainer + db SPRITE_MEDIUM, $5 + 4, $9 + 4, $ff, $d0, $42, CHANNELER + $C8, $14 ; trainer + db SPRITE_MEDIUM, $5 + 4, $10 + 4, $ff, $d2, $43, CHANNELER + $C8, $15 ; trainer + db SPRITE_BALL, $8 + 4, $6 + 4, $ff, $ff, $84, RARE_CANDY ; item + db SPRITE_BALL, $e + 4, $e + 4, $ff, $ff, $85, X_ACCURACY ; item + + ; warp-to + EVENT_DISP $a, $9, $12 ; POKEMONTOWER_5 + EVENT_DISP $a, $10, $9 ; POKEMONTOWER_7 + +PokemonTower6Blocks: ; 90 + INCBIN "maps/pokemontower6.blk" + +INCBIN "baserom.gbc",$60cef,$a + +PokemonTower7_h: ; 0x60cf9 to 0x60d05 (12 bytes) (id=148) + db $0f ; tileset + db $09, $0a ; dimensions (y, x) + dw PokemonTower7Blocks, PokemonTower7Texts, PokemonTower7Script ; blocks, texts, scripts + db $00 ; connections + + dw PokemonTower7Object ; objects + +PokemonTower7Script: ; 0x60d05 + call $3c3c + ld hl, $4e47 + ld de, $4d23 + ld a, [$d630] + call $3160 + ld [$d630], a + ret +; 0x60d18 + +INCBIN "baserom.gbc",$60d18,$127 + +PokemonTower7Texts: ; 0x60e3f + dw PokemonTower7Text1, PokemonTower7Text2, PokemonTower7Text3, PokemonTower7Text4 + +INCBIN "baserom.gbc",$60e47,$25 + +PokemonTower7Text1: ; 0x60e6c + db $08 ; asm + ld hl, $4e47 + call LoadTrainerHeader + jp $24d7 + +PokemonTower7Text2: ; 0x60e76 + db $08 ; asm + ld hl, $4e53 + call LoadTrainerHeader + jp $24d7 + +PokemonTower7Text3: ; 0x60e80 + db $08 ; asm + ld hl, $4e5f + call LoadTrainerHeader + jp $24d7 + +PokemonTower7Text4: ; 0x60e8a + db $08 ; asm + ld hl, $4ec4 + call PrintText + ld hl, $d7e0 + set 7, [hl] + ld hl, $d769 + set 7, [hl] + ld a, $44 + ld [$cc4d], a + ld a, $15 + call Predef + ld a, $17 + ld [$cc4d], a + ld a, $11 + call Predef + ld a, $18 + ld [$cc4d], a + ld a, $15 + call Predef + ld a, $4 + ld [$d630], a + ld [$da39], a + jp $24d7 + +INCBIN "baserom.gbc",$60ec4,$32 + +PokemonTower7Object: ; 0x60ef6 (size=42) + db $1 ; border tile + + db $1 ; warps + db $10, $9, $1, POKEMONTOWER_6 + + db $0 ; signs + + db $4 ; people + db SPRITE_ROCKET, $b + 4, $9 + 4, $ff, $d3, $41, ROCKET + $C8, $13 ; trainer + db SPRITE_ROCKET, $9 + 4, $c + 4, $ff, $d2, $42, ROCKET + $C8, $14 ; trainer + db SPRITE_ROCKET, $7 + 4, $9 + 4, $ff, $d3, $43, ROCKET + $C8, $15 ; trainer + db SPRITE_MR_FUJI, $3 + 4, $a + 4, $ff, $d0, $4 ; person + + ; warp-to + EVENT_DISP $a, $10, $9 ; POKEMONTOWER_6 + +PokemonTower7Blocks: ; 90 + INCBIN "maps/pokemontower7.blk" + +CeladonMart1_h: ; 0x60f7a to 0x60f86 (12 bytes) (id=122) + db $12 ; tileset + db $04, $0a ; dimensions (y, x) + dw CeladonMart1Blocks, CeladonMart1Texts, CeladonMart1Script ; blocks, texts, scripts + db $00 ; connections + + dw CeladonMart1Object ; objects + +CeladonMart1Script: ; 0x60f86 + jp $3c3c +; 0x60f89 + +CeladonMart1Texts: ; 0x60f89 + dw CeladonMart1Text1, CeladonMart1Text2, CeladonMart1Text3 + +CeladonMart1Text1: ; 0x60f8f + TX_FAR _CeladonMart1Text1 + db $50 + +CeladonMart1Text2: ; 0x60f94 + TX_FAR _CeladonMart1Text2 + db $50 + +CeladonMart1Text3: ; 0x60f99 + TX_FAR _CeladonMart1Text3 + db $50 + +CeladonMart1Object: ; 0x60f9e (size=64) + db $f ; border tile + + db $6 ; warps + db $7, $2, $0, $ff + db $7, $3, $0, $ff + db $7, $10, $1, $ff + db $7, $11, $1, $ff + db $1, $c, $0, CELADON_MART_2 + db $1, $1, $0, CELADON_MART_ELEVATOR + + db $2 ; signs + db $4, $b, $2 ; CeladonMart1Text2 + db $1, $e, $3 ; CeladonMart1Text3 + + db $1 ; people + db SPRITE_CABLE_CLUB_WOMAN, $3 + 4, $8 + 4, $ff, $d0, $1 ; person + + ; warp-to + EVENT_DISP $a, $7, $2 + EVENT_DISP $a, $7, $3 + EVENT_DISP $a, $7, $10 + EVENT_DISP $a, $7, $11 + EVENT_DISP $a, $1, $c ; CELADON_MART_2 + EVENT_DISP $a, $1, $1 ; CELADON_MART_ELEVATOR + +CeladonMart1Blocks: ; 40 + INCBIN "maps/celadonmart1.blk" + +INCBIN "baserom.gbc",$61006,$fb + +ViridianForest_h: ; 0x61101 to 0x6110d (12 bytes) (id=51) + db $03 ; tileset + db $18, $11 ; dimensions (y, x) + dw $4000, ViridianForestTexts, ViridianForestScript ; blocks, texts, scripts + db $00 ; connections + + dw ViridianForestObject ; objects + +ViridianForestScript: ; 0x6110d + call $3c3c + ld hl, $5142 + ld de, $5120 + ld a, [$d618] + call $3160 + ld [$d618], a + ret +; 0x61120 + +INCBIN "baserom.gbc",$61120,$6 + +ViridianForestTexts: ; 0x61126 + dw ViridianForestText1, ViridianForestText2, ViridianForestText3, ViridianForestText4, ViridianForestText5, ViridianForestText6, ViridianForestText7, ViridianForestText8, ViridianForestText9, ViridianForestText10, ViridianForestText11, ViridianForestText12, ViridianForestText13, ViridianForestText14 + +INCBIN "baserom.gbc",$61142,$25 + +ViridianForestText1: ; 0x61167 + TX_FAR _ViridianForestText1 + db $50 + +ViridianForestText2: ; 0x6116c + db $08 ; asm + ld hl, $5142 + call LoadTrainerHeader + jp $24d7 + +ViridianForestText3: ; 0x61176 + db $08 ; asm + ld hl, $514e + call LoadTrainerHeader + jp $24d7 + +ViridianForestText4: ; 0x61180 + db $08 ; asm + ld hl, $515a + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$6118a,$2d + +ViridianForestText8: ; 0x611b7 + TX_FAR _ViridianForestText8 + db $50 + +ViridianForestText9: ; 0x611bc + TX_FAR _ViridianForestText9 + db $50 + +ViridianForestText10: ; 0x611c1 + TX_FAR _ViridianForestText10 + db $50 + +ViridianForestText11: ; 0x611c6 + TX_FAR _ViridianForestText11 + db $50 + +ViridianForestText12: ; 0x611cb + TX_FAR _ViridianForestText12 + db $50 + +ViridianForestText13: ; 0x611d0 + TX_FAR _ViridianForestText13 + db $50 + +ViridianForestText14: ; 0x611d5 + TX_FAR _ViridianForestText14 + db $50 + +ViridianForestObject: ; 0x611da (size=127) + db $3 ; border tile + + db $6 ; warps + db $0, $1, $2, VIRIDIAN_FOREST_EXIT + db $0, $2, $3, VIRIDIAN_FOREST_EXIT + db $2f, $f, $1, VIRIDIAN_FOREST_ENTRANCE + db $2f, $10, $1, VIRIDIAN_FOREST_ENTRANCE + db $2f, $11, $1, VIRIDIAN_FOREST_ENTRANCE + db $2f, $12, $1, VIRIDIAN_FOREST_ENTRANCE + + db $6 ; signs + db $28, $18, $9 ; ViridianForestText9 + db $20, $10, $a ; ViridianForestText10 + db $11, $1a, $b ; ViridianForestText11 + db $18, $4, $c ; ViridianForestText12 + db $2d, $12, $d ; ViridianForestText13 + db $1, $2, $e ; ViridianForestText14 + + db $8 ; people + db SPRITE_BUG_CATCHER, $2b + 4, $10 + 4, $ff, $ff, $1 ; person + db SPRITE_BUG_CATCHER, $21 + 4, $1e + 4, $ff, $d2, $42, BUG_CATCHER + $C8, $1 ; trainer + db SPRITE_BUG_CATCHER, $13 + 4, $1e + 4, $ff, $d2, $43, BUG_CATCHER + $C8, $2 ; trainer + db SPRITE_BUG_CATCHER, $12 + 4, $2 + 4, $ff, $d2, $44, BUG_CATCHER + $C8, $3 ; trainer + db SPRITE_BALL, $b + 4, $19 + 4, $ff, $ff, $85, ANTIDOTE ; item + db SPRITE_BALL, $1d + 4, $c + 4, $ff, $ff, $86, POTION ; item + db SPRITE_BALL, $1f + 4, $1 + 4, $ff, $ff, $87, POKE_BALL ; item + db SPRITE_BUG_CATCHER, $28 + 4, $1b + 4, $ff, $ff, $8 ; person + + ; warp-to + EVENT_DISP $11, $0, $1 ; VIRIDIAN_FOREST_EXIT + EVENT_DISP $11, $0, $2 ; VIRIDIAN_FOREST_EXIT + EVENT_DISP $11, $2f, $f ; VIRIDIAN_FOREST_ENTRANCE + EVENT_DISP $11, $2f, $10 ; VIRIDIAN_FOREST_ENTRANCE + EVENT_DISP $11, $2f, $11 ; VIRIDIAN_FOREST_ENTRANCE + EVENT_DISP $11, $2f, $12 ; VIRIDIAN_FOREST_ENTRANCE + +SSAnne1_h: ; 0x61259 to 0x61265 (12 bytes) (id=95) + db $0d ; tileset + db $09, $14 ; dimensions (y, x) + dw SSAnne1Blocks, SSAnne1Texts, SSAnne1Script ; blocks, texts, scripts + db $00 ; connections + + dw SSAnne1Object ; objects + +SSAnne1Script: ; 0x61265 + call $3c3c + ret +; 0x61269 + +SSAnne1Texts: ; 0x61269 + dw SSAnne1Text1, SSAnne1Text2 + +SSAnne1Text1: ; 0x6126d + TX_FAR _SSAnne1Text1 + db $50 + +SSAnne1Text2: ; 0x61272 + TX_FAR _SSAnne1Text2 + db $50 + +SSAnne1Object: ; 0x61277 (size=104) + db $c ; border tile + + db $b ; warps + db $0, $1a, $1, VERMILION_DOCK + db $0, $1b, $1, VERMILION_DOCK + db $8, $1f, $0, SS_ANNE_8 + db $8, $17, $1, SS_ANNE_8 + db $8, $13, $2, SS_ANNE_8 + db $8, $f, $3, SS_ANNE_8 + db $8, $b, $4, SS_ANNE_8 + db $8, $7, $5, SS_ANNE_8 + db $6, $2, $6, SS_ANNE_2 + db $f, $25, $5, SS_ANNE_4 + db $10, $3, $0, SS_ANNE_6 + + db $0 ; signs + + db $2 ; people + db SPRITE_WAITER, $6 + 4, $c + 4, $fe, $2, $1 ; person + db SPRITE_SAILOR, $5 + 4, $1b + 4, $ff, $ff, $2 ; person + + ; warp-to + EVENT_DISP $14, $0, $1a ; VERMILION_DOCK + EVENT_DISP $14, $0, $1b ; VERMILION_DOCK + EVENT_DISP $14, $8, $1f ; SS_ANNE_8 + EVENT_DISP $14, $8, $17 ; SS_ANNE_8 + EVENT_DISP $14, $8, $13 ; SS_ANNE_8 + EVENT_DISP $14, $8, $f ; SS_ANNE_8 + EVENT_DISP $14, $8, $b ; SS_ANNE_8 + EVENT_DISP $14, $8, $7 ; SS_ANNE_8 + EVENT_DISP $14, $6, $2 ; SS_ANNE_2 + EVENT_DISP $14, $f, $25 ; SS_ANNE_4 + EVENT_DISP $14, $10, $3 ; SS_ANNE_6 + +SSAnne1Blocks: ; 180 + INCBIN "maps/ssanne1.blk" + +SSAnne2_h: ; 0x61393 to 0x6139f (12 bytes) (id=96) + db $0d ; tileset + db $09, $14 ; dimensions (y, x) + dw SSAnne2Blocks, SSAnne2Texts, SSAnne2Script ; blocks, texts, scripts + db $00 ; connections + + dw SSAnne2Object ; objects + +SSAnne2Script: ; 0x6139f + call $3c3c + ld hl, $53b3 + ld a, [$d665] + jp $3d97 +; 0x613ab + +INCBIN "baserom.gbc",$613ab,$613b3 - $613ab + +SSAnne2Scripts: ; 0x613b3 + dw SSAnne2Script0, SSAnne2Script1, SSAnne2Script2, SSAnne2Script3, SSAnne2Script4 + +SSAnne2Script4: ; 0x613bd + ret +; 0x613be + +SSAnne2Script0: ; 0x613be + ld hl, $5411 + call $34bf + ret nc + ld a, $ff + ld [$c0ee], a + call $23b1 + ld c, $2 + ld a, $de + call $23a1 + ld a, [$cd3d] + ld [$ff00+$db], a + ld a, $71 + ld [$cc4d], a + ld a, $15 + call Predef + call Delay3 + ld a, $2 + ld [$ff00+$8c], a + call $3541 + xor a + ld [$ff00+$b4], a + ld a, $f0 + ld [$cd6b], a + ld a, [$ff00+$db] + cp $2 + jr nz, .asm_61400 ; 0x613f9 $5 + ld de, $540c + jr .asm_61403 ; 0x613fe $3 +.asm_61400 + ld de, $540d +.asm_61403 + call $363a + ld a, $1 + ld [$d665], a + ret +; 0x6140c + +INCBIN "baserom.gbc",$6140c,$61430 - $6140c + +SSAnne2Script1: ; 0x61430 + ld a, [$d730] + bit 0, a + ret nz + call $5416 + xor a + ld [$cd6b], a + ld a, $2 + ld [$ff00+$8c], a + call $2920 + call Delay3 + ld a, $f2 + ld [$d059], a + ld a, [$d715] + cp $b1 + jr nz, .asm_61457 ; 0x61451 $4 + ld a, $1 + jr .asm_61461 ; 0x61455 $a +.asm_61457 + cp $99 + jr nz, .asm_6145f ; 0x61459 $4 + ld a, $2 + jr .asm_61461 ; 0x6145d $2 +.asm_6145f + ld a, $3 +.asm_61461 + ld [$d05d], a + call $5416 + ld a, $2 + ld [$d665], a + ret +; 0x6146d + +SSAnne2Script2: ; 0x6146d + ld a, [$d057] + cp $ff + jp z, $53ab + call $5416 + ld a, $f0 + ld [$cd6b], a + ld a, $3 + ld [$ff00+$8c], a + call $2920 + ld a, $2 + ld [$ff00+$8c], a + call $3541 + ld a, [$d362] + cp $25 + jr nz, .asm_61497 ; 0x61490 $5 + ld de, $54b9 + jr .asm_6149a ; 0x61495 $3 +.asm_61497 + ld de, $54b7 +.asm_6149a + ld a, $2 + ld [$ff00+$8c], a + call $363a + ld a, $ff + ld [$c0ee], a + call $23b1 + ld b, $2 + ld hl, $5b47 + call Bankswitch + ld a, $3 + ld [$d665], a + ret +; 0x614b7 + +INCBIN "baserom.gbc",$614b7,$614be - $614b7 + +SSAnne2Script3: ; 0x614be + ld a, [$d730] + bit 0, a + ret nz + xor a + ld [$cd6b], a + ld a, $71 + ld [$cc4d], a + ld a, $11 + call Predef + call $2307 + ld a, $4 + ld [$d665], a + ret +; 0x614db + +SSAnne2Texts: ; 0x614db + dw SSAnne2Text1, SSAnne2Text2, SSAnne2Text3 + +SSAnne2Text1: ; 0x614e1 + TX_FAR _SSAnne2Text1 + db $50 + +SSAnne2Text2: ; 0x614e6 + db $8 + ld hl, $5500 + call PrintText + ld hl, $d72d + set 6, [hl] + set 7, [hl] + ld hl, $5505 + ld de, $550a + call $3354 + jp $24d7 +; 0x61500 + +INCBIN "baserom.gbc",$61500,$f + +SSAnne2Text3: ; 0x6150f +INCBIN "baserom.gbc",$6150f,5 + +SSAnne2Object: ; 0x61514 (size=90) + db $c ; border tile + + db $9 ; warps + db $b, $9, $0, SS_ANNE_9 + db $b, $d, $2, SS_ANNE_9 + db $b, $11, $4, SS_ANNE_9 + db $b, $15, $6, SS_ANNE_9 + db $b, $19, $8, SS_ANNE_9 + db $b, $1d, $a, SS_ANNE_9 + db $4, $2, $8, SS_ANNE_1 + db $c, $2, $1, SS_ANNE_3 + db $4, $24, $0, SS_ANNE_7 + + db $0 ; signs + + db $2 ; people + db SPRITE_WAITER, $7 + 4, $3 + 4, $fe, $1, $1 ; person + db SPRITE_BLUE, $4 + 4, $24 + 4, $ff, $d0, $42, SONY1 + $C8, $1 ; trainer + + ; warp-to + EVENT_DISP $14, $b, $9 ; SS_ANNE_9 + EVENT_DISP $14, $b, $d ; SS_ANNE_9 + EVENT_DISP $14, $b, $11 ; SS_ANNE_9 + EVENT_DISP $14, $b, $15 ; SS_ANNE_9 + EVENT_DISP $14, $b, $19 ; SS_ANNE_9 + EVENT_DISP $14, $b, $1d ; SS_ANNE_9 + EVENT_DISP $14, $4, $2 ; SS_ANNE_1 + EVENT_DISP $14, $c, $2 ; SS_ANNE_3 + EVENT_DISP $14, $4, $24 ; SS_ANNE_7 + +SSAnne2Blocks: ; 180 + INCBIN "maps/ssanne2.blk" + +SSAnne4_h: ; 0x61622 to 0x6162e (12 bytes) (id=98) + db $0d ; tileset + db $04, $0f ; dimensions (y, x) + dw SSAnne4Blocks, SSAnne4Texts, SSAnne4Script ; blocks, texts, scripts + db $00 ; connections + + dw SSAnne4Object ; objects + +SSAnne4Script: ; 0x6162e + jp $3c3c +; 0x61631 + +SSAnne4Texts: +INCBIN "baserom.gbc",$61631,$1 + +SSAnne4Object: ; 0x61632 (size=52) + db $c ; border tile + + db $6 ; warps + db $3, $17, $8, SS_ANNE_10 + db $3, $13, $6, SS_ANNE_10 + db $3, $f, $4, SS_ANNE_10 + db $3, $b, $2, SS_ANNE_10 + db $3, $7, $0, SS_ANNE_10 + db $5, $1b, $9, SS_ANNE_1 + + db $0 ; signs + + db $0 ; people + + ; warp-to + EVENT_DISP $f, $3, $17 ; SS_ANNE_10 + EVENT_DISP $f, $3, $13 ; SS_ANNE_10 + EVENT_DISP $f, $3, $f ; SS_ANNE_10 + EVENT_DISP $f, $3, $b ; SS_ANNE_10 + EVENT_DISP $f, $3, $7 ; SS_ANNE_10 + EVENT_DISP $f, $5, $1b ; SS_ANNE_1 + +SSAnne4Blocks: ; 60 + INCBIN "maps/ssanne4.blk" + +SSAnne5_h: ; 0x616a2 to 0x616ae (12 bytes) (id=99) + db $0d ; tileset + db $07, $0a ; dimensions (y, x) + dw SSAnne5Blocks, SSAnne5Texts, SSAnne5Script ; blocks, texts, scripts + db $00 ; connections + + dw SSAnne5Object ; objects + +SSAnne5Script: ; 0x616ae + call $3c3c + ld hl, $56d1 + ld de, $56c1 + ld a, [$d617] + call $3160 + ld [$d617], a + ret +; 0x616c1 + +INCBIN "baserom.gbc",$616c1,$6 + +SSAnne5Texts: ; 0x616c7 + dw SSAnne5Text1, SSAnne5Text2, SSAnne5Text3, SSAnne5Text4, SSAnne5Text5 + +INCBIN "baserom.gbc",$616d1,$19 + +SSAnne5Text1: ; 0x616ea + TX_FAR _SSAnne5Text1 + db $50 + +SSAnne5Text2: ; 0x616ef + TX_FAR _SSAnne5Text2 + db $50 + +SSAnne5Text3: ; 0x616f4 + TX_FAR _SSAnne5Text3 + db $50 + +SSAnne5Text4: ; 0x616f9 + db $08 ; asm + ld hl, $56d1 + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$61703,$61712 - $61703 + +SSAnne5Text5: ; 0x61712 + db $08 ; asm + ld hl, $56dd + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$6171c,$f + +SSAnne5Object: ; 0x6172b (size=54) + db $23 ; border tile + + db $2 ; warps + db $6, $d, $0, SS_ANNE_3 + db $7, $d, $0, SS_ANNE_3 + + db $0 ; signs + + db $5 ; people + db SPRITE_BLACK_HAIR_BOY_2, $2 + 4, $5 + 4, $ff, $d1, $1 ; person + db SPRITE_SAILOR, $9 + 4, $4 + 4, $ff, $ff, $2 ; person + db SPRITE_BLACK_HAIR_BOY_1, $b + 4, $7 + 4, $ff, $ff, $3 ; person + db SPRITE_SAILOR, $4 + 4, $4 + 4, $ff, $d0, $44, SAILOR + $C8, $1 ; trainer + db SPRITE_SAILOR, $8 + 4, $a + 4, $ff, $d1, $45, SAILOR + $C8, $2 ; trainer + + ; warp-to + EVENT_DISP $a, $6, $d ; SS_ANNE_3 + EVENT_DISP $a, $7, $d ; SS_ANNE_3 + +SSAnne5Blocks: ; 70 + INCBIN "maps/ssanne5.blk" + +SSAnne6_h: ; 0x617a7 to 0x617b3 (12 bytes) (id=100) + db $0d ; tileset + db $08, $07 ; dimensions (y, x) + dw SSAnne6Blocks, SSAnne6Texts, SSAnne6Script ; blocks, texts, scripts + db $00 ; connections + + dw SSAnne6Object ; objects + +SSAnne6Script: ; 0x617b3 + call $3c3c + ret +; 0x617b7 + +SSAnne6Texts: ; 0x617b7 + dw SSAnne6Text1, SSAnne6Text2, SSAnne6Text3, SSAnne6Text4, SSAnne6Text5, SSAnne6Text6, SSAnne6Text7 + +SSAnne6Text1: ; 0x617c5 + TX_FAR _SSAnne6Text1 + db $50 + +SSAnne6Text2: ; 0x617ca + TX_FAR _SSAnne6Text2 + db $50 + +SSAnne6Text3: ; 0x617cf + TX_FAR _SSAnne6Text3 + db $50 + +SSAnne6Text4: ; 0x617d4 + TX_FAR _SSAnne6Text4 + db $50 + +SSAnne6Text5: ; 0x617d9 + TX_FAR _SSAnne6Text5 + db $50 + +SSAnne6Text6: ; 0x617de + TX_FAR _SSAnne6Text6 + db $50 + +SSAnne6Text7: ; 0x617e3 + db $08 ; asm + ld hl, $5807 + call PrintText + ldh a, [$d3] + bit 7, a + jr z, .asm_93eb1 ; 0x617ee + ld hl, $580c + jr .asm_63292 ; 0x617f3 +.asm_93eb1 ; 0x617f5 + bit 4, a + jr z, .asm_7436c ; 0x617f7 + ld hl, $5811 + jr .asm_63292 ; 0x617fc +.asm_7436c ; 0x617fe + ld hl, $5816 +.asm_63292 ; 0x61801 + call PrintText + jp $24d7 + +INCBIN "baserom.gbc",$61807,$14 + +SSAnne6Object: ; 0x6181b (size=54) + db $c ; border tile + + db $1 ; warps + db $0, $6, $a, SS_ANNE_1 + + db $0 ; signs + + db $7 ; people + db SPRITE_COOK, $8 + 4, $1 + 4, $fe, $1, $1 ; person + db SPRITE_COOK, $8 + 4, $5 + 4, $fe, $1, $2 ; person + db SPRITE_COOK, $7 + 4, $9 + 4, $fe, $1, $3 ; person + db SPRITE_COOK, $6 + 4, $d + 4, $ff, $ff, $4 ; person + db SPRITE_COOK, $8 + 4, $d + 4, $ff, $ff, $5 ; person + db SPRITE_COOK, $a + 4, $d + 4, $ff, $ff, $6 ; person + db SPRITE_COOK, $d + 4, $b + 4, $ff, $d1, $7 ; person + + ; warp-to + EVENT_DISP $7, $0, $6 ; SS_ANNE_1 + +SSAnne6Blocks: ; 56 + INCBIN "maps/ssanne6.blk" + +SSAnne7_h: ; 0x61889 to 0x61895 (12 bytes) (id=101) + db $0d ; tileset + db $04, $03 ; dimensions (y, x) + dw SSAnne7Blocks, SSAnne7Texts, SSAnne7Script ; blocks, texts, scripts + db $00 ; connections + + dw SSAnne7Object ; objects + +SSAnne7Script: ; 0x61895 + call $589b + jp $3c3c +; 0x6189b + +INCBIN "baserom.gbc",$6189b,$c + +SSAnne7Texts: ; 0x618a7 + dw SSAnne7Text1, SSAnne7Text2, SSAnne7Text3 + +SSAnne7Text1: ; 0x618ad + db $08 ; asm + ld a, [$d803] + bit 0, a + jr nz, .asm_797c4 ; 0x618b3 + ld hl, $58ec + call PrintText + ld hl, $5927 + call PrintText + ld bc,(HM_01 << 8) | 1 + call $3e2e + jr nc, .asm_ccdcd ; 0x618c7 + ld hl, $592c + call PrintText + ld hl, $d803 + set 0, [hl] + jr .asm_0faf5 ; 0x618d4 +.asm_ccdcd ; 0x618d6 + ld hl, $5937 + call PrintText + ld hl, $d72d + set 5, [hl] + jr .asm_0faf5 ; 0x618e1 +.asm_797c4 ; 0x618e3 + ld hl, $5932 + call PrintText +.asm_0faf5 ; 0x618e9 + jp $24d7 + +INCBIN "baserom.gbc",$618ec,$50 + +SSAnne7Text2: ; 0x6193c + TX_FAR _SSAnne7Text2 + db $50 + +SSAnne7Text3: ; 0x61941 + TX_FAR _SSAnne7Text3 + db $50 + +SSAnne7Object: ; 0x61946 (size=24) + db $c ; border tile + + db $1 ; warps + db $7, $0, $8, SS_ANNE_2 + + db $2 ; signs + db $1, $4, $2 ; SSAnne7Text2 + db $2, $1, $3 ; SSAnne7Text3 + + db $1 ; people + db SPRITE_SS_CAPTAIN, $2 + 4, $4 + 4, $ff, $d1, $1 ; person + + ; warp-to + EVENT_DISP $3, $7, $0 ; SS_ANNE_2 + +SSAnne7Blocks: ; 12 + INCBIN "maps/ssanne7.blk" + +SSAnne8_h: ; 0x6196a to 0x61976 (12 bytes) (id=102) + db $0d ; tileset + db $08, $0c ; dimensions (y, x) + dw SSAnne8Blocks, SSAnne8Texts, SSAnne8Script ; blocks, texts, scripts + db $00 ; connections + + dw SSAnne8Object ; objects + +SSAnne8Script: ; 0x61976 + call $3c3c + ld hl, $59a5 + ld de, $5989 + ld a, [$d608] + call $3160 + ld [$d608], a + ret +; 0x61989 + +INCBIN "baserom.gbc",$61989,$6 + +SSAnne8Texts: ; 0x6198f + dw SSAnne8Text1, SSAnne8Text2, SSAnne8Text3, SSAnne8Text4, SSAnne8Text5, SSAnne8Text6, SSAnne8Text7, SSAnne8Text8, SSAnne8Text9, SSAnne8Text10, SSAnne8Text11 + +INCBIN "baserom.gbc",$619a5,$31 + +SSAnne8Text1: ; 0x619d6 + db $08 ; asm + ld hl, $59a5 + call LoadTrainerHeader + jp $24d7 + +SSAnne8Text2: ; 0x619e0 + db $08 ; asm + ld hl, $59b1 + call LoadTrainerHeader + jp $24d7 + +SSAnne8Text3: ; 0x619ea + db $08 ; asm + ld hl, $59bd + call LoadTrainerHeader + jp $24d7 + +SSAnne8Text4: ; 0x619f4 + db $08 ; asm + ld hl, $59c9 + call LoadTrainerHeader + jp $24d7 + +SSAnne8Text8: ; 0x619fe + TX_FAR _SSAnne8Text8 + db $08 ; asm + ld a, $65 + call $13d0 + jp $24d7 + +INCBIN "baserom.gbc",$61a0b,60 + +SSAnne8Text5: ; 0x61a47 + TX_FAR _SSAnne8Text5 + db $50 + +SSAnne8Text6: ; 0x61a4c + TX_FAR _SSAnne8Text6 + db $50 + +SSAnne8Text7: ; 0x61a51 + TX_FAR _SSAnne8Text7 + db $50 + +SSAnne8Text9: ; 0x61a56 + TX_FAR _SSAnne8Text9 + db $50 + +SSAnne8Text11: ; 0x61a5b + TX_FAR _SSAnne8Text11 + db $50 + +SSAnne8Object: ; 0x61a60 (size=127) + db $c ; border tile + + db $6 ; warps + db $0, $0, $2, SS_ANNE_1 + db $0, $a, $3, SS_ANNE_1 + db $0, $14, $4, SS_ANNE_1 + db $a, $0, $5, SS_ANNE_1 + db $a, $a, $6, SS_ANNE_1 + db $a, $14, $7, SS_ANNE_1 + + db $0 ; signs + + db $b ; people + db SPRITE_GENTLEMAN, $3 + 4, $2 + 4, $ff, $d2, $41, GENTLEMAN + $C8, $1 ; trainer + db SPRITE_GENTLEMAN, $4 + 4, $b + 4, $ff, $d1, $42, GENTLEMAN + $C8, $2 ; trainer + db SPRITE_BUG_CATCHER, $e + 4, $b + 4, $ff, $d1, $43, YOUNGSTER + $C8, $8 ; trainer + db SPRITE_LASS, $b + 4, $d + 4, $ff, $d2, $44, LASS + $C8, $b ; trainer + db SPRITE_GIRL, $3 + 4, $16 + 4, $fe, $1, $5 ; person + db SPRITE_FAT_BALD_GUY, $e + 4, $0 + 4, $ff, $ff, $6 ; person + db SPRITE_LITTLE_GIRL, $b + 4, $2 + 4, $ff, $d0, $7 ; person + db SPRITE_CLEFAIRY, $b + 4, $3 + 4, $ff, $d0, $8 ; person + db SPRITE_GIRL, $d + 4, $a + 4, $ff, $d3, $9 ; person + db SPRITE_BALL, $f + 4, $c + 4, $ff, $ff, $8a, TM_08 ; item + db SPRITE_GENTLEMAN, $d + 4, $15 + 4, $fe, $2, $b ; person + + ; warp-to + EVENT_DISP $c, $0, $0 ; SS_ANNE_1 + EVENT_DISP $c, $0, $a ; SS_ANNE_1 + EVENT_DISP $c, $0, $14 ; SS_ANNE_1 + EVENT_DISP $c, $a, $0 ; SS_ANNE_1 + EVENT_DISP $c, $a, $a ; SS_ANNE_1 + EVENT_DISP $c, $a, $14 ; SS_ANNE_1 + +SSAnne8Blocks: ; 96 + INCBIN "maps/ssanne8.blk" + +SSAnne9_h: ; 0x61b3f to 0x61b4b (12 bytes) (id=103) + db $0d ; tileset + db $08, $0c ; dimensions (y, x) + dw SSAnne9Blocks, SSAnne9Texts, SSAnne9Script ; blocks, texts, scripts + db $00 ; connections + + dw SSAnne9Object ; objects + +SSAnne9Script: ; 0x61b4b + ld a, $1 + ld [$cf0c], a + xor a + ld [$cc3c], a + ld hl, $5b84 + ld de, $5b64 + ld a, [$d609] + call $3160 + ld [$d609], a + ret +; 0x61b64 + +INCBIN "baserom.gbc",$61b64,$6 + +SSAnne9Texts: ; 0x61b6a + dw SSAnne9Text1, SSAnne9Text2, SSAnne9Text3, SSAnne9Text4, SSAnne9Text5, SSAnne9Text6, SSAnne9Text7, SSAnne9Text8, SSAnne9Text9, SSAnne9Text10, SSAnne9Text11, SSAnne9Text12, SSAnne9Text13 + +INCBIN "baserom.gbc",$61b84,$31 + +SSAnne9Text1: ; 0x61bb5 + db $08 ; asm + ld hl, $5b84 + call LoadTrainerHeader + jp $24d7 + +SSAnne9Text2: ; 0x61bbf + db $08 ; asm + ld hl, $5b90 + call LoadTrainerHeader + jp $24d7 + +SSAnne9Text3: ; 0x61bc9 + db $08 ; asm + ld hl, $5b9c + call LoadTrainerHeader + jp $24d7 + +SSAnne9Text4: ; 0x61bd3 + db $08 ; asm + ld hl, $5ba8 + call LoadTrainerHeader + jp $24d7 + +SSAnne9Text5: ; 0x61bdd + db $08 ; asm + call $3719 + ld hl, $5bf2 + call PrintText + call $3725 + ld a, $84 + call $349b + jp $24d7 + +INCBIN "baserom.gbc",$61bf2,$61bf7 - $61bf2 + +SSAnne9Text7: ; 0x61bf7 + db $08 ; asm + ld hl, $5c01 + call PrintText + jp $24d7 + +INCBIN "baserom.gbc",$61c01,$61c06 - $61c01 + +SSAnne9Text8: ; 0x61c06 + db $08 ; asm + ld hl, $5c10 + call PrintText + jp $24d7 + +INCBIN "baserom.gbc",$61c10,$61c15 - $61c10 + +SSAnne9Text10: ; 0x61c15 + db $08 ; asm + ld hl, $5c1f + call PrintText + jp $24d7 + +INCBIN "baserom.gbc",$61c1f,$61c24 - $61c1f + +SSAnne9Text11: ; 0x61c24 + db $08 ; asm + ld hl, $5c2e + call PrintText + jp $24d7 + +INCBIN "baserom.gbc",$61c2e,$61c33 - $61c2e + +SSAnne9Text12: ; 0x61c33 + db $08 ; asm + ld hl, $5c3d + call PrintText + jp $24d7 + +INCBIN "baserom.gbc",$61c3d,$61c42 - $61c3d + +SSAnne9Text13: ; 0x61c42 + db $08 ; asm + ld hl, $5c4c + call PrintText + jp $24d7 + +INCBIN "baserom.gbc",$61c4c,$41 + +SSAnne9Object: ; 0x61c8d (size=188) + db $c ; border tile + + db $c ; warps + db $5, $2, $0, SS_ANNE_2 + db $5, $3, $0, SS_ANNE_2 + db $5, $c, $1, SS_ANNE_2 + db $5, $d, $1, SS_ANNE_2 + db $5, $16, $2, SS_ANNE_2 + db $5, $17, $2, SS_ANNE_2 + db $f, $2, $3, SS_ANNE_2 + db $f, $3, $3, SS_ANNE_2 + db $f, $c, $4, SS_ANNE_2 + db $f, $d, $4, SS_ANNE_2 + db $f, $16, $5, SS_ANNE_2 + db $f, $17, $5, SS_ANNE_2 + + db $0 ; signs + + db $d ; people + db SPRITE_GENTLEMAN, $2 + 4, $a + 4, $ff, $d3, $41, GENTLEMAN + $C8, $3 ; trainer + db SPRITE_FISHER2, $4 + 4, $d + 4, $ff, $d2, $42, FISHER + $C8, $1 ; trainer + db SPRITE_GENTLEMAN, $e + 4, $0 + 4, $ff, $d3, $43, GENTLEMAN + $C8, $5 ; trainer + db SPRITE_LASS, $b + 4, $2 + 4, $ff, $d0, $44, LASS + $C8, $c ; trainer + db SPRITE_GENTLEMAN, $2 + 4, $1 + 4, $ff, $d0, $5 ; person + db SPRITE_BALL, $1 + 4, $c + 4, $ff, $ff, $86, MAX_ETHER ; item + db SPRITE_GENTLEMAN, $2 + 4, $15 + 4, $ff, $d0, $7 ; person + db SPRITE_OLD_PERSON, $1 + 4, $16 + 4, $ff, $d0, $8 ; person + db SPRITE_BALL, $c + 4, $0 + 4, $ff, $ff, $89, RARE_CANDY ; item + db SPRITE_GENTLEMAN, $c + 4, $c + 4, $ff, $d0, $a ; person + db SPRITE_YOUNG_BOY, $e + 4, $b + 4, $ff, $ff, $b ; person + db SPRITE_BRUNETTE_GIRL, $c + 4, $16 + 4, $ff, $d2, $c ; person + db SPRITE_FOULARD_WOMAN, $c + 4, $14 + 4, $ff, $d3, $d ; person + + ; warp-to + EVENT_DISP $c, $5, $2 ; SS_ANNE_2 + EVENT_DISP $c, $5, $3 ; SS_ANNE_2 + EVENT_DISP $c, $5, $c ; SS_ANNE_2 + EVENT_DISP $c, $5, $d ; SS_ANNE_2 + EVENT_DISP $c, $5, $16 ; SS_ANNE_2 + EVENT_DISP $c, $5, $17 ; SS_ANNE_2 + EVENT_DISP $c, $f, $2 ; SS_ANNE_2 + EVENT_DISP $c, $f, $3 ; SS_ANNE_2 + EVENT_DISP $c, $f, $c ; SS_ANNE_2 + EVENT_DISP $c, $f, $d ; SS_ANNE_2 + EVENT_DISP $c, $f, $16 ; SS_ANNE_2 + EVENT_DISP $c, $f, $17 ; SS_ANNE_2 + +SSAnne10_h: ; 0x61d49 to 0x61d55 (12 bytes) (id=104) + db $0d ; tileset + db $08, $0c ; dimensions (y, x) + dw $43c0, SSAnne10Texts, SSAnne10Script ; blocks, texts, scripts + db $00 ; connections + + dw SSAnne10Object ; objects + +SSAnne10Script: ; 0x61d55 + call $3c3c + ld hl, $5d84 + ld de, $5d68 + ld a, [$d629] + call $3160 + ld [$d629], a + ret +; 0x61d68 + +INCBIN "baserom.gbc",$61d68,$6 + +SSAnne10Texts: ; 0x61d6e + dw SSAnne10Text1, SSAnne10Text2, SSAnne10Text3, SSAnne10Text4, SSAnne10Text5, SSAnne10Text6, SSAnne10Text7, SSAnne10Text8, SSAnne10Text9, SSAnne10Text10, SSAnne10Text11 + +INCBIN "baserom.gbc",$61d84,$49 + +SSAnne10Text1: ; 0x61dcd + db $08 ; asm + ld hl, $5d84 + call LoadTrainerHeader + jp $24d7 + +SSAnne10Text2: ; 0x61dd7 + db $08 ; asm + ld hl, $5d90 + call LoadTrainerHeader + jp $24d7 + +SSAnne10Text3: ; 0x61de1 + db $08 ; asm + ld hl, $5d9c + call LoadTrainerHeader + jp $24d7 + +SSAnne10Text4: ; 0x61deb + db $08 ; asm + ld hl, $5da8 + call LoadTrainerHeader + jp $24d7 + +SSAnne10Text5: ; 0x61df5 + db $08 ; asm + ld hl, $5db4 + call LoadTrainerHeader + jp $24d7 + +SSAnne10Text6: ; 0x61dff + db $08 ; asm + ld hl, $5dc0 + call LoadTrainerHeader + jp $24d7 + +SSAnne10Text8: ; 0x61e09 + TX_FAR _SSAnne10Text8 + db $8 ; 0x61e0d + ld a, $29 + call $13d0 + jp $24d7 + +INCBIN "baserom.gbc",$61e16,$61e70 - $61e16 + +SSAnne10Text7: ; 0x61e70 + TX_FAR _SSAnne10Text7 + db $50 + +SSAnne10Object: ; 0x61e75 (size=165) + db $c ; border tile + + db $a ; warps + db $5, $2, $4, SS_ANNE_4 + db $5, $3, $4, SS_ANNE_4 + db $5, $c, $3, SS_ANNE_4 + db $5, $d, $3, SS_ANNE_4 + db $5, $16, $2, SS_ANNE_4 + db $5, $17, $2, SS_ANNE_4 + db $f, $2, $1, SS_ANNE_4 + db $f, $3, $1, SS_ANNE_4 + db $f, $c, $0, SS_ANNE_4 + db $f, $d, $0, SS_ANNE_4 + + db $0 ; signs + + db $b ; people + db SPRITE_SAILOR, $d + 4, $0 + 4, $ff, $d0, $41, SAILOR + $C8, $3 ; trainer + db SPRITE_SAILOR, $b + 4, $2 + 4, $ff, $d0, $42, SAILOR + $C8, $4 ; trainer + db SPRITE_SAILOR, $3 + 4, $c + 4, $ff, $d2, $43, SAILOR + $C8, $5 ; trainer + db SPRITE_SAILOR, $2 + 4, $16 + 4, $ff, $d0, $44, SAILOR + $C8, $6 ; trainer + db SPRITE_SAILOR, $2 + 4, $0 + 4, $ff, $d3, $45, SAILOR + $C8, $7 ; trainer + db SPRITE_FISHER2, $4 + 4, $0 + 4, $ff, $d3, $46, FISHER + $C8, $2 ; trainer + db SPRITE_BLACK_HAIR_BOY_2, $d + 4, $a + 4, $ff, $d3, $7 ; person + db SPRITE_SLOWBRO, $c + 4, $b + 4, $ff, $ff, $8 ; person + db SPRITE_BALL, $2 + 4, $14 + 4, $ff, $ff, $89, ETHER ; item + db SPRITE_BALL, $2 + 4, $a + 4, $ff, $ff, $8a, TM_44 ; item + db SPRITE_BALL, $b + 4, $c + 4, $ff, $ff, $8b, MAX_POTION ; item + + ; warp-to + EVENT_DISP $c, $5, $2 ; SS_ANNE_4 + EVENT_DISP $c, $5, $3 ; SS_ANNE_4 + EVENT_DISP $c, $5, $c ; SS_ANNE_4 + EVENT_DISP $c, $5, $d ; SS_ANNE_4 + EVENT_DISP $c, $5, $16 ; SS_ANNE_4 + EVENT_DISP $c, $5, $17 ; SS_ANNE_4 + EVENT_DISP $c, $f, $2 ; SS_ANNE_4 + EVENT_DISP $c, $f, $3 ; SS_ANNE_4 + EVENT_DISP $c, $f, $c ; SS_ANNE_4 + EVENT_DISP $c, $f, $d ; SS_ANNE_4 + +UndergroundPathNS_h: ; 0x61f1a to 0x61f26 (12 bytes) (id=119) + db $0b ; tileset + db $18, $04 ; dimensions (y, x) + dw UndergroundPathNSBlocks, UndergroundPathNSTexts, UndergroundPathNSScript ; blocks, texts, scripts + db $00 ; connections + + dw UndergroundPathNSObject ; objects + +UndergroundPathNSScript: ; 0x61f26 + jp $3c3c +; 0x61f29 + +UndergroundPathNSTexts: +INCBIN "baserom.gbc",$61f29,$1 + +UndergroundPathNSObject: ; 0x61f2a (size=20) + db $1 ; border tile + + db $2 ; warps + db $4, $5, $2, PATH_ENTRANCE_ROUTE_5 + db $29, $2, $2, PATH_ENTRANCE_ROUTE_6 + + db $0 ; signs + + db $0 ; people + + ; warp-to + EVENT_DISP $4, $4, $5 ; PATH_ENTRANCE_ROUTE_5 + EVENT_DISP $4, $29, $2 ; PATH_ENTRANCE_ROUTE_6 + +UndergroundPathWE_h: ; 0x61f3e to 0x61f4a (12 bytes) (id=121) + db $0b ; tileset + db $04, $19 ; dimensions (y, x) + dw $41f4, $5f4d, UndergroundPathWEScript ; blocks, texts, scripts + db $00 ; connections + + dw UndergroundPathWEObject ; objects + +UndergroundPathWEScript: ; 0x61f4a + jp $3c3c +; 0x61f4d + +INCBIN "baserom.gbc",$61f4d,$1 + +UndergroundPathWEObject: ; 0x61f4e (size=20) + db $1 ; border tile + + db $2 ; warps + db $5, $2, $2, PATH_ENTRANCE_ROUTE_7 + db $2, $2f, $2, PATH_ENTRANCE_ROUTE_8 + + db $0 ; signs + + db $0 ; people + + ; warp-to + EVENT_DISP $19, $5, $2 ; PATH_ENTRANCE_ROUTE_7 + EVENT_DISP $19, $2, $2f ; PATH_ENTRANCE_ROUTE_8 + +DiglettsCave_h: ; 0x61f62 to 0x61f6e (12 bytes) (id=197) + db $11 ; tileset + db $12, $14 ; dimensions (y, x) + dw DiglettsCaveBlocks, $5f71, DiglettsCaveScript ; blocks, texts, scripts + db $00 ; connections + + dw DiglettsCaveObject ; objects + +DiglettsCaveScript: ; 0x61f6e + jp $3c3c +; 0x61f71 + +INCBIN "baserom.gbc",$61f71,$1 + +DiglettsCaveObject: ; 0x61f72 (size=20) + db $19 ; border tile + + db $2 ; warps + db $5, $5, $2, DIGLETTS_CAVE_EXIT + db $1f, $25, $2, DIGLETTS_CAVE_ENTRANCE + + db $0 ; signs + + db $0 ; people + + ; warp-to + EVENT_DISP $14, $5, $5 ; DIGLETTS_CAVE_EXIT + EVENT_DISP $14, $1f, $25 ; DIGLETTS_CAVE_ENTRANCE + +DiglettsCaveBlocks: ; 360 + INCBIN "maps/diglettscave.blk" + +SilphCo11_h: ; 0x620ee to 0x620fa (12 bytes) (id=235) + db $10 ; tileset + db $09, $09 ; dimensions (y, x) + dw SilphCo11Blocks, SilphCo11Texts, SilphCo11Script ; blocks, texts, scripts + db $00 ; connections + + dw SilphCo11Object ; objects + +SilphCo11Script: ; 0x620fa + call $6110 + call $3c3c + ld hl, $62c3 + ld de, $61cf + ld a, [$d659] + call $3160 + ld [$d659], a + ret +; 0x62110 + +INCBIN "baserom.gbc",$62110,$1a7 + +SilphCo11Texts: ; 0x622b7 + dw SilphCo11Text1, SilphCo11Text2, SilphCo11Text3, SilphCo11Text4, SilphCo11Text5, SilphCo11Text6 + +INCBIN "baserom.gbc",$622c3,$19 + +SilphCo11Text1: ; 0x622dc + db $08 ; asm + ld a, [$d838] + bit 5, a + jp nz, $6308 + ld hl, $6311 + call PrintText + ld bc,(MASTER_BALL << 8) | 1 + call $3e2e + jr nc, .asm_36088 ; 0x622f1 + ld hl, $6316 + call PrintText + ld hl, $d838 + set 5, [hl] + jr .asm_fd405 ; 0x622fe +.asm_36088 ; 0x62300 + ld hl, $6321 + call PrintText + jr .asm_fd405 ; 0x62306 + ld hl, $631c + call PrintText +.asm_fd405 ; 0x6230e + jp $24d7 + +INCBIN "baserom.gbc",$62311,$15 + +SilphCo11Text2: ; 0x62326 + TX_FAR _SilphCo11Text2 + db $50 + +SilphCo11Text3: ; 0x6232b + TX_FAR _SilphCo11Text3 + db $50 + +INCBIN "baserom.gbc",$62330,5 + +SilphCo11Text6: ; 0x62335 +INCBIN "baserom.gbc",$62335,5 + +SilphCo11Text4: ; 0x6233a + db $08 ; asm + ld hl, $62c3 + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$62344,$62353 - $62344 + +SilphCo11Text5: ; 0x62353 + db $08 ; asm + ld hl, $62cf + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$6235d,$23 + +SilphCo11Object: ; 0x62380 (size=72) + db $d ; border tile + + db $4 ; warps + db $0, $9, $1, SILPH_CO_10F + db $0, $d, $0, SILPH_CO_ELEVATOR + db $5, $5, $9, $ff + db $2, $3, $3, SILPH_CO_7F + + db $0 ; signs + + db $5 ; people + db SPRITE_MR_MASTERBALL, $5 + 4, $7 + 4, $ff, $d0, $1 ; person + db SPRITE_FOULARD_WOMAN, $5 + 4, $a + 4, $ff, $d0, $2 ; person + db SPRITE_GIOVANNI, $9 + 4, $6 + 4, $ff, $d0, $43, GIOVANNI + $C8, $2 ; trainer + db SPRITE_ROCKET, $10 + 4, $3 + 4, $ff, $d1, $44, ROCKET + $C8, $29 ; trainer + db SPRITE_ROCKET, $9 + 4, $f + 4, $ff, $d1, $45, ROCKET + $C8, $28 ; trainer + + ; warp-to + EVENT_DISP $9, $0, $9 ; SILPH_CO_10F + EVENT_DISP $9, $0, $d ; SILPH_CO_ELEVATOR + EVENT_DISP $9, $5, $5 + EVENT_DISP $9, $2, $3 ; SILPH_CO_7F + +SilphCo11Blocks: ; 81 + INCBIN "maps/silphco11.blk" + +INCBIN "baserom.gbc",$62419,$1be7 + +SECTION "bank19",DATA,BANK[$19] + +Tset00_GFX: + INCBIN "gfx/tilesets/00.2bpp" +Tset00_Block: + INCBIN "baserom.gbc",$645E0,$64DE0-$645E0 +Tset01_GFX: + INCBIN "gfx/tilesets/01.2bpp" +Tset01_Block: + INCBIN "baserom.gbc",$65270,$653A0-$65270 +Tset08_GFX: + INCBIN "gfx/tilesets/08.2bpp" +Tset08_Block: + INCBIN "baserom.gbc",$65980,$65BB0-$65980 +Tset13_GFX: + INCBIN "gfx/tilesets/13.2bpp" +Tset13_Block: + INCBIN "baserom.gbc",$66190,$66610-$66190 +Tset0E_GFX: + INCBIN "gfx/tilesets/0e.2bpp" +Tset0E_Block: + INCBIN "baserom.gbc",$66BF0,$66D60-$66BF0 +Tset10_GFX: + INCBIN "gfx/tilesets/10.2bpp" +Tset10_Block: + INCBIN "baserom.gbc",$67350,$676F0-$67350 +Tset17_GFX: + INCBIN "gfx/tilesets/17.2bpp" +Tset17_Block: + INCBIN "baserom.gbc",$67B50,$68000-$67B50 + +SECTION "bank1A",DATA,BANK[$1A] + +DecrementPP: +; after using a move, decrement pp in battle and (if not transformed?) in party + ld a,[de] + cp a,STRUGGLE + ret z + ld hl,$D062 + ld a,[hli] + and a,7 + ret nz + bit 6,[hl] + ret nz + ld hl,$D02D ; PP of first move (in battle) + call .DecrementPP\@ + + ld a,[$D064] + bit 3,a ; XXX transform status? + ret nz + + ld hl,$D188 ; PP of first move (in party) + ld a,[$CC2F] ; which mon in party is active + ld bc,$2C + call AddNTimes +.DecrementPP\@ + ld a,[$CC2E] ; which move (0, 1, 2, 3) did we use? + ld c,a + ld b,0 + add hl,bc + dec [hl] ; Decrement PP + ret + +IF _RED + INCBIN "gfx/red/redgreenversion.1bpp" +ENDC +IF _BLUE + INCBIN "gfx/blue/blueversion.1bpp" +ENDC + +Tset05_GFX: + INCBIN "gfx/tilesets/05.2bpp" +Tset05_Block: + INCBIN "baserom.gbc",$6867F,$68DBF-$6867F +Tset02_GFX: + INCBIN "gfx/tilesets/02.2bpp" +Tset02_Block: + INCBIN "baserom.gbc",$693BF,$6960F-$693BF +Tset09_GFX: + INCBIN "gfx/tilesets/09.2bpp" +Tset09_Block: + INCBIN "baserom.gbc",$69BFF,$6A3FF-$69BFF +Tset03_GFX: + INCBIN "gfx/tilesets/03.2bpp" +Tset03_Block: + INCBIN "baserom.gbc",$6A9FF,$6B1FF-$6A9FF +Tset16_GFX: + INCBIN "gfx/tilesets/16.2bpp" +Tset16_Block: + INCBIN "baserom.gbc",$6B7FF,$6C000-$6B7FF + +SECTION "bank1B",DATA,BANK[$1B] + +Tset0F_GFX: + INCBIN "gfx/tilesets/0f.2bpp" +Tset0F_Block: + INCBIN "baserom.gbc",$6C5C0,$6CCA0-$6C5C0 +Tset11_GFX: + INCBIN "gfx/tilesets/11.2bpp" +Tset11_Block: + INCBIN "baserom.gbc",$6D0C0,$6D8C0-$6D0C0 +Tset12_GFX: + INCBIN "gfx/tilesets/12.2bpp" +Tset12_Block: + INCBIN "baserom.gbc",$6DEA0,$6E390-$6DEA0 +Tset0D_GFX: + INCBIN "gfx/tilesets/0d.2bpp" +Tset0D_Block: + INCBIN "baserom.gbc",$6E930,$6ED10-$6E930 +Tset14_GFX: + INCBIN "gfx/tilesets/14.2bpp" +Tset14_Block: + INCBIN "baserom.gbc",$6F2D0,$6F670-$6F2D0 +Tset15_GFX: + INCBIN "gfx/tilesets/15.2bpp" +Tset15_Block: + INCBIN "baserom.gbc",$6FB20,$6FD60-$6FB20 +Tset0B_GFX: + INCBIN "gfx/tilesets/0b.2bpp" +Tset0B_Block: + INCBIN "baserom.gbc",$6FEF0,$70000-$6FEF0 + +SECTION "bank1C",DATA,BANK[$1C] + +INCBIN "baserom.gbc",$70000,$1100 + +CompressedMap: ; 5100 +; you can decompress this file with the redrle program in the extras/ dir + INCBIN "baserom.gbc",$71100,$711AB-$71100 + +INCBIN "baserom.gbc",$711AB,$71313-$711AB + +ExternalMapEntries: ; 5313 + EMAP $2,$B,PalletTownName + EMAP $2,$8,ViridianCityName + EMAP $2,$3,PewterCityName + EMAP $A,$2,CeruleanCityName + EMAP $E,$5,LavenderTownName + EMAP $A,$9,VermilionCityName + EMAP $7,$5,CeladonCityName + EMAP $8,$D,FuchsiaCityName + EMAP $2,$F,CinnabarIslandName + EMAP $0,$2,IndigoPlateauName + EMAP $A,$5,SaffronCityName + EMAP $0,$0,PalletTownName ; unused + EMAP $2,$A,Route1Name + EMAP $2,$6,Route2Name + EMAP $4,$3,Route3Name + EMAP $8,$2,Route4Name + EMAP $A,$3,Route5Name + EMAP $A,$8,Route6Name + EMAP $8,$5,Route7Name + EMAP $D,$5,Route8Name + EMAP $D,$2,Route9Name + EMAP $E,$4,Route10Name + EMAP $C,$9,Route11Name + EMAP $E,$9,Route12Name + EMAP $D,$B,Route13Name + EMAP $B,$C,Route14Name + EMAP $A,$D,Route15Name + EMAP $5,$5,Route16Name + EMAP $4,$8,Route17Name + EMAP $6,$D,Route18Name + EMAP $6,$F,Route19Name + EMAP $4,$F,Route20Name + EMAP $2,$D,Route21Name + EMAP $0,$8,Route22Name + EMAP $0,$6,Route23Name + EMAP $A,$1,Route24Name + EMAP $B,$0,Route25Name + +InternalMapEntries: ; 5382 + IMAP $29,$2,$B,PalletTownName + IMAP $2E,$2,$8,ViridianCityName + IMAP $33,$2,$6,Route2Name + IMAP $34,$2,$4,ViridianForestName + IMAP $3B,$2,$3,PewterCityName + IMAP $3E,$6,$2,MountMoonName + IMAP $44,$A,$2,CeruleanCityName + IMAP $45,$5,$2,Route4Name + IMAP $46,$A,$2,CeruleanCityName + IMAP $49,$A,$4,Route5Name + IMAP $4C,$A,$6,Route6Name + IMAP $4F,$9,$5,Route7Name + IMAP $51,$B,$5,Route8Name + IMAP $53,$E,$3,RockTunnelName + IMAP $54,$F,$4,PowerPlantName + IMAP $57,$D,$9,Route11Name + IMAP $58,$E,$7,Route12Name + IMAP $59,$C,$0,SeaCottageName + IMAP $5F,$A,$9,VermilionCityName + IMAP $69,$9,$A,SSAnneName + IMAP $6D,$0,$4,VictoryRoadName + IMAP $77,$0,$2,PokemonLeagueName + IMAP $78,$A,$5,UndergroundPathName + IMAP $79,$0,$2,PokemonLeagueName + IMAP $7A,$A,$5,UndergroundPathName + IMAP $8D,$7,$5,CeladonCityName + IMAP $8E,$E,$5,LavenderTownName + IMAP $95,$F,$5,PokemonTowerName + IMAP $98,$E,$5,LavenderTownName + IMAP $9C,$8,$D,FuchsiaCityName + IMAP $9D,$8,$C,SafariZoneName + IMAP $9F,$8,$D,FuchsiaCityName + IMAP $A3,$5,$F,SeafoamIslandsName + IMAP $A4,$A,$9,VermilionCityName + IMAP $A5,$8,$D,FuchsiaCityName + IMAP $A6,$2,$F,PokemonMansionName + IMAP $AE,$2,$F,CinnabarIslandName + IMAP $AF,$0,$2,IndigoPlateauName + IMAP $B8,$A,$5,SaffronCityName + IMAP $BA,$9,$D,Route15Name + IMAP $BD,$4,$5,Route16Name + IMAP $BE,$E,$A,Route12Name + IMAP $C0,$7,$D,Route18Name + IMAP $C1,$5,$F,SeafoamIslandsName + IMAP $C2,$0,$7,Route22Name + IMAP $C3,$0,$4,VictoryRoadName + IMAP $C4,$E,$7,Route12Name + IMAP $C5,$A,$9,VermilionCityName + IMAP $C6,$3,$4,DiglettsCaveName + IMAP $C7,$0,$4,VictoryRoadName + IMAP $CF,$7,$5,RocketHQName + IMAP $D6,$A,$5,SilphCoName + IMAP $D9,$2,$F,PokemonMansionName + IMAP $E2,$8,$C,SafariZoneName + IMAP $E5,$9,$1,CeruleanCaveName + IMAP $E6,$E,$5,LavenderTownName + IMAP $E7,$A,$2,CeruleanCityName + IMAP $E9,$E,$3,RockTunnelName + IMAP $ED,$A,$5,SilphCoName + IMAP $F8,$0,$2,PokemonLeagueName + db $FF + +MapNames: ; 5473 +PalletTownName: + db "PALLET TOWN@" +ViridianCityName: + db "VIRIDIAN CITY@" +PewterCityName: + db "PEWTER CITY@" +CeruleanCityName: + db "CERULEAN CITY@" +LavenderTownName: + db "LAVENDER TOWN@" +VermilionCityName: + db "VERMILION CITY@" +CeladonCityName: + db "CELADON CITY@" +FuchsiaCityName: + db "FUCHSIA CITY@" +CinnabarIslandName: + db "CINNABAR ISLAND@" +IndigoPlateauName: + db "INDIGO PLATEAU@" +SaffronCityName: + db "SAFFRON CITY@" +Route1Name: + db "ROUTE 1@" +Route2Name: + db "ROUTE 2@" +Route3Name: + db "ROUTE 3@" +Route4Name: + db "ROUTE 4@" +Route5Name: + db "ROUTE 5@" +Route6Name: + db "ROUTE 6@" +Route7Name: + db "ROUTE 7@" +Route8Name: + db "ROUTE 8@" +Route9Name: + db "ROUTE 9@" +Route10Name: + db "ROUTE 10@" +Route11Name: + db "ROUTE 11@" +Route12Name: + db "ROUTE 12@" +Route13Name: + db "ROUTE 13@" +Route14Name: + db "ROUTE 14@" +Route15Name: + db "ROUTE 15@" +Route16Name: + db "ROUTE 16@" +Route17Name: + db "ROUTE 17@" +Route18Name: + db "ROUTE 18@" +Route19Name: + db "SEA ROUTE 19@" +Route20Name: + db "SEA ROUTE 20@" +Route21Name: + db "SEA ROUTE 21@" +Route22Name: + db "ROUTE 22@" +Route23Name: + db "ROUTE 23@" +Route24Name: + db "ROUTE 24@" +Route25Name: + db "ROUTE 25@" +ViridianForestName: + db "VIRIDIAN FOREST@" +MountMoonName: + db "MT.MOON@" +RockTunnelName: + db "ROCK TUNNEL@" +SeaCottageName: + db "SEA COTTAGE@" +SSAnneName: + db "S.S.ANNE@" +PokemonLeagueName: + db "#MON LEAGUE@" +UndergroundPathName: + db "UNDERGROUND PATH@" +PokemonTowerName: + db "#MON TOWER@" +SeafoamIslandsName: + db "SEAFOAM ISLANDS@" +VictoryRoadName: + db "VICTORY ROAD@" +DiglettsCaveName: + db "DIGLETT's CAVE@" +RocketHQName: + db "ROCKET HQ@" +SilphCoName: + db "SILPH CO.@" +PokemonMansionName: + db $4a," MANSION@" +SafariZoneName: + db "SAFARI ZONE@" +CeruleanCaveName: + db "CERULEAN CAVE@" +PowerPlantName: + db "POWER PLANT@" + +INCBIN "baserom.gbc",$716BE,$71AD9-$716BE + +Predef54: ; 0x71ad9 +; trigger the trade offer/action specified by W_WHICHTRADE + call $36f4 + ld hl,TradeMons + ld a,[W_WHICHTRADE] + ld b,a + swap a + sub b + sub b + ld c,a + ld b,$0 + add hl,bc + ld a,[hli] + ld [$cd0f],a + ld a,[hli] + ld [$cd34],a + ld a,[hli] + push af + ld de,$cd29 + ld bc,$000b + call CopyData + pop af + ld l,a + ld h,$0 + ld de,$5d64 + add hl,hl + add hl,de + ld a,[hli] + ld [$cd10],a + ld a,[hl] + ld [$cd11],a + ld a,[$cd0f] + ld de,$cd13 + call Function71b6a + ld a,[$cd34] + ld de,$cd1e + call Function71b6a + ld hl,$d737 + ld a,[W_WHICHTRADE] + ld c,a + ld b,$2 + ld a,$10 + call Predef + ld a,c + and a + ld a,$4 + ld [$cd12],a + jr nz,.asm_99bca ; 0x71b36 $20 + xor a + ld [$cd12],a + call .asm_99bca + ld a,$1 + ld [$cd12],a + call $35ec + ld a,[$cc26] + and a + jr nz,.asm_99bca ; 0x71b4b $b + call Function71c07 + jr c,.asm_99bca ; 0x71b50 $6 + ld hl,$5d8d + call PrintText +.asm_99bca ; 0x71b58 + ld hl,$cd12 + ld a,[hld] + ld e,a + ld d,$0 + ld a,[hld] + ld l,[hl] + ld h,a + add hl,de + add hl,de + ld a,[hli] + ld h,[hl] + ld l,a + jp PrintText + +Function71b6a: ; 0x71b6a + push de + ld [$d11e],a + call GetMonName + ld hl,$cd6d + pop de + ld bc,$b + jp CopyData + +TradeMons: ; 5B7B +; givemonster, getmonster, textstring, nickname (11 bytes), 14 bytes total + db NIDORINO, NIDORINA, 0,"TERRY@@@@@@" + db ABRA, MR_MIME, 0,"MARCEL@@@@@" + db BUTTERFREE,BEEDRILL, 2,"CHIKUCHIKU@" + db PONYTA, SEEL, 0,"SAILOR@@@@@" + db SPEAROW, FARFETCH_D,2,"DUX@@@@@@@@" + db SLOWBRO, LICKITUNG, 0,"MARC@@@@@@@" + db POLIWHIRL, JYNX, 1,"LOLA@@@@@@@" + db RAICHU, ELECTRODE, 1,"DORIS@@@@@@" + db VENONAT, TANGELA, 2,"CRINKLES@@@" + db NIDORAN_M, NIDORAN_F, 2,"SPOT@@@@@@@" + +Function71c07: ; 0x71c07 + xor a + ld [$d07d],a + dec a + ld [$cfcb],a + call $13fc + push af + call $5ca2 + pop af + ld a,$1 + jp c,.asm_c4bc2 + ld a,[$cd0f] + ld b,a + ld a,[$cf91] + cp b + ld a,$2 + jr nz,.asm_c4bc2 ; 0x71c26 $75 + ld a,[$cf92] + ld hl,$d18c + ld bc,$002c + call AddNTimes + ld a,[hl] + ld [$d127],a + ld hl,$d737 + ld a,[W_WHICHTRADE] + ld c,a + ld b,$1 + ld a,$10 + call Predef + ld hl,$5d88 + call PrintText + ld a,[$cf92] + push af + ld a,[$d127] + push af + call $36c0 + call $5cc1 + ld a,$38 + call Predef + pop af + ld [$d127],a + pop af + ld [$cf92],a + ld a,[$cd34] + ld [$cf91],a + xor a + ld [$cc49],a + ld [$cf95],a + call $391f + ld a,$80 + ld [$cc49],a + call AddPokemonToParty + call $5d19 + ld hl,$7d7d + ld b,$5 + call Bankswitch + call ClearScreen + call $5ca2 + ld b,$3 + ld hl,$6edc + call Bankswitch + and a + ld a,$3 + jr .asm_ee803 ; 0x71c9b $1 +.asm_c4bc2 ; 0x71c9d + scf +.asm_ee803 ; 0x71c9e + ld [$cd12],a + ret + +INCBIN "baserom.gbc",$71CA2,$725C8-$71CA2 + +MonsterPalettes: ; 65C8 + db PAL_MEWMON ; MISSINGNO + db PAL_GREENMON ; BULBASAUR + db PAL_GREENMON ; IVYSAUR + db PAL_GREENMON ; VENUSAUR + db PAL_REDMON ; CHARMANDER + db PAL_REDMON ; CHARMELEON + db PAL_REDMON ; CHARIZARD + db PAL_CYANMON ; SQUIRTLE + db PAL_CYANMON ; WARTORTLE + db PAL_CYANMON ; BLASTOISE + db PAL_GREENMON ; CATERPIE + db PAL_GREENMON ; METAPOD + db PAL_CYANMON ; BUTTERFREE + db PAL_YELLOWMON ; WEEDLE + db PAL_YELLOWMON ; KAKUNA + db PAL_YELLOWMON ; BEEDRILL + db PAL_BROWNMON ; PIDGEY + db PAL_BROWNMON ; PIDGEOTTO + db PAL_BROWNMON ; PIDGEOT + db PAL_GREYMON ; RATTATA + db PAL_GREYMON ; RATICATE + db PAL_BROWNMON ; SPEAROW + db PAL_BROWNMON ; FEAROW + db PAL_PURPLEMON ; EKANS + db PAL_PURPLEMON ; ARBOK + db PAL_YELLOWMON ; PIKACHU + db PAL_YELLOWMON ; RAICHU + db PAL_BROWNMON ; SANDSHREW + db PAL_BROWNMON ; SANDSLASH + db PAL_BLUEMON ; NIDORAN_F + db PAL_BLUEMON ; NIDORINA + db PAL_BLUEMON ; NIDOQUEEN + db PAL_PURPLEMON ; NIDORAN_M + db PAL_PURPLEMON ; NIDORINO + db PAL_PURPLEMON ; NIDOKING + db PAL_PINKMON ; CLEFAIRY + db PAL_PINKMON ; CLEFABLE + db PAL_REDMON ; VULPIX + db PAL_YELLOWMON ; NINETALES + db PAL_PINKMON ; JIGGLYPUFF + db PAL_PINKMON ; WIGGLYTUFF + db PAL_BLUEMON ; ZUBAT + db PAL_BLUEMON ; GOLBAT + db PAL_GREENMON ; ODDISH + db PAL_REDMON ; GLOOM + db PAL_REDMON ; VILEPLUME + db PAL_REDMON ; PARAS + db PAL_REDMON ; PARASECT + db PAL_PURPLEMON ; VENONAT + db PAL_PURPLEMON ; VENOMOTH + db PAL_BROWNMON ; DIGLETT + db PAL_BROWNMON ; DUGTRIO + db PAL_YELLOWMON ; MEOWTH + db PAL_YELLOWMON ; PERSIAN + db PAL_YELLOWMON ; PSYDUCK + db PAL_CYANMON ; GOLDUCK + db PAL_BROWNMON ; MANKEY + db PAL_BROWNMON ; PRIMEAPE + db PAL_BROWNMON ; GROWLITHE + db PAL_REDMON ; ARCANINE + db PAL_BLUEMON ; POLIWAG + db PAL_BLUEMON ; POLIWHIRL + db PAL_BLUEMON ; POLIWRATH + db PAL_YELLOWMON ; ABRA + db PAL_YELLOWMON ; KADABRA + db PAL_YELLOWMON ; ALAKAZAM + db PAL_GREYMON ; MACHOP + db PAL_GREYMON ; MACHOKE + db PAL_GREYMON ; MACHAMP + db PAL_GREENMON ; BELLSPROUT + db PAL_GREENMON ; WEEPINBELL + db PAL_GREENMON ; VICTREEBEL + db PAL_CYANMON ; TENTACOOL + db PAL_CYANMON ; TENTACRUEL + db PAL_GREYMON ; GEODUDE + db PAL_GREYMON ; GRAVELER + db PAL_GREYMON ; GOLEM + db PAL_REDMON ; PONYTA + db PAL_REDMON ; RAPIDASH + db PAL_PINKMON ; SLOWPOKE + db PAL_PINKMON ; SLOWBRO + db PAL_GREYMON ; MAGNEMITE + db PAL_GREYMON ; MAGNETON + db PAL_BROWNMON ; FARFETCH_D + db PAL_BROWNMON ; DODUO + db PAL_BROWNMON ; DODRIO + db PAL_BLUEMON ; SEEL + db PAL_BLUEMON ; DEWGONG + db PAL_PURPLEMON ; GRIMER + db PAL_PURPLEMON ; MUK + db PAL_GREYMON ; SHELLDER + db PAL_GREYMON ; CLOYSTER + db PAL_PURPLEMON ; GASTLY + db PAL_PURPLEMON ; HAUNTER + db PAL_PURPLEMON ; GENGAR + db PAL_GREYMON ; ONIX + db PAL_YELLOWMON ; DROWZEE + db PAL_YELLOWMON ; HYPNO + db PAL_REDMON ; KRABBY + db PAL_REDMON ; KINGLER + db PAL_YELLOWMON ; VOLTORB + db PAL_YELLOWMON ; ELECTRODE + db PAL_PINKMON ; EXEGGCUTE + db PAL_GREENMON ; EXEGGUTOR + db PAL_GREYMON ; CUBONE + db PAL_GREYMON ; MAROWAK + db PAL_BROWNMON ; HITMONLEE + db PAL_BROWNMON ; HITMONCHAN + db PAL_PINKMON ; LICKITUNG + db PAL_PURPLEMON ; KOFFING + db PAL_PURPLEMON ; WEEZING + db PAL_GREYMON ; RHYHORN + db PAL_GREYMON ; RHYDON + db PAL_PINKMON ; CHANSEY + db PAL_BLUEMON ; TANGELA + db PAL_BROWNMON ; KANGASKHAN + db PAL_CYANMON ; HORSEA + db PAL_CYANMON ; SEADRA + db PAL_REDMON ; GOLDEEN + db PAL_REDMON ; SEAKING + db PAL_REDMON ; STARYU + db PAL_GREYMON ; STARMIE + db PAL_PINKMON ; MR_MIME + db PAL_GREENMON ; SCYTHER + db PAL_MEWMON ; JYNX + db PAL_YELLOWMON ; ELECTABUZZ + db PAL_REDMON ; MAGMAR + db PAL_BROWNMON ; PINSIR + db PAL_GREYMON ; TAUROS + db PAL_REDMON ; MAGIKARP + db PAL_BLUEMON ; GYARADOS + db PAL_CYANMON ; LAPRAS + db PAL_GREYMON ; DITTO + db PAL_GREYMON ; EEVEE + db PAL_CYANMON ; VAPOREON + db PAL_YELLOWMON ; JOLTEON + db PAL_REDMON ; FLAREON + db PAL_GREYMON ; PORYGON + db PAL_BLUEMON ; OMANYTE + db PAL_BLUEMON ; OMASTAR + db PAL_BROWNMON ; KABUTO + db PAL_BROWNMON ; KABUTOPS + db PAL_GREYMON ; AERODACTYL + db PAL_PINKMON ; SNORLAX + db PAL_BLUEMON ; ARTICUNO + db PAL_YELLOWMON ; ZAPDOS + db PAL_REDMON ; MOLTRES + db PAL_GREYMON ; DRATINI + db PAL_BLUEMON ; DRAGONAIR + db PAL_BROWNMON ; DRAGONITE + db PAL_MEWMON ; MEWTWO + db PAL_MEWMON ; MEW + +; palettes for overworlds, title screen, monsters +SuperPalettes: ; 6660 + RGB 31,29,31 ; PAL_ROUTE + RGB 21,28,11 + RGB 20,26,31 + RGB 3,2,2 + RGB 31,29,31 ; PAL_PALLET + RGB 25,28,27 + RGB 20,26,31 + RGB 3,2,2 + RGB 31,29,31 ; PAL_VIRIDIAN + RGB 17,26,3 + RGB 20,26,31 + RGB 3,2,2 + RGB 31,29,31 ; PAL_PEWTER + RGB 23,25,16 + RGB 20,26,31 + RGB 3,2,2 + RGB 31,29,31 ; PAL_CERULEAN + RGB 17,20,30 + RGB 20,26,31 + RGB 3,2,2 + RGB 31,29,31 ; PAL_LAVENDER + RGB 27,20,27 + RGB 20,26,31 + RGB 3,2,2 + RGB 31,29,31 ; PAL_VERMILION + RGB 30,18,0 + RGB 20,26,31 + RGB 3,2,2 + RGB 31,29,31 ; PAL_CELADON + RGB 16,30,22 + RGB 20,26,31 + RGB 3,2,2 + RGB 31,29,31 ; PAL_FUCHSIA + RGB 31,15,22 + RGB 20,26,31 + RGB 3,2,2 + RGB 31,29,31 ; PAL_CINNABAR + RGB 26,10,6 + RGB 20,26,31 + RGB 3,2,2 + RGB 31,29,31 ; PAL_INDIGO + RGB 22,14,24 + RGB 20,26,31 + RGB 3,2,2 + RGB 31,29,31 ; PAL_SAFFRON + RGB 27,27,3 + RGB 20,26,31 + RGB 3,2,2 + RGB 31,29,31 ; XXX + RGB 20,26,31 + RGB 17,23,10 + RGB 3,2,2 + RGB 31,29,31 ; PAL_LOGO1 + RGB 30,30,17 + RGB 17,23,10 + RGB 21,0,4 + RGB 31,29,31 ; XXX + RGB 30,30,17 + RGB 18,18,24 + RGB 7,7,16 + RGB 31,29,31 ; PAL_LOGO2 + RGB 24,20,30 + RGB 11,20,30 + RGB 3,2,2 + RGB 31,29,31 ; PAL_MEWMON + RGB 30,22,17 + RGB 16,14,19 + RGB 3,2,2 + RGB 31,29,31 ; PAL_BLUEMON + RGB 18,20,27 + RGB 11,15,23 + RGB 3,2,2 + RGB 31,29,31 ; PAL_REDMON + RGB 31,20,10 + RGB 26,10,6 + RGB 3,2,2 + RGB 31,29,31 ; PAL_CYANMON + RGB 21,25,29 + RGB 14,19,25 + RGB 3,2,2 + RGB 31,29,31 ; PAL_PURPLEMON + RGB 27,22,24 + RGB 21,15,23 + RGB 3,2,2 + RGB 31,29,31 ; PAL_BROWNMON + RGB 28,20,15 + RGB 21,14,9 + RGB 3,2,2 + RGB 31,29,31 ; PAL_GREENMON + RGB 20,26,16 + RGB 9,20,11 + RGB 3,2,2 + RGB 31,29,31 ; PAL_PINKMON + RGB 30,22,24 + RGB 28,15,21 + RGB 3,2,2 + RGB 31,29,31 ; PAL_YELLOWMON + RGB 31,28,14 + RGB 26,20,0 + RGB 3,2,2 + RGB 31,29,31 ; PAL_GREYMON + RGB 26,21,22 + RGB 15,15,18 + RGB 3,2,2 + RGB 31,29,31 ; PAL_SLOTS1 + RGB 26,21,22 + RGB 27,20,6 + RGB 3,2,2 + RGB 31,29,31 ; PAL_SLOTS2 + RGB 31,31,17 + RGB 25,17,21 + RGB 3,2,2 + RGB 31,29,31 ; PAL_SLOTS3 + RGB 22,31,16 + RGB 25,17,21 + RGB 3,2,2 + RGB 31,29,31 ; PAL_SLOTS4 + RGB 16,19,29 + RGB 25,17,21 + RGB 3,2,2 + RGB 31,29,31 ; PAL_BLACK + RGB 7,7,7 + RGB 2,3,3 + RGB 3,2,2 + RGB 31,29,31 ; PAL_GREENBAR + RGB 30,26,15 + RGB 9,20,11 + RGB 3,2,2 + RGB 31,29,31 ; PAL_YELLOWBAR + RGB 30,26,15 + RGB 26,20,0 + RGB 3,2,2 + RGB 31,29,31 ; PAL_REDBAR + RGB 30,26,15 + RGB 26,10,6 + RGB 3,2,2 + RGB 31,29,31 ; PAL_BADGE + RGB 30,22,17 + RGB 11,15,23 + RGB 3,2,2 + RGB 31,29,31 ; PAL_CAVE + RGB 21,14,9 + RGB 18,24,22 + RGB 3,2,2 + RGB 31,29,31 ; XXX + RGB 31,28,14 + RGB 24,20,10 + RGB 3,2,2 +BorderPalettes: ; 6788 + +INCBIN "baserom.gbc",$72788,$4000 - $2788 + +SECTION "bank1D",DATA,BANK[$1D] + +INCBIN "baserom.gbc",$74000,$74010 - $74000 + +PewterMartBlocks: ; 16 + INCBIN "maps/pewtermart.blk" + +FuchsiaHouse1Blocks: ; 16 + INCBIN "maps/fuchsiahouse1.blk" + +FuchsiaPokecenterBlocks: ; 28 + INCBIN "maps/fuchsiapokecenter.blk" + +CeruleanHouse3Blocks: ; 16 + INCBIN "maps/ceruleanhouse3.blk" + +INCBIN "baserom.gbc",$7405c,$6f + +Func40CB: ; 40CB + xor a + ld [$FFBA],a + call $3719 + call $4183 + + ; display the next monster from CreditsMons + ld hl,$CD3E + ld c,[hl] ; how many monsters have we displayed so far? + inc [hl] + ld b,0 + ld hl,CreditsMons + add hl,bc ; go that far in the list of monsters and get the next one + ld a,[hl] + ld [$CF91],a + ld [$D0B5],a + ld hl,$C420 + call $1537 + call $1389 + ld hl,$980C + call $4164 + xor a + ld [$FFBA],a + call $3725 + ld hl,$9800 + call $4164 + ld a,$A7 + ld [$FF4B],a + ld hl,$9C00 + call $4164 + call $4183 + ld a,$FC + ld [$FF47],a + ld bc,7 +.next\@ + call $4140 + dec c + jr nz,.next\@ + ld c,$14 +.next2\@ + call $4140 + ld a,[$FF4B] + sub 8 + ld [$FF4B],a + dec c + jr nz,.next2\@ + xor a + ld [$FFB0],a + ld a,$C0 + ld [$FF47],a + ret + +CreditsMons: ; 4131 + db VENUSAUR + db ARBOK + db RHYHORN + db FEAROW + db ABRA + db GRAVELER + db HITMONLEE + db TANGELA + db STARMIE + db GYARADOS + db DITTO + db OMASTAR + db VILEPLUME + db NIDOKING + db PARASECT + +INCBIN "baserom.gbc",$74140,$2C3 - $140 + +CreditsTextPointers: ; 42C3 + + dw CredVersion + dw CredTajiri + dw CredTaOota + dw CredMorimoto + dw CredWatanabe + dw CredMasuda + dw CredNisino + dw CredSugimori + dw CredNishida + dw CredMiyamoto + dw CredKawaguchi + dw CredIshihara + dw CredYamauchi + dw CredZinnai + dw CredHishida + dw CredSakai + dw CredYamaguchi + dw CredYamamoto + dw CredTaniguchi + dw CredNonomura + dw CredFuziwara + dw CredMatsusima + dw CredTomisawa + dw CredKawamoto + dw CredKakei + dw CredTsuchiya + dw CredTaNakamura + dw CredYuda + dw CredMon + dw CredDirector + dw CredProgrammers + dw CredCharDesign + dw CredMusic + dw CredSoundEffects + dw CredGameDesign + dw CredMonsterDesign + dw CredGameScene + dw CredParam + dw CredMap + dw CredTest + dw CredSpecial + dw CredProducers + dw CredProducer + dw CredExecutive + dw CredTamada + dw CredSaOota + dw CredYoshikawa + dw CredToOota + dw CredUSStaff + dw CredUSCoord + dw CredTilden + dw CredKawakami + dw CredHiNakamura + dw CredGiese + dw CredOsborne + dw CredTrans + dw CredOgasawara + dw CredIwata + dw CredIzushi + dw CredHarada + dw CredMurakawa + dw CredFukui + dw CredClub + dw CredPAAD + +CredVersion: +IF _RED + db "2RED VERSION STAFF@" +ENDC +IF _BLUE + db "2BLUE VERSION STAFF@" +ENDC +CredTajiri: + db "4SATOSHI TAJIRI@" +CredTaOota: + db "4TAKENORI OOTA@" +CredMorimoto: + db "3SHIGEKI MORIMOTO@" +CredWatanabe: + db "3TETSUYA WATANABE@" +CredMasuda: + db "4JUNICHI MASUDA@" +CredNisino: + db "5KOHJI NISINO@" +CredSugimori: + db "5KEN SUGIMORI@" +CredNishida: + db "4ATSUKO NISHIDA@" +CredMiyamoto: + db "3SHIGERU MIYAMOTO@" +CredKawaguchi: + db "2TAKASHI KAWAGUCHI@" +CredIshihara: + db "2TSUNEKAZU ISHIHARA@" +CredYamauchi: + db "3HIROSHI YAMAUCHI@" +CredZinnai: + db "3HIROYUKI ZINNAI@" +CredHishida: + db "3TATSUYA HISHIDA@" +CredSakai: + db "4YASUHIRO SAKAI@" +CredYamaguchi: + db "3WATARU YAMAGUCHI@" +CredYamamoto: + db "2KAZUYUKI YAMAMOTO@" +CredTaniguchi: + db "2RYOHSUKE TANIGUCHI@" +CredNonomura: + db "2FUMIHIRO NONOMURA@" +CredFuziwara: + db "3MOTOFUMI FUZIWARA@" +CredMatsusima: + db "3KENJI MATSUSIMA@" +CredTomisawa: + db "3AKIHITO TOMISAWA@" +CredKawamoto: + db "3HIROSHI KAWAMOTO@" +CredKakei: + db "4AKIYOSHI KAKEI@" +CredTsuchiya: + db "3KAZUKI TSUCHIYA@" +CredTaNakamura: + db "4TAKEO NAKAMURA@" +CredYuda: + db "4MASAMITSU YUDA@" +CredMon: + db "7#MON@" +CredDirector: + db "7DIRECTOR@" +CredProgrammers: + db "5PROGRAMMERS@" +CredCharDesign: + db "3CHARACTER DESIGN@" +CredMusic: + db "8MUSIC@" +CredSoundEffects: + db "4SOUND EFFECTS@" +CredGameDesign: + db "5GAME DESIGN@" +CredMonsterDesign: + db "4MONSTER DESIGN@" +CredGameScene: + db "4GAME SCENARIO@" +CredParam: + db "2PARAMETRIC DESIGN@" +CredMap: + db "6MAP DESIGN@" +CredTest: + db "3PRODUCT TESTING@" +CredSpecial: + db "4SPECIAL THANKS@" +CredProducers: + db "6PRODUCERS@" +CredProducer: + db "6PRODUCER@" +CredExecutive: + db "2EXECUTIVE PRODUCER@" +CredTamada: + db "4SOUSUKE TAMADA@" +CredSaOota: + db "5SATOSHI OOTA@" +CredYoshikawa: + db "4RENA YOSHIKAWA@" +CredToOota: + db "4TOMOMICHI OOTA@" +CredUSStaff: + db "3US VERSION STAFF@" +CredUSCoord: + db "3US COORDINATION@" +CredTilden: + db "5GAIL TILDEN@" +CredKawakami: + db "4NAOKO KAWAKAMI@" +CredHiNakamura: + db "4HIRO NAKAMURA@" +CredGiese: + db "4WILLIAM GIESE@" +CredOsborne: + db "5SARA OSBORNE@" +CredTrans: + db "3TEXT TRANSLATION@" +CredOgasawara: + db "4NOB OGASAWARA@" +CredIwata: + db "5SATORU IWATA@" +CredIzushi: + db "3TAKEHIRO IZUSHI@" +CredHarada: + db "3TAKAHIRO HARADA@" +CredMurakawa: + db "3TERUKI MURAKAWA@" +CredFukui: + db "5KOHTA FUKUI@" +CredClub: + db "1NCL SUPER MARIO CLUB@" +CredPAAD: + db "5PAAD TESTING@" + +TheEndGfx: ; 473E + INCBIN "gfx/theend.2bpp" + +INCBIN "baserom.gbc",$747de,$74897 - $747de + +ViridianGym_h: ; 0x74897 to 0x748a3 (12 bytes) (id=45) + db $07 ; tileset + db $09, $0a ; dimensions (y, x) + dw ViridianGymBlocks, ViridianGymTexts, ViridianGymScript ; blocks, texts, scripts + db $00 ; connections + + dw ViridianGymObject ; objects + +ViridianGymScript: ; 0x748a3 + ld hl, $48bf + ld de, $48cd + call $317f + call $3c3c + ld hl, $4a08 + ld de, $48e1 + ld a, [$d5fb] + call $3160 + ld [$d5fb], a + ret +; 0x748bf + +INCBIN "baserom.gbc",$748bf,$12d + +ViridianGymTexts: ; 0x749ec + dw ViridianGymText1, ViridianGymText2, ViridianGymText3, ViridianGymText4, ViridianGymText5, ViridianGymText6, ViridianGymText7, ViridianGymText8, ViridianGymText9, ViridianGymText10, ViridianGymText11, ViridianGymText12, ViridianGymText13, ViridianGymText14 + +INCBIN "baserom.gbc",$74a02 + 6,$67 - 6 + +ViridianGymText1: ; 0x74a69 + db $08 ; asm + ld a, [$d751] + bit 1, a + jr z, .asm_6de66 ; 0x74a6f + bit 0, a + jr nz, .asm_9fc95 ; 0x74a73 + call z, $4995 + call $30b6 + jr .asm_6dff7 ; 0x74a7b +.asm_9fc95 ; 0x74a7d + ld a, $1 + ld [$cc3c], a + ld hl, $4ad9 + call PrintText + call $20ef + ld a, $32 + ld [$cc4d], a + ld a, $11 + call Predef + call $2429 + call Delay3 + call $20d1 + jr .asm_6dff7 ; 0x74a9e +.asm_6de66 ; 0x74aa0 + ld hl, $4ace + call PrintText + ld hl, $d72d + set 6, [hl] + set 7, [hl] + ld hl, $4ad3 + ld de, $4ad3 + call $3354 + ldh a, [$8c] + ld [$cf13], a + call $336a + call $32d7 + ld a, $8 + ld [$d05c], a + ld a, $3 + ld [$d5fb], a +.asm_6dff7 ; 0x74acb + jp $24d7 + +INCBIN "baserom.gbc",$74ace,$74adf - $74ace + +ViridianGymText12: ; 0x74adf +INCBIN "baserom.gbc",$74adf,5 + +ViridianGymText13: ; 0x74ae4 +INCBIN "baserom.gbc",$74ae4, 5 + +INCBIN "baserom.gbc",$74ae9,$74aee - $74ae9 + +ViridianGymText14: ; 0x74aee +INCBIN "baserom.gbc",$74aee,5 + +ViridianGymText2: ; 0x74af3 + db $08 ; asm + ld hl, $4a08 + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$74afd,$74b0c - $74afd + +ViridianGymText3: ; 0x74b0c + db $08 ; asm + ld hl, $4a14 + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$74b16,$74b25 - $74b16 + +ViridianGymText4: ; 0x74b25 + db $08 ; asm + ld hl, $4a20 + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$74b2f,$74b3e - $74b2f + +ViridianGymText5: ; 0x74b3e + db $08 ; asm + ld hl, $4a2c + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$74b48,$74b57 - $74b48 + +ViridianGymText6: ; 0x74b57 + db $08 ; asm + ld hl, $4a38 + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$74b61,$74b70 - $74b61 + +ViridianGymText7: ; 0x74b70 + db $08 ; asm + ld hl, $4a44 + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$74b7a,$74b89 - $74b7a + +ViridianGymText8: ; 0x74b89 + db $08 ; asm + ld hl, $4a50 + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$74b93,$74ba2 - $74b93 + +ViridianGymText9: ; 0x74ba2 + db $08 ; asm + ld hl, $4a5c + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$74bac,$74bbb - $74bac + +ViridianGymText10: ; 0x74bbb + db $08 ; asm + ld a, [$d751] + bit 1, a + jr nz, .asm_1abd1 ; 0x74bc1 + ld hl, $4bd4 + call PrintText + jr .asm_6064d ; 0x74bc9 +.asm_1abd1 ; 0x74bcb + ld hl, $4bd9 + call PrintText +.asm_6064d ; 0x74bd1 + jp $24d7 + +INCBIN "baserom.gbc",$74bd4,$a + +ViridianGymObject: ; 0x74bde (size=105) + db $3 ; border tile + + db $2 ; warps + db $11, $10, $4, $ff + db $11, $11, $4, $ff + + db $0 ; signs + + db $b ; people + db SPRITE_GIOVANNI, $1 + 4, $2 + 4, $ff, $d0, $41, GIOVANNI + $C8, $3 ; trainer + db SPRITE_BLACK_HAIR_BOY_1, $7 + 4, $c + 4, $ff, $d0, $42, COOLTRAINER_M + $C8, $9 ; trainer + db SPRITE_HIKER, $b + 4, $b + 4, $ff, $d1, $43, BLACKBELT + $C8, $6 ; trainer + db SPRITE_ROCKER, $7 + 4, $a + 4, $ff, $d0, $44, TAMER + $C8, $3 ; trainer + db SPRITE_HIKER, $7 + 4, $3 + 4, $ff, $d2, $45, BLACKBELT + $C8, $7 ; trainer + db SPRITE_BLACK_HAIR_BOY_1, $5 + 4, $d + 4, $ff, $d3, $46, COOLTRAINER_M + $C8, $a ; trainer + db SPRITE_HIKER, $1 + 4, $a + 4, $ff, $d0, $47, BLACKBELT + $C8, $8 ; trainer + db SPRITE_ROCKER, $10 + 4, $2 + 4, $ff, $d3, $48, TAMER + $C8, $4 ; trainer + db SPRITE_BLACK_HAIR_BOY_1, $5 + 4, $6 + 4, $ff, $d0, $49, COOLTRAINER_M + $C8, $1 ; trainer + db SPRITE_GYM_HELPER, $f + 4, $10 + 4, $ff, $d0, $a ; person + db SPRITE_BALL, $9 + 4, $10 + 4, $ff, $ff, $8b, REVIVE ; item + + ; warp-to + EVENT_DISP $a, $11, $10 + EVENT_DISP $a, $11, $11 + +ViridianGymBlocks: ; 90 + INCBIN "maps/viridiangym.blk" + +PewterMart_h: ; 0x74ca1 to 0x74cad (12 bytes) (id=56) + db $02 ; tileset + db $04, $04 ; dimensions (y, x) + dw PewterMartBlocks, PewterMartTexts, PewterMartScript ; blocks, texts, scripts + db $00 ; connections + + dw PewterMartObject ; objects + +PewterMartScript: ; 0x74cad + call $3c3c + ld a, $1 + ld [$cf0c], a + ret +; 0x74cb6 + +PewterMartTexts: ; 0x74cb6 + dw PewterMartText1, PewterMartText2, PewterMartText3 + +PewterMartText2: ; 0x74cbc + db $08 ; asm + ld hl, $4cc6 + call PrintText + jp $24d7 + +INCBIN "baserom.gbc",$74cc6,$74ccb - $74cc6 + +PewterMartText3: ; 0x74ccb + db $08 ; asm + ld hl, $4cd5 + call PrintText + jp $24d7 + +INCBIN "baserom.gbc",$74cd5,$5 + +PewterMartObject: ; 0x74cda (size=38) + db $0 ; border tile + + db $2 ; warps + db $7, $3, $4, $ff + db $7, $4, $4, $ff + + db $0 ; signs + + db $3 ; people + db SPRITE_MART_GUY, $5 + 4, $0 + 4, $ff, $d3, $1 ; person + db SPRITE_BUG_CATCHER, $3 + 4, $3 + 4, $fe, $1, $2 ; person + db SPRITE_BLACK_HAIR_BOY_2, $5 + 4, $5 + 4, $ff, $ff, $3 ; person + + ; warp-to + EVENT_DISP $4, $7, $3 + EVENT_DISP $4, $7, $4 + +UnknownDungeon1_h: ; 0x74d00 to 0x74d0c (12 bytes) (id=228) + db $11 ; tileset + db $09, $0f ; dimensions (y, x) + dw UnknownDungeon1Blocks, UnknownDungeon1Texts, UnknownDungeon1Script ; blocks, texts, scripts + db $00 ; connections + + dw UnknownDungeon1Object ; objects + +UnknownDungeon1Script: ; 0x74d0c + jp $3c3c +; 0x74d0f + +UnknownDungeon1Texts: ; 0x74d0f + dw UnknownDungeon1Text1, UnknownDungeon1Text2, UnknownDungeon1Text3 + +UnknownDungeon1Object: ; 0x74d15 (size=97) + db $7d ; border tile + + db $9 ; warps + db $11, $18, $6, $ff + db $11, $19, $6, $ff + db $1, $1b, $0, UNKNOWN_DUNGEON_2 + db $7, $17, $1, UNKNOWN_DUNGEON_2 + db $9, $12, $2, UNKNOWN_DUNGEON_2 + db $1, $7, $3, UNKNOWN_DUNGEON_2 + db $3, $1, $4, UNKNOWN_DUNGEON_2 + db $b, $3, $5, UNKNOWN_DUNGEON_2 + db $6, $0, $0, UNKNOWN_DUNGEON_3 + + db $0 ; signs + + db $3 ; people + db SPRITE_BALL, $d + 4, $7 + 4, $ff, $ff, $81, FULL_RESTORE ; item + db SPRITE_BALL, $3 + 4, $13 + 4, $ff, $ff, $82, MAX_ELIXER ; item + db SPRITE_BALL, $0 + 4, $5 + 4, $ff, $ff, $83, NUGGET ; item + + ; warp-to + EVENT_DISP $f, $11, $18 + EVENT_DISP $f, $11, $19 + EVENT_DISP $f, $1, $1b ; UNKNOWN_DUNGEON_2 + EVENT_DISP $f, $7, $17 ; UNKNOWN_DUNGEON_2 + EVENT_DISP $f, $9, $12 ; UNKNOWN_DUNGEON_2 + EVENT_DISP $f, $1, $7 ; UNKNOWN_DUNGEON_2 + EVENT_DISP $f, $3, $1 ; UNKNOWN_DUNGEON_2 + EVENT_DISP $f, $b, $3 ; UNKNOWN_DUNGEON_2 + EVENT_DISP $f, $6, $0 ; UNKNOWN_DUNGEON_3 + +UnknownDungeon1Blocks: ; 135 + INCBIN "maps/unknowndungeon1.blk" + +CeruleanHouse3_h: ; 0x74dfd to 0x74e09 (12 bytes) (id=230) + db $0d ; tileset + db $04, $04 ; dimensions (y, x) + dw CeruleanHouse3Blocks, $4e13, CeruleanHouse3Script ; blocks, texts, scripts + db $00 ; connections + + dw CeruleanHouse3Object ; objects + +CeruleanHouse3Script: ; 0x74e09 + ld a, $1 + ld [$cf0c], a + dec a + ld [$cc3c], a + ret +; 0x74e13 + +INCBIN "baserom.gbc",$74e13,$2 + +CeruleanHouse3Text1: ; 0x74e15 + db $8 + ld hl, $4e77 + call PrintText + xor a + ld [$cc26], a + ld [$cc36], a +.asm_74e23 + ld hl, $4e7c + call PrintText + ld hl, $4e6d + call $2a5a + ld hl, $cf7b + ld a, l + ld [$cf8b], a + ld a, h + ld [$cf8c], a + xor a + ld [$cf93], a + ld [$cc35], a + ld a, $4 + ld [$cf94], a + call $2be6 + jr c, .asm_74e60 ; 0x74e49 $15 + ld hl, $4e86 + ld a, [$cf91] + sub $15 + add a + ld d, $0 + ld e, a + add hl, de + ld a, [hli] + ld h, [hl] + ld l, a + call PrintText + jr .asm_74e23 ; 0x74e5e $c3 +.asm_74e60 + xor a + ld [$cc36], a + ld hl, $4e81 + call PrintText + jp $24d7 +; 0x74e6d + +INCBIN "baserom.gbc",$74e6d,$51 + +CeruleanHouse3Object: ; 0x74ebe (size=34) + db $c ; border tile + + db $3 ; warps + db $0, $2, $9, $ff + db $7, $2, $8, $ff + db $7, $3, $8, $ff + + db $0 ; signs + + db $1 ; people + db SPRITE_FAT_BALD_GUY, $3 + 4, $5 + 4, $ff, $d3, $1 ; person + + ; warp-to + EVENT_DISP $4, $0, $2 + EVENT_DISP $4, $7, $2 + EVENT_DISP $4, $7, $3 + +INCBIN "baserom.gbc",$74ee0,$12c + +FuchsiaHouse1_h: ; 0x7500c to 0x75018 (12 bytes) (id=153) + db $08 ; tileset + db $04, $04 ; dimensions (y, x) + dw FuchsiaHouse1Blocks, FuchsiaHouse1Texts, FuchsiaHouse1Script ; blocks, texts, scripts + db $00 ; connections + + dw FuchsiaHouse1Object ; objects + +FuchsiaHouse1Script: ; 0x75018 + call $3c3c + ret +; 0x7501c + +FuchsiaHouse1Texts: ; 0x7501c + dw FuchsiaHouse1Text1, FuchsiaHouse1Text2, FuchsiaHouse1Text3 + +FuchsiaHouse1Text1: ; 0x75022 + TX_FAR _FuchsiaHouse1Text1 + db $50 + +FuchsiaHouse1Text2: ; 0x75027 + TX_FAR _FuchsiaHouse1Text2 + db $50 + +FuchsiaHouse1Text3: ; 0x7502c + TX_FAR _FuchsiaHouse1Text3 + db $50 + +FuchsiaHouse1Object: ; 0x75031 (size=38) + db $a ; border tile + + db $2 ; warps + db $7, $2, $1, $ff + db $7, $3, $1, $ff + + db $0 ; signs + + db $3 ; people + db SPRITE_MOM_GEISHA, $3 + 4, $2 + 4, $ff, $d3, $1 ; person + db SPRITE_GAMBLER, $2 + 4, $7 + 4, $ff, $d1, $2 ; person + db SPRITE_BUG_CATCHER, $5 + 4, $5 + 4, $ff, $ff, $3 ; person + + ; warp-to + EVENT_DISP $4, $7, $2 + EVENT_DISP $4, $7, $3 + +FuchsiaPokecenter_h: ; 0x75057 to 0x75063 (12 bytes) (id=154) + db $06 ; tileset + db $04, $07 ; dimensions (y, x) + dw FuchsiaPokecenterBlocks, $5069, FuchsiaPokecenterScript ; blocks, texts, scripts + db $00 ; connections + + dw FuchsiaPokecenterObject ; objects + +FuchsiaPokecenterScript: ; 0x75063 + call $22fa + jp $3c3c +; 0x75069 + +INCBIN "baserom.gbc",$75069,$9 + +FuchsiaPokecenterText2: +FuchsiaPokecenterText1: ; 0x75071 or 0x75072 + TX_FAR _FuchsiaPokecenterText1 + db $50 + +FuchsiaPokecenterText3: ; 0x75077 + TX_FAR _FuchsiaPokecenterText3 + db $50 + +FuchsiaPokecenterText4: ; 0x7507c + db $f6 + +FuchsiaPokecenterObject: ; 0x7507d (size=44) + db $0 ; border tile + + db $2 ; warps + db $7, $3, $2, $ff + db $7, $4, $2, $ff + + db $0 ; signs + + db $4 ; people + db SPRITE_NURSE, $1 + 4, $3 + 4, $ff, $d0, $1 ; person + db SPRITE_ROCKER, $3 + 4, $2 + 4, $ff, $ff, $2 ; person + db SPRITE_LASS, $5 + 4, $6 + 4, $fe, $2, $3 ; person + db SPRITE_CABLE_CLUB_WOMAN, $2 + 4, $b + 4, $ff, $d0, $4 ; person + + ; warp-to + EVENT_DISP $7, $7, $3 + EVENT_DISP $7, $7, $4 + +FuchsiaHouse2_h: ; 0x750a9 to 0x750b5 (12 bytes) (id=155) + db $14 ; tileset + db $04, $05 ; dimensions (y, x) + dw FuchsiaHouse2Blocks, FuchsiaHouse2Texts, FuchsiaHouse2Script ; blocks, texts, scripts + db $00 ; connections + + dw FuchsiaHouse2Object ; objects + +FuchsiaHouse2Script: ; 0x750b5 + jp $3c3c +; 0x750b8 + +FuchsiaHouse2Texts: ; 0x750b8 + dw FuchsiaHouse2Text1, FuchsiaHouse2Text2, FuchsiaHouse2Text3, FuchsiaHouse2Text4, FuchsiaHouse2Text5 + +FuchsiaHouse2Text1: ; 0x750c2 + db $08 ; asm + ld a, [$d78e] + bit 0, a + jr nz, .asm_58feb ; 0x750c8 + ld b,GOLD_TEETH + call $3493 + jr nz, .asm_3f30f ; 0x750cf + ld a, [$d78e] + bit 1, a + jr nz, .asm_60cba ; 0x750d6 + ld hl, $5135 + call PrintText + call $35ec + ld a, [$cc26] + and a + ld hl, $513f + jr nz, .asm_61238 ; 0x750e8 + ld hl, $513a +.asm_61238 ; 0x750ed + call PrintText + jr .asm_52039 ; 0x750f0 +.asm_3f30f ; 0x750f2 + ld hl, $5144 + call PrintText + ld a, $40 + ldh [$db], a + ld b, $5 ; BANK(MyFunction) + ld hl, $7f37 ; MyFunction + call Bankswitch + ld hl, $d78e + set 1, [hl] +.asm_60cba ; 0x75109 + ld hl, $514e + call PrintText + ld bc,(HM_04 << 8) | 1 + call $3e2e + jr nc, .asm_53b90 ; 0x75115 + ld hl, $5153 + call PrintText + ld hl, $d78e + set 0, [hl] + jr .asm_52039 ; 0x75122 +.asm_58feb ; 0x75124 + ld hl, $5159 + call PrintText + jr .asm_52039 ; 0x7512a +.asm_53b90 ; 0x7512c + ld hl, $515e + call PrintText +.asm_52039 ; 0x75132 + jp $24d7 + +INCBIN "baserom.gbc",$75135,$75163 - $75135 + +FuchsiaHouse2Text5: +FuchsiaHouse2Text4: ; 0x75163 + db $08 ; asm + ldh a, [$8c] + cp $4 + ld hl, $517b + jr nz, .asm_4c9a2 ; 0x7516b + ld hl, $5176 +.asm_4c9a2 ; 0x75170 + call PrintText + jp $24d7 + +INCBIN "baserom.gbc",$75176,$a + +FuchsiaHouse2Object: ; 0x75180 (size=45) + db $17 ; border tile + + db $2 ; warps + db $7, $4, $3, $ff + db $7, $5, $3, $ff + + db $2 ; signs + db $3, $4, $4 ; FuchsiaHouse2Text4 + db $3, $5, $5 ; FuchsiaHouse2Text5 + + db $3 ; people + db SPRITE_WARDEN, $3 + 4, $2 + 4, $ff, $ff, $1 ; person + db SPRITE_BALL, $3 + 4, $8 + 4, $ff, $ff, $82, RARE_CANDY ; item + db SPRITE_BOULDER, $4 + 4, $8 + 4, $ff, $10, $3 ; person + + ; warp-to + EVENT_DISP $5, $7, $4 + EVENT_DISP $5, $7, $5 + +FuchsiaHouse2Blocks: ; 20 + INCBIN "maps/fuchsiahouse2.blk" + +SafariZoneEntrance_h: ; 0x751c1 to 0x751cd (12 bytes) (id=156) + db $0c ; tileset + db $03, $04 ; dimensions (y, x) + dw SafariZoneEntranceBlocks, SafariZoneEntranceTexts, SafariZoneEntranceScript ; blocks, texts, scripts + db $00 ; connections + + dw SafariZoneEntranceObject ; objects + +SafariZoneEntranceScript: ; 0x751cd + call $3c3c + ld hl, $51d9 + ld a, [$d61f] + jp $3d97 +; 0x751d9 + +SafariZoneEntranceScripts: ; 0x751d9 + dw SafariZoneEntranceScript0, SafariZoneEntranceScript1 + +INCBIN "baserom.gbc",$751dd,$a + +SafariZoneEntranceScript0: ; 0x751e7 + ld hl, $5221 + call $34bf + ret nc + ld a, $3 + ld [$ff00+$8c], a + call $2920 + ld a, $ff + ld [$cd6b], a + xor a + ld [$ff00+$b4], a + ld a, $c + ld [$c109], a + ld a, [$cd3d] + cp $1 + jr z, .asm_7520f ; 0x75207 $6 + ld a, $2 + ld [$d61f], a + ret +.asm_7520f + ld a, $10 + ld c, $1 + call $52a3 + ld a, $f0 + ld [$cd6b], a + ld a, $1 + ld [$d61f], a + ret +; 0x75221 + +INCBIN "baserom.gbc",$75221,$75226 - $75221 + +SafariZoneEntranceScript1: ; 0x75226 + call $52b4 + ret nz + xor a + ld [$ff00+$b4], a + ld [$cd6b], a + call $2429 + ld a, $4 + ld [$ff00+$8c], a + call $2920 + ld a, $ff + ld [$cd6b], a + ret +; 0x75240 + +INCBIN "baserom.gbc",$75240,$79 + +SafariZoneEntranceTexts: ; 0x752b9 + dw SafariZoneEntranceText1, SafariZoneEntranceText2, SafariZoneEntranceText3, SafariZoneEntranceText4, SafariZoneEntranceText5, SafariZoneEntranceText6 + +SafariZoneEntranceText3: +SafariZoneEntranceText1: ; 0x752c5 + TX_FAR _SafariZoneEntranceText1 + db $50 + +SafariZoneEntranceText4: +INCBIN "baserom.gbc",$752ca,$7536f - $752ca + +SafariZoneEntranceText5: ; 0x7536f +INCBIN "baserom.gbc",$7536f,6 + +INCBIN "baserom.gbc",$75375,$753c5 - $75375 + +SafariZoneEntranceText6: ; 0x753c5 +INCBIN "baserom.gbc",$753c5,5 + +SafariZoneEntranceText2: ; 0x753ca + db $08 ; asm + ld hl, $53e6 + call PrintText + call $35ec + ld a, [$cc26] + and a + ld hl, $53f0 + jr nz, .asm_278a6 ; 0x753db + ld hl, $53eb +.asm_278a6 ; 0x753e0 + call PrintText + jp $24d7 + +INCBIN "baserom.gbc",$753e6,$f + +SafariZoneEntranceObject: ; 0x753f5 (size=48) + db $a ; border tile + + db $4 ; warps + db $5, $3, $4, $ff + db $5, $4, $4, $ff + db $0, $3, $0, SAFARI_ZONE_CENTER + db $0, $4, $1, SAFARI_ZONE_CENTER + + db $0 ; signs + + db $2 ; people + db SPRITE_WHITE_PLAYER, $2 + 4, $6 + 4, $ff, $d2, $1 ; person + db SPRITE_WHITE_PLAYER, $4 + 4, $1 + 4, $ff, $d3, $2 ; person + + ; warp-to + EVENT_DISP $4, $5, $3 + EVENT_DISP $4, $5, $4 + EVENT_DISP $4, $0, $3 ; SAFARI_ZONE_CENTER + EVENT_DISP $4, $0, $4 ; SAFARI_ZONE_CENTER + +SafariZoneEntranceBlocks: ; 12 + INCBIN "maps/safarizoneentrance.blk" + +FuchsiaGym_h: ; 0x75431 to 0x7543d (12 bytes) (id=157) + db $07 ; tileset + db $09, $05 ; dimensions (y, x) + dw FuchsiaGymBlocks, FuchsiaGymTexts, FuchsiaGymScript ; blocks, texts, scripts + db $00 ; connections + + dw FuchsiaGymObject ; objects + +FuchsiaGymScript: ; 0x7543d + call $5453 + call $3c3c + ld hl, $54eb + ld de, $5482 + ld a, [$d65b] + call $3160 + ld [$d65b], a + ret +; 0x75453 + +INCBIN "baserom.gbc",$75453,$82 + +FuchsiaGymTexts: ; 0x754d5 + dw FuchsiaGymText1, FuchsiaGymText2, FuchsiaGymText3, FuchsiaGymText4, FuchsiaGymText5, FuchsiaGymText6, FuchsiaGymText7, FuchsiaGymText8, FuchsiaGymText9, FuchsiaGymText10, FuchsiaGymText11 + +INCBIN "baserom.gbc",$754eb,$49 + +FuchsiaGymText1: ; 0x75534 + db $08 ; asm + ld a, [$d792] + bit 1, a + jr z, .asm_181b6 ; 0x7553a + bit 0, a + jr nz, .asm_adc3b ; 0x7553e + call z, $5497 + call $30b6 + jr .asm_e84c6 ; 0x75546 +.asm_adc3b ; 0x75548 + ld hl, $558b + call PrintText + jr .asm_e84c6 ; 0x7554e +.asm_181b6 ; 0x75550 + ld hl, $5581 + call PrintText + ld hl, $d72d + set 6, [hl] + set 7, [hl] + ld hl, $5586 + ld de, $5586 + call $3354 + ldh a, [$8c] + ld [$cf13], a + call $336a + call $32d7 + ld a, $5 + ld [$d05c], a + xor a + ldh [$b4], a + ld a, $3 + ld [$d65b], a +.asm_e84c6 ; 0x7557e + jp $24d7 + +INCBIN "baserom.gbc",$75581,$75590 - $75581 + +FuchsiaGymText9: ; 0x75590 +INCBIN "baserom.gbc",$75590,5 + +FuchsiaGymText10: ; 0x75595 +INCBIN "baserom.gbc",$75595,$7559f - $75595 + +FuchsiaGymText11: ; 0x7559f +INCBIN "baserom.gbc",$7559f,5 + +FuchsiaGymText2: ; 0x755a4 + db $08 ; asm + ld hl, $54eb + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$755ae,$755bd - $755ae + +FuchsiaGymText3: ; 0x755bd + db $08 ; asm + ld hl, $54f7 + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$755c7,$755d6 - $755c7 + +FuchsiaGymText4: ; 0x755d6 + db $08 ; asm + ld hl, $5503 + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$755e0,$755ef - $755e0 + +FuchsiaGymText5: ; 0x755ef + db $08 ; asm + ld hl, $550f + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$755f9,$75608 - $755f9 + +FuchsiaGymText6: ; 0x75608 + db $08 ; asm + ld hl, $551b + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$75612,$75621 - $75612 + +FuchsiaGymText7: ; 0x75621 + db $08 ; asm + ld hl, $5527 + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$7562b,$7563a - $7562b + +FuchsiaGymText8: ; 0x7563a + db $08 ; asm + ld a, [$d792] + bit 1, a + ld hl, $5653 + jr nz, .asm_50671 ; 0x75643 + ld hl, $564e +.asm_50671 ; 0x75648 + call PrintText + jp $24d7 + +INCBIN "baserom.gbc",$7564e,$a + +FuchsiaGymObject: ; 0x75658 (size=82) + db $3 ; border tile + + db $2 ; warps + db $11, $4, $5, $ff + db $11, $5, $5, $ff + + db $0 ; signs + + db $8 ; people + db SPRITE_BLACKBELT, $a + 4, $4 + 4, $ff, $d0, $41, KOGA + $C8, $1 ; trainer + db SPRITE_ROCKER, $d + 4, $8 + 4, $ff, $d0, $42, JUGGLER + $C8, $7 ; trainer + db SPRITE_ROCKER, $8 + 4, $7 + 4, $ff, $d3, $43, JUGGLER + $C8, $3 ; trainer + db SPRITE_ROCKER, $c + 4, $1 + 4, $ff, $d0, $44, JUGGLER + $C8, $8 ; trainer + db SPRITE_ROCKER, $5 + 4, $3 + 4, $ff, $d1, $45, TAMER + $C8, $1 ; trainer + db SPRITE_ROCKER, $2 + 4, $8 + 4, $ff, $d0, $46, TAMER + $C8, $2 ; trainer + db SPRITE_ROCKER, $7 + 4, $2 + 4, $ff, $d2, $47, JUGGLER + $C8, $4 ; trainer + db SPRITE_GYM_HELPER, $f + 4, $7 + 4, $ff, $d0, $8 ; person + + ; warp-to + EVENT_DISP $5, $11, $4 + EVENT_DISP $5, $11, $5 + +FuchsiaGymBlocks: ; 45 + INCBIN "maps/fuchsiagym.blk" + +FuchsiaMeetingRoom_h: ; 0x756d7 to 0x756e3 (12 bytes) (id=158) + db $14 ; tileset + db $04, $07 ; dimensions (y, x) + dw FuchsiaMeetingRoomBlocks, FuchsiaMeetingRoomTexts, FuchsiaMeetingRoomScript ; blocks, texts, scripts + db $00 ; connections + + dw FuchsiaMeetingRoomObject ; objects + +FuchsiaMeetingRoomScript: ; 0x756e3 + call $3c3c + ret +; 0x756e7 + +FuchsiaMeetingRoomTexts: ; 0x756e7 + dw FuchsiaMeetingRoomText1, FuchsiaMeetingRoomText2, FuchsiaMeetingRoomText3 + +FuchsiaMeetingRoomText1: ; 0x756ed + TX_FAR _FuchsiaMeetingRoomText1 + db $50 + +FuchsiaMeetingRoomText2: ; 0x756f2 + TX_FAR _FuchsiaMeetingRoomText2 + db $50 + +FuchsiaMeetingRoomText3: ; 0x756f7 + TX_FAR _FuchsiaMeetingRoomText3 + db $50 + +FuchsiaMeetingRoomObject: ; 0x756fc (size=38) + db $17 ; border tile + + db $2 ; warps + db $7, $4, $6, $ff + db $7, $5, $6, $ff + + db $0 ; signs + + db $3 ; people + db SPRITE_WHITE_PLAYER, $1 + 4, $4 + 4, $ff, $d0, $1 ; person + db SPRITE_WHITE_PLAYER, $2 + 4, $0 + 4, $ff, $d1, $2 ; person + db SPRITE_WHITE_PLAYER, $1 + 4, $a + 4, $ff, $d0, $3 ; person + + ; warp-to + EVENT_DISP $7, $7, $4 + EVENT_DISP $7, $7, $5 + +FuchsiaMeetingRoomBlocks: ; 28 + INCBIN "maps/fuchsiameetingroom.blk" + +CinnabarGym_h: ; 0x7573e to 0x7574a (12 bytes) (id=166) + db $16 ; tileset + db $09, $0a ; dimensions (y, x) + dw $5b26, CinnabarGymTexts, CinnabarGymScript ; blocks, texts, scripts + db $00 ; connections + + dw CinnabarGymObject ; objects + +CinnabarGymScript: ; 0x7574a + call $5759 + call $3c3c + ld hl, $57a6 + ld a, [$d65e] + jp $3d97 +; 0x75759 + +INCBIN "baserom.gbc",$75759,$757a6 - $75759 + +CinnabarGymScripts: ; 0x757a6 + dw CinnabarGymScript0, CinnabarGymScript1 + +INCBIN "baserom.gbc",$757aa,$4 + +CinnabarGymScript0: ; 0x757ae + ld a, [$da38] + and a + ret z + ld [$ff00+$8c], a + cp $4 + jr nz, .asm_757c3 ; 0x757b7 $a + ld a, $4 + ld [$d528], a + ld de, $57d7 + jr .asm_757cb ; 0x757c1 $8 +.asm_757c3 + ld de, $57da + ld a, $1 + ld [$d528], a +.asm_757cb + call $363a + ld a, $1 + ld [$d65e], a + ld [$da39], a + ret +; 0x757d7 + +INCBIN "baserom.gbc",$757d7,$757dc - $757d7 + +CinnabarGymScript1: ; 0x757dc + ld a, [$d730] + bit 0, a + ret nz + xor a + ld [$cd6b], a + ld a, [$da38] + ld [$cc55], a + ld [$ff00+$8c], a + jp $2920 +; 0x757f1 + +INCBIN "baserom.gbc",$757f1,$ae + +CinnabarGymTexts: ; 0x7589f + dw CinnabarGymText1, CinnabarGymText2, CinnabarGymText3, CinnabarGymText4, CinnabarGymText5, CinnabarGymText6, CinnabarGymText7, CinnabarGymText8, CinnabarGymText9 +;CinnabarGymText 10: ; 0x75925 +;CinnabarGymText 11: ; 0x7592a +;CinnabarGymText 12: ; 0x75934 + +INCBIN "baserom.gbc",$758b1,$2e + +CinnabarGymText1: ; 0x758df + db $8 + ld a, [$d79a] + bit 1, a + jr z, .asm_d9332 ; 0x758e5 $16 + bit 0, a + jr nz, .asm_3012f ; 0x758e9 $9 + call z, $5857 + call $30b6 + jp $24d7 +.asm_3012f ; 0x758f4 + ld hl, $5920 + call PrintText + jp $24d7 +.asm_d9332 ; 0x758fd + ld hl, $5914 + call PrintText + ld hl, $5919 + ld de, $5919 + call $3354 + ld a, $7 + ld [$d05c], a + jp $58b7 +; 0x75914 + +INCBIN "baserom.gbc",$75914,$25 + +CinnabarGymText2: ; 0x75939 + db $08 ; asm + call $57a0 + ld a, [$d79a] + bit 2, a + jr nz, .asm_46bb4 ; 0x75942 + ld hl, $595f + call PrintText + ld hl, $5964 + ld de, $5964 + call $3354 + jp $58b7 +.asm_46bb4 ; 0x75956 + ld hl, $5969 + call PrintText + jp $24d7 + +INCBIN "baserom.gbc",$7595f,$7596e - $7595f + +CinnabarGymText3: ; 0x7596e + db $08 ; asm + call $57a0 + ld a, [$d79a] + bit 3, a + jr nz, .asm_4b406 ; 0x75977 + ld hl, $5994 + call PrintText + ld hl, $5999 + ld de, $5999 + call $3354 + jp $58b7 +.asm_4b406 ; 0x7598b + ld hl, $599e + call PrintText + jp $24d7 + +INCBIN "baserom.gbc",$75994,$759a3 - $75994 + +CinnabarGymText4: ; 0x759a3 + db $08 ; asm + call $57a0 + ld a, [$d79a] + bit 4, a + jr nz, .asm_c0673 ; 0x759ac + ld hl, $59c9 + call PrintText + ld hl, $59ce + ld de, $59ce + call $3354 + jp $58b7 +.asm_c0673 ; 0x759c0 + ld hl, $59d3 + call PrintText + jp $24d7 + +INCBIN "baserom.gbc",$759c9,$759d8 - $759c9 + +CinnabarGymText5: ; 0x759d8 + db $08 ; asm + call $57a0 + ld a, [$d79a] + bit 5, a + jr nz, .asm_5cfd7 ; 0x759e1 + ld hl, $59fe + call PrintText + ld hl, $5a03 + ld de, $5a03 + call $3354 + jp $58b7 +.asm_5cfd7 ; 0x759f5 + ld hl, $5a08 + call PrintText + jp $24d7 + +INCBIN "baserom.gbc",$759fe,$75a0d - $759fe + +CinnabarGymText6: ; 0x75a0d + db $08 ; asm + call $57a0 + ld a, [$d79a] + bit 6, a + jr nz, .asm_776b4 ; 0x75a16 + ld hl, $5a33 + call PrintText + ld hl, $5a38 + ld de, $5a38 + call $3354 + jp $58b7 +.asm_776b4 ; 0x75a2a + ld hl, $5a3d + call PrintText + jp $24d7 + +INCBIN "baserom.gbc",$75a33,$75a42 - $75a33 + +CinnabarGymText7: ; 0x75a42 + db $08 ; asm + call $57a0 + ld a, [$d79a] + bit 7, a + jr nz, .asm_2f755 ; 0x75a4b + ld hl, $5a68 + call PrintText + ld hl, $5a6d + ld de, $5a6d + call $3354 + jp $58b7 +.asm_2f755 ; 0x75a5f + ld hl, $5a72 + call PrintText + jp $24d7 + +INCBIN "baserom.gbc",$75a68,$75a77 - $75a68 + +CinnabarGymText8: ; 0x75a77 + db $08 ; asm + call $57a0 + ld a, [$d79b] + bit 0, a + jr nz, .asm_d87be ; 0x75a80 + ld hl, $5a9d + call PrintText + ld hl, $5aa2 + ld de, $5aa2 + call $3354 + jp $58b7 +.asm_d87be ; 0x75a94 + ld hl, $5aa7 + call PrintText + jp $24d7 + +INCBIN "baserom.gbc",$75a9d,$75aac - $75a9d + +CinnabarGymText9: ; 0x75aac + db $08 ; asm + ld a, [$d79a] + bit 1, a + jr nz, .asm_627d9 ; 0x75ab2 + ld hl, $5ac2 + jr .asm_0b11d ; 0x75ab7 +.asm_627d9 ; 0x75ab9 + ld hl, $5ac7 +.asm_0b11d ; 0x75abc + call PrintText + jp $24d7 + +INCBIN "baserom.gbc",$75ac2,$a + +CinnabarGymObject: ; 0x75acc (size=90) + db $2e ; border tile + + db $2 ; warps + db $11, $10, $1, $ff + db $11, $11, $1, $ff + + db $0 ; signs + + db $9 ; people + db SPRITE_FAT_BALD_GUY, $3 + 4, $3 + 4, $ff, $d0, $41, BLAINE + $C8, $1 ; trainer + db SPRITE_BLACK_HAIR_BOY_2, $2 + 4, $11 + 4, $ff, $d0, $42, SUPER_NERD + $C8, $9 ; trainer + db SPRITE_BLACK_HAIR_BOY_2, $8 + 4, $11 + 4, $ff, $d0, $43, BURGLAR + $C8, $4 ; trainer + db SPRITE_BLACK_HAIR_BOY_2, $4 + 4, $b + 4, $ff, $d0, $44, SUPER_NERD + $C8, $a ; trainer + db SPRITE_BLACK_HAIR_BOY_2, $8 + 4, $b + 4, $ff, $d0, $45, BURGLAR + $C8, $5 ; trainer + db SPRITE_BLACK_HAIR_BOY_2, $e + 4, $b + 4, $ff, $d0, $46, SUPER_NERD + $C8, $b ; trainer + db SPRITE_BLACK_HAIR_BOY_2, $e + 4, $3 + 4, $ff, $d0, $47, BURGLAR + $C8, $6 ; trainer + db SPRITE_BLACK_HAIR_BOY_2, $8 + 4, $3 + 4, $ff, $d0, $48, SUPER_NERD + $C8, $c ; trainer + db SPRITE_GYM_HELPER, $d + 4, $10 + 4, $ff, $d0, $9 ; person + + ; warp-to + EVENT_DISP $a, $11, $10 + EVENT_DISP $a, $11, $11 + +CinnabarGymBlocks: ; 90 + INCBIN "maps/cinnabargym.blk" + +Lab1_h: ; 0x75b80 to 0x75b8c (12 bytes) (id=167) + db $14 ; tileset + db $04, $09 ; dimensions (y, x) + dw Lab1Blocks, Lab1Texts, Lab1Script ; blocks, texts, scripts + db $00 ; connections + + dw Lab1Object ; objects + +Lab1Script: ; 0x75b8c + call $3c3c + ret +; 0x75b90 + +Lab1Texts: ; 0x75b90 + dw Lab1Text1, Lab1Text2, Lab1Text3, Lab1Text4, Lab1Text5 + +Lab1Text1: ; 0x75b9a + TX_FAR _Lab1Text1 + db $50 + +Lab1Text2: ; 0x75b9f + TX_FAR _Lab1Text2 + db $50 + +Lab1Text3: ; 0x75ba4 + TX_FAR _Lab1Text3 + db $50 + +Lab1Text4: ; 0x75ba9 + TX_FAR _Lab1Text4 + db $50 + +Lab1Text5: ; 0x75bae + TX_FAR _Lab1Text5 + db $50 + +Lab1Object: ; 0x75bb3 (size=62) + db $17 ; border tile + + db $5 ; warps + db $7, $2, $2, $ff + db $7, $3, $2, $ff + db $4, $8, $0, CINNABAR_LAB_2 + db $4, $c, $0, CINNABAR_LAB_3 + db $4, $10, $0, CINNABAR_LAB_4 + + db $4 ; signs + db $2, $3, $2 ; Lab1Text2 + db $4, $9, $3 ; Lab1Text3 + db $4, $d, $4 ; Lab1Text4 + db $4, $11, $5 ; Lab1Text5 + + db $1 ; people + db SPRITE_FISHER, $3 + 4, $1 + 4, $ff, $ff, $1 ; person + + ; warp-to + EVENT_DISP $9, $7, $2 + EVENT_DISP $9, $7, $3 + EVENT_DISP $9, $4, $8 ; CINNABAR_LAB_2 + EVENT_DISP $9, $4, $c ; CINNABAR_LAB_3 + EVENT_DISP $9, $4, $10 ; CINNABAR_LAB_4 + +Lab1Blocks: ; 36 + INCBIN "maps/lab1.blk" + +Lab2_h: ; 0x75c15 to 0x75c21 (12 bytes) (id=168) + db $14 ; tileset + db $04, $04 ; dimensions (y, x) + dw Lab2Blocks, Lab2Texts, Lab2Script ; blocks, texts, scripts + db $00 ; connections + + dw Lab2Object ; objects + +Lab2Script: ; 0x75c21 + jp $3c3c +; 0x75c24 + +Lab2Texts: ; 0x75c24 + dw Lab2Text1, Lab2Text2, Lab2Text3 + +Lab2Text1: ; 0x75c2a + TX_FAR _Lab2Text1 + db $50 + +Lab2Text2: ; 0x75c2f + db $8 + ld a, $7 + ld [W_WHICHTRADE], a + jr asm_78552 ; 0x75c35 $6 + +Lab2Text3: + db $8 + ld a, $8 + ld [W_WHICHTRADE], a +asm_78552: ; 0x75c3d + ld a, $54 + call Predef + jp $24d7 + +Lab2Object: ; 0x75c45 (size=38) + db $17 ; border tile + + db $2 ; warps + db $7, $2, $2, CINNABAR_LAB_1 + db $7, $3, $2, CINNABAR_LAB_1 + + db $0 ; signs + + db $3 ; people + db SPRITE_BLACK_HAIR_BOY_2, $2 + 4, $3 + 4, $ff, $d0, $1 ; person + db SPRITE_OLD_PERSON, $4 + 4, $1 + 4, $ff, $ff, $2 ; person + db SPRITE_FOULARD_WOMAN, $5 + 4, $5 + 4, $ff, $d1, $3 ; person + + ; warp-to + EVENT_DISP $4, $7, $2 ; CINNABAR_LAB_1 + EVENT_DISP $4, $7, $3 ; CINNABAR_LAB_1 + +Lab2Blocks: ; 16 + INCBIN "maps/lab2.blk" + +Lab3_h: ; 0x75c7b to 0x75c87 (12 bytes) (id=169) + db $14 ; tileset + db $04, $04 ; dimensions (y, x) + dw Lab3Blocks, Lab3Texts, Lab3Script ; blocks, texts, scripts + db $00 ; connections + + dw Lab3Object ; objects + +Lab3Script: ; 0x75c87 + jp $3c3c +; 0x75c8a + +Lab3Texts: ; 0x75c8a + dw Lab3Text1, Lab3Text2, Lab3Text3, Lab3Text4, Lab3Text5 + +Lab3Text1: ; 0x75c94 + db $08 ; asm + ld a, [$d7a1] + bit 7, a + jr nz, .asm_e551a ; 0x75c9a + ld hl, $5cc8 + call PrintText + ld bc,(TM_35 << 8) | 1 + call $3e2e + jr nc, .asm_6c187 ; 0x75ca8 + ld hl, $5ccd + call PrintText + ld hl, $d7a1 + set 7, [hl] + jr .asm_eb896 ; 0x75cb5 +.asm_6c187 ; 0x75cb7 + ld hl, $5cd8 + call PrintText + jr .asm_eb896 ; 0x75cbd +.asm_e551a ; 0x75cbf + ld hl, $5cd3 + call PrintText +.asm_eb896 ; 0x75cc5 + jp $24d7 + +INCBIN "baserom.gbc",$75cc8,$15 + +Lab3Text2: ; 0x75cdd + TX_FAR _Lab3Text2 + db $50 + +Lab3Text4: +Lab3Text3: ; 0x75ce2 + TX_FAR _Lab3Text3 + db $50 + +Lab3Text5: ; 0x75ce7 + TX_FAR _Lab3Text5 + db $50 + +Lab3Object: ; 0x75cec (size=41) + db $17 ; border tile + + db $2 ; warps + db $7, $2, $3, CINNABAR_LAB_1 + db $7, $3, $3, CINNABAR_LAB_1 + + db $3 ; signs + db $4, $0, $3 ; Lab3Text3 + db $4, $1, $4 ; Lab3Text4 + db $1, $2, $5 ; Lab3Text5 + + db $2 ; people + db SPRITE_OAK_AIDE, $2 + 4, $7 + 4, $ff, $d0, $1 ; person + db SPRITE_OAK_AIDE, $3 + 4, $2 + 4, $fe, $2, $2 ; person + + ; warp-to + EVENT_DISP $4, $7, $2 ; CINNABAR_LAB_1 + EVENT_DISP $4, $7, $3 ; CINNABAR_LAB_1 + +Lab3Blocks: ; 16 + INCBIN "maps/lab3.blk" + +Lab4_h: ; 0x75d25 to 0x75d31 (12 bytes) (id=170) + db $14 ; tileset + db $04, $04 ; dimensions (y, x) + dw Lab4Blocks, $5d34, $5d31 ; blocks, texts, scripts + db $00 ; connections + + dw Lab4Object ; objects + +Lab4Script: ; 0x75d31 + jp $3c3c +; 0x75d34 + +INCBIN "baserom.gbc",$75d34,$38 + +Lab4Text1: ; 0x75d6c + db $8 + ld a, [$d7a3] + bit 0, a + jr nz, .asm_75d96 ; 0x75d72 $22 + ld hl, $5dc6 + call PrintText + call $5d38 + ld a, [$cd37] + and a + jr z, .asm_75d8d ; 0x75d81 $a + ld b, $18 + ld hl, $5006 + call Bankswitch + jr .asm_75d93 ; 0x75d8b $6 +.asm_75d8d + ld hl, $5dcb + call PrintText +.asm_75d93 + jp $24d7 +.asm_75d96 + bit 1, a + jr z, .asm_75da2 ; 0x75d98 $8 + ld hl, $5dd0 + call PrintText + jr .asm_75d93 ; 0x75da0 $f1 +.asm_75da2 + call $5de8 + ld hl, $5dd5 + call PrintText + ld hl, $d7a3 + set 2, [hl] + ld a, [$d710] + ld b, a + ld c, $1e + call GivePokemon + jr nc, .asm_75d93 ; 0x75db9 $d8 + ld hl, $d7a3 + res 0, [hl] + res 1, [hl] + res 2, [hl] + jr .asm_75d93 ; 0x75dc4 $cd +; 0x75dc6 + +INCBIN "baserom.gbc",$75dc6,$14 + +Lab4Text2: ; 0x75dda + db $08 ; asm + ld a, $3 + ld [W_WHICHTRADE], a + ld a, $54 + call Predef + jp $24d7 + +INCBIN "baserom.gbc",$75de8,$8 + +Lab4Object: ; 0x75df0 (size=32) + db $17 ; border tile + + db $2 ; warps + db $7, $2, $4, CINNABAR_LAB_1 + db $7, $3, $4, CINNABAR_LAB_1 + + db $0 ; signs + + db $2 ; people + db SPRITE_OAK_AIDE, $2 + 4, $5 + 4, $fe, $2, $1 ; person + db SPRITE_OAK_AIDE, $6 + 4, $7 + 4, $ff, $d1, $2 ; person + + ; warp-to + EVENT_DISP $4, $7, $2 ; CINNABAR_LAB_1 + EVENT_DISP $4, $7, $3 ; CINNABAR_LAB_1 + +Lab4Blocks: ; 16 + INCBIN "maps/lab4.blk" + +CinnabarPokecenter_h: ; 0x75e20 to 0x75e2c (12 bytes) (id=171) + db $06 ; tileset + db $04, $07 ; dimensions (y, x) + dw $4030, CinnabarPokecenterTexts, CinnabarPokecenterScript ; blocks, texts, scripts + db $00 ; connections + + dw CinnabarPokecenterObject ; objects + +CinnabarPokecenterScript: ; 0x75e2c + call $22fa + jp $3c3c +; 0x75e32 + +CinnabarPokecenterTexts: +INCBIN "baserom.gbc",$75e32,$9 + +CinnabarPokecenterText2: +CinnabarPokecenterText1: ; 0x75e3b + TX_FAR _CinnabarPokecenterText1 + db $50 + +CinnabarPokecenterText3: ; 0x75e40 + TX_FAR _CinnabarPokecenterText3 + db $50 + +CinnabarPokecenterText4: + db $f6 + +CinnabarPokecenterObject: ; 0x75e46 (size=44) + db $0 ; border tile + + db $2 ; warps + db $7, $3, $3, $ff + db $7, $4, $3, $ff + + db $0 ; signs + + db $4 ; people + db SPRITE_NURSE, $1 + 4, $3 + 4, $ff, $d0, $1 ; person + db SPRITE_LASS, $4 + 4, $9 + 4, $fe, $0, $2 ; person + db SPRITE_GENTLEMAN, $6 + 4, $2 + 4, $ff, $ff, $3 ; person + db SPRITE_CABLE_CLUB_WOMAN, $2 + 4, $b + 4, $ff, $d0, $4 ; person + + ; warp-to + EVENT_DISP $7, $7, $3 + EVENT_DISP $7, $7, $4 + +CinnabarMart_h: ; 0x75e72 to 0x75e7e (12 bytes) (id=172) + db $02 ; tileset + db $04, $04 ; dimensions (y, x) + dw $4010, CinnabarMartTexts, CinnabarMartScript ; blocks, texts, scripts + db $00 ; connections + + dw CinnabarMartObject ; objects + +CinnabarMartScript: ; 0x75e7e + jp $3c3c +; 0x75e81 + +CinnabarMartTexts: ; 0x75e81 + dw CinnabarMartText1, CinnabarMartText2, CinnabarMartText3 + +CinnabarMartText2: ; 0x75e87 + TX_FAR _CinnabarMartText2 + db $50 + +CinnabarMartText3: ; 0x75e8c + TX_FAR _CinnabarMartText3 + db $50 + +CinnabarMartObject: ; 0x75e91 (size=38) + db $0 ; border tile + + db $2 ; warps + db $7, $3, $4, $ff + db $7, $4, $4, $ff + + db $0 ; signs + + db $3 ; people + db SPRITE_MART_GUY, $5 + 4, $0 + 4, $ff, $d3, $1 ; person + db SPRITE_ERIKA, $2 + 4, $6 + 4, $ff, $ff, $2 ; person + db SPRITE_OAK_AIDE, $4 + 4, $3 + 4, $ff, $ff, $3 ; person + + ; warp-to + EVENT_DISP $4, $7, $3 + EVENT_DISP $4, $7, $4 + +CopycatsHouseF1_h: ; 0x75eb7 to 0x75ec3 (12 bytes) (id=175) + db $01 ; tileset + db $04, $04 ; dimensions (y, x) + dw $4000, CopycatsHouseF1Texts, CopycatsHouseF1Script ; blocks, texts, scripts + db $00 ; connections + + dw CopycatsHouseF1Object ; objects + +CopycatsHouseF1Script: ; 0x75ec3 + jp $3c3c +; 0x75ec6 + +CopycatsHouseF1Texts: ; 0x75ec6 + dw CopycatsHouseF1Text1, CopycatsHouseF1Text2, CopycatsHouseF1Text3 + +CopycatsHouseF1Text1: ; 0x75ecc + TX_FAR _CopycatsHouseF1Text1 + db $50 + +CopycatsHouseF1Text2: ; 0x75ed1 + TX_FAR _CopycatsHouseF1Text2 + db $50 + +CopycatsHouseF1Text3: ; 0x75ed6 + TX_FAR _CopycatsHouseF1Text3 + db $8 + ld a, $28 + call $13d0 + jp $24d7 + +CopycatsHouseF1Object: ; 0x75ee3 (size=46) + db $a ; border tile + + db $3 ; warps + db $7, $2, $0, $ff + db $7, $3, $0, $ff + db $1, $7, $0, COPYCATS_HOUSE_2F + + db $0 ; signs + + db $3 ; people + db SPRITE_MOM_GEISHA, $2 + 4, $2 + 4, $ff, $d0, $1 ; person + db SPRITE_FAT_BALD_GUY, $4 + 4, $5 + 4, $ff, $d2, $2 ; person + db SPRITE_CLEFAIRY, $4 + 4, $1 + 4, $fe, $1, $3 ; person + + ; warp-to + EVENT_DISP $4, $7, $2 + EVENT_DISP $4, $7, $3 + EVENT_DISP $4, $1, $7 ; COPYCATS_HOUSE_2F + +INCBIN "baserom.gbc",$75f11,$75f1d - $75f11 + +GaryScript: ; 0x75f1d + call $3c3c + ld hl, $5f31 + ld a, [$d64c] + jp $3d97 +; 0x75f29 + +INCBIN "baserom.gbc",$75f29,$75f31 - $75f29 + +GaryScripts: ; 0x75f31 + dw GaryScript0 + +INCBIN "baserom.gbc",$75f33,$14 + +GaryScript0: ; 0x75f47 + ret +; 0x75f48 + +INCBIN "baserom.gbc",$75f48,$18e + +GaryTexts: ; 0x760d6 + dw GaryText1, GaryText2, GaryText3, GaryText4, GaryText5 + +GaryText1: ; 0x760e0 + db $08 ; asm + ld a, [$d867] + bit 1, a + ld hl, $60f4 + jr z, .asm_17e9f ; 0x760e9 + ld hl, $6103 +.asm_17e9f ; 0x760ee + call PrintText + jp $24d7 + +INCBIN "baserom.gbc",$760f4,$14 + +GaryText2: ; 0x76108 + TX_FAR _GaryText2 + db $50 + +GaryText3: ; 0x7610d +INCBIN "baserom.gbc",$7610d,$76125 - $7610d + +GaryText4: ; 0x76125 +INCBIN "baserom.gbc",$76125,$7612a - $76125 + +GaryText5: ; 0x7612a +INCBIN "baserom.gbc",$7612a,$7612f - $7612a + +GaryObject: ; 0x7612f (size=48) + db $3 ; border tile + + db $4 ; warps + db $7, $3, $1, LANCES_ROOM + db $7, $4, $2, LANCES_ROOM + db $0, $3, $0, HALL_OF_FAME + db $0, $4, $0, HALL_OF_FAME + + db $0 ; signs + + db $2 ; people + db SPRITE_BLUE, $2 + 4, $4 + 4, $ff, $d0, $1 ; person + db SPRITE_OAK, $7 + 4, $3 + 4, $ff, $d1, $2 ; person + + ; warp-to + EVENT_DISP $4, $7, $3 ; LANCES_ROOM + EVENT_DISP $4, $7, $4 ; LANCES_ROOM + EVENT_DISP $4, $0, $3 ; HALL_OF_FAME + EVENT_DISP $4, $0, $4 ; HALL_OF_FAME + +GaryBlocks: ; 16 + INCBIN "maps/gary.blk" + +Lorelei_h: ; 0x7616f to 0x7617b (12 bytes) (id=245) + db $07 ; tileset + db $06, $05 ; dimensions (y, x) + dw LoreleiBlocks, LoreleiTexts, LoreleiScript ; blocks, texts, scripts + db $00 ; connections + + dw LoreleiObject ; objects + +LoreleiScript: ; 0x7617b + call $6191 + call $3c3c + ld hl, $6255 + ld de, $61bb + ld a, [$d64d] + call $3160 + ld [$d64d], a + ret +; 0x76191 + +INCBIN "baserom.gbc",$76191,$c0 + +LoreleiTexts: ; 0x76251 + dw LoreleiText1, LoreleiText2 + +INCBIN "baserom.gbc",$76255,$d + +LoreleiText1: ; 0x76262 + db $08 ; asm + ld hl, $6255 + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$7626c,$7627b - $7626c + +LoreleiText2: ; 0x7627b +INCBIN "baserom.gbc",$7627b,$76280 - $7627b + +LoreleiObject: ; 0x76280 (size=44) + db $3 ; border tile + + db $4 ; warps + db $b, $4, $2, INDIGO_PLATEAU_LOBBY + db $b, $5, $2, INDIGO_PLATEAU_LOBBY + db $0, $4, $0, BRUNOS_ROOM + db $0, $5, $1, BRUNOS_ROOM + + db $0 ; signs + + db $1 ; people + db SPRITE_LORELEI, $2 + 4, $5 + 4, $ff, $d0, $41, LORELEI + $C8, $1 ; trainer + + ; warp-to + EVENT_DISP $5, $b, $4 ; INDIGO_PLATEAU_LOBBY + EVENT_DISP $5, $b, $5 ; INDIGO_PLATEAU_LOBBY + EVENT_DISP $5, $0, $4 ; BRUNOS_ROOM + EVENT_DISP $5, $0, $5 ; BRUNOS_ROOM + +LoreleiBlocks: ; 30 + INCBIN "maps/loreli.blk" + +Bruno_h: ; 0x762ca to 0x762d6 (12 bytes) (id=246) + db $07 ; tileset + db $06, $05 ; dimensions (y, x) + dw BrunoBlocks, BrunoTexts, BrunoScript ; blocks, texts, scripts + db $00 ; connections + + dw BrunoObject ; objects + +BrunoScript: ; 0x762d6 + call $62ec + call $3c3c + ld hl, $63ac + ld de, $6312 + ld a, [$d64e] + call $3160 + ld [$d64e], a + ret +; 0x762ec + +INCBIN "baserom.gbc",$762ec,$bc + +BrunoTexts: ; 0x763a8 + dw BrunoText1, BrunoText2 + +INCBIN "baserom.gbc",$763ac,$d + +BrunoText1: ; 0x763b9 + db $08 ; asm + ld hl, $63ac + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$763c3,$763d2 - $763c3 + +BrunoText2: ; 0x763d2 +INCBIN "baserom.gbc",$763d2,5 + +BrunoObject: ; 0x763d7 (size=44) + db $3 ; border tile + + db $4 ; warps + db $b, $4, $2, LORELEIS_ROOM + db $b, $5, $3, LORELEIS_ROOM + db $0, $4, $0, AGATHAS_ROOM + db $0, $5, $1, AGATHAS_ROOM + + db $0 ; signs + + db $1 ; people + db SPRITE_BRUNO, $2 + 4, $5 + 4, $ff, $d0, $41, BRUNO + $C8, $1 ; trainer + + ; warp-to + EVENT_DISP $5, $b, $4 ; LORELEIS_ROOM + EVENT_DISP $5, $b, $5 ; LORELEIS_ROOM + EVENT_DISP $5, $0, $4 ; AGATHAS_ROOM + EVENT_DISP $5, $0, $5 ; AGATHAS_ROOM + +BrunoBlocks: ; 30 + INCBIN "maps/bruno.blk" + +Agatha_h: ; 0x76421 to 0x7642d (12 bytes) (id=247) + db $0f ; tileset + db $06, $05 ; dimensions (y, x) + dw AgathaBlocks, AgathaTexts, AgathaScript ; blocks, texts, scripts + db $00 ; connections + + dw AgathaObject ; objects + +AgathaScript: ; 0x7642d + call $6443 + call $3c3c + ld hl, $6509 + ld de, $6469 + ld a, [$d64f] + call $3160 + ld [$d64f], a + ret +; 0x76443 + +INCBIN "baserom.gbc",$76443,$c2 + +AgathaTexts: ; 0x76505 + dw AgathaText1, AgathaText2 + +INCBIN "baserom.gbc",$76509,$d + +AgathaText1: ; 0x76516 + db $08 ; asm + ld hl, $6509 + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$76520,$f + +AgathaText2: ; 0x7652f +INCBIN "baserom.gbc",$7652f,5 + +AgathaObject: ; 0x76534 (size=44) + db $0 ; border tile + + db $4 ; warps + db $b, $4, $2, BRUNOS_ROOM + db $b, $5, $3, BRUNOS_ROOM + db $0, $4, $0, LANCES_ROOM + db $0, $5, $0, LANCES_ROOM + + db $0 ; signs + + db $1 ; people + db SPRITE_AGATHA, $2 + 4, $5 + 4, $ff, $d0, $41, AGATHA + $C8, $1 ; trainer + + ; warp-to + EVENT_DISP $5, $b, $4 ; BRUNOS_ROOM + EVENT_DISP $5, $b, $5 ; BRUNOS_ROOM + EVENT_DISP $5, $0, $4 ; LANCES_ROOM + EVENT_DISP $5, $0, $5 ; LANCES_ROOM + +AgathaBlocks: ; 30 + INCBIN "maps/agatha.blk" + +INCBIN "baserom.gbc",$7657e,$1a82 + +SECTION "bank1E",DATA,BANK[$1E] + +INCBIN "baserom.gbc",$78000,$F1 + +PlayAnimation: ; 40F1 + xor a + ld [$FF8B],a + ld [$D08B],a + ld a,[$D07C] ; get animation number + dec a + ld l,a + ld h,0 + add hl,hl + ld de,$607D + add hl,de + ld a,[hli] + ld h,[hl] + ld l,a +.next7\@ + ld a,[hli] + cp a,$FF + jr z,.AnimationOver\@ + cp a,$C0 ; is this animation for a monster onscreen? + jr c,.next2\@ + ld c,a + ld de,$50DA +.next4\@ + ld a,[de] + cp c + jr z,.next3\@ + inc de + inc de + inc de + jr .next4\@ +.next3\@ + ld a,[hli] + cp a,$FF + jr z,.next5\@ + ld [$CF07],a + push hl + push de + call $586F + call $23B1 + pop de + pop hl +.next5\@ + push hl + inc de + ld a,[de] + ld l,a + inc de + ld a,[de] + ld h,a + ld de,.next6\@ + push de + jp [hl] +.next2\@ + ld c,a + and a,$3F + ld [$D086],a + xor a + sla c + rla + sla c + rla + ld [$D09F],a + ld a,[hli] + ld [$CF07],a + ld a,[hli] + ld c,l + ld b,h + ld l,a + ld h,0 + add hl,hl + ld de,$676D + add hl,de + ld a,l + ld [$D094],a + ld a,h + ld [$D095],a + ld l,c + ld h,b + push hl + ld a,[rOBP0] + push af + ld a,[$CC79] + ld [rOBP0],a + call $41D2 + call $417C + call RealPlayAnimation + pop af + ld [rOBP0],a +.next6\@ + pop hl + jr .next7\@ +.AnimationOver\@ ; 417B + ret + +INCBIN "baserom.gbc",$7817C,$78D5E - $7817C + +AttackAnimation: ; 4D5E + push hl + push de + push bc + push af + call $3748 + call $4E23 + ld a,[$D07C] + and a + jr z,.AnimationFinished\@ + + ; if throwing a Poké Ball, skip the regular animation code + cp a,TOSS_ANIM + jr nz,.AttackAnimation\@ + ld de,.AnimationFinished\@ + push de + jp TossBallAnimation + +.AttackAnimation\@ + ; check if battle animations are disabled in the options + ld a,[$D355] + bit 7,a + jr nz,.AnimationsDisabled\@ + call ShareAttackAnimations + call PlayAnimation + jr .next4\@ +.AnimationsDisabled\@ + ld c,30 + call DelayFrames +.next4\@ + call $4DBD ; reload pic and flash the pic in and out (to show damage) +.AnimationFinished\@ + call $3748 + xor a + ld [$D096],a + ld [$D09B],a + ld [$D08B],a + dec a + ld [$CF07],a + pop af + pop bc + pop de + pop hl + ret + +ShareAttackAnimations: ; 4DA6 +; some moves just reuse animations from status conditions + ld a,[H_WHOSETURN] + and a + ret z + + ; opponent’s turn + + ld a,[$D07C] + + cp a,AMNESIA + ld b,CONF_ANIM + jr z,.Replace\@ + + cp a,REST + ld b,SLP_ANIM + ret nz + +.Replace\@ + ld a,b + ld [$D07C],a + ret + +Function4DBD: ; 4DBD + ld a,[$CC5B] + and a + ret z + dec a + add a + ld c,a + ld b,0 + ld hl,Pointer4DCF + add hl,bc + ld a,[hli] + ld h,[hl] + ld l,a + jp [hl] + +Pointer4DCF: ; 4DCF + dw $4DDB,$4DE3,$4DEB,$4DF0,$4DF6,$4DFE + +INCBIN "baserom.gbc",$78DDB,$78E53-$78DDB + +RealPlayAnimation: ; 4E53 + ld a,[$CF07] ; get animation # − 1 + cp a,$FF + jr z,.Next4E60 + call $586F + call $23B1 ; play sound effect +.Next4E60 + ld hl,$C300 + ld a,l + ld [$D09D],a + ld a,h + ld [$D09C],a + ld a,[$D097] + ld h,a + ld a,[$D096] + ld l,a + push hl + ld c,[hl] + ld b,0 + ld hl,PointerTable6F74 + add hl,bc + add hl,bc + ld a,[hli] + ld c,a + ld a,[hli] + ld b,a + pop hl + inc hl + push hl + ld e,[hl] + ld d,0 + ld hl,$7C85 + add hl,de + add hl,de + ld a,[hli] + ld [$D082],a + ld a,[hl] + ld [$D081],a + pop hl + inc hl + ld a,[hl] + ld [$D09E],a + call $4000 + call $4ED7 + ld a,[$D087] + dec a + ld [$D087],a + ret z + ld a,[$D097] + ld h,a + ld a,[$D096] + ld l,a + ld a,[$D08B] + cp a,4 + ld bc,3 + jr nz,.Next4EBC + ld bc,$FFFD +.Next4EBC + add hl,bc + ld a,h + ld [$D097],a + ld a,l + ld [$D096],a + jp $4E73 + +INCBIN "baserom.gbc",$78EC8,$7986F - $78EC8 + +Func586F: ; 586F + ld hl,MoveSoundTable + ld e,a + ld d,0 + add hl,de + add hl,de + add hl,de + ld a,[hli] + ld b,a + call IsCryMove + jr nc,.NotCryMove + ld a,[H_WHOSETURN] + and a + jr nz,.next\@ + ld a,[$D014] ; get number of current monster + jr .Continue\@ +.next\@ + ld a,[$CFE5] +.Continue\@ + push hl + call $13D9 + ld b,a + pop hl + ld a,[$C0F1] + add [hl] + ld [$C0F1],a + inc hl + ld a,[$C0F2] + add [hl] + ld [$C0F2],a + jr .done\@ +.NotCryMove + ld a,[hli] + ld [$C0F1],a + ld a,[hli] + ld [$C0F2],a +.done\@ + ld a,b + ret +IsCryMove: +; set carry if the attack animation involves playing a monster cry + ld a,[$D07C] + cp a,GROWL + jr z,.CryMove + cp a,ROAR + jr z,.CryMove + and a ; clear carry + ret +.CryMove + scf + ret + +MoveSoundTable: + db $a0,$00,$80 + db $a2,$10,$80 + db $b3,$00,$80 + db $a1,$01,$80 + db $a3,$00,$40 + db $e9,$00,$ff + db $a3,$10,$60 + db $a3,$20,$80 + db $a3,$00,$a0 + db $a6,$00,$80 + db $a5,$20,$40 + db $a5,$00,$80 + db $a4,$00,$a0 + db $a7,$10,$c0 + db $a7,$00,$a0 + db $a8,$00,$c0 + db $a8,$10,$a0 + db $a9,$00,$e0 + db $a7,$20,$c0 + db $aa,$00,$80 + db $b9,$00,$80 + db $ab,$01,$80 + db $b7,$00,$80 + db $ad,$f0,$40 + db $b0,$00,$80 + db $ad,$00,$80 + db $b8,$10,$80 + db $b1,$01,$a0 + db $ae,$00,$80 + db $b4,$00,$60 + db $b4,$01,$40 + db $b6,$00,$a0 + db $b0,$10,$a0 + db $b7,$00,$c0 + db $aa,$10,$60 + db $b0,$00,$a0 + db $b9,$11,$c0 + db $b0,$20,$c0 + db $b8,$00,$80 + db $b1,$00,$80 + db $b1,$20,$c0 + db $af,$00,$80 + db $db,$ff,$40 + db $b4,$00,$80 + db $a1,$00,$c0 + db $a1,$00,$40 + db $e4,$00,$80 + db $bf,$40,$60 + db $bf,$00,$80 + db $bf,$ff,$40 + db $c7,$80,$c0 + db $af,$10,$a0 + db $af,$21,$e0 + db $c5,$00,$80 + db $bb,$20,$60 + db $c7,$00,$80 + db $cc,$00,$80 + db $c2,$40,$80 + db $c5,$f0,$e0 + db $cf,$00,$80 + db $c7,$f0,$60 + db $c2,$00,$80 + db $e6,$00,$80 + db $9d,$01,$a0 + db $a9,$f0,$20 + db $ba,$01,$c0 + db $ba,$00,$80 + db $b0,$00,$e0 + db $be,$01,$60 + db $be,$20,$40 + db $bb,$00,$80 + db $bb,$40,$c0 + db $b1,$03,$60 + db $bd,$11,$e0 + db $a8,$20,$e0 + db $d2,$00,$80 + db $b2,$00,$80 + db $b2,$11,$a0 + db $b2,$01,$c0 + db $a9,$14,$c0 + db $b1,$02,$a0 + db $c5,$f0,$80 + db $c5,$20,$c0 + db $d5,$00,$20 + db $d5,$20,$80 + db $d2,$12,$60 + db $be,$00,$80 + db $aa,$01,$e0 + db $c5,$0f,$e0 + db $c5,$11,$20 + db $a6,$10,$40 + db $a5,$10,$c0 + db $aa,$00,$20 + db $d8,$00,$80 + db $e4,$11,$18 + db $9f,$20,$c0 + db $9e,$20,$c0 + db $bd,$00,$10 + db $be,$f0,$20 + db $df,$f0,$c0 + db $a7,$f0,$e0 + db $9f,$f0,$40 + db $db,$00,$80 + db $df,$80,$40 + db $df,$00,$80 + db $aa,$11,$20 + db $aa,$22,$10 + db $b1,$f1,$ff + db $a9,$f1,$ff + db $aa,$33,$30 + db $dd,$40,$c0 + db $a4,$20,$20 + db $a4,$f0,$10 + db $a5,$f8,$10 + db $a7,$f0,$10 + db $bd,$00,$80 + db $ae,$00,$c0 + db $dd,$c0,$ff + db $9f,$f2,$20 + db $e1,$00,$80 + db $e1,$00,$40 + db $9f,$00,$40 + db $a7,$10,$ff + db $c7,$20,$20 + db $dd,$00,$80 + db $c5,$1f,$20 + db $bd,$2f,$80 + db $a5,$1f,$ff + db $ca,$1f,$60 + db $be,$1e,$20 + db $be,$1f,$18 + db $aa,$0f,$80 + db $9f,$f8,$10 + db $9e,$18,$20 + db $dd,$08,$40 + db $ad,$01,$e0 + db $a7,$09,$ff + db $e4,$42,$01 + db $b2,$00,$ff + db $dd,$08,$e0 + db $bb,$00,$80 + db $9f,$88,$10 + db $bd,$48,$ff + db $9e,$ff,$ff + db $bb,$ff,$10 + db $9e,$ff,$04 + db $b2,$01,$ff + db $a9,$f8,$ff + db $a2,$f0,$f0 + db $a5,$08,$10 + db $a3,$f0,$ff + db $b0,$f0,$ff + db $e1,$10,$ff + db $a4,$f0,$20 + db $ca,$f0,$60 + db $b8,$12,$10 + db $e6,$f0,$20 + db $b4,$12,$ff + db $db,$80,$04 + db $df,$f0,$10 + db $c5,$f8,$ff + db $be,$f0,$ff + db $a7,$01,$ff + db $cc,$d8,$04 + db $a1,$00,$80 + db $a1,$00,$80 + +INCBIN "baserom.gbc",$79AAE,$79E16 - $79AAE + +TossBallAnimation: ; 5E16 + ld a,[W_ISINBATTLE] + cp a,2 + jr z,.BlockBall\@ ; if in trainer battle, play different animation + ld a,[$D11E] + ld b,a + + ; upper nybble: how many animations (from PokeBallAnimations) to play + ; this will be 4 for successful capture, 6 for breakout + and a,$F0 + swap a + ld c,a + + ; lower nybble: number of shakes + ; store these for later + ld a,b + and a,$F + ld [$CD3D],a + + ld hl,.PokeBallAnimations + ; choose which toss animation to use + ld a,[$CF91] + cp a,POKE_BALL + ld b,TOSS_ANIM + jr z,.done\@ + cp a,GREAT_BALL + ld b,GREATTOSS_ANIM + jr z,.done\@ + ld b,ULTRATOSS_ANIM +.done\@ + ld a,b +.PlayNextAnimation\@ + ld [$D07C],a + push bc + push hl + call PlayAnimation + pop hl + ld a,[hli] + pop bc + dec c + jr nz,.PlayNextAnimation\@ + ret + +.PokeBallAnimations: ; 5E50 +; sequence of animations that make up the Poké Ball toss + db POOF_ANIM,HIDEPIC_ANIM,$C2,POOF_ANIM,SHOWPIC_ANIM + +.BlockBall\@ ; 5E55 + ld a,$C1 + ld [$D07C],a + call PlayAnimation + ld a,$95 + call $23B1 ; play sound effect + ld a,BLOCKBALL_ANIM + ld [$D07C],a + jp PlayAnimation + +INCBIN "baserom.gbc",$79E6A,$7AF74 - $79E6A + +PointerTable6F74: ; 6F74 + dw $7de7 + dw $7068 + dw $708d + dw $70ce + dw $70df + dw $70f0 + dw $7101 + dw $7132 + dw $7173 + dw $71b4 + dw $71e5 + dw $7216 + dw $7227 + dw $7238 + dw $7259 + dw $726a + dw $727b + dw $729c + dw $72bd + dw $72ca + dw $72db + dw $72fc + dw $732d + dw $734e + dw $735f + dw $7364 + dw $736d + dw $7376 + dw $737f + dw $7388 + dw $7391 + dw $73ab + dw $73b4 + dw $73cd + dw $73fe + dw $744b + dw $745c + dw $7465 + dw $7496 + dw $74a7 + dw $74bc + dw $74d5 + dw $74e6 + dw $74f7 + dw $7500 + dw $7505 + dw $7526 + dw $7547 + dw $7558 + dw $7569 + dw $756e + dw $758b + dw $75a8 + dw $75ad + dw $75c6 + dw $75d7 + dw $75e8 + dw $75f9 + dw $760a + dw $761b + dw $7630 + dw $7649 + dw $7666 + dw $7687 + dw $76a8 + dw $76b5 + dw $76c6 + dw $76f3 + dw $7720 + dw $7731 + dw $7742 + dw $7753 + dw $7764 + dw $7775 + dw $785a + dw $786b + dw $787c + dw $788d + dw $789e + dw $78bf + dw $78f0 + dw $7911 + dw $7932 + dw $7943 + dw $7950 + dw $7961 + dw $796e + dw $7987 + dw $79ac + dw $79c9 + dw $79ce + dw $79ff + dw $7a10 + dw $7a31 + dw $7a5e + dw $7a9b + dw $7aac + dw $7acd + dw $7afe + dw $7b3f + dw $7b58 + dw $7b71 + dw $7b8a + dw $7b93 + dw $7b98 + dw $7ba9 + dw $7bae + dw $7bcf + dw $7bf0 + dw $7c11 + dw $7c1a + dw $7c2b + dw $7c3c + dw $77b6 + dw $77f7 + dw $7828 + dw $7849 + dw $739a + dw $7c4d + dw $7c6a + dw $7c7b + dw $7c80 + +INCBIN "baserom.gbc",$7B068,$7C000 - $7B068 + +SECTION "bank1F",DATA,BANK[$1F] + +INCBIN "baserom.gbc",$7C000,$4000 + +SECTION "bank20",DATA,BANK[$20] + +INCBIN "baserom.gbc",$80000,$800b1 - $80000 + +_VictoryRoad3Text10: +_VictoryRoad3Text9: +_VictoryRoad3Text8: +_VictoryRoad3Text7: +_VictoryRoad2Text13: +_VictoryRoad2Text12: +_VictoryRoad2Text11: +_SeafoamIslands1Text2: +_SeafoamIslands1Text1: +_SeafoamIslands5Text2: +_SeafoamIslands5Text1: +_SeafoamIslands4Text6: +_SeafoamIslands4Text5: +_SeafoamIslands4Text4: +_SeafoamIslands4Text3: +_SeafoamIslands4Text2: +_SeafoamIslands4Text1: +_SeafoamIslands3Text2: +_SeafoamIslands3Text1: +_SeafoamIslands2Text2: +_SeafoamIslands2Text1: +_FuchsiaHouse2Text3: +_VictoryRoad1Text7: +_VictoryRoad1Text6: +_VictoryRoad1Text5: ; 0x800b1 + db $0, "This requires", $4f + db "STRENGTH to move!", $57 + +_SaffronCityText19: +_CinnabarIslandText4: +_FuchsiaCityText14: +_VermilionCityText9: +_LavenderTownText6: +_CeruleanCityText14: +_PewterCityText8: +_ViridianCityText11: ; 0x800d2 + db $0, "All your item", $4f + db "needs fulfilled!", $55 + db "#MON MART", $57 + +_ViridianCityText12: ; 0x800fc + db $0, "Heal Your #MON!", $4f + db "#MON CENTER", $57 + +INCBIN "baserom.gbc",$80119,$8031d - $80119 + +_ViridianForestText1: ; 0x8031d + db $0, "I came here with", $4f + db "some friends!", $51 + db "They're out for", $4f + db "#MON fights!", $57 + +INCBIN "baserom.gbc",$80359,$804c7 - $80359 + +_ViridianForestText8: ; 0x804c7 + db $0, "I ran out of #", $4f + db "BALLs to catch", $55 + db "#MON with!", $51 + db "You should carry", $4f + db "extras!", $57 + +_ViridianForestText9: ; 0x8050a + db $0, "TRAINER TIPS", $51 + db "If you want to", $4f + db "avoid battles,", $55 + db "stay away from", $55 + db "grassy areas!", $57 + +_ViridianForestText10: ; 0x80553 + db $0, "For poison, use", $4f + db "ANTIDOTE! Get it", $55 + db "at #MON MARTs!", $57 + +_ViridianForestText11: ; 0x80584 + db $0, "TRAINER TIPS", $51 + db "Contact PROF.OAK", $4f + db "via PC to get", $55 + db "your #DEX", $55 + db "evaluated!", $57 + +_ViridianForestText12: ; 0x805c6 + db $0, "TRAINER TIPS", $51 + db "No stealing of", $4f + db "#MON from", $55 + db "other trainers!", $55 + db "Catch only wild", $55 + db "#MON!", $57 + +_ViridianForestText13: ; 0x80613 + db $0, "TRAINER TIPS", $51 + db "Weaken #MON", $4f + db "before attempting", $55 + db "capture!", $51 + db "When healthy,", $4f + db "they may escape!", $57 + +_ViridianForestText14: ; 0x80667 + db $0, "LEAVING", $4f + db "VIRIDIAN FOREST", $55 + db "PEWTER CITY AHEAD", $57 + +INCBIN "baserom.gbc",$80692,$8093a - $80692 + +_MtMoon1Text14: ; 0x8093a + db $0, "Beware! ZUBAT is", $4f + db "a blood sucker!", $57 + +INCBIN "baserom.gbc",$8095c,$80c70 - $8095c + +_SSAnne1Text1: ; 0x80c70 + db $0, "Bonjour!", $4f + db "I am le waiter on", $55 + db "this ship!", $51 + db "I will be happy", $4f + db "to serve you any-", $55 + db "thing you please!", $51 + db "Ah! Le strong", $4f + db "silent type!", $57 + +_SSAnne1Text2: ; 0x80ce6 + db $0, "The passengers", $4f + db "are restless!", $51 + db "You might be", $4f + db "challenged by the", $55 + db "more bored ones!", $57 + +_SSAnne2Text1: ; 0x80d34 + db $0, "This ship, she is", $4f + db "a luxury liner", $55 + db "for trainers!", $51 + db "At every port, we", $4f + db "hold parties with", $55 + db "invited trainers!", $57 + +INCBIN "baserom.gbc",$80d9a,$80f4b - $80d9a + +_SSAnne3Text1: ; 0x80f4b + db $0, "Our CAPTAIN is a", $4f + db "sword master!", $51 + db "He even teaches", $4f + db "CUT to #MON!", $57 + +_SSAnne5Text1: ; 0x80f88 + db $0, "The party's over.", $4f + db "The ship will be", $55 + db "departing soon.", $57 + +_SSAnne5Text2: ; 0x80fbb + db $0, "Scrubbing decks", $4f + db "is hard work!", $57 + +_SSAnne5Text3: ; 0x80fda + db $0, "Urf. I feel ill.", $51 + db "I stepped out to", $4f + db "get some air.", $57 + +INCBIN "baserom.gbc",$8100b,$810e5 - $8100b + +_SSAnne6Text1: ; 0x810e5 + db $0, "You, mon petit!", $4f + db "We're busy here!", $55 + db "Out of the way!", $57 + +_SSAnne6Text2: ; 0x81116 + db $0, "I saw an odd ball", $4f + db "in the trash.", $57 + +_SSAnne6Text3: ; 0x81137 + db $0, "I'm so busy I'm", $4f + db "getting dizzy!", $57 + +_SSAnne6Text4: ; 0x81155 + db $0, "Hum-de-hum-de-", $4f + db "ho...", $51 + db "I peel spuds", $4f + db "every day!", $55 + db "Hum-hum...", $57 + +_SSAnne6Text5: ; 0x8118e + db $0, "Did you hear about", $4f + db "SNORLAX?", $51 + db "All it does is", $4f + db "eat and sleep!", $57 + +_SSAnne6Text6: ; 0x811c9 + db $0, "Snivel...Sniff...", $51 + db "I only get to", $4f + db "peel onions...", $55 + db "Snivel...", $57 + +INCBIN "baserom.gbc",$81203,$81480 - $81203 + +_SSAnne7Text2: ; 0x81480 + db $0, "Yuck! Shouldn't", $4f + db "have looked!", $57 + +_SSAnne7Text3: ; 0x8149d + db $0, "How to Conquer", $4f + db "Seasickness...", $55 + db "The CAPTAIN's", $55 + db "reading this!", $57 + +_SSAnne8Text8: ; 0x814d7 + db $0, "WIGGLYTUFF: Puup", $4f + db "pupuu!@@" + +INCBIN "baserom.gbc",$814f1,$1d6 + +_SSAnne8Text5: ; 0x816c7 + db $0, "Waiter, I would", $4f + db "like a cherry pie", $55 + db "please!", $57 + +_SSAnne8Text6: ; 0x816f2 + db $0, "A cruise is so", $4f + db "elegant yet cozy!", $57 + +_SSAnne8Text7: ; 0x81714 + db $0, "I always travel", $4f + db "with WIGGLYTUFF!", $57 + +_SSAnne8Text9: ; 0x81736 + db $0, "We are cruising", $4f + db "around the world.", $57 + +_SSAnne8Text11: ; 0x81759 + db $0, "Ssh! I'm a GLOBAL", $4f + db "POLICE agent!", $51 + db "I'm on the trail", $4f + db "of TEAM ROCKET!", $57 + +INCBIN "baserom.gbc",$81799,$81aaa - $81799 + +_SSAnne10Text8: ; 0x81aaa + db $0, "MACHOKE: Gwoh!", $4f + db "Goggoh!@@" + +INCBIN "baserom.gbc",$81ac3,$289 + +_SSAnne10Text7: ; 0x81d4c + db $0, "My buddy, MACHOKE,", $4f + db "is super strong!", $51 + db "He has enough", $4f + db "STRENGTH to move", $55 + db "big rocks!", $57 + +INCBIN "baserom.gbc",$81d9b,$2265 + +SECTION "bank21",DATA,BANK[$21] + +INCBIN "baserom.gbc",$84000,$840a4 - $84000 + +_SilphCo5Text9: ; 0x840a4 + db $0, "It's a #MON", $4f + db "REPORT!", $51 + db "#MON LAB", $4f + db "created PORYGON,", $55 + db "the first virtual", $55 + db "reality #MON.", $57 + +_SilphCo5Text10: ; 0x840f2 + db $0, "It's a #MON", $4f + db "REPORT!", $51 + db "Over 160 #MON", $4f + db "techniques have", $55 + db "been confirmed.", $57 + +_SilphCo5Text11: ; 0x84134 + db $0, "It's a #MON", $4f + db "REPORT!", $51 + db "4 #MON evolve", $4f + db "only when traded", $55 + db "by link-cable.", $57 + +INCBIN "baserom.gbc",$84176,$8502f - $84176 + +_SilphCo11Text2: ; 0x8502f + db $0, "SECRETARY: Thank", $4f + db "you for rescuing", $55 + db "all of us!", $51 + db "We admire your", $4f + db "courage.", $57 + +_SilphCo11Text3: ; 0x85075 + db $0, "Ah ", $52, "!", $4f + db "So we meet again!", $51 + db "The PRESIDENT and", $4f + db "I are discussing", $55 + db "a vital business", $55 + db "proposition.", $51 + db "Keep your nose", $4f + db "out of grown-up", $55 + db "matters...", $51 + db "Or, experience a", $4f + db "world of pain!", $57 + +INCBIN "baserom.gbc",$85119,$21d + +_Mansion2Text3: ; 0x85336 + db $0, "Diary: July 5", $4f + db "Guyana,", $55 + db "South America", $51 + db "A new #MON was", $4f + db "discovered deep", $55 + db "in the jungle.", $57 + +_Mansion2Text4: ; 0x85389 + db $0, "Diary: July 10", $4f + db "We christened the", $55 + db "newly discovered", $55 + db "#MON, MEW.", $57 + +INCBIN "baserom.gbc",$853c7,$854a3 - $853c7 + +_Mansion3Text5: ; 0x854a3 + db $0, "Diary: Feb. 6", $4f + db "MEW gave birth.", $51 + db "We named the", $4f + db "newborn MEWTWO.", $57 + +INCBIN "baserom.gbc",$854df,$85583 - $854df + +_Mansion4Text7: ; 0x85583 + db $0, "Diary; Sept. 1", $4f + db "MEWTWO is far too", $55 + db "powerful.", $51 + db "We have failed to", $4f + db "curb its vicious", $55 + db "tendencies...", $57 + +_SafariZoneEastText5: ; 0x855e0 + db $0, "REST HOUSE", $57 + +_SafariZoneEastText6: ; 0x855ec + db $0, "TRAINER TIPS", $51 + db "The remaining time", $4f + db "declines only", $55 + db "while you walk!", $57 + +_SafariZoneEastText7: ; 0x8562b + db $0, "CENTER AREA", $4f + db "NORTH: AREA 2", $57 + +_SafariZoneNorthText3: ; 0x85646 + db $0, "REST HOUSE", $57 + +_SafariZoneNorthText4: ; 0x85652 + db $0, "TRAINER TIPS", $51 + db "The SECRET HOUSE", $4f + db "is still ahead!", $57 + +_SafariZoneNorthText5: ; 0x85681 + db $0, "AREA 2", $57 + +_SafariZoneNorthText6: ; 0x85689 + db $0, "TRAINER TIPS", $51 + db "#MON hide in", $4f + db "tall grass!", $51 + db "Zigzag through", $4f + db "grassy areas to", $55 + db "flush them out.", $57 + +_SafariZoneNorthText7: ; 0x856df + db $0, "TRAINER TIPS", $51 + db "Win a free HM for", $4f + db "finding the", $55 + db "SECRET HOUSE!", $57 + +_SafariZoneWestText5: ; 0x85719 + db $0, "REST HOUSE", $57 + +_SafariZoneWestText6: ; 0x85725 + db $0, "REQUEST NOTICE", $51 + db "Please find the", $4f + db "SAFARI WARDEN's", $55 + db "lost GOLD TEETH.", $55 + db "They're around", $55 + db "here somewhere.", $51 + db "Reward offered!", $4f + db "Contact: WARDEN", $57 + +_SafariZoneWestText7: ; 0x857a3 + db $0, "TRAINER TIPS", $51 + db "Zone Exploration", $4f + db "Campaign!", $51 + db "The Search for", $4f + db "the SECRET HOUSE!", $57 + +_SafariZoneWestText8: ; 0x857ed + db $0, "AREA 3", $4f + db "EAST: CENTER AREA", $57 + +_SafariZoneCenterText2: ; 0x85807 + db $0, "REST HOUSE", $57 + +_SafariZoneCenterText3: ; 0x85813 + db $0, "TRAINER TIPS", $51 + db "Press the START", $4f + db "Button to check", $55 + db "remaining time!", $57 + +_SafariZoneRestHouse1Text1: ; 0x85851 + db $0, "SARA: Where did", $4f + db "my boy friend,", $55 + db "ERIK, go?", $57 + +_SafariZoneRestHouse1Text2: ; 0x8587b + db $0, "I'm catching", $4f + db "#MON to take", $55 + db "home as gifts!", $57 + +INCBIN "baserom.gbc",$858a4,$85a2f - $858a4 + +_SafariZoneRestHouse2Text1: ; 0x85a2f + db $0, "Tossing ROCKs at", $4f + db "#MON might", $55 + db "make them run,", $55 + db "but they'll be", $55 + db "easier to catch.", $57 + +_SafariZoneRestHouse2Text2: ; 0x85a7a + db $0, "Using BAIT will", $4f + db "make #MON", $55 + db "easier to catch.", $57 + +_SafariZoneRestHouse2Text3: ; 0x85aa6 + db $0, "I hiked a lot, but", $4f + db "I didn't see any", $55 + db "#MON I wanted.", $57 + +_SafariZoneRestHouse3Text1: ; 0x85ad9 + db $0, "How many did you", $4f + db "catch? I'm bushed", $55 + db "from the work!", $57 + +_SafariZoneRestHouse3Text2: ; 0x85b0b + db $0, "I caught a", $4f + db "CHANSEY!", $51 + db "That makes this", $4f + db "all worthwhile!", $57 + +_SafariZoneRestHouse3Text3: ; 0x85b40 + db $0, "Whew! I'm tired", $4f + db "from all the fun!", $57 + +_SafariZoneRestHouse4Text1: ; 0x85b62 + db $0, "You can keep any", $4f + db "item you find on", $55 + db "the ground here.", $51 + db "But, you'll run", $4f + db "out of time if", $55 + db "you try for all", $55 + db "of them at once!", $57 + +_SafariZoneRestHouse4Text2: ; 0x85bd5 + db $0, "Go to the deepest", $4f + db "part of the", $55 + db "SAFARI ZONE. You", $55 + db "will win a prize!", $57 + +_SafariZoneRestHouse4Text3: ; 0x85c17 + db $0, "My EEVEE evolved", $4f + db "into FLAREON!", $51 + db "But, a friend's", $4f + db "EEVEE turned into", $55 + db "a VAPOREON!", $55 + db "I wonder why?", $57 + +INCBIN "baserom.gbc",$85c72,$343 + +_HallofFameRoomText1: ; 0x85fb5 + db $0, "OAK: Er-hem!", $4f + db "Congratulations", $55 + db $52, "!", $51 + db "This floor is the", $4f + db "#MON HALL OF", $55 + db "FAME!", $51 + db "#MON LEAGUE", $4f + db "champions are", $55 + db "honored for their", $55 + db "exploits here!", $51 + db "Their #MON are", $4f + db "also recorded in", $55 + db "the HALL OF FAME!", $51 + db $52, "! You have", $4f + db "endeavored hard", $55 + db "to become the new", $55 + db "LEAGUE champion!", $51 + db "Congratulations,", $4f + db $52, ", you and", $55 + db "your #MON are", $55 + db "HALL OF FAMERs!", $57 + +INCBIN "baserom.gbc",$860e1,$863c1 - $860e1 + +_GaryText2: ; 0x863c1 + db $0, "OAK: ", $52, "!", $57 + +INCBIN "baserom.gbc",$863ca,$1c36 + +SECTION "bank22",DATA,BANK[$22] + +INCBIN "baserom.gbc",$88000,$8807e - $88000 + +_SeafoamIslands5Text4: ; 0x8807e + db $0, "Boulders might", $4f + db "change the flow", $55 + db "of water!", $57 + +_SeafoamIslands5Text5: ; 0x880a8 + db $0, "DANGER", $4f + db "Fast current!", $57 + +_AIBattleWithdrawText: + db 1 + dw $D04A + db 0," with-",$4F,"drew @",1 + dw $CFDA + db 0,"!",$58 +_AIBattleUseItemText: + db 1 + dw $D04A + db 0,$4F,"used @",1 + dw $CD6D + db 0,$55,"on @",1 + dw $CFDA + db 0,"!",$58 + +INCBIN "baserom.gbc",$880EF,$89784 - $880EF + +_TrainerAboutToUseText: + db 1 + dw $D04A + db 0," is",$4F + db "about to use",$55,"@",1 + dw $CFDA + db 0,"!",$51 + db "Will ",$52,$4F + db "change #MON?",$57 + +_TrainerSentOutText: + db 1 + dw $D04A + db 0," sent",$4F + db "out @",1 + dw $CFDA + db 0,"!",$57 + +INCBIN "baserom.gbc",$897C9,$898AA - $897C9 + +_MultiHitText: + db 0,"Hit the enemy",$4F,"@" + TX_NUM W_NUMHITS,1,1 + db 0," times!",$58 + +_ScaredText: + db 1 + dw $D009 + db 0," is too",$4F + db "scared to move!",$58 + +_GetOutText: + db 0,"GHOST: Get out...",$4F + db "Get out...",$58 + +_FastAsleepText: + db 0,$5A,$4F + db "is fast asleep!",$58 + +_WokeUpText: + db 0,$5A,$4F + db "woke up!",$58 + +_FrozenText: + db 0,$5A,$4F + db "is frozen solid!",$58 + +_FullyParalyzedText: + db 0,$5A,"'s",$4F + db "fully paralyzed!",$58 + +_FlinchedText: + db 0,$5A,$4F + db "flinched!",$58 + +_MustRechargeText: + db 0,$5A,$4F + db "must recharge!",$58 + +_DisabledNoMoreText: + db 0,$5A,"'s",$4F + db "disabled no more!",$58 + +_IsConfusedText: + db 0,$5A,$4F + db "is confused!",$58 + +_HurtItselfText: + db 0,"It hurt itself in",$4F + db "its confusion!",$58 + +_ConfusedNoMoreText: + db 0,$5A,"'s",$4F + db "confused no more!",$58 + +_SavingEnergyText: + db 0,$5A,$4F + db "is saving energy!",$58 + +_UnleashedEnergyText: + db 0,$5A,$4F + db "unleashed energy!",$58 + +_ThrashingAboutText: + db 0,$5A,"'s",$4F + db "thrashing about!",$57 + +_AttackContinuesText: + db 0,$5A,"'s",$4F + db "attack continues!",$57 + +_CantMoveText: + db 0,$5A,$4F + db "can't move!",$58 + +INCBIN "baserom.gbc",$89A29,$8A28E - $89A29 + +_RequireCoinCaseText: ; 22:628E + db 0,"A COIN CASE is",$4F + db "required!@@" + +_ExchangeCoinsForPrizesText: ; 22:62A9 + db 0,"We exchange your",$4F + db "coins for prizes.",$58 + +_WhichPrizeText: ; 22:62CD + db 0,"Which prize do",$4F + db "you want?",$57 + +_HereYouGoText: ; 22:62E7 + db 0,"Here you go!@@" + +_SoYouWantPrizeText: ; 22:62F6 + db 0,"So, you want",$4F + db "@" + db 1 + dw $CD6D + db 0,"?",$57 + +_SorryNeedMoreCoins: ; 22:630B + db 0,"Sorry, you need",$4F + db "more coins.@@" + +_OopsYouDontHaveEnoughRoomText: ; 22:6329 + db 0,"Oops! You don't",$4F + db "have enough room.@@" + +_OhFineThenText: ; 22:634C + db 0,"Oh, fine then.@@" +;635d + +INCBIN "baserom.gbc",$8A35D,$8A425 - $8A35D + +INCLUDE "text/oakspeech.tx" + +INCBIN "baserom.gbc",$8A605,$6696 - $6605 + +_Char00Text: + TX_NUM $FF8C,1,2 + db 0," ERROR.",$57 + +_Char55Text: + db 0,$4B,"@@" + +_DiglettsCaveRoute2Text1: ; 0x8a6a7 + db $0, "I went to ROCK", $4f + db "TUNNEL, but it's", $55 + db "dark and scary.", $51 + db "If a #MON's", $4f + db "FLASH could light", $55 + db "it up...", $57 + +_ViridianForestexitText1: ; 0x8a6fd + db $0, "Many #MON live", $4f + db "only in forests ", $55 + db "and caves.", $51 + db "You need to look", $4f + db "everywhere to get", $55 + db "different kinds!", $57 + +_ViridianForestexitText2: ; 0x8a75d + db $0, "Have you noticed", $4f + db "the bushes on the", $55 + db "roadside?", $51 + db "They can be cut", $4f + db "down by a special", $55 + db "#MON move.", $57 + +_Route2HouseText1: ; 0x8a7b8 + db $0, "A fainted #MON", $4f + db "can't fight. But, ", $55 + db "it can still use ", $55 + db "moves like CUT!", $57 + +INCBIN "baserom.gbc",$8a7fc,$8a82c - $8a7fc + +_Route2GateText2: ; 0x8a82c + db $0, "Once a #MON", $4f + db "learns FLASH, you", $55 + db "can get through", $55 + db "ROCK TUNNEL.", $57 + +_ViridianForestEntranceText1: ; 0x8a868 + db $0, "Are you going to", $4f + db "VIRIDIAN FOREST?", $55 + db "Be careful, it's", $55 + db "a natural maze!", $57 + +_ViridianForestEntranceText2: ; 0x8a8ab + db $0, "RATTATA may be", $4f + db "small, but its", $55 + db "bite is wicked!", $55 + db "Did you get one?", $57 + +_MtMoonPokecenterText1: ; 0x8a8eb + db $0, "I've 6 # BALLs", $4f + db "set in my belt.", $51 + db "At most, you can", $4f + db "carry 6 #MON.", $57 + +_MtMoonPokecenterText3: ; 0x8a929 + db $0, "TEAM ROCKET", $4f + db "attacks CERULEAN", $55 + db "citizens...", $51 + db "TEAM ROCKET is", $4f + db "always in the", $55 + db "news!", $57 + +INCBIN "baserom.gbc",$8a976,$8aa5a - $8a976 + +_MtMoonPokecenterText5: ; 0x8aa5a + db $0, $57 + +INCBIN "baserom.gbc",$8aa5c,$15a4 + +SECTION "bank23",DATA,BANK[$23] + +INCBIN "baserom.gbc",$8c000,$8c0cb - $8c000 + +_UndergroundTunnelEntranceRoute6Text1: ; 0x8c0cb + db $0, "People often lose", $4f + db "things in that", $55 + db "UNDERGROUND PATH.", $57 + +_UndergroundPathEntranceRoute7Text1: ; 0x8c0ff + db $0, "I heard a sleepy", $4f + db "#MON appeared", $55 + db "near CELADON CITY.", $57 + +INCBIN "baserom.gbc",$8c132,$8c28d - $8c132 + +_UndergroundPathEntranceRoute8Text1: ; 0x8c28d + db $0, "The dept. store", $4f + db "in CELADON has a", $55 + db "great selection!", $57 + +_RockTunnelPokecenterText1: ; 0x8c2c0 + db $0, "The element types", $4f + db "of #MON make", $55 + db "them stronger", $55 + db "than some types", $55 + db "and weaker than", $55 + db "others!", $57 + +_RockTunnelPokecenterText3: ; 0x8c316 + db $0, "I sold a useless", $4f + db "NUGGET for ", $f0, "5000!", $57 + +INCBIN "baserom.gbc",$8c33a,$8c5b7 - $8c33a + +_RockTunnel1Text8: ; 0x8c5b7 + db $0, "ROCK TUNNEL", $4f + db "CERULEAN CITY -", $55 + db "LAVENDER TOWN", $57 + +INCBIN "baserom.gbc",$8c5e2,$8c5f3 - $8c5e2 + +_Route11GateText1: ; 0x8c5f3 + db $0, "When you catch", $4f + db "lots of #MON,", $55 + db "isn't it hard to", $55 + db "think up names?", $51 + db "In LAVENDER TOWN,", $4f + db "there's a man who", $55 + db "rates #MON", $55 + db "nicknames.", $51 + db "He'll help you", $4f + db "rename them too!", $57 + +INCBIN "baserom.gbc",$8c689,$8c7f9 - $8c689 + +_DiglettsCaveEntranceRoute11Text1: ; 0x8c7f9 + db $0, "What a surprise!", $4f + db "DIGLETTs dug this", $55 + db "long tunnel!", $51 + db "It goes right to", $4f + db "VIRIDIAN CITY!", $57 + +_Route12GateText1: ; 0x8c84a + db $0, "There's a lookout", $4f + db "spot upstairs.", $57 + +INCBIN "baserom.gbc",$8c86b,$8cb73 - $8c86b + +_Route15GateText1: ; 0x8cb73 + db $0, "Are you working", $4f + db "on a #DEX?", $51 + db "PROF.OAK's AIDE", $4f + db "came by here.", $57 + +INCBIN "baserom.gbc",$8cbac,$8cd2a - $8cbac + +_Route16GateMapText2: ; 0x8cd2a + db $0, "How'd you get in?", $4f + db "Good effort!", $57 + +INCBIN "baserom.gbc",$8cd49,$956 + +_Route1Text2: ; 0x8d69f + db $0, "See those ledges", $4f + db "along the road?", $51 + db "It's a bit scary,", $4f + db "but you can jump", $55 + db "from them.", $51 + db "You can get back", $4f + db "to PALLET TOWN", $55 + db "quicker that way.", $57 + +_Route1Text3: ; 0x8d720 + db $0, "ROUTE 1", $4f + db "PALLET TOWN -", $55 + db "VIRIDIAN CITY", $57 + +_Route2Text3: ; 0x8d745 + db $0, "ROUTE 2", $4f + db "VIRIDIAN CITY -", $55 + db "PEWTER CITY", $57 + +_Route2Text4: ; 0x8d76a + db $0, "DIGLETT's CAVE", $57 + +_Route3Text1: ; 0x8d779 + db $0, "Whew... I better", $4f + db "take a rest...", $55 + db "Groan...", $51 + db "That tunnel from", $4f + db "CERULEAN takes a", $55 + db "lot out of you!", $57 + +INCBIN "baserom.gbc",$8d7d5,$8db07 - $8d7d5 + +_Route3Text10: ; 0x8db07 + db $0, "ROUTE 3", $4f + db "MT.MOON AHEAD", $57 + +_Route4Text1: ; 0x8db1e + db $0, "Ouch! I tripped", $4f + db "over a rocky", $55 + db "#MON, GEODUDE!", $57 + +INCBIN "baserom.gbc",$8db4b,$8dbcd - $8db4b + +_Route4Text5: ; 0x8dbcd + db $0, "MT.MOON", $4f + db "Tunnel Entrance", $57 + +_Route4Text6: ; 0x8dbe6 + db $0, "ROUTE 4", $4f + db "MT.MOON -", $55 + db "CERULEAN CITY", $57 + +_Route5Text1: ; 0x8dc07 + db $0, "UNDERGROUND PATH", $4f + db "CERULEAN CITY -", $55 + db "VERMILION CITY", $57 + +INCBIN "baserom.gbc",$8dc38,$8de49 - $8dc38 + +_Route6Text7: ; 0x8de49 + db $0, "UNDERGROUND PATH", $4f + db "CERULEAN CITY -", $55 + db "VERMILION CITY", $57 + +_Route7Text1: ; 0x8de7a + db $0, "UNDERGROUND PATH", $4f + db "CELADON CITY -", $55 + db "LAVENDER TOWN", $57 + +INCBIN "baserom.gbc",$8dea9,$8e262 - $8dea9 + +_Route8Text10: ; 0x8e262 + db $0, "UNDERGROUND PATH", $4f + db "CELADON CITY -", $55 + db "LAVENDER TOWN", $57 + +INCBIN "baserom.gbc",$8e291,$8e61e - $8e291 + +_Route9Text11: ; 0x8e61e + db $0, "ROUTE 9", $4f + db "CERULEAN CITY-", $55 + db "ROCK TUNNEL", $57 + +INCBIN "baserom.gbc",$8e642,$8e8d4 - $8e642 + +_Route10Text9: ; 0x8e8d4 +_Route10Text7: ; 0x8e8d4 + db $0, "ROCK TUNNEL", $57 + +_Route10Text10: ; 0x8e8e1 + db $0, "POWER PLANT", $57 + +INCBIN "baserom.gbc",$8e8ee,$1712 + +SECTION "bank24",DATA,BANK[$24] + +INCBIN "baserom.gbc",$90000,$9008f - $90000 + +_Route11Text11: ; 0x9008f + db $0, "DIGLETT's CAVE", $57 + +_Route12Text1: ; 0x9009e + db $0, "A sleeping #MON", $4f + db "blocks the way!", $57 + +INCBIN "baserom.gbc",$900bf,$903bc - $900bf + +_Route12Text11: ; 0x903bc + db $0, "ROUTE 12 ", $4f + db "North to LAVENDER", $57 + +_Route12Text12: ; 0x903d9 + db $0, "SPORT FISHING AREA", $57 + +INCBIN "baserom.gbc",$903ed,$90781 - $903ed + +_Route13Text11: ; 0x90781 + db $0, "TRAINER TIPS", $51 + db "Look to the left", $4f + db "of that post!", $57 + +_Route13Text12: ; 0x907ae + db $0, "TRAINER TIPS", $51 + db "Use SELECT to", $4f + db "switch items in", $55 + db "the ITEM window!", $57 + +_Route13Text13: ; 0x907eb + db $0, "ROUTE 13", $4f + db "North to SILENCE", $55 + db "BRIDGE", $57 + +INCBIN "baserom.gbc",$9080d,$90c1f - $9080d + +_Route14Text11: ; 0x90c1f + db $0, "ROUTE 14", $4f + db "West to FUCHSIA", $55 + db "CITY", $57 + +INCBIN "baserom.gbc",$90c3e,$91062 - $90c3e + +_Route15Text12: ; 0x91062 + db $0, "ROUTE 15", $4f + db "West to FUCHSIA", $55 + db "CITY", $57 + +INCBIN "baserom.gbc",$91081,$91287 - $91081 + +_Route16Text7: ; 0x91287 + db $0, "A sleeping #MON", $4f + db "blocks the way!", $57 + +INCBIN "baserom.gbc",$912a8,$9130d - $912a8 + +_Route16Text8: ; 0x9130d + db $0, "Enjoy the slope!", $4f + db "CYCLING ROAD", $57 + +_Route16Text9: ; 0x9132c + db $0, "ROUTE 16", $4f + db "CELADON CITY -", $55 + db "FUCHSIA CITY", $57 + +INCBIN "baserom.gbc",$91352,$91649 - $91352 + +_Route17Text11: ; 0x91649 + db $0, "It's a notice!", $51 + db "Watch out for", $4f + db "discarded items!", $57 + +_Route17Text12: ; 0x91677 + db $0, "TRAINER TIPS", $51 + db "All #MON are", $4f + db "unique.", $51 + db "Even #MON of", $4f + db "the same type and", $55 + db "level grow at", $55 + db "different rates.", $57 + +_Route17Text13: ; 0x916d8 + db $0, "TRAINER TIPS", $51 + db "Press the A or B", $4f + db "Button to stay in", $55 + db "place while on a", $55 + db "slope.", $57 + +_Route17Text14: ; 0x91721 + db $0, "ROUTE 17", $4f + db "CELADON CITY -", $55 + db "FUCHSIA CITY", $57 + +_Route17Text15: ; 0x91747 + db $0, "It's a notice!", $51 + db "Don't throw the", $4f + db "game, throw #", $55 + db "BALLs instead!", $57 + +_Route17Text16: ; 0x91782 + db $0, "CYCLING ROAD", $4f + db "Slope ends here!", $57 + +INCBIN "baserom.gbc",$917a1,$9189d - $917a1 + +_Route18Text4: ; 0x9189d + db $0, "ROUTE 18", $4f + db "CELADON CITY -", $55 + db "FUCHSIA CITY", $57 + +_Route18Text5: ; 0x918c3 + db $0, "CYCLING ROAD", $4f + db "No pedestrians", $55 + db "permitted!", $57 + +INCBIN "baserom.gbc",$918eb,$91c3c - $918eb + +_Route19Text11: ; 0x91c3c + db $0, "SEA ROUTE 19", $4f + db "FUCHSIA CITY -", $55 + db "SEAFOAM ISLANDS", $57 + +INCBIN "baserom.gbc",$91c69,$91fa7 - $91c69 + +_Route20Text12: ; 0x91fa7 +_Route20Text11: ; 0x91fa7 + db $0, "SEAFOAM ISLANDS", $57 + +INCBIN "baserom.gbc",$91fb8,$92606 - $91fb8 + +_Route22Text3: ; 0x92606 + db $0, "#MON LEAGUE", $4f + db "Front Gate", $57 + +INCBIN "baserom.gbc",$9261e,$92700 - $9261e + +_Route23Text8: ; 0x92700 + db $0, "VICTORY ROAD GATE", $4f + db "- #MON LEAGUE", $57 + +INCBIN "baserom.gbc",$92721,$18df + +SECTION "bank25",DATA,BANK[$25] + +INCBIN "baserom.gbc",$94000,$945d3 - $94000 + +_Route25Text11: ; 0x945d3 + db $0, "SEA COTTAGE", $4f + db "BILL lives here!", $57 + +INCBIN "baserom.gbc",$945f1,$94b01 - $945f1 + +_BattleCenterMText1: ; 0x94b01 + db $0, "!", $57 + +_TradeCenterMText1: ; 0x94b04 + db $0, "!", $57 + +INCLUDE "text/mapRedsHouse1F.tx" +INCLUDE "text/mapBluesHouse.tx" + +INCBIN "baserom.gbc",$94d5b,$95268 - $94d5b + +_OaksLabText8: ; 0x95268 + db $0, "?", $57 + +INCBIN "baserom.gbc",$9526b,$95ba1 - $9526b + +_ViridianPokeCenterText2: ; 0x95ba1 +_ViridianPokeCenterText1: ; 0x95ba1 + db $0, "You can use that", $4f + db "PC in the corner.", $51 + db "The receptionist", $4f + db "told me. So kind!", $57 + +_ViridianPokeCenterText3: ; 0x95be8 + db $0, "There's a #MON", $4f + db "CENTER in every", $55 + db "town ahead.", $51 + db "They don't charge", $4f + db "any money either!", $57 + +_ViridianMartText1: ; 0x95c36 + db $0, "Okay! Say hi to", $4f + db "PROF.OAK for me!", $57 + +INCBIN "baserom.gbc",$95c58,$95cd5 - $95c58 + +_ViridianMartText2: ; 0x95cd5 + db $0, "This shop sells", $4f + db "many ANTIDOTEs.", $57 + +_ViridianMartText3: ; 0x95cf6 + db $0, "No! POTIONs are", $4f + db "all sold out.", $57 + +_SchoolText1: ; 0x95d15 + db $0, "Whew! I'm trying", $4f + db "to memorize all", $55 + db "my notes.", $57 + +_SchoolText2: ; 0x95d40 + db $0, "Okay!", $51 + db "Be sure to read", $4f + db "the blackboard", $55 + db "carefully!", $57 + +_ViridianHouseText1: ; 0x95d71 + db $0, "Coming up with", $4f + db "nicknames is fun,", $55 + db "but hard.", $51 + db "Simple names are", $4f + db "the easiest to", $55 + db "remember.", $57 + +_ViridianHouseText2: ; 0x95dc7 + db $0, "My Daddy loves", $4f + db "#MON too.", $57 + +INCBIN "baserom.gbc",$95de1,$95df3 - $95de1 + +_ViridianHouseText4: ; 0x95df3 + db $0, "SPEAROW", $4f + db "Name: SPEARY", $57 + +INCBIN "baserom.gbc",$95e09,$96841 - $95e09 + +_MuseumF2Text1: ; 0x96841 + db $0, "MOON STONE?", $51 + db "What's so special", $4f + db "about it?", $57 + +_MuseumF2Text2: ; 0x96869 + db $0, "July 20, 1969!", $51 + db "The 1st lunar", $4f + db "landing!", $51 + db "I bought a color", $4f + db "TV to watch it!", $57 + +_MuseumF2Text3: ; 0x968b1 + db $0, "We have a space", $4f + db "exhibit now.", $57 + +_MuseumF2Text4: ; 0x968cf + db $0, "I want a PIKACHU!", $4f + db "It's so cute!", $51 + db "I asked my Daddy", $4f + db "to catch me one!", $57 + +_MuseumF2Text5: ; 0x96911 + db $0, "Yeah, a PIKACHU", $4f + db "soon, I promise!", $57 + +_MuseumF2Text6: ; 0x96933 + db $0, "SPACE SHUTTLE", $4f + db "COLUMBIA", $57 + +_MuseumF2Text7: ; 0x9694b + db $0, "Meteorite that", $4f + db "fell on MT.MOON.", $55 + db "(MOON STONE?)", $57 + +INCBIN "baserom.gbc",$9697a,$1686 + +SECTION "bank26",DATA,BANK[$26] + +INCBIN "baserom.gbc",$98000,$984ce - $98000 + +_PewterHouse1Text1: ; 0x984ce + db $0, "NIDORAN: Bowbow!@@" + +_PewterHouse1Text2: ; 0x984e1 + db $0, "NIDORAN sit!", $57 + +_PewterHouse1Text3: ; 0x984ef + db $0, "Our #MON's an", $4f + db "outsider, so it's", $55 + db "hard to handle.", $51 + db "An outsider is a", $4f + db "#MON that you", $55 + db "get in a trade.", $51 + db "It grows fast, but", $4f + db "it may ignore an", $55 + db "unskilled trainer", $55 + db "in battle!", $51 + db "If only we had", $4f + db "some BADGEs...", $57 + +INCBIN "baserom.gbc",$985ac,$98656 - $985ac + +_PewterHouse2Text1: ; 0x98656 + db $0, "#MON learn new", $4f + db "techniques as", $55 + db "they grow!", $51 + db "But, some moves", $4f + db "must be taught by", $55 + db "the trainer!", $57 + +_PewterHouse2Text2: ; 0x986ae + db $0, "#MON become", $4f + db "easier to catch", $55 + db "when they are", $55 + db "hurt or asleep!", $51 + db "But, it's not a", $4f + db "sure thing!", $57 + +_PewterPokecenterText1: ; 0x98704 + db $0, "What!?", $51 + db "TEAM ROCKET is", $4f + db "at MT.MOON? Huh?", $55 + db "I'm on the phone!", $51 + db "Scram!", $57 + +INCBIN "baserom.gbc",$98744,$98834 - $98744 + +_CeruleanHouseTrashedText2: ; 0x98834 + db $0, "TEAM ROCKET must", $4f + db "be trying to DIG", $55 + db "their way into no", $55 + db "good!", $57 + +_CeruleanHouseTrashedText3: ; 0x9886f + db $0, "TEAM ROCKET left", $4f + db "a way out!", $57 + +_CeruleanHouse2Text1: ; 0x9888c + db $0, "My husband likes", $4f + db "trading #MON.", $51 + db "If you are a", $4f + db "collector, would", $55 + db "you please trade", $55 + db "with him?", $57 + +_CeruleanPokecenterText1: ; 0x988e5 + db $0, "That BILL!", $51 + db "I heard that", $4f + db "he'll do whatever", $55 + db "it takes to get", $55 + db "rare #MON!", $57 + +_CeruleanPokecenterText3: ; 0x9892a + db $0, "Have you heard", $4f + db "about BILL?", $51 + db "Everyone calls", $4f + db "him a #MANIAC!", $51 + db "I think people", $4f + db "are just jealous", $55 + db "of BILL, though.", $51 + db "Who wouldn't want", $4f + db "to boast about", $55 + db "their #MON?", $57 + +INCBIN "baserom.gbc",$989c1,$99012 - $989c1 + +_CeruleanMartText2: ; 0x99012 + db $0, "Use REPEL to keep", $4f + db "bugs and weak", $55 + db "#MON away.", $51 + db "Put your strongest", $4f + db "#MON at the", $55 + db "top of the list", $55 + db "for best results!", $57 + +_CeruleanMartText3: ; 0x9907f + db $0, "Have you seen any", $4f + db "RARE CANDY?", $51 + db "It's supposed to", $4f + db "make #MON go", $55 + db "up one level!", $57 + +INCBIN "baserom.gbc",$990c9,$9940e - $990c9 + +_LavenderPokecenterText4: +_LavenderPokecenterText2: +_LavenderPokecenterText1: ; 0x9940e + db $0, "TEAM ROCKET will", $4f + db "do anything for", $55 + db "the sake of gold!", $57 + +_LavenderPokecenterText3: ; 0x99442 + db $0, "I saw CUBONE's", $4f + db "mother die trying", $55 + db "to escape from", $55 + db "TEAM ROCKET!", $57 + +_PokemonTower1Text1: ; 0x9947f + db $0, "#MON TOWER was", $4f + db "erected in the", $55 + db "memory of #MON", $55 + db "that had died.", $57 + +_PokemonTower1Text2: ; 0x994bc + db $0, "Did you come to", $4f + db "pay respects?", $55 + db "Bless you!", $57 + +_PokemonTower1Text3: ; 0x994e6 + db $0, "I came to pray", $4f + db "for my CLEFAIRY.", $51 + db "Sniff! I can't", $4f + db "stop crying...", $57 + +_PokemonTower1Text4: ; 0x99524 + db $0, "My GROWLITHE...", $4f + db "Why did you die?", $57 + +_PokemonTower1Text5: ; 0x99546 + db $0, "I am a CHANNELER!", $4f + db "There are spirits", $55 + db "up to mischief!", $57 + +INCBIN "baserom.gbc",$9957b,$9971a - $9957b + +_PokemonTower2Text2: ; 0x9971a + db $0, "Even we could not", $4f + db "identify the", $55 + db "wayward GHOSTs!", $51 + db "A SILPH SCOPE", $4f + db "might be able to", $55 + db "unmask them.", $57 + +INCBIN "baserom.gbc",$99776,$99958 - $99776 + +_PokemonTower5Text1: ; 0x99958 + db $0, "Come, child! I", $4f + db "sealed this space", $55 + db "with white magic!", $51 + db "You can rest here!", $57 + +INCBIN "baserom.gbc",$9999f,$99f72 - $9999f + +_LavenderHouse1Text3: ; 0x99f72 + db $0, "PSYDUCK: Gwappa!@@" + +_LavenderHouse1Text4: ; 0x99f85 + db $0, "NIDORINO: Gaoo!@@" + +INCBIN "baserom.gbc",$99f97,$9a0aa - $99f97 + +_LavenderHouse1Text6: ; 0x9a0aa + db $0, "#MON Monthly", $4f + db "Grand Prize", $55 + db "Drawing!", $51 + db "The application", $4f + db "form is...", $51 + db "Gone! It's been", $4f + db "clipped out!", $57 + +_LavenderMartText2: ; 0x9a104 + db $0, "I'm searching for", $4f + db "items that raise", $55 + db "the abilities of", $55 + db "#MON during a", $55 + db "single battle.", $51 + db "X ATTACK, X", $4f + db "DEFEND, X SPEED", $55 + db "and X SPECIAL are", $55 + db "what I'm after.", $51 + db "Do you know where", $4f + db "I can get them?", $57 + +INCBIN "baserom.gbc",$9a1b4,$9a238 - $9a1b4 + +_LavenderHouse2Text1: ; 0x9a238 + db $0, "CUBONE: Kyarugoo!@@" + +INCBIN "baserom.gbc",$9a24c,$266 + +_VermilionPokecenterText2: ; 0x9a4b2 +_VermilionPokecenterText1: ; 0x9a4b2 + db $0, "Even if they are", $4f + db "the same level,", $55 + db "#MON can have", $55 + db "very different", $55 + db "abilities.", $51 + db "A #MON raised", $4f + db "by a trainer is", $55 + db "stronger than one", $55 + db "in the wild.", $57 + +_VermilionPokecenterText3: ; 0x9a539 + db $0, "My #MON was", $4f + db "poisoned! It", $55 + db "fainted while we", $55 + db "were walking!", $57 + +INCBIN "baserom.gbc",$9a572,$9a948 - $9a572 + +_FanClubText6: ; 0x9a948 + db $0, "Our Chairman is", $4f + db "very vocal about", $55 + db "#MON.", $57 + +_FanClubText7: ; 0x9a970 + db $0, "Let's all listen", $4f + db "politely to other", $55 + db "trainers!", $57 + +_FanClubText8: ; 0x9a99d + db $0, "If someone brags,", $4f + db "brag right back!", $57 + +_VermilionMartText2: ; 0x9a9c1 + db $0, "There are evil", $4f + db "people who will", $55 + db "use #MON for", $55 + db "criminal acts.", $51 + db "TEAM ROCKET", $4f + db "traffics in rare", $55 + db "#MON.", $51 + db "They also abandon", $4f + db "#MON that they", $55 + db "consider not to", $55 + db "be popular or", $55 + db "useful.", $57 + +_VermilionMartText3: ; 0x9aa67 + db $0, "I think #MON", $4f + db "can be good or", $55 + db "evil. It depends", $55 + db "on the trainer.", $57 + +INCBIN "baserom.gbc",$9aaa5,$155b + +SECTION "bank27",DATA,BANK[$27] +INCBIN "baserom.gbc",$9c000,$9c449 - $9c000 + +_VermilionHouse1Text1: ; 0x9c449 + db $0, "I'm getting my", $4f + db "PIDGEY to fly a", $55 + db "letter to SAFFRON", $55 + db "in the north!", $57 + +_VermilionHouse1Text2: ; 0x9c488 + db $0, "PIDGEY: Kurukkoo!@@" + +_VermilionHouse1Text3: ; 0x9c49c + db $0, "Dear PIPPI, I hope", $4f + db "to see you soon.", $51 + db "I heard SAFFRON", $4f + db "has problems with", $55 + db "TEAM ROCKET.", $51 + db "VERMILION appears", $4f + db "to be safe.", $57 + +INCBIN "baserom.gbc",$9c50e,$9c672 - $9c50e + +_CeladonMart1Text1: ; 0x9c672 + db $0, "Hello! Welcome to", $4f + db "CELADON DEPT.", $55 + db "STORE.", $51 + db "The board on the", $4f + db "right describes", $55 + db "the store layout.", $57 + +_CeladonMart1Text2: ; 0x9c6cd + db $0, "1F: SERVICE", $4f + db " COUNTER", $51 + db "2F: TRAINER'S", $4f + db " MARKET", $51 + db "3F: TV GAME SHOP", $51 + db "4F: WISEMAN GIFTS", $51 + db "5F: DRUG STORE", $51 + db "ROOFTOP SQUARE:", $4f + db "VENDING MACHINES", $57 + +_CeladonMart1Text3: ; 0x9c752 + db $0, "1F: SERVICE", $4f + db " COUNTER", $57 + +_CeladonMart2Text3: ; 0x9c76b + db $0, "SUPER REPEL keeps", $4f + db "weak #MON at", $55 + db "bay...", $51 + db "Hmm, it's a more", $4f + db "powerful REPEL!", $57 + +_CeladonMart2Text4: ; 0x9c7b2 + db $0, "For long outings,", $4f + db "you should buy", $55 + db "REVIVE.", $57 + +_CeladonMart2Text5: ; 0x9c7dc + db $0, "Top Grade Items", $4f + db "for Trainers!", $51 + db "2F: TRAINER'S", $4f + db " MARKET", $57 + +INCBIN "baserom.gbc",$9c814,$9c8c7 - $9c814 + +_CeladonMart3Text2: ; 0x9c8c7 + db $0, "Captured #MON", $4f + db "are registered", $55 + db "with an ID No.", $55 + db "and OT, the name", $55 + db "of the Original", $55 + db "Trainer that", $55 + db "caught it!", $57 + +_CeladonMart3Text3: ; 0x9c92d + db $0, "All right!", $51 + db "My buddy's going", $4f + db "to trade me his", $55 + db "KANGASKHAN for my", $55 + db "GRAVELER!", $57 + +_CeladonMart3Text4: ; 0x9c975 + db $0, "Come on GRAVELER!", $51 + db "I love GRAVELER!", $4f + db "I collect them!", $51 + db "Huh?", $51 + db "GRAVELER turned", $4f + db "into a different", $55 + db "#MON!", $57 + +_CeladonMart3Text5: ; 0x9c9d5 + db $0, "You can identify", $4f + db "#MON you got", $55 + db "in trades by", $55 + db "their ID Numbers!", $57 + +_CeladonMart3Text6: ; 0x9ca13 + db $0, "It's an SNES!", $57 + +_CeladonMart3Text7: ; 0x9ca21 + db $0, "An RPG! There's", $4f + db "no time for that!", $57 + +_CeladonMart3Text9: ; 0x9ca43 + db $0, "A sports game!", $4f + db "Dad'll like that!", $57 + +_CeladonMart3Text11: ; 0x9ca64 + db $0, "A puzzle game!", $4f + db "Looks addictive!", $57 + +_CeladonMart3Text13: ; 0x9ca85 + db $0, "A fighting game!", $4f + db "Looks tough!", $57 + +_CeladonMart3Text14: ; 0x9caa4 + db $0, "3F: TV GAME SHOP", $57 + +_CeladonMart3Text15: ; 0x9cab6 + db $0, "Red and Blue!", $4f + db "Both are #MON!", $57 + +_CeladonMart4Text2: ; 0x9cad4 + db $0, "I'm getting a", $4f + db "# DOLL for my", $55 + db "girl friend!", $57 + +_CeladonMart4Text3: ; 0x9cafd + db $0, "I heard something", $4f + db "useful.", $51 + db "You can run from", $4f + db "wild #MON by", $55 + db "distracting them", $55 + db "with a # DOLL!", $57 + +_CeladonMart4Text4: ; 0x9cb56 + db $0, "Express yourself", $4f + db "with gifts!", $51 + db "4F: WISEMAN GIFTS", $51 + db "Evolution Special!", $4f + db "Element STONEs on", $55 + db "sale now!", $57 + +INCBIN "baserom.gbc",$9cbb5,$9cd97 - $9cbb5 + +_CeladonMartRoofText1: ; 0x9cd97 + db $0, "My sister is a", $4f + db "trainer, believe", $55 + db "it or not.", $51 + db "But, she's so", $4f + db "immature, she", $55 + db "drives me nuts!", $57 + +INCBIN "baserom.gbc",$9cdee,$9ce50 - $9cdee + +_CeladonMartRoofText6: ; 0x9ce50 + db $0, "ROOFTOP SQUARE:", $4f + db "VENDING MACHINES", $57 + +INCBIN "baserom.gbc",$9ce72,$9ceee - $9ce72 + +_CeladonMansion1Text1: ; 0x9ceee + db $0, "MEOWTH: Meow!@@" + +_CeladonMansion1Text2: ; 0x9cefe + db $0, "My dear #MON", $4f + db "keep me company.", $51 + db "MEOWTH even brings", $4f + db "money home!", $57 + +_CeladonMansion1Text3: ; 0x9cf3c + db $0, "CLEFAIRY: Pi", $4f + db "pippippi!@@" + +_CeladonMansion1Text4: ; 0x9cf55 + db $0, "NIDORAN: Kya", $4f + db "kyaoo!@@" + +_CeladonMansion1Text5: ; 0x9cf6b + db $0, "CELADON MANSION", $4f + db "Manager's Suite", $57 + +_CeladonMansion2Text1: ; 0x9cf8b + db $0, "GAME FREAK", $4f + db "Meeting Room", $57 + +_CeladonMansion3Text1: ; 0x9cfa4 + db $0, "Me? I'm the", $4f + db "programmer!", $57 + +_CeladonMansion3Text2: ; 0x9cfbc + db $0, "I'm the graphic", $4f + db "artist!", $55 + db "I drew you!", $57 + +_CeladonMansion3Text3: ; 0x9cfe0 + db $0, "I wrote the story!", $4f + db "Isn't ERIKA cute?", $51 + db "I like MISTY a", $4f + db "lot too!", $51 + db "Oh, and SABRINA,", $4f + db "I like her!", $57 + +INCBIN "baserom.gbc",$9d03a,$9d0ed - $9d03a + +_CeladonMansion3Text5: ; 0x9d0ed + db $0, "It's the game", $4f + db "program! Messing", $55 + db "with it could bug", $55 + db "out the game!", $57 + +_CeladonMansion3Text6: ; 0x9d12c + db $0, "Someone's playing", $4f + db "a game instead of", $55 + db "working!", $57 + +_CeladonMansion3Text7: ; 0x9d159 + db $0, "It's the script!", $4f + db "Better not look", $55 + db "at the ending!", $57 + +_CeladonMansion3Text8: ; 0x9d189 + db $0, "GAME FREAK", $4f + db "Development Room", $57 + +_CeladonMansion4Text1: ; 0x9d1a6 + db $0, "I KNOW EVERYTHING!", $57 + +_CeladonMansion5Text1: ; 0x9d1ba + db $0, "I know everything", $4f + db "about the world", $55 + db "of #MON in", $55 + db "your GAME BOY!", $51 + db "Get together with", $4f + db "your friends and", $55 + db "trade #MON!", $57 + +_CeladonPokecenterText1: ; 0x9d226 + db $0, "# FLUTE awakens", $4f + db "#MON with a", $55 + db "sound that only", $55 + db "they can hear!", $57 + +_CeladonPokecenterText3: ; 0x9d262 + db $0, "I rode uphill on", $4f + db "CYCLING ROAD from", $55 + db "FUCHSIA!", $57 + +INCBIN "baserom.gbc",$9d28f,$9d8d5 - $9d28f + +_CeladonGameCornerText1: ; 0x9d8d5 + db $0, "Welcome!", $51 + db "You can exchange", $4f + db "your coins for", $55 + db "fabulous prizes", $55 + db "next door.", $57 + +INCBIN "baserom.gbc",$9d91a,$9da1c - $9d91a + +_CeladonGameCornerText3: ; 0x9da1c + db $0, "Keep this quiet.", $51 + db "It's rumored that", $4f + db "this place is run", $55 + db "by TEAM ROCKET.", $57 + +_CeladonGameCornerText4: ; 0x9da61 + db $0, "I think these", $4f + db "machines have", $55 + db "different odds.", $57 + +INCBIN "baserom.gbc",$9da8e,$9daf4 - $9da8e + +_CeladonGameCornerText6: ; 0x9daf4 + db $0, "I'm having a", $4f + db "wonderful time!", $57 + +INCBIN "baserom.gbc",$9db11,$9dc06 - $9db11 + +_CeladonGameCornerText8: ; 0x9dc06 + db $0, "Games are scary!", $4f + db "It's so easy to", $55 + db "get hooked!", $57 + +INCBIN "baserom.gbc",$9dc33,$9ddff - $9dc33 + +_CeladonMart5Text1: ; 0x9ddff + db $0, "#MON ability", $4f + db "enhancers can be", $55 + db "bought only here.", $51 + db "Use CALCIUM to", $4f + db "increase SPECIAL", $55 + db "abilities.", $51 + db "Use CARBOS to", $4f + db "increase SPEED.", $57 + +_CeladonMart5Text2: ; 0x9de79 + db $0, "I'm here for", $4f + db "#MON ability", $55 + db "enhancers.", $51 + db "PROTEIN increases", $4f + db "ATTACK power.", $51 + db "IRON increases", $4f + db "DEFENSE!", $57 + +_CeladonMart5Text5: ; 0x9ded6 + db $0, "5F: DRUG STORE", $57 + +_CeladonPrizeRoomText1: ; 0x9dee6 + db $0, "I sure do fancy", $4f + db "that PORYGON!", $51 + db "But, it's hard to", $4f + db "win at slots!", $57 + +_CeladonPrizeRoomText2: ; 0x9df24 + db $0, "I had a major", $4f + db "haul today!", $57 + +_CeladonDinerText1: ; 0x9df3f + db $0, "Hi!", $51 + db "We're taking a", $4f + db "break now.", $57 + +_CeladonDinerText2: ; 0x9df5d + db $0, "My #MON are", $4f + db "weak, so I often", $55 + db "have to go to the", $55 + db "DRUG STORE.", $57 + +_CeladonDinerText3: ; 0x9df99 + db $0, "Psst! There's a", $4f + db "basement under", $55 + db "the GAME CORNER.", $57 + +_CeladonDinerText4: ; 0x9dfc9 + db $0, "Munch...", $51 + db "The man at that", $4f + db "table lost it all", $55 + db "at the slots.", $57 + +INCBIN "baserom.gbc",$9e003,$9e0d5 - $9e003 + +_CeladonHouseText1: ; 0x9e0d5 + db $0, "Hehehe! The slots", $4f + db "just reel in the", $55 + db "dough, big time!", $57 + +_CeladonHouseText2: ; 0x9e10a + db $0, "CHIEF!", $51 + db "We just shipped", $4f + db "2000 #MON as", $55 + db "slot prizes!", $57 + +_CeladonHouseText3: ; 0x9e13c + db $0, "Don't touch the", $4f + db "poster at the", $55 + db "GAME CORNER!", $51 + db "There's no secret", $4f + db "switch behind it!", $57 + +_CeladonHotelText1: ; 0x9e18a + db $0, "#MON? No, this", $4f + db "is a hotel for", $55 + db "people.", $51 + db "We're full up.", $57 + +_CeladonHotelText2: ; 0x9e1bf + db $0, "I'm on vacation", $4f + db "with my brother", $55 + db "and boy friend.", $51 + db "CELADON is such a", $4f + db "pretty city!", $57 + +_CeladonHotelText3: ; 0x9e20e + db $0, "Why did she bring", $4f + db "her brother?", $57 + +_FuchsiaMartText2: ; 0x9e22e + db $0, "Do you have a", $4f + db "SAFARI ZONE flag?", $51 + db "What about cards", $4f + db "or calendars?", $57 + +_FuchsiaMartText3: ; 0x9e26e + db $0, "Did you try X", $4f + db "SPEED? It speeds", $55 + db "up a #MON in", $55 + db "battle!", $57 + +_FuchsiaHouse1Text1: ; 0x9e2a3 + db $0, "SAFARI ZONE's", $4f + db "WARDEN is old,", $55 + db "but still active!", $51 + db "All his teeth are", $4f + db "false, though.", $57 + +_FuchsiaHouse1Text2: ; 0x9e2f3 + db $0, "Hmm? You've met", $4f + db "BILL?", $51 + db "He's my grandson!", $51 + db "He always liked", $4f + db "collecting things", $55 + db "even as a child!", $57 + +_FuchsiaHouse1Text3: ; 0x9e34d + db $0, "BILL files his", $4f + db "own #MON data", $55 + db "on his PC!", $51 + db "Did he show you?", $57 + +_FuchsiaPokecenterText1: ; 0x9e387 + db $0, "You can't win", $4f + db "with just one", $55 + db "strong #MON.", $51 + db "It's tough, but", $4f + db "you have to raise", $55 + db "them evenly.", $57 + +_FuchsiaPokecenterText3: ; 0x9e3de + db $0, "There's a narrow", $4f + db "trail west of", $55 + db "VIRIDIAN CITY.", $51 + db "It goes to #MON", $4f + db "LEAGUE HQ.", $55 + db "The HQ governs", $55 + db "all trainers.", $57 + +INCBIN "baserom.gbc",$9e444,$9e6c7 - $9e444 + +_SafariZoneEntranceText1: ; 0x9e6c7 + db $0, "Welcome to the", $4f + db "SAFARI ZONE!", $57 + +INCBIN "baserom.gbc",$9e6e4,$191c + +SECTION "bank28",DATA,BANK[$28] + +INCBIN "baserom.gbc",$a0000,$a05a1 - $a0000 + +_FuchsiaMeetingRoomText1: ; 0xa05a1 + db $0, "We nicknamed the", $4f + db "WARDEN SLOWPOKE.", $51 + db "He and SLOWPOKE", $4f + db "both look vacant!", $57 + +_FuchsiaMeetingRoomText2: ; 0xa05e6 + db $0, "SLOWPOKE is very", $4f + db "knowledgeable", $55 + db "about #MON!", $51 + db "He even has some", $4f + db "fossils of rare,", $55 + db "extinct #MON!", $57 + +_FuchsiaMeetingRoomText3: ; 0xa0642 + db $0, "SLOWPOKE came in,", $4f + db "but I couldn't", $55 + db "understand him.", $51 + db "I think he's got", $4f + db "a speech problem!", $57 + +INCBIN "baserom.gbc",$a0695,$a0df7 - $a0695 + +_Lab1Text1: ; 0xa0df7 + db $0, "We study #MON", $4f + db "extensively here.", $51 + db "People often bring", $4f + db "us rare #MON", $55 + db "for examination.", $57 + +_Lab1Text2: ; 0xa0e49 + db $0, "A photo of the", $4f + db "LAB's founder,", $55 + db "DR.FUJI!", $57 + +_Lab1Text3: ; 0xa0e70 + db $0, "#MON LAB", $4f + db "Meeting Room", $57 + +_Lab1Text4: ; 0xa0e87 + db $0, "#MON LAB", $4f + db "R-and-D Room", $57 + +_Lab1Text5: ; 0xa0e9e + db $0, "#MON LAB", $4f + db "Testing Room", $57 + +_Lab2Text1: ; 0xa0eb5 + db $0, "I found this very", $4f + db "strange fossil in", $55 + db "MT.MOON!", $51 + db "I think it's a", $4f + db "rare, prehistoric", $55 + db "#MON!", $57 + +INCBIN "baserom.gbc",$a0f09,$a0fe3 - $a0f09 + +_Lab3Text2: ; 0xa0fe3 + db $0, "EEVEE can evolve", $4f + db "into 1 of 3 kinds", $55 + db "of #MON.", $57 + +_Lab3Text3: ; 0xa1010 + db $0, "There's an e-mail", $4f + db "message!", $51 + db "...", $51 + db "The 3 legendary", $4f + db "bird #MON are", $55 + db "ARTICUNO, ZAPDOS", $55 + db "and MOLTRES.", $51 + db "Their whereabouts", $4f + db "are unknown.", $51 + db "We plan to explore", $4f + db "the cavern close", $55 + db "to CERULEAN.", $51 + db "From: #MON", $4f + db "RESEARCH TEAM", $51 + db "...", $57 + +_Lab3Text5: ; 0xa10d8 + db $0, "An amber pipe!", $57 + +INCBIN "baserom.gbc",$a10e8,$a12de - $a10e8 + +_CinnabarPokecenterText2: +_CinnabarPokecenterText1: ; 0xa12de + db $0, "You can cancel", $4f + db "evolution.", $51 + db "When a #MON is", $4f + db "evolving, you can", $55 + db "stop it and leave", $55 + db "it the way it is.", $57 + +_CinnabarPokecenterText3: ; 0xa133e + db $0, "Do you have any", $4f + db "friends?", $51 + db "#MON you get", $4f + db "in trades grow", $55 + db "very quickly.", $51 + db "I think it's", $4f + db "worth a try!", $57 + +_CinnabarMartText2: ; 0xa139b + db $0, "Don't they have X", $4f + db "ATTACK? It's good", $55 + db "for battles!", $57 + +_CinnabarMartText3: ; 0xa13cb + db $0, "It never hurts to", $4f + db "have extra items!", $57 + +_IndigoPlateauLobbyText1: ; 0xa13f0 + db $0, "Yo! Champ in", $4f + db "making!", $51 + db "At #MON LEAGUE,", $4f + db "you have to face", $55 + db "the ELITE FOUR in", $55 + db "succession.", $51 + db "If you lose, you", $4f + db "have to start all", $55 + db "over again! This", $55 + db "is it! Go for it!", $57 + +_IndigoPlateauLobbyText3: ; 0xa148b + db $0, "From here on, you", $4f + db "face the ELITE", $55 + db "FOUR one by one!", $51 + db "If you win, a", $4f + db "door opens to the", $55 + db "next trainer!", $55 + db "Good luck!", $57 + +_CopycatsHouseF1Text1: ; 0xa14f7 + db $0, "My daughter is so", $4f + db "self-centered.", $55 + db "She only has a", $55 + db "few friends.", $57 + +_CopycatsHouseF1Text2: ; 0xa1535 + db $0, "My daughter likes", $4f + db "to mimic people.", $51 + db "Her mimicry has", $4f + db "earned her the", $55 + db "nickname COPYCAT", $55 + db "around here!", $57 + +_CopycatsHouseF1Text3: ; 0xa1596 + db $0, "CHANSEY: Chaan!", $4f + db "Sii!@@" + +INCBIN "baserom.gbc",$a15ad,$a1749 - $a15ad + +_CopycatsHouseF2Text2: ; 0xa1749 + db $0, "DODUO: Giiih!", $51 + db "MIRROR MIRROR ON", $4f + db "THE WALL, WHO IS", $55 + db "THE FAIREST ONE", $55 + db "OF ALL?", $57 + +_CopycatsHouseF2Text3: ; 0xa1792 + db $0, "This is a rare", $4f + db "#MON! Huh?", $55 + db "It's only a doll!", $57 + +_CopycatsHouseF2Text6: ; 0xa17be + db $0, "A game with MARIO", $4f + db "wearing a bucket", $55 + db "on his head!", $57 + +INCBIN "baserom.gbc",$a17ef,$a2305 - $a17ef + +_SaffronHouse1Text1: ; 0xa2305 + db $0, "Thank you for", $4f + db "writing. I hope", $55 + db "to see you soon!", $51 + db "Hey! Don't look", $4f + db "at my letter!", $57 + +_SaffronHouse1Text2: ; 0xa2352 + db $0, "PIDGEY: Kurukkoo!@@" + +_SaffronHouse1Text3: ; 0xa2366 + db $0, "The COPYCAT is", $4f + db "cute! I'm getting", $55 + db "her a # DOLL!", $57 + +_SaffronHouse1Text4: ; 0xa2395 + db $0, "I was given a PP", $4f + db "UP as a gift.", $51 + db "It's used for", $4f + db "increasing the PP", $55 + db "of techniques!", $57 + +_SaffronMartText2: ; 0xa23e3 + db $0, "MAX REPEL lasts", $4f + db "longer than SUPER", $55 + db "REPEL for keeping", $55 + db "weaker #MON", $55 + db "away!", $57 + +_SaffronMartText3: ; 0xa242a + db $0, "REVIVE is costly,", $4f + db "but it revives", $55 + db "fainted #MON!", $57 + +_SilphCo1Text1: ; 0xa245a + db $0, "Welcome!", $51 + db "The PRESIDENT is", $4f + db "in the boardroom", $55 + db "on 11F!", $57 + +_SaffronPokecenterText1: ; 0xa248e + db $0, "#MON growth", $4f + db "rates differ from", $55 + db "specie to specie.", $57 + +_SaffronPokecenterText3: ; 0xa24bf + db $0, "SILPH CO. is very", $4f + db "famous. That's", $55 + db "why it attracted", $55 + db "TEAM ROCKET!", $57 + +INCBIN "baserom.gbc",$a24fe,$1b02 + +SECTION "bank29",DATA,BANK[$29] + +INCBIN "baserom.gbc",$A4000,$245 + +INCLUDE "text/mapPalletTown.tx" + +_ViridianCityText1: + db $0, "Those # BALLs", $4f + db "at your waist!", $55 + db "You have #MON!", $51 + db "It's great that", $4f + db "you can carry and", $55 + db "use #MON any", $55 + db "time, anywhere!", $57 + +INCBIN "baserom.gbc",$a4437,$a4833 - $a4437 + +_ViridianCityText8: ; 0xa4833 + db $0, "VIRIDIAN CITY ", $4f + db "The Eternally", $55 + db "Green Paradise", $57 + +_ViridianCityText9: ; 0xa4860 + db $0, "TRAINER TIPS", $51 + db "Catch #MON", $4f + db "and expand your", $55 + db "collection!", $51 + db "The more you have,", $4f + db "the easier it is", $55 + db "to fight!", $57 + +_ViridianCityText10: ; 0xa48c3 + db $0, "TRAINER TIPS", $51 + db "The battle moves", $4f + db "of #MON are", $55 + db "limited by their", $55 + db "POWER POINTs, PP.", $51 + db "To replenish PP,", $4f + db "rest your tired", $55 + db "#MON at a", $55 + db "#MON CENTER!", $57 + +_ViridianCityText13: ; 0xa4949 + db $0, "VIRIDIAN CITY", $4f + db "#MON GYM", $57 + +INCBIN "baserom.gbc",$a4961,$a497f - $a4961 + +_PewterCityText1: ; 0xa497f + db $0, "It's rumored that", $4f + db "CLEFAIRYs came", $55 + db "from the moon!", $51 + db "They appeared ", $4f + db "after MOON STONE", $55 + db "fell on MT.MOON.", $57 + +_PewterCityText2: ; 0xa49e0 + db $0, "There aren't many", $4f + db "serious #MON", $55 + db "trainers here!", $51 + db "They're all like", $4f + db "BUG CATCHERs,", $55 + db "but PEWTER GYM's", $55 + db "BROCK is totally", $55 + db "into it!", $57 + +INCBIN "baserom.gbc",$a4a56,$a4bfe - $a4a56 + +_PewterCityText6: ; 0xa4bfe + db $0, "TRAINER TIPS", $51 + db "Any #MON that", $4f + db "takes part in", $55 + db "battle, however", $55 + db "short, earns EXP!", $57 + +_PewterCityText7: ; 0xa4c4a + db $0, "NOTICE!", $51 + db "Thieves have been", $4f + db "stealing #MON", $55 + db "fossils at MT.", $55 + db "MOON! Please call", $55 + db "PEWTER POLICE", $55 + db "with any info!", $57 + +_PewterCityText10: ; 0xa4cb1 + db $0, "PEWTER MUSEUM", $4f + db "OF SCIENCE", $57 + +_PewterCityText11: ; 0xa4ccb + db $0, "PEWTER CITY", $4f + db "#MON GYM", $55 + db "LEADER: BROCK", $51 + db "The Rock Solid", $4f + db "#MON Trainer!", $57 + +_PewterCityText12: ; 0xa4d0c + db $0, "PEWTER CITY", $4f + db "A Stone Gray", $55 + db "City", $57 + +INCBIN "baserom.gbc",$a4d2b,$a5030 - $a4d2b + +_CeruleanCityText3: ; 0xa5030 + db $0, "You're a trainer", $4f + db "too? Collecting,", $55 + db "fighting, it's a", $55 + db "tough life.", $57 + +_CeruleanCityText4: ; 0xa506e + db $0, "That bush in", $4f + db "front of the shop", $55 + db "is in the way.", $51 + db "There might be a", $4f + db "way around.", $57 + +_CeruleanCityText5: ; 0xa50ba + db $0, "You're making an", $4f + db "encyclopedia on", $55 + db "#MON? That", $55 + db "sounds amusing.", $57 + +_CeruleanCityText6: ; 0xa50f6 + db $0, "The people here", $4f + db "were robbed.", $51 + db "It's obvious that", $4f + db "TEAM ROCKET is", $55 + db "behind this most", $55 + db "heinous crime!", $51 + db "Even our POLICE", $4f + db "force has trouble", $55 + db "with the ROCKETs!", $57 + +INCBIN "baserom.gbc",$a5188,$a52d6 - $a5188 + +_CeruleanCityText9: ; 0xa52d6 + db $0, "I want a bright", $4f + db "red BICYCLE!", $51 + db "I'll keep it at", $4f + db "home, so it won't", $55 + db "get dirty!", $57 + +_CeruleanCityText10: ; 0xa531f + db $0, "This is CERULEAN", $4f + db "CAVE! Horribly", $55 + db "strong #MON", $55 + db "live in there!", $51 + db "The #MON LEAGUE", $4f + db "champion is the", $55 + db "only person who", $55 + db "is allowed in!", $57 + +_CeruleanCityText12: ; 0xa539a + db $0, "CERULEAN CITY", $4f + db "A Mysterious,", $55 + db "Blue Aura", $55 + db "Surrounds It", $57 + +_CeruleanCityText13: ; 0xa53ce + db $0, "TRAINER TIPS", $51 + db "Pressing B Button", $4f + db "during evolution", $55 + db "cancels the whole", $55 + db "process.", $57 + +_CeruleanCityText16: ; 0xa541a + db $0, "Grass and caves", $4f + db "handled easily!", $55 + db "BIKE SHOP", $57 + +_CeruleanCityText17: ; 0xa5445 + db $0, "CERULEAN CITY", $4f + db "#MON GYM", $55 + db "LEADER: MISTY", $51 + db "The Tomboyish", $4f + db "Mermaid!", $57 + +INCBIN "baserom.gbc",$a5482,$a5506 - $a5482 + +_LavenderTownText2: ; 0xa5506 + db $0, "This town is known", $4f + db "as the grave site", $55 + db "of #MON.", $51 + db "Memorial services", $4f + db "are held in", $55 + db "#MON TOWER.", $57 + +_LavenderTownText3: ; 0xa555f + db $0, "GHOSTs appeared", $4f + db "in #MON TOWER.", $51 + db "I think they're", $4f + db "the spirits of", $55 + db "#MON that the", $55 + db "ROCKETs killed.", $57 + +_LavenderTownText4: ; 0xa55bb + db $0, "LAVENDER TOWN", $4f + db "The Noble Purple", $55 + db "Town", $57 + +_LavenderTownText5: ; 0xa55e0 + db $0, "New SILPH SCOPE!", $51 + db "Make the Invisible", $4f + db "Plain to See!", $51 + db "SILPH CO.", $57 + +_LavenderTownText8: ; 0xa561d + db $0, "LAVENDER VOLUNTEER", $4f + db "#MON HOUSE", $57 + +_LavenderTownText9: ; 0xa563c + db $0, "May the Souls of", $4f + db "#MON Rest Easy", $55 + db "#MON TOWER", $57 + +_VermilionCityText1: ; 0xa5668 + db $0, "We're careful", $4f + db "about pollution!", $51 + db "We've heard GRIMER", $4f + db "multiplies in", $55 + db "toxic sludge!", $57 + +INCBIN "baserom.gbc",$a56b5,$a5805 - $a56b5 + +_VermilionCityText4: ; 0xa5805 + db $0, "I'm putting up a", $4f + db "building on this", $55 + db "plot of land.", $51 + db "My #MON is", $4f + db "tamping the land.", $57 + +_VermilionCityText5: ; 0xa5852 + db $0, "MACHOP: Guoh!", $4f + db "Gogogoh!@@" + +INCBIN "baserom.gbc",$a586b,$a5891 - $a586b + +_VermilionCityText6: ; 0xa5891 + db $0, "S.S.ANNE is a", $4f + db "famous luxury", $55 + db "cruise ship.", $51 + db "We visit VERMILION", $4f + db "once a year.", $57 + +_VermilionCityText7: ; 0xa58db + db $0, "VERMILION CITY", $4f + db "The Port of", $55 + db "Exquisite Sunsets", $57 + +_VermilionCityText8: ; 0xa5909 + db $0, "NOTICE!", $51 + db "ROUTE 12 may be", $4f + db "blocked off by a", $55 + db "sleeping #MON.", $51 + db "Detour through", $4f + db "ROCK TUNNEL to", $55 + db "LAVENDER TOWN.", $51 + db "VERMILION POLICE", $57 + +_VermilionCityText11: ; 0xa5980 + db $0, "#MON FAN CLUB", $4f + db "All #MON fans", $55 + db "welcome!", $57 + +_VermilionCityText12: ; 0xa59a6 + db $0, "VERMILION CITY", $4f + db "#MON GYM", $55 + db "LEADER: LT.SURGE", $51 + db "The Lightning ", $4f + db "American!", $57 + +_VermilionCityText13: ; 0xa59e9 + db $0, "VERMILION HARBOR", $57 + +_CeladonCityText1: ; 0xa59fb + db $0, "I got my KOFFING", $4f + db "in CINNABAR!", $51 + db "It's nice, but it", $4f + db "breathes poison", $55 + db "when it's angry!", $57 + +_CeladonCityText2: ; 0xa5a4b + db $0, "Heheh! This GYM", $4f + db "is great! It's", $55 + db "full of women!", $57 + +_CeladonCityText3: ; 0xa5a79 + db $0, "The GAME CORNER", $4f + db "is bad for our", $55 + db "city's image!", $57 + +_CeladonCityText4: ; 0xa5aa6 + db $0, "Moan! I blew it", $4f + db "all at the slots!", $51 + db "I knew I should", $4f + db "have cashed in my", $55 + db "coins for prizes!", $57 + +INCBIN "baserom.gbc",$a5afd,$a5bd9 - $a5afd + +_CeladonCityText6: ; 0xa5bd9 + db $0, "This is my trusted", $4f + db "pal, POLIWRATH!", $51 + db "It evolved from", $4f + db "POLIWHIRL when I", $55 + db "used WATER STONE!", $57 + +_CeladonCityText7: ; 0xa5c30 + db $0, "POLIWRATH: Ribi", $4f + db "ribit!@@" + +_CeladonCityText8: ; 0xa5c49 + db $0, "What are you", $4f + db "staring at?", $57 + +_CeladonCityText9: ; 0xa5c63 + db $0, "Keep out of TEAM", $4f + db "ROCKET's way!", $57 + +_CeladonCityText10: ; 0xa5c82 + db $0, "TRAINER TIPS", $51 + db "X ACCURACY boosts", $4f + db "the accuracy of", $55 + db "techniques!", $51 + db "DIRE HIT jacks up", $4f + db "the likelihood of", $55 + db "critical hits!", $51 + db "Get your items at", $4f + db "CELADON DEPT.", $55 + db "STORE!", $57 + +_CeladonCityText11: ; 0xa5d18 + db $0, "CELADON CITY", $4f + db "The City of", $55 + db "Rainbow Dreams", $57 + +_CeladonCityText13: ; 0xa5d41 + db $0, "CELADON CITY", $4f + db "#MON GYM", $55 + db "LEADER: ERIKA", $51 + db "The Nature Loving", $4f + db "Princess!", $57 + +_CeladonCityText14: ; 0xa5d82 + db $0, "CELADON MANSION", $57 + +_CeladonCityText15: ; 0xa5d93 + db $0, "Find what you", $4f + db "need at CELADON", $55 + db "DEPT. STORE!", $57 + +_CeladonCityText16: ; 0xa5dbf + db $0, "TRAINER TIPS", $51 + db "GUARD SPEC.", $4f + db "protects #MON", $55 + db "against SPECIAL", $55 + db "attacks such as", $55 + db "fire and water!", $51 + db "Get your items at", $4f + db "CELADON DEPT.", $55 + db "STORE!", $57 + +_CeladonCityText17: ; 0xa5e3e + db $0, "Coins exchanged", $4f + db "for prizes!", $55 + db "PRIZE EXCHANGE", $57 + +_CeladonCityText18: ; 0xa5e6a + db $0, "ROCKET GAME CORNER", $4f + db "The playground", $55 + db "for grown-ups!", $57 + +_FuchsiaCityText1: ; 0xa5e9c + db $0, "Did you try the", $4f + db "SAFARI GAME? Some", $55 + db "#MON can only", $55 + db "be caught there.", $57 + +_FuchsiaCityText2: ; 0xa5ede + db $0, "SAFARI ZONE has a", $4f + db "zoo in front of", $55 + db "the entrance.", $51 + db "Out back is the", $4f + db "SAFARI GAME for", $55 + db "catching #MON.", $57 + +_FuchsiaCityText3: ; 0xa5f3e + db $0, "ERIK: Where's", $4f + db "SARA? I said I'd", $55 + db "meet her here.", $57 + +_FuchsiaCityText4: ; 0xa5f6b + db $0, "That item ball in", $4f + db "there is really a", $55 + db "#MON.", $57 + +_FuchsiaCityText5: ; 0xa5f96 + db $0, "!", $57 + +_FuchsiaCityText11: ; 0xa5f99 + db $0, "FUCHSIA CITY", $4f + db "Behold! It's", $55 + db "Passion Pink!", $57 + +_FuchsiaCityText13: ; 0xa5fc1 + db $0, "SAFARI GAME", $4f + db "#MON-U-CATCH!", $57 + +_FuchsiaCityText16: ; 0xa5fdc + db $0, "SAFARI ZONE", $4f + db "WARDEN's HOME", $57 + +_FuchsiaCityText17: ; 0xa5ff6 + db $0, "#MON PARADISE", $4f + db "SAFARI ZONE", $57 + +_FuchsiaCityText18: ; 0xa6011 + db $0, "FUCHSIA CITY", $4f + db "#MON GYM", $55 + db "LEADER: KOGA", $51 + db "The Poisonous", $4f + db "Ninja Master", $57 + +INCBIN "baserom.gbc",$a6050,$a61e6 - $a6050 + +_CinnabarIslandText1: ; 0xa61e6 + db $0, "CINNABAR GYM's", $4f + db "BLAINE is an odd", $55 + db "man who has lived", $55 + db "here for decades.", $57 + +_CinnabarIslandText2: ; 0xa622a + db $0, "Scientists conduct", $4f + db "experiments in", $55 + db "the burned out", $55 + db "building.", $57 + +_CinnabarIslandText3: ; 0xa6266 + db $0, "CINNABAR ISLAND", $4f + db "The Fiery Town of", $55 + db "Burning Desire", $57 + +_CinnabarIslandText6: ; 0xa6298 + db $0, "#MON LAB", $57 + +_CinnabarIslandText7: ; 0xa62a2 + db $0, "CINNABAR ISLAND", $4f + db "#MON GYM", $55 + db "LEADER: BLAINE", $51 + db "The Hot-Headed", $4f + db "Quiz Master!", $57 + +_SaffronCityText1: ; 0xa62e7 + db $0, "What do you want?", $4f + db "Get lost!", $57 + +_SaffronCityText2: ; 0xa6304 + db $0, "BOSS said he'll", $4f + db "take this town!", $57 + +_SaffronCityText3: ; 0xa6324 + db $0, "Get out of the", $4f + db "way!", $57 + +_SaffronCityText4: ; 0xa6339 + db $0, "SAFFRON belongs", $4f + db "to TEAM ROCKET!", $57 + +_SaffronCityText5: ; 0xa635a + db $0, "Being evil makes", $4f + db "me feel so alive!", $57 + +_SaffronCityText6: ; 0xa637e + db $0, "Ow! Watch where", $4f + db "you're walking!", $57 + +_SaffronCityText7: ; 0xa639e + db $0, "With SILPH under", $4f + db "control, we can", $55 + db "exploit #MON", $55 + db "around the world!", $57 + +_SaffronCityText8: ; 0xa63df + db $0, "You beat TEAM", $4f + db "ROCKET all alone?", $55 + db "That's amazing!", $57 + +_SaffronCityText9: ; 0xa640f + db $0, "Yeah! TEAM ROCKET", $4f + db "is gone!", $55 + db "It's safe to go", $55 + db "out again!", $57 + +_SaffronCityText10: ; 0xa6445 + db $0, "People should be", $4f + db "flocking back to", $55 + db "SAFFRON now.", $57 + +_SaffronCityText11: ; 0xa6475 + db $0, "I flew here on my", $4f + db "PIDGEOT when I", $55 + db "read about SILPH.", $51 + db "It's already over?", $4f + db "I missed the", $55 + db "media action.", $57 + +_SaffronCityText12: ; 0xa64d6 + db $0, "PIDGEOT: Bi bibii!@@" + +_SaffronCityText13: ; 0xa64eb + db $0, "I saw ROCKET", $4f + db "BOSS escaping", $55 + db "SILPH's building.", $57 + +_SaffronCityText14: ; 0xa6518 + db $0, "I'm a security", $4f + db "guard.", $51 + db "Suspicious kids I", $4f + db "don't allow in!", $57 + +_SaffronCityText15: ; 0xa654f + db $0, "...", $4f + db "Snore...", $51 + db "Hah! He's taking", $4f + db "a snooze!", $57 + +_SaffronCityText16: ; 0xa6577 + db $0, "SAFFRON CITY", $4f + db "Shining, Golden", $55 + db "Land of Commerce", $57 + +_SaffronCityText17: ; 0xa65a6 + db $0, "FIGHTING DOJO", $57 + +_SaffronCityText18: ; 0xa65b5 + db $0, "SAFFRON CITY", $4f + db "#MON GYM", $55 + db "LEADER: SABRINA", $51 + db "The Master of", $4f + db "Psychic #MON!", $57 + +_SaffronCityText20: ; 0xa65f8 + db $0, "TRAINER TIPS", $51 + db "FULL HEAL cures", $4f + db "all ailments like", $55 + db "sleep and burns.", $51 + db "It costs a bit", $4f + db "more, but it's", $55 + db "more convenient.", $57 + +_SaffronCityText21: ; 0xa6667 + db $0, "TRAINER TIPS", $51 + db "New GREAT BALL", $4f + db "offers improved", $55 + db "capture rates.", $51 + db "Try it on those", $4f + db "hard-to-catch", $55 + db "#MON.", $57 + +_SaffronCityText22: ; 0xa66c7 + db $0, "SILPH CO.", $4f + db "OFFICE BUILDING", $57 + +_SaffronCityText24: ; 0xa66e2 + db $0, "MR.PSYCHIC's", $4f + db "HOUSE", $57 + +_SaffronCityText25: ; 0xa66f5 + db $0, "SILPH's latest", $4f + db "product!", $51 + db "Release to be", $4f + db "determined...", $57 + +_ItemUseBallText00: + db 0,"It dodged the",$4F + db "thrown BALL!",$51 + db "This #MON",$4F + db "can't be caught!",$58 + +_ItemUseBallText01: + db 0,"You missed the",$4F + db "#MON!",$58 + +_ItemUseBallText02: + db 0,"Darn! The #MON",$4F + db "broke free!",$58 + +_ItemUseBallText03: + db 0,"Aww! It appeared",$4F + db "to be caught! ",$58 + +_ItemUseBallText04: + db 0,"Shoot! It was so",$4F + db "close too!",$58 + +_ItemUseBallText05: + db 0,"All right!",$4F,"@",1 + dw $CFDA + db 0," was",$55 + db "caught!@@" + +_ItemUseBallText07: + db 1 + dw $DE06 + db 0," was",$4F + db "transferred to",$55 + db "BILL's PC!",$58 + +_ItemUseBallText08: + db 1 + dw $DE06 + db 0," was",$4F + db "transferred to",$55 + db "someone's PC!",$58 + +_ItemUseBallText06: + db 0,"New #DEX data",$4F + db "will be added for",$55,"@",1 + dw $CFDA + db 0,"!@@" + +INCBIN "baserom.gbc",$A685E,$4000 - $285E + +SECTION "bank2A",DATA,BANK[$2A] + +_ItemUseText001: + db 0,$52," used@@" + +_ItemUseText002: + db 1 + dw $CF4B + db 0,"!",$57 + +INCBIN "baserom.gbc",$A800F,$4000-$F + +SECTION "bank2B",DATA,BANK[$2B] +INCLUDE "text/pokedex.tx" + +SECTION "bank2C",DATA,BANK[$2C] + +MoveNames: ; 4000 + db "POUND@" + db "KARATE CHOP@" + db "DOUBLESLAP@" + db "COMET PUNCH@" + db "MEGA PUNCH@" + db "PAY DAY@" + db "FIRE PUNCH@" + db "ICE PUNCH@" + db "THUNDERPUNCH@" + db "SCRATCH@" + db "VICEGRIP@" + db "GUILLOTINE@" + db "RAZOR WIND@" + db "SWORDS DANCE@" + db "CUT@" + db "GUST@" + db "WING ATTACK@" + db "WHIRLWIND@" + db "FLY@" + db "BIND@" + db "SLAM@" + db "VINE WHIP@" + db "STOMP@" + db "DOUBLE KICK@" + db "MEGA KICK@" + db "JUMP KICK@" + db "ROLLING KICK@" + db "SAND-ATTACK@" + db "HEADBUTT@" + db "HORN ATTACK@" + db "FURY ATTACK@" + db "HORN DRILL@" + db "TACKLE@" + db "BODY SLAM@" + db "WRAP@" + db "TAKE DOWN@" + db "THRASH@" + db "DOUBLE-EDGE@" + db "TAIL WHIP@" + db "POISON STING@" + db "TWINEEDLE@" + db "PIN MISSILE@" + db "LEER@" + db "BITE@" + db "GROWL@" + db "ROAR@" + db "SING@" + db "SUPERSONIC@" + db "SONICBOOM@" + db "DISABLE@" + db "ACID@" + db "EMBER@" + db "FLAMETHROWER@" + db "MIST@" + db "WATER GUN@" + db "HYDRO PUMP@" + db "SURF@" + db "ICE BEAM@" + db "BLIZZARD@" + db "PSYBEAM@" + db "BUBBLEBEAM@" + db "AURORA BEAM@" + db "HYPER BEAM@" + db "PECK@" + db "DRILL PECK@" + db "SUBMISSION@" + db "LOW KICK@" + db "COUNTER@" + db "SEISMIC TOSS@" + db "STRENGTH@" + db "ABSORB@" + db "MEGA DRAIN@" + db "LEECH SEED@" + db "GROWTH@" + db "RAZOR LEAF@" + db "SOLARBEAM@" + db "POISONPOWDER@" + db "STUN SPORE@" + db "SLEEP POWDER@" + db "PETAL DANCE@" + db "STRING SHOT@" + db "DRAGON RAGE@" + db "FIRE SPIN@" + db "THUNDERSHOCK@" + db "THUNDERBOLT@" + db "THUNDER WAVE@" + db "THUNDER@" + db "ROCK THROW@" + db "EARTHQUAKE@" + db "FISSURE@" + db "DIG@" + db "TOXIC@" + db "CONFUSION@" + db "PSYCHIC@" + db "HYPNOSIS@" + db "MEDITATE@" + db "AGILITY@" + db "QUICK ATTACK@" + db "RAGE@" + db "TELEPORT@" + db "NIGHT SHADE@" + db "MIMIC@" + db "SCREECH@" + db "DOUBLE TEAM@" + db "RECOVER@" + db "HARDEN@" + db "MINIMIZE@" + db "SMOKESCREEN@" + db "CONFUSE RAY@" + db "WITHDRAW@" + db "DEFENSE CURL@" + db "BARRIER@" + db "LIGHT SCREEN@" + db "HAZE@" + db "REFLECT@" + db "FOCUS ENERGY@" + db "BIDE@" + db "METRONOME@" + db "MIRROR MOVE@" + db "SELFDESTRUCT@" + db "EGG BOMB@" + db "LICK@" + db "SMOG@" + db "SLUDGE@" + db "BONE CLUB@" + db "FIRE BLAST@" + db "WATERFALL@" + db "CLAMP@" + db "SWIFT@" + db "SKULL BASH@" + db "SPIKE CANNON@" + db "CONSTRICT@" + db "AMNESIA@" + db "KINESIS@" + db "SOFTBOILED@" + db "HI JUMP KICK@" + db "GLARE@" + db "DREAM EATER@" + db "POISON GAS@" + db "BARRAGE@" + db "LEECH LIFE@" + db "LOVELY KISS@" + db "SKY ATTACK@" + db "TRANSFORM@" + db "BUBBLE@" + db "DIZZY PUNCH@" + db "SPORE@" + db "FLASH@" + db "PSYWAVE@" + db "SPLASH@" + db "ACID ARMOR@" + db "CRABHAMMER@" + db "EXPLOSION@" + db "FURY SWIPES@" + db "BONEMERANG@" + db "REST@" + db "ROCK SLIDE@" + db "HYPER FANG@" + db "SHARPEN@" + db "CONVERSION@" + db "TRI ATTACK@" + db "SUPER FANG@" + db "SLASH@" + db "SUBSTITUTE@" + db "STRUGGLE@" |