ref: 48dbfc6333979f7a5e306fbb59f1840411e73292
dir: /main.asm/
SECTION "bank0",HOME SECTION "rst0",HOME[$0] di jp Start SECTION "rst8",HOME[$8] ; FarCall jp $2d63 SECTION "rst10",HOME[$10] ; Bankswitch ld [$ff9d], a ld [$2000], a ret SECTION "rst18",HOME[$18] ; Unused rst $38 SECTION "rst20",HOME[$20] ; Unused rst $38 SECTION "rst28",HOME[$28] ; JumpTable push de ld e, a ld d, 00 add hl, de add hl, de ld a, [hli] ld h, [hl] ld l, a pop de jp [hl] ; (actually jp hl) ; rst30 is midst rst28 SECTION "rst38",HOME[$38] ; Unused rst $38 SECTION "vblank",HOME[$40] ; vblank interrupt jp VBlank SECTION "lcd",HOME[$48] ; lcd interrupt jp $0552 SECTION "timer",HOME[$50] ; timer interrupt jp $3e93 SECTION "serial",HOME[$58] ; serial interrupt jp $06ef SECTION "joypad",HOME[$60] ; joypad interrupt jp $092e SECTION "romheader",HOME[$100] Start: nop jp $016e SECTION "start",HOME[$150] INCBIN "baserom.gbc",$150,$283 - $150 VBlank: ; 283 INCLUDE "vblank.asm" DelayFrame: ; 0x45a ; Wait for one frame ld a, 1 ld [VBlankOccurred], a ; Wait for the next VBlank, halting to conserve battery .halt halt ; rgbasm adds a nop after this instruction by default ld a, [VBlankOccurred] and a jr nz, .halt ret ; 0x468 DelayFrames: ; 0x468 ; Wait c frames call DelayFrame dec c jr nz, DelayFrames ret ; 0x46f RTC: ; 46f ; update time and time-sensitive palettes ; rtc enabled? ld a, [$c2ce] cp $0 ret z ; update clock call UpdateTime ; obj update on? ld a, [VramState] bit 0, a ; obj update ret z ; update palettes callab TimeOfDayPals ret ; 485 INCBIN "baserom.gbc",$485,$52f - $485 IncGradGBPalTable_01: ; 52f db %11111111 ; bgp db %11111111 ; obp1 db %11111111 ; obp2 ; and so on... db %11111110 db %11111110 db %11111000 db %11111001 db %11100100 db %11100100 db %11100100 db %11010000 db %11100000 db %11100100 db %11010000 db %11100000 db %10010000 db %10000000 db %10010000 db %01000000 db %01000000 db %01000000 db %00000000 db %00000000 db %00000000 ; 547 INCBIN "baserom.gbc",$547,$568 - $547 DisableLCD: ; 568 ; Turn the LCD off ; Most of this is just going through the motions ; don't need to do anything if lcd is already off ld a, [$ff40] ; LCDC bit 7, a ; lcd enable ret z ; reset ints xor a ld [$ff0f], a ; IF ; save enabled ints ld a, [$ffff] ; IE ld b, a ; disable vblank res 0, a ; vblank ld [$ffff], a ; IE .wait ; wait until vblank ld a, [$ff44] ; LY cp 145 ; >144 (ensure beginning of vblank) jr nz, .wait ; turn lcd off ld a, [$ff40] ; LCDC and %01111111 ; lcd enable off ld [$ff40], a ; LCDC ; reset ints xor a ld [$ff0f], a ; IF ; restore enabled ints ld a, b ld [$ffff], a ; IE ret ; 58a EnableLCD: ; 58a ld a, [$ff40] ; LCDC set 7, a ; lcd enable ld [$ff40], a ; LCDC ret ; 591 AskTimer: ; 591 INCBIN "baserom.gbc",$591,$59c - $591 ; 59c LatchClock: ; 59c ; latch clock counter data ld a, $0 ld [$6000], a ld a, $1 ld [$6000], a ret ; 5a7 UpdateTime: ; 5a7 ; get rtc data call GetClock ; condense days to one byte, update rtc w/ new day count call FixDays ; add game time to rtc time call FixTime ; update time of day (0 = morn, 1 = day, 2 = nite) callba GetTimeOfDay ret ; 5b7 GetClock: ; 5b7 ; store clock data in $ff8d-$ff91 ; enable clock r/w ld a, $a ld [$0000], a ; get clock data ; stored 'backwards' in hram call LatchClock ld hl, $4000 ld de, $a000 ; seconds ld [hl], $8 ; S ld a, [de] and $3f ld [$ff91], a ; minutes ld [hl], $9 ; M ld a, [de] and $3f ld [$ff90], a ; hours ld [hl], $a ; H ld a, [de] and $1f ld [$ff8f], a ; day lo ld [hl], $b ; DL ld a, [de] ld [$ff8e], a ; day hi ld [hl], $c ; DH ld a, [de] ld [$ff8d], a ; cleanup call CloseSRAM ; unlatch clock, disable clock r/w ret ; 5e8 FixDays: ; 5e8 ; fix day count ; mod by 140 ; check if day count > 255 (bit 8 set) ld a, [$ff8d] ; DH bit 0, a jr z, .daylo ; reset dh (bit 8) res 0, a ld [$ff8d], a ; DH ; mod 140 ; mod twice since bit 8 (DH) was set ld a, [$ff8e] ; DL .modh sub 140 jr nc, .modh .modl sub 140 jr nc, .modl add 140 ; update dl ld [$ff8e], a ; DL ; unknown output ld a, $40 ; %1000000 jr .set .daylo ; quit if fewer than 140 days have passed ld a, [$ff8e] ; DL cp 140 jr c, .quit ; mod 140 .mod sub 140 jr nc, .mod add 140 ; update dl ld [$ff8e], a ; DL ; unknown output ld a, $20 ; %100000 .set ; update clock with modded day value push af call SetClock pop af scf ret .quit xor a ret ; 61d FixTime: ; 61d ; add ingame time (set at newgame) to current time ; day hr min sec ; store time in CurDay, $ff94, $ff96, $ff98 ; second ld a, [$ff91] ; S ld c, a ld a, [StartSecond] add c sub 60 jr nc, .updatesec add 60 .updatesec ld [$ff98], a ; minute ccf ; carry is set, so turn it off ld a, [$ff90] ; M ld c, a ld a, [StartMinute] adc c sub 60 jr nc, .updatemin add 60 .updatemin ld [$ff96], a ; hour ccf ; carry is set, so turn it off ld a, [$ff8f] ; H ld c, a ld a, [StartHour] adc c sub 24 jr nc, .updatehr add 24 .updatehr ld [$ff94], a ; day ccf ; carry is set, so turn it off ld a, [$ff8e] ; DL ld c, a ld a, [StartDay] adc c ld [CurDay], a ret ; 658 INCBIN "baserom.gbc",$658,$691 - $658 SetClock: ; 691 ; set clock data from hram ; enable clock r/w ld a, $a ld [$0000], a ; set clock data ; stored 'backwards' in hram call LatchClock ld hl, $4000 ld de, $a000 ; seems to be a halt check that got partially commented out ; this block is totally pointless ld [hl], $c ld a, [de] bit 6, a ; halt ld [de], a ; seconds ld [hl], $8 ; S ld a, [$ff91] ld [de], a ; minutes ld [hl], $9 ; M ld a, [$ff90] ld [de], a ; hours ld [hl], $a ; H ld a, [$ff8f] ld [de], a ; day lo ld [hl], $b ; DL ld a, [$ff8e] ld [de], a ; day hi ld [hl], $c ; DH ld a, [$ff8d] res 6, a ; make sure timer is active ld [de], a ; cleanup call CloseSRAM ; unlatch clock, disable clock r/w ret ; 6c4 INCBIN "baserom.gbc",$6c4,$935 - $6c4 Joypad: ; 935 ; update joypad state ; $ffa2: released ; $ffa3: pressed ; $ffa4: input ; $ffa5: total pressed ; ld a, [$cfbe] and $d0 ret nz ; pause game update? ld a, [$c2cd] and a ret nz ; d-pad ld a, $20 ld [$ff00], a ld a, [$ff00] ld a, [$ff00] ; hi nybble cpl and $f swap a ld b, a ; buttons ld a, $10 ld [$ff00], a ; wait to stabilize ld a, [$ff00] ld a, [$ff00] ld a, [$ff00] ld a, [$ff00] ld a, [$ff00] ld a, [$ff00] ; lo nybble cpl and $f or b ld b, a ; reset joypad ld a, $30 ld [$ff00], a ; get change in input ld a, [$ffa4] ; last frame's input ld e, a xor b ; current frame input ld d, a ; released and e ld [$ffa2], a ; pressed ld a, d and b ld [$ffa3], a ; total pressed ld c, a ld a, [$ffa5] or c ld [$ffa5], a ; original input ld a, b ld [$ffa4], a ; A+B+SELECT+START and $f cp $f jp z, $0150 ; reset ret ; 984 GetJoypadPublic: ; 984 ; update mirror joypad input from $ffa4 (real input) ; $ffa6: released ; $ffa7: pressed ; $ffa8: input ; bit 0 A ; 1 B ; 2 SELECT ; 3 START ; 4 RIGHT ; 5 LEFT ; 6 UP ; 7 DOWN push af push hl push de push bc ; automated input? ld a, [InputType] cp a, $ff ; INPUT_AUTO jr z, .auto ; get input ld a, [$ffa4] ; real input ld b, a ld a, [$ffa8] ; last frame mirror ld e, a ; released xor b ld d, a and e ld [$ffa6], a ; pressed ld a, d and b ld [$ffa7], a ; leftover from pasted code ld c, a ; ld a, b ld [$ffa8], a ; frame input .quit pop bc pop de pop hl pop af ret .auto ; use predetermined input feed (used in catch tutorial) ; struct: [input][duration] ; save bank ld a, [$ff9d] push af ; ld a, [AutoInputBank] rst Bankswitch ; ld hl, AutoInputAddress ; AutoInputAddress-9 ld a, [hli] ld h, [hl] ld l, a ; update when frame count hits 0 ld a, [AutoInputLength] and a jr z, .updateauto ; until then, do nothing dec a ld [AutoInputLength], a ; restore bank pop af rst Bankswitch ; we're done jr .quit .updateauto ; get input ld a, [hli] ; stop? cp a, $ff jr z, .stopinput ld b, a ; duration ld a, [hli] ld [AutoInputLength], a ; duration $ff = end at input cp a, $ff jr nz, .next ; no input dec hl dec hl ld b, $00 ; no input jr .finishauto .next ; output recorded ld a, l ld [AutoInputAddress], a ld a, h ld [AutoInputAddress+1], a jr .finishauto .stopinput call StopAutoInput ld b, $00 ; no input .finishauto ; restore bank pop af rst Bankswitch ; update mirrors ld a, b ld [$ffa7], a ; pressed ld [$ffa8], a ; input jr .quit ; 9ee StartAutoInput: ; 9ee ; start auto input stream at a:hl ; bank ld [AutoInputBank], a ; address ld a, l ld [AutoInputAddress], a ld a, h ld [AutoInputAddress+1], a ; don't wait to update xor a ld [AutoInputLength], a ; clear input mirrors xor a ld [$ffa7], a ; pressed ld [$ffa6], a ; released ld [$ffa8], a ; input ; start reading input stream instead of player input ld a, $ff ; INPUT_AUTO ld [InputType], a ret ; a0a StopAutoInput: ; a0a ; clear autoinput ram xor a ld [AutoInputBank], a ld [AutoInputAddress], a ld [AutoInputAddress+1], a ld [AutoInputLength], a ; normal input ld [InputType], a ret ; a1b INCBIN "baserom.gbc",$a1b,$b40 - $a1b FarDecompress: ; b40 ; Decompress graphics data at a:hl to de ; put a away for a sec ld [$c2c4], a ; save bank ld a, [$ff9d] push af ; bankswitch ld a, [$c2c4] rst Bankswitch ; what we came here for call Decompress ; restore bank pop af rst Bankswitch ret ; b50 Decompress: ; b50 ; Pokemon Crystal uses an lz variant for compression. ; This is mainly used for graphics, but the intro's ; tilemaps also use this compression. ; This function decompresses lz-compressed data at hl to de. ; Basic rundown: ; A typical control command consists of: ; -the command (bits 5-7) ; -the count (bits 0-4) ; -and any additional params ; $ff is used as a terminator. ; Commands: ; 0: literal ; literal data for some number of bytes ; 1: iterate ; one byte repeated for some number of bytes ; 2: alternate ; two bytes alternated for some number of bytes ; 3: zero (whitespace) ; 0x00 repeated for some number of bytes ; Repeater control commands have a signed parameter used to determine the start point. ; Wraparound is simulated: ; Positive values are added to the start address of the decompressed data ; and negative values are subtracted from the current position. ; 4: repeat ; repeat some number of bytes from decompressed data ; 5: flipped ; repeat some number of flipped bytes from decompressed data ; ex: $ad = %10101101 -> %10110101 = $b5 ; 6: reverse ; repeat some number of bytes in reverse from decompressed data ; If the value in the count needs to be larger than 5 bits, ; control code 7 can be used to expand the count to 10 bits. ; A new control command is read in bits 2-4. ; The new 10-bit count is split: ; bits 0-1 contain the top 2 bits ; another byte is added containing the latter 8 ; So, the structure of the control command becomes: ; 111xxxyy yyyyyyyy ; | | | | ; | | our new count ; | the control command for this count ; 7 (this command) ; For more information, refer to the code below and in extras/gfx.py . ; save starting output address ld a, e ld [$c2c2], a ld a, d ld [$c2c3], a .loop ; get next byte ld a, [hl] ; done? cp $ff ; end ret z ; get control code and %11100000 ; 10-bit param? cp $e0 ; LZ_HI jr nz, .normal ; 10-bit param: ; get next 3 bits (%00011100) ld a, [hl] add a add a ; << 3 add a ; this is our new control code and %11100000 push af ; get param hi ld a, [hli] and %00000011 ld b, a ; get param lo ld a, [hli] ld c, a ; read at least 1 byte inc bc jr .readers .normal ; push control code push af ; get param ld a, [hli] and %00011111 ld c, a ld b, $0 ; read at least 1 byte inc c .readers ; let's get started ; inc loop counts since we bail as soon as they hit 0 inc b inc c ; get control code pop af ; command type bit 7, a ; 80, a0, c0 jr nz, .repeatertype ; literals cp $20 ; LZ_ITER jr z, .iter cp $40 ; LZ_ALT jr z, .alt cp $60 ; LZ_ZERO jr z, .zero ; else $00 ; 00 ; LZ_LIT ; literal data for bc bytes .loop1 ; done? dec c jr nz, .next1 dec b jp z, .loop .next1 ld a, [hli] ld [de], a inc de jr .loop1 ; 20 ; LZ_ITER ; write byte for bc bytes .iter ld a, [hli] .iterloop dec c jr nz, .iternext dec b jp z, .loop .iternext ld [de], a inc de jr .iterloop ; 40 ; LZ_ALT ; alternate two bytes for bc bytes ; next pair .alt ; done? dec c jr nz, .alt0 dec b jp z, .altclose0 ; alternate for bc .alt0 ld a, [hli] ld [de], a inc de dec c jr nz, .alt1 ; done? dec b jp z, .altclose1 .alt1 ld a, [hld] ld [de], a inc de jr .alt ; skip past the bytes we were alternating .altclose0 inc hl .altclose1 inc hl jr .loop ; 60 ; LZ_ZERO ; write 00 for bc bytes .zero xor a .zeroloop dec c jr nz, .zeronext dec b jp z, .loop .zeronext ld [de], a inc de jr .zeroloop ; repeats ; 80, a0, c0 ; repeat decompressed data from output .repeatertype push hl push af ; get next byte ld a, [hli] ; absolute? bit 7, a jr z, .absolute ; relative ; a = -a and %01111111 ; forget the bit we just looked at cpl ; add de (current output address) add e ld l, a ld a, $ff ; -1 adc d ld h, a jr .repeaters .absolute ; get next byte (lo) ld l, [hl] ; last byte (hi) ld h, a ; add starting output address ld a, [$c2c2] add l ld l, a ld a, [$c2c3] adc h ld h, a .repeaters pop af cp $80 ; LZ_REPEAT jr z, .repeat cp $a0 ; LZ_FLIP jr z, .flip cp $c0 ; LZ_REVERSE jr z, .reverse ; e0 -> 80 ; 80 ; LZ_REPEAT ; repeat some decompressed data .repeat ; done? dec c jr nz, .repeatnext dec b jr z, .cleanup .repeatnext ld a, [hli] ld [de], a inc de jr .repeat ; a0 ; LZ_FLIP ; repeat some decompressed data w/ flipped bit order .flip dec c jr nz, .flipnext dec b jp z, .cleanup .flipnext ld a, [hli] push bc ld bc, $0008 .fliploop rra rl b dec c jr nz, .fliploop ld a, b pop bc ld [de], a inc de jr .flip ; c0 ; LZ_REVERSE ; repeat some decompressed data in reverse .reverse dec c jr nz, .reversenext dec b jp z, .cleanup .reversenext ld a, [hld] ld [de], a inc de jr .reverse .cleanup ; get type of repeat we just used pop hl ; was it relative or absolute? bit 7, [hl] jr nz, .next ; skip two bytes for absolute inc hl ; skip one byte for relative .next inc hl jp .loop ; c2f UpdatePalsIfCGB: ; c2f ; update bgp data from BGPals ; update obp data from OBPals ; return carry if successful ; check cgb ld a, [$ffe6] and a ret z UpdateCGBPals: ; c33 ; return carry if successful ; any pals to update? ld a, [$ffe5] and a ret z ForceUpdateCGBPals: ; c37 ; save wram bank ld a, [$ff70] ; wram bank push af ; bankswitch ld a, 5 ; BANK(BGPals) ld [$ff70], a ; wram bank ; get bg pal buffer ld hl, BGPals ; 5:d080 ; update bg pals ld a, %10000000 ; auto increment, index 0 ld [$ff68], a ; BGPI ld c, $69 ; $ff69 ld b, 4 ; NUM_PALS / 2 .bgp ; copy 16 bytes (8 colors / 2 pals) to bgpd ld a, [hli] ld [$ff00+c], a ld a, [hli] ld [$ff00+c], a ld a, [hli] ld [$ff00+c], a ld a, [hli] ld [$ff00+c], a ld a, [hli] ld [$ff00+c], a ld a, [hli] ld [$ff00+c], a ld a, [hli] ld [$ff00+c], a ld a, [hli] ld [$ff00+c], a ld a, [hli] ld [$ff00+c], a ld a, [hli] ld [$ff00+c], a ld a, [hli] ld [$ff00+c], a ld a, [hli] ld [$ff00+c], a ld a, [hli] ld [$ff00+c], a ld a, [hli] ld [$ff00+c], a ld a, [hli] ld [$ff00+c], a ld a, [hli] ld [$ff00+c], a ; done? dec b jr nz, .bgp ; hl is now 5:d0c0 OBPals ; update obj pals ld a, %10000000 ; auto increment, index 0 ld [$ff6a], a ld c, $6b ; $ff6b - $ff00 ld b, 4 ; NUM_PALS / 2 .obp ; copy 16 bytes (8 colors / 2 pals) to obpd ld a, [hli] ld [$ff00+c], a ld a, [hli] ld [$ff00+c], a ld a, [hli] ld [$ff00+c], a ld a, [hli] ld [$ff00+c], a ld a, [hli] ld [$ff00+c], a ld a, [hli] ld [$ff00+c], a ld a, [hli] ld [$ff00+c], a ld a, [hli] ld [$ff00+c], a ld a, [hli] ld [$ff00+c], a ld a, [hli] ld [$ff00+c], a ld a, [hli] ld [$ff00+c], a ld a, [hli] ld [$ff00+c], a ld a, [hli] ld [$ff00+c], a ld a, [hli] ld [$ff00+c], a ld a, [hli] ld [$ff00+c], a ld a, [hli] ld [$ff00+c], a ; done? dec b jr nz, .obp ; restore wram bank pop af ld [$ff70], a ; wram bank ; clear pal update queue xor a ld [$ffe5], a ; successfully updated palettes scf ret ; c9f DmgToCgbBGPals: ; c9f ; exists to forego reinserting cgb-converted image data ; input: a -> bgp ld [$ff47], a ; bgp push af ; check cgb ld a, [$ffe6] and a jr z, .end push hl push de push bc ; save wram bank ld a, [$ff70] push af ; wram bank 5 ld a, 5 ld [$ff70], a ; copy & reorder bg pal buffer ld hl, BGPals ; to ld de, Unkn1Pals ; from ; order ld a, [$ff47] ; bgp ld b, a ; # pals ld c, 8 ; all pals call CopyPals ; request pal update ld a, $1 ld [$ffe5], a ; restore wram bank pop af ld [$ff70], a pop bc pop de pop hl .end pop af ret ; ccb DmgToCgbObjPals: ; ccb ; exists to forego reinserting cgb-converted image data ; input: d -> obp1 ; e -> obp2 ld a, e ld [$ff48], a ; obp0 ld a, d ld [$ff49], a ; obp1 ; check cgb ld a, [$ffe6] and a ret z push hl push de push bc ; save wram bank ld a, [$ff70] push af ; wram bank 5 ld a, $5 ld [$ff70], a ; copy & reorder obj pal buffer ; to ld hl, OBPals ; from ld de, Unkn2Pals ; order ld a, [$ff48] ; obp0 ld b, a ; # pals ld c, 8 ; all pals call CopyPals ; request pal update ld a, $1 ld [$ffe5], a ; restore wram bank pop af ld [$ff70], a pop bc pop de pop hl ret ; cf8 INCBIN "baserom.gbc",$cf8,$d50 - $cf8 CopyPals: ; d50 ; copy c palettes in order b from de to hl push bc ld c, 4 ; NUM_PAL_COLORS .loop push de push hl ; get pal color ld a, b and %11 ; color ; 2 bytes per color add a ld l, a ld h, $0 add hl, de ld e, [hl] inc hl ld d, [hl] ; dest pop hl ; write color ld [hl], e inc hl ld [hl], d inc hl ; next pal color srl b srl b ; source pop de ; done pal? dec c jr nz, .loop ; de += 8 (next pal) ld a, 8 ; NUM_PAL_COLORS * 2 ; bytes per pal add e jr nc, .ok inc d .ok ld e, a ; how many more pals? pop bc dec c jr nz, CopyPals ret ; d79 INCBIN "baserom.gbc",$d79,$e8d - $d79 ; copy bc bytes from a:hl to de FarCopyBytes: ; e8d ld [$ff8b], a ld a, [$ff9d] ; save old bank push af ld a, [$ff8b] rst Bankswitch call CopyBytes pop af rst Bankswitch ret ; 0xe9b ; copy bc*2 source bytes from a:hl to de, doubling each byte in process FarCopyBytesDouble: ; e9b ld [$ff8b], a ld a, [$ff9d] ; save current bank push af ld a, [$ff8b] rst Bankswitch ; bankswitch ld a, h ; switcheroo, de <> hl ld h, d ld d, a ld a, l ld l, e ld e, a inc b inc c jr .dec ; 0xeab $4 .loop ld a, [de] inc de ld [hli], a ; write twice ld [hli], a .dec dec c jr nz, .loop dec b jr nz, .loop pop af rst Bankswitch ret ; 0xeba INCBIN "baserom.gbc",$eba,$fc8 - $eba ClearTileMap: ; fc8 ; Fill the tile map with blank tiles ld hl, TileMap ld a, $7f ; blank tile ld bc, 360 ; length of TileMap call ByteFill ; We aren't done if the LCD is on ld a, [$ff40] ; LCDC bit 7, a ret z jp WaitBGMap ; fdb INCBIN "baserom.gbc",$fdb,$ff1 - $fdb TextBoxBorder: ; ff1 ; 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 ; 0x101e NPlaceChar: ; 0x101e ; place a row of width c of identical characters ld d,c .loop\@ ld [hli],a dec d jr nz,.loop\@ ret ; 0x1024 INCBIN "baserom.gbc",$1024,$1078 - $1024 PlaceString: ; $1078 push hl PlaceNextChar: ld a, [de] cp "@" jr nz, CheckDict ld b, h ld c, l pop hl ret pop de NextChar: ; 1083 inc de jp PlaceNextChar CheckDict: cp $15 jp z, $117b cp $4f jp z, $12ea cp $4e jp z, $12a7 cp $16 jp z, $12b9 and a jp z, $1383 cp $4c jp z, $1337 cp $4b jp z, $131f cp $51 ; Player name jp z, $12f2 cp $49 jp z, $1186 cp $52 ; Mother name jp z, $118d cp $53 jp z, $1194 cp $35 jp z, $11e8 cp $36 jp z, $11ef cp $37 jp z, $11f6 cp $38 jp z, $119b cp $39 jp z, $11a2 cp $54 jp z, $11c5 cp $5b jp z, $11b7 cp $5e jp z, $11be cp $5c jp z, $11b0 cp $5d jp z, $11a9 cp $23 jp z, $11cc cp $22 jp z, $12b0 cp $55 jp z, $1345 cp $56 jp z, $11d3 cp $57 jp z, $137c cp $58 jp z, $135a cp $4a jp z, $11da cp $24 jp z, $11e1 cp $25 jp z, NextChar cp $1f jr nz, .asm_1122 ld a, $7f .asm_1122 cp $5f jp z, Char5F cp $59 jp z, $11fd cp $5a jp z, $1203 cp $3f jp z, $121b cp $14 jp z, $1252 cp $e4 jr z, .asm_1174 ; 0x113d $35 cp $e5 jr z, .asm_1174 ; 0x1141 $31 jr .asm_114c ; 0x1143 $7 ld b, a call $13c6 jp NextChar .asm_114c cp $60 jr nc, .asm_1174 ; 0x114e $24 cp $40 jr nc, .asm_1165 ; 0x1152 $11 cp $20 jr nc, .asm_115c ; 0x1156 $4 add $80 jr .asm_115e ; 0x115a $2 .asm_115c add $90 .asm_115e ld b, $e5 call $13c6 jr .asm_1174 ; 0x1163 $f .asm_1165 cp $44 jr nc, .asm_116d ; 0x1167 $4 add $59 jr .asm_116f ; 0x116b $2 .asm_116d add $86 .asm_116f ld b, $e4 call $13c6 .asm_1174 ld [hli], a call PrintLetterDelay jp NextChar ; 0x117b INCBIN "baserom.gbc",$117b,$1203 - $117b Char5D: ld a, [$ffe4] push de and a jr nz, .asm_120e ; 0x1207 $5 ld de, $c621 jr .asm_126a ; 0x120c $5c .asm_120e ld de, Char5AText ; Enemy call $1078 ld h, b ld l, c ld de, $c616 jr .asm_126a ; 0x1219 $4f push de ld a, [InLinkBattle] and a jr nz, .linkbattle ld a, [$d233] cp $9 jr z, .asm_1248 ; 0x1227 $1f cp $2a jr z, .asm_1248 ; 0x122b $1b ld de, $c656 call $1078 ld h, b ld l, c ld de, $12a2 call $1078 push bc ld hl, $5939 ld a, $e rst FarCall pop hl ld de, $d073 jr .asm_126a ; 0x1246 $22 .asm_1248 ld de, $d493 jr .asm_126a ; 0x124b $1d .linkbattle ld de, $c656 jr .asm_126a ; 0x1250 $18 push de ld de, PlayerName call $1078 ld h, b ld l, c ld a, [$d472] bit 0, a ld de, $12a5 jr z, .asm_126a ; 0x1263 $5 ld de, $12a6 jr .asm_126a ; 0x1268 $0 .asm_126a call $1078 ld h, b ld l, c pop de jp $1083 ; 0x1273 Char5CText: ; 0x1273 db "TM@" Char5DText: ; 0x1276 db "TRAINER@" Char5BText: ; 0x127e db "PC@" INCBIN "baserom.gbc",$1281,$1293 - $1281 Char56Text: ; 0x1293 db "…@" Char5AText: ; 0x1295 db "Enemy @" INCBIN "baserom.gbc",$129c,$1356 - $129c Char5F: ; 0x1356 ; ends a Pokédex entry ld [hl],"." pop hl ret INCBIN "baserom.gbc",$135a,$15d8 - $135a DMATransfer: ; 15d8 ; DMA transfer ; return carry if successful ; anything to transfer? ld a, [$ffe8] and a ret z ; start transfer ld [$ff55], a ; hdma5 ; indicate that transfer has occurred xor a ld [$ffe8], a ; successful transfer scf ret ; 15e3 UpdateBGMapBuffer: ; 15e3 ; write [$ffdc] 16x8 tiles from BGMapBuffer to bg map addresses in BGMapBufferPtrs ; [$ffdc] must be even since this is done in 16x16 blocks ; return carry if successful ; any tiles to update? ld a, [$ffdb] and a ret z ; save wram bank ld a, [$ff4f] ; vram bank push af ; save sp ld [$ffd9], sp ; temp stack ld hl, BGMapBufferPtrs ld sp, hl ; we can now pop the addresses of affected spots in bg map ; get pal and tile buffers ld hl, BGMapPalBuffer ld de, BGMapBuffer .loop ; draw one 16x16 block ; top half: ; get bg map address pop bc ; update palettes ld a, $1 ld [$ff4f], a ; vram bank ; tile 1 ld a, [hli] ld [bc], a inc c ; tile 2 ld a, [hli] ld [bc], a dec c ; update tiles ld a, $0 ld [$ff4f], a ; vram bank ; tile 1 ld a, [de] inc de ld [bc], a inc c ; tile 2 ld a, [de] inc de ld [bc], a ; bottom half: ; get bg map address pop bc ; update palettes ld a, $1 ld [$ff4f], a ; vram bank ; tile 1 ld a, [hli] ld [bc], a inc c ; tile 2 ld a, [hli] ld [bc], a dec c ; update tiles ld a, $0 ld [$ff4f], a ; vram bank ; tile 1 ld a, [de] inc de ld [bc], a inc c ; tile 2 ld a, [de] inc de ld [bc], a ; we've done 2 16x8 blocks ld a, [$ffdc] dec a dec a ld [$ffdc], a ; if there are more left, get the next 16x16 block jr nz, .loop ; restore sp ld a, [$ffd9] ld l, a ld a, [$ffda] ld h, a ld sp, hl ; restore vram bank pop af ld [$ff4f], a ; vram bank ; we don't need to update bg map until new tiles are loaded xor a ld [$ffdb], a ; successfully updated bg map scf ret ; 163a WaitTop: ; 163a ld a, [$ffd4] and a ret z ; wait until top third of bg map can be updated ld a, [$ffd5] and a jr z, .quit call DelayFrame jr WaitTop .quit xor a ld [$ffd4], a ret ; 164c UpdateBGMap: ; 164c ; get mode ld a, [$ffd4] and a ret z ; don't save bg map address dec a ; 1 jr z, .tiles dec a ; 2 jr z, .attr dec a ; ? ; save bg map address ld a, [$ffd6] ld l, a ld a, [$ffd7] ld h, a push hl ; bg map 1 ($9c00) xor a ld [$ffd6], a ld a, $9c ld [$ffd7], a ; get mode again ld a, [$ffd4] push af cp 3 call z, .tiles pop af cp 4 call z, .attr ; restore bg map address pop hl ld a, l ld [$ffd6], a ld a, h ld [$ffd7], a ret .attr ; switch vram banks ld a, 1 ld [$ff4f], a ; vram bank ; bg map 1 ld hl, AttrMap call .getthird ; restore vram bank ld a, 0 ld [$ff4f], a ; vram bank ret .tiles ; bg map 0 ld hl, TileMap .getthird ; save sp ld [$ffd9], sp ; # tiles to move down * 6 (which third?) ld a, [$ffd5] and a ; 0 jr z, .top dec a ; 1 jr z, .middle ; .bottom ; 2 ; move 12 tiles down ld de, $00f0 ; TileMap(0,12) - TileMap add hl, de ; stack now points to source ld sp, hl ; get bg map address ld a, [$ffd7] ld h, a ld a, [$ffd6] ld l, a ; move 12 tiles down ld de, $0180 ; bgm(0,12) add hl, de ; start at top next time xor a jr .start .middle ; move 6 tiles down ld de, $0078 ; TileMap(0,6) - TileMap add hl, de ; stack now points to source ld sp, hl ; get bg map address ld a, [$ffd7] ld h, a ld a, [$ffd6] ld l, a ; move 6 tiles down ld de, $00c0 ; bgm(0,6) add hl, de ; start at bottom next time ld a, 2 jr .start .top ; stack now points to source ld sp, hl ; get bg map address ld a, [$ffd7] ld h, a ld a, [$ffd6] ld l, a ; start at middle next time ld a, 1 .start ; which third to draw next update ld [$ffd5], a ; # rows per third ld a, 6 ; SCREEN_HEIGHT / 3 ; # tiles from the edge of the screen to the next row ld bc, $000d ; BG_WIDTH + 1 - SCREEN_WIDTH .row ; write a row of 20 tiles pop de ld [hl], e inc l ld [hl], d inc l pop de ld [hl], e inc l ld [hl], d inc l pop de ld [hl], e inc l ld [hl], d inc l pop de ld [hl], e inc l ld [hl], d inc l pop de ld [hl], e inc l ld [hl], d inc l pop de ld [hl], e inc l ld [hl], d inc l pop de ld [hl], e inc l ld [hl], d inc l pop de ld [hl], e inc l ld [hl], d inc l pop de ld [hl], e inc l ld [hl], d inc l pop de ld [hl], e inc l ld [hl], d ; next row add hl, bc ; done? dec a jr nz, .row ; restore sp ld a, [$ffd9] ld l, a ld a, [$ffda] ld h, a ld sp, hl ret ; 170a SafeLoadTiles2: ; 170a ; only execute during first fifth of vblank ; any tiles to draw? ld a, [$cf6c] and a ret z ; abort if too far into vblank ld a, [$ff44] ; LY ; ly = 144-145? cp 144 ret c cp 146 ret nc GetTiles2: ; 1717 ; load [$cf6c] tiles from [$cf6d-e] to [$cf6f-70] ; save sp ld [$ffd9], sp ; sp = [$cf6d-e] tile source ld hl, $cf6d ld a, [hli] ld h, [hl] ld l, a ld sp, hl ; hl = [$cf6f-70] tile dest ld hl, $cf6f ld a, [hli] ld h, [hl] ld l, a ; # tiles to draw ld a, [$cf6c] ld b, a ; clear tile queue xor a ld [$cf6c], a .loop ; put 1 tile (16 bytes) into hl from sp pop de ld [hl], e inc l ld [hl], e inc l ld [hl], d inc l ld [hl], d inc l pop de ld [hl], e inc l ld [hl], e inc l ld [hl], d inc l ld [hl], d inc l pop de ld [hl], e inc l ld [hl], e inc l ld [hl], d inc l ld [hl], d inc l pop de ld [hl], e inc l ld [hl], e inc l ld [hl], d inc l ld [hl], d ; next tile inc hl ; done? dec b jr nz, .loop ; update $cf6f-70 ld a, l ld [$cf6f], a ld a, h ld [$cf70], a ; update $cf6d-e ld [$cf6d], sp ; restore sp ld a, [$ffd9] ld l, a ld a, [$ffda] ld h, a ld sp, hl ret ; 1769 SafeLoadTiles: ; 1769 ; only execute during first fifth of vblank ; any tiles to draw? ld a, [$cf67] and a ret z ; abort if too far into vblank ld a, [$ff44] ; LY ; ly = 144-145? cp 144 ret c cp 146 ret nc jr GetTiles LoadTiles: ; 1778 ; use only if time is allotted ; any tiles to draw? ld a, [$cf67] and a ret z ; get tiles GetTiles: ; 177d ; load [$cf67] tiles from [$cf68-9] to [$cf6a-b] ; save sp ld [$ffd9], sp ; sp = [$cf68-9] tile source ld hl, $cf68 ld a, [hli] ld h, [hl] ld l, a ld sp, hl ; hl = [$cf6a-b] tile dest ld hl, $cf6a ld a, [hli] ld h, [hl] ld l, a ; # tiles to draw ld a, [$cf67] ld b, a ; clear tile queue xor a ld [$cf67], a .loop ; put 1 tile (16 bytes) into hl from sp pop de ld [hl], e inc l ld [hl], d inc l pop de ld [hl], e inc l ld [hl], d inc l pop de ld [hl], e inc l ld [hl], d inc l pop de ld [hl], e inc l ld [hl], d inc l pop de ld [hl], e inc l ld [hl], d inc l pop de ld [hl], e inc l ld [hl], d inc l pop de ld [hl], e inc l ld [hl], d inc l pop de ld [hl], e inc l ld [hl], d ; next tile inc hl ; done? dec b jr nz, .loop ; update $cf6a-b ld a, l ld [$cf6a], a ld a, h ld [$cf6b], a ; update $cf68-9 ld [$cf68], sp ; restore sp ld a, [$ffd9] ld l, a ld a, [$ffda] ld h, a ld sp, hl ret ; 17d3 SafeTileAnimation: ; 17d3 ; call from vblank ld a, [$ffde] and a ret z ; abort if too far into vblank ld a, [$ff44] ; LY ; ret unless ly = 144-150 cp 144 ret c cp 151 ret nc ; save affected banks ; switch to new banks ld a, [$ff9d] push af ; save bank ld a, BANK(DoTileAnimation) rst Bankswitch ; bankswitch ld a, [$ff70] ; wram bank push af ; save wram bank ld a, $1 ; wram bank 1 ld [$ff70], a ; wram bank ld a, [$ff4f] ; vram bank push af ; save vram bank ld a, $0 ; vram bank 0 ld [$ff4f], a ; vram bank ; take care of tile animation queue call DoTileAnimation ; restore affected banks pop af ld [$ff4f], a ; vram bank pop af ld [$ff70], a ; wram bank pop af rst Bankswitch ; bankswitch ret ; 17ff INCBIN "baserom.gbc",$17ff,$185d - $17ff GetTileType: ; 185d ; checks the properties of a tile ; input: a = tile id push de push hl ld hl, TileTypeTable ld e, a ld d, $00 add hl, de ld a, [$ff9d] ; current bank push af ld a, BANK(TileTypeTable) rst Bankswitch ld e, [hl] ; get tile type pop af rst Bankswitch ; return to current bank ld a, e and a, $0f ; lo nybble only pop hl pop de ret ; 1875 INCBIN "baserom.gbc",$1875,$2063 - $1875 AskSerial: ; 2063 ; send out a handshake while serial int is off ld a, [$c2d4] bit 0, a ret z ld a, [$c2d5] and a ret nz ; once every 6 frames ld hl, $ca8a inc [hl] ld a, [hl] cp 6 ret c xor a ld [hl], a ld a, $c ld [$c2d5], a ; handshake ld a, $88 ld [$ff01], a ; switch to internal clock ld a, %00000001 ld [$ff02], a ; start transfer ld a, %10000001 ld [$ff02], a ret ; 208a INCBIN "baserom.gbc",$208a,$209e - $208a GameTimer: ; 209e ; precautionary nop ; save wram bank ld a, [$ff70] ; wram bank push af ld a, $1 ld [$ff70], a ; wram bank call UpdateGameTimer ; restore wram bank pop af ld [$ff70], a ; wram bank ret ; 20ad UpdateGameTimer: ; 20ad ; increment the game timer by one frame ; capped at 999:59:59.00 after exactly 1000 hours ; pause game update? ld a, [$c2cd] and a ret nz ; game timer paused? ld hl, GameTimerPause bit 0, [hl] ret z ; reached cap? (999:00:00.00) ld hl, GameTimeCap bit 0, [hl] ret nz ; increment frame counter ld hl, GameTimeFrames ; frame counter ld a, [hl] inc a ; reached 1 second? cp 60 ; frames/second jr nc, .second ; 20c5 $2 ; update frame counter ld [hl], a ret .second ; reset frame counter xor a ld [hl], a ; increment second counter ld hl, GameTimeSeconds ld a, [hl] inc a ; reached 1 minute? cp 60 ; seconds/minute jr nc, .minute ; update second counter ld [hl], a ret .minute ; reset second counter xor a ld [hl], a ; increment minute counter ld hl, GameTimeMinutes ld a, [hl] inc a ; reached 1 hour? cp 60 ; minutes/hour jr nc, .hour ; update minute counter ld [hl], a ret .hour ; reset minute counter xor a ld [hl], a ; increment hour counter ld a, [GameTimeHours] ld h, a ld a, [GameTimeHours+1] ld l, a inc hl ; reached 1000 hours? ld a, h cp $3 ; 1000 / $100 jr c, .updatehr ld a, l cp $e8 ; 1000 & $ff jr c, .updatehr ; cap at 999:59:59.00 ld hl, GameTimeCap set 0, [hl] ; stop timer ld a, 59 ld [GameTimeMinutes], a ld [GameTimeSeconds], a ; this will never be run again ret .updatehr ld a, h ld [GameTimeHours], a ld a, l ld [GameTimeHours+1], a ret ; 210f INCBIN "baserom.gbc",$210f,$261f - $210f PushScriptPointer: ; 261f ; used to call a script from asm ; input: ; a: bank ; hl: address ; bank ld [$d439], a ; ScriptBank ; address ld a, l ld [$d43a], a ; ScriptAddressLo ld a, h ld [$d43b], a ; ScriptAddressHi ld a, $ff ld [$d438], a scf ret ; 2631 INCBIN "baserom.gbc",$2631,$26ef - $2631 ObjectEvent: ; 0x26ef jumptextfaceplayer ObjectEventText ; 0x26f2 ObjectEventText: TX_FAR _ObjectEventText db "@" INCBIN "baserom.gbc",$26f7,$2bed-$26f7 GetMapHeaderPointer: ; 0x2bed ; Prior to calling this function, you must have switched banks so that ; MapGroupPointers is visible. ; inputs: ; b = map group, c = map number ; XXX de = ??? ; outputs: ; hl points to the map header push bc ; save map number for later ; get pointer to map group dec b ld c, b ld b, $0 ld hl, MapGroupPointers add hl, bc add hl, bc ld a, [hli] ld h, [hl] ld l, a pop bc ; restore map number ; find the cth map header dec c ld b, $0 ld a, OlivineGym_MapHeader - OlivinePokeCenter1F_MapHeader call AddNTimes ret GetMapHeaderMember: ; 0x2c04 ; Extract data from the current map's header. ; inputs: ; de = offset of desired data within the mapheader ; outputs: ; bc = data from the current map's header ; (e.g., de = $0003 would return a pointer to the secondary map header) ld a, [MapGroup] ld b, a ld a, [MapNumber] ld c, a ; fallthrough GetAnyMapHeaderMember: ; 0x2c0c ; bankswitch ld a, [$ff9d] push af ld a, BANK(MapGroupPointers) rst Bankswitch call GetMapHeaderPointer add hl, de ld c, [hl] inc hl ld b, [hl] ; bankswitch back pop af rst Bankswitch ret ; 0x2c1c INCBIN "baserom.gbc",$2c1c,$2c7d-$2c1c GetSecondaryMapHeaderPointer: ; 0x2c7d ; returns the current map's secondary map header pointer in hl. push bc push de ld de, $0003 ; secondary map header pointer (offset within header) call GetMapHeaderMember ld l, c ld h, b pop de pop bc ret INCBIN "baserom.gbc",$2c8a,$2caf-$2c8a GetWorldMapLocation: ; 0x2caf ; given a map group/id in bc, return its location on the Pokégear map. push hl push de push bc ld de, 5 call GetAnyMapHeaderMember ld a, c pop bc pop de pop hl ret ; 0x2cbd INCBIN "baserom.gbc",$2cbd,$2d83-$2cbd Predef: ; 2d83 ; call a function from given id a ; relies on $cfb4-8 ; this function is somewhat unreadable at a glance ; the execution flow is as follows: ; save bank ; get function from id ; call function ; restore bank ; these are pushed to the stack in reverse ; most of the $cfbx trickery is just juggling hl (which is preserved) ; this allows hl, de and bc to be passed to the function ; input: ; a: id ; parameters bc, de, hl ; store id ld [$cfb4], a ; save bank ld a, [$ff9d] ; current bank push af ; get Predef function to call ; GetPredefFn also stores hl in $cfb5-6 ld a, BANK(GetPredefFn) rst Bankswitch call GetPredefFn ; switch bank to Predef function rst Bankswitch ; clean up after Predef call ld hl, .cleanup push hl ; call Predef function from ret ld a, [$cfb7] ld h, a ld a, [$cfb8] ld l, a push hl ; get hl back ld a, [$cfb5] ld h, a ld a, [$cfb6] ld l, a ret .cleanup ; store hl ld a, h ld [$cfb5], a ld a, l ld [$cfb6], a ; restore bank pop hl ; popping a pushed af. h = a (old bank) ld a, h rst Bankswitch ; get hl back ld a, [$cfb5] ld h, a ld a, [$cfb6] ld l, a ret ; 2dba INCBIN "baserom.gbc",$2dba,$2e6f-$2dba BitTable1Func: ; 0x2e6f ld hl, $da72 call BitTableFunc ret BitTableFunc: ; 0x2e76 ; Perform a function on a bit in memory. ; inputs: ; b: function ; 0 clear bit ; 1 set bit ; 2 check bit ; de: bit number ; hl: index within bit table ; get index within the byte ld a, e and $7 ; shift de right by three bits (get the index within memory) srl d rr e srl d rr e srl d rr e add hl, de ; implement a decoder ld c, $1 rrca jr nc, .one rlc c .one rrca jr nc, .two rlc c rlc c .two rrca jr nc, .three swap c .three ; check b's value: 0, 1, 2 ld a, b cp 1 jr c, .clearbit ; 0 jr z, .setbit ; 1 ; check bit ld a, [hl] and c ld c, a ret .setbit ; set bit ld a, [hl] or c ld [hl], a ret .clearbit ; clear bit ld a, c cpl and [hl] ld [hl], a ret ; 0x2ead INCBIN "baserom.gbc", $2ead, $2f8c - $2ead RNG: ; 2f8c ; Two random numbers are generated by adding and subtracting ; the divider to the respective values every time it's called. ; The divider is a value that increments at a rate of 16384Hz. ; For comparison, the Game Boy operates at a clock speed of 4.2MHz. ; Additionally, an equivalent function is called every frame. ; output: ; a: rand2 ; ffe1: rand1 ; ffe2: rand2 push bc ; Added value ld a, [$ff04] ; divider ld b, a ld a, [$ffe1] adc b ld [$ffe1], a ; Subtracted value ld a, [$ff04] ; divider ld b, a ld a, [$ffe2] sbc b ld [$ffe2], a pop bc ret ; 2f9f FarBattleRNG: ; 2f9f ; BattleRNG lives in another bank. ; It handles all RNG calls in the battle engine, ; allowing link battles to remain in sync using a shared PRNG. ; Save bank ld a, [$ff9d] ; bank push af ; Bankswitch ld a, BANK(BattleRNG) rst Bankswitch call BattleRNG ; Restore bank ld [$cfb6], a pop af rst Bankswitch ld a, [$cfb6] ret ; 2fb1 Function2fb1: ; 2fb1 push bc ld c, a xor a sub c .asm_2fb5 sub c jr nc, .asm_2fb5 add c ld b, a push bc .asm_2fbb call $2f8c ld a, [$ffe1] ld c, a add b jr c, .asm_2fbb ld a, c pop bc call $3110 pop bc ret ; 2fcb GetSRAMBank: ; 2fcb ; load sram bank a ; if invalid bank, sram is disabled cp NUM_SRAM_BANKS jr c, OpenSRAM jr CloseSRAM ; 2fd1 OpenSRAM: ; 2fd1 ; switch to sram bank a push af ; latch clock data ld a, $1 ld [$6000], a ; enable sram/clock write ld a, $a ld [$0000], a ; select sram bank pop af ld [$4000], a ret ; 2fe1 CloseSRAM: ; 2fe1 ; preserve a push af ld a, $0 ; reset clock latch for next time ld [$6000], a ; disable sram/clock write ld [$0000], a pop af ret ; 2fec JpHl: ; 2fec jp [hl] ; 2fed INCBIN "baserom.gbc",$2fed,$300b-$2fed ClearSprites: ; 300b ld hl, Sprites ld b, TileMap - Sprites xor a .loop ld [hli], a dec b jr nz, .loop ret ; 3016 HideSprites: ; 3016 ; Set all OBJ y-positions to 160 to hide them offscreen ld hl, Sprites ld de, $0004 ; length of an OBJ struct ld b, $28 ; number of OBJ structs ld a, 160 ; y-position .loop ld [hl], a add hl, de dec b jr nz, .loop ret ; 3026 CopyBytes: ; 0x3026 ; copy bc bytes from hl to de inc b ; we bail the moment b hits 0, so include the last run inc c ; same thing; include last byte jr .HandleLoop .CopyByte ld a, [hli] ld [de], a inc de .HandleLoop dec c jr nz, .CopyByte dec b jr nz, .CopyByte ret SwapBytes: ; 0x3034 ; swap bc bytes between hl and de .Loop ; stash [hl] away on the stack ld a, [hl] push af ; copy a byte from [de] to [hl] ld a, [de] ld [hli], a ; retrieve the previous value of [hl]; put it in [de] pop af ld [de], a ; handle loop stuff inc de dec bc ld a, b or c jr nz, .Loop ret ByteFill: ; 0x3041 ; fill bc bytes with the value of a, starting at hl inc b ; we bail the moment b hits 0, so include the last run inc c ; same thing; include last byte jr .HandleLoop .PutByte ld [hli], a .HandleLoop dec c jr nz, .PutByte dec b jr nz, .PutByte ret GetFarByte: ; 0x304d ; retrieve a single byte from a:hl, and return it in a. ; bankswitch to new bank ld [$ff8b], a ld a, [$ff9d] push af ld a, [$ff8b] rst Bankswitch ; get byte from new bank ld a, [hl] ld [$ff8b], a ; bankswitch to previous bank pop af rst Bankswitch ; return retrieved value in a ld a, [$ff8b] ret GetFarHalfword: ; 0x305d ; retrieve a halfword from a:hl, and return it in hl. ; bankswitch to new bank ld [$ff8b], a ld a, [$ff9d] push af ld a, [$ff8b] rst Bankswitch ; get halfword from new bank, put it in hl ld a, [hli] ld h, [hl] ld l, a ; bankswitch to previous bank and return pop af rst Bankswitch ret ; 0x306b INCBIN "baserom.gbc",$306b,$30d6-$306b CopyName1: ; 30d6 ld hl, StringBuffer2 ; 30d9 CopyName2: ; 30d9 .loop ld a, [de] inc de ld [hli], a cp "@" jr nz, .loop ret ; 30e1 IsInArray: ; 30e1 ; 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 ; 0x30f4 SkipNames: ; 0x30f4 ; skips n names where n = a ld bc, $000b ; name length and a ret z .loop add hl, bc dec a jr nz, .loop ret ; 0x30fe AddNTimes: ; 0x30fe ; adds bc n times where n = a and a ret z .loop add hl, bc dec a jr nz, .loop ret ; 0x3105 INCBIN "baserom.gbc",$3105,$3119-$3105 Multiply: ; 0x3119 ; function to do multiplication ; all values are big endian ; INPUT ; ffb4-ffb6 = multiplicand ; ffb7 = multiplier ; OUTPUT ; ffb3-ffb6 = product INCBIN "baserom.gbc",$3119,$3124 - $3119 ; 0x3124 Divide: ; 0x3124 ; function to do division ; all values are big endian ; INPUT ; ffb3-ffb6 = dividend ; ffb7 = divisor ; b = number of bytes in the dividend (starting from ffb3) ; OUTPUT ; ffb4-ffb6 = quotient ; ffb7 = remainder INCBIN "baserom.gbc",$3124,$3136 - $3124 ; 0x3136 INCBIN "baserom.gbc",$3136,$313d - $3136 PrintLetterDelay: ; 313d ; wait some frames before printing the next letter ; the text speed setting in Options is actually a frame count ; fast: 1 frame ; mid: 3 frames ; slow: 5 frames ; $cfcf[!0] and A or B override text speed with a one-frame delay ; Options[4] and $cfcf[!1] disable the delay ; delay off? ld a, [Options] bit 4, a ; delay off ret nz ; non-scrolling text? ld a, [$cfcf] bit 1, a ret z push hl push de push bc ; save oam update status ld hl, $ffd8 ld a, [hl] push af ; orginally turned oam update off, commented out ; ld a, 1 ld [hl], a ; force fast scroll? ld a, [$cfcf] bit 0, a jr z, .fast ; text speed ld a, [Options] and a, %111 ; # frames to delay jr .updatedelay .fast ld a, 1 .updatedelay ld [TextDelayFrames], a .checkjoypad call GetJoypadPublic ; input override ld a, [$c2d7] and a jr nz, .wait ; wait one frame if holding a ld a, [$ffa8] ; joypad bit 0, a ; A jr z, .checkb jr .delay .checkb ; wait one frame if holding b bit 1, a ; B jr z, .wait .delay call DelayFrame jr .end .wait ; wait until frame counter hits 0 or the loop is broken ; this is a bad way to do this ld a, [TextDelayFrames] and a jr nz, .checkjoypad .end ; restore oam update flag (not touched in this fn anymore) pop af ld [$ffd8], a pop bc pop de pop hl ret ; 318c CopyDataUntil: ; 318c ; Copies [hl, bc) to [de, bc - hl). ; In other words, the source data is from hl up to but not including bc, ; and the destination is de. ld a, [hli] ld [de], a inc de ld a, h cp b jr nz, CopyDataUntil ld a, l cp c jr nz, CopyDataUntil ret ; 0x3198 INCBIN "baserom.gbc",$3198,$31db - $3198 StringCmp: ; 31db ; Compare strings, c bytes in length, at de and hl. ; Often used to compare big endian numbers in battle calculations. ld a, [de] cp [hl] ret nz inc de inc hl dec c jr nz, StringCmp ret ; 0x31e4 INCBIN "baserom.gbc",$31e4,$31f3 - $31e4 WhiteBGMap: ; 31f3 call ClearPalettes WaitBGMap: ; 31f6 ; Tell VBlank to update BG Map ld a, 1 ; BG Map 0 tiles ld [$ffd4], a ; Wait for it to do its magic ld c, 4 call DelayFrames ret ; 3200 INCBIN "baserom.gbc",$3200,$3317 - $3200 ClearPalettes: ; 3317 ; Make all palettes white ; For CGB we make all the palette colors white ld a, [$ffe6] and a jr nz, .cgb ; In DMG mode, we can just change palettes to 0 (white) xor a ld [$ff47], a ; BGP ld [$ff48], a ; OBP0 ld [$ff49], a ; OBP1 ret .cgb ; Save WRAM bank ld a, [$ff70] push af ; WRAM bank 5 ld a, 5 ld [$ff70], a ; Fill BGPals and OBPals with $ffff (white) ld hl, BGPals ld bc, $0080 ld a, $ff call ByteFill ; Restore WRAM bank pop af ld [$ff70], a ; Request palette update ld a, 1 ld [$ffe5], a ret ; 333e ClearSGB: ; 333e ld b, $ff GetSGBLayout: ; 3340 ; load sgb packets unless dmg ; check cgb ld a, [$ffe6] and a jr nz, .dosgb ; check sgb ld a, [$ffe7] and a ret z .dosgb ld a, $31 ; LoadSGBLayout jp Predef ; 334e INCBIN "baserom.gbc",$334e,$335f - $334e CountSetBits: ; 0x335f ; function to count how many bits are set in a string of bytes ; INPUT: ; hl = address of string of bytes ; b = length of string of bytes ; OUTPUT: ; [$d265] = number of set bits ld c, $0 .loop\@ ld a, [hli] ld e, a ld d, $8 .innerLoop\@ ; count how many bits are set in the current byte srl e ld a, $0 adc c ld c, a dec d jr nz, .innerLoop\@ dec b jr nz, .loop\@ ld a, c ld [$d265], a ret ; 0x3376 INCBIN "baserom.gbc",$3376,$33ab - $3376 NamesPointerTable: ; 33ab dbw BANK(PokemonNames), PokemonNames dbw BANK(MoveNames), MoveNames dbw $00, $0000 dbw BANK(ItemNames), ItemNames dbw $00, $ddff dbw $00, $d3a8 dbw BANK(TrainerClassNames), TrainerClassNames dbw $04, $4b52 GetName: ; 33c3 ld a, [$ff9d] push af push hl push bc push de ld a, [$cf61] cp $1 jr nz, .asm_33e1 ; 0x33ce $11 ld a, [$cf60] ld [$d265], a call $343b ld hl, $000b add hl, de ld e, l ld d, h jr .asm_3403 ; 0x33df $22 .asm_33e1 ld a, [$cf61] dec a ld e, a ld d, $0 ld hl, NamesPointerTable add hl, de add hl, de add hl, de ld a, [hli] rst Bankswitch ; Bankswitch ld a, [hli] ld h, [hl] ld l, a ld a, [$cf60] dec a call GetNthString ld de, $d073 ld bc, $000d call CopyBytes .asm_3403 ld a, e ld [$d102], a ld a, d ld [$d103], a pop de pop bc pop hl pop af rst Bankswitch ret ; 0x3411 INCBIN "baserom.gbc",$3411,$3411 - $3411 GetNthString: ; 3411 ; Starting at hl, this function returns the start address of the ath string. and a ret z push bc ld b, a ld c, "@" .readChar ld a, [hli] cp c jr nz, .readChar ; 0x3419 $fc dec b jr nz, .readChar ; 0x341c $f9 pop bc ret ; 0x3420 INCBIN "baserom.gbc",$3420,$3468 - $3420 GetItemName: ; 3468 push hl push bc ld a, [$d265] ; Get the item cp $bf ; Is it a TM? jr nc, .tm ; 0x346f $d ld [$cf60], a ld a, $4 ; Item names ld [$cf61], a call GetName jr .copied ; 0x347c $3 .tm call $3487 .copied ld de, $d073 pop bc pop hl ret ; 0x3487 INCBIN "baserom.gbc",$3487,$3856 - $3487 GetBaseStats: ; 3856 push bc push de push hl ; Save bank ld a, [$ff9d] push af ; Bankswitch ld a, BANK(BaseStats) rst Bankswitch ; Egg doesn't have base stats ld a, [CurSpecies] cp EGG jr z, .egg ; Get base stats dec a ld bc, BaseStats1 - BaseStats0 ld hl, BaseStats call AddNTimes ld de, CurBaseStats ld bc, BaseStats1 - BaseStats0 call CopyBytes jr .end .egg ; ???? ld de, $7d9c ; Sprite dimensions ld b, $55 ld hl, $d247 ld [hl], b ; ???? ld hl, $d248 ld [hl], e inc hl ld [hl], d inc hl ld [hl], e inc hl ld [hl], d jr .end .end ; Replace Pokedex # with species ld a, [CurSpecies] ld [CurBaseStats], a ; Restore bank pop af rst Bankswitch pop hl pop de pop bc ret ; 389c INCBIN "baserom.gbc",$389c,$38a2 - $389c GetNick: ; 38a2 ; get the nickname of a partymon ; write nick to StringBuffer1 ; input: a = which mon (0-5) push hl push bc ; skip [a] nicks call SkipNames ld de, StringBuffer1 ; write nick push de ld bc, PKMN_NAME_LENGTH call CopyBytes ; error-check pop de callab CheckNickErrors ; we're done pop bc pop hl ret ; 38bb PrintBCDNumber: ; 38bb ; function to print a BCD (Binary-coded decimal) number ; de = address of BCD number ; hl = destination address ; c = flags and length ; bit 7: if set, do not print leading zeroes ; if unset, print leading zeroes ; bit 6: if set, left-align the string (do not pad empty digits with spaces) ; if unset, right-align the string ; bit 5: if set, print currency symbol at the beginning of the string ; if unset, do not print the currency symbol ; bits 0-4: length of BCD number in bytes ; Note that bits 5 and 7 are modified during execution. The above reflects ; their meaning at the beginning of the functions's execution. ld b, c ; save flags in b res 7, c res 6, c res 5, c ; c now holds the length bit 5, b jr z, .loop\@ bit 7, b jr nz, .loop\@ ld [hl], "¥" inc hl .loop\@ ld a, [de] swap a call PrintBCDDigit ; print upper digit ld a, [de] call PrintBCDDigit ; print lower digit inc de dec c jr nz, .loop\@ bit 7, b ; were any non-zero digits printed? jr z, .done\@ ; if so, we are done .numberEqualsZero\@ ; if every digit of the BCD number is zero bit 6, b ; left or right alignment? jr nz, .skipRightAlignmentAdjustment\@ dec hl ; if the string is right-aligned, it needs to be moved back one space .skipRightAlignmentAdjustment\@ bit 5, b jr z, .skipCurrencySymbol\@ ld [hl], "¥" ; currency symbol inc hl .skipCurrencySymbol\@ ld [hl], "0" call PrintLetterDelay inc hl .done\@ ret ; 0x38f2 PrintBCDDigit: ; 38f2 and a, %00001111 and a jr z, .zeroDigit\@ .nonzeroDigit\@ bit 7, b ; have any non-space characters been printed? jr z, .outputDigit\@ ; if bit 7 is set, then no numbers have been printed yet bit 5, b ; print the currency symbol? jr z, .skipCurrencySymbol\@ ld [hl], "¥" inc hl res 5, b .skipCurrencySymbol\@ res 7, b ; unset 7 to indicate that a nonzero digit has been reached .outputDigit\@ add a, "0" ld [hli], a jp PrintLetterDelay .zeroDigit\@ bit 7, b ; either printing leading zeroes or already reached a nonzero digit? jr z, .outputDigit\@ ; if so, print a zero digit bit 6, b ; left or right alignment? ret nz ld a, " " ld [hli], a ; if right-aligned, "print" a space by advancing the pointer ret ; 0x3917 GetPartyParamLocation: ; 3917 ; Get the location of parameter a from CurPartyMon in hl push bc ld hl, PartyMons ld c, a ld b, $00 add hl, bc ld a, [CurPartyMon] call GetPartyLocation pop bc ret ; 3927 GetPartyLocation: ; 3927 ; Add the length of a PartyMon struct to hl a times ; input: ; a: partymon # ; hl: partymon struct ld bc, $0030 ; PARTYMON_LENGTH jp AddNTimes ; 392d INCBIN "baserom.gbc",$392d,$3b86 - $392d LoadMusicByte: ; 3b86 ; load music data into CurMusicByte ; input: ; a: bank ; de: address ld [$ff9d], a ld [$2000], a ; bankswitch ld a, [de] ld [CurMusicByte], a ld a, $3a ; manual bank restore ld [$ff9d], a ld [$2000], a ; bankswitch ret ; 3b97 StartMusic: ; 3b97 ; input: ; e = song number push hl push de push bc push af ld a, [$ff9d] ; save bank push af ld a, BANK(LoadMusic) ld [$ff9d], a ld [$2000], a ; bankswitch ld a, e ; song number and a jr z, .nomusic call LoadMusic jr .end .nomusic call SoundRestart .end pop af ld [$ff9d], a ; restore bank ld [$2000], a pop af pop bc pop de pop hl ret ; 3bbc INCBIN "baserom.gbc",$3bbc,$3c23 - $3bbc StartSFX: ; 3c23 ; sfx id order is by priority (highest to lowest) ; to disable this, remove the check! ; input: de = sfx id push hl push de push bc push af ; is something already playing? call CheckSFX jr nc, .asm_3c32 ; only play sfx if it has priority ld a, [CurSFX] cp e jr c, .quit .asm_3c32 ld a, [$ff9d] ; save bank push af ld a, $3a ; music bank ld [$ff9d], a ld [$2000], a ; bankswitch ld a, e ld [CurSFX], a call LoadSFX pop af ld [$ff9d], a ; restore bank ld [$2000], a ; bankswitch .quit pop af pop bc pop de pop hl ret ; 3c4e INCBIN "baserom.gbc",$3c4e,$3c55-$3c4e WaitSFX: ; 3c55 ; infinite loop until sfx is done playing push hl .loop ; ch5 on? ld hl, $c1cc ; Channel5Flags bit 0, [hl] jr nz, .loop ; ch6 on? ld hl, $c1fe ; Channel6Flags bit 0, [hl] jr nz, .loop ; ch7 on? ld hl, $c230 ; Channel7Flags bit 0, [hl] jr nz, .loop ; ch8 on? ld hl, $c262 ; Channel8Flags bit 0, [hl] jr nz, .loop ; we're done pop hl ret ; 3c74 INCBIN "baserom.gbc",$3c74,$3c97-$3c74 MaxVolume: ; 3c97 ld a, $77 ; max ld [Volume], a ret ; 3c9d LowVolume: ; 3c9d ld a, $33 ; 40% ld [Volume], a ret ; 3ca3 VolumeOff: ; 3ca3 xor a ld [Volume], a ret ; 3ca8 INCBIN "baserom.gbc",$3ca8,$3dde - $3ca8 CheckSFX: ; 3dde ; returns carry if sfx channels are active ld a, [$c1cc] ; 1 bit 0, a jr nz, .quit ld a, [$c1fe] ; 2 bit 0, a jr nz, .quit ld a, [$c230] ; 3 bit 0, a jr nz, .quit ld a, [$c262] ; 4 bit 0, a jr nz, .quit and a ret .quit scf ret ; 3dfe INCBIN "baserom.gbc",$3dfe,$3e10 - $3dfe ChannelsOff: ; 3e10 ; Quickly turn off music channels xor a ld [$c104], a ld [$c136], a ld [$c168], a ld [$c19a], a ld [$c29c], a ret ; 3e21 SFXChannelsOff: ; 3e21 ; Quickly turn off sound effect channels xor a ld [$c1cc], a ld [$c1fe], a ld [$c230], a ld [$c262], a ld [$c29c], a ret ; 3e32 INCBIN "baserom.gbc",$3e32,$3fb5 - $3e32 SECTION "bank1",DATA,BANK[$1] INCBIN "baserom.gbc",$4000,$617c - $4000 IntroFadePalettes: ; 0x617c db %01010100 db %10101000 db %11111100 db %11111000 db %11110100 db %11100100 ; 6182 INCBIN "baserom.gbc",$6182,$669f - $6182 CheckNickErrors: ; 669f ; error-check monster nick before use ; must be a peace offering to gamesharkers ; input: de = nick location push bc push de ld b, PKMN_NAME_LENGTH .checkchar ; end of nick? ld a, [de] cp "@" ; terminator jr z, .end ; check if this char is a text command ld hl, .textcommands dec hl .loop ; next entry inc hl ; reached end of commands table? ld a, [hl] cp a, $ff jr z, .done ; is the current char between this value (inclusive)... ld a, [de] cp [hl] inc hl jr c, .loop ; ...and this one? cp [hl] jr nc, .loop ; replace it with a "?" ld a, "?" ld [de], a jr .loop .done ; next char inc de ; reached end of nick without finding a terminator? dec b jr nz, .checkchar ; change nick to "?@" pop de push de ld a, "?" ld [de], a inc de ld a, "@" ld [de], a .end ; if the nick has any errors at this point it's out of our hands pop de pop bc ret ; 66cf .textcommands ; 66cf ; table definining which characters ; are actually text commands ; format: ; >= < db $00, $05 db $14, $19 db $1d, $26 db $35, $3a db $3f, $40 db $49, $5d db $5e, $7f db $ff ; end ; 66de INCBIN "baserom.gbc",$66de,$6eef - $66de DrawGraphic: ; 6eef ; input: ; hl: draw location ; b: height ; c: width ; d: tile to start drawing from ; e: number of tiles to advance for each row call $7009 pop bc pop hl ret c bit 5, [hl] jr nz, .asm_6f05 push hl call $70a4 pop hl ret c push hl call $70ed pop hl ret c .asm_6f05 and a ret ; 6f07 INCBIN "baserom.gbc",$6f07,$8000 - $6f07 SECTION "bank2",DATA,BANK[$2] INCBIN "baserom.gbc",$8000,$854b - $8000 GetPredefFn: ; 854b ; input: ; [$cfb4] id ; save hl for later ld a, h ld [$cfb5], a ld a, l ld [$cfb6], a push de ; get id ld a, [$cfb4] ld e, a ld d, $0 ld hl, PredefPointers ; seek add hl, de add hl, de add hl, de pop de ; store address in [$cfb7-8] ; addr lo ld a, [hli] ld [$cfb8], a ; addr hi ld a, [hli] ld [$cfb7], a ; get bank ld a, [hl] ret ; 856b PredefPointers: ; 856b ; $4b Predef pointers ; address, bank dwb $6508, $01 dwb $747a, $01 dwb $4658, $03 dwb $57c1, $13 dwb $4699, $03 dwb $5a6d, $03 dwb $588c, $03 dwb $5a96, $03 dwb $5b3f, $03 dwb $5e6e, $03 dwb $5f8c, $03 dwb $46e0, $03 dwb $6167, $03 dwb $617b, $03 dwb $5639, $04 dwb $566a, $04 dwb $4eef, $0a dwb $4b3e, $0b dwb $5f48, $0f dwb $6f6e, $0b dwb $5873, $0f dwb $6036, $0f dwb $74c1, $0f dwb $7390, $0f dwb $743d, $0f dwb $747c, $0f dwb $6487, $10 dwb $64e1, $10 dwb $61e6, $10 dwb $4f63, $0a dwb $4f24, $0a dwb $484a, $14 dwb $4d6f, $14 dwb $4d2e, $14 dwb $4cdb, $14 dwb $4c50, $14 dwb $4bdd, $14 dwb StatsScreenInit, BANK(StatsScreenInit) ; stats screen dwb $4b0a, $14 dwb $4b0e, $14 dwb $4b7b, $14 dwb $4964, $14 dwb $493a, $14 dwb $4953, $14 dwb $490d, $14 dwb $5040, $14 dwb $7cdd, $32 dwb $40d5, $33 dwb $5853, $02 dwb $464c, $02 dwb $5d11, $24 dwb $4a88, $02 dwb $420f, $23 dwb $4000, $23 dwb $4000, $23 dwb $40d6, $33 dwb $40d5, $33 dwb $40d5, $33 dwb $51d0, $3f dwb $6a6c, $04 dwb $5077, $14 dwb $516c, $14 dwb $508b, $14 dwb $520d, $14 dwb $525d, $14 dwb $47d3, $0d dwb $7908, $3e dwb $7877, $3e dwb $4000, $34 dwb $4d0a, $14 dwb $40a3, $34 dwb $408e, $34 dwb $4669, $34 dwb $466e, $34 dwb $43ff, $2d ; 864c INCBIN "baserom.gbc",$864c,$8a68 - $864c CheckShininess: ; 0x8a68 ; given a pointer to Attack/Defense DV in bc, determine if monster is shiny. ; if shiny, set carry. ld l,c ld h,b ld a,[hl] and a,%00100000 ; is attack DV xx1x? jr z,.NotShiny ld a,[hli] and a,%1111 cp $A ; is defense DV 1010? jr nz,.NotShiny ld a,[hl] and a,%11110000 cp $A0 ; is speed DV 1010? jr nz,.NotShiny ld a,[hl] and a,%1111 cp $A ; is special DV 1010? jr nz,.NotShiny scf ret .NotShiny and a ; clear carry flag ret INCBIN "baserom.gbc",$8a88,$9a52-$8a88 CopyData: ; 0x9a52 ; 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 ; 0x9a5b ClearBytes: ; 0x9a5b ; clear bc bytes of data starting from de xor a ld [de], a inc de dec bc ld a, c or b jr nz, ClearBytes ret ; 0x9a64 DrawDefaultTiles: ; 0x9a64 ; Draw 240 tiles (2/3 of the screen) from tiles in VRAM ld hl, $9800 ; BG Map 0 ld de, 32 - 20 ld a, $80 ; starting tile ld c, 12 + 1 .line ld b, 20 .tile ld [hli], a inc a dec b jr nz, .tile ; next line add hl, de dec c jr nz, .line ret ; 0x9a7a INCBIN "baserom.gbc",$9a7a,$a51e - $9a7a SGBBorder: INCBIN "gfx/misc/sgb_border.2bpp" INCBIN "baserom.gbc",$a8be,$a8d6 - $a8be PokemonPalettes: INCLUDE "gfx/pics/palette_pointers.asm" INCBIN "baserom.gbc",$b0ae,$b0d2 - $b0ae TrainerPalettes: INCLUDE "gfx/trainers/palette_pointers.asm" INCBIN "baserom.gbc",$b1de,$bc3a - $b1de SECTION "bank3",DATA,BANK[$3] INCBIN "baserom.gbc",$c000,$29 SpecialsPointers: ; 0xc029 dbw $25,$7c28 dbw $0a,$5ce8 dbw $0a,$5d11 dbw $0a,$5d92 dbw $0a,$5e66 dbw $0a,$5e82 dbw $0a,$5efa dbw $0a,$5eee dbw $0a,$5c92 dbw $0a,$5cf1 dbw $0a,$5cfa dbw $0a,$5bfb dbw $0a,$5c7b dbw $0a,$5ec4 dbw $0a,$5ed9 dbw $0a,$5eaf dbw $0a,$5f47 dbw $03,$42f6 dbw $03,$4309 dbw $41,$50b9 dbw $03,$434a dbw $13,$59e5 dbw $04,$7a12 dbw $04,$7a31 dbw $04,$75db dbw $3e,$7b32 dbw $3e,$7cd2 dbw $03,$4658 dbw $05,$559a dbw $03,$42e7 dbw $05,$66d6 dbw $05,$672a dbw $05,$6936 dbw $0b,$4547 dbw $05,$6218 dbw $23,$4c04 dbw $03,$429d dbw $24,$4913 dbw $03,$42c0 dbw $03,$42cd dbw $03,$4355 dbw $03,$4360 dbw $03,$4373 dbw $03,$4380 dbw $03,$438d dbw $03,$43db dbw $23,$4084 dbw $23,$4092 dbw $23,$40b6 dbw $23,$4079 dbw $23,$40ab dbw $00,$0d91 dbw $00,$31f3 dbw $00,$0485 dbw $00,$0fc8 dbw $00,$1ad2 dbw $00,$0e4a dbw $03,$4230 dbw $03,$4252 dbw BANK(WaitSFX),WaitSFX dbw $00,$3cdf dbw $00,$3d47 dbw $04,$6324 dbw $02,$4379 dbw $03,$425a dbw $03,$4268 dbw $03,$4276 dbw $03,$4284 dbw $03,$43ef dbw $05,$7421 dbw $05,$7440 dbw $04,$79a8 dbw $03,$43fc dbw $09,$6feb dbw $09,$7043 dbw $01,$7305 dbw $01,$737e dbw $01,$73f7 dbw BANK(SpecialCheckPokerus),SpecialCheckPokerus dbw $09,$4b25 dbw $09,$4b4e dbw $09,$4ae8 dbw $13,$587a dbw $03,$4434 dbw $03,$4422 dbw $13,$59d3 dbw $22,$4018 dbw $03,$42b9 dbw $03,$42da dbw $01,$718d dbw $01,$71ac dbw $0a,$64ab dbw $0a,$651f dbw $0a,$6567 dbw $05,$4209 dbw $3e,$7841 dbw BANK(SpecialSnorlaxAwake),SpecialSnorlaxAwake dbw $01,$7413 dbw $01,$7418 dbw $01,$741d dbw $03,$4472 dbw $09,$65ee dbw BANK(SpecialGameboyCheck),SpecialGameboyCheck dbw BANK(SpecialTrainerHouse),SpecialTrainerHouse dbw $05,$6dc7 dbw BANK(SpecialRoamMons), SpecialRoamMons dbw $03,$448f dbw $03,$449f dbw $03,$44ac dbw $46,$6c3e dbw $46,$7444 dbw $46,$75e8 dbw $46,$77e5 dbw $46,$7879 dbw $46,$7920 dbw $46,$793b dbw $5c,$40b0 dbw $5c,$40ba dbw $5c,$4114 dbw $5c,$4215 dbw $5c,$44e1 dbw $5c,$421d dbw $5c,$4b44 dbw $46,$7a38 dbw $5c,$4bd3 dbw $45,$7656 dbw $00,$0150 dbw $40,$51f1 dbw $40,$5220 dbw $40,$5225 dbw $40,$5231 dbw $12,$525b dbw $22,$6def dbw $47,$41ab dbw $5c,$4687 dbw $22,$6e68 dbw $5f,$5224 dbw $5f,$52b6 dbw $5f,$52ce dbw $5f,$753d dbw $40,$7612 dbw BANK(SpecialHoOhChamber),SpecialHoOhChamber dbw $40,$6142 dbw $12,$589a dbw $12,$5bf9 dbw $13,$70bc dbw $22,$6f6b dbw $22,$6fd4 dbw BANK(SpecialDratini),SpecialDratini dbw $04,$5485 dbw BANK(SpecialBeastsCheck),SpecialBeastsCheck dbw BANK(SpecialMonCheck),SpecialMonCheck dbw $03,$4225 dbw $5c,$4bd2 dbw $40,$766e dbw $40,$77eb dbw $40,$783c dbw $41,$60a2 dbw $05,$4168 dbw $40,$77c2 dbw $41,$630f dbw $40,$7780 dbw $40,$787b dbw $12,$6e12 dbw $41,$47eb dbw $12,$6927 dbw $24,$4a54 dbw $24,$4a88 dbw $03,$4224 INCBIN "baserom.gbc",$c224,$c3e2 - $c224 ScriptReturnCarry: ; c3e2 jr c, .carry xor a ld [ScriptVar], a ret .carry ld a, 1 ld [ScriptVar], a ret ; c3ef INCBIN "baserom.gbc",$c3ef,$c419 - $c3ef SpecialCheckPokerus: ; c419 ; Check if a monster in your party has Pokerus callba CheckPokerus jp ScriptReturnCarry ; c422 INCBIN "baserom.gbc",$c422,$c43d - $c422 SpecialSnorlaxAwake: ; 0xc43d ; Check if the Poké Flute channel is playing, and if the player is standing ; next to Snorlax. ; outputs: ; ScriptVar is 1 if the conditions are met, otherwise 0. ; check background music ld a, [$c2c0] cp $40 ; Poké Flute Channel jr nz, .nope ld a, [XCoord] ld b, a ld a, [YCoord] ld c, a ld hl, .ProximityCoords .loop ld a, [hli] cp $ff jr z, .nope cp b jr nz, .nextcoord ld a, [hli] cp c jr nz, .loop ld a, $1 jr .done .nextcoord inc hl jr .loop .nope xor a .done ld [ScriptVar], a ret .ProximityCoords db $21,$08 db $22,$0a db $23,$0a db $24,$08 db $24,$09 db $ff INCBIN "baserom.gbc",$c472,$c478 - $c472 SpecialGameboyCheck: ; c478 ; check cgb ld a, [$ffe6] and a jr nz, .cgb ; check sgb ld a, [$ffe7] and a jr nz, .sgb ; gb xor a jr .done .sgb ld a, 1 jr .done .cgb ld a, 2 .done ld [ScriptVar], a ret INCBIN "baserom.gbc",$c48f,$c4b9 - $c48f SpecialTrainerHouse: ; 0xc4b9 ld a, 0 call GetSRAMBank ld a, [$abfd] ; XXX what is this memory location? ld [ScriptVar], a jp CloseSRAM INCBIN "baserom.gbc",$c4c7,$c5d2 - $c4c7 PrintNumber_PrintDigit: ; c5d2 INCBIN "baserom.gbc",$c5d2,$c644 - $c5d2 PrintNumber_PrintLeadingZero: ; c644 ; prints a leading zero unless they are turned off in the flags bit 7, d ; print leading zeroes? ret z ld [hl], "0" ret PrintNumber_AdvancePointer: ; c64a ; increments the pointer unless leading zeroes are not being printed, ; the number is left-aligned, and no nonzero digits have been printed yet bit 7, d ; print leading zeroes? jr nz, .incrementPointer\@ bit 6, d ; left alignment or right alignment? jr z, .incrementPointer\@ ld a, [$ffb3] ; was H_PASTLEADINGZEROES and a ret z .incrementPointer\@ inc hl ret ; 0xc658 INCBIN "baserom.gbc",$c658,$c706 - $c658 GetPartyNick: ; c706 ; write CurPartyMon nickname to StringBuffer1-3 ld hl, PartyMon1Nickname ld a, $02 ld [$cf5f], a ld a, [CurPartyMon] call GetNick call CopyName1 ; copy text from StringBuffer2 to StringBuffer3 ld de, StringBuffer2 ld hl, StringBuffer3 call CopyName2 ret ; c721 CheckFlag2: ; c721 ; using bittable2 ; check flag id in de ; return carry if flag is not set ld b, $02 ; check flag callba GetFlag2 ld a, c and a jr nz, .isset scf ret .isset xor a ret ; c731 CheckBadge: ; c731 ; input: a = badge flag id ($1b-$2b) call CheckFlag2 ret nc ld hl, BadgeRequiredText call $1d67 ; push text to queue scf ret ; c73d BadgeRequiredText: ; c73d TX_FAR _BadgeRequiredText ; Sorry! A new BADGE db "@" ; is required. ; c742 CheckPartyMove: ; c742 ; checks if a pokemon in your party has a move ; e = partymon being checked ; input: d = move id ld e, $00 ; mon # xor a ld [CurPartyMon], a .checkmon ; check for valid species ld c, e ld b, $00 ld hl, PartySpecies add hl, bc ld a, [hl] and a ; no id jr z, .quit cp a, $ff ; terminator jr z, .quit cp a, EGG jr z, .nextmon ; navigate to appropriate move table ld bc, PartyMon2 - PartyMon1 ld hl, PartyMon1Moves ld a, e call AddNTimes ld b, $04 ; number of moves .checkmove ld a, [hli] cp d ; move id jr z, .end dec b ; how many moves left? jr nz, .checkmove .nextmon inc e ; mon # jr .checkmon .end ld a, e ld [CurPartyMon], a ; which mon has the move xor a ret .quit scf ret ; c779 INCBIN "baserom.gbc",$c779,$c986 - $c779 UsedSurfScript: ; c986 ; print "[MON] used SURF!" 2writetext UsedSurfText closetext loadmovesprites ; this does absolutely nothing 3callasm BANK(Functionc9a2), Functionc9a2 ; write surftype to PlayerState copybytetovar $d1eb ; Buffer2 writevarcode VAR_MOVEMENT ; update sprite tiles special SPECIAL_UPDATESPRITETILES ; start surf music special SPECIAL_BIKESURFMUSIC ; step into the water special SPECIAL_LOADFACESTEP ; (slow_step_x, step_end) applymovement $00, $d007 ; PLAYER, MovementBuffer end ; c9a2 Functionc9a2: ; c9a2 callba Function1060bb ; empty ret ; c9a9 UsedSurfText: ; c9a9 TX_FAR _UsedSurfText ; [MONSTER] used db "@" ; SURF! ; c9ae CantSurfText: ; c9ae TX_FAR _CantSurfText ; You can't SURF db "@" ; here. ; c9b3 AlreadySurfingText: ; c9b3 TX_FAR _AlreadySurfingText ; You're already db "@" ; SURFING. ; c9b8 GetSurfType: ; c9b8 ; get surfmon species ld a, [CurPartyMon] ld e, a ld d, $00 ld hl, PartySpecies add hl, de ; is pikachu surfing? ld a, [hl] cp PIKACHU ld a, PLAYER_SURF_PIKA ret z ld a, PLAYER_SURF ret ; c9cb CheckDirection: ; c9cb ; set carry if a tile permission prevents you ; from moving in the direction you are facing ; get player direction ld a, [PlayerDirection] and a, %00001100 ; bits 2 and 3 contain direction rrca rrca ld e, a ld d, $00 ld hl, .DirectionTable add hl, de ; can you walk in this direction? ld a, [TilePermissions] and [hl] jr nz, .quit xor a ret .quit scf ret ; c9e3 .DirectionTable ; c9e3 db %00001000 ; down db %00000100 ; up db %00000010 ; left db %00000001 ; right ; c9e7 CheckSurfOW: ; c9e7 ; called when checking a tile in the overworld ; check if you can surf ; return carry if conditions are met ; can we surf? ld a, [PlayerState] ; are you already surfing (pikachu)? cp PLAYER_SURF_PIKA jr z, .quit ; are you already surfing (normal)? cp PLAYER_SURF jr z, .quit ; are you facing a surf tile? ld a, [$d03e] ; buffer for the tile you are facing (used for other things too) call GetTileType cp $01 ; surfable jr nz, .quit ; does this contradict tile permissions? call CheckDirection jr c, .quit ; do you have fog badge? ld de, $001e ; FLAG_FOG_BADGE call CheckFlag2 jr c, .quit ; do you have a monster with surf? ld d, SURF call CheckPartyMove jr c, .quit ; can you get off the bike (cycling road)? ld hl, $dbf5 ; overworld flags bit 1, [hl] ; always on bike (can't surf) jr nz, .quit ; load surftype into MovementType call GetSurfType ld [$d1eb], a ; MovementType ; get surfmon nick call GetPartyNick ; run AskSurfScript ld a, BANK(AskSurfScript) ld hl, AskSurfScript call PushScriptPointer ; conditions were met scf ret .quit ; conditions were not met xor a ret ; ca2c AskSurfScript: ; ca2c loadfont 2writetext AskSurfText yesorno iftrue UsedSurfScript loadmovesprites end AskSurfText: ; ca36 TX_FAR _AskSurfText ; The water is calm. db "@" ; Want to SURF? ; ca3b INCBIN "baserom.gbc",$ca3b,$10000 - $ca3b SECTION "bank4",DATA,BANK[$4] INCBIN "baserom.gbc",$10000,$10b16 - $10000 PackGFX: INCBIN "gfx/misc/pack.2bpp" INCBIN "baserom.gbc",$113d6,$1167a - $113d6 TechnicalMachines: ; 0x1167a db DYNAMICPUNCH db HEADBUTT db CURSE db ROLLOUT db ROAR db TOXIC db ZAP_CANNON db ROCK_SMASH db PSYCH_UP db HIDDEN_POWER db SUNNY_DAY db SWEET_SCENT db SNORE db BLIZZARD db HYPER_BEAM db ICY_WIND db PROTECT db RAIN_DANCE db GIGA_DRAIN db ENDURE db FRUSTRATION db SOLARBEAM db IRON_TAIL db DRAGONBREATH db THUNDER db EARTHQUAKE db RETURN db DIG db PSYCHIC_M db SHADOW_BALL db MUD_SLAP db DOUBLE_TEAM db ICE_PUNCH db SWAGGER db SLEEP_TALK db SLUDGE_BOMB db SANDSTORM db FIRE_BLAST db SWIFT db DEFENSE_CURL db THUNDERPUNCH db DREAM_EATER db DETECT db REST db ATTRACT db THIEF db STEEL_WING db FIRE_PUNCH db FURY_CUTTER db NIGHTMARE db CUT db FLY db SURF db STRENGTH db FLASH db WHIRLPOOL db WATERFALL INCBIN "baserom.gbc",$116b3,$11ce7 - $116b3 NameInputLower: db "a b c d e f g h i" db "j k l m n o p q r" db "s t u v w x y z " db "× ( ) : ; [ ] ", $e1, " ", $e2 db "UPPER DEL END " BoxNameInputLower: db "a b c d e f g h i" db "j k l m n o p q r" db "s t u v w x y z " db "é 'd 'l 'm 'r 's 't 'v 0" db "1 2 3 4 5 6 7 8 9" db "UPPER DEL END " NameInputUpper: db "A B C D E F G H I" db "J K L M N O P Q R" db "S T U V W X Y Z " db "- ? ! / . , " db "lower DEL END " BoxNameInputUpper: db "A B C D E F G H I" db "J K L M N O P Q R" db "S T U V W X Y Z " db "× ( ) : ; [ ] ", $e1, " ", $e2 db "- ? ! ♂ ♀ / . , &" db "lower DEL END " INCBIN "baserom.gbc",$11e5d,$12976 - $11e5d OpenPartyMenu: ; $12976 ld a, [PartyCount] and a jr z, .return ; no pokémon in party call $2b29 ; fade in? .choosemenu ; 1297f xor a ld [PartyMenuActionText], a ; Choose a POKéMON. call $31f3 ; this is also a predef/special, something with delayframe .menu ; 12986 ld a, $14 ld hl, $404f rst $8 ; load gfx ld a, $14 ld hl, $4405 rst $8 ; setup menu? ld a, $14 ld hl, $43e0 rst $8 ; load menu pokémon sprites .menunoreload ; 12998 ld a, BANK(WritePartyMenuTilemap) ld hl, WritePartyMenuTilemap rst $8 ld a, BANK(PrintPartyMenuText) ld hl, PrintPartyMenuText rst $8 call $31f6 call $32f9 ; load regular palettes? call DelayFrame ld a, BANK(PartyMenuSelect) ld hl, PartyMenuSelect rst $8 jr c, .return ; if cancelled or pressed B call PokemonActionSubmenu cp $3 jr z, .menu cp $0 jr z, .choosemenu cp $1 jr z, .menunoreload cp $2 jr z, .quit .return ; 129c8 call $2b3c ld a, $0 ret .quit ; 129ce ld a, b push af call $2b4d pop af ret ; 0x129d5 INCBIN "baserom.gbc",$129d5,$12a88 - $129d5 PokemonActionSubmenu ; 0x12a88 ld hl, $c5cd ; coord ld bc, $0212 ; box size call $0fb6 ; draw box ld a, $9 ld hl, $4d19 rst $8 call $389c ld a, [$cf74] ; menu selection? ld hl, PokemonSubmenuActionPointerTable ld de, $0003 ; skip 3 bytes each time call IsInArray jr nc, .nothing inc hl ld a, [hli] ld h, [hl] ld l, a jp [hl] .nothing ld a, $0 ret ; 0x12ab0 PokemonSubmenuActionPointerTable: ; 0x12ab0 dbw $01, $6e1b dbw $02, $6e30 dbw $03, $6ebd dbw $04, $6e6a dbw $06, $6e55 dbw $07, $6e7f dbw $08, $6ed1 dbw $09, $6ea9 dbw $0a, $6ee6 dbw $0d, $6ee6 dbw $0b, $6f26 dbw $05, $6e94 dbw $0c, $6f3b dbw $0e, $6f50 dbw $0f, OpenPartyStats ; stats dbw $10, $6aec ; switch dbw $11, $6b60 ; item dbw $12, $6a79 dbw $13, $6fba ; move dbw $14, $6d45 ; mail ; no terminator? ; 0x12aec INCBIN "baserom.gbc",$12aec,$12e00 - $12aec OpenPartyStats: ; 12e00 call $1d6e call $300b xor a ld [MonType], a ; partymon call LowVolume ld a, $25 call Predef call MaxVolume call $1d7d ld a, $0 ret ; 0x12e1b INCBIN "baserom.gbc",$12e1b,$14000 - $12e1b SECTION "bank5",DATA,BANK[$5] INCBIN "baserom.gbc",$14000,$14032 - $14000 GetTimeOfDay: ; 14032 ; get time of day based on the current hour ld a, [$ff94] ; hour ld hl, TimeOfDayTable .check ; if we're within the given time period, ; get the corresponding time of day cp [hl] jr c, .match ; else, get the next entry inc hl inc hl ; try again jr .check .match ; get time of day inc hl ld a, [hl] ld [TimeOfDay], a ret ; 14044 TimeOfDayTable: ; 14044 ; boundaries for the time of day ; 04-09 morn | 10-17 day | 18-03 nite ; hr, time of day db 04, $02 ; NITE db 10, $00 ; MORN db 18, $01 ; DAY db 24, $02 ; NITE ; 1404c INCBIN "baserom.gbc",$1404c,$152ab - $1404c BlackoutPoints: ; 0x152ab db GROUP_KRISS_HOUSE_2F, MAP_KRISS_HOUSE_2F, 3, 3 db GROUP_VIRIDIAN_POKECENTER_1F, MAP_VIRIDIAN_POKECENTER_1F, 5, 3 ; unused db GROUP_PALLET_TOWN, MAP_PALLET_TOWN, 5, 6 db GROUP_VIRIDIAN_CITY, MAP_VIRIDIAN_CITY, 23, 26 db GROUP_PEWTER_CITY, MAP_PEWTER_CITY, 13, 26 db GROUP_CERULEAN_CITY, MAP_CERULEAN_CITY, 19, 22 db GROUP_ROUTE_10A, MAP_ROUTE_10A, 11, 2 db GROUP_VERMILION_CITY, MAP_VERMILION_CITY, 9, 6 db GROUP_LAVENDER_TOWN, MAP_LAVENDER_TOWN, 5, 6 db GROUP_SAFFRON_CITY, MAP_SAFFRON_CITY, 9, 30 db GROUP_CELADON_CITY, MAP_CELADON_CITY, 29, 10 db GROUP_FUCHSIA_CITY, MAP_FUCHSIA_CITY, 19, 28 db GROUP_CINNABAR_ISLAND, MAP_CINNABAR_ISLAND, 11, 12 db GROUP_ROUTE_23, MAP_ROUTE_23, 9, 6 db GROUP_NEW_BARK_TOWN, MAP_NEW_BARK_TOWN, 13, 6 db GROUP_CHERRYGROVE_CITY, MAP_CHERRYGROVE_CITY, 29, 4 db GROUP_VIOLET_CITY, MAP_VIOLET_CITY, 31, 26 db GROUP_ROUTE_32, MAP_ROUTE_32, 11, 74 db GROUP_AZALEA_TOWN, MAP_AZALEA_TOWN, 15, 10 db GROUP_CIANWOOD_CITY, MAP_CIANWOOD_CITY, 23, 44 db GROUP_GOLDENROD_CITY, MAP_GOLDENROD_CITY, 15, 28 db GROUP_OLIVINE_CITY, MAP_OLIVINE_CITY, 13, 22 db GROUP_ECRUTEAK_CITY, MAP_ECRUTEAK_CITY, 23, 28 db GROUP_MAHOGANY_TOWN, MAP_MAHOGANY_TOWN, 15, 14 db GROUP_LAKE_OF_RAGE, MAP_LAKE_OF_RAGE, 21, 29 db GROUP_BLACKTHORN_CITY, MAP_BLACKTHORN_CITY, 21, 30 db GROUP_SILVER_CAVE_OUTSIDE, MAP_SILVER_CAVE_OUTSIDE, 23, 20 db GROUP_FAST_SHIP_CABINS_SW_SSW_NW, MAP_FAST_SHIP_CABINS_SW_SSW_NW, 6, 2 db $ff, $ff, $ff, $ff INCBIN "baserom.gbc",$1531f,$174ba - $1531f SECTION "bank6",DATA,BANK[$6] Tileset03GFX: ; 18000 INCBIN "gfx/tilesets/03.lz" ; 18605 INCBIN "baserom.gbc", $18605, $19006 - $18605 Tileset00GFX: Tileset01GFX: ; 19006 INCBIN "gfx/tilesets/01.lz" ; 19c0d INCBIN "baserom.gbc", $19c0d, $1a60e - $19c0d Tileset29GFX: ; 1a60e INCBIN "gfx/tilesets/29.lz" ; 1af38 INCBIN "baserom.gbc", $1af38, $1b43e - $1af38 Tileset20GFX: ; 1b43e INCBIN "gfx/tilesets/20.lz" ; 1b8f1 INCBIN "baserom.gbc", $1b8f1, $1c000 - $1b8f1 SECTION "bank7",DATA,BANK[$7] INCBIN "baserom.gbc", $1c000, $1c30c - $1c000 Tileset07GFX: ; 1c30c INCBIN "gfx/tilesets/07.lz" ; 1c73b INCBIN "baserom.gbc", $1c73b, $1cc3c - $1c73b Tileset09GFX: ; 1cc3c INCBIN "gfx/tilesets/09.lz" ; 1d047 INCBIN "baserom.gbc", $1d047, $1d54c - $1d047 Tileset06GFX: ; 1d54c INCBIN "gfx/tilesets/06.lz" ; 1d924 INCBIN "baserom.gbc", $1d924, $1de2c - $1d924 Tileset13GFX: ; 1de2c INCBIN "gfx/tilesets/13.lz" ; 1e58c INCBIN "baserom.gbc", $1e58c, $1ea8c - $1e58c Tileset24GFX: ; 1ea8c INCBIN "gfx/tilesets/24.lz" ; 1ee0e INCBIN "baserom.gbc", $1ee0e, $1f31c - $1ee0e ; Songs i Music_Credits: INCLUDE "audio/music/credits.asm" Music_Clair: INCLUDE "audio/music/clair.asm" Music_MobileAdapter: INCLUDE "audio/music/mobileadapter.asm" INCBIN "baserom.gbc",$1ff6c, $20000 - $1ff6c SECTION "bank8",DATA,BANK[$8] INCBIN "baserom.gbc", $20000, $20181 - $20000 Tileset23GFX: ; 20181 INCBIN "gfx/tilesets/23.lz" ; 206d2 INCBIN "baserom.gbc", $206d2, $20be1 - $206d2 Tileset10GFX: ; 20be1 INCBIN "gfx/tilesets/10.lz" ; 213e0 INCBIN "baserom.gbc", $213e0, $218e1 - $213e0 Tileset12GFX: ; 218e1 INCBIN "gfx/tilesets/12.lz" ; 22026 INCBIN "baserom.gbc", $22026, $22531 - $22026 Tileset14GFX: ; 22531 INCBIN "gfx/tilesets/14.lz" ; 22ae2 INCBIN "baserom.gbc", $22ae2, $22ff1 - $22ae2 Tileset17GFX: ; 22ff1 INCBIN "gfx/tilesets/17.lz" ; 23391 INCBIN "baserom.gbc",$23391,$23b11 - $23391 EggMovePointers: ; 0x23b11 INCLUDE "stats/egg_move_pointers.asm" INCLUDE "stats/egg_moves.asm" SECTION "bank9",DATA,BANK[$9] INCBIN "baserom.gbc",$24000,$270c4 - $24000 GetTrainerDVs: ; 270c4 ; get dvs based on trainer class ; output: bc push hl ; dec trainer class so there's no filler entry for $00 ld a, [OtherTrainerClass] dec a ld c, a ld b, $0 ; seek table ld hl, TrainerClassDVs add hl, bc add hl, bc ; get dvs ld a, [hli] ld b, a ld c, [hl] ; we're done pop hl ret ; 270d6 TrainerClassDVs ; 270d6 ; AtkDef, SpdSpc db $9A, $77 ; falkner db $88, $88 ; bugsy db $98, $88 ; whitney db $98, $88 ; morty db $98, $88 ; pryce db $98, $88 ; jasmine db $98, $88 ; chuck db $7C, $DD ; clair db $DD, $DD ; rival1 db $98, $88 ; pokemon prof db $DC, $DD ; will db $DC, $DD ; cal db $DC, $DD ; bruno db $7F, $DF ; karen db $DC, $DD ; koga db $DC, $DD ; champion db $98, $88 ; brock db $78, $88 ; misty db $98, $88 ; lt surge db $98, $88 ; scientist db $78, $88 ; erika db $98, $88 ; youngster db $98, $88 ; schoolboy db $98, $88 ; bird keeper db $58, $88 ; lass db $98, $88 ; janine db $D8, $C8 ; cooltrainerm db $7C, $C8 ; cooltrainerf db $69, $C8 ; beauty db $98, $88 ; pokemaniac db $D8, $A8 ; gruntm db $98, $88 ; gentleman db $98, $88 ; skier db $68, $88 ; teacher db $7D, $87 ; sabrina db $98, $88 ; bug catcher db $98, $88 ; fisher db $98, $88 ; swimmerm db $78, $88 ; swimmerf db $98, $88 ; sailor db $98, $88 ; super nerd db $98, $88 ; rival2 db $98, $88 ; guitarist db $A8, $88 ; hiker db $98, $88 ; biker db $98, $88 ; blaine db $98, $88 ; burglar db $98, $88 ; firebreather db $98, $88 ; juggler db $98, $88 ; blackbelt db $D8, $A8 ; executivem db $98, $88 ; psychic db $6A, $A8 ; picnicker db $98, $88 ; camper db $7E, $A8 ; executivef db $98, $88 ; sage db $78, $88 ; medium db $98, $88 ; boarder db $98, $88 ; pokefanm db $68, $8A ; kimono girl db $68, $A8 ; twins db $6D, $88 ; pokefanf db $FD, $DE ; red db $9D, $DD ; blue db $98, $88 ; officer db $7E, $A8 ; gruntf db $98, $88 ; mysticalman ; 2715c INCBIN "baserom.gbc",$2715c,$28000 - $2715c SECTION "bankA",DATA,BANK[$A] INCBIN "baserom.gbc",$28000,$2a2a0 - $28000 SpecialRoamMons: ; 2a2a0 ; initialize RoamMon structs ; include commented-out parts from the gs function ; species ld a, RAIKOU ld [RoamMon1Species], a ld a, ENTEI ld [RoamMon2Species], a ; ld a, SUICUNE ; ld [RoamMon3Species], a ; level ld a, 40 ld [RoamMon1Level], a ld [RoamMon2Level], a ; ld [RoamMon3Level], a ; raikou starting map ld a, GROUP_ROUTE_42 ld [RoamMon1MapGroup], a ld a, MAP_ROUTE_42 ld [RoamMon1MapNumber], a ; entei starting map ld a, GROUP_ROUTE_37 ld [RoamMon2MapGroup], a ld a, MAP_ROUTE_37 ld [RoamMon2MapNumber], a ; suicune starting map ; ld a, GROUP_ROUTE_38 ; ld [RoamMon3MapGroup], a ; ld a, MAP_ROUTE_38 ; ld [RoamMon3MapNumber], a ; hp xor a ; generate new stats ld [RoamMon1CurHP], a ld [RoamMon2CurHP], a ; ld [RoamMon3CurHP], a ret ; 2a2ce INCBIN "baserom.gbc",$2a2ce,$2a5e9 - $2a2ce WildMons1: ; 0x2a5e9 INCLUDE "stats/wild/johto_grass.asm" WildMons2: ; 0x2b11d INCLUDE "stats/wild/johto_water.asm" WildMons3: ; 0x2b274 INCLUDE "stats/wild/kanto_grass.asm" WildMons4: ; 0x2b7f7 INCLUDE "stats/wild/kanto_water.asm" WildMons5: ; 0x2b8d0 INCLUDE "stats/wild/swarm_grass.asm" WildMons6: ; 0x2b92f INCLUDE "stats/wild/swarm_water.asm" INCBIN "baserom.gbc", $2b930, $2ba1a - $2b930 PlayerGFX: ; 2ba1a INCBIN "gfx/misc/player.lz" ; 2bba1 db 0, 0, 0, 0, 0, 0, 0, 0, 0 ; filler DudeGFX: ; 2bbaa INCBIN "gfx/misc/dude.lz" ; 2bce1 SECTION "bankB",DATA,BANK[$B] INCBIN "baserom.gbc",$2C000,$2c1ef - $2C000 TrainerClassNames: ; 2c1ef db "LEADER@" db "LEADER@" db "LEADER@" db "LEADER@" db "LEADER@" db "LEADER@" db "LEADER@" db "LEADER@" db "RIVAL@" db "#MON PROF.@" db "ELITE FOUR@" db $4a, " TRAINER@" db "ELITE FOUR@" db "ELITE FOUR@" db "ELITE FOUR@" db "CHAMPION@" db "LEADER@" db "LEADER@" db "LEADER@" db "SCIENTIST@" db "LEADER@" db "YOUNGSTER@" db "SCHOOLBOY@" db "BIRD KEEPER@" db "LASS@" db "LEADER@" db "COOLTRAINER@" db "COOLTRAINER@" db "BEAUTY@" db "#MANIAC@" db "ROCKET@" db "GENTLEMAN@" db "SKIER@" db "TEACHER@" db "LEADER@" db "BUG CATCHER@" db "FISHER@" db "SWIMMER♂@" db "SWIMMER♀@" db "SAILOR@" db "SUPER NERD@" db "RIVAL@" db "GUITARIST@" db "HIKER@" db "BIKER@" db "LEADER@" db "BURGLAR@" db "FIREBREATHER@" db "JUGGLER@" db "BLACKBELT@" db "ROCKET@" db "PSYCHIC@" db "PICNICKER@" db "CAMPER@" db "ROCKET@" db "SAGE@" db "MEDIUM@" db "BOARDER@" db "#FAN@" db "KIMONO GIRL@" db "TWINS@" db "#FAN@" db $4a, " TRAINER@" db "LEADER@" db "OFFICER@" db "ROCKET@" db "MYSTICALMAN@" INCBIN "baserom.gbc",$2C41a,$2ee8f - $2C41a ; XXX this is not the start of the routine ; determine what music plays in battle ld a, [OtherTrainerClass] ; are we fighting a trainer? and a jr nz, .trainermusic ld a, BANK(RegionCheck) ld hl, RegionCheck rst FarCall ld a, e and a jr nz, .kantowild ld de, $0029 ; johto daytime wild battle music ld a, [TimeOfDay] ; check time of day cp $2 ; nighttime? jr nz, .done ; if no, then done ld de, $004a ; johto nighttime wild battle music jr .done .kantowild ld de, $0008 ; kanto wild battle music jr .done .trainermusic ld de, $002f ; lance battle music cp CHAMPION jr z, .done cp RED jr z, .done ; really, they should have included admins and scientists here too... ld de, $0031 ; rocket battle music cp GRUNTM jr z, .done cp GRUNTF jr z, .done ld de, $0006 ; kanto gym leader battle music ld a, BANK(IsKantoGymLeader) ld hl, IsKantoGymLeader rst FarCall jr c, .done ld de, $002e ; johto gym leader battle music ld a, BANK(IsJohtoGymLeader) ld hl, IsJohtoGymLeader rst FarCall jr c, .done ld de, $0030 ; rival battle music ld a, [OtherTrainerClass] cp RIVAL1 jr z, .done cp RIVAL2 jr nz, .othertrainer ld a, [OtherTrainerID] ; which rival are we fighting? cp $4 jr c, .done ; if it's not the fight inside Indigo Plateau, we're done ld de, $002f ; rival indigo plateau battle music jr .done .othertrainer ld a, [InLinkBattle] and a jr nz, .linkbattle ld a, BANK(RegionCheck) ld hl, RegionCheck rst FarCall ld a, e and a jr nz, .kantotrainer .linkbattle ld de, $002a ; johto trainer battle music jr .done .kantotrainer ld de, $0007 ; kanto trainer battle music .done call $3b97 pop bc pop de pop hl ret INCBIN "baserom.gbc",$2ef18,$30000 - $2ef18 SECTION "bankC",DATA,BANK[$C] Tileset15GFX: ; 30000 INCBIN "gfx/tilesets/15.lz" ; 304d7 INCBIN "baserom.gbc", $304d7, $309e0 - $304d7 Tileset25GFX: ; 309e0 INCBIN "gfx/tilesets/25.lz" ; 30e78 INCBIN "baserom.gbc", $30e78, $31380 - $30e78 Tileset27GFX: ; 31380 INCBIN "gfx/tilesets/27.lz" ; 318dc INCBIN "baserom.gbc", $318dc, $31de0 - $318dc Tileset28GFX: ; 31de0 INCBIN "gfx/tilesets/28.lz" ; 321a6 INCBIN "baserom.gbc", $321a6, $326b0 - $321a6 Tileset30GFX: ; 326b0 INCBIN "gfx/tilesets/30.lz" ; 329ed INCBIN "baserom.gbc",$329ed,$34000 - $329ed SECTION "bankD",DATA,BANK[$D] INCBIN "baserom.gbc",$34000,$34bb1 - $34000 TypeMatchup: ; 34bb1 INCLUDE "battle/type_matchup.asm" ; 34cfd INCBIN "baserom.gbc",$34cfd,$38000 - $34cfd SECTION "bankE",DATA,BANK[$E] INCBIN "baserom.gbc",$38000,$39999 - $38000 TrainerGroups: ; 0x39999 INCLUDE "trainers/trainer_pointers.asm" INCLUDE "trainers/trainers.asm" SECTION "bankF",DATA,BANK[$F] INCBIN "baserom.gbc",$3C000,$3d123 - $3C000 ; These functions check if the current opponent is a gym leader or one of a ; few other special trainers. ; Note: KantoGymLeaders is a subset of JohtoGymLeaders. If you wish to ; differentiate between the two, call IsKantoGymLeader first. ; The Lance and Red entries are unused for music checks; those trainers are ; accounted for elsewhere. IsKantoGymLeader: ; 0x3d123 ld hl, KantoGymLeaders jr IsGymLeaderCommon IsJohtoGymLeader: ; 0x3d128 ld hl, JohtoGymLeaders IsGymLeaderCommon: push de ld a, [OtherTrainerClass] ld de, $0001 call IsInArray pop de ret ; 0x3d137 JohtoGymLeaders: db FALKNER db WHITNEY db BUGSY db MORTY db PRYCE db JASMINE db CHUCK db CLAIR db WILL db BRUNO db KAREN db KOGA ; fallthrough ; these two entries are unused db CHAMPION db RED ; fallthrough KantoGymLeaders: db BROCK db MISTY db LT_SURGE db ERIKA db JANINE db SABRINA db BLAINE db BLUE db $ff INCBIN "baserom.gbc",$3d14e,$3ddc2 - $3d14e ld hl, RecoveredUsingText jp $3ad5 ; 0x3ddc8 INCBIN "baserom.gbc",$3ddc8,$3e8eb - $3ddc8 LoadEnemyMon: ; 3e8eb ; Initialize enemy monster parameters ; To do this we pull the species from TempEnemyMonSpecies ; Notes: ; FarBattleRNG is used to ensure sync between Game Boys ; Clear the whole EnemyMon struct xor a ld hl, EnemyMonSpecies ld bc, $0027 call ByteFill ; We don't need to be here if we're in a link battle ld a, [InLinkBattle] and a jp nz, $5abd ld a, [$cfc0] ; ???? bit 0, a jp nz, $5abd ; Make sure everything knows what species we're working with ld a, [TempEnemyMonSpecies] ld [EnemyMonSpecies], a ld [CurSpecies], a ld [CurPartySpecies], a ; Grab the base stats for this species call GetBaseStats ; Let's get the item: ; Is the item predetermined? ld a, [IsInBattle] dec a jr z, .WildItem ; If we're in a trainer battle, the item is in the party struct ld a, [CurPartyMon] ld hl, OTPartyMon1Item call GetPartyLocation ; bc = PartyMon[CurPartyMon] - PartyMons ld a, [hl] jr .UpdateItem .WildItem ; In a wild battle, we pull from the item slots in base stats ; Force Item1 ; Used for Ho-Oh, Lugia and Snorlax encounters ld a, [BattleType] cp BATTLETYPE_FORCEITEM ld a, [$d241] ; BufferMonItem1 jr z, .UpdateItem ; Failing that, it's all up to chance ; Effective chances: ; 75% None ; 23% Item1 ; 2% Item2 ; 25% chance of getting an item call FarBattleRNG cp a, $c0 ; $c0/$100 = 75% ld a, NO_ITEM jr c, .UpdateItem ; From there, an 8% chance for Item2 call FarBattleRNG cp a, $14 ; 8% of 25% = 2% Item2 ld a, [$d241] ; BaseStatsItem1 jr nc, .UpdateItem ld a, [$d242] ; BaseStatsItem2 .UpdateItem ld [EnemyMonItem], a ; Initialize DVs ; If we're in a trainer battle, DVs are predetermined ld a, [IsInBattle] and a jr z, .InitDVs ; ???? ld a, [$c671] bit 3, a jr z, .InitDVs ; Unknown ld hl, $c6f2 ld de, EnemyMonDVs ld a, [hli] ld [de], a inc de ld a, [hl] ld [de], a jp .Happiness .InitDVs ; Trainer DVs ; All trainers have preset DVs, determined by class ; See GetTrainerDVs for more on that callba GetTrainerDVs ; These are the DVs we'll use if we're actually in a trainer battle ld a, [IsInBattle] dec a jr nz, .UpdateDVs ; Wild DVs ; Here's where the fun starts ; Roaming monsters (Entei, Raikou) work differently ; They have their own structs, which are shorter than normal ld a, [BattleType] cp a, BATTLETYPE_ROAMING jr nz, .NotRoaming ; Grab HP call GetRoamMonHP ld a, [hl] ; Check if the HP has been initialized and a ; We'll do something with the result in a minute push af ; Grab DVs call GetRoamMonDVs inc hl ld a, [hld] ld c, a ld b, [hl] ; Get back the result of our check pop af ; If the RoamMon struct has already been initialized, we're done jr nz, .UpdateDVs ; If it hasn't, we need to initialize the DVs ; (HP is initialized at the end of the battle) call GetRoamMonDVs inc hl call FarBattleRNG ld [hld], a ld c, a call FarBattleRNG ld [hl], a ld b, a ; We're done with DVs jr .UpdateDVs .NotRoaming ; Register a contains BattleType ; Forced shiny battle type ; Used by Red Gyarados at Lake of Rage cp a, BATTLETYPE_SHINY jr nz, .GenerateDVs ld b, ATKDEFDV_SHINY ; $ea ld c, SPDSPCDV_SHINY ; $aa jr .UpdateDVs .GenerateDVs ; Generate new random DVs call FarBattleRNG ld b, a call FarBattleRNG ld c, a .UpdateDVs ; Input DVs in register bc ld hl, EnemyMonDVs ld a, b ld [hli], a ld [hl], c ; We've still got more to do if we're dealing with a wild monster ld a, [IsInBattle] dec a jr nz, .Happiness ; Species-specfic: ; Unown ld a, [TempEnemyMonSpecies] cp a, UNOWN jr nz, .Magikarp ; Get letter based on DVs ld hl, EnemyMonDVs ld a, PREDEF_GETUNOWNLETTER call Predef ; Can't use any letters that haven't been unlocked ; If combined with forced shiny battletype, causes an infinite loop call CheckUnownLetter jr c, .GenerateDVs ; try again .Magikarp ; Skimming this part recommended ld a, [TempEnemyMonSpecies] cp a, MAGIKARP jr nz, .Happiness ; Get Magikarp's length ld de, EnemyMonDVs ld bc, PlayerID callab CalcMagikarpLength ; We're clear if the length is < 1536 ld a, [MagikarpLengthHi] cp a, $06 ; $600 = 1536 jr nz, .CheckMagikarpArea ; 5% chance of skipping size checks call RNG cp a, $0c ; / $100 jr c, .CheckMagikarpArea ; Try again if > 1614 ld a, [MagikarpLengthLo] cp a, $50 jr nc, .GenerateDVs ; 20% chance of skipping this check call RNG cp a, $32 ; / $100 jr c, .CheckMagikarpArea ; Try again if > 1598 ld a, [MagikarpLengthLo] cp a, $40 jr nc, .GenerateDVs .CheckMagikarpArea ; The z checks are supposed to be nz ; Instead, all maps in GROUP_LAKE_OF_RAGE (mahogany area) ; and routes 20 and 44 are treated as Lake of Rage ; This also means Lake of Rage Magikarp can be smaller than ones ; caught elsewhere rather than the other way around ; Intended behavior enforces a minimum size at Lake of Rage ; The real behavior prevents size flooring in the Lake of Rage area ld a, [MapGroup] cp a, GROUP_LAKE_OF_RAGE jr z, .Happiness ld a, [MapNumber] cp a, MAP_LAKE_OF_RAGE jr z, .Happiness ; 40% chance of not flooring call RNG cp a, $64 ; / $100 jr c, .Happiness ; Floor at length 1024 ld a, [MagikarpLengthHi] cp a, $04 ; $400 = 1024 jr c, .GenerateDVs ; try again ; Finally done with DVs .Happiness ; Set happiness ld a, 70 ; BASE_HAPPINESS ld [EnemyMonHappiness], a ; Set level ld a, [CurPartyLevel] ld [EnemyMonLevel], a ; Fill stats ld de, EnemyMonMaxHP ld b, $00 ld hl, $d201 ; ? ld a, PREDEF_FILLSTATS call Predef ; If we're in a trainer battle, ; get the rest of the parameters from the party struct ld a, [IsInBattle] cp a, TRAINER_BATTLE jr z, .OpponentParty ; If we're in a wild battle, check wild-specific stuff and a jr z, .TreeMon ; ???? ld a, [$c671] bit 3, a jp nz, .Moves .TreeMon ; If we're headbutting trees, some monsters enter battle asleep call CheckSleepingTreeMon ld a, 7 ; Asleep for 7 turns jr c, .UpdateStatus ; Otherwise, no status xor a .UpdateStatus ld hl, EnemyMonStatus ld [hli], a ; Unused byte xor a ld [hli], a ; Full HP... ld a, [EnemyMonMaxHPHi] ld [hli], a ld a, [EnemyMonMaxHPLo] ld [hl], a ; ...unless it's a RoamMon ld a, [BattleType] cp a, BATTLETYPE_ROAMING jr nz, .Moves ; Grab HP call GetRoamMonHP ld a, [hl] ; Check if it's been initialized again and a jr z, .InitRoamHP ; Update from the struct if it has ld a, [hl] ld [EnemyMonHPLo], a jr .Moves .InitRoamHP ; HP only uses the lo byte in the RoamMon struct since ; Raikou/Entei/Suicune will have < 256 hp at level 40 ld a, [EnemyMonHPLo] ld [hl], a jr .Moves .OpponentParty ; Get HP from the party struct ld hl, (PartyMon1CurHP + 1) - PartyMon1 + OTPartyMon1 ld a, [CurPartyMon] call GetPartyLocation ld a, [hld] ld [EnemyMonHPLo], a ld a, [hld] ld [EnemyMonHPHi], a ; Make sure everything knows which monster the opponent is using ld a, [CurPartyMon] ld [CurOTMon], a ; Get status from the party struct dec hl ld a, [hl] ; OTPartyMonStatus ld [EnemyMonStatus], a .Moves ; ???? ld hl, $d23d ld de, $d224 ld a, [hli] ld [de], a inc de ld a, [hl] ld [de], a ; Get moves ld de, EnemyMonMoves ; Are we in a trainer battle? ld a, [IsInBattle] cp a, TRAINER_BATTLE jr nz, .WildMoves ; Then copy moves from the party struct ld hl, OTPartyMon1Moves ld a, [CurPartyMon] call GetPartyLocation ld bc, NUM_MOVES call CopyBytes jr .PP .WildMoves ; Clear EnemyMonMoves xor a ld h, d ld l, e ld [hli], a ld [hli], a ld [hli], a ld [hl], a ; Make sure the predef knows this isn't a partymon ld [$d1ea], a ; Fill moves based on level ld a, PREDEF_FILLMOVES call Predef .PP ; Trainer battle? ld a, [IsInBattle] cp a, TRAINER_BATTLE jr z, .TrainerPP ; Fill wild PP ld hl, EnemyMonMoves ld de, EnemyMonPP ld a, PREDEF_FILLPP call Predef jr .Finish .TrainerPP ; Copy PP from the party struct ld hl, OTPartyMon1PP ld a, [CurPartyMon] call GetPartyLocation ld de, EnemyMonPP ld bc, NUM_MOVES call CopyBytes .Finish ; ???? ld hl, $d237 ld de, $d226 ld b, 5 ; # bytes to copy ; Copy $d237-a to $d226-9 .loop ld a, [hli] ld [de], a inc de dec b jr nz, .loop ; Copy $d23f to $d22a ld a, [$d23f] ld [de], a inc de ; Copy $d240 to $d22b ld a, [$d240] ld [de], a ; copy TempEnemyMonSpecies to $d265 ld a, [TempEnemyMonSpecies] ld [$d265], a ; ???? call $343b ; If wild, we're done ld a, [IsInBattle] and a ret z ; Update enemy nick ld hl, StringBuffer1 ld de, EnemyMonNick ld bc, PKMN_NAME_LENGTH call CopyBytes ; ???? ld a, [TempEnemyMonSpecies] dec a ld c, a ld b, $01 ld hl, $deb9 ld a, $03 ; PREDEF_ call Predef ; Fill EnemyMon stats ld hl, EnemyMonAtk ld de, $c6c1 ld bc, 2*(NUM_STATS-1) ; 2 bytes for each non-HP stat call CopyBytes ; We're done ret ; 3eb38 CheckSleepingTreeMon: ; 3eb38 ; Return carry if species is in the list ; for the current time of day ; Don't do anything if this isn't a tree encounter ld a, [BattleType] cp a, BATTLETYPE_TREE jr nz, .NotSleeping ; Get list for the time of day ld hl, .Morn ld a, [TimeOfDay] cp a, DAY jr c, .Check ld hl, .Day jr z, .Check ld hl, .Nite .Check ld a, [TempEnemyMonSpecies] ld de, 1 ; length of species id call IsInArray ; If it's a match, the opponent is asleep ret c .NotSleeping and a ret .Nite db CATERPIE db METAPOD db BUTTERFREE db WEEDLE db KAKUNA db BEEDRILL db SPEAROW db EKANS db EXEGGCUTE db LEDYBA db AIPOM db $ff ; end .Day db VENONAT db HOOTHOOT db NOCTOWL db SPINARAK db HERACROSS db $ff ; end .Morn db VENONAT db HOOTHOOT db NOCTOWL db SPINARAK db HERACROSS db $ff ; end ; 3eb75 CheckUnownLetter: ; 3eb75 ; Return carry if the Unown letter hasn't been unlocked yet ld a, [$def3] ; UnownLetter ld c, a ld de, $0000 .loop ; Has this set been unlocked? srl c jr nc, .next ; Check out the set ld hl, .LetterSets add hl, de ld a, [hli] ld h, [hl] ld l, a ; Is our letter in the set? push de ld a, [$d234] ld de, $0001 push bc call IsInArray pop bc pop de jr c, .Match .next ; Next set inc e inc e ld a, e ; Gone past the end of the table? cp a, 4*2 ; 4 sets with 2-byte pointers jr c, .loop ; Didn't find the letter (not unlocked) scf ret .Match ; Valid letter and a ret .LetterSets dw .Set1 dw .Set2 dw .Set3 dw .Set4 .Set1 ; A B C D E F G H I J K db $01, $02, $03, $04, $05, $06, $07, $08, $09, $0a, $0b db $ff ; end .Set2 ; L M N O P Q R db $0c, $0d, $0e, $0f, $10, $11, $12 db $ff ; end .Set3 ; S T U V W db $13, $14, $15, $16, $17 db $ff ; end .Set4 ; X Y Z db $18, $19, $1a db $ff ; end ; 3ebc7 INCBIN "baserom.gbc", $3ebc7, $3edd8 - $3ebc7 BattleRNG: ; 3edd8 ; If the normal RNG is used in a link battle it'll desync. ; To circumvent this a shared PRNG is used instead. ; But if we're in a non-link battle we're safe to use it ld a, [InLinkBattle] and a jp z, RNG ; The PRNG operates in streams of 8 values ; The reasons for this are unknown ; Which value are we trying to pull? push hl push bc ld a, [LinkBattleRNCount] ld c, a ld b, $0 ld hl, LinkBattleRNs add hl, bc inc a ld [LinkBattleRNCount], a ; If we haven't hit the end yet, we're good cp 9 ; Exclude last value. See the closing comment ld a, [hl] pop bc pop hl ret c ; If we have, we have to generate new pseudorandom data ; Instead of having multiple PRNGs, ten seeds are used push hl push bc push af ; Reset count to 0 xor a ld [LinkBattleRNCount], a ld hl, LinkBattleRNs ld b, 10 ; number of seeds ; Generate next number in the sequence for each seed ; The algorithm takes the form *5 + 1 % 256 .loop ; get last # ld a, [hl] ; a * 5 + 1 ld c, a add a add a add c inc a ; update # ld [hli], a dec b jr nz, .loop ; This has the side effect of pulling the last value first, ; then wrapping around. As a result, when we check to see if ; we've reached the end, we have to take this into account. pop af pop bc pop hl ret ; 3ee0f INCBIN "baserom.gbc", $3ee0f, $3fa01 - $3ee0f GetRoamMonHP: ; 3fa01 ; output: hl = RoamMonCurHP ld a, [TempEnemyMonSpecies] ld b, a ld a, [RoamMon1Species] cp b ld hl, RoamMon1CurHP ret z ld a, [RoamMon2Species] cp b ld hl, RoamMon2CurHP ret z ; remnant of the GS function ; we know this will be $00 because it's never initialized ld hl, RoamMon3CurHP ret ; 3fa19 GetRoamMonDVs: ; 3fa19 ; output: hl = RoamMonDVs ld a, [TempEnemyMonSpecies] ld b, a ld a, [RoamMon1Species] cp b ld hl, RoamMon1DVs ret z ld a, [RoamMon2Species] cp b ld hl, RoamMon2DVs ret z ; remnant of the GS function ; we know this will be $0000 because it's never initialized ld hl, RoamMon3DVs ret ; 3fa31 INCBIN "baserom.gbc", $3fa31, $3fc8b - $3fa31 ; I have no clue what most of this does BattleStartMessage: ld a, [$d22d] dec a jr z, .asm_3fcaa ; 0x3fc8f $19 ld de, $005e call $3c23 call WaitSFX ld c, $14 call $0468 ld a, $e ld hl, $5939 rst FarCall ld hl, $47a9 jr .asm_3fd0e ; 0x3fca8 $64 .asm_3fcaa call $5a79 jr nc, .asm_3fcc2 ; 0x3fcad $13 xor a ld [$cfca], a ld a, $1 ld [$ffe4], a ld a, $1 ld [$c689], a ld de, $0101 call $6e17 .asm_3fcc2 ld a, $f ld hl, $6b38 rst FarCall jr c, .messageSelection ; 0x3fcc8 $21 ld a, $13 ld hl, $6a44 rst FarCall jr c, .asm_3fce0 ; 0x3fcd0 $e ld hl, $c4ac ld d, $0 ld e, $1 ld a, $47 call $2d83 jr .messageSelection ; 0x3fcde $b .asm_3fce0 ld a, $f ld [$c2bd], a ld a, [$d204] call $37b6 .messageSelection ld a, [$d230] cp $4 jr nz, .asm_3fcfd ; 0x3fcf0 $b ld a, $41 ld hl, $6086 rst FarCall ld hl, HookedPokemonAttackedText jr .asm_3fd0e ; 0x3fcfb $11 .asm_3fcfd ld hl, PokemonFellFromTreeText cp $8 jr z, .asm_3fd0e ; 0x3fd02 $a ld hl, WildPokemonAppearedText2 cp $b jr z, .asm_3fd0e ; 0x3fd09 $3 ld hl, WildPokemonAppearedText .asm_3fd0e push hl ld a, $b ld hl, $4000 rst FarCall pop hl call $3ad5 call $7830 ret nz ld c, $2 ld a, $13 ld hl, $6a0a rst FarCall ret ; 0x3fd26 INCBIN "baserom.gbc",$3fd26,$40000 - $3fd26 SECTION "bank10",DATA,BANK[$10] INCBIN "baserom.gbc",$40000,$40c65-$40000 AlphabeticalPokedexOrder: ; 0x40c65 INCLUDE "stats/pokedex/order_alpha.asm" NewPokedexOrder: ; 0x40d60 INCLUDE "stats/pokedex/order_new.asm" INCBIN "baserom.gbc",$40e5b,$41afb-$40e5b Moves: ; 0x41afb INCLUDE "battle/moves/moves.asm" INCBIN "baserom.gbc",$421d8,$425b1-$421d8 EvosAttacksPointers: ; 0x425b1 INCLUDE "stats/evos_attacks_pointers.asm" INCLUDE "stats/evos_attacks.asm" SECTION "bank11",DATA,BANK[$11] INCBIN "baserom.gbc",$44000,$44378 - $44000 PokedexDataPointerTable: ; 0x44378 INCLUDE "stats/pokedex/entry_pointers.asm" INCBIN "baserom.gbc",$4456e,$3a92 SECTION "bank12",DATA,BANK[$12] INCBIN "baserom.gbc",$48000,$49d24 - $48000 ContinueText: ; 0x49d24 db "CONTINUE@" NewGameText: ; 0x49d2d db "NEW GAME@" OptionText: ; 0x49d36 db "OPTION@" MysteryGiftText: ; 0x49d3d db "MYSTERY GIFT@" MobileText: ; 0x49d4a db "MOBILE@" MobileStudiumText: ; 0x49d51 db "MOBILE STUDIUM@" Label49d60: ; 0x49d60 dw $5eee ; XXX is this ContinueASM? dw $5ee0 ; XXX is this NewGameASM? dw $5ee7 ; XXX is this OptionASM? dw $5ef5 ; XXX is this MysteryGiftASM? dw $5efc ; XXX is this MobileASM? dw $6496 ; XXX is this MobileStudiumASM? NewGameMenu: ; 0x49d6c db 2 db NEW_GAME db OPTION db $ff ContinueMenu: ; 0x49d70 db 3 db CONTINUE db NEW_GAME db OPTION db $ff MobileMysteryMenu: ; 0x49d75 db 5 db CONTINUE db NEW_GAME db OPTION db MYSTERY_GIFT db MOBILE db $ff MobileMenu: ; 0x49d7c db 4 db CONTINUE db NEW_GAME db OPTION db MOBILE db $ff MobileStudiumMenu: ; 0x49d82 db 5 db CONTINUE db NEW_GAME db OPTION db MOBILE db MOBILE_STUDIUM db $ff MysteryMobileStudiumMenu: ; 0x49d89 db 6 db CONTINUE db NEW_GAME db OPTION db MYSTERY_GIFT db MOBILE db MOBILE_STUDIUM db $ff MysteryMenu: ; 0x49d91 db 4 db CONTINUE db NEW_GAME db OPTION db MYSTERY_GIFT db $ff MysteryStudiumMenu: ; 0x49d97 db 5 db CONTINUE db NEW_GAME db OPTION db MYSTERY_GIFT db MOBILE_STUDIUM db $ff StudiumMenu: ; 0x49d9e db 4 db CONTINUE db NEW_GAME db OPTION db MOBILE_STUDIUM db $ff INCBIN "baserom.gbc",$49da4,$4a6e8 - $49da4 SpecialBeastsCheck: ; 0x4a6e8 ; Check if the player owns all three legendary beasts. ; They must exist in either party or PC, and have the player's OT and ID. ; outputs: ; ScriptVar is 1 if the Pokémon exist, otherwise 0. ld a, RAIKOU ld [ScriptVar], a call CheckOwnMonAnywhere jr nc, .notexist ld a, ENTEI ld [ScriptVar], a call CheckOwnMonAnywhere jr nc, .notexist ld a, SUICUNE ld [ScriptVar], a call CheckOwnMonAnywhere jr nc, .notexist ; they exist ld a, $1 ld [ScriptVar], a ret .notexist xor a ld [ScriptVar], a ret SpecialMonCheck: ; 0x4a711 ; Check if a Pokémon exists in PC or party. ; It must exist in either party or PC, and have the player's OT and ID. ; inputs: ; ScriptVar contains species to search for call CheckOwnMonAnywhere jr c, .exists ; doesn't exist xor a ld [ScriptVar], a ret .exists ld a, $1 ld [ScriptVar], a ret CheckOwnMonAnywhere: ; 0x4a721 ld a, [PartyCount] and a ret z ; no pokémon in party ld d, a ld e, $0 ld hl, PartyMon1Species ld bc, PartyMon1OT ; run CheckOwnMon on each Pokémon in the party .loop call CheckOwnMon ret c ; found! push bc ld bc, PartyMon2 - PartyMon1 add hl, bc pop bc call UpdateOTPointer dec d jr nz, .loop ; 0x4a73d $f0 ; XXX the below could use some cleanup ; run CheckOwnMon on each Pokémon in the PC ld a, $1 call GetSRAMBank ld a, [$ad10] and a jr z, .asm_4a766 ; 0x4a748 $1c ld d, a ld hl, $ad26 ld bc, $afa6 .asm_4a751 call CheckOwnMon jr nc, .asm_4a75a ; 0x4a754 $4 call CloseSRAM ret .asm_4a75a push bc ld bc, $0020 add hl, bc pop bc call UpdateOTPointer dec d jr nz, .asm_4a751 ; 0x4a764 $eb .asm_4a766 call CloseSRAM ld c, $0 .asm_4a76b ld a, [$db72] and $f cp c jr z, .asm_4a7af ; 0x4a771 $3c ld hl, $6810 ld b, $0 add hl, bc add hl, bc add hl, bc ld a, [hli] call GetSRAMBank ld a, [hli] ld h, [hl] ld l, a ld a, [hl] and a jr z, .asm_4a7af ; 0x4a784 $29 push bc push hl ld de, $0016 add hl, de ld d, h ld e, l pop hl push de ld de, $0296 add hl, de ld b, h ld c, l pop hl ld d, a .asm_4a798 call CheckOwnMon jr nc, .asm_4a7a2 ; 0x4a79b $5 pop bc call CloseSRAM ret .asm_4a7a2 push bc ld bc, $0020 add hl, bc pop bc call UpdateOTPointer dec d jr nz, .asm_4a798 ; 0x4a7ac $ea pop bc .asm_4a7af inc c ld a, c cp $e jr c, .asm_4a76b ; 0x4a7b3 $b6 call CloseSRAM and a ; clear carry ret CheckOwnMon: ; 0x4a7ba ; Check if a Pokémon belongs to the player and is of a specific species. ; inputs: ; hl, pointer to PartyMonNSpecies ; bc, pointer to PartyMonNOT ; ScriptVar should contain the species we're looking for ; outputs: ; sets carry if monster matches species, ID, and OT name. push bc push hl push de ld d, b ld e, c ; check species ld a, [ScriptVar] ; species we're looking for ld b, [hl] ; species we have cp b jr nz, .notfound ; species doesn't match ; check ID number ld bc, PartyMon1ID - PartyMon1Species add hl, bc ; now hl points to ID number ld a, [PlayerID] cp [hl] jr nz, .notfound ; ID doesn't match inc hl ld a, [PlayerID + 1] cp [hl] jr nz, .notfound ; ID doesn't match ; check OT ; This only checks five characters, which is fine for the Japanese version, ; but in the English version the player name is 7 characters, so this is wrong. ld hl, PlayerName ld a, [de] cp [hl] jr nz, .notfound cp "@" jr z, .found ; reached end of string inc hl inc de ld a, [de] cp [hl] jr nz, .notfound cp $50 jr z, .found inc hl inc de ld a, [de] cp [hl] jr nz, .notfound cp $50 jr z, .found inc hl inc de ld a, [de] cp [hl] jr nz, .notfound cp $50 jr z, .found inc hl inc de ld a, [de] cp [hl] jr z, .found .notfound pop de pop hl pop bc and a ; clear carry ret .found pop de pop hl pop bc scf ret ; 0x4a810 INCBIN "baserom.gbc", $4a810, $4a83a - $4a810 UpdateOTPointer: ; 0x4a83a push hl ld hl, PartyMon2OT - PartyMon1OT add hl, bc ld b, h ld c, l pop hl ret ; 0x4a843 INCBIN "baserom.gbc",$4a843,$4C000 - $4a843 SECTION "bank13",DATA,BANK[$13] INCBIN "baserom.gbc",$4C000,$4ce1f - $4C000 TileTypeTable: ; 4ce1f ; 256 tiletypes ; 01 = surfable db $00, $00, $00, $00, $00, $00, $00, $0f db $00, $00, $00, $00, $00, $00, $00, $0f db $00, $00, $1f, $00, $00, $1f, $00, $00 db $00, $00, $1f, $00, $00, $1f, $00, $00 db $01, $01, $11, $00, $11, $01, $01, $0f db $01, $01, $11, $00, $11, $01, $01, $0f db $01, $01, $01, $01, $01, $01, $01, $01 db $01, $01, $01, $01, $01, $01, $01, $01 db $00, $00, $00, $00, $00, $00, $00, $00 db $00, $00, $00, $00, $00, $00, $00, $00 db $00, $00, $00, $00, $00, $00, $00, $00 db $00, $00, $00, $00, $00, $00, $00, $00 db $00, $00, $0f, $00, $00, $00, $00, $00 db $00, $00, $0f, $00, $00, $00, $00, $00 db $00, $00, $00, $00, $00, $00, $00, $00 db $00, $00, $00, $00, $00, $00, $00, $00 db $0f, $0f, $0f, $0f, $0f, $00, $00, $00 db $0f, $0f, $0f, $0f, $0f, $00, $00, $00 db $0f, $0f, $0f, $0f, $0f, $0f, $0f, $0f db $0f, $0f, $0f, $0f, $0f, $0f, $0f, $0f db $00, $00, $00, $00, $00, $00, $00, $00 db $00, $00, $00, $00, $00, $00, $00, $00 db $00, $00, $00, $00, $00, $00, $00, $00 db $00, $00, $00, $00, $00, $00, $00, $00 db $01, $01, $01, $01, $01, $01, $01, $01 db $01, $01, $01, $01, $01, $01, $01, $01 db $00, $00, $00, $00, $00, $00, $00, $00 db $00, $00, $00, $00, $00, $00, $00, $00 db $00, $00, $00, $00, $00, $00, $00, $00 db $00, $00, $00, $00, $00, $00, $00, $00 db $00, $00, $00, $00, $00, $00, $00, $00 db $00, $00, $00, $00, $00, $00, $00, $0f ; 4cf1f INCBIN "baserom.gbc",$4cf1f,$4d860 - $4cf1f CheckPokerus: ; 4d860 ; Return carry if a monster in your party has Pokerus ; Get number of monsters to iterate over ld a, [PartyCount] and a jr z, .NoPokerus ld b, a ; Check each monster in the party for Pokerus ld hl, PartyMon1PokerusStatus ld de, PartyMon2 - PartyMon1 .Check ld a, [hl] and $0f ; only the bottom nybble is used jr nz, .HasPokerus ; Next PartyMon add hl, de dec b jr nz, .Check .NoPokerus and a ret .HasPokerus scf ret ; 4d87a INCBIN "baserom.gbc",$4d87a,$4dc8a - $4d87a StatsScreenInit: ; 4dc8a ld hl, StatsScreenMain jr .gotaddress ld hl, $5cf7 jr .gotaddress .gotaddress ld a, [$ffde] push af xor a ld [$ffde], a ; disable overworld tile animations ld a, [$c2c6] ; whether sprite is to be mirrorred push af ld a, [$cf63] ld b, a ld a, [$cf64] ld c, a push bc push hl call $31f3 call $0fc8 call $1ad2 ld a, $3e ld hl, $753e rst $8 ; this loads graphics pop hl call JpHl call $31f3 call $0fc8 pop bc ; restore old values ld a, b ld [$cf63], a ld a, c ld [$cf64], a pop af ld [$c2c6], a pop af ld [$ffde], a ret ; 0x4dcd2 StatsScreenMain: ; 0x4dcd2 xor a ld [$cf63], a ld [$cf64], a ld a, [$cf64] and $fc or $1 ld [$cf64], a .loop ; 4dce3 ld a, [$cf63] and $7f ld hl, StatsScreenPointerTable rst $28 call $5d3a ; check for keys? ld a, [$cf63] bit 7, a jr z, .loop ret ; 0x4dcf7 INCBIN "baserom.gbc",$4dcf7,$4dd2a - $4dcf7 StatsScreenPointerTable: ; 4dd2a dw $5d72 ; regular pokémon dw EggStatsInit ; egg dw $5de6 dw $5dac dw $5dc6 dw $5de6 dw $5dd6 dw $5d6c ; 4dd3a INCBIN "baserom.gbc",$4dd3a,$4dda1 - $4dd3a EggStatsInit: ; 4dda1 call EggStatsScreen ld a, [$cf63] inc a ld [$cf63], a ret ; 0x4ddac INCBIN "baserom.gbc",$4ddac,$4e21e - $4ddac IDNoString: ; 4e21e db $73, "№.@" OTString: ; 4e222 db "OT/@" ; 4e226 INCBIN "baserom.gbc",$4e226,$4e33a - $4e226 EggStatsScreen: ; 4e33a xor a ld [$ffd4], a ld hl, $cda1 call $334e ; SetHPPal ld b, $3 call GetSGBLayout call $5f8f ld de, EggString hlcoord 8, 1 ; $c4bc call PlaceString ld de, IDNoString hlcoord 8, 3 ; $c4e4 call PlaceString ld de, OTString hlcoord 8, 5 ; $c50c call PlaceString ld de, FiveQMarkString hlcoord 11, 3 ; $c4e7 call PlaceString ld de, FiveQMarkString hlcoord 11, 5 ; $c50f call PlaceString ld a, [$d129] ; egg status ld de, EggSoonString cp $6 jr c, .picked ld de, EggCloseString cp $b jr c, .picked ld de, EggMoreTimeString cp $29 jr c, .picked ld de, EggALotMoreTimeString .picked hlcoord 1, 9 ; $c555 call PlaceString ld hl, $cf64 set 5, [hl] call $32f9 ; pals call $045a ld hl, TileMap call $3786 ld a, $41 ld hl, $402d rst $8 call $6497 ld a, [$d129] cp $6 ret nc ld de, $00bb call StartSFX ret ; 0x4e3c0 EggString: ; 4e3c0 db "EGG@" FiveQMarkString: ; 4e3c4 db "?????@" EggSoonString: ; 0x4e3ca db "It's making sounds", $4e, "inside. It's going", $4e, "to hatch soon!@" EggCloseString: ; 0x4e3fd db "It moves around", $4e, "inside sometimes.", $4e, "It must be close", $4e, "to hatching.@" EggMoreTimeString: ; 0x4e43d db "Wonder what's", $4e, "inside? It needs", $4e, "more time, though.@" EggALotMoreTimeString: ; 0x4e46e db "This EGG needs a", $4e, "lot more time to", $4e, "hatch.@" ; 0x4e497 INCBIN "baserom.gbc",$4e497,$50000 - $4e497 SECTION "bank14",DATA,BANK[$14] INCBIN "baserom.gbc",$50000,$5005f-$50000 WritePartyMenuTilemap: ; 0x5005f ld hl, Options ld a, [hl] push af set 4, [hl] ; Disable text delay xor a ld [$ffd4], a ld hl, TileMap ld bc, $0168 ld a, " " call $3041 ; blank the tilemap call $4396 ; This reads from a pointer table??? .asm_50077 ld a, [hli] cp $ff jr z, .asm_50084 ; 0x5007a $8 push hl ld hl, $4089 rst $28 pop hl jr .asm_50077 ; 0x50082 $f3 .asm_50084 pop af ld [Options], a ret ; 0x50089 INCBIN "baserom.gbc",$50089,$50457-$50089 PartyMenuSelect: ; 0x50457 ; sets carry if exitted menu. call $1bc9 call $1bee ld a, [PartyCount] inc a ld b, a ld a, [$cfa9] ; menu selection? cp b jr z, .exitmenu ; CANCEL ld [$d0d8], a ld a, [$ffa9] ld b, a bit 1, b jr nz, .exitmenu ; B button? ld a, [$cfa9] dec a ld [CurPartyMon], a ld c, a ld b, $0 ld hl, PartySpecies add hl, bc ld a, [hl] ld [CurPartySpecies], a ld de, $0008 call StartSFX call WaitSFX and a ret .exitmenu ld de, $0008 call StartSFX call WaitSFX scf ret ; 0x5049a PrintPartyMenuText: ; 5049a ld hl, $c5b8 ld bc, $0212 call $0fe8 ; related to TextBoxBorder ld a, [PartyCount] and a jr nz, .haspokemon ld de, YouHaveNoPKMNString jr .gotstring .haspokemon ; 504ae ld a, [PartyMenuActionText] and $f ; drop high nibble ld hl, PartyMenuStrings ld e, a ld d, $0 add hl, de add hl, de ld a, [hli] ld d, [hl] ld e, a .gotstring ; 504be ld a, [Options] push af set 4, a ; disable text delay ld [Options], a ld hl, $c5e1 ; Coord call PlaceString pop af ld [Options], a ret ; 0x504d2 PartyMenuStrings: ; 0x504d2 dw ChooseAMonString dw UseOnWhichPKMNString dw WhichPKMNString dw TeachWhichPKMNString dw MoveToWhereString dw UseOnWhichPKMNString dw ChooseAMonString ; Probably used to be ChooseAFemalePKMNString dw ChooseAMonString ; Probably used to be ChooseAMalePKMNString dw ToWhichPKMNString ChooseAMonString: ; 0x504e4 db "Choose a #MON.@" UseOnWhichPKMNString: ; 0x504f3 db "Use on which ", $e1, $e2, "?@" WhichPKMNString: ; 0x50504 db "Which ", $e1, $e2, "?@" TeachWhichPKMNString: ; 0x5050e db "Teach which ", $e1, $e2, "?@" MoveToWhereString: ; 0x5051e db "Move to where?@" ChooseAFemalePKMNString: ; 0x5052d ; UNUSED db "Choose a ♀", $e1, $e2, ".@" ChooseAMalePKMNString: ; 0x5053b ; UNUSED db "Choose a ♂", $e1, $e2, ".@" ToWhichPKMNString: ; 0x50549 db "To which ", $e1, $e2, "?@" YouHaveNoPKMNString: ; 0x50556 db "You have no ", $e1, $e2, "!@" INCBIN "baserom.gbc",$50566,$5097B-$50566 dw Normal, Fighting, Flying, Poison, Ground, Rock, Bird, Bug, Ghost, Steel dw Normal, Normal, Normal, Normal, Normal, Normal, Normal, Normal, Normal dw UnknownType, Fire, Water, Grass, Electric, Psychic, Ice, Dragon, Dark Normal: db "NORMAL@" Fighting: db "FIGHTING@" Flying: db "FLYING@" Poison: db "POISON@" UnknownType: db "???@" Fire: db "FIRE@" Water: db "WATER@" Grass: db "GRASS@" Electric: db "ELECTRIC@" Psychic: db "PSYCHIC@" Ice: db "ICE@" Ground: db "GROUND@" Rock: db "ROCK@" Bird: db "BIRD@" Bug: db "BUG@" Ghost: db "GHOST@" Steel: db "STEEL@" Dragon: db "DRAGON@" Dark: db "DARK@" INCBIN "baserom.gbc",$50A28, $51424 - $50A28 BaseStats: INCLUDE "stats/base_stats.asm" PokemonNames: INCLUDE "stats/pokemon_names.asm" INCBIN "baserom.gbc",$53D84,$54000 - $53D84 SECTION "bank15",DATA,BANK[$15] ; Map Scripts I INCLUDE "maps/GoldenrodGym.asm" INCLUDE "maps/GoldenrodBikeShop.asm" INCLUDE "maps/GoldenrodHappinessRater.asm" INCLUDE "maps/GoldenrodBillsHouse.asm" INCLUDE "maps/GoldenrodMagnetTrainStation.asm" INCLUDE "maps/GoldenrodFlowerShop.asm" INCLUDE "maps/GoldenrodPPSpeechHouse.asm" INCLUDE "maps/GoldenrodNameRatersHouse.asm" INCLUDE "maps/GoldenrodDeptStore1F.asm" INCLUDE "maps/GoldenrodDeptStore2F.asm" INCLUDE "maps/GoldenrodDeptStore3F.asm" INCLUDE "maps/GoldenrodDeptStore4F.asm" INCLUDE "maps/GoldenrodDeptStore5F.asm" INCLUDE "maps/GoldenrodDeptStore6F.asm" INCLUDE "maps/GoldenrodDeptStoreElevator.asm" INCLUDE "maps/GoldenrodDeptStoreRoof.asm" INCLUDE "maps/GoldenrodGameCorner.asm" SECTION "bank16",DATA,BANK[$16] ; Map Scripts II INCLUDE "maps/RuinsofAlphOutside.asm" INCLUDE "maps/RuinsofAlphHoOhChamber.asm" INCLUDE "maps/RuinsofAlphKabutoChamber.asm" INCLUDE "maps/RuinsofAlphOmanyteChamber.asm" INCLUDE "maps/RuinsofAlphAerodactylChamber.asm" INCLUDE "maps/RuinsofAlphInnerChamber.asm" INCLUDE "maps/RuinsofAlphResearchCenter.asm" INCLUDE "maps/RuinsofAlphHoOhItemRoom.asm" INCLUDE "maps/RuinsofAlphKabutoItemRoom.asm" INCLUDE "maps/RuinsofAlphOmanyteItemRoom.asm" INCLUDE "maps/RuinsofAlphAerodactylItemRoom.asm" INCLUDE "maps/RuinsofAlphHoOhWordRoom.asm" INCLUDE "maps/RuinsofAlphKabutoWordRoom.asm" INCLUDE "maps/RuinsofAlphOmanyteWordRoom.asm" INCLUDE "maps/RuinsofAlphAerodactylWordRoom.asm" INCLUDE "maps/UnionCave1F.asm" INCLUDE "maps/UnionCaveB1F.asm" INCLUDE "maps/UnionCaveB2F.asm" INCLUDE "maps/SlowpokeWellB1F.asm" INCLUDE "maps/SlowpokeWellB2F.asm" INCLUDE "maps/OlivineLighthouse1F.asm" INCLUDE "maps/OlivineLighthouse2F.asm" INCLUDE "maps/OlivineLighthouse3F.asm" INCLUDE "maps/OlivineLighthouse4F.asm" SECTION "bank17",DATA,BANK[$17] ; Map Scripts III INCLUDE "maps/NationalPark.asm" INCLUDE "maps/NationalParkBugContest.asm" INCLUDE "maps/RadioTower1F.asm" INCLUDE "maps/RadioTower2F.asm" INCLUDE "maps/RadioTower3F.asm" INCLUDE "maps/RadioTower4F.asm" SECTION "bank18",DATA,BANK[$18] ; Map Scripts IV INCLUDE "maps/RadioTower5F.asm" INCLUDE "maps/OlivineLighthouse5F.asm" INCLUDE "maps/OlivineLighthouse6F.asm" INCLUDE "maps/GoldenrodPokeCenter1F.asm" INCLUDE "maps/GoldenrodPokeComCenter2FMobile.asm" INCLUDE "maps/IlexForestAzaleaGate.asm" INCLUDE "maps/Route34IlexForestGate.asm" INCLUDE "maps/DayCare.asm" SECTION "bank19",DATA,BANK[$19] INCBIN "baserom.gbc", $64000, $67308 - $64000 SECTION "bank1A",DATA,BANK[$1A] ; Map Scripts V INCLUDE "maps/Route11.asm" INCLUDE "maps/VioletMart.asm" INCLUDE "maps/VioletGym.asm" INCLUDE "maps/EarlsPokemonAcademy.asm" INCLUDE "maps/VioletNicknameSpeechHouse.asm" INCLUDE "maps/VioletPokeCenter1F.asm" INCLUDE "maps/VioletOnixTradeHouse.asm" INCLUDE "maps/Route32RuinsofAlphGate.asm" INCLUDE "maps/Route32PokeCenter1F.asm" INCLUDE "maps/Route35Goldenrodgate.asm" INCLUDE "maps/Route35NationalParkgate.asm" INCLUDE "maps/Route36RuinsofAlphgate.asm" INCLUDE "maps/Route36NationalParkgate.asm" SECTION "bank1B",DATA,BANK[$1B] ; Map Scripts VI INCLUDE "maps/Route8.asm" INCLUDE "maps/MahoganyMart1F.asm" INCLUDE "maps/TeamRocketBaseB1F.asm" INCLUDE "maps/TeamRocketBaseB2F.asm" INCLUDE "maps/TeamRocketBaseB3F.asm" INCLUDE "maps/IlexForest.asm" SECTION "bank1C",DATA,BANK[$1C] ; Map Scripts VII INCLUDE "maps/LakeofRage.asm" INCLUDE "maps/CeladonDeptStore1F.asm" INCLUDE "maps/CeladonDeptStore2F.asm" INCLUDE "maps/CeladonDeptStore3F.asm" INCLUDE "maps/CeladonDeptStore4F.asm" INCLUDE "maps/CeladonDeptStore5F.asm" INCLUDE "maps/CeladonDeptStore6F.asm" INCLUDE "maps/CeladonDeptStoreElevator.asm" INCLUDE "maps/CeladonMansion1F.asm" INCLUDE "maps/CeladonMansion2F.asm" INCLUDE "maps/CeladonMansion3F.asm" INCLUDE "maps/CeladonMansionRoof.asm" INCLUDE "maps/CeladonMansionRoofHouse.asm" INCLUDE "maps/CeladonPokeCenter1F.asm" INCLUDE "maps/CeladonPokeCenter2FBeta.asm" INCLUDE "maps/CeladonGameCorner.asm" INCLUDE "maps/CeladonGameCornerPrizeRoom.asm" INCLUDE "maps/CeladonGym.asm" INCLUDE "maps/CeladonCafe.asm" INCLUDE "maps/Route16FuchsiaSpeechHouse.asm" INCLUDE "maps/Route16Gate.asm" INCLUDE "maps/Route7SaffronGate.asm" INCLUDE "maps/Route1718Gate.asm" SECTION "bank1D",DATA,BANK[$1D] ; Map Scripts VIII INCLUDE "maps/DiglettsCave.asm" INCLUDE "maps/MountMoon.asm" INCLUDE "maps/Underground.asm" INCLUDE "maps/RockTunnel1F.asm" INCLUDE "maps/RockTunnelB1F.asm" INCLUDE "maps/SafariZoneFuchsiaGateBeta.asm" INCLUDE "maps/SafariZoneBeta.asm" INCLUDE "maps/VictoryRoad.asm" INCLUDE "maps/OlivinePort.asm" INCLUDE "maps/VermilionPort.asm" INCLUDE "maps/FastShip1F.asm" INCLUDE "maps/FastShipCabins_NNW_NNE_NE.asm" INCLUDE "maps/FastShipCabins_SW_SSW_NW.asm" INCLUDE "maps/FastShipCabins_SE_SSE_CaptainsCabin.asm" INCLUDE "maps/FastShipB1F.asm" INCLUDE "maps/OlivinePortPassage.asm" INCLUDE "maps/VermilionPortPassage.asm" INCLUDE "maps/MountMoonSquare.asm" INCLUDE "maps/MountMoonGiftShop.asm" INCLUDE "maps/TinTowerRoof.asm" SECTION "bank1E",DATA,BANK[$1E] ; Map Scripts IX INCLUDE "maps/Route34.asm" INCLUDE "maps/ElmsLab.asm" INCLUDE "maps/KrissHouse1F.asm" INCLUDE "maps/KrissHouse2F.asm" INCLUDE "maps/KrissNeighborsHouse.asm" INCLUDE "maps/ElmsHouse.asm" INCLUDE "maps/Route26HealSpeechHouse.asm" INCLUDE "maps/Route26DayofWeekSiblingsHouse.asm" INCLUDE "maps/Route27SandstormHouse.asm" INCLUDE "maps/Route2946Gate.asm" SECTION "bank1F",DATA,BANK[$1F] ; Map Scripts X INCLUDE "maps/Route22.asm" INCLUDE "maps/WarehouseEntrance.asm" INCLUDE "maps/UndergroundPathSwitchRoomEntrances.asm" INCLUDE "maps/GoldenrodDeptStoreB1F.asm" INCLUDE "maps/UndergroundWarehouse.asm" INCLUDE "maps/MountMortar1FOutside.asm" INCLUDE "maps/MountMortar1FInside.asm" INCLUDE "maps/MountMortar2FInside.asm" INCLUDE "maps/MountMortarB1F.asm" INCLUDE "maps/IcePath1F.asm" INCLUDE "maps/IcePathB1F.asm" INCLUDE "maps/IcePathB2FMahoganySide.asm" INCLUDE "maps/IcePathB2FBlackthornSide.asm" INCLUDE "maps/IcePathB3F.asm" INCLUDE "maps/LavenderPokeCenter1F.asm" INCLUDE "maps/LavenderPokeCenter2FBeta.asm" INCLUDE "maps/MrFujisHouse.asm" INCLUDE "maps/LavenderTownSpeechHouse.asm" INCLUDE "maps/LavenderNameRater.asm" INCLUDE "maps/LavenderMart.asm" INCLUDE "maps/SoulHouse.asm" INCLUDE "maps/LavRadioTower1F.asm" INCLUDE "maps/Route8SaffronGate.asm" INCLUDE "maps/Route12SuperRodHouse.asm" SECTION "bank20",DATA,BANK[$20] INCBIN "baserom.gbc",$80000,$80430-$80000 GetFlag2: ; 80430 ; Do action b on flag de from BitTable2 ; ; b = 0: reset flag ; = 1: set flag ; > 1: check flag, result in c ; ; Setting/resetting does not return a result. ; 16-bit flag ids are considered invalid, but it's nice ; to know that the infrastructure is there. ld a, d cp 0 jr z, .ceiling jr c, .read ; cp 0 can't set carry! jr .invalid ; There are only $a2 flags in BitTable2, so anything beyond that ; is invalid too. .ceiling ld a, e cp $a2 jr c, .read ; Invalid flags are treated as flag $00. .invalid xor a ld e, a ld d, a ; Read BitTable2 for this flag's location. .read ld hl, BitTable2 ; location add hl, de add hl, de ; bit add hl, de ; location ld e, [hl] inc hl ld d, [hl] inc hl ; bit ld c, [hl] ; What are we doing with this flag? ld a, b cp 1 jr c, .reset ; b = 0 jr z, .set ; b = 1 ; Return the given flag in c. .check ld a, [de] and c ld c, a ret ; Set the given flag. .set ld a, [de] or c ld [de], a ret ; Reset the given flag. .reset ld a, c cpl ; AND all bits except the one in question ld c, a ld a, [de] and c ld [de], a ret ; 80462 BitTable2: ; 80462 INCLUDE "bittable2.asm" ; 80648 INCBIN "baserom.gbc",$80648,$80730-$80648 BattleText_0x80730: ; 0x80730 db $0, $52, " picked up", $4f db "¥@" deciram $c6ec, $36 db $0, "!", $58 ; 0x80746 WildPokemonAppearedText: ; 0x80746 db $0, "Wild @" text_from_ram $c616 db $0, $4f db "appeared!", $58 ; 0x8075c HookedPokemonAttackedText: ; 0x8075c db $0, "The hooked", $4f db "@" text_from_ram $c616 db $0, $55 db "attacked!", $58 ; 0x80778 PokemonFellFromTreeText: ; 0x80778 text_from_ram $c616 db $0, " fell", $4f db "out of the tree!", $58 ; 0x80793 WildPokemonAppearedText2: ; 0x80793 db $0, "Wild @" text_from_ram $c616 db $0, $4f db "appeared!", $58 ; 0x807a9 BattleText_0x807a9: ; 0x807a9 db $0, $3f, $4f db "wants to battle!", $58 ; 0x807bd BattleText_0x807bd: ; 0x807bd db $0, "Wild @" text_from_ram $c616 db $0, $4f db "fled!", $58 ; 0x807cf BattleText_0x807cf: ; 0x807cf db $0, "Enemy @" text_from_ram $c616 db $0, $4f db "fled!", $58 ; 0x807e2 BattleText_0x807e2: ; 0x807e2 db $0, $5a, $4f db "is hurt by poison!", $58 ; 0x807f8 BattleText_0x807f8: ; 0x807f8 db $0, $5a, "'s", $4f db "hurt by its burn!", $58 ; 0x8080e BattleText_0x8080e: ; 0x8080e db $0, "LEECH SEED saps", $4f db $5a, "!", $58 ; 0x80822 BattleText_0x80822: ; 0x80822 db $0, $5a, $4f db "has a NIGHTMARE!", $58 ; 0x80836 BattleText_0x80836: ; 0x80836 db $0, $5a, "'s", $4f db "hurt by the CURSE!", $58 ; 0x8084d BattleText_0x8084d: ; 0x8084d db $0, "The SANDSTORM hits", $4f db $5a, "!", $58 ; 0x80864 BattleText_0x80864: ; 0x80864 db $0, $5a, "'s", $4f db "PERISH count is @" deciram $d265, $11 db $0, "!", $58 ; 0x80880 BattleText_0x80880: ; 0x80880 db $0, $59, $4f db "recovered with", $55 db "@" text_from_ram $d073 db $0, ".", $58 ; 0x80899 BattleText_0x80899: ; 0x80899 db $0, $5a, $4f db "recovered PP using", $55 db "@" text_from_ram $d073 db $0, ".", $58 ; 0x808b6 BattleText_0x808b6: ; 0x808b6 db $0, $59, $4f db "was hit by FUTURE", $55 db "SIGHT!", $58 ; 0x808d2 BattleText_0x808d2: ; 0x808d2 db $0, $5a, "'s", $4f db "SAFEGUARD faded!", $58 ; 0x808e7 BattleText_0x808e7: ; 0x808e7 text_from_ram $d073 db $0, " #MON's", $4f db "LIGHT SCREEN fell!", $58 ; 0x80905 BattleText_0x80905: ; 0x80905 text_from_ram $d073 db $0, " #MON's", $4f db "REFLECT faded!", $58 ; 0x8091f BattleText_0x8091f: ; 0x8091f db $0, "Rain continues to", $4f db "fall.", $58 ; 0x80938 BattleText_0x80938: ; 0x80938 db $0, "The sunlight is", $4f db "strong.", $58 ; 0x80951 BattleText_0x80951: ; 0x80951 db $0, "The SANDSTORM", $4f db "rages.", $58 ; 0x80967 BattleText_0x80967: ; 0x80967 db $0, "The rain stopped.", $58 ; 0x8097a BattleText_0x8097a: ; 0x8097a db $0, "The sunlight", $4f db "faded.", $58 ; 0x8098f BattleText_0x8098f: ; 0x8098f db $0, "The SANDSTORM", $4f db "subsided.", $58 ; 0x809a8 BattleText_0x809a8: ; 0x809a8 db $0, "Enemy @" text_from_ram $c616 db $0, $4f db "fainted!", $58 ; 0x809be BattleText_0x809be: ; 0x809be db $0, $52, " got ¥@" deciram $c686, $36 db $0, $4f db "for winning!", $58 ; 0x809da BattleText_0x809da: ; 0x809da db $0, $3f, $4f db "was defeated!", $58 ; 0x809eb BattleText_0x809eb: ; 0x809eb db $0, "Tied against", $4f db $3f, "!", $58 ; 0x809fc BattleText_0x809fc: ; 0x809fc db $0, $52, " got ¥@" deciram $c686, $36 db $0, $4f db "for winning!", $55 db "Sent some to MOM!", $58 ; 0x80a2a BattleText_0x80a2a: ; 0x80a2a db $0, "Sent half to MOM!", $58 ; 0x80a3d BattleText_0x80a3d: ; 0x80a3d db $0, "Sent all to MOM!", $58 ; 0x80a4f BattleText_0x80a4f: ; 0x80a4f db $0, $53, ": Huh? I", $4f db "should've chosen", $55 db "your #MON!", $58 ; 0x80a75 BattleText_0x80a75: ; 0x80a75 text_from_ram $c621 db $0, $4f db "fainted!", $58 ; 0x80a83 BattleText_0x80a83: ; 0x80a83 db $0, "Use next #MON?", $57 ; 0x80a93 BattleText_0x80a93: ; 0x80a93 db $0, $53, ": Yes!", $4f db "I guess I chose a", $55 db "good #MON!", $58 ; 0x80ab9 BattleText_0x80ab9: ; 0x80ab9 db $0, "Lost against", $4f db $3f, "!", $58 ; 0x80aca BattleText_0x80aca: ; 0x80aca db $0, $3f, $4f db "is about to use", $55 db "@" text_from_ram $c616 db $0, ".", $51 db "Will ", $52, $4f db "change #MON?", $57 ; 0x80af8 BattleText_0x80af8: ; 0x80af8 db $0, $3f, $4f db "sent out", $55 db "@" text_from_ram $c616 db $0, "!", $57 ; 0x80b0b BattleText_0x80b0b: ; 0x80b0b db $0, "There's no will to", $4f db "battle!", $58 ; 0x80b26 BattleText_0x80b26: ; 0x80b26 db $0, "An EGG can't", $4f db "battle!", $58 ; 0x80b3b BattleText_0x80b3b: ; 0x80b3b db $0, "Can't escape!", $58 ; 0x80b49 BattleText_0x80b49: ; 0x80b49 db $0, "No! There's no", $4f db "running from a", $55 db "trainer battle!", $58 ; 0x80b77 BattleText_0x80b77: ; 0x80b77 db $0, "Got away safely!", $58 ; 0x80b89 BattleText_0x80b89: ; 0x80b89 db $0, $5a, $4f db "fled using a", $55 db "@" text_from_ram $d073 db $0, "!", $58 ; 0x80ba0 BattleText_0x80ba0: ; 0x80ba0 db $0, "Can't escape!", $58 ; 0x80bae BattleText_0x80bae: ; 0x80bae db $0, $5a, "'s", $4f db "hurt by SPIKES!", $58 ; 0x80bc2 RecoveredUsingText: ; 0x80bc2 db $0, $59, $4f db "recovered using a", $55 db "@" text_from_ram $d073 db $0, "!", $58 ; 0x80bde BattleText_0x80bde: ; 0x80bde db $0, $5a, "'s", $4f db "@" text_from_ram $d073 db $0, $55 db "activated!", $58 ; 0x80bf3 BattleText_0x80bf3: ; 0x80bf3 db $0, "Items can't be", $4f db "used here.", $58 ; 0x80c0d BattleText_0x80c0d: ; 0x80c0d text_from_ram $c621 db $0, $4f db "is already out.", $58 ; 0x80c22 BattleText_0x80c22: ; 0x80c22 text_from_ram $c621 db $0, $4f db "can't be recalled!", $58 ; 0x80c39 BattleText_0x80c39: ; 0x80c39 db $0, "There's no PP left", $4f db "for this move!", $58 ; 0x80c5b BattleText_0x80c5b: ; 0x80c5b db $0, "The move is", $4f db "DISABLED!", $58 ; 0x80c72 BattleText_0x80c72: ; 0x80c72 text_from_ram $c621 db $0, $4f db "has no moves left!", $57 ; 0x80c8a BattleText_0x80c8a: ; 0x80c8a db $0, $59, "'s", $4f db "ENCORE ended!", $58 ; 0x80c9c BattleText_0x80c9c: ; 0x80c9c text_from_ram $d073 db $0, " grew to", $4f db "level @" deciram $d143, $13 db $0, "!@" sound0 db $50 ; 0x80cb9 BattleText_0x80cb9: ; 0x80cb9 db $50 ; 0x80cba BattleText_0x80cba: ; 0x80cba db $0, "Wild @" text_from_ram $c616 db $0, $4f db "is eating!", $58 ; 0x80cd1 BattleText_0x80cd1: ; 0x80cd1 db $0, "Wild @" text_from_ram $c616 db $0, $4f db "is angry!", $58 ; 0x80ce7 BattleText_0x80ce7: ; 0x80ce7 db $0, $5a, $4f db "is fast asleep!", $58 ; 0x80cfa BattleText_0x80cfa: ; 0x80cfa db $0, $5a, $4f db "woke up!", $58 ; 0x80d06 BattleText_0x80d06: ; 0x80d06 db $0, $5a, $4f db "is frozen solid!", $58 ; 0x80d1a BattleText_0x80d1a: ; 0x80d1a db $0, $5a, $4f db "flinched!", $58 ; 0x80d27 BattleText_0x80d27: ; 0x80d27 db $0, $5a, $4f db "must recharge!", $58 ; 0x80d39 BattleText_0x80d39: ; 0x80d39 db $0, $5a, "'s", $4f db "disabled no more!", $58 ; 0x80d4f BattleText_0x80d4f: ; 0x80d4f db $0, $5a, $4f db "is confused!", $58 ; 0x80d5f BattleText_0x80d5f: ; 0x80d5f db $0, "It hurt itself in", $4f db "its confusion!", $58 ; 0x80d81 BattleText_0x80d81: ; 0x80d81 db $0, $5a, "'s", $4f db "confused no more!", $58 ; 0x80d97 BattleText_0x80d97: ; 0x80d97 db $0, $59, $4f db "became confused!", $58 ; 0x80dab BattleText_0x80dab: ; 0x80dab db $0, "A @" text_from_ram $d073 db $0, " rid", $4f db $59, $55 db "of its confusion.", $58 ; 0x80dcc BattleText_0x80dcc: ; 0x80dcc db $0, $59, "'s", $4f db "already confused!", $58 ; 0x80de2 BattleText_0x80de2: ; 0x80de2 db $0, $5a, "'s", $4f db "hurt by", $55 db "@" text_from_ram $d073 db $0, "!", $58 ; 0x80df5 BattleText_0x80df5: ; 0x80df5 db $0, $5a, $4f db "was released from", $55 db "@" text_from_ram $d073 db $0, "!", $58 ; 0x80e11 BattleText_0x80e11: ; 0x80e11 db $0, $5a, $4f db "used BIND on", $55 db $59, "!", $58 ; 0x80e24 BattleText_0x80e24: ; 0x80e24 db $0, $59, $4f db "was trapped!", $58 ; 0x80e34 BattleText_0x80e34: ; 0x80e34 db $0, $59, $4f db "was trapped!", $58 ; 0x80e44 BattleText_0x80e44: ; 0x80e44 db $0, $59, $4f db "was WRAPPED by", $55 db $5a, "!", $58 ; 0x80e59 BattleText_0x80e59: ; 0x80e59 db $0, $59, $4f db "was CLAMPED by", $55 db $5a, "!", $58 ; 0x80e6e BattleText_0x80e6e: ; 0x80e6e db $0, $5a, $4f db "is storing energy!", $58 ; 0x80e84 BattleText_0x80e84: ; 0x80e84 db $0, $5a, $4f db "unleashed energy!", $58 ; 0x80e99 BattleText_0x80e99: ; 0x80e99 db $0, $59, $4f db "hung on with", $55 db "@" text_from_ram $d073 db $0, "!", $58 ; 0x80eb0 BattleText_0x80eb0: ; 0x80eb0 db $0, $59, $4f db "ENDURED the hit!", $58 ; 0x80ec4 BattleText_0x80ec4: ; 0x80ec4 db $0, $5a, $4f db "is in love with", $55 db $59, "!", $58 ; 0x80eda BattleText_0x80eda: ; 0x80eda db $0, $5a, "'s", $4f db "infatuation kept", $55 db "it from attacking!", $58 ; 0x80f02 BattleText_0x80f02: ; 0x80f02 db $0, $5a, "'s", $4f db "@" text_from_ram $d073 db $0, " is", $55 db "DISABLED!", $58 ; 0x80f19 BattleText_0x80f19: ; 0x80f19 text_from_ram $c621 db $0, " is", $4f db "loafing around.", $58 ; 0x80f31 BattleText_0x80f31: ; 0x80f31 text_from_ram $c621 db $0, " began", $4f db "to nap!", $58 ; 0x80f44 BattleText_0x80f44: ; 0x80f44 text_from_ram $c621 db $0, " won't", $4f db "obey!", $58 ; 0x80f54 BattleText_0x80f54: ; 0x80f54 text_from_ram $c621 db $0, " turned", $4f db "away!", $58 ; 0x80f66 BattleText_0x80f66: ; 0x80f66 text_from_ram $c621 db $0, " ignored", $4f db "orders!", $58 ; 0x80f7b BattleText_0x80f7b: ; 0x80f7b text_from_ram $c621 db $0, " ignored", $4f db "orders…sleeping!", $58 ; 0x80f99 BattleText_0x80f99: ; 0x80f99 db $0, "But no PP is left", $4f db "for the move!", $58 ; 0x80fba BattleText_0x80fba: ; 0x80fba db $0, $5a, $4f db "has no PP left for", $55 db "@" text_from_ram $d086 db $0, "!", $58 ; 0x80fd7 BattleText_0x80fd7: ; 0x80fd7 db $0, $5a, $4f db "went to sleep!", $57 ; 0x80fe9 BattleText_0x80fe9: ; 0x80fe9 db $0, $5a, $4f db "fell asleep and", $55 db "became healthy!", $57 ; 0x8100c BattleText_0x8100c: ; 0x8100c db $0, $5a, $4f db "regained health!", $58 ; 0x81020 BattleText_0x81020: ; 0x81020 db $0, $5a, "'s", $4f db "attack missed!", $58 ; 0x81033 BattleText_0x81033: ; 0x81033 db $0, $5a, "'s", $4f db "attack missed!", $58 ; 0x81046 BattleText_0x81046: ; 0x81046 db $0, $5a, $4f db "kept going and", $55 db "crashed!", $58 ; 0x81061 BattleText_0x81061: ; 0x81061 db $0, $59, "'s", $4f db "unaffected!", $58 ; 0x81071 BattleText_0x81071: ; 0x81071 db $0, "It doesn't affect", $4f db $59, "!", $58 ; 0x81086 BattleText_0x81086: ; 0x81086 db $0, "A critical hit!", $58 ; 0x81097 BattleText_0x81097: ; 0x81097 db $0, "It's a one-hit KO!", $58 ; 0x810aa BattleText_0x810aa: ; 0x810aa db $0, "It's super-", $4f db "effective!", $58 ; 0x810c1 BattleText_0x810c1: ; 0x810c1 db $0, "It's not very", $4f db "effective…", $58 ; 0x810da BattleText_0x810da: ; 0x810da db $0, $59, $4f db "took down with it,", $55 db $5a, "!", $58 ; 0x810f3 BattleText_0x810f3: ; 0x810f3 db $0, $5a, "'s", $4f db "RAGE is building!", $58 ; 0x81109 BattleText_0x81109: ; 0x81109 db $0, $59, $4f db "got an ENCORE!", $58 ; 0x8111b BattleText_0x8111b: ; 0x8111b db $0, "The battlers", $4f db "shared pain!", $58 ; 0x81136 BattleText_0x81136: ; 0x81136 db $0, $5a, $4f db "took aim!", $58 ; 0x81143 BattleText_0x81143: ; 0x81143 db $0, $5a, $4f db "SKETCHED", $55 db "@" text_from_ram $d073 db $0, "!", $58 ; 0x81156 BattleText_0x81156: ; 0x81156 db $0, $5a, "'s", $4f db "trying to take its", $55 db "opponent with it!", $58 ; 0x8117f BattleText_0x8117f: ; 0x8117f db $0, $59, "'s", $4f db "@" text_from_ram $d073 db $0, " was", $55 db "reduced by @" deciram $d265, $11 db $0, "!", $58 ; 0x811a0 BattleText_0x811a0: ; 0x811a0 db $0, "A bell chimed!", $4f db $58 ; 0x811b1 BattleText_0x811b1: ; 0x811b1 db $0, $59, $4f db "fell asleep!", $58 ; 0x811c1 BattleText_0x811c1: ; 0x811c1 db $0, $59, "'s", $4f db "already asleep!", $58 ; 0x811d5 BattleText_0x811d5: ; 0x811d5 db $0, $59, $4f db "was poisoned!", $58 ; 0x811e6 BattleText_0x811e6: ; 0x811e6 db $0, $59, "'s", $4f db "badly poisoned!", $58 ; 0x811fa BattleText_0x811fa: ; 0x811fa db $0, $59, "'s", $4f db "already poisoned!", $58 ; 0x81210 BattleText_0x81210: ; 0x81210 db $0, "Sucked health from", $4f db $59, "!", $58 ; 0x81227 BattleText_0x81227: ; 0x81227 db $0, $59, "'s", $4f db "dream was eaten!", $58 ; 0x8123c BattleText_0x8123c: ; 0x8123c db $0, $59, $4f db "was burned!", $58 ; 0x8124b BattleText_0x8124b: ; 0x8124b db $0, $59, $4f db "was defrosted!", $58 ; 0x8125d BattleText_0x8125d: ; 0x8125d db $0, $59, $4f db "was frozen solid!", $58 ; 0x81272 BattleText_0x81272: ; 0x81272 db $0, $5a, "'s", $4f db "@" text_from_ram $d086 db $0, " won't", $55 db "rise anymore!", $58 ; 0x8128f BattleText_0x8128f: ; 0x8128f db $0, $59, "'s", $4f db "@" text_from_ram $d086 db $0, " won't", $55 db "drop anymore!", $58 ; 0x812ac BattleText_0x812ac: ; 0x812ac db $0, $5a, $4f db "fled from battle!", $58 ; 0x812c1 BattleText_0x812c1: ; 0x812c1 db $0, $59, $4f db "fled in fear!", $58 ; 0x812d2 BattleText_0x812d2: ; 0x812d2 db $0, $59, $4f db "was blown away!", $58 ; 0x812e5 BattleText_0x812e5: ; 0x812e5 db $0, "Hit @" deciram $c682, $11 db $0, " times!", $58 ; 0x812f8 BattleText_0x812f8: ; 0x812f8 db $0, "Hit @" deciram $c684, $11 db $0, " times!", $58 ; 0x8130b BattleText_0x8130b: ; 0x8130b db $0, $5a, "'s", $4f db "shrouded in MIST!", $58 ; 0x81321 BattleText_0x81321: ; 0x81321 db $0, $59, "'s", $4f db "protected by MIST.", $58 ; 0x81338 BattleText_0x81338: ; 0x81338 interpret_data db $0, $5a, "'s", $4f db "getting pumped!", $58 ; 0x8134d BattleText_0x8134d: ; 0x8134d db $0, $5a, "'s", $4f db "hit with recoil!", $58 ; 0x81362 BattleText_0x81362: ; 0x81362 db $0, $5a, $4f db "made a SUBSTITUTE!", $58 ; 0x81378 BattleText_0x81378: ; 0x81378 db $0, $5a, $4f db "has a SUBSTITUTE!", $58 ; 0x8138d BattleText_0x8138d: ; 0x8138d db $0, "Too weak to make", $4f db "a SUBSTITUTE!", $58 ; 0x813ad BattleText_0x813ad: ; 0x813ad db $0, "The SUBSTITUTE", $4f db "took damage for", $55 db $59, "!", $58 ; 0x813d0 BattleText_0x813d0: ; 0x813d0 db $0, $59, "'s", $4f db "SUBSTITUTE faded!", $58 ; 0x813e6 BattleText_0x813e6: ; 0x813e6 db $0, $5a, $4f db "learned", $55 db "@" text_from_ram $d073 db $0, "!", $58 ; 0x813f8 BattleText_0x813f8: ; 0x813f8 db $0, $59, $4f db "was seeded!", $58 ; 0x81407 BattleText_0x81407: ; 0x81407 db $0, $59, $4f db "evaded the attack!", $58 ; 0x8141d BattleText_0x8141d: ; 0x8141d db $0, $59, "'s", $4f db "@" text_from_ram $d073 db $0, " was", $55 db "DISABLED!", $58 ; 0x81435 BattleText_0x81435: ; 0x81435 db $0, "Coins scattered", $4f db "everywhere!", $58 ; 0x81452 BattleText_0x81452: ; 0x81452 db $0, $5a, $4f db "transformed into", $55 db "the @" text_from_ram $d073 db $0, "-type!", $58 ; 0x81476 BattleText_0x81476: ; 0x81476 db $0, "All stat changes", $4f db "were eliminated!", $58 ; 0x81499 BattleText_0x81499: ; 0x81499 db $0, $5a, $4f db "TRANSFORMED into", $55 db "@" text_from_ram $d073 db $0, "!", $58 ; 0x814b4 BattleText_0x814b4: ; 0x814b4 db $0, $5a, "'s", $4f db "SPCL.DEF rose!", $58 ; 0x814c7 BattleText_0x814c7: ; 0x814c7 db $0, $5a, "'s", $4f db "DEFENSE rose!", $58 ; 0x814d9 BattleText_0x814d9: ; 0x814d9 db $0, "But nothing", $4f db "happened.", $58 ; 0x814f0 BattleText_0x814f0: ; 0x814f0 db $0, "But it failed!", $58 ; 0x81500 BattleText_0x81500: ; 0x81500 db $0, "It failed!", $58 ; 0x8150c BattleText_0x8150c: ; 0x8150c db $0, "It didn't affect", $4f db $59, "!", $58 ; 0x81520 BattleText_0x81520: ; 0x81520 db $0, "It didn't affect", $4f db $59, "!", $58 ; 0x81534 BattleText_0x81534: ; 0x81534 db $0, $5a, "'s", $4f db "HP is full!", $58 ; 0x81544 BattleText_0x81544: ; 0x81544 db $0, $5a, $4f db "was dragged out!", $58 ; 0x81558 BattleText_0x81558: ; 0x81558 db $0, $59, "'s", $4f db "paralyzed! Maybe", $55 db "it can't attack!", $58 ; 0x8157d BattleText_0x8157d: ; 0x8157d db $0, $5a, "'s", $4f db "fully paralyzed!", $58 ; 0x81592 BattleText_0x81592: ; 0x81592 db $0, $59, "'s", $4f db "already paralyzed!", $58 ; 0x815a9 BattleText_0x815a9: ; 0x815a9 db $0, $59, "'s", $4f db "protected by", $55 db "@" text_from_ram $d073 db $0, "!", $58 ; 0x815c1 BattleText_0x815c1: ; 0x815c1 db $0, "The MIRROR MOVE", $4e, "failed!", $58 ; 0x815da BattleText_0x815da: ; 0x815da db $0, $5a, $4f db "stole @" text_from_ram $d073 db $0, $55 db "from its foe!", $58 ; 0x815f7 BattleText_0x815f7: ; 0x815f7 db $0, $59, $4f db "can't escape now!", $58 ; 0x8160b BattleText_0x8160b: ; 0x8160b db $0, $59, $4f db "started to have a", $55 db "NIGHTMARE!", $58 ; 0x8162b BattleText_0x8162b: ; 0x8162b db $0, $5a, $4f db "was defrosted!", $58 ; 0x8163d BattleText_0x8163d: ; 0x8163d db $0, $5a, $4f db "cut its own HP and", $51 db "put a CURSE on", $4f db $59, "!", $58 ; 0x81665 BattleText_0x81665: ; 0x81665 db $0, $5a, $4f db "PROTECTED itself!", $58 ; 0x8167a BattleText_0x8167a: ; 0x8167a db $0, $59, "'s", $4f db "PROTECTING itself!", $57 ; 0x81691 BattleText_0x81691: ; 0x81691 db $0, "SPIKES scattered", $4f db "all around", $55 db $59, "!", $58 ; 0x816b1 BattleText_0x816b1: ; 0x816b1 db $0, $5a, $4f db "identified", $55 db $59, "!", $58 ; 0x816c2 BattleText_0x816c2: ; 0x816c2 db $0, "Both #MON will", $4f db "faint in 3 turns!", $58 ; 0x816e4 BattleText_0x816e4: ; 0x816e4 db $0, "A SANDSTORM", $4f db "brewed!", $58 ; 0x816f9 BattleText_0x816f9: ; 0x816f9 db $0, $5a, $4f db "braced itself!", $58 ; 0x8170b BattleText_0x8170b: ; 0x8170b db $0, $59, $4f db "fell in love!", $58 ; 0x8171c BattleText_0x8171c: ; 0x8171c db $0, $5a, "'s", $4f db "covered by a veil!", $58 ; 0x81733 BattleText_0x81733: ; 0x81733 db $0, $59, $4f db "is protected by", $55 db "SAFEGUARD!", $58 ; 0x81751 BattleText_0x81751: ; 0x81751 db $0, "Magnitude @" deciram $d265, $11 db $0, "!", $58 ; 0x81764 BattleText_0x81764: ; 0x81764 db $0, $5a, $4f db "was released by", $55 db $59, "!", $58 ; 0x8177a BattleText_0x8177a: ; 0x8177a db $0, $5a, $4f db "shed LEECH SEED!", $58 ; 0x8178e BattleText_0x8178e: ; 0x8178e db $0, $5a, $4f db "blew away SPIKES!", $58 ; 0x817a3 BattleText_0x817a3: ; 0x817a3 db $0, "A downpour", $4f db "started!", $58 ; 0x817b8 BattleText_0x817b8: ; 0x817b8 db $0, "The sunlight got", $4f db "bright!", $58 ; 0x817d2 BattleText_0x817d2: ; 0x817d2 db $0, $5a, $4f db "cut its HP and", $55 db "maximized ATTACK!", $58 ; 0x817f6 BattleText_0x817f6: ; 0x817f6 db $0, $5a, $4f db "copied the stat", $51 db "changes of", $4f db $59, "!", $58 ; 0x81817 BattleText_0x81817: ; 0x81817 db $0, $5a, $4f db "foresaw an attack!", $58 ; 0x8182d BattleText_0x8182d: ; 0x8182d text_from_ram $d073 db $0, "'s", $4f db "attack!", $57 ; 0x8183b BattleText_0x8183b: ; 0x8183b db $0, $59, $4f db "refused the gift!", $58 ; 0x81850 BattleText_0x81850: ; 0x81850 db $0, $5a, $4f db "ignored orders!", $58 ; 0x81863 BattleText_0x81863: ; 0x81863 db $0, "Link error…", $51 db "The battle has", $4f db "been canceled…", $58 ; 0x8188e BattleText_0x8188e: ; 0x8188e db $0, "There is no time", $4f db "left today!", $57 ; 0x818ac INCBIN "baserom.gbc",$818ac,$84000-$818ac SECTION "bank21",DATA,BANK[$21] INCBIN "baserom.gbc", $84000, $84a2e - $84000 FX00GFX: FX01GFX: ; 84a2e INCBIN "gfx/fx/001.lz" ; 84b15 INCBIN "baserom.gbc", $84b15, $84b1e - $84b15 FX02GFX: ; 84b1e INCBIN "gfx/fx/002.lz" ; 84b7a INCBIN "baserom.gbc", $84b7a, $84b7e - $84b7a FX03GFX: ; 84b7e INCBIN "gfx/fx/003.lz" ; 84bd0 INCBIN "baserom.gbc", $84bd0, $84bde - $84bd0 FX04GFX: ; 84bde INCBIN "gfx/fx/004.lz" ; 84ca5 INCBIN "baserom.gbc", $84ca5, $84cae - $84ca5 FX05GFX: ; 84cae INCBIN "gfx/fx/005.lz" ; 84de2 INCBIN "baserom.gbc", $84de2, $84dee - $84de2 FX07GFX: ; 84dee INCBIN "gfx/fx/007.lz" ; 84e70 INCBIN "baserom.gbc", $84e70, $84e7e - $84e70 FX08GFX: ; 84e7e INCBIN "gfx/fx/008.lz" ; 84ed4 INCBIN "baserom.gbc", $84ed4, $84ede - $84ed4 FX10GFX: ; 84ede INCBIN "gfx/fx/010.lz" ; 84f13 INCBIN "baserom.gbc", $84f13, $84f1e - $84f13 FX09GFX: ; 84f1e INCBIN "gfx/fx/009.lz" ; 85009 INCBIN "baserom.gbc", $85009, $8500e - $85009 FX12GFX: ; 8500e INCBIN "gfx/fx/012.lz" ; 8506f INCBIN "baserom.gbc", $8506f, $8507e - $8506f FX06GFX: ; 8507e INCBIN "gfx/fx/006.lz" ; 8515c INCBIN "baserom.gbc", $8515c, $8515e - $8515c FX11GFX: ; 8515e INCBIN "gfx/fx/011.lz" ; 851ad INCBIN "baserom.gbc", $851ad, $851ae - $851ad FX13GFX: ; 851ae INCBIN "gfx/fx/013.lz" ; 85243 INCBIN "baserom.gbc", $85243, $8524e - $85243 FX14GFX: ; 8524e INCBIN "gfx/fx/014.lz" ; 852ff INCBIN "baserom.gbc", $852ff, $8530e - $852ff FX24GFX: ; 8530e INCBIN "gfx/fx/024.lz" ; 8537c INCBIN "baserom.gbc", $8537c, $8537e - $8537c FX15GFX: ; 8537e INCBIN "gfx/fx/015.lz" ; 8539a INCBIN "baserom.gbc", $8539a, $8539e - $8539a FX16GFX: ; 8539e INCBIN "gfx/fx/016.lz" ; 8542d INCBIN "baserom.gbc", $8542d, $8542e - $8542d FX17GFX: ; 8542e INCBIN "gfx/fx/017.lz" ; 85477 INCBIN "baserom.gbc", $85477, $8547e - $85477 FX18GFX: ; 8547e INCBIN "gfx/fx/018.lz" ; 854eb INCBIN "baserom.gbc", $854eb, $854ee - $854eb FX19GFX: ; 854ee INCBIN "gfx/fx/019.lz" ; 855a9 INCBIN "baserom.gbc", $855a9, $855ae - $855a9 FX20GFX: ; 855ae INCBIN "gfx/fx/020.lz" ; 85627 INCBIN "baserom.gbc", $85627, $8562e - $85627 FX22GFX: ; 8562e INCBIN "gfx/fx/022.lz" ; 856ec INCBIN "baserom.gbc", $856ec, $856ee - $856ec FX21GFX: ; 856ee INCBIN "gfx/fx/021.lz" ; 85767 INCBIN "baserom.gbc", $85767, $8576e - $85767 FX23GFX: ; 8576e INCBIN "gfx/fx/023.lz" ; 857d0 INCBIN "baserom.gbc", $857d0, $857de - $857d0 FX26GFX: ; 857de INCBIN "gfx/fx/026.lz" ; 85838 INCBIN "baserom.gbc", $85838, $8583e - $85838 FX27GFX: ; 8583e INCBIN "gfx/fx/027.lz" ; 858b0 INCBIN "baserom.gbc", $858b0, $858be - $858b0 FX28GFX: ; 858be INCBIN "gfx/fx/028.lz" ; 85948 INCBIN "baserom.gbc", $85948, $8594e - $85948 FX29GFX: ; 8594e INCBIN "gfx/fx/029.lz" ; 859a8 INCBIN "baserom.gbc", $859a8, $859ae - $859a8 FX30GFX: ; 859ae INCBIN "gfx/fx/030.lz" ; 859ff INCBIN "baserom.gbc", $859ff, $85a0e - $859ff FX31GFX: ; 85a0e INCBIN "gfx/fx/031.lz" ; 85ba1 INCBIN "baserom.gbc", $85ba1, $85bae - $85ba1 FX32GFX: ; 85bae INCBIN "gfx/fx/032.lz" ; 85d09 INCBIN "baserom.gbc", $85d09, $85d0e - $85d09 FX33GFX: ; 85d0e INCBIN "gfx/fx/033.lz" ; 85def INCBIN "baserom.gbc", $85def, $85dfe - $85def FX34GFX: ; 85dfe INCBIN "gfx/fx/034.lz" ; 85e96 INCBIN "baserom.gbc", $85e96, $85e9e - $85e96 FX25GFX: ; 85e9e INCBIN "gfx/fx/025.lz" ; 85fb8 INCBIN "baserom.gbc", $85fb8, $85fbe - $85fb8 FX35GFX: ; 85fbe INCBIN "gfx/fx/035.lz" ; 86099 INCBIN "baserom.gbc", $86099, $8609e - $86099 FX36GFX: ; 8609e INCBIN "gfx/fx/036.lz" ; 86174 INCBIN "baserom.gbc", $86174, $8617e - $86174 FX37GFX: ; 8617e INCBIN "gfx/fx/037.lz" ; 862eb INCBIN "baserom.gbc", $862eb, $862ee - $862eb FX38GFX: ; 862ee INCBIN "gfx/fx/038.lz" ; 8637f INCBIN "baserom.gbc", $8637f, $8638e - $8637f FX39GFX: ; 8638e INCBIN "gfx/fx/039.lz" ; 8640b INCBIN "baserom.gbc", $8640b, $88000 - $8640b SECTION "bank22",DATA,BANK[$22] INCBIN "baserom.gbc",$88000,$8832c - $88000 GetPlayerIcon: ; 8832c ; Get the player icon corresponding to gender ; Male ld de, $4000 ; KrissMIcon ld b, $30 ; BANK(KrissMIcon) ld a, [PlayerGender] bit 0, a jr z, .done ; Female ld de, $7a40 ; KrissFIcon ld b, $31 ; BANK(KrissFIcon) .done ret ; 8833e INCBIN "baserom.gbc",$8833e,$896ff - $8833e ClearScreenArea: ; 0x896ff ; clears an area of the screen ; INPUT: ; hl = address of upper left corner of the area ; b = height ; c = width ld a, $7f ; blank tile ld de, 20 ; screen width .loop\@ push bc push hl .innerLoop\@ ld [hli], a dec c jr nz, .innerLoop\@ pop hl pop bc add hl, de dec b jr nz, .loop\@ dec hl inc c inc c .asm_89713 ld a, $36 ld [hli], a dec c ret z ld a, $18 ld [hli], a dec c jr nz, .asm_89713 ; 0x8971c $f5 ret ; 0x8971f INCBIN "baserom.gbc",$8971f,$8addb - $8971f SpecialHoOhChamber: ; 0x8addb ld hl, PartySpecies ld a, [hl] cp HO_OH ; is Ho-oh the first Pokémon in the party? jr nz, .done ; if not, we're done call GetSecondaryMapHeaderPointer ld de, $0326 ld b, $1 call BitTable1Func .done ret ; 0x8adef INCBIN "baserom.gbc",$8adef,$8b170 - $8adef SpecialDratini: ; 0x8b170 ; if ScriptVar is 0 or 1, change the moveset of the last Dratini in the party. ; 0: give it a special moveset with Extremespeed. ; 1: give it the normal moveset of a level 15 Dratini. ld a, [ScriptVar] cp $2 ret nc ld bc, PartyCount ld a, [bc] ld hl, 0 call GetNthPartyMon ld a, [bc] ld c, a ld de, PartyMon2 - PartyMon1 .CheckForDratini ; start at the end of the party and search backwards for a Dratini ld a, [hl] cp DRATINI jr z, .GiveMoveset ld a, l sub e ld l, a ld a, h sbc d ld h, a dec c jr nz, .CheckForDratini ret .GiveMoveset push hl ld a, [ScriptVar] ld hl, .Movesets ld bc, .Moveset1 - .Moveset0 call AddNTimes ; get address of mon's first move pop de inc de inc de .GiveMoves ld a, [hl] and a ; is the move 00? ret z ; if so, we're done here push hl push de ld [de], a ; give the Pokémon the new move ; get the PP of the new move dec a ld hl, Moves + 5 ld bc, Move1 - Move0 call AddNTimes ld a, BANK(Moves) call GetFarByte ; get the address of the move's PP and update the PP ld hl, PartyMon1PP - PartyMon1Moves add hl, de ld [hl], a pop de pop hl inc de inc hl jr .GiveMoves .Movesets .Moveset0 ; Dratini does not normally learn Extremespeed. This is a special gift. db WRAP db THUNDER_WAVE db TWISTER db EXTREMESPEED db 0 .Moveset1 ; This is the normal moveset of a level 15 Dratini db WRAP db LEER db THUNDER_WAVE db TWISTER db 0 GetNthPartyMon: ; 0x8b1ce ; inputs: ; hl must be set to 0 before calling this function. ; a must be set to the number of Pokémon in the party. ; outputs: ; returns the address of the last Pokémon in the party in hl. ; sets carry if a is 0. ld de, PartyMon1 add hl, de and a jr z, .EmptyParty dec a ret z ld de, PartyMon2 - PartyMon1 .loop add hl, de dec a jr nz, .loop ret .EmptyParty scf ret INCBIN "baserom.gbc",$8b1e1,$8c000-$8b1e1 SECTION "bank23",DATA,BANK[$23] INCBIN "baserom.gbc",$8c000,$8c011 - $8c000 TimeOfDayPals: ; 8c011 ; return carry if pals are changed ; forced pals? ld hl, $d846 bit 7, [hl] jr nz, .dontchange ; do we need to bother updating? ld a, [TimeOfDay] ld hl, CurTimeOfDay cp [hl] jr z, .dontchange ; if so, the time of day has changed ld a, [TimeOfDay] ld [CurTimeOfDay], a ; get palette id call GetTimePalette ; same palette as before? ld hl, TimeOfDayPal cp [hl] jr z, .dontchange ; update palette id ld [TimeOfDayPal], a ; save bg palette 8 ld hl, $d038 ; Unkn1Pals + 7 pals ; save wram bank ld a, [$ff70] ; wram bank ld b, a ; wram bank 5 ld a, 5 ld [$ff70], a ; wram bank ; push palette ld c, 4 ; NUM_PAL_COLORS .push ld d, [hl] inc hl ld e, [hl] inc hl push de dec c jr nz, .push ; restore wram bank ld a, b ld [$ff70], a ; wram bank ; update sgb pals ld b, $9 call GetSGBLayout ; restore bg palette 8 ld hl, $d03f ; last byte in Unkn1Pals ; save wram bank ld a, [$ff70] ; wram bank ld d, a ; wram bank 5 ld a, 5 ld [$ff70], a ; wram bank ; pop palette ld e, 4 ; NUM_PAL_COLORS .pop pop bc ld [hl], c dec hl ld [hl], b dec hl dec e jr nz, .pop ; restore wram bank ld a, d ld [$ff70], a ; wram bank ; update palettes call UpdateTimePals call DelayFrame ; successful change scf ret .dontchange ; no change occurred and a ret ; 8c070 UpdateTimePals: ; 8c070 ld c, $9 ; normal call GetTimePalFade call DmgToCgbTimePals ret ; 8c079 INCBIN "baserom.gbc",$8c079,$8c117 - $8c079 GetTimePalette: ; 8c117 ; get time of day ld a, [TimeOfDay] ld e, a ld d, $0 ; get fn ptr ld hl, .TimePalettes add hl, de add hl, de ld a, [hli] ld h, [hl] ld l, a ; go jp [hl] ; 8c126 .TimePalettes dw .MorningPalette dw .DayPalette dw .NitePalette dw .DarknessPalette .MorningPalette ; 8c12e ld a, [$d847] and %00000011 ; 0 ret ; 8c134 .DayPalette ; 8c134 ld a, [$d847] and %00001100 ; 1 srl a srl a ret ; 8c13e .NitePalette ; 8c13e ld a, [$d847] and %00110000 ; 2 swap a ret ; 8c146 .DarknessPalette ; 8c146 ld a, [$d847] and %11000000 ; 3 rlca rlca ret ; 8c14e DmgToCgbTimePals: ; 8c14e push hl push de ld a, [hli] call DmgToCgbBGPals ld a, [hli] ld e, a ld a, [hli] ld d, a call DmgToCgbObjPals pop de pop hl ret ; 8c15e INCBIN "baserom.gbc",$8c15e,$8c17c - $8c15e GetTimePalFade: ; 8c17c ; check cgb ld a, [$ffe6] and a jr nz, .cgb ; else: dmg ; index ld a, [TimeOfDayPal] and %11 ; get fade table push bc ld c, a ld b, $0 ld hl, .dmgfades add hl, bc add hl, bc ld a, [hli] ld h, [hl] ld l, a pop bc ; get place in fade table ld b, $0 add hl, bc ret .cgb ld hl, .cgbfade ld b, $0 add hl, bc ret ; 8c19e .dmgfades ; 8c19e dw .morn dw .day dw .nite dw .darkness ; 8c1a6 .morn ; 8c1a6 db %11111111 db %11111111 db %11111111 db %11111110 db %11111110 db %11111110 db %11111001 db %11100100 db %11100100 db %11100100 db %11010000 db %11010000 db %10010000 db %10000000 db %10000000 db %01000000 db %01000000 db %01000000 db %00000000 db %00000000 db %00000000 ; 8c1bb .day ; 8c1bb db %11111111 db %11111111 db %11111111 db %11111110 db %11111110 db %11111110 db %11111001 db %11100100 db %11100100 db %11100100 db %11010000 db %11010000 db %10010000 db %10000000 db %10000000 db %01000000 db %01000000 db %01000000 db %00000000 db %00000000 db %00000000 ; 8c1d0 .nite ; 8c1d0 db %11111111 db %11111111 db %11111111 db %11111110 db %11111110 db %11111110 db %11111001 db %11100100 db %11100100 db %11101001 db %11010000 db %11010000 db %10010000 db %10000000 db %10000000 db %01000000 db %01000000 db %01000000 db %00000000 db %00000000 db %00000000 ; 8c1e5 .darkness ; 8c1e5 db %11111111 db %11111111 db %11111111 db %11111110 db %11111110 db %11111111 db %11111110 db %11100100 db %11111111 db %11111101 db %11010000 db %11111111 db %11111101 db %10000000 db %11111111 db %00000000 db %01000000 db %00000000 db %00000000 db %00000000 db %00000000 ; 8c1fa .cgbfade ; 8c1fa db %11111111 db %11111111 db %11111111 db %11111110 db %11111110 db %11111110 db %11111001 db %11111001 db %11111001 db %11100100 db %11100100 db %11100100 db %10010000 db %10010000 db %10010000 db %01000000 db %01000000 db %01000000 db %00000000 db %00000000 db %00000000 ; 8c20f INCBIN "baserom.gbc",$8c20f,$8e9ac - $8c20f GetSpeciesIcon: ; 8e9ac ; Load species icon into VRAM at tile a push de ld a, [$d265] call ReadMonMenuIcon ld [CurIcon], a pop de ld a, e call GetIconGFX ret ; 8e9bc INCBIN "baserom.gbc",$8e9bc,$8e9de - $8e9bc GetIconGFX: ; 8e9de call GetIcon_a ld de, $80 ; 8 tiles add hl, de ld de, HeldItemIcons ld bc, $2302 call GetGFXUnlessMobile ld a, [$c3b7] add 10 ld [$c3b7], a ret HeldItemIcons: INCBIN "gfx/icon/mail.2bpp" INCBIN "gfx/icon/item.2bpp" ; 8ea17 GetIcon_de: ; 8ea17 ; Load icon graphics into VRAM starting from tile de ld l, e ld h, d jr GetIcon GetIcon_a: ; 8ea1b ; Load icon graphics into VRAM starting from tile a ld l, a ld h, 0 GetIcon: ; 8ea1e ; Load icon graphics into VRAM starting from tile hl ; One tile is 16 bytes long add hl, hl add hl, hl add hl, hl add hl, hl ld de, VTiles0 add hl, de push hl ; Reading the icon pointer table would only make sense if they were ; scattered. However, the icons are contiguous and in-order. ld a, [CurIcon] push hl ld l, a ld h, 0 add hl, hl ld de, IconPointers add hl, de ld a, [hli] ld e, a ld d, [hl] pop hl ld bc, $2308 call GetGFXUnlessMobile pop hl ret ; 8ea3f GetGFXUnlessMobile: ; 8ea3f ld a, [InLinkBattle] cp 4 ; Mobile Link Battle jp nz, $eba jp $dc9 ; 8ea4a INCBIN "baserom.gbc",$8ea4a,$8eab3 - $8ea4a ReadMonMenuIcon: ; 8eab3 cp EGG jr z, .egg dec a ld hl, MonMenuIcons ld e, a ld d, 0 add hl, de ld a, [hl] ret .egg ld a, ICON_EGG ret ; 8eac4 MonMenuIcons: ; 8eac4 db ICON_BULBASAUR ; BULBASAUR db ICON_BULBASAUR ; IVYSAUR db ICON_BULBASAUR ; VENUSAUR db ICON_CHARMANDER ; CHARMANDER db ICON_CHARMANDER ; CHARMELEON db ICON_BIGMON ; CHARIZARD db ICON_SQUIRTLE ; SQUIRTLE db ICON_SQUIRTLE ; WARTORTLE db ICON_SQUIRTLE ; BLASTOISE db ICON_CATERPILLAR ; CATERPIE db ICON_CATERPILLAR ; METAPOD db ICON_MOTH ; BUTTERFREE db ICON_CATERPILLAR ; WEEDLE db ICON_CATERPILLAR ; KAKUNA db ICON_BUG ; BEEDRILL db ICON_BIRD ; PIDGEY db ICON_BIRD ; PIDGEOTTO db ICON_BIRD ; PIDGEOT db ICON_FOX ; RATTATA db ICON_FOX ; RATICATE db ICON_BIRD ; SPEAROW db ICON_BIRD ; FEAROW db ICON_SERPENT ; EKANS db ICON_SERPENT ; ARBOK db ICON_PIKACHU ; PIKACHU db ICON_PIKACHU ; RAICHU db ICON_MONSTER ; SANDSHREW db ICON_MONSTER ; SANDSLASH db ICON_FOX ; NIDORAN_F db ICON_FOX ; NIDORINA db ICON_MONSTER ; NIDOQUEEN db ICON_FOX ; NIDORAN_M db ICON_FOX ; NIDORINO db ICON_MONSTER ; NIDOKING db ICON_CLEFAIRY ; CLEFAIRY db ICON_CLEFAIRY ; CLEFABLE db ICON_FOX ; VULPIX db ICON_FOX ; NINETALES db ICON_JIGGLYPUFF ; JIGGLYPUFF db ICON_JIGGLYPUFF ; WIGGLYTUFF db ICON_BAT ; ZUBAT db ICON_BAT ; GOLBAT db ICON_ODDISH ; ODDISH db ICON_ODDISH ; GLOOM db ICON_ODDISH ; VILEPLUME db ICON_BUG ; PARAS db ICON_BUG ; PARASECT db ICON_CATERPILLAR ; VENONAT db ICON_MOTH ; VENOMOTH db ICON_DIGLETT ; DIGLETT db ICON_DIGLETT ; DUGTRIO db ICON_FOX ; MEOWTH db ICON_FOX ; PERSIAN db ICON_MONSTER ; PSYDUCK db ICON_MONSTER ; GOLDUCK db ICON_FIGHTER ; MANKEY db ICON_FIGHTER ; PRIMEAPE db ICON_FOX ; GROWLITHE db ICON_FOX ; ARCANINE db ICON_POLIWAG ; POLIWAG db ICON_POLIWAG ; POLIWHIRL db ICON_POLIWAG ; POLIWRATH db ICON_HUMANSHAPE ; ABRA db ICON_HUMANSHAPE ; KADABRA db ICON_HUMANSHAPE ; ALAKAZAM db ICON_FIGHTER ; MACHOP db ICON_FIGHTER ; MACHOKE db ICON_FIGHTER ; MACHAMP db ICON_ODDISH ; BELLSPROUT db ICON_ODDISH ; WEEPINBELL db ICON_ODDISH ; VICTREEBEL db ICON_JELLYFISH ; TENTACOOL db ICON_JELLYFISH ; TENTACRUEL db ICON_GEODUDE ; GEODUDE db ICON_GEODUDE ; GRAVELER db ICON_GEODUDE ; GOLEM db ICON_EQUINE ; PONYTA db ICON_EQUINE ; RAPIDASH db ICON_SLOWPOKE ; SLOWPOKE db ICON_SLOWPOKE ; SLOWBRO db ICON_VOLTORB ; MAGNEMITE db ICON_VOLTORB ; MAGNETON db ICON_BIRD ; FARFETCH_D db ICON_BIRD ; DODUO db ICON_BIRD ; DODRIO db ICON_LAPRAS ; SEEL db ICON_LAPRAS ; DEWGONG db ICON_BLOB ; GRIMER db ICON_BLOB ; MUK db ICON_SHELL ; SHELLDER db ICON_SHELL ; CLOYSTER db ICON_GHOST ; GASTLY db ICON_GHOST ; HAUNTER db ICON_GHOST ; GENGAR db ICON_SERPENT ; ONIX db ICON_HUMANSHAPE ; DROWZEE db ICON_HUMANSHAPE ; HYPNO db ICON_SHELL ; KRABBY db ICON_SHELL ; KINGLER db ICON_VOLTORB ; VOLTORB db ICON_VOLTORB ; ELECTRODE db ICON_ODDISH ; EXEGGCUTE db ICON_ODDISH ; EXEGGUTOR db ICON_MONSTER ; CUBONE db ICON_MONSTER ; MAROWAK db ICON_FIGHTER ; HITMONLEE db ICON_FIGHTER ; HITMONCHAN db ICON_MONSTER ; LICKITUNG db ICON_BLOB ; KOFFING db ICON_BLOB ; WEEZING db ICON_EQUINE ; RHYHORN db ICON_MONSTER ; RHYDON db ICON_CLEFAIRY ; CHANSEY db ICON_ODDISH ; TANGELA db ICON_MONSTER ; KANGASKHAN db ICON_FISH ; HORSEA db ICON_FISH ; SEADRA db ICON_FISH ; GOLDEEN db ICON_FISH ; SEAKING db ICON_STARYU ; STARYU db ICON_STARYU ; STARMIE db ICON_HUMANSHAPE ; MR__MIME db ICON_BUG ; SCYTHER db ICON_HUMANSHAPE ; JYNX db ICON_HUMANSHAPE ; ELECTABUZZ db ICON_HUMANSHAPE ; MAGMAR db ICON_BUG ; PINSIR db ICON_EQUINE ; TAUROS db ICON_FISH ; MAGIKARP db ICON_GYARADOS ; GYARADOS db ICON_LAPRAS ; LAPRAS db ICON_BLOB ; DITTO db ICON_FOX ; EEVEE db ICON_FOX ; VAPOREON db ICON_FOX ; JOLTEON db ICON_FOX ; FLAREON db ICON_VOLTORB ; PORYGON db ICON_SHELL ; OMANYTE db ICON_SHELL ; OMASTAR db ICON_SHELL ; KABUTO db ICON_SHELL ; KABUTOPS db ICON_BIRD ; AERODACTYL db ICON_SNORLAX ; SNORLAX db ICON_BIRD ; ARTICUNO db ICON_BIRD ; ZAPDOS db ICON_BIRD ; MOLTRES db ICON_SERPENT ; DRATINI db ICON_SERPENT ; DRAGONAIR db ICON_BIGMON ; DRAGONITE db ICON_HUMANSHAPE ; MEWTWO db ICON_HUMANSHAPE ; MEW db ICON_ODDISH ; CHIKORITA db ICON_ODDISH ; BAYLEEF db ICON_ODDISH ; MEGANIUM db ICON_FOX ; CYNDAQUIL db ICON_FOX ; QUILAVA db ICON_FOX ; TYPHLOSION db ICON_MONSTER ; TOTODILE db ICON_MONSTER ; CROCONAW db ICON_MONSTER ; FERALIGATR db ICON_FOX ; SENTRET db ICON_FOX ; FURRET db ICON_BIRD ; HOOTHOOT db ICON_BIRD ; NOCTOWL db ICON_BUG ; LEDYBA db ICON_BUG ; LEDIAN db ICON_BUG ; SPINARAK db ICON_BUG ; ARIADOS db ICON_BAT ; CROBAT db ICON_FISH ; CHINCHOU db ICON_FISH ; LANTURN db ICON_PIKACHU ; PICHU db ICON_CLEFAIRY ; CLEFFA db ICON_JIGGLYPUFF ; IGGLYBUFF db ICON_CLEFAIRY ; TOGEPI db ICON_BIRD ; TOGETIC db ICON_BIRD ; NATU db ICON_BIRD ; XATU db ICON_FOX ; MAREEP db ICON_MONSTER ; FLAAFFY db ICON_MONSTER ; AMPHAROS db ICON_ODDISH ; BELLOSSOM db ICON_JIGGLYPUFF ; MARILL db ICON_JIGGLYPUFF ; AZUMARILL db ICON_SUDOWOODO ; SUDOWOODO db ICON_POLIWAG ; POLITOED db ICON_ODDISH ; HOPPIP db ICON_ODDISH ; SKIPLOOM db ICON_ODDISH ; JUMPLUFF db ICON_MONSTER ; AIPOM db ICON_ODDISH ; SUNKERN db ICON_ODDISH ; SUNFLORA db ICON_BUG ; YANMA db ICON_MONSTER ; WOOPER db ICON_MONSTER ; QUAGSIRE db ICON_FOX ; ESPEON db ICON_FOX ; UMBREON db ICON_BIRD ; MURKROW db ICON_SLOWPOKE ; SLOWKING db ICON_GHOST ; MISDREAVUS db ICON_UNOWN ; UNOWN db ICON_GHOST ; WOBBUFFET db ICON_EQUINE ; GIRAFARIG db ICON_BUG ; PINECO db ICON_BUG ; FORRETRESS db ICON_SERPENT ; DUNSPARCE db ICON_BUG ; GLIGAR db ICON_SERPENT ; STEELIX db ICON_MONSTER ; SNUBBULL db ICON_MONSTER ; GRANBULL db ICON_FISH ; QWILFISH db ICON_BUG ; SCIZOR db ICON_BUG ; SHUCKLE db ICON_BUG ; HERACROSS db ICON_FOX ; SNEASEL db ICON_MONSTER ; TEDDIURSA db ICON_MONSTER ; URSARING db ICON_BLOB ; SLUGMA db ICON_BLOB ; MAGCARGO db ICON_EQUINE ; SWINUB db ICON_EQUINE ; PILOSWINE db ICON_SHELL ; CORSOLA db ICON_FISH ; REMORAID db ICON_FISH ; OCTILLERY db ICON_MONSTER ; DELIBIRD db ICON_FISH ; MANTINE db ICON_BIRD ; SKARMORY db ICON_FOX ; HOUNDOUR db ICON_FOX ; HOUNDOOM db ICON_BIGMON ; KINGDRA db ICON_EQUINE ; PHANPY db ICON_EQUINE ; DONPHAN db ICON_VOLTORB ; PORYGON2 db ICON_EQUINE ; STANTLER db ICON_MONSTER ; SMEARGLE db ICON_FIGHTER ; TYROGUE db ICON_FIGHTER ; HITMONTOP db ICON_HUMANSHAPE ; SMOOCHUM db ICON_HUMANSHAPE ; ELEKID db ICON_HUMANSHAPE ; MAGBY db ICON_EQUINE ; MILTANK db ICON_CLEFAIRY ; BLISSEY db ICON_FOX ; RAIKOU db ICON_FOX ; ENTEI db ICON_FOX ; SUICUNE db ICON_MONSTER ; LARVITAR db ICON_MONSTER ; PUPITAR db ICON_MONSTER ; TYRANITAR db ICON_LUGIA ; LUGIA db ICON_HO_OH ; HO_OH db ICON_HUMANSHAPE ; CELEBI IconPointers: dw NullIcon dw PoliwagIcon dw JigglypuffIcon dw DiglettIcon dw PikachuIcon dw StaryuIcon dw FishIcon dw BirdIcon dw MonsterIcon dw ClefairyIcon dw OddishIcon dw BugIcon dw GhostIcon dw LaprasIcon dw HumanshapeIcon dw FoxIcon dw EquineIcon dw ShellIcon dw BlobIcon dw SerpentIcon dw VoltorbIcon dw SquirtleIcon dw BulbasaurIcon dw CharmanderIcon dw CaterpillarIcon dw UnownIcon dw GeodudeIcon dw FighterIcon dw EggIcon dw JellyfishIcon dw MothIcon dw BatIcon dw SnorlaxIcon dw HoOhIcon dw LugiaIcon dw GyaradosIcon dw SlowpokeIcon dw SudowoodoIcon dw BigmonIcon NullIcon: PoliwagIcon: INCBIN "gfx/icon/poliwag.2bpp" ; 0x8ec0d JigglypuffIcon: INCBIN "gfx/icon/jigglypuff.2bpp" ; 0x8ec8d DiglettIcon: INCBIN "gfx/icon/diglett.2bpp" ; 0x8ed0d PikachuIcon: INCBIN "gfx/icon/pikachu.2bpp" ; 0x8ed8d StaryuIcon: INCBIN "gfx/icon/staryu.2bpp" ; 0x8ee0d FishIcon: INCBIN "gfx/icon/fish.2bpp" ; 0x8ee8d BirdIcon: INCBIN "gfx/icon/bird.2bpp" ; 0x8ef0d MonsterIcon: INCBIN "gfx/icon/monster.2bpp" ; 0x8ef8d ClefairyIcon: INCBIN "gfx/icon/clefairy.2bpp" ; 0x8f00d OddishIcon: INCBIN "gfx/icon/oddish.2bpp" ; 0x8f08d BugIcon: INCBIN "gfx/icon/bug.2bpp" ; 0x8f10d GhostIcon: INCBIN "gfx/icon/ghost.2bpp" ; 0x8f18d LaprasIcon: INCBIN "gfx/icon/lapras.2bpp" ; 0x8f20d HumanshapeIcon: INCBIN "gfx/icon/humanshape.2bpp" ; 0x8f28d FoxIcon: INCBIN "gfx/icon/fox.2bpp" ; 0x8f30d EquineIcon: INCBIN "gfx/icon/equine.2bpp" ; 0x8f38d ShellIcon: INCBIN "gfx/icon/shell.2bpp" ; 0x8f40d BlobIcon: INCBIN "gfx/icon/blob.2bpp" ; 0x8f48d SerpentIcon: INCBIN "gfx/icon/serpent.2bpp" ; 0x8f50d VoltorbIcon: INCBIN "gfx/icon/voltorb.2bpp" ; 0x8f58d SquirtleIcon: INCBIN "gfx/icon/squirtle.2bpp" ; 0x8f60d BulbasaurIcon: INCBIN "gfx/icon/bulbasaur.2bpp" ; 0x8f68d CharmanderIcon: INCBIN "gfx/icon/charmander.2bpp" ; 0x8f70d CaterpillarIcon: INCBIN "gfx/icon/caterpillar.2bpp" ; 0x8f78d UnownIcon: INCBIN "gfx/icon/unown.2bpp" ; 0x8f80d GeodudeIcon: INCBIN "gfx/icon/geodude.2bpp" ; 0x8f88d FighterIcon: INCBIN "gfx/icon/fighter.2bpp" ; 0x8f90d EggIcon: INCBIN "gfx/icon/egg.2bpp" ; 0x8f98d JellyfishIcon: INCBIN "gfx/icon/jellyfish.2bpp" ; 0x8fa0d MothIcon: INCBIN "gfx/icon/moth.2bpp" ; 0x8fa8d BatIcon: INCBIN "gfx/icon/bat.2bpp" ; 0x8fb0d SnorlaxIcon: INCBIN "gfx/icon/snorlax.2bpp" ; 0x8fb8d HoOhIcon: INCBIN "gfx/icon/ho_oh.2bpp" ; 0x8fc0d LugiaIcon: INCBIN "gfx/icon/lugia.2bpp" ; 0x8fc8d GyaradosIcon: INCBIN "gfx/icon/gyarados.2bpp" ; 0x8fd0d SlowpokeIcon: INCBIN "gfx/icon/slowpoke.2bpp" ; 0x8fd8d SudowoodoIcon: INCBIN "gfx/icon/sudowoodo.2bpp" ; 0x8fe0d BigmonIcon: INCBIN "gfx/icon/bigmon.2bpp" ; 0x8fe8d SECTION "bank24",DATA,BANK[$24] INCBIN "baserom.gbc",$90000,$909F2-$90000 dw Sunday dw Monday dw Tuesday dw Wednesday dw Thursday dw Friday dw Saturday dw Sunday Sunday: db " SUNDAY@" Monday: db " MONDAY@" Tuesday: db " TUESDAY@" Wednesday: db "WEDNESDAY@" Thursday: db "THURSDAY@" Friday: db " FRIDAY@" Saturday: db "SATURDAY@" INCBIN "baserom.gbc", $90a3f, $914dd - $90a3f PokegearSpritesGFX: ; 914dd INCBIN "gfx/misc/pokegear_sprites.lz" ; 91508 INCBIN "baserom.gbc", $91508, $91bb5 - $91508 TownMapBubble: ; 91bb5 ; Draw the bubble containing the location text in the town map HUD ; Top-left corner ld hl, TileMap + 1 ; (1,0) ld a, $30 ld [hli], a ; Top row ld bc, 16 ld a, " " call ByteFill ; Top-right corner ld a, $31 ld [hl], a ld hl, TileMap + 1 + 20 ; (1,1) ; Middle row ld bc, 18 ld a, " " call ByteFill ; Bottom-left corner ld hl, TileMap + 1 + 40 ; (1,2) ld a, $32 ld [hli], a ; Bottom row ld bc, 16 ld a, " " call ByteFill ; Bottom-right corner ld a, $33 ld [hl], a ; Print "Where?" ld hl, TileMap + 2 ; (2,0) ld de, .Where call PlaceString ; Print the name of the default flypoint call .Name ; Up/down arrows ld hl, TileMap + 18 + 20 ; (18,1) ld [hl], $34 ret .Where db "Where?@" .Name ; We need the map location of the default flypoint ld a, [DefaultFlypoint] ld l, a ld h, 0 add hl, hl ; two bytes per flypoint ld de, Flypoints add hl, de ld e, [hl] callba GetLandmarkName ld hl, TileMap + 2 + 20 ; (2,1) ld de, StringBuffer1 call PlaceString ret ; 91c17 INCBIN "baserom.gbc", $91c17, $91c50 - $91c17 GetFlyPermission: ; 91c50 ; Return flypoint c permission flag in a ld hl, FlypointPerms ld b, $2 ld d, $0 ld a, 3 ; PREDEF_GET_FLAG_NO call Predef ld a, c ret ; 91c5e Flypoints: ; 91c5e ; location id, blackout id ; Johto db 01, 14 ; New Bark Town db 03, 15 ; Cherrygrove City db 06, 16 ; Violet City db 12, 18 ; Azalea Town db 16, 20 ; Goldenrod City db 22, 22 ; Ecruteak City db 27, 21 ; Olivine City db 33, 19 ; Cianwood City db 36, 23 ; Mahogany Town db 38, 24 ; Lake of Rage db 41, 25 ; Blackthorn City db 46, 26 ; Silver Cave ; Kanto db 47, 02 ; Pallet Town db 49, 03 ; Viridian City db 51, 04 ; Pewter City db 55, 05 ; Cerulean City db 61, 07 ; Vermilion City db 66, 06 ; Rock Tunnel db 69, 08 ; Lavender Town db 71, 10 ; Celadon City db 72, 09 ; Saffron City db 81, 11 ; Fuchsia City db 85, 12 ; Cinnabar Island db 90, 13 ; Indigo Plateau ; 91c8e INCBIN "baserom.gbc", $91c8e, $91c90 - $91c8e FlyMap: ; 91c90 ld a, [MapGroup] ld b, a ld a, [MapNumber] ld c, a call GetWorldMapLocation ; If we're not in a valid location, i.e. Pokecenter floor 2F, ; the backup map information is used cp 0 jr nz, .CheckRegion ld a, [BackupMapGroup] ld b, a ld a, [BackupMapNumber] ld c, a call GetWorldMapLocation .CheckRegion ; The first 46 locations are part of Johto. The rest are in Kanto cp 47 jr nc, .KantoFlyMap .JohtoFlyMap ; Note that .NoKanto should be modified in tandem with this branch push af ; Start from New Bark Town ld a, 0 ld [DefaultFlypoint], a ; Flypoints begin at New Bark Town... ld [StartFlypoint], a ; ..and end at Silver Cave ld a, $b ld [EndFlypoint], a ; Fill out the map call FillJohtoMap call .MapHud pop af call TownMapPlayerIcon ret .KantoFlyMap ; The event that there are no flypoints enabled in a map is not ; accounted for. As a result, if you attempt to select a flypoint ; when there are none enabled, the game will crash. Additionally, ; the flypoint selection has a default starting point that ; can be flown to even if none are enabled ; To prevent both of these things from happening when the player ; enters Kanto, fly access is restricted until Indigo Plateau is ; visited and its flypoint enabled push af ld c, $d ; Indigo Plateau call GetFlyPermission and a jr z, .NoKanto ; Kanto's map is only loaded if we've visited Indigo Plateau ; Flypoints begin at Pallet Town... ld a, $c ld [StartFlypoint], a ; ...and end at Indigo Plateau ld a, $17 ld [EndFlypoint], a ; Because Indigo Plateau is the first flypoint the player ; visits, it's made the default flypoint ld [DefaultFlypoint], a ; Fill out the map call FillKantoMap call .MapHud pop af call TownMapPlayerIcon ret .NoKanto ; If Indigo Plateau hasn't been visited, we use Johto's map instead ; Start from New Bark Town ld a, 0 ld [DefaultFlypoint], a ; Flypoints begin at New Bark Town... ld [StartFlypoint], a ; ..and end at Silver Cave ld a, $b ld [EndFlypoint], a call FillJohtoMap pop af .MapHud call TownMapBubble call TownMapPals ld hl, $9800 ; BG Map 0 call TownMapBGUpdate call TownMapMon ld a, c ld [$d003], a ld a, b ld [$d004], a ret ; 91d11 INCBIN "baserom.gbc", $91d11, $91ee4 - $91d11 TownMapBGUpdate: ; 91ee4 ; Update BG Map tiles and attributes ; BG Map address ld a, l ld [$ffd6], a ld a, h ld [$ffd7], a ; Only update palettes on CGB ld a, [$ffe6] and a jr z, .tiles ; BG Map mode 2 (palettes) ld a, 2 ld [$ffd4], a ; The BG Map is updated in thirds, so we wait ; 3 frames to update the whole screen's palettes. ld c, 3 call DelayFrames .tiles ; Update BG Map tiles call WaitBGMap ; Turn off BG Map update xor a ld [$ffd4], a ret ; 91eff FillJohtoMap: ; 91eff ld de, JohtoMap jr FillTownMap FillKantoMap: ; 91f04 ld de, KantoMap FillTownMap: ; 91f07 ld hl, TileMap .loop ld a, [de] cp $ff ret z ld a, [de] ld [hli], a inc de jr .loop ; 91f13 TownMapPals: ; 91f13 ; Assign palettes based on tile ids ld hl, TileMap ld de, AttrMap ld bc, 360 .loop ; Current tile ld a, [hli] push hl ; HP/borders use palette 0 cp $60 jr nc, .pal0 ; The palette data is condensed to nybbles, ; least-significant first. ld hl, .Pals srl a jr c, .odd ; Even-numbered tile ids take the bottom nybble... add l ld l, a ld a, h adc 0 ld h, a ld a, [hl] and %111 jr .update .odd ; ...and odd ids take the top. add l ld l, a ld a, h adc 0 ld h, a ld a, [hl] swap a and %111 jr .update .pal0 xor a .update pop hl ld [de], a inc de dec bc ld a, b or c jr nz, .loop ret .Pals db $11, $21, $22, $00, $11, $13, $54, $54, $11, $21, $22, $00 db $11, $10, $01, $00, $11, $21, $22, $00, $00, $00, $00, $00 db $00, $00, $44, $04, $00, $00, $00, $00, $33, $33, $33, $33 db $33, $33, $33, $03, $33, $33, $33, $33, $00, $00, $00, $00 ; 91f7b TownMapMon: ; 91f7b ; Draw the FlyMon icon at town map location in ; Get FlyMon species ld a, [CurPartyMon] ld hl, PartySpecies ld e, a ld d, $0 add hl, de ld a, [hl] ld [$d265], a ; Get FlyMon icon ld e, 8 ; starting tile in VRAM callba GetSpeciesIcon ; Animation/palette ld de, $0000 ld a, $0 call $3b2a ld hl, 3 add hl, bc ld [hl], 8 ld hl, 2 add hl, bc ld [hl], 0 ret ; 91fa6 TownMapPlayerIcon: ; 91fa6 ; Draw the player icon at town map location in a push af callba GetPlayerIcon ; Standing icon ld hl, $8100 ld c, 4 ; # tiles call $eba ; Walking icon ld hl, $00c0 add hl, de ld d, h ld e, l ld hl, $8140 ld c, 4 ; # tiles ld a, $30 call $eba ; Animation/palette ld de, $0000 ld b, $0a ; Male ld a, [PlayerGender] bit 0, a jr z, .asm_91fd3 ld b, $1e ; Female .asm_91fd3 ld a, b call $3b2a ld hl, $0003 add hl, bc ld [hl], $10 pop af ld e, a push bc callba GetLandmarkCoords pop bc ld hl, 4 add hl, bc ld [hl], e ld hl, 5 add hl, bc ld [hl], d ret ; 0x91ff2 INCBIN "baserom.gbc", $91ff2, $91fff - $91ff2 JohtoMap: INCBIN "baserom.gbc", $91fff, $92168 - $91fff KantoMap: INCBIN "baserom.gbc", $92168, $922d1 - $92168 INCBIN "baserom.gbc", $922d1, $93a31 - $922d1 SECTION "bank25",DATA,BANK[$25] MapGroupPointers: ; 0x94000 ; pointers to the first map header of each map group dw MapGroup0 dw MapGroup1 dw MapGroup2 dw MapGroup3 dw MapGroup4 dw MapGroup5 dw MapGroup6 dw MapGroup7 dw MapGroup8 dw MapGroup9 dw MapGroup10 dw MapGroup11 dw MapGroup12 dw MapGroup13 dw MapGroup14 dw MapGroup15 dw MapGroup16 dw MapGroup17 dw MapGroup18 dw MapGroup19 dw MapGroup20 dw MapGroup21 dw MapGroup22 dw MapGroup23 dw MapGroup24 dw MapGroup25 INCLUDE "maps/map_headers.asm" INCLUDE "maps/second_map_headers.asm" INCBIN "baserom.gbc",$966b0,$1950 SECTION "bank26",DATA,BANK[$26] ; Map Scripts XI INCLUDE "maps/EcruteakHouse.asm" INCLUDE "maps/WiseTriosRoom.asm" INCLUDE "maps/EcruteakPokeCenter1F.asm" INCLUDE "maps/EcruteakLugiaSpeechHouse.asm" INCLUDE "maps/DanceTheatre.asm" INCLUDE "maps/EcruteakMart.asm" INCLUDE "maps/EcruteakGym.asm" INCLUDE "maps/EcruteakItemfinderHouse.asm" INCLUDE "maps/ViridianGym.asm" INCLUDE "maps/ViridianNicknameSpeechHouse.asm" INCLUDE "maps/TrainerHouse1F.asm" INCLUDE "maps/TrainerHouseB1F.asm" INCLUDE "maps/ViridianMart.asm" INCLUDE "maps/ViridianPokeCenter1F.asm" INCLUDE "maps/ViridianPokeCenter2FBeta.asm" INCLUDE "maps/Route2NuggetSpeechHouse.asm" INCLUDE "maps/Route2Gate.asm" INCLUDE "maps/VictoryRoadGate.asm" SECTION "bank27",DATA,BANK[$27] ; Map Scripts XII INCLUDE "maps/OlivinePokeCenter1F.asm" INCLUDE "maps/OlivineGym.asm" INCLUDE "maps/OlivineVoltorbHouse.asm" INCLUDE "maps/OlivineHouseBeta.asm" INCLUDE "maps/OlivinePunishmentSpeechHouse.asm" INCLUDE "maps/OlivineGoodRodHouse.asm" INCLUDE "maps/OlivineCafe.asm" INCLUDE "maps/OlivineMart.asm" INCLUDE "maps/Route38EcruteakGate.asm" INCLUDE "maps/Route39Barn.asm" INCLUDE "maps/Route39Farmhouse.asm" INCLUDE "maps/ManiasHouse.asm" INCLUDE "maps/CianwoodGym.asm" INCLUDE "maps/CianwoodPokeCenter1F.asm" INCLUDE "maps/CianwoodPharmacy.asm" INCLUDE "maps/CianwoodCityPhotoStudio.asm" INCLUDE "maps/CianwoodLugiaSpeechHouse.asm" INCLUDE "maps/PokeSeersHouse.asm" INCLUDE "maps/BattleTower1F.asm" INCLUDE "maps/BattleTowerBattleRoom.asm" INCLUDE "maps/BattleTowerElevator.asm" INCLUDE "maps/BattleTowerHallway.asm" INCLUDE "maps/Route40BattleTowerGate.asm" INCLUDE "maps/BattleTowerOutside.asm" SECTION "bank28",DATA,BANK[$28] INCBIN "baserom.gbc",$A0000,$4000 SECTION "bank29",DATA,BANK[$29] INCBIN "baserom.gbc",$A4000,$4000 SECTION "bank2A",DATA,BANK[$2A] Route32_BlockData: ; 0xa8000 INCBIN "maps/Route32.blk" ; 0xa81c2 Route40_BlockData: ; 0xa81c2 INCBIN "maps/Route40.blk" ; 0xa8276 Route36_BlockData: ; 0xa8276 INCBIN "maps/Route36.blk" ; 0xa8384 Route44_BlockData: ; 0xa8384 INCBIN "maps/Route44.blk" ; 0xa8492 Route28_BlockData: ; 0xa8492 INCBIN "maps/Route28.blk" ; 0xa8546 INCBIN "baserom.gbc",$a8546,$a8552 - $a8546 CeladonCity_BlockData: ; 0xa8552 INCBIN "maps/CeladonCity.blk" ; 0xa86ba SaffronCity_BlockData: ; 0xa86ba INCBIN "maps/SaffronCity.blk" ; 0xa8822 Route2_BlockData: ; 0xa8822 INCBIN "maps/Route2.blk" ; 0xa8930 ElmsHouse_BlockData: ; 0xa8930 INCBIN "maps/ElmsHouse.blk" ; 0xa8940 INCBIN "baserom.gbc",$a8940,$5a Route11_BlockData: ; 0xa899a INCBIN "maps/Route11.blk" ; 0xa8a4e INCBIN "baserom.gbc",$a8a4e,$a8aa8 - $a8a4e Route15_BlockData: ; 0xa8aa8 INCBIN "maps/Route15.blk" ; 0xa8b5c INCBIN "baserom.gbc",$a8b5c,$24 Route19_BlockData: ; 0xa8b80 INCBIN "maps/Route19.blk" ; 0xa8c34 INCBIN "baserom.gbc",$a8c34,$a8d9c - $a8c34 Route10South_BlockData: ; 0xa8d9c INCBIN "maps/Route10South.blk" ; 0xa8df6 CinnabarPokeCenter2FBeta_BlockData: ; 0xa8df6 INCBIN "maps/CinnabarPokeCenter2FBeta.blk" ; 0xa8e16 Route41_BlockData: ; 0xa8e16 INCBIN "maps/Route41.blk" ; 0xa90b9 Route33_BlockData: ; 0xa90b9 INCBIN "maps/Route33.blk" ; 0xa9113 Route45_BlockData: ; 0xa9113 INCBIN "maps/Route45.blk" ; 0xa92d5 Route29_BlockData: ; 0xa92d5 INCBIN "maps/Route29.blk" ; 0xa93e3 Route37_BlockData: ; 0xa93e3 INCBIN "maps/Route37.blk" ; 0xa943d LavenderTown_BlockData: ; 0xa943d INCBIN "maps/LavenderTown.blk" ; 0xa9497 PalletTown_BlockData: ; 0xa9497 INCBIN "maps/PalletTown.blk" ; 0xa94f1 Route25_BlockData: ; 0xa94f1 INCBIN "maps/Route25.blk" ; 0xa95ff Route24_BlockData: ; 0xa95ff INCBIN "maps/Route24.blk" ; 0xa9659 INCBIN "baserom.gbc",$a9659,$a97c1 - $a9659 Route3_BlockData: ; 0xa97c1 INCBIN "maps/Route3.blk" ; 0xa98cf PewterCity_BlockData: ; 0xa98cf INCBIN "maps/PewterCity.blk" ; 0xa9a37 INCBIN "baserom.gbc",$a9a37,$a9bf9 - $a9a37 Route12_BlockData: ; 0xa9bf9 INCBIN "maps/Route12.blk" ; 0xa9d07 INCBIN "baserom.gbc",$a9d07,$168 Route20_BlockData: ; 0xa9e6f INCBIN "maps/Route20.blk" ; 0xa9f7d INCBIN "baserom.gbc",$a9f7d,$a9ff7 - $a9f7d Route30_BlockData: ; 0xa9ff7 INCBIN "maps/Route30.blk" ; 0xaa105 Route26_BlockData: ; 0xaa105 INCBIN "maps/Route26.blk" ; 0xaa321 Route42_BlockData: ; 0xaa321 INCBIN "maps/Route42.blk" ; 0xaa42f Route34_BlockData: ; 0xaa42f INCBIN "maps/Route34.blk" ; 0xaa53d Route46_BlockData: ; 0xaa53d INCBIN "maps/Route46.blk" ; 0xaa5f1 FuchsiaCity_BlockData: ; 0xaa5f1 INCBIN "maps/FuchsiaCity.blk" ; 0xaa759 Route38_BlockData: ; 0xaa759 INCBIN "maps/Route38.blk" ; 0xaa80d INCBIN "baserom.gbc",$aa80d,$5a OlivineVoltorbHouse_BlockData: ; 0xaa867 INCBIN "maps/OlivineVoltorbHouse.blk" ; 0xaa877 SafariZoneFuchsiaGateBeta_BlockData: ; 0xaa877 INCBIN "maps/SafariZoneFuchsiaGateBeta.blk" ; 0xaa88b INCBIN "baserom.gbc",$aa88b,$aaa4d - $aa88b CinnabarIsland_BlockData: ; 0xaaa4d INCBIN "maps/CinnabarIsland.blk" ; 0xaaaa7 Route4_BlockData: ; 0xaaaa7 INCBIN "maps/Route4.blk" ; 0xaab5b Route8_BlockData: ; 0xaab5b INCBIN "maps/Route8.blk" ; 0xaac0f INCBIN "baserom.gbc",$aac0f,$aac69 - $aac0f ViridianCity_BlockData: ; 0xaac69 INCBIN "maps/ViridianCity.blk" ; 0xaadd1 Route13_BlockData: ; 0xaadd1 INCBIN "maps/Route13.blk" ; 0xaaedf Route21_BlockData: ; 0xaaedf INCBIN "maps/Route21.blk" ; 0xaaf93 INCBIN "baserom.gbc",$aaf93,$aafed - $aaf93 Route17_BlockData: ; 0xaafed INCBIN "maps/Route17.blk" ; 0xab1af INCBIN "baserom.gbc",$ab1af,$ab209 - $ab1af Route31_BlockData: ; 0xab209 INCBIN "maps/Route31.blk" ; 0xab2bd Route27_BlockData: ; 0xab2bd INCBIN "maps/Route27.blk" ; 0xab425 Route35_BlockData: ; 0xab425 INCBIN "maps/Route35.blk" ; 0xab4d9 Route43_BlockData: ; 0xab4d9 INCBIN "maps/Route43.blk" ; 0xab5e7 Route39_BlockData: ; 0xab5e7 INCBIN "maps/Route39.blk" ; 0xab69b KrissHouse1F_BlockData: ; 0xab69b INCBIN "maps/KrissHouse1F.blk" ; 0xab6af Route38EcruteakGate_BlockData: ; 0xab6af INCBIN "maps/Route38EcruteakGate.blk" ; 0xab6c3 INCBIN "baserom.gbc",$ab6c3,$ab82b - $ab6c3 VermilionCity_BlockData: ; 0xab82b INCBIN "maps/VermilionCity.blk" ; 0xab993 INCBIN "baserom.gbc",$ab993,$abb55 - $ab993 ElmsLab_BlockData: ; 0xabb55 INCBIN "maps/ElmsLab.blk" ; 0xabb73 CeruleanCity_BlockData: ; 0xabb73 INCBIN "maps/CeruleanCity.blk" ; 0xabcdb Route1_BlockData: ; 0xabcdb INCBIN "maps/Route1.blk" ; 0xabd8f Route5_BlockData: ; 0xabd8f INCBIN "maps/Route5.blk" ; 0xabde9 Route9_BlockData: ; 0xabde9 INCBIN "maps/Route9.blk" ; 0xabef7 Route22_BlockData: ; 0xabef7 INCBIN "maps/Route22.blk" ; 0xabfab INCBIN "baserom.gbc",$abfab,$55 SECTION "bank2B",DATA,BANK[$2B] Route14_BlockData: ; 0xac000 INCBIN "maps/Route14.blk" ; 0xac0b4 INCBIN "baserom.gbc",$ac0b4,$5a OlivineMart_BlockData: ; 0xac10e INCBIN "maps/OlivineMart.blk" ; 0xac126 Route10North_BlockData: ; 0xac126 INCBIN "maps/Route10North.blk" ; 0xac180 INCBIN "baserom.gbc",$ac180,$168 OlivinePokeCenter1F_BlockData: ; 0xac2e8 INCBIN "maps/OlivinePokeCenter1F.blk" ; 0xac2fc INCBIN "baserom.gbc",$ac2fc,$ac340 - $ac2fc EarlsPokemonAcademy_BlockData: ; 0xac340 INCBIN "maps/EarlsPokemonAcademy.blk" ; 0xac360 INCBIN "baserom.gbc",$ac360,$ac3b4 - $ac360 GoldenrodDeptStore1F_BlockData: ; 0xac3b4 INCBIN "maps/GoldenrodDeptStore1F.blk" ; 0xac3d4 GoldenrodDeptStore2F_BlockData: ; 0xac3d4 INCBIN "maps/GoldenrodDeptStore2F.blk" ; 0xac3f4 GoldenrodDeptStore3F_BlockData: ; 0xac3f4 INCBIN "maps/GoldenrodDeptStore3F.blk" ; 0xac414 GoldenrodDeptStore4F_BlockData: ; 0xac414 INCBIN "maps/GoldenrodDeptStore4F.blk" ; 0xac434 GoldenrodDeptStore5F_BlockData: ; 0xac434 INCBIN "maps/GoldenrodDeptStore5F.blk" ; 0xac454 GoldenrodDeptStore6F_BlockData: ; 0xac454 INCBIN "maps/GoldenrodDeptStore6F.blk" ; 0xac474 GoldenrodDeptStoreElevator_BlockData: ; 0xac474 INCBIN "maps/GoldenrodDeptStoreElevator.blk" ; 0xac478 CeladonMansion1F_BlockData: ; 0xac478 INCBIN "maps/CeladonMansion1F.blk" ; 0xac48c CeladonMansion2F_BlockData: ; 0xac48c INCBIN "maps/CeladonMansion2F.blk" ; 0xac4a0 CeladonMansion3F_BlockData: ; 0xac4a0 INCBIN "maps/CeladonMansion3F.blk" ; 0xac4b4 CeladonMansionRoof_BlockData: ; 0xac4b4 INCBIN "maps/CeladonMansionRoof.blk" ; 0xac4c8 INCBIN "baserom.gbc",$ac4c8,$ac4d8 - $ac4c8 CeladonGameCorner_BlockData: ; 0xac4d8 INCBIN "maps/CeladonGameCorner.blk" ; 0xac51e CeladonGameCornerPrizeRoom_BlockData: ; 0xac51e INCBIN "maps/CeladonGameCornerPrizeRoom.blk" ; 0xac527 Colosseum_BlockData: ; 0xac527 INCBIN "maps/Colosseum.blk" ; 0xac53b TradeCenter_BlockData: ; 0xac53b INCBIN "maps/TradeCenter.blk" ; 0xac54f EcruteakLugiaSpeechHouse_BlockData: ; 0xac54f INCBIN "maps/EcruteakLugiaSpeechHouse.blk" ; 0xac55f INCBIN "baserom.gbc",$ac55f,$5a UnionCaveB1F_BlockData: ; 0xac5b9 INCBIN "maps/UnionCaveB1F.blk" ; 0xac66d UnionCaveB2F_BlockData: ; 0xac66d INCBIN "maps/UnionCaveB2F.blk" ; 0xac721 UnionCave1F_BlockData: ; 0xac721 INCBIN "maps/UnionCave1F.blk" ; 0xac7d5 NationalPark_BlockData: ; 0xac7d5 INCBIN "maps/NationalPark.blk" ; 0xac9f1 Route6UndergroundEntrance_BlockData: ; 0xac9f1 INCBIN "maps/Route6UndergroundEntrance.blk" ; 0xaca01 INCBIN "baserom.gbc",$aca01,$10 KurtsHouse_BlockData: ; 0xaca11 INCBIN "maps/KurtsHouse.blk" ; 0xaca31 GoldenrodMagnetTrainStation_BlockData: ; 0xaca31 INCBIN "maps/GoldenrodMagnetTrainStation.blk" ; 0xaca8b RuinsofAlphOutside_BlockData: ; 0xaca8b INCBIN "maps/RuinsofAlphOutside.blk" ; 0xacb3f INCBIN "baserom.gbc",$acb3f,$acb53 - $acb3f RuinsofAlphInnerChamber_BlockData: ; 0xacb53 INCBIN "maps/RuinsofAlphInnerChamber.blk" ; 0xacbdf RuinsofAlphHoOhChamber_BlockData: ; 0xacbdf INCBIN "maps/RuinsofAlphHoOhChamber.blk" ; 0xacbf3 SproutTower1F_BlockData: ; 0xacbf3 INCBIN "maps/SproutTower1F.blk" ; 0xacc43 INCBIN "baserom.gbc",$acc43,$acc4d - $acc43 SproutTower2F_BlockData: ; 0xacc4d INCBIN "maps/SproutTower2F.blk" ; 0xacc9d INCBIN "baserom.gbc",$acc9d,$acca7 - $acc9d SproutTower3F_BlockData: ; 0xacca7 INCBIN "maps/SproutTower3F.blk" ; 0xaccf7 INCBIN "baserom.gbc",$accf7,$acd01 - $accf7 RadioTower1F_BlockData: ; 0xacd01 INCBIN "maps/RadioTower1F.blk" ; 0xacd25 RadioTower2F_BlockData: ; 0xacd25 INCBIN "maps/RadioTower2F.blk" ; 0xacd49 RadioTower3F_BlockData: ; 0xacd49 INCBIN "maps/RadioTower3F.blk" ; 0xacd6d RadioTower4F_BlockData: ; 0xacd6d INCBIN "maps/RadioTower4F.blk" ; 0xacd91 RadioTower5F_BlockData: ; 0xacd91 INCBIN "maps/RadioTower5F.blk" ; 0xacdb5 NewBarkTown_BlockData: ; 0xacdb5 INCBIN "maps/NewBarkTown.blk" ; 0xace0f CherrygroveCity_BlockData: ; 0xace0f INCBIN "maps/CherrygroveCity.blk" ; 0xacec3 VioletCity_BlockData: ; 0xacec3 INCBIN "maps/VioletCity.blk" ; 0xad02b AzaleaTown_BlockData: ; 0xad02b INCBIN "maps/AzaleaTown.blk" ; 0xad0df CianwoodCity_BlockData: ; 0xad0df INCBIN "maps/CianwoodCity.blk" ; 0xad274 GoldenrodCity_BlockData: ; 0xad274 INCBIN "maps/GoldenrodCity.blk" ; 0xad3dc OlivineCity_BlockData: ; 0xad3dc INCBIN "maps/OlivineCity.blk" ; 0xad544 EcruteakCity_BlockData: ; 0xad544 INCBIN "maps/EcruteakCity.blk" ; 0xad6ac MahoganyTown_BlockData: ; 0xad6ac INCBIN "maps/MahoganyTown.blk" ; 0xad706 LakeofRage_BlockData: ; 0xad706 INCBIN "maps/LakeofRage.blk" ; 0xad86e BlackthornCity_BlockData: ; 0xad86e INCBIN "maps/BlackthornCity.blk" ; 0xad9d6 SilverCaveOutside_BlockData: ; 0xad9d6 INCBIN "maps/SilverCaveOutside.blk" ; 0xadb3e Route6_BlockData: ; 0xadb3e INCBIN "maps/Route6.blk" ; 0xadb98 Route7_BlockData: ; 0xadb98 INCBIN "maps/Route7.blk" ; 0xadbf2 Route16_BlockData: ; 0xadbf2 INCBIN "maps/Route16.blk" ; 0xadc4c Route18_BlockData: ; 0xadc4c INCBIN "maps/Route18.blk" ; 0xadca6 WarehouseEntrance_BlockData: ; 0xadca6 INCBIN "maps/WarehouseEntrance.blk" ; 0xaddb4 UndergroundPathSwitchRoomEntrances_BlockData: ; 0xaddb4 INCBIN "maps/UndergroundPathSwitchRoomEntrances.blk" ; 0xadec2 GoldenrodDeptStoreB1F_BlockData: ; 0xadec2 INCBIN "maps/GoldenrodDeptStoreB1F.blk" ; 0xadf1c UndergroundWarehouse_BlockData: ; 0xadf1c INCBIN "maps/UndergroundWarehouse.blk" ; 0xadf76 INCBIN "baserom.gbc",$adf76,$19 TinTower1F_BlockData: ; 0xadf8f INCBIN "maps/TinTower1F.blk" ; 0xadfe9 TinTower2F_BlockData: ; 0xadfe9 INCBIN "maps/TinTower2F.blk" ; 0xae043 TinTower3F_BlockData: ; 0xae043 INCBIN "maps/TinTower3F.blk" ; 0xae09d TinTower4F_BlockData: ; 0xae09d INCBIN "maps/TinTower4F.blk" ; 0xae0f7 TinTower5F_BlockData: ; 0xae0f7 INCBIN "maps/TinTower5F.blk" ; 0xae151 TinTower6F_BlockData: ; 0xae151 INCBIN "maps/TinTower6F.blk" ; 0xae1ab TinTower7F_BlockData: ; 0xae1ab INCBIN "maps/TinTower7F.blk" ; 0xae205 TinTower8F_BlockData: ; 0xae205 INCBIN "maps/TinTower8F.blk" ; 0xae25f TinTower9F_BlockData: ; 0xae25f INCBIN "maps/TinTower9F.blk" ; 0xae2b9 TinTowerRoof_BlockData: ; 0xae2b9 INCBIN "maps/TinTowerRoof.blk" ; 0xae313 BurnedTower1F_BlockData: ; 0xae313 INCBIN "maps/BurnedTower1F.blk" ; 0xae36d BurnedTowerB1F_BlockData: ; 0xae36d INCBIN "maps/BurnedTowerB1F.blk" ; 0xae3c7 INCBIN "baserom.gbc",$ae3c7,$ae4d5 - $ae3c7 MountMortar1FOutside_BlockData: ; 0xae4d5 INCBIN "maps/MountMortar1FOutside.blk" ; 0xae63d MountMortar1FInside_BlockData: ; 0xae63d INCBIN "maps/MountMortar1FInside.blk" ; 0xae859 MountMortar2FInside_BlockData: ; 0xae859 INCBIN "maps/MountMortar2FInside.blk" ; 0xae9c1 MountMortarB1F_BlockData: ; 0xae9c1 INCBIN "maps/MountMortarB1F.blk" ; 0xaeb29 IcePath1F_BlockData: ; 0xaeb29 INCBIN "maps/IcePath1F.blk" ; 0xaec91 IcePathB1F_BlockData: ; 0xaec91 INCBIN "maps/IcePathB1F.blk" ; 0xaed45 IcePathB2FMahoganySide_BlockData: ; 0xaed45 INCBIN "maps/IcePathB2FMahoganySide.blk" ; 0xaed9f IcePathB2FBlackthornSide_BlockData: ; 0xaed9f INCBIN "maps/IcePathB2FBlackthornSide.blk" ; 0xaedcc IcePathB3F_BlockData: ; 0xaedcc INCBIN "maps/IcePathB3F.blk" ; 0xaee26 WhirlIslandNW_BlockData: ; 0xaee26 INCBIN "maps/WhirlIslandNW.blk" ; 0xaee53 WhirlIslandNE_BlockData: ; 0xaee53 INCBIN "maps/WhirlIslandNE.blk" ; 0xaeead WhirlIslandSW_BlockData: ; 0xaeead INCBIN "maps/WhirlIslandSW.blk" ; 0xaef07 WhirlIslandCave_BlockData: ; 0xaef07 INCBIN "maps/WhirlIslandCave.blk" ; 0xaef34 WhirlIslandSE_BlockData: ; 0xaef34 INCBIN "maps/WhirlIslandSE.blk" ; 0xaef61 WhirlIslandB1F_BlockData: ; 0xaef61 INCBIN "maps/WhirlIslandB1F.blk" ; 0xaf0c9 WhirlIslandB2F_BlockData: ; 0xaf0c9 INCBIN "maps/WhirlIslandB2F.blk" ; 0xaf17d WhirlIslandLugiaChamber_BlockData: ; 0xaf17d INCBIN "maps/WhirlIslandLugiaChamber.blk" ; 0xaf1d7 SilverCaveRoom1_BlockData: ; 0xaf1d7 INCBIN "maps/SilverCaveRoom1.blk" ; 0xaf28b SilverCaveRoom2_BlockData: ; 0xaf28b INCBIN "maps/SilverCaveRoom2.blk" ; 0xaf399 SilverCaveRoom3_BlockData: ; 0xaf399 INCBIN "maps/SilverCaveRoom3.blk" ; 0xaf44d INCBIN "baserom.gbc",$af44d,$438 MahoganyMart1F_BlockData: ; 0xaf885 INCBIN "maps/MahoganyMart1F.blk" ; 0xaf895 TeamRocketBaseB1F_BlockData: ; 0xaf895 INCBIN "maps/TeamRocketBaseB1F.blk" ; 0xaf91c TeamRocketBaseB2F_BlockData: ; 0xaf91c INCBIN "maps/TeamRocketBaseB2F.blk" ; 0xaf9a3 TeamRocketBaseB3F_BlockData: ; 0xaf9a3 INCBIN "maps/TeamRocketBaseB3F.blk" ; 0xafa2a INCBIN "baserom.gbc",$afa2a,$afa84 - $afa2a IndigoPlateauPokeCenter1F_BlockData: ; 0xafa84 INCBIN "maps/IndigoPlateauPokeCenter1F.blk" ; 0xafac3 WillsRoom_BlockData: ; 0xafac3 INCBIN "maps/WillsRoom.blk" ; 0xafaf0 KogasRoom_BlockData: ; 0xafaf0 INCBIN "maps/KogasRoom.blk" ; 0xafb1d BrunosRoom_BlockData: ; 0xafb1d INCBIN "maps/BrunosRoom.blk" ; 0xafb4a KarensRoom_BlockData: ; 0xafb4a INCBIN "maps/KarensRoom.blk" ; 0xafb77 AzaleaGym_BlockData: ; 0xafb77 INCBIN "maps/AzaleaGym.blk" ; 0xafb9f VioletGym_BlockData: ; 0xafb9f INCBIN "maps/VioletGym.blk" ; 0xafbc7 GoldenrodGym_BlockData: ; 0xafbc7 INCBIN "maps/GoldenrodGym.blk" ; 0xafc21 EcruteakGym_BlockData: ; 0xafc21 INCBIN "maps/EcruteakGym.blk" ; 0xafc4e MahoganyGym_BlockData: ; 0xafc4e INCBIN "maps/MahoganyGym.blk" ; 0xafc7b OlivineGym_BlockData: ; 0xafc7b INCBIN "maps/OlivineGym.blk" ; 0xafca3 INCBIN "baserom.gbc",$afca3,$afcb7 - $afca3 CianwoodGym_BlockData: ; 0xafcb7 INCBIN "maps/CianwoodGym.blk" ; 0xafce4 BlackthornGym1F_BlockData: ; 0xafce4 INCBIN "maps/BlackthornGym1F.blk" ; 0xafd11 BlackthornGym2F_BlockData: ; 0xafd11 INCBIN "maps/BlackthornGym2F.blk" ; 0xafd3e OlivineLighthouse1F_BlockData: ; 0xafd3e INCBIN "maps/OlivineLighthouse1F.blk" ; 0xafd98 OlivineLighthouse2F_BlockData: ; 0xafd98 INCBIN "maps/OlivineLighthouse2F.blk" ; 0xafdf2 OlivineLighthouse3F_BlockData: ; 0xafdf2 INCBIN "maps/OlivineLighthouse3F.blk" ; 0xafe4c OlivineLighthouse4F_BlockData: ; 0xafe4c INCBIN "maps/OlivineLighthouse4F.blk" ; 0xafea6 OlivineLighthouse5F_BlockData: ; 0xafea6 INCBIN "maps/OlivineLighthouse5F.blk" ; 0xaff00 OlivineLighthouse6F_BlockData: ; 0xaff00 INCBIN "maps/OlivineLighthouse6F.blk" ; 0xaff5a SECTION "bank2C",DATA,BANK[$2C] INCBIN "baserom.gbc",$b0000,$b0023 - $b0000 SlowpokeWellB1F_BlockData: ; 0xb0023 INCBIN "maps/SlowpokeWellB1F.blk" ; 0xb007d SlowpokeWellB2F_BlockData: ; 0xb007d INCBIN "maps/SlowpokeWellB2F.blk" ; 0xb00d7 IlexForest_BlockData: ; 0xb00d7 INCBIN "maps/IlexForest.blk" ; 0xb026c DarkCaveVioletEntrance_BlockData: ; 0xb026c INCBIN "maps/DarkCaveVioletEntrance.blk" ; 0xb03d4 DarkCaveBlackthornEntrance_BlockData: ; 0xb03d4 INCBIN "maps/DarkCaveBlackthornEntrance.blk" ; 0xb04e2 RuinsofAlphResearchCenter_BlockData: ; 0xb04e2 INCBIN "maps/RuinsofAlphResearchCenter.blk" ; 0xb04f2 GoldenrodBikeShop_BlockData: ; 0xb04f2 INCBIN "maps/GoldenrodBikeShop.blk" ; 0xb0502 DanceTheatre_BlockData: ; 0xb0502 INCBIN "maps/DanceTheatre.blk" ; 0xb052c EcruteakHouse_BlockData: ; 0xb052c INCBIN "maps/EcruteakHouse.blk" ; 0xb0586 GoldenrodGameCorner_BlockData: ; 0xb0586 INCBIN "maps/GoldenrodGameCorner.blk" ; 0xb05cc Route35NationalParkgate_BlockData: ; 0xb05cc INCBIN "maps/Route35NationalParkgate.blk" ; 0xb05dc Route36NationalParkgate_BlockData: ; 0xb05dc INCBIN "maps/Route36NationalParkgate.blk" ; 0xb05f0 FastShip1F_BlockData: ; 0xb05f0 INCBIN "maps/FastShip1F.blk" ; 0xb0680 FastShipB1F_BlockData: ; 0xb0680 INCBIN "maps/FastShipB1F.blk" ; 0xb0700 INCBIN "baserom.gbc",$b0700,$10 FastShipCabins_NNW_NNE_NE_BlockData: ; 0xb0710 INCBIN "maps/FastShipCabins_NNW_NNE_NE.blk" ; 0xb0750 FastShipCabins_SW_SSW_NW_BlockData: ; 0xb0750 INCBIN "maps/FastShipCabins_SW_SSW_NW.blk" ; 0xb0790 FastShipCabins_SE_SSE_CaptainsCabin_BlockData: ; 0xb0790 INCBIN "maps/FastShipCabins_SE_SSE_CaptainsCabin.blk" ; 0xb07e5 OlivinePort_BlockData: ; 0xb07e5 INCBIN "maps/OlivinePort.blk" ; 0xb0899 VermilionPort_BlockData: ; 0xb0899 INCBIN "maps/VermilionPort.blk" ; 0xb094d OlivineCafe_BlockData: ; 0xb094d INCBIN "maps/OlivineCafe.blk" ; 0xb095d KrissHouse2F_BlockData: ; 0xb095d INCBIN "maps/KrissHouse2F.blk" ; 0xb0969 SaffronTrainStation_BlockData: ; 0xb0969 INCBIN "maps/SaffronTrainStation.blk" ; 0xb09c3 CeruleanGym_BlockData: ; 0xb09c3 INCBIN "maps/CeruleanGym.blk" ; 0xb09eb VermilionGym_BlockData: ; 0xb09eb INCBIN "maps/VermilionGym.blk" ; 0xb0a18 SaffronGym_BlockData: ; 0xb0a18 INCBIN "maps/SaffronGym.blk" ; 0xb0a72 PowerPlant_BlockData: ; 0xb0a72 INCBIN "maps/PowerPlant.blk" ; 0xb0acc PokemonFanClub_BlockData: ; 0xb0acc INCBIN "maps/PokemonFanClub.blk" ; 0xb0ae0 FightingDojo_BlockData: ; 0xb0ae0 INCBIN "maps/FightingDojo.blk" ; 0xb0afe SilphCo1F_BlockData: ; 0xb0afe INCBIN "maps/SilphCo1F.blk" ; 0xb0b1e ViridianGym_BlockData: ; 0xb0b1e INCBIN "maps/ViridianGym.blk" ; 0xb0b4b TrainerHouse1F_BlockData: ; 0xb0b4b INCBIN "maps/TrainerHouse1F.blk" ; 0xb0b6e TrainerHouseB1F_BlockData: ; 0xb0b6e INCBIN "maps/TrainerHouseB1F.blk" ; 0xb0b96 RedsHouse1F_BlockData: ; 0xb0b96 INCBIN "maps/RedsHouse1F.blk" ; 0xb0ba6 RedsHouse2F_BlockData: ; 0xb0ba6 INCBIN "maps/RedsHouse2F.blk" ; 0xb0bb6 OaksLab_BlockData: ; 0xb0bb6 INCBIN "maps/OaksLab.blk" ; 0xb0bd4 MrFujisHouse_BlockData: ; 0xb0bd4 INCBIN "maps/MrFujisHouse.blk" ; 0xb0be8 LavRadioTower1F_BlockData: ; 0xb0be8 INCBIN "maps/LavRadioTower1F.blk" ; 0xb0c10 SilverCaveItemRooms_BlockData: ; 0xb0c10 INCBIN "maps/SilverCaveItemRooms.blk" ; 0xb0c6a DayCare_BlockData: ; 0xb0c6a INCBIN "maps/DayCare.blk" ; 0xb0c7e SoulHouse_BlockData: ; 0xb0c7e INCBIN "maps/SoulHouse.blk" ; 0xb0c92 PewterGym_BlockData: ; 0xb0c92 INCBIN "maps/PewterGym.blk" ; 0xb0cb5 CeladonGym_BlockData: ; 0xb0cb5 INCBIN "maps/CeladonGym.blk" ; 0xb0ce2 INCBIN "baserom.gbc",$b0ce2,$b0cf6 - $b0ce2 CeladonCafe_BlockData: ; 0xb0cf6 INCBIN "maps/CeladonCafe.blk" ; 0xb0d0e INCBIN "baserom.gbc",$b0d0e,$18 RockTunnel1F_BlockData: ; 0xb0d26 INCBIN "maps/RockTunnel1F.blk" ; 0xb0e34 RockTunnelB1F_BlockData: ; 0xb0e34 INCBIN "maps/RockTunnelB1F.blk" ; 0xb0f42 DiglettsCave_BlockData: ; 0xb0f42 INCBIN "maps/DiglettsCave.blk" ; 0xb0ff6 MountMoon_BlockData: ; 0xb0ff6 INCBIN "maps/MountMoon.blk" ; 0xb107d SeafoamGym_BlockData: ; 0xb107d INCBIN "maps/SeafoamGym.blk" ; 0xb1091 MrPokemonsHouse_BlockData: ; 0xb1091 INCBIN "maps/MrPokemonsHouse.blk" ; 0xb10a1 VictoryRoadGate_BlockData: ; 0xb10a1 INCBIN "maps/VictoryRoadGate.blk" ; 0xb10fb OlivinePortPassage_BlockData: ; 0xb10fb INCBIN "maps/OlivinePortPassage.blk" ; 0xb1155 FuchsiaGym_BlockData: ; 0xb1155 INCBIN "maps/FuchsiaGym.blk" ; 0xb1182 SafariZoneBeta_BlockData: ; 0xb1182 INCBIN "maps/SafariZoneBeta.blk" ; 0xb1236 Underground_BlockData: ; 0xb1236 INCBIN "maps/Underground.blk" ; 0xb1260 Route39Barn_BlockData: ; 0xb1260 INCBIN "maps/Route39Barn.blk" ; 0xb1270 VictoryRoad_BlockData: ; 0xb1270 INCBIN "maps/VictoryRoad.blk" ; 0xb13d8 Route23_BlockData: ; 0xb13d8 INCBIN "maps/Route23.blk" ; 0xb1432 LancesRoom_BlockData: ; 0xb1432 INCBIN "maps/LancesRoom.blk" ; 0xb146e HallOfFame_BlockData: ; 0xb146e INCBIN "maps/HallOfFame.blk" ; 0xb1491 CopycatsHouse1F_BlockData: ; 0xb1491 INCBIN "maps/CopycatsHouse1F.blk" ; 0xb14a1 CopycatsHouse2F_BlockData: ; 0xb14a1 INCBIN "maps/CopycatsHouse2F.blk" ; 0xb14b0 GoldenrodFlowerShop_BlockData: ; 0xb14b0 INCBIN "maps/GoldenrodFlowerShop.blk" ; 0xb14c0 MountMoonSquare_BlockData: ; 0xb14c0 INCBIN "maps/MountMoonSquare.blk" ; 0xb1547 WiseTriosRoom_BlockData: ; 0xb1547 INCBIN "maps/WiseTriosRoom.blk" ; 0xb1557 DragonsDen1F_BlockData: ; 0xb1557 INCBIN "maps/DragonsDen1F.blk" ; 0xb1584 DragonsDenB1F_BlockData: ; 0xb1584 INCBIN "maps/DragonsDenB1F.blk" ; 0xb16ec TohjoFalls_BlockData: ; 0xb16ec INCBIN "maps/TohjoFalls.blk" ; 0xb1773 RuinsofAlphHoOhItemRoom_BlockData: ; 0xb1773 INCBIN "maps/RuinsofAlphHoOhItemRoom.blk" ; 0xb1787 RuinsofAlphHoOhWordRoom_BlockData: ; 0xb1787 INCBIN "maps/RuinsofAlphHoOhWordRoom.blk" ; 0xb17ff RuinsofAlphKabutoWordRoom_BlockData: ; 0xb17ff INCBIN "maps/RuinsofAlphKabutoWordRoom.blk" ; 0xb1845 RuinsofAlphOmanyteWordRoom_BlockData: ; 0xb1845 INCBIN "maps/RuinsofAlphOmanyteWordRoom.blk" ; 0xb1895 RuinsofAlphAerodactylWordRoom_BlockData: ; 0xb1895 INCBIN "maps/RuinsofAlphAerodactylWordRoom.blk" ; 0xb18db DragonShrine_BlockData: ; 0xb18db INCBIN "maps/DragonShrine.blk" ; 0xb18f4 BattleTower1F_BlockData: ; 0xb18f4 INCBIN "maps/BattleTower1F.blk" ; 0xb191c BattleTowerBattleRoom_BlockData: ; 0xb191c INCBIN "maps/BattleTowerBattleRoom.blk" ; 0xb192c GoldenrodPokeComCenter2FMobile_BlockData: ; 0xb192c INCBIN "maps/GoldenrodPokeComCenter2FMobile.blk" ; 0xb1a2c MobileTradeRoomMobile_BlockData: ; 0xb1a2c INCBIN "maps/MobileTradeRoomMobile.blk" ; 0xb1a40 MobileBattleRoom_BlockData: ; 0xb1a40 INCBIN "maps/MobileBattleRoom.blk" ; 0xb1a54 BattleTowerHallway_BlockData: ; 0xb1a54 INCBIN "maps/BattleTowerHallway.blk" ; 0xb1a6a BattleTowerElevator_BlockData: ; 0xb1a6a INCBIN "maps/BattleTowerElevator.blk" ; 0xb1a6e BattleTowerOutside_BlockData: ; 0xb1a6e INCBIN "maps/BattleTowerOutside.blk" ; 0xb1afa INCBIN "baserom.gbc",$b1afa,$28 GoldenrodDeptStoreRoof_BlockData: ; 0xb1b22 INCBIN "maps/GoldenrodDeptStoreRoof.blk" ; 0xb1b42 SECTION "bank2D",DATA,BANK[$2D] Tileset21GFX: ; b4000 INCBIN "gfx/tilesets/21.lz" ; b4893 INCBIN "baserom.gbc", $b4893, $b4da0 - $b4893 Tileset22GFX: ; b4da0 INCBIN "gfx/tilesets/22.lz" ; b50d1 INCBIN "baserom.gbc", $b50d1, $b55e0 - $b50d1 Tileset08GFX: ; b55e0 INCBIN "gfx/tilesets/08.lz" ; b59db INCBIN "baserom.gbc", $b59db, $b5ee0 - $b59db Tileset02GFX: Tileset04GFX: ; b5ee0 INCBIN "gfx/tilesets/04.lz" ; b6ae7 INCBIN "baserom.gbc", $b6ae7, $b74e8 - $b6ae7 Tileset16GFX: ; b74e8 INCBIN "gfx/tilesets/16.lz" ; b799a INCBIN "baserom.gbc", $b799a, $b8000 - $b799a SECTION "bank2E",DATA,BANK[$2E] INCBIN "baserom.gbc",$B8000,$b8219 - $b8000 Functionb8219: ; b8219 ; deals strictly with rockmon encounter xor a ld [$d22e], a ld [$d143], a ld hl, WildRockMonMapTable call GetTreeMonEncounterTable jr nc, .quit call LoadWildTreeMonData jr nc, .quit ld a, $0a call $2fb1 cp a, $04 jr nc, .quit call $441f jr nc, .quit ret .quit xor a ret ; b823e db $05 ; ???? GetTreeMonEncounterTable: ; b823f ; reads a map-sensitive encounter table ; compares current map with maps in the table ; if there is a match, encounter table # is loaded into a ld a, [MapNumber] ld e, a ld a, [MapGroup] ld d, a .loop ld a, [hli] cp a, $ff jr z, .quit cp d jr nz, .skip2 ld a, [hli] cp e jr nz, .skip1 jr .end .skip2 inc hl .skip1 inc hl jr .loop .quit xor a ret .end ld a, [hl] scf ret ; b825e INCBIN "baserom.gbc",$B825E,$b82c5 - $b825e WildRockMonMapTable: ; b82c5 db GROUP_CIANWOOD_CITY, MAP_CIANWOOD_CITY, $07 db GROUP_ROUTE_40, MAP_ROUTE_40, $07 db GROUP_DARK_CAVE_VIOLET_ENTRANCE, MAP_DARK_CAVE_VIOLET_ENTRANCE, $07 db GROUP_SLOWPOKE_WELL_B1F, MAP_SLOWPOKE_WELL_B1F, $07 db $ff ; end ; b82d2 LoadWildTreeMonData: ; b82d2 ; input: a = table number ; returns wildtreemontable pointer in hl ; sets carry if successful cp a, $08 ; which table? jr nc, .quit ; only 8 tables and a jr z, .quit ; 0 is invalid ld e, a ld d, $00 ld hl, WildTreeMonPointerTable add hl, de add hl, de ld a, [hli] ; store pointer in hl ld h, [hl] ld l, a scf ret .quit xor a ret ; b82e8 WildTreeMonPointerTable: ; b82e8 ; seems to point to "normal" tree encounter data ; as such only odd-numbered tables are used ; rockmon is 13th dw WildTreeMonTable1 ; filler dw WildTreeMonTable1 ; 1 dw WildTreeMonTable3 ; 2 dw WildTreeMonTable5 ; 3 dw WildTreeMonTable7 ; 4 dw WildTreeMonTable9 ; 5 dw WildTreeMonTable11 ; 6 dw WildRockMonTable ; 7 dw WildTreeMonTable1 ; 8 ; b82fa ; structure: % species level WildTreeMonTable1: ; b82fa db 50, SPEAROW, 10 db 15, SPEAROW, 10 db 15, SPEAROW, 10 db 10, AIPOM, 10 db 5, AIPOM, 10 db 5, AIPOM, 10 db $ff ; end ; b830d WildTreeMonTable2 ; b830d ; unused db 50, SPEAROW, 10 db 15, HERACROSS, 10 db 15, HERACROSS, 10 db 10, AIPOM, 10 db 5, AIPOM, 10 db 5, AIPOM, 10 db $ff ; end ; b8320 WildTreeMonTable3: ; b8320 db 50, SPEAROW, 10 db 15, EKANS, 10 db 15, SPEAROW, 10 db 10, AIPOM, 10 db 5, AIPOM, 10 db 5, AIPOM, 10 db $ff ; end ; b8333 WildTreeMonTable4: ; b8333 ; unused db 50, SPEAROW, 10 db 15, HERACROSS, 10 db 15, HERACROSS, 10 db 10, AIPOM, 10 db 5, AIPOM, 10 db 5, AIPOM, 10 db $ff ; end ; b8346 WildTreeMonTable5: ; b8346 db 50, HOOTHOOT, 10 db 15, SPINARAK, 10 db 15, LEDYBA, 10 db 10, EXEGGCUTE, 10 db 5, EXEGGCUTE, 10 db 5, EXEGGCUTE, 10 db $ff ; end ; b8359 WildTreeMonTable6: ; b8359 ; unused db 50, HOOTHOOT, 10 db 15, PINECO, 10 db 15, PINECO, 10 db 10, EXEGGCUTE, 10 db 5, EXEGGCUTE, 10 db 5, EXEGGCUTE, 10 db $ff ; end ; b836c WildTreeMonTable7: ; b836c db 50, HOOTHOOT, 10 db 15, EKANS, 10 db 15, HOOTHOOT, 10 db 10, EXEGGCUTE, 10 db 5, EXEGGCUTE, 10 db 5, EXEGGCUTE, 10 db $ff ; end ; b837f WildTreeMonTable8: ; b837f ; unused db 50, HOOTHOOT, 10 db 15, PINECO, 10 db 15, PINECO, 10 db 10, EXEGGCUTE, 10 db 5, EXEGGCUTE, 10 db 5, EXEGGCUTE, 10 db $ff ; end ; b8392 WildTreeMonTable9: ; b8392 db 50, HOOTHOOT, 10 db 15, VENONAT, 10 db 15, HOOTHOOT, 10 db 10, EXEGGCUTE, 10 db 5, EXEGGCUTE, 10 db 5, EXEGGCUTE, 10 db $ff ; end ; b83a5 WildTreeMonTable10: ; b83a5 ; unused db 50, HOOTHOOT, 10 db 15, PINECO, 10 db 15, PINECO, 10 db 10, EXEGGCUTE, 10 db 5, EXEGGCUTE, 10 db 5, EXEGGCUTE, 10 db $ff ; end ; b83b8 WildTreeMonTable11: ; b83b8 db 50, HOOTHOOT, 10 db 15, PINECO, 10 db 15, PINECO, 10 db 10, NOCTOWL, 10 db 5, BUTTERFREE, 10 db 5, BEEDRILL, 10 db $ff ; end ; b83cb WildTreeMonTable12; b83cb ; unused db 50, HOOTHOOT, 10 db 15, CATERPIE, 10 db 15, WEEDLE, 10 db 10, HOOTHOOT, 10 db 5, METAPOD, 10 db 5, KAKUNA, 10 db $ff ; end ; b83de WildRockMonTable: ; b83de db 90, KRABBY, 15 db 10, SHUCKLE, 15 db $ff ; end ; b83e5 INCBIN "baserom.gbc",$B83E5,$bc000 - $b83e5 SECTION "bank2F",DATA,BANK[$2F] INCBIN "baserom.gbc",$bc000,$bc09c - $bc000 PokeCenterNurseScript: ; bc09c ; Talking to a nurse in a Pokemon Center loadfont ; The nurse has different text for: ; Morn checktime $1 iftrue .morn ; Day checktime $2 iftrue .day ; Nite checktime $4 iftrue .nite ; If somehow it's not a time of day at all, we skip the introduction 2jump .heal .morn ; Different text if we're in the com center checkbit1 $032a iftrue .morn_comcenter ; Good morning! Welcome to ... 3writetext BANK(UnknownText_0x1b0000), UnknownText_0x1b0000 keeptextopen 2jump .heal .morn_comcenter ; Good morning! This is the ... 3writetext BANK(UnknownText_0x1b008a), UnknownText_0x1b008a keeptextopen 2jump .heal .day ; Different text if we're in the com center checkbit1 $032a iftrue .day_comcenter ; Hello! Welcome to ... 3writetext BANK(UnknownText_0x1b002b), UnknownText_0x1b002b keeptextopen 2jump .heal .day_comcenter ; Hello! This is the ... 3writetext BANK(UnknownText_0x1b00d6), UnknownText_0x1b00d6 keeptextopen 2jump .heal .nite ; Different text if we're in the com center checkbit1 $032a iftrue .nite_comcenter ; Good evening! You're out late. ... 3writetext BANK(UnknownText_0x1b004f), UnknownText_0x1b004f keeptextopen 2jump .heal .nite_comcenter ; Good to see you working so late. ... 3writetext BANK(UnknownText_0x1b011b), UnknownText_0x1b011b keeptextopen 2jump .heal .heal ; If we come back, don't welcome us to the com center again clearbit1 $032a ; Ask if you want to heal 3writetext BANK(UnknownText_0x1b017a), UnknownText_0x1b017a yesorno iffalse .end ; Go ahead and heal 3writetext BANK(UnknownText_0x1b01bd), UnknownText_0x1b01bd pause 20 special $009d ; Turn to the machine spriteface $fe, $2 pause 10 special $001b playmusic $0000 writebyte $0 special $003e pause 30 special $003d spriteface $fe, $0 pause 10 ; Has Elm already phoned you about Pokerus? checkphonecall iftrue .done ; Has Pokerus already been found in the Pokecenter? checkbit2 $000d iftrue .done ; Check for Pokerus special $004e ; SPECIAL_CHECKPOKERUS iftrue .pokerus .done ; Thank you for waiting. ... 3writetext BANK(UnknownText_0x1b01d7), UnknownText_0x1b01d7 pause 20 .end ; We hope to see you again. 3writetext BANK(UnknownText_0x1b020b), UnknownText_0x1b020b ; Curtsy spriteface $fe, $1 pause 10 spriteface $fe, $0 pause 10 ; And we're out closetext loadmovesprites end .pokerus ; Different text for com center (excludes 'in a Pokemon Center') ; Since flag $32a is cleared when healing, ; this text is never actually seen checkbit1 $032a iftrue .pokerus_comcenter ; Your Pokemon appear to be infected ... 3writetext BANK(UnknownText_0x1b0241), UnknownText_0x1b0241 closetext loadmovesprites 2jump .endpokerus .pokerus_comcenter ; Your Pokemon appear to be infected ... 3writetext BANK(UnknownText_0x1b02d6), UnknownText_0x1b02d6 closetext loadmovesprites .endpokerus ; Don't tell us about Pokerus again setbit2 $000d ; Trigger Elm's Pokerus phone call specialphonecall $0001 end ; bc162 INCBIN "baserom.gbc",$bc162,$bcea5-$bc162 UnusedPhoneScript: ; 0xbcea5 3writetext BANK(UnusedPhoneText), UnusedPhoneText end MomPhoneScript: ; 0xbceaa checkbit1 $0040 iftrue .bcec5 checkbit1 $0041 ; if dude talked to you, then you left home without talking to mom iftrue MomPhoneLectureScript checkbit1 $001f iftrue MomPhoneNoGymQuestScript checkbit1 $001a iftrue MomPhoneNoPokedexScript 2jump MomPhoneNoPokemonScript .bcec5 ; 0xbcec5 checkbit1 $0007 iftrue MomPhoneHangUpScript 3writetext BANK(MomPhoneGreetingText), MomPhoneGreetingText keeptextopen mapnametotext $0 checkcode $f if_equal $1, UnknownScript_0xbcee7 if_equal $2, $4f27 2jump UnknownScript_0xbcf2f UnknownScript_0xbcedf: ; 0xbcedf 3writetext $6d, $4021 keeptextopen 2jump UnknownScript_0xbcf37 UnknownScript_0xbcee7: ; 0xbcee7 checkcode $c if_equal GROUP_NEW_BARK_TOWN, .newbark if_equal GROUP_CHERRYGROVE_CITY, .cherrygrove if_equal GROUP_VIOLET_CITY, .violet if_equal GROUP_AZALEA_TOWN, .azalea if_equal GROUP_GOLDENROD_CITY, .goldenrod 3writetext BANK(MomPhoneGenericAreaText), MomPhoneGenericAreaText keeptextopen 2jump UnknownScript_0xbcf37 .newbark ; 0xbcf05 3writetext BANK(MomPhoneNewBarkText), MomPhoneNewBarkText keeptextopen 2jump UnknownScript_0xbcf37 .cherrygrove ; 0xbcf0d 3writetext BANK(MomPhoneCherrygroveText), MomPhoneCherrygroveText keeptextopen 2jump UnknownScript_0xbcf37 .violet ; 0xbcf15 displaylocation $7 ; sprout tower 3call $3,$4edf .azalea ; 0xbcf1b displaylocation $d ; slowpoke well 3call $3,$4edf .goldenrod ; 0xbcf21 displaylocation $11 ; radio tower 3call $3,$4edf 3writetext $6d, $411c keeptextopen 2jump UnknownScript_0xbcf37 UnknownScript_0xbcf2f: ; 0xbcf2f 3writetext $6d, $4150 keeptextopen 2jump UnknownScript_0xbcf37 UnknownScript_0xbcf37: ; 0xbcf37 checkbit2 $0008 iffalse UnknownScript_0xbcf49 checkmoney $1, 0 if_equal $0, UnknownScript_0xbcf55 2jump UnknownScript_0xbcf63 UnknownScript_0xbcf49: ; 0xbcf49 checkmoney $1, 0 if_equal $0, UnknownScript_0xbcf79 2jump UnknownScript_0xbcf6e UnknownScript_0xbcf55: ; 0xbcf55 readmoney $1, $0 3writetext $6d, $41a7 yesorno iftrue MomPhoneSaveMoneyScript 2jump MomPhoneWontSaveMoneyScript UnknownScript_0xbcf63: ; 0xbcf63 3writetext $6d, $41ea yesorno iftrue MomPhoneSaveMoneyScript 2jump MomPhoneWontSaveMoneyScript UnknownScript_0xbcf6e: ; 0xbcf6e 3writetext $6d, $420d yesorno iftrue MomPhoneSaveMoneyScript 2jump MomPhoneWontSaveMoneyScript UnknownScript_0xbcf79: ; 0xbcf79 readmoney $1, $0 3writetext $6d, $4249 yesorno iftrue MomPhoneSaveMoneyScript 2jump MomPhoneWontSaveMoneyScript MomPhoneSaveMoneyScript: ; 0xbcf87 setbit2 $0008 3writetext $6d, $4289 keeptextopen 2jump MomPhoneHangUpScript MomPhoneWontSaveMoneyScript: ; 0xbcf92 clearbit2 $0008 3writetext BANK(MomPhoneWontSaveMoneyText), MomPhoneWontSaveMoneyText keeptextopen 2jump MomPhoneHangUpScript MomPhoneHangUpScript: ; 0xbcf9d 3writetext BANK(MomPhoneHangUpText), MomPhoneHangUpText end MomPhoneNoPokemonScript: ; 0xbcfa2 3writetext BANK(MomPhoneNoPokemonText), MomPhoneNoPokemonText end MomPhoneNoPokedexScript: ; 0xbcfa7 3writetext BANK(MomPhoneNoPokedexText), MomPhoneNoPokedexText end MomPhoneNoGymQuestScript: ; 0xbcfac 3writetext BANK(MomPhoneNoGymQuestText), MomPhoneNoGymQuestText end MomPhoneLectureScript: ; 0xbcfb1 setbit1 $0040 setbit2 $0009 specialphonecall $0000 3writetext BANK(MomPhoneLectureText), MomPhoneLectureText yesorno iftrue MomPhoneSaveMoneyScript 2jump MomPhoneWontSaveMoneyScript BillPhoneScript1: ; 0xbcfc5 checktime $2 iftrue .daygreet checktime $4 iftrue .nitegreet 3writetext BANK(BillPhoneMornGreetingText), BillPhoneMornGreetingText keeptextopen 2jump .main .daygreet ; 0xbcfd7 3writetext BANK(BillPhoneDayGreetingText), BillPhoneDayGreetingText keeptextopen 2jump .main .nitegreet ; 0xbcfdf 3writetext BANK(BillPhoneNiteGreetingText), BillPhoneNiteGreetingText keeptextopen 2jump .main .main ; 0xbcfe7 3writetext BANK(BillPhoneGeneriText), BillPhoneGeneriText keeptextopen checkcode $10 RAM2MEM $0 if_equal $0, .full if_greater_than $6, .nearlyfull 3writetext BANK(BillPhoneNotFullText), BillPhoneNotFullText end .nearlyfull ; 0xbcffd 3writetext BANK(BillPhoneNearlyFullText), BillPhoneNearlyFullText end .full ; 0xbd002 3writetext BANK(BillPhoneFullText), BillPhoneFullText end BillPhoneScript2: ; 0xbd007 3writetext BANK(BillPhoneNewlyFullText), BillPhoneNewlyFullText closetext end ElmPhoneScript1: ; 0xbd00d checkcode $14 if_equal $1, .pokerus checkbit1 $0055 iftrue .discovery checkbit1 $002d iffalse .next checkbit1 $0054 iftrue .egghatched .next checkbit1 $002d iftrue .eggunhatched checkbit1 $0701 iftrue .assistant checkbit1 $001f iftrue .checkingegg checkbit1 $0043 iftrue .stolen checkbit1 $001e iftrue .sawmrpokemon 3writetext BANK(ElmPhoneStartText), ElmPhoneStartText end .sawmrpokemon ; 0xbd048 3writetext BANK(ElmPhoneSawMrPokemonText), ElmPhoneSawMrPokemonText end .stolen ; 0xbd04d 3writetext BANK(ElmPhonePokemonStolenText), ElmPhonePokemonStolenText end .checkingegg ; 0xbd052 3writetext BANK(ElmPhoneCheckingEggText), ElmPhoneCheckingEggText end .assistant ; 0xbd057 3writetext BANK(ElmPhoneAssistantText), ElmPhoneAssistantText end .eggunhatched ; 0xbd05c 3writetext BANK(ElmPhoneEggUnhatchedText), ElmPhoneEggUnhatchedText end .egghatched ; 0xbd061 3writetext BANK(ElmPhoneEggHatchedText), ElmPhoneEggHatchedText setbit1 $0077 end .discovery ; 0xbd069 random $2 if_equal $0, .nextdiscovery 3writetext BANK(ElmPhoneDiscovery1Text), ElmPhoneDiscovery1Text end .nextdiscovery ; 0xbd074 3writetext BANK(ElmPhoneDiscovery2Text), ElmPhoneDiscovery2Text end .pokerus ; 0xbd079 3writetext BANK(ElmPhonePokerusText), ElmPhonePokerusText specialphonecall $0000 end ElmPhoneScript2: ; 0xbd081 checkcode $14 if_equal $2, .disaster if_equal $3, .assistant if_equal $4, .rocket if_equal $5, .gift if_equal $8, .gift 3writetext BANK(ElmPhonePokerusText), ElmPhonePokerusText specialphonecall $0000 end .disaster ; 0xbd09f 3writetext BANK(ElmPhoneDisasterText), ElmPhoneDisasterText specialphonecall $0000 setbit1 $0043 end .assistant ; 0xbd0aa 3writetext BANK(ElmPhoneEggAssistantText), ElmPhoneEggAssistantText specialphonecall $0000 clearbit1 $0700 setbit1 $0701 end .rocket ; 0xbd0b8 3writetext BANK(ElmPhoneRocketText), ElmPhoneRocketText specialphonecall $0000 end .gift ; 0xbd0c0 3writetext BANK(ElmPhoneGiftText), ElmPhoneGiftText specialphonecall $0000 end .unused ; 0xbd0c8 3writetext BANK(ElmPhoneUnusedText), ElmPhoneUnusedText specialphonecall $0000 end INCBIN "baserom.gbc",$bd0d0,$be699-$bd0d0 SECTION "bank30",DATA,BANK[$30] INCBIN "baserom.gbc",$C0000,$4000 SECTION "bank31",DATA,BANK[$31] INCBIN "baserom.gbc",$C4000,$4000 SECTION "bank32",DATA,BANK[$32] INCBIN "baserom.gbc",$C8000,$4000 SECTION "bank33",DATA,BANK[$33] INCBIN "baserom.gbc",$cc000, $cfd9e - $cc000 ; Songs iii Music_PostCredits: INCLUDE "audio/music/postcredits.asm" INCBIN "baserom.gbc",$cff04, $d0000 - $cff04 ; Pic animations I SECTION "bank34",DATA,BANK[$34] ; Pic animations asm INCBIN "baserom.gbc", $d0000, $d0695 - $d0000 ; Pic animations are assembled in 3 parts: ; Top-level animations: ; frame #, duration: Frame 0 is the original pic (no change) ; setrepeat #: Sets the number of times to repeat ; dorepeat #: Repeats from command # (starting from 0) ; end ; Bitmasks: ; Layered over the pic to designate affected tiles ; Frame definitions: ; first byte is the bitmask used for this frame ; following bytes are tile ids mapped to each bit in the mask ; Main animations (played everywhere) AnimationPointers: INCLUDE "gfx/pics/anim_pointers.asm" INCLUDE "gfx/pics/anims.asm" ; Extra animations, appended to the main animation ; Used in the status screen (blinking, tail wags etc.) AnimationExtraPointers: INCLUDE "gfx/pics/extra_pointers.asm" INCLUDE "gfx/pics/extras.asm" ; Unown has its own animation data despite having an entry in the main tables UnownAnimationPointers: INCLUDE "gfx/pics/unown_anim_pointers.asm" INCLUDE "gfx/pics/unown_anims.asm" UnownAnimationExtraPointers: INCLUDE "gfx/pics/unown_extra_pointers.asm" INCLUDE "gfx/pics/unown_extras.asm" ; Bitmasks BitmasksPointers: INCLUDE "gfx/pics/bitmask_pointers.asm" INCLUDE "gfx/pics/bitmasks.asm" UnownBitmasksPointers: INCLUDE "gfx/pics/unown_bitmask_pointers.asm" INCLUDE "gfx/pics/unown_bitmasks.asm" ; Pic animations II SECTION "bank35",DATA,BANK[$35] ; Frame definitions FramesPointers: INCLUDE "gfx/pics/frame_pointers.asm" ; Inexplicably, Kanto frames are split off from Johto INCLUDE "gfx/pics/kanto_frames.asm" ; Pic animations III SECTION "bank36",DATA,BANK[$36] FontInversed: INCBIN "gfx/font_inversed.1bpp" ; Johto frame definitions INCLUDE "gfx/pics/johto_frames.asm" ; Unown frame definitions UnownFramesPointers: INCLUDE "gfx/pics/unown_frame_pointers.asm" INCLUDE "gfx/pics/unown_frames.asm" SECTION "bank37",DATA,BANK[$37] Tileset31GFX: ; dc000 INCBIN "gfx/tilesets/31.lz" ; dc3ce INCBIN "baserom.gbc", $dc3ce, $dc3d0 - $dc3ce Tileset18GFX: ; dc3d0 INCBIN "gfx/tilesets/18.lz" ; dcc4e INCBIN "baserom.gbc", $dcc4e, $dd150 - $dcc4e Tileset05GFX: ; dd150 INCBIN "gfx/tilesets/05.lz" ; dd5f8 INCBIN "baserom.gbc", $dd5f8, $ddb00 - $dd5f8 Tileset19GFX: ; ddb00 INCBIN "gfx/tilesets/19.lz" ; ddf64 INCBIN "baserom.gbc", $ddf64, $de570 - $ddf64 Tileset11GFX: ; de570 INCBIN "gfx/tilesets/11.lz" ; de98a INCBIN "baserom.gbc", $de98a, $e0000 - $de98a SECTION "bank38",DATA,BANK[$38] INCBIN "baserom.gbc",$E0000,$4000 SECTION "bank39",DATA,BANK[$39] INCBIN "baserom.gbc", $e4000, $e555d - $e4000 IntroSuicuneRunGFX: ; e555d INCBIN "gfx/intro/suicune_run.lz" ; e592b INCBIN "baserom.gbc", $e592b, $e592d - $e592b IntroPichuWooperGFX: ; e592d INCBIN "gfx/intro/pichu_wooper.lz" ; e5c70 INCBIN "baserom.gbc", $e5c70, $e5c7d - $e5c70 IntroBackgroundGFX: ; e5c7d INCBIN "gfx/intro/background.lz" ; e5e69 INCBIN "baserom.gbc", $e5e69, $e5e6d - $e5e69 IntroTilemap004: ; e5e6d INCBIN "gfx/intro/004.lz" ; e5ec5 INCBIN "baserom.gbc", $e5ec5, $e5ecd - $e5ec5 IntroTilemap003: ; e5ecd INCBIN "gfx/intro/003.lz" ; e5ed9 INCBIN "baserom.gbc", $e5ed9, $e5f5d - $e5ed9 IntroUnownsGFX: ; e5f5d INCBIN "gfx/intro/unowns.lz" ; e6348 INCBIN "baserom.gbc", $e6348, $e634d - $e6348 IntroPulseGFX: ; e634d INCBIN "gfx/intro/pulse.lz" ; e63d4 INCBIN "baserom.gbc", $e63d4, $e63dd - $e63d4 IntroTilemap002: ; e63dd INCBIN "gfx/intro/002.lz" ; e6418 INCBIN "baserom.gbc", $e6418, $e641d - $e6418 IntroTilemap001: ; e641d INCBIN "gfx/intro/001.lz" ; e6429 INCBIN "baserom.gbc", $e6429, $e642d - $e6429 IntroTilemap006: ; e642d INCBIN "gfx/intro/006.lz" ; e6472 INCBIN "baserom.gbc", $e6472, $e647d - $e6472 IntroTilemap005: ; e647d INCBIN "gfx/intro/005.lz" ; e6498 INCBIN "baserom.gbc", $e6498, $e649d - $e6498 IntroTilemap008: ; e649d INCBIN "gfx/intro/008.lz" ; e6550 INCBIN "baserom.gbc", $e6550, $e655d - $e6550 IntroTilemap007: ; e655d INCBIN "gfx/intro/007.lz" ; e65a4 INCBIN "baserom.gbc", $e65a4, $e662d - $e65a4 IntroCrystalUnownsGFX: ; e662d INCBIN "gfx/intro/crystal_unowns.lz" ; e6720 INCBIN "baserom.gbc", $e6720, $e672d - $e6720 IntroTilemap017: ; e672d INCBIN "gfx/intro/017.lz" ; e6761 INCBIN "baserom.gbc", $e6761, $e676d - $e6761 IntroTilemap015: ; e676d INCBIN "gfx/intro/015.lz" ; e6794 INCBIN "baserom.gbc", $e6794, $e681d - $e6794 IntroSuicuneCloseGFX: ; e681d INCBIN "gfx/intro/suicune_close.lz" ; e6c37 INCBIN "baserom.gbc", $e6c37, $e6c3d - $e6c37 IntroTilemap012: ; e6c3d INCBIN "gfx/intro/012.lz" ; e6d0a INCBIN "baserom.gbc", $e6d0a, $e6d0d - $e6d0a IntroTilemap011: ; e6d0d INCBIN "gfx/intro/011.lz" ; e6d65 INCBIN "baserom.gbc", $e6d65, $e6ded - $e6d65 IntroSuicuneJumpGFX: ; e6ded INCBIN "gfx/intro/suicune_jump.lz" ; e72a7 INCBIN "baserom.gbc", $e72a7, $e72ad - $e72a7 IntroSuicuneBackGFX: ; e72ad INCBIN "gfx/intro/suicune_back.lz" ; e7648 INCBIN "baserom.gbc", $e7648, $e764d - $e7648 IntroTilemap010: ; e764d INCBIN "gfx/intro/010.lz" ; e76a0 INCBIN "baserom.gbc", $e76a0, $e76ad - $e76a0 IntroTilemap009: ; e76ad INCBIN "gfx/intro/009.lz" ; e76bb INCBIN "baserom.gbc", $e76bb, $e76bd - $e76bb IntroTilemap014: ; e76bd INCBIN "gfx/intro/014.lz" ; e778b INCBIN "baserom.gbc", $e778b, $e778d - $e778b IntroTilemap013: ; e778d INCBIN "gfx/intro/013.lz" ; e77d9 INCBIN "baserom.gbc", $e77d9, $e785d - $e77d9 IntroUnownBackGFX: ; e785d INCBIN "gfx/intro/unown_back.lz" ; e799a INCBIN "baserom.gbc", $e799a, $e7a70 - $e799a ; ================================================================ ; Sound engine and music/sound effect pointers SECTION "bank3A",DATA,BANK[$3A] ; The sound engine. Interfaces are in bank 0 INCLUDE "audio/engine.asm" ; What music plays when a trainer notices you INCLUDE "audio/trainer_encounters.asm" ; Pointer table for all 103 songs Music: INCLUDE "audio/music_pointers.asm" ; Empty song Music_Nothing: INCLUDE "audio/music/nothing.asm" ; Pointer table for all 68 base cries Cries: INCLUDE "audio/cry_pointers.asm" ; Pointer table for all 207 sfx SFX: INCLUDE "audio/sfx_pointers.asm" ; Songs I Music_Route36: INCLUDE "audio/music/route36.asm" Music_RivalBattle: INCLUDE "audio/music/rivalbattle.asm" Music_RocketBattle: INCLUDE "audio/music/rocketbattle.asm" Music_ElmsLab: INCLUDE "audio/music/elmslab.asm" Music_DarkCave: INCLUDE "audio/music/darkcave.asm" Music_JohtoGymBattle: INCLUDE "audio/music/johtogymleaderbattle.asm" Music_ChampionBattle: INCLUDE "audio/music/championbattle.asm" Music_SSAqua: INCLUDE "audio/music/ssaqua.asm" Music_NewBarkTown: INCLUDE "audio/music/newbarktown.asm" Music_GoldenrodCity: INCLUDE "audio/music/goldenrodcity.asm" Music_VermilionCity: INCLUDE "audio/music/vermilioncity.asm" Music_TitleScreen: INCLUDE "audio/music/titlescreen.asm" Music_RuinsOfAlphInterior: INCLUDE "audio/music/ruinsofalphinterior.asm" Music_LookPokemaniac: INCLUDE "audio/music/lookpokemaniac.asm" Music_TrainerVictory: INCLUDE "audio/music/trainervictory.asm" SECTION "bank3B",DATA,BANK[$3B] ; Songs II Music_Route1: INCLUDE "audio/music/route1.asm" Music_Route3: INCLUDE "audio/music/route3.asm" Music_Route12: INCLUDE "audio/music/route12.asm" Music_KantoGymBattle: INCLUDE "audio/music/kantogymleaderbattle.asm" Music_KantoTrainerBattle: INCLUDE "audio/music/kantotrainerbattle.asm" Music_KantoWildBattle: INCLUDE "audio/music/kantowildpokemonbattle.asm" Music_PokemonCenter: INCLUDE "audio/music/pokemoncenter.asm" Music_LookLass: INCLUDE "audio/music/looklass.asm" Music_LookOfficer: INCLUDE "audio/music/lookofficer.asm" Music_Route2: INCLUDE "audio/music/route2.asm" Music_MtMoon: INCLUDE "audio/music/mtmoon.asm" Music_ShowMeAround: INCLUDE "audio/music/showmearound.asm" Music_GameCorner: INCLUDE "audio/music/gamecorner.asm" Music_Bicycle: INCLUDE "audio/music/bicycle.asm" Music_LookSage: INCLUDE "audio/music/looksage.asm" Music_PokemonChannel: INCLUDE "audio/music/pokemonchannel.asm" Music_Lighthouse: INCLUDE "audio/music/lighthouse.asm" Music_LakeOfRage: INCLUDE "audio/music/lakeofrage.asm" Music_IndigoPlateau: INCLUDE "audio/music/indigoplateau.asm" Music_Route37: INCLUDE "audio/music/route37.asm" Music_RocketHideout: INCLUDE "audio/music/rockethideout.asm" Music_DragonsDen: INCLUDE "audio/music/dragonsden.asm" Music_RuinsOfAlphRadio: INCLUDE "audio/music/ruinsofalphradiosignal.asm" Music_LookBeauty: INCLUDE "audio/music/lookbeauty.asm" Music_Route26: INCLUDE "audio/music/route26.asm" Music_EcruteakCity: INCLUDE "audio/music/ecruteakcity.asm" Music_LakeOfRageRocketRadio:INCLUDE "audio/music/lakeofragerocketsradiosignal.asm" Music_MagnetTrain: INCLUDE "audio/music/magnettrain.asm" Music_LavenderTown: INCLUDE "audio/music/lavendertown.asm" Music_DancingHall: INCLUDE "audio/music/dancinghall.asm" Music_ContestResults: INCLUDE "audio/music/bugcatchingcontestresults.asm" Music_Route30: INCLUDE "audio/music/route30.asm" SECTION "bank3C",DATA,BANK[$3C] ; Songs III Music_VioletCity: INCLUDE "audio/music/violetcity.asm" Music_Route29: INCLUDE "audio/music/route29.asm" Music_HallOfFame: INCLUDE "audio/music/halloffame.asm" Music_HealPokemon: INCLUDE "audio/music/healpokemon.asm" Music_Evolution: INCLUDE "audio/music/evolution.asm" Music_Printer: INCLUDE "audio/music/printer.asm" INCBIN "baserom.gbc", $f0941, $f2787 - $f0941 CryHeaders: INCLUDE "audio/cry_headers.asm" INCBIN "baserom.gbc", $f2d69, $f3fb6 - $f2d69 SECTION "bank3D",DATA,BANK[$3D] ; Songs IV Music_ViridianCity: INCLUDE "audio/music/viridiancity.asm" Music_CeladonCity: INCLUDE "audio/music/celadoncity.asm" Music_WildPokemonVictory: INCLUDE "audio/music/wildpokemonvictory.asm" Music_SuccessfulCapture: INCLUDE "audio/music/successfulcapture.asm" Music_GymLeaderVictory: INCLUDE "audio/music/gymleadervictory.asm" Music_MtMoonSquare: INCLUDE "audio/music/mtmoonsquare.asm" Music_Gym: INCLUDE "audio/music/gym.asm" Music_PalletTown: INCLUDE "audio/music/pallettown.asm" Music_ProfOaksPokemonTalk: INCLUDE "audio/music/profoakspokemontalk.asm" Music_ProfOak: INCLUDE "audio/music/profoak.asm" Music_LookRival: INCLUDE "audio/music/lookrival.asm" Music_AfterTheRivalFight: INCLUDE "audio/music/aftertherivalfight.asm" Music_Surf: INCLUDE "audio/music/surf.asm" Music_NationalPark: INCLUDE "audio/music/nationalpark.asm" Music_AzaleaTown: INCLUDE "audio/music/azaleatown.asm" Music_CherrygroveCity: INCLUDE "audio/music/cherrygrovecity.asm" Music_UnionCave: INCLUDE "audio/music/unioncave.asm" Music_JohtoWildBattle: INCLUDE "audio/music/johtowildpokemonbattle.asm" Music_JohtoWildBattleNight: INCLUDE "audio/music/johtowildpokemonbattlenight.asm" Music_JohtoTrainerBattle: INCLUDE "audio/music/johtotrainerbattle.asm" Music_LookYoungster: INCLUDE "audio/music/lookyoungster.asm" Music_TinTower: INCLUDE "audio/music/tintower.asm" Music_SproutTower: INCLUDE "audio/music/sprouttower.asm" Music_BurnedTower: INCLUDE "audio/music/burnedtower.asm" Music_Mom: INCLUDE "audio/music/mom.asm" Music_VictoryRoad: INCLUDE "audio/music/victoryroad.asm" Music_PokemonLullaby: INCLUDE "audio/music/pokemonlullaby.asm" Music_PokemonMarch: INCLUDE "audio/music/pokemonmarch.asm" Music_GoldSilverOpening: INCLUDE "audio/music/goldsilveropening.asm" Music_GoldSilverOpening2: INCLUDE "audio/music/goldsilveropening2.asm" Music_LookHiker: INCLUDE "audio/music/lookhiker.asm" Music_LookRocket: INCLUDE "audio/music/lookrocket.asm" Music_RocketTheme: INCLUDE "audio/music/rockettheme.asm" Music_MainMenu: INCLUDE "audio/music/mainmenu.asm" Music_LookKimonoGirl: INCLUDE "audio/music/lookkimonogirl.asm" Music_PokeFluteChannel: INCLUDE "audio/music/pokeflutechannel.asm" Music_BugCatchingContest: INCLUDE "audio/music/bugcatchingcontest.asm" SECTION "bank3E",DATA,BANK[$3E] FontExtra: INCBIN "gfx/font_extra.2bpp",$0,$200 Font: INCBIN "gfx/font.1bpp",$0,$400 FontBattleExtra: INCBIN "gfx/font_battle_extra.2bpp",$0,$200 INCBIN "baserom.gbc", $f8800, $f8ba0 - $f8800 TownMapGFX: ; f8ba0 INCBIN "gfx/misc/town_map.lz" ; f8ea3 INCBIN "baserom.gbc", $f8ea3, $fbbfc - $f8ea3 CalcMagikarpLength: ; fbbfc ; Stores Magikarp's length at $d1ea-$d1eb in big endian ; ; input: ; de: EnemyMonDVs ; bc: PlayerID ; output: ; $d1ea-$d1eb: length ; ; does a whole bunch of arbitrary nonsense ; cycles through a table of arbitrary values ; http://web.archive.org/web/20110628181718/http://upokecenter.com/games/gs/guides/magikarp.php ; b = rrcrrc(atkdefdv) xor rrc(pidhi) ld h, b ld l, c ld a, [hli] ld b, a ld c, [hl] ; ld bc, [PlayerID] rrc b rrc c ld a, [de] inc de rrca rrca xor b ld b, a ; c = rrcrrc(spdspcdv) xor rrc(pidlo) ld a, [de] rrca rrca xor c ld c, a ; if bc < $000a: ld a, b and a jr nz, .loadtable ld a, c cp a, $0a jr nc, .loadtable ; de = hl = bc + $be ld hl, $00be add hl, bc ld d, h ld e, l jr .endtable .loadtable ld hl, .MagikarpLengthTable ld a, $02 ld [$d265], a .readtable ld a, [hli] ld e, a ld a, [hli] ld d, a call .BLessThanD jr nc, .advancetable ; c = bc / [hl] call .BCMinusDE ld a, b ld [$ffb3], a ld a, c ld [$ffb4], a ld a, [hl] ld [$ffb7], a ld b, $02 call Divide ld a, [$ffb6] ld c, a ; de = c + $64 * (2 + number of rows down the table) xor a ld [$ffb4], a ld [$ffb5], a ld a, $64 ld [$ffb6], a ld a, [$d265] ld [$ffb7], a call Multiply ld b, $00 ld a, [$ffb6] add c ld e, a ld a, [$ffb5] adc b ld d, a jr .endtable .advancetable inc hl ; align to next triplet ld a, [$d265] inc a ld [$d265], a cp a, $10 jr c, .readtable call .BCMinusDE ld hl, $0640 add hl, bc ld d, h ld e, l .endtable ld h, d ld l, e add hl, hl add hl, hl add hl, de add hl, hl ; hl = de * 10 ld de, $ff02 ld a, $ff .loop inc a add hl, de ; - 254 jr c, .loop ld d, $00 ; mod $0c .modloop cp a, $0c jr c, .done sub a, $0c inc d jr .modloop .done ld e, a ld hl, $d1ea ld [hl], d inc hl ld [hl], e ret ; fbc9a .BLessThanD ; fbc9a ; return carry if b < d ld a, b cp d ret c ret nc ; fbc9e .CLessThanE ; fbc9e ; unused ld a, c cp e ret ; fbca1 .BCMinusDE ; fbca1 ; bc -= de ld a, c sub e ld c, a ld a, b sbc d ld b, a ret ; fbca8 .MagikarpLengthTable ; fbca8 ; ????, divisor dwb $006e, $01 dwb $0136, $02 dwb $02c6, $04 dwb $0a96, $14 dwb $1e1e, $32 dwb $452e, $64 dwb $7fc6, $96 dwb $ba5e, $96 dwb $e16e, $64 dwb $f4f6, $32 dwb $fcc6, $14 dwb $feba, $05 dwb $ff82, $02 ; fbccf INCBIN "baserom.gbc",$FBCCF,$fc000-$fbccf SECTION "bank3F",DATA,BANK[$3F] DoTileAnimation: INCBIN "baserom.gbc",$FC000,$fcdc2-$fc000 LoadTradesPointer: ; 0xfcdc2 ld d, 0 push de ld a, [$cf63] and $f swap a ld e, a ld d, $0 ld hl, Trades add hl, de add hl, de pop de add hl, de ret ; 0xfcdd7 INCBIN "baserom.gbc",$fcdd7,$fce58-$fcdd7 Trades: ; 0xfce58 ; byte 1: dialog ; byte 2: givemon ; byte 3: getmon ; bytes 4-14 nickname ; bytes 15-16 DVs ; byte 17 held item ; bytes 18-19 ID ; bytes 20-30 OT name ; byte 31 gender ; byte 32 XXX always zero? db 0,ABRA,MACHOP,"MUSCLE@@@@@",$37,$66,GOLD_BERRY,$54,$92,"MIKE@@@@@@@",0,0 db 0,BELLSPROUT,ONIX,"ROCKY@@@@@@",$96,$66,BITTER_BERRY,$1e,$bf,"KYLE@@@@@@@",0,0 db 1,KRABBY,VOLTORB,"VOLTY@@@@@@",$98,$88,PRZCUREBERRY,$05,$72,"TIM@@@@@@@@",0,0 db 3,DRAGONAIR,DODRIO,"DORIS@@@@@@",$77,$66,SMOKE_BALL,$1b,$01,"EMY@@@@@@@@",2,0 db 2,HAUNTER,XATU,"PAUL@@@@@@@",$96,$86,MYSTERYBERRY,$00,$3d,"CHRIS@@@@@@",0,0 db 3,CHANSEY,AERODACTYL,"AEROY@@@@@@",$96,$66,GOLD_BERRY,$7b,$67,"KIM@@@@@@@@",0,0 db 0,DUGTRIO,MAGNETON,"MAGGIE@@@@@",$96,$66,METAL_COAT,$a2,$c3,"FOREST@@@@@",0,0 INCBIN "baserom.gbc",$fcf38,$fd1d2-$fcf38 SECTION "bank40",DATA,BANK[$40] INCBIN "baserom.gbc",$100000,$4000 SECTION "bank41",DATA,BANK[$41] INCBIN "baserom.gbc",$104000,$105258 - $104000 MysteryGiftGFX: INCBIN "gfx/misc/mystery_gift.2bpp" INCBIN "baserom.gbc",$105688,$105930 - $105688 ; japanese mystery gift gfx INCBIN "gfx/misc/mystery_gift_jp.2bpp" INCBIN "baserom.gbc",$105db0,$1060bb - $105db0 Function1060bb: ; 1060bb ; commented out ret ; 1060bc INCBIN "baserom.gbc",$1060bc,$108000 - $1060bc SECTION "bank42",DATA,BANK[$42] INCBIN "baserom.gbc", $108000, $109407 - $108000 IntroLogoGFX: ; 109407 INCBIN "gfx/intro/logo.lz" ; 10983f INCBIN "baserom.gbc", $10983f, $10aee1 - $10983f Credits: db " SATOSHI TAJIRI@" ; "たじり さとし@" db " JUNICHI MASUDA@" ; "ますだ じゅんいち@" db " TETSUYA WATANABE@" ; "わたなべ てつや@" db " SHIGEKI MORIMOTO@" ; "もりもと しげき@" db " SOUSUKE TAMADA@" ; "たまだ そうすけ@" db " TAKENORI OOTA@" ; "おおた たけのり@" db " KEN SUGIMORI@" ; "すぎもり けん@" db " MOTOFUMI FUJIWARA@" ; "ふじわら もとふみ@" db " ATSUKO NISHIDA@" ; "にしだ あつこ@" db " MUNEO SAITO@" ; "さいとう むねお@" db " SATOSHI OOTA@" ; "おおた さとし@" db " RENA YOSHIKAWA@" ; "よしかわ れな@" db " JUN OKUTANI@" ; "おくたに じゅん@" db " HIRONOBU YOSHIDA@" ; "よしだ ひろのぶ@" db " ASUKA IWASHITA@" ; "いわした あすか@" db " GO ICHINOSE@" ; "いちのせ ごう@" db " MORIKAZU AOKI@" ; "あおき もりかず@" db " KOHJI NISHINO@" ; "にしの こうじ@" db " KENJI MATSUSHIMA@" ; "まつしま けんじ@" db "TOSHINOBU MATSUMIYA@" ; "まつみや としのぶ@" db " SATORU IWATA@" ; "いわた さとる@" db " NOBUHIRO SEYA@" ; "せや のぶひろ@" db " KAZUHITO SEKINE@" ; "せきね かずひと@" db " TETSUJI OOTA@" ; "おおた てつじ@" db "NCL SUPER MARIO CLUB@" ; "スーパーマりォクラブ@" db " SARUGAKUCHO@" ; "さるがくちょう@" db " AKITO MORI@" ; "もり あきと@" db " TAKAHIRO HARADA@" ; "はらだ たかひろ@" db " TOHRU HASHIMOTO@" ; "はしもと とおる@" db " NOBORU MATSUMOTO@" ; "まつもと のぼる@" db " TAKEHIRO IZUSHI@" ; "いずし たけひろ@" db " TAKASHI KAWAGUCHI@" ; "かわぐち たかし@" db " TSUNEKAZU ISHIHARA@" ; "いしはら つねかず@" db " HIROSHI YAMAUCHI@" ; "やまうち ひろし@" db " KENJI SAIKI@" ; "さいき けんじ@" db " ATSUSHI TADA@" ; "ただ あつし@" db " NAOKO KAWAKAMI@" ; "かわかみ なおこ@" db " HIROYUKI ZINNAI@" ; "じんない ひろゆき@" db " KUNIMI KAWAMURA@" ; "かわむら くにみ@" db " HISASHI SOGABE@" ; "そがべ ひさし@" db " KEITA KAGAYA@" ; "かがや けいた@" db " YOSHINORI MATSUDA@" ; "まつだ よしのり@" db " HITOMI SATO@" ; "さとう ひとみ@" db " TORU OSAWA@" ; "おおさわ とおる@" db " TAKAO OHARA@" ; "おおはら たかお@" db " YUICHIRO ITO@" ; "いとう ゆういちろう@" db " TAKAO SHIMIZU@" ; "しみず たかお@" db " SPECIAL PRODUCTION", $4e db " PLANNING", $4e ; "きかくかいはつぶ@" db " & DEVELOPMENT DEPT.@" db " KEITA NAKAMURA@" ; "なかむら けいた@" db " HIROTAKA UEMURA@" ; "うえむら ひろたか@" db " HIROAKI TAMURA@" ; "たむら ひろあき@" db " NORIAKI SAKAGUCHI@" ; "さかぐち のりあき@" db " MIYUKI SATO@" ; "さとう みゆき@" db " GAKUZI NOMOTO@" ; "のもと がくじ@" db " AI MASHIMA@" ; "ましま あい@" db " MIKIHIRO ISHIKAWA@" ; "いしかわ みきひろ@" db " HIDEYUKI HASHIMOTO@" ; "はしもと ひでゆき@" db " SATOSHI YAMATO@" ; "やまと さとし@" db " SHIGERU MIYAMOTO@" ; "みやもと しげる@" db " END@" ; "おしまい@" db " ????????@" ; "????????@" db " GAIL TILDEN@" db " NOB OGASAWARA@" db " SETH McMAHILL@" db " HIROTO ALEXANDER@" db " TERESA LILLYGREN@" db " THOMAS HERTZOG@" db " ERIK JOHNSON@" db " HIRO NAKAMURA@" db " TERUKI MURAKAWA@" db " KAZUYOSHI OSAWA@" db " KIMIKO NAKAMICHI@" db " #MON", $4e ; "ポケットモンスター", $4e db " CRYSTAL VERSION", $4e ; " クりスタル バージョン", $4e db " STAFF@" ; " スタッフ@" db " DIRECTOR@" ; "エグゼクティブ ディレクター@" db " CO-DIRECTOR@" ; "ディレクター@" db " PROGRAMMERS@" ; "プログラム@" db " GRAPHICS DIRECTOR@" ; "グラフィック ディレクター@" db " MONSTER DESIGN@" ; "# デザイン@" db " GRAPHICS DESIGN@" ; "グラフィック デザイン@" db " MUSIC@" ; "おんがく@" db " SOUND EFFECTS@" ; "サウンド エフ→クト@" db " GAME DESIGN@" ; "ゲームデザイン@" db " GAME SCENARIO@" ; "シナりォ@" db " TOOL PROGRAMMING@" ; "ツール プログラム@" db " PARAMETRIC DESIGN@" ; "パラメーター せってい@" db " SCRIPT DESIGN@" ; "スクりプト せってい@" db " MAP DATA DESIGN@" ; "マップデータ せってい@" db " MAP DESIGN@" ; "マップ デザイン@" db " PRODUCT TESTING@" ; "デバッグプレイ@" db " SPECIAL THANKS@" ; "スぺシャルサンクス@" db " PRODUCERS@" ; "プロデューサー@" db " EXECUTIVE PRODUCER@" ; "エグゼクティブ プロデューサー@" db " #MON ANIMATION@" ; "# アニメーション@" db " #DEX TEXT@" ; "ずかん テキスト@" db " MOBILE PRJ. LEADER@" ; "モバイルプロジ→クト りーダー@" db " MOBILE SYSTEM AD.@" ; "モバイル システムアドバイザー@" db "MOBILE STADIUM DIR.@" ; "モバイルスタジアム ディレクター@" db " COORDINATION@" ; "コーディネーター@" db " US VERSION STAFF@" db " US COORDINATION@" db " TEXT TRANSLATION@" db " PAAD TESTING@" ; (C) 1 9 9 5 - 2 0 0 1 N i n t e n d o db $60,$61,$62,$63,$64,$65,$66, $67, $68, $69, $6a, $6b, $6c, $4e ; (C) 1 9 9 5 - 2 0 0 1 C r e a t u r e s i n c . db $60,$61,$62,$63,$64,$65,$66, $6d, $6e, $6f, $70, $71, $72, $7a, $7b, $7c, $4e ; (C) 1 9 9 5 - 2 0 0 1 G A M E F R E A K i n c . db $60,$61,$62,$63,$64,$65,$66, $73, $74, $75, $76, $77, $78, $79, $7a, $7b, $7c, "@" SECTION "bank43",DATA,BANK[$43] INCBIN "baserom.gbc", $10c000, $10ed67 - $10c000 TitleScreen: ; 10ed67 call WhiteBGMap call ClearSprites call ClearTileMap ; Turn BG Map update off xor a ld [$ffd4], a ; Reset timing variables ld hl, $cf63 ld [hli], a ; cf63 ; Scene? ld [hli], a ; cf64 ld [hli], a ; cf65 ; Timer lo ld [hl], a ; cf66 ; Timer hi ; Turn LCD off call DisableLCD ; VRAM bank 1 ld a, 1 ld [$ff4f], a ; Decompress running Suicune gfx ld hl, TitleSuicuneGFX ld de, $8800 call $0b50 ; Clear screen palettes ld hl, $9800 ld bc, $0280 xor a call ByteFill ; Fill tile palettes: ; BG Map 1: ; line 0 (copyright) ld hl, $9c00 ld bc, $0020 ; one row ld a, 7 ; palette call ByteFill ; BG Map 0: ; Apply logo gradient: ; lines 3-4 ld hl, $9860 ; (0,3) ld bc, $0040 ; 2 rows ld a, 2 call ByteFill ; line 5 ld hl, $98a0 ; (0,5) ld bc, $0020 ; 1 row ld a, 3 call ByteFill ; line 6 ld hl, $98c0 ; (0,6) ld bc, $0020 ; 1 row ld a, 4 call ByteFill ; line 7 ld hl, $98e0 ; (0,7) ld bc, $0020 ; 1 row ld a, 5 call ByteFill ; lines 8-9 ld hl, $9900 ; (0,8) ld bc, $0040 ; 2 rows ld a, 6 call ByteFill ; 'CRYSTAL VERSION' ld hl, $9925 ; (5,9) ld bc, $000b ; length of version text ld a, 1 call ByteFill ; Suicune gfx ld hl, $9980 ; (0,12) ld bc, $00c0 ; the rest of the screen ld a, 8 call ByteFill ; Back to VRAM bank 0 ld a, $0 ld [$ff4f], a ; Decompress logo ld hl, TitleLogoGFX ld de, $8800 call $0b50 ; Decompress background crystal ld hl, TitleCrystalGFX ld de, $8000 call $0b50 ; Clear screen tiles ld hl, $9800 ld bc, $0800 ld a, $7f call ByteFill ; Draw Pokemon logo ld hl, $c4dc ; TileMap(0,3) ld bc, $0714 ; 20x7 ld d, $80 ld e, $14 call DrawGraphic ; Draw copyright text ld hl, $9c03 ; BG Map 1 (3,0) ld bc, $010d ; 13x1 ld d, $c ld e, $10 call DrawGraphic ; Initialize running Suicune? ld d, $0 call $6ed2 ; Initialize background crystal call $6f06 ; Save WRAM bank ld a, [$ff70] push af ; WRAM bank 5 ld a, 5 ld [$ff70], a ; Update palette colors ld hl, TitleScreenPalettes ld de, $d000 ld bc, $0080 call CopyBytes ld hl, TitleScreenPalettes ld de, $d080 ld bc, $0080 call CopyBytes ; Restore WRAM bank pop af ld [$ff70], a ; LY/SCX trickery starts here ; Save WRAM bank ld a, [$ff70] push af ; WRAM bank 5 ld a, 5 ld [$ff70], a ; Make alternating lines come in from opposite sides ; ( This part is actually totally pointless, you can't ; see anything until these values are overwritten! ) ld b, 40 ; alternate for 80 lines ld hl, $d100 ; LY buffer .loop ; $00 is the middle position ld [hl], $70 ; coming from the left inc hl ld [hl], $90 ; coming from the right inc hl dec b jr nz, .loop ; Make sure the rest of the buffer is empty ld hl, $d150 xor a ld bc, $0040 call ByteFill ; Let LCD Stat know we're messing around with SCX ld a, $43 ; ff43 ; SCX ld [$ffc6], a ; Restore WRAM bank pop af ld [$ff70], a ; Reset audio call ChannelsOff call $058a ; Set sprite size to 8x16 ld a, [$ff40] ; LCDC set 2, a ld [$ff40], a ; LCDC ; ld a, $70 ld [$ffcf], a ld a, $8 ld [$ffd0], a ld a, $7 ld [$ffd1], a ld a, $90 ld [$ffd2], a ld a, $1 ld [$ffe5], a ; Update BG Map 0 (bank 0) ld [$ffd4], a xor a ld [$d002], a ; Play starting sound effect call SFXChannelsOff ld de, $0065 call StartSFX ret ; 10eea7 INCBIN "baserom.gbc", $10eea7, $10ef46 - $10eea7 TitleSuicuneGFX: ; 10ef46 INCBIN "gfx/title/suicune.lz" ; 10f31b INCBIN "baserom.gbc", $10f31b, $10f326 - $10f31b TitleLogoGFX: ; 10f326 INCBIN "gfx/title/logo.lz" ; 10fced INCBIN "baserom.gbc", $10fced, $10fcee - $10fced TitleCrystalGFX: ; 10fcee INCBIN "gfx/title/crystal.lz" ; 10fed7 INCBIN "baserom.gbc", $10fed7, $10fede - $10fed7 TitleScreenPalettes: ; BG RGB 00, 00, 00 RGB 19, 00, 00 RGB 15, 08, 31 RGB 15, 08, 31 RGB 00, 00, 00 RGB 31, 31, 31 RGB 15, 16, 31 RGB 31, 01, 13 RGB 00, 00, 00 RGB 07, 07, 07 RGB 31, 31, 31 RGB 02, 03, 30 RGB 00, 00, 00 RGB 13, 13, 13 RGB 31, 31, 18 RGB 02, 03, 30 RGB 00, 00, 00 RGB 19, 19, 19 RGB 29, 28, 12 RGB 02, 03, 30 RGB 00, 00, 00 RGB 25, 25, 25 RGB 28, 25, 06 RGB 02, 03, 30 RGB 00, 00, 00 RGB 31, 31, 31 RGB 26, 21, 00 RGB 02, 03, 30 RGB 00, 00, 00 RGB 11, 11, 19 RGB 31, 31, 31 RGB 00, 00, 00 ; OBJ RGB 00, 00, 00 RGB 10, 00, 15 RGB 17, 05, 22 RGB 19, 09, 31 RGB 31, 31, 31 RGB 00, 00, 00 RGB 00, 00, 00 RGB 00, 00, 00 RGB 31, 31, 31 RGB 00, 00, 00 RGB 00, 00, 00 RGB 00, 00, 00 RGB 31, 31, 31 RGB 00, 00, 00 RGB 00, 00, 00 RGB 00, 00, 00 RGB 31, 31, 31 RGB 00, 00, 00 RGB 00, 00, 00 RGB 00, 00, 00 RGB 31, 31, 31 RGB 00, 00, 00 RGB 00, 00, 00 RGB 00, 00, 00 RGB 31, 31, 31 RGB 00, 00, 00 RGB 00, 00, 00 RGB 00, 00, 00 RGB 31, 31, 31 RGB 00, 00, 00 RGB 00, 00, 00 RGB 00, 00, 00 INCBIN "baserom.gbc", $10ff5e, $110000 - $10ff5e SECTION "bank44",DATA,BANK[$44] INCBIN "baserom.gbc",$110000,$4000 SECTION "bank45",DATA,BANK[$45] INCBIN "baserom.gbc",$114000,$117a7f - $114000 ; everything from here to the end of the bank is related to the ; Mobile Stadium option from the continue/newgame menu. ; XXX better function names Function117a7f: ; 0x117a7f ld a, [$ffaa] push af ld a, $1 ld [$ffaa], a call Function117a8d pop af ld [$ffaa], a ret ; 0x117a8d Function117a8d: ; 0x117a8d call Function117a94 call Function117acd ret ; 0x117a94 Function117a94: ; 0x117a94 xor a ld [$cf63], a ld [$cf64], a ld [$cf65], a ld [$cf66], a call $31f3 call $300b ld a, $5c ld hl, $6e78 rst FarCall ld a, $41 ld hl, $4000 rst FarCall ret ; 0x117ab4 Function117ab4: ; 0x117ab4 call $31f3 call $300b ld a, $5c ld hl, $6e78 rst FarCall ld a, $5c ld hl, $6eb9 rst FarCall ld a, $41 ld hl, $4061 rst FarCall ret ; 0x117acd Function117acd: ; 0x117acd call $0a57 ld a, [$cf63] bit 7, a jr nz, .asm_117ae2 ; 0x117ad5 $b call Function117ae9 ld a, $41 ld hl, $4000 rst FarCall jr Function117acd .asm_117ae2 call $31f3 call $300b ret Function117ae9: ; 0x117ae9 ld a, [$cf63] ld e, a ld d, $0 ld hl, Pointers117af8 add hl, de add hl, de ld a, [hli] ld h, [hl] ld l, a jp [hl] Pointers117af8: ; 0x117af8 dw Function117b06 dw Function117b14 dw Function117b28 dw Function117b31 dw Function117b4f dw Function117bb6 dw Function117c4a Function117b06: ld a, $5c ld hl, $6eb9 rst FarCall ld a, $10 ld [$cf64], a jp Function117cdd Function117b14: ld hl, $cf64 dec [hl] ret nz ld hl, Data117cbc call $1d35 call $1cbb call $1cfd jp Function117cdd Function117b28: ld hl, MobileStadiumEntryText call $1057 jp Function117cdd Function117b31: ld hl, Data117cc4 call $1d35 call $1cbb call $1cfd ld hl, $c550 ld de, YesNo117ccc call $1078 ld hl, $c54f ld a, "▶" ld [hl], a jp Function117cdd Function117b4f: ld a, [$ffa7] cp $2 jr z, .asm_117ba4 ; 0x117b53 $4f cp $1 jr z, .asm_117b8c ; 0x117b57 $33 cp $80 jr z, .asm_117b76 ; 0x117b5b $19 cp $40 ret nz ld a, [$cf64] and a ret z dec a ld [$cf64], a ld hl, $c54f ld a, "▶" ld [hl], a ld hl, $c577 ld a, " " ld [hl], a ret .asm_117b76 ld a, [$cf64] and a ret nz inc a ld [$cf64], a ld hl, $c54f ld a, " " ld [hl], a ld hl, $c577 ld a, "▶" ld [hl], a ret .asm_117b8c call $2009 ld a, [$cf64] and a jr nz, .asm_117ba4 ; 0x117b93 $f call $1c07 call $1c07 ld a, $41 ld hl, $4061 rst FarCall jp Function117cdd .asm_117ba4 call $1c07 call $1c07 ld a, $41 ld hl, $4061 rst FarCall ld a, $80 ld [$cf63], a ret Function117bb6: call Function117c89 ld a, $1 ld [$ffd4], a ld a, $46 ld hl, $4284 rst FarCall call $300b ld a, [$c300] and a jr z, .asm_117be7 ; 0x117bca $1b cp $a jr z, .asm_117be1 ; 0x117bce $11 .asm_117bd0 ld a, $2 ld [$c303], a ld a, $5f ld hl, $7555 rst FarCall ld a, $80 ld [$cf63], a ret .asm_117be1 ld a, $80 ld [$cf63], a ret .asm_117be7 ld a, [$ff70] push af ld a, $3 ld [$ff70], a ld a, [$cd89] and $1 jr nz, .asm_117c16 ; 0x117bf3 $21 ld a, [$d000] cp $fe jr nz, .asm_117c16 ; 0x117bfa $1a ld a, [$d001] cp $f jr nz, .asm_117c16 ; 0x117c01 $13 ld hl, $dfec ld de, $cd69 ld c, $10 .asm_117c0b ld a, [de] inc de cp [hl] jr nz, .asm_117c16 ; 0x117c0e $6 inc hl dec c jr nz, .asm_117c0b ; 0x117c12 $f7 jr .asm_117c20 ; 0x117c14 $a .asm_117c16 pop af ld [$ff70], a ld a, $d3 ld [$c300], a jr .asm_117bd0 ; 0x117c1e $b0 .asm_117c20 pop af ld [$ff70], a ld a, $5c ld hl, $6eb9 rst FarCall ld a, [$ff70] push af ld a, $3 ld [$ff70], a ld a, $7 call GetSRAMBank ld hl, $d002 ld de, $b000 ld bc, $1000 call CopyBytes call CloseSRAM pop af ld [$ff70], a jp Function117cdd Function117c4a: ld hl, Data117cbc call $1d35 call $1cbb call $1cfd ld a, $41 ld hl, $4061 rst FarCall ld hl, MobileStadiumSuccessText call $1057 ld a, [$ff70] push af ld a, $5 ld [$ff70], a ld hl, $d000 ld de, $0008 ld c, $8 .asm_117c71 push hl ld a, $ff ld [hli], a ld a, " " ld [hl], a pop hl add hl, de dec c jr nz, .asm_117c71 ; 0x117c7b $f4 call $04b6 pop af ld [$ff70], a ld a, $80 ld [$cf63], a ret Function117c89: ld a, $7 call GetSRAMBank ld l, $0 ld h, l ld de, $b000 ld bc, $0ffc .asm_117c97 push bc ld a, [de] inc de ld c, a ld b, $0 add hl, bc pop bc dec bc ld a, b or c jr nz, .asm_117c97 ; 0x117ca2 $f3 ld a, l ld [$cd83], a ld a, h ld [$cd84], a ld hl, $bfea ld de, $cd69 ld bc, $0010 call CopyBytes call CloseSRAM ret Data117cbc: ; 0x117cbc db $40,$0c,$00,$11,$13,$00,$00,$00 Data117cc4: ; 0x117cc4 db $40,$07,$0e,$0b,$13,$00,$00,$00 ; XXX what is this YesNo117ccc: ; 0x117ccc db "はい", $4e ; Yes db "いいえ@" ; No MobileStadiumEntryText: ; 0x117cd3 TX_FAR _MobileStadiumEntryText db "@" MobileStadiumSuccessText: ; 0x117cd8 TX_FAR _MobileStadiumSuccessText db "@" Function117cdd: ; 0x117cdd ld hl,$cf63 inc [hl] ret SECTION "bank46",DATA,BANK[$46] INCBIN "baserom.gbc",$118000,$4000 SECTION "bank47",DATA,BANK[$47] INCBIN "baserom.gbc",$11C000,$4000 SECTION "bank48",DATA,BANK[$48] PicPointers: INCLUDE "gfx/pics/pic_pointers.asm" ; Pics I HoOhFrontpic: INCBIN "gfx/pics/250/front.lz" MachampFrontpic: INCBIN "gfx/pics/068/front.lz" NinetalesFrontpic: INCBIN "gfx/pics/038/front.lz" FeraligatrFrontpic: INCBIN "gfx/pics/160/front.lz" NidokingFrontpic: INCBIN "gfx/pics/034/front.lz" RaikouFrontpic: INCBIN "gfx/pics/243/front.lz" LugiaFrontpic: INCBIN "gfx/pics/249/front.lz" ArticunoFrontpic: INCBIN "gfx/pics/144/front.lz" TaurosFrontpic: INCBIN "gfx/pics/128/front.lz" VenusaurFrontpic: INCBIN "gfx/pics/003/front.lz" EnteiFrontpic: INCBIN "gfx/pics/244/front.lz" SuicuneFrontpic: INCBIN "gfx/pics/245/front.lz" TyphlosionFrontpic: INCBIN "gfx/pics/157/front.lz" ; 123ffa SECTION "bank49",DATA,BANK[$49] UnownPicPointers: INCLUDE "gfx/pics/unown_pic_pointers.asm" ; Pics II BlastoiseFrontpic: INCBIN "gfx/pics/009/front.lz" RapidashFrontpic: INCBIN "gfx/pics/078/front.lz" MeganiumFrontpic: INCBIN "gfx/pics/154/front.lz" NidoqueenFrontpic: INCBIN "gfx/pics/031/front.lz" HitmonleeFrontpic: INCBIN "gfx/pics/106/front.lz" ScizorFrontpic: INCBIN "gfx/pics/212/front.lz" BeedrillFrontpic: INCBIN "gfx/pics/015/front.lz" ArcanineFrontpic: INCBIN "gfx/pics/059/front.lz" TyranitarFrontpic: INCBIN "gfx/pics/248/front.lz" MoltresFrontpic: INCBIN "gfx/pics/146/front.lz" ZapdosFrontpic: INCBIN "gfx/pics/145/front.lz" ArbokFrontpic: INCBIN "gfx/pics/024/front.lz" MewtwoFrontpic: INCBIN "gfx/pics/150/front.lz" FearowFrontpic: INCBIN "gfx/pics/022/front.lz" CharizardFrontpic: INCBIN "gfx/pics/006/front.lz" QuilavaFrontpic: INCBIN "gfx/pics/156/front.lz" ; 127ffe SECTION "bank4a",DATA,BANK[$4a] TrainerPicPointers: INCLUDE "gfx/pics/trainer_pic_pointers.asm" ; Pics III SteelixFrontpic: INCBIN "gfx/pics/208/front.lz" AlakazamFrontpic: INCBIN "gfx/pics/065/front.lz" GyaradosFrontpic: INCBIN "gfx/pics/130/front.lz" KangaskhanFrontpic: INCBIN "gfx/pics/115/front.lz" RhydonFrontpic: INCBIN "gfx/pics/112/front.lz" GolduckFrontpic: INCBIN "gfx/pics/055/front.lz" RhyhornFrontpic: INCBIN "gfx/pics/111/front.lz" PidgeotFrontpic: INCBIN "gfx/pics/018/front.lz" SlowbroFrontpic: INCBIN "gfx/pics/080/front.lz" ButterfreeFrontpic: INCBIN "gfx/pics/012/front.lz" WeezingFrontpic: INCBIN "gfx/pics/110/front.lz" CloysterFrontpic: INCBIN "gfx/pics/091/front.lz" SkarmoryFrontpic: INCBIN "gfx/pics/227/front.lz" DewgongFrontpic: INCBIN "gfx/pics/087/front.lz" VictreebelFrontpic: INCBIN "gfx/pics/071/front.lz" RaichuFrontpic: INCBIN "gfx/pics/026/front.lz" PrimeapeFrontpic: INCBIN "gfx/pics/057/front.lz" OmastarBackpic: INCBIN "gfx/pics/139/back.lz" ; 12bffe SECTION "bank4b",DATA,BANK[$4b] ; Pics IV DodrioFrontpic: INCBIN "gfx/pics/085/front.lz" SlowkingFrontpic: INCBIN "gfx/pics/199/front.lz" HitmontopFrontpic: INCBIN "gfx/pics/237/front.lz" OnixFrontpic: INCBIN "gfx/pics/095/front.lz" BlisseyFrontpic: INCBIN "gfx/pics/242/front.lz" MachokeFrontpic: INCBIN "gfx/pics/067/front.lz" DragoniteFrontpic: INCBIN "gfx/pics/149/front.lz" PoliwrathFrontpic: INCBIN "gfx/pics/062/front.lz" ScytherFrontpic: INCBIN "gfx/pics/123/front.lz" AerodactylFrontpic: INCBIN "gfx/pics/142/front.lz" SeakingFrontpic: INCBIN "gfx/pics/119/front.lz" MukFrontpic: INCBIN "gfx/pics/089/front.lz" CroconawFrontpic: INCBIN "gfx/pics/159/front.lz" HypnoFrontpic: INCBIN "gfx/pics/097/front.lz" NidorinoFrontpic: INCBIN "gfx/pics/033/front.lz" SandslashFrontpic: INCBIN "gfx/pics/028/front.lz" JolteonFrontpic: INCBIN "gfx/pics/135/front.lz" DonphanFrontpic: INCBIN "gfx/pics/232/front.lz" PinsirFrontpic: INCBIN "gfx/pics/127/front.lz" UnownEFrontpic: INCBIN "gfx/pics/201e/front.lz" ; 130000 SECTION "bank4C",DATA,BANK[$4C] ; Pics V GolbatFrontpic: INCBIN "gfx/pics/042/front.lz" KinglerFrontpic: INCBIN "gfx/pics/099/front.lz" ExeggcuteFrontpic: INCBIN "gfx/pics/102/front.lz" MagcargoFrontpic: INCBIN "gfx/pics/219/front.lz" PersianFrontpic: INCBIN "gfx/pics/053/front.lz" StantlerFrontpic: INCBIN "gfx/pics/234/front.lz" RaticateFrontpic: INCBIN "gfx/pics/020/front.lz" VenomothFrontpic: INCBIN "gfx/pics/049/front.lz" PolitoedFrontpic: INCBIN "gfx/pics/186/front.lz" ElectabuzzFrontpic: INCBIN "gfx/pics/125/front.lz" MantineFrontpic: INCBIN "gfx/pics/226/front.lz" LickitungFrontpic: INCBIN "gfx/pics/108/front.lz" KingdraFrontpic: INCBIN "gfx/pics/230/front.lz" CharmeleonFrontpic: INCBIN "gfx/pics/005/front.lz" KadabraFrontpic: INCBIN "gfx/pics/064/front.lz" ExeggutorFrontpic: INCBIN "gfx/pics/103/front.lz" GastlyFrontpic: INCBIN "gfx/pics/092/front.lz" AzumarillFrontpic: INCBIN "gfx/pics/184/front.lz" ParasectFrontpic: INCBIN "gfx/pics/047/front.lz" MrMimeFrontpic: INCBIN "gfx/pics/122/front.lz" HeracrossFrontpic: INCBIN "gfx/pics/214/front.lz" ; 133fff SECTION "bank4d",DATA,BANK[$4d] ; Pics VI AriadosFrontpic: INCBIN "gfx/pics/168/front.lz" NoctowlFrontpic: INCBIN "gfx/pics/164/front.lz" WartortleFrontpic: INCBIN "gfx/pics/008/front.lz" LaprasFrontpic: INCBIN "gfx/pics/131/front.lz" GolemFrontpic: INCBIN "gfx/pics/076/front.lz" PoliwhirlFrontpic: INCBIN "gfx/pics/061/front.lz" UrsaringFrontpic: INCBIN "gfx/pics/217/front.lz" HoundoomFrontpic: INCBIN "gfx/pics/229/front.lz" KabutopsFrontpic: INCBIN "gfx/pics/141/front.lz" AmpharosFrontpic: INCBIN "gfx/pics/181/front.lz" NidorinaFrontpic: INCBIN "gfx/pics/030/front.lz" FlareonFrontpic: INCBIN "gfx/pics/136/front.lz" FarfetchDFrontpic: INCBIN "gfx/pics/083/front.lz" VileplumeFrontpic: INCBIN "gfx/pics/045/front.lz" BayleefFrontpic: INCBIN "gfx/pics/153/front.lz" MagmarFrontpic: INCBIN "gfx/pics/126/front.lz" TentacruelFrontpic: INCBIN "gfx/pics/073/front.lz" ElekidFrontpic: INCBIN "gfx/pics/239/front.lz" JumpluffFrontpic: INCBIN "gfx/pics/189/front.lz" MarowakFrontpic: INCBIN "gfx/pics/105/front.lz" VulpixFrontpic: INCBIN "gfx/pics/037/front.lz" GligarFrontpic: INCBIN "gfx/pics/207/front.lz" DunsparceFrontpic: INCBIN "gfx/pics/206/front.lz" ; 137fff SECTION "bank4E",DATA,BANK[$4E] ; Pics VII VaporeonFrontpic: INCBIN "gfx/pics/134/front.lz" GirafarigFrontpic: INCBIN "gfx/pics/203/front.lz" DrowzeeFrontpic: INCBIN "gfx/pics/096/front.lz" SneaselFrontpic: INCBIN "gfx/pics/215/front.lz" BellossomFrontpic: INCBIN "gfx/pics/182/front.lz" SnorlaxFrontpic: INCBIN "gfx/pics/143/front.lz" WigglytuffFrontpic: INCBIN "gfx/pics/040/front.lz" YanmaFrontpic: INCBIN "gfx/pics/193/front.lz" SmeargleFrontpic: INCBIN "gfx/pics/235/front.lz" ClefableFrontpic: INCBIN "gfx/pics/036/front.lz" PonytaFrontpic: INCBIN "gfx/pics/077/front.lz" MurkrowFrontpic: INCBIN "gfx/pics/198/front.lz" GravelerFrontpic: INCBIN "gfx/pics/075/front.lz" StarmieFrontpic: INCBIN "gfx/pics/121/front.lz" PidgeottoFrontpic: INCBIN "gfx/pics/017/front.lz" LedybaFrontpic: INCBIN "gfx/pics/165/front.lz" GengarFrontpic: INCBIN "gfx/pics/094/front.lz" OmastarFrontpic: INCBIN "gfx/pics/139/front.lz" PiloswineFrontpic: INCBIN "gfx/pics/221/front.lz" DugtrioFrontpic: INCBIN "gfx/pics/051/front.lz" MagnetonFrontpic: INCBIN "gfx/pics/082/front.lz" DragonairFrontpic: INCBIN "gfx/pics/148/front.lz" ForretressFrontpic: INCBIN "gfx/pics/205/front.lz" TogeticFrontpic: INCBIN "gfx/pics/176/front.lz" KangaskhanBackpic: INCBIN "gfx/pics/115/back.lz" ; 13c000 SECTION "bank4f",DATA,BANK[$4f] ; Pics VIII SeelFrontpic: INCBIN "gfx/pics/086/front.lz" CrobatFrontpic: INCBIN "gfx/pics/169/front.lz" ChanseyFrontpic: INCBIN "gfx/pics/113/front.lz" TangelaFrontpic: INCBIN "gfx/pics/114/front.lz" SnubbullFrontpic: INCBIN "gfx/pics/209/front.lz" GranbullFrontpic: INCBIN "gfx/pics/210/front.lz" MiltankFrontpic: INCBIN "gfx/pics/241/front.lz" HaunterFrontpic: INCBIN "gfx/pics/093/front.lz" SunfloraFrontpic: INCBIN "gfx/pics/192/front.lz" UmbreonFrontpic: INCBIN "gfx/pics/197/front.lz" ChikoritaFrontpic: INCBIN "gfx/pics/152/front.lz" GoldeenFrontpic: INCBIN "gfx/pics/118/front.lz" EspeonFrontpic: INCBIN "gfx/pics/196/front.lz" XatuFrontpic: INCBIN "gfx/pics/178/front.lz" MewFrontpic: INCBIN "gfx/pics/151/front.lz" OctilleryFrontpic: INCBIN "gfx/pics/224/front.lz" JynxFrontpic: INCBIN "gfx/pics/124/front.lz" WobbuffetFrontpic: INCBIN "gfx/pics/202/front.lz" DelibirdFrontpic: INCBIN "gfx/pics/225/front.lz" LedianFrontpic: INCBIN "gfx/pics/166/front.lz" GloomFrontpic: INCBIN "gfx/pics/044/front.lz" FlaaffyFrontpic: INCBIN "gfx/pics/180/front.lz" IvysaurFrontpic: INCBIN "gfx/pics/002/front.lz" FurretFrontpic: INCBIN "gfx/pics/162/front.lz" CyndaquilFrontpic: INCBIN "gfx/pics/155/front.lz" HitmonchanFrontpic: INCBIN "gfx/pics/107/front.lz" QuagsireFrontpic: INCBIN "gfx/pics/195/front.lz" ; 13fff7 SECTION "bank50",DATA,BANK[$50] ; Pics IX EkansFrontpic: INCBIN "gfx/pics/023/front.lz" SudowoodoFrontpic: INCBIN "gfx/pics/185/front.lz" PikachuFrontpic: INCBIN "gfx/pics/025/front.lz" SeadraFrontpic: INCBIN "gfx/pics/117/front.lz" MagbyFrontpic: INCBIN "gfx/pics/240/front.lz" WeepinbellFrontpic: INCBIN "gfx/pics/070/front.lz" TotodileFrontpic: INCBIN "gfx/pics/158/front.lz" CorsolaFrontpic: INCBIN "gfx/pics/222/front.lz" FirebreatherPic: INCBIN "gfx/trainers/047.lz" MachopFrontpic: INCBIN "gfx/pics/066/front.lz" ChinchouFrontpic: INCBIN "gfx/pics/170/front.lz" RattataFrontpic: INCBIN "gfx/pics/019/front.lz" ChampionPic: INCBIN "gfx/trainers/015.lz" SpearowFrontpic: INCBIN "gfx/pics/021/front.lz" MagikarpFrontpic: INCBIN "gfx/pics/129/front.lz" CharmanderFrontpic: INCBIN "gfx/pics/004/front.lz" CuboneFrontpic: INCBIN "gfx/pics/104/front.lz" BlackbeltTPic: INCBIN "gfx/trainers/049.lz" BikerPic: INCBIN "gfx/trainers/044.lz" NidoranMFrontpic: INCBIN "gfx/pics/032/front.lz" PorygonFrontpic: INCBIN "gfx/pics/137/front.lz" BrunoPic: INCBIN "gfx/trainers/012.lz" GrimerFrontpic: INCBIN "gfx/pics/088/front.lz" StaryuFrontpic: INCBIN "gfx/pics/120/front.lz" HikerPic: INCBIN "gfx/trainers/043.lz" MeowthFrontpic: INCBIN "gfx/pics/052/front.lz" Porygon2Frontpic: INCBIN "gfx/pics/233/front.lz" SandshrewFrontpic: INCBIN "gfx/pics/027/front.lz" NidoranFFrontpic: INCBIN "gfx/pics/029/front.lz" PidgeyFrontpic: INCBIN "gfx/pics/016/front.lz" ParasectBackpic: INCBIN "gfx/pics/047/back.lz" ; 144000 SECTION "bank51",DATA,BANK[$51] ; Pics X MisdreavusFrontpic: INCBIN "gfx/pics/200/front.lz" HoundourFrontpic: INCBIN "gfx/pics/228/front.lz" MankeyFrontpic: INCBIN "gfx/pics/056/front.lz" CelebiFrontpic: INCBIN "gfx/pics/251/front.lz" MediumPic: INCBIN "gfx/trainers/056.lz" PinecoFrontpic: INCBIN "gfx/pics/204/front.lz" KrabbyFrontpic: INCBIN "gfx/pics/098/front.lz" FisherPic: INCBIN "gfx/trainers/036.lz" JigglypuffFrontpic: INCBIN "gfx/pics/039/front.lz" ParasFrontpic: INCBIN "gfx/pics/046/front.lz" NidokingBackpic: INCBIN "gfx/pics/034/back.lz" PokefanmPic: INCBIN "gfx/trainers/058.lz" BoarderPic: INCBIN "gfx/trainers/057.lz" PsyduckFrontpic: INCBIN "gfx/pics/054/front.lz" SquirtleFrontpic: INCBIN "gfx/pics/007/front.lz" MachampBackpic: INCBIN "gfx/pics/068/back.lz" KoffingFrontpic: INCBIN "gfx/pics/109/front.lz" VenonatFrontpic: INCBIN "gfx/pics/048/front.lz" ExeggutorBackpic: INCBIN "gfx/pics/103/back.lz" LanturnFrontpic: INCBIN "gfx/pics/171/front.lz" TyrogueFrontpic: INCBIN "gfx/pics/236/front.lz" SkiploomFrontpic: INCBIN "gfx/pics/188/front.lz" MareepFrontpic: INCBIN "gfx/pics/179/front.lz" ChuckPic: INCBIN "gfx/trainers/006.lz" EeveeFrontpic: INCBIN "gfx/pics/133/front.lz" ButterfreeBackpic: INCBIN "gfx/pics/012/back.lz" ZubatFrontpic: INCBIN "gfx/pics/041/front.lz" KimonoGirlPic: INCBIN "gfx/trainers/059.lz" AlakazamBackpic: INCBIN "gfx/pics/065/back.lz" AipomFrontpic: INCBIN "gfx/pics/190/front.lz" AbraFrontpic: INCBIN "gfx/pics/063/front.lz" HitmontopBackpic: INCBIN "gfx/pics/237/back.lz" CloysterBackpic: INCBIN "gfx/pics/091/back.lz" HoothootFrontpic: INCBIN "gfx/pics/163/front.lz" UnownFBackpic: INCBIN "gfx/pics/201f/back.lz" ; 148000 SECTION "bank52",DATA,BANK[$52] ; Pics XI DodrioBackpic: INCBIN "gfx/pics/085/back.lz" ClefairyFrontpic: INCBIN "gfx/pics/035/front.lz" SlugmaFrontpic: INCBIN "gfx/pics/218/front.lz" GrowlitheFrontpic: INCBIN "gfx/pics/058/front.lz" SlowpokeFrontpic: INCBIN "gfx/pics/079/front.lz" SmoochumFrontpic: INCBIN "gfx/pics/238/front.lz" JugglerPic: INCBIN "gfx/trainers/048.lz" MarillFrontpic: INCBIN "gfx/pics/183/front.lz" GuitaristPic: INCBIN "gfx/trainers/042.lz" PokefanfPic: INCBIN "gfx/trainers/061.lz" VenomothBackpic: INCBIN "gfx/pics/049/back.lz" ClairPic: INCBIN "gfx/trainers/007.lz" PokemaniacPic: INCBIN "gfx/trainers/029.lz" OmanyteFrontpic: INCBIN "gfx/pics/138/front.lz" SkierPic: INCBIN "gfx/trainers/032.lz" PupitarFrontpic: INCBIN "gfx/pics/247/front.lz" BellsproutFrontpic: INCBIN "gfx/pics/069/front.lz" ShellderFrontpic: INCBIN "gfx/pics/090/front.lz" TentacoolFrontpic: INCBIN "gfx/pics/072/front.lz" CleffaFrontpic: INCBIN "gfx/pics/173/front.lz" GyaradosBackpic: INCBIN "gfx/pics/130/back.lz" NinetalesBackpic: INCBIN "gfx/pics/038/back.lz" YanmaBackpic: INCBIN "gfx/pics/193/back.lz" PinsirBackpic: INCBIN "gfx/pics/127/back.lz" LassPic: INCBIN "gfx/trainers/024.lz" ClefableBackpic: INCBIN "gfx/pics/036/back.lz" DoduoFrontpic: INCBIN "gfx/pics/084/front.lz" FeraligatrBackpic: INCBIN "gfx/pics/160/back.lz" DratiniFrontpic: INCBIN "gfx/pics/147/front.lz" MagnetonBackpic: INCBIN "gfx/pics/082/back.lz" QwilfishFrontpic: INCBIN "gfx/pics/211/front.lz" SuicuneBackpic: INCBIN "gfx/pics/245/back.lz" SlowkingBackpic: INCBIN "gfx/pics/199/back.lz" ElekidBackpic: INCBIN "gfx/pics/239/back.lz" CelebiBackpic: INCBIN "gfx/pics/251/back.lz" KrabbyBackpic: INCBIN "gfx/pics/098/back.lz" BugCatcherPic: INCBIN "gfx/trainers/035.lz" SnorlaxBackpic: INCBIN "gfx/pics/143/back.lz" ; 14bffb SECTION "bank53",DATA,BANK[$53] ; Pics XII VenusaurBackpic: INCBIN "gfx/pics/003/back.lz" MoltresBackpic: INCBIN "gfx/pics/146/back.lz" SunfloraBackpic: INCBIN "gfx/pics/192/back.lz" PhanpyFrontpic: INCBIN "gfx/pics/231/front.lz" RhydonBackpic: INCBIN "gfx/pics/112/back.lz" LarvitarFrontpic: INCBIN "gfx/pics/246/front.lz" TyranitarBackpic: INCBIN "gfx/pics/248/back.lz" SandslashBackpic: INCBIN "gfx/pics/028/back.lz" SeadraBackpic: INCBIN "gfx/pics/117/back.lz" TwinsPic: INCBIN "gfx/trainers/060.lz" FarfetchDBackpic: INCBIN "gfx/pics/083/back.lz" NidoranMBackpic: INCBIN "gfx/pics/032/back.lz" LedybaBackpic: INCBIN "gfx/pics/165/back.lz" CyndaquilBackpic: INCBIN "gfx/pics/155/back.lz" BayleefBackpic: INCBIN "gfx/pics/153/back.lz" OddishFrontpic: INCBIN "gfx/pics/043/front.lz" RapidashBackpic: INCBIN "gfx/pics/078/back.lz" DoduoBackpic: INCBIN "gfx/pics/084/back.lz" HoppipFrontpic: INCBIN "gfx/pics/187/front.lz" MankeyBackpic: INCBIN "gfx/pics/056/back.lz" MagmarBackpic: INCBIN "gfx/pics/126/back.lz" HypnoBackpic: INCBIN "gfx/pics/097/back.lz" QuilavaBackpic: INCBIN "gfx/pics/156/back.lz" CroconawBackpic: INCBIN "gfx/pics/159/back.lz" SandshrewBackpic: INCBIN "gfx/pics/027/back.lz" SailorPic: INCBIN "gfx/trainers/039.lz" BeautyPic: INCBIN "gfx/trainers/028.lz" ShellderBackpic: INCBIN "gfx/pics/090/back.lz" ZubatBackpic: INCBIN "gfx/pics/041/back.lz" TeddiursaFrontpic: INCBIN "gfx/pics/216/front.lz" CuboneBackpic: INCBIN "gfx/pics/104/back.lz" GruntmPic: INCBIN "gfx/trainers/030.lz" GloomBackpic: INCBIN "gfx/pics/044/back.lz" MagcargoBackpic: INCBIN "gfx/pics/219/back.lz" KabutopsBackpic: INCBIN "gfx/pics/141/back.lz" BeedrillBackpic: INCBIN "gfx/pics/015/back.lz" ArcanineBackpic: INCBIN "gfx/pics/059/back.lz" FlareonBackpic: INCBIN "gfx/pics/136/back.lz" GoldeenBackpic: INCBIN "gfx/pics/118/back.lz" BulbasaurFrontpic: INCBIN "gfx/pics/001/front.lz" StarmieBackpic: INCBIN "gfx/pics/121/back.lz" ; 150000 SECTION "bank54",DATA,BANK[$54] ; Pics XIII OmanyteBackpic: INCBIN "gfx/pics/138/back.lz" PidgeyBackpic: INCBIN "gfx/pics/016/back.lz" ScientistPic: INCBIN "gfx/trainers/019.lz" QwilfishBackpic: INCBIN "gfx/pics/211/back.lz" GligarBackpic: INCBIN "gfx/pics/207/back.lz" TyphlosionBackpic: INCBIN "gfx/pics/157/back.lz" CharmeleonBackpic: INCBIN "gfx/pics/005/back.lz" NidoqueenBackpic: INCBIN "gfx/pics/031/back.lz" PichuFrontpic: INCBIN "gfx/pics/172/front.lz" ElectabuzzBackpic: INCBIN "gfx/pics/125/back.lz" LedianBackpic: INCBIN "gfx/pics/166/back.lz" PupitarBackpic: INCBIN "gfx/pics/247/back.lz" HeracrossBackpic: INCBIN "gfx/pics/214/back.lz" UnownDFrontpic: INCBIN "gfx/pics/201d/front.lz" MiltankBackpic: INCBIN "gfx/pics/241/back.lz" SteelixBackpic: INCBIN "gfx/pics/208/back.lz" PersianBackpic: INCBIN "gfx/pics/053/back.lz" LtSurgePic: INCBIN "gfx/trainers/018.lz" TeacherPic: INCBIN "gfx/trainers/033.lz" EggPic: INCBIN "gfx/pics/egg/front.lz" EeveeBackpic: INCBIN "gfx/pics/133/back.lz" ShuckleFrontpic: INCBIN "gfx/pics/213/front.lz" PonytaBackpic: INCBIN "gfx/pics/077/back.lz" RemoraidFrontpic: INCBIN "gfx/pics/223/front.lz" PoliwagFrontpic: INCBIN "gfx/pics/060/front.lz" OnixBackpic: INCBIN "gfx/pics/095/back.lz" KoffingBackpic: INCBIN "gfx/pics/109/back.lz" BirdKeeperPic: INCBIN "gfx/trainers/023.lz" FalknerPic: INCBIN "gfx/trainers/000.lz" KarenPic: INCBIN "gfx/trainers/013.lz" NidorinaBackpic: INCBIN "gfx/pics/030/back.lz" TentacruelBackpic: INCBIN "gfx/pics/073/back.lz" GrowlitheBackpic: INCBIN "gfx/pics/058/back.lz" KogaPic: INCBIN "gfx/trainers/014.lz" MachokeBackpic: INCBIN "gfx/pics/067/back.lz" RaichuBackpic: INCBIN "gfx/pics/026/back.lz" PoliwrathBackpic: INCBIN "gfx/pics/062/back.lz" SwimmermPic: INCBIN "gfx/trainers/037.lz" SunkernFrontpic: INCBIN "gfx/pics/191/front.lz" NidorinoBackpic: INCBIN "gfx/pics/033/back.lz" MysticalmanPic: INCBIN "gfx/trainers/066.lz" CooltrainerfPic: INCBIN "gfx/trainers/027.lz" ElectrodeFrontpic: INCBIN "gfx/pics/101/front.lz" ; 153fe3 SECTION "bank55",DATA,BANK[$55] ; Pics XIV SudowoodoBackpic: INCBIN "gfx/pics/185/back.lz" FlaaffyBackpic: INCBIN "gfx/pics/180/back.lz" SentretFrontpic: INCBIN "gfx/pics/161/front.lz" TogeticBackpic: INCBIN "gfx/pics/176/back.lz" BugsyPic: INCBIN "gfx/trainers/002.lz" MarowakBackpic: INCBIN "gfx/pics/105/back.lz" GeodudeBackpic: INCBIN "gfx/pics/074/back.lz" ScytherBackpic: INCBIN "gfx/pics/123/back.lz" VileplumeBackpic: INCBIN "gfx/pics/045/back.lz" HitmonchanBackpic: INCBIN "gfx/pics/107/back.lz" JumpluffBackpic: INCBIN "gfx/pics/189/back.lz" CooltrainermPic: INCBIN "gfx/trainers/026.lz" BlastoiseBackpic: INCBIN "gfx/pics/009/back.lz" MisdreavusBackpic: INCBIN "gfx/pics/200/back.lz" TyrogueBackpic: INCBIN "gfx/pics/236/back.lz" GeodudeFrontpic: INCBIN "gfx/pics/074/front.lz" ScizorBackpic: INCBIN "gfx/pics/212/back.lz" GirafarigBackpic: INCBIN "gfx/pics/203/back.lz" StantlerBackpic: INCBIN "gfx/pics/234/back.lz" SmeargleBackpic: INCBIN "gfx/pics/235/back.lz" CharizardBackpic: INCBIN "gfx/pics/006/back.lz" KadabraBackpic: INCBIN "gfx/pics/064/back.lz" PrimeapeBackpic: INCBIN "gfx/pics/057/back.lz" FurretBackpic: INCBIN "gfx/pics/162/back.lz" WartortleBackpic: INCBIN "gfx/pics/008/back.lz" ExeggcuteBackpic: INCBIN "gfx/pics/102/back.lz" IgglybuffFrontpic: INCBIN "gfx/pics/174/front.lz" RaticateBackpic: INCBIN "gfx/pics/020/back.lz" VulpixBackpic: INCBIN "gfx/pics/037/back.lz" EkansBackpic: INCBIN "gfx/pics/023/back.lz" SeakingBackpic: INCBIN "gfx/pics/119/back.lz" BurglarPic: INCBIN "gfx/trainers/046.lz" PsyduckBackpic: INCBIN "gfx/pics/054/back.lz" PikachuBackpic: INCBIN "gfx/pics/025/back.lz" KabutoFrontpic: INCBIN "gfx/pics/140/front.lz" MareepBackpic: INCBIN "gfx/pics/179/back.lz" RemoraidBackpic: INCBIN "gfx/pics/223/back.lz" DittoFrontpic: INCBIN "gfx/pics/132/front.lz" KingdraBackpic: INCBIN "gfx/pics/230/back.lz" CamperPic: INCBIN "gfx/trainers/053.lz" WooperFrontpic: INCBIN "gfx/pics/194/front.lz" ClefairyBackpic: INCBIN "gfx/pics/035/back.lz" VenonatBackpic: INCBIN "gfx/pics/048/back.lz" BellossomBackpic: INCBIN "gfx/pics/182/back.lz" Rival1Pic: INCBIN "gfx/trainers/008.lz" SwinubBackpic: INCBIN "gfx/pics/220/back.lz" ; 158000 SECTION "bank56",DATA,BANK[$56] ; Pics XV MewtwoBackpic: INCBIN "gfx/pics/150/back.lz" PokemonProfPic: INCBIN "gfx/trainers/009.lz" CalPic: INCBIN "gfx/trainers/011.lz" SwimmerfPic: INCBIN "gfx/trainers/038.lz" DiglettFrontpic: INCBIN "gfx/pics/050/front.lz" OfficerPic: INCBIN "gfx/trainers/064.lz" MukBackpic: INCBIN "gfx/pics/089/back.lz" DelibirdBackpic: INCBIN "gfx/pics/225/back.lz" SabrinaPic: INCBIN "gfx/trainers/034.lz" MagikarpBackpic: INCBIN "gfx/pics/129/back.lz" AriadosBackpic: INCBIN "gfx/pics/168/back.lz" SneaselBackpic: INCBIN "gfx/pics/215/back.lz" UmbreonBackpic: INCBIN "gfx/pics/197/back.lz" MurkrowBackpic: INCBIN "gfx/pics/198/back.lz" IvysaurBackpic: INCBIN "gfx/pics/002/back.lz" SlowbroBackpic: INCBIN "gfx/pics/080/back.lz" PsychicTPic: INCBIN "gfx/trainers/051.lz" GolduckBackpic: INCBIN "gfx/pics/055/back.lz" WeezingBackpic: INCBIN "gfx/pics/110/back.lz" EnteiBackpic: INCBIN "gfx/pics/244/back.lz" GruntfPic: INCBIN "gfx/trainers/065.lz" HorseaFrontpic: INCBIN "gfx/pics/116/front.lz" PidgeotBackpic: INCBIN "gfx/pics/018/back.lz" HoOhBackpic: INCBIN "gfx/pics/250/back.lz" PoliwhirlBackpic: INCBIN "gfx/pics/061/back.lz" MewBackpic: INCBIN "gfx/pics/151/back.lz" MachopBackpic: INCBIN "gfx/pics/066/back.lz" AbraBackpic: INCBIN "gfx/pics/063/back.lz" AerodactylBackpic: INCBIN "gfx/pics/142/back.lz" KakunaFrontpic: INCBIN "gfx/pics/014/front.lz" DugtrioBackpic: INCBIN "gfx/pics/051/back.lz" WeepinbellBackpic: INCBIN "gfx/pics/070/back.lz" NidoranFBackpic: INCBIN "gfx/pics/029/back.lz" GravelerBackpic: INCBIN "gfx/pics/075/back.lz" AipomBackpic: INCBIN "gfx/pics/190/back.lz" EspeonBackpic: INCBIN "gfx/pics/196/back.lz" WeedleFrontpic: INCBIN "gfx/pics/013/front.lz" TotodileBackpic: INCBIN "gfx/pics/158/back.lz" SnubbullBackpic: INCBIN "gfx/pics/209/back.lz" KinglerBackpic: INCBIN "gfx/pics/099/back.lz" GengarBackpic: INCBIN "gfx/pics/094/back.lz" RattataBackpic: INCBIN "gfx/pics/019/back.lz" YoungsterPic: INCBIN "gfx/trainers/021.lz" WillPic: INCBIN "gfx/trainers/010.lz" SchoolboyPic: INCBIN "gfx/trainers/022.lz" MagnemiteFrontpic: INCBIN "gfx/pics/081/front.lz" ErikaPic: INCBIN "gfx/trainers/020.lz" JaninePic: INCBIN "gfx/trainers/025.lz" MagnemiteBackpic: INCBIN "gfx/pics/081/back.lz" ; 15bffa SECTION "bank57",DATA,BANK[$57] ; Pics XVI HoothootBackpic: INCBIN "gfx/pics/163/back.lz" NoctowlBackpic: INCBIN "gfx/pics/164/back.lz" MortyPic: INCBIN "gfx/trainers/003.lz" SlugmaBackpic: INCBIN "gfx/pics/218/back.lz" KabutoBackpic: INCBIN "gfx/pics/140/back.lz" VictreebelBackpic: INCBIN "gfx/pics/071/back.lz" MeowthBackpic: INCBIN "gfx/pics/052/back.lz" MeganiumBackpic: INCBIN "gfx/pics/154/back.lz" PicnickerPic: INCBIN "gfx/trainers/052.lz" LickitungBackpic: INCBIN "gfx/pics/108/back.lz" TogepiFrontpic: INCBIN "gfx/pics/175/front.lz" SuperNerdPic: INCBIN "gfx/trainers/040.lz" HaunterBackpic: INCBIN "gfx/pics/093/back.lz" XatuBackpic: INCBIN "gfx/pics/178/back.lz" RedPic: INCBIN "gfx/trainers/062.lz" Porygon2Backpic: INCBIN "gfx/pics/233/back.lz" JasminePic: INCBIN "gfx/trainers/005.lz" PinecoBackpic: INCBIN "gfx/pics/204/back.lz" MetapodFrontpic: INCBIN "gfx/pics/011/front.lz" SeelBackpic: INCBIN "gfx/pics/086/back.lz" QuagsireBackpic: INCBIN "gfx/pics/195/back.lz" WhitneyPic: INCBIN "gfx/trainers/001.lz" JolteonBackpic: INCBIN "gfx/pics/135/back.lz" CaterpieFrontpic: INCBIN "gfx/pics/010/front.lz" HoppipBackpic: INCBIN "gfx/pics/187/back.lz" BluePic: INCBIN "gfx/trainers/063.lz" GranbullBackpic: INCBIN "gfx/pics/210/back.lz" GentlemanPic: INCBIN "gfx/trainers/031.lz" ExecutivemPic: INCBIN "gfx/trainers/050.lz" SpearowBackpic: INCBIN "gfx/pics/021/back.lz" SunkernBackpic: INCBIN "gfx/pics/191/back.lz" LaprasBackpic: INCBIN "gfx/pics/131/back.lz" MagbyBackpic: INCBIN "gfx/pics/240/back.lz" DragonairBackpic: INCBIN "gfx/pics/148/back.lz" ZapdosBackpic: INCBIN "gfx/pics/145/back.lz" ChikoritaBackpic: INCBIN "gfx/pics/152/back.lz" CorsolaBackpic: INCBIN "gfx/pics/222/back.lz" ChinchouBackpic: INCBIN "gfx/pics/170/back.lz" ChanseyBackpic: INCBIN "gfx/pics/113/back.lz" SkiploomBackpic: INCBIN "gfx/pics/188/back.lz" SpinarakFrontpic: INCBIN "gfx/pics/167/front.lz" Rival2Pic: INCBIN "gfx/trainers/041.lz" UnownWFrontpic: INCBIN "gfx/pics/201w/front.lz" CharmanderBackpic: INCBIN "gfx/pics/004/back.lz" RhyhornBackpic: INCBIN "gfx/pics/111/back.lz" UnownCFrontpic: INCBIN "gfx/pics/201c/front.lz" MistyPic: INCBIN "gfx/trainers/017.lz" BlainePic: INCBIN "gfx/trainers/045.lz" UnownZFrontpic: INCBIN "gfx/pics/201z/front.lz" SwinubFrontpic: INCBIN "gfx/pics/220/front.lz" LarvitarBackpic: INCBIN "gfx/pics/246/back.lz" PorygonBackpic: INCBIN "gfx/pics/137/back.lz" UnownHBackpic: INCBIN "gfx/pics/201h/back.lz" ; 15ffff SECTION "bank58",DATA,BANK[$58] ; Pics XVII ParasBackpic: INCBIN "gfx/pics/046/back.lz" VaporeonBackpic: INCBIN "gfx/pics/134/back.lz" TentacoolBackpic: INCBIN "gfx/pics/072/back.lz" ExecutivefPic: INCBIN "gfx/trainers/054.lz" BulbasaurBackpic: INCBIN "gfx/pics/001/back.lz" SmoochumBackpic: INCBIN "gfx/pics/238/back.lz" PichuBackpic: INCBIN "gfx/pics/172/back.lz" HoundoomBackpic: INCBIN "gfx/pics/229/back.lz" BellsproutBackpic: INCBIN "gfx/pics/069/back.lz" GrimerBackpic: INCBIN "gfx/pics/088/back.lz" LanturnBackpic: INCBIN "gfx/pics/171/back.lz" PidgeottoBackpic: INCBIN "gfx/pics/017/back.lz" StaryuBackpic: INCBIN "gfx/pics/120/back.lz" MrMimeBackpic: INCBIN "gfx/pics/122/back.lz" CaterpieBackpic: INCBIN "gfx/pics/010/back.lz" VoltorbFrontpic: INCBIN "gfx/pics/100/front.lz" LugiaBackpic: INCBIN "gfx/pics/249/back.lz" PrycePic: INCBIN "gfx/trainers/004.lz" BrockPic: INCBIN "gfx/trainers/016.lz" UnownGFrontpic: INCBIN "gfx/pics/201g/front.lz" ArbokBackpic: INCBIN "gfx/pics/024/back.lz" PolitoedBackpic: INCBIN "gfx/pics/186/back.lz" DragoniteBackpic: INCBIN "gfx/pics/149/back.lz" HitmonleeBackpic: INCBIN "gfx/pics/106/back.lz" NatuFrontpic: INCBIN "gfx/pics/177/front.lz" UrsaringBackpic: INCBIN "gfx/pics/217/back.lz" SagePic: INCBIN "gfx/trainers/055.lz" TeddiursaBackpic: INCBIN "gfx/pics/216/back.lz" PhanpyBackpic: INCBIN "gfx/pics/231/back.lz" UnownVFrontpic: INCBIN "gfx/pics/201v/front.lz" KakunaBackpic: INCBIN "gfx/pics/014/back.lz" WobbuffetBackpic: INCBIN "gfx/pics/202/back.lz" TogepiBackpic: INCBIN "gfx/pics/175/back.lz" CrobatBackpic: INCBIN "gfx/pics/169/back.lz" BlisseyBackpic: INCBIN "gfx/pics/242/back.lz" AmpharosBackpic: INCBIN "gfx/pics/181/back.lz" IgglybuffBackpic: INCBIN "gfx/pics/174/back.lz" AzumarillBackpic: INCBIN "gfx/pics/184/back.lz" OctilleryBackpic: INCBIN "gfx/pics/224/back.lz" UnownSFrontpic: INCBIN "gfx/pics/201s/front.lz" HorseaBackpic: INCBIN "gfx/pics/116/back.lz" SentretBackpic: INCBIN "gfx/pics/161/back.lz" UnownOFrontpic: INCBIN "gfx/pics/201o/front.lz" UnownTFrontpic: INCBIN "gfx/pics/201t/front.lz" WigglytuffBackpic: INCBIN "gfx/pics/040/back.lz" ArticunoBackpic: INCBIN "gfx/pics/144/back.lz" DittoBackpic: INCBIN "gfx/pics/132/back.lz" WeedleBackpic: INCBIN "gfx/pics/013/back.lz" UnownHFrontpic: INCBIN "gfx/pics/201h/front.lz" CleffaBackpic: INCBIN "gfx/pics/173/back.lz" DrowzeeBackpic: INCBIN "gfx/pics/096/back.lz" GastlyBackpic: INCBIN "gfx/pics/092/back.lz" FearowBackpic: INCBIN "gfx/pics/022/back.lz" MarillBackpic: INCBIN "gfx/pics/183/back.lz" DratiniBackpic: INCBIN "gfx/pics/147/back.lz" ElectrodeBackpic: INCBIN "gfx/pics/101/back.lz" SkarmoryBackpic: INCBIN "gfx/pics/227/back.lz" MetapodBackpic: INCBIN "gfx/pics/011/back.lz" JigglypuffBackpic: INCBIN "gfx/pics/039/back.lz" OddishBackpic: INCBIN "gfx/pics/043/back.lz" UnownDBackpic: INCBIN "gfx/pics/201d/back.lz" ; 163ffc SECTION "bank59",DATA,BANK[$59] ; Pics XVIII SpinarakBackpic: INCBIN "gfx/pics/167/back.lz" RaikouBackpic: INCBIN "gfx/pics/243/back.lz" UnownKFrontpic: INCBIN "gfx/pics/201k/front.lz" HoundourBackpic: INCBIN "gfx/pics/228/back.lz" PoliwagBackpic: INCBIN "gfx/pics/060/back.lz" SquirtleBackpic: INCBIN "gfx/pics/007/back.lz" ShuckleBackpic: INCBIN "gfx/pics/213/back.lz" DewgongBackpic: INCBIN "gfx/pics/087/back.lz" UnownBFrontpic: INCBIN "gfx/pics/201b/front.lz" SlowpokeBackpic: INCBIN "gfx/pics/079/back.lz" DunsparceBackpic: INCBIN "gfx/pics/206/back.lz" DonphanBackpic: INCBIN "gfx/pics/232/back.lz" WooperBackpic: INCBIN "gfx/pics/194/back.lz" TaurosBackpic: INCBIN "gfx/pics/128/back.lz" UnownXFrontpic: INCBIN "gfx/pics/201x/front.lz" UnownNFrontpic: INCBIN "gfx/pics/201n/front.lz" TangelaBackpic: INCBIN "gfx/pics/114/back.lz" VoltorbBackpic: INCBIN "gfx/pics/100/back.lz" UnownJFrontpic: INCBIN "gfx/pics/201j/front.lz" MantineBackpic: INCBIN "gfx/pics/226/back.lz" UnownLFrontpic: INCBIN "gfx/pics/201l/front.lz" PiloswineBackpic: INCBIN "gfx/pics/221/back.lz" UnownMFrontpic: INCBIN "gfx/pics/201m/front.lz" UnownFFrontpic: INCBIN "gfx/pics/201f/front.lz" NatuBackpic: INCBIN "gfx/pics/177/back.lz" UnownAFrontpic: INCBIN "gfx/pics/201a/front.lz" GolemBackpic: INCBIN "gfx/pics/076/back.lz" UnownUFrontpic: INCBIN "gfx/pics/201u/front.lz" DiglettBackpic: INCBIN "gfx/pics/050/back.lz" UnownQFrontpic: INCBIN "gfx/pics/201q/front.lz" UnownPFrontpic: INCBIN "gfx/pics/201p/front.lz" UnownCBackpic: INCBIN "gfx/pics/201c/back.lz" JynxBackpic: INCBIN "gfx/pics/124/back.lz" GolbatBackpic: INCBIN "gfx/pics/042/back.lz" UnownYFrontpic: INCBIN "gfx/pics/201y/front.lz" UnownGBackpic: INCBIN "gfx/pics/201g/back.lz" UnownIFrontpic: INCBIN "gfx/pics/201i/front.lz" UnownVBackpic: INCBIN "gfx/pics/201v/back.lz" ForretressBackpic: INCBIN "gfx/pics/205/back.lz" UnownSBackpic: INCBIN "gfx/pics/201s/back.lz" UnownRFrontpic: INCBIN "gfx/pics/201r/front.lz" UnownEBackpic: INCBIN "gfx/pics/201e/back.lz" UnownJBackpic: INCBIN "gfx/pics/201j/back.lz" UnownBBackpic: INCBIN "gfx/pics/201b/back.lz" UnownOBackpic: INCBIN "gfx/pics/201o/back.lz" UnownZBackpic: INCBIN "gfx/pics/201z/back.lz" UnownWBackpic: INCBIN "gfx/pics/201w/back.lz" UnownNBackpic: INCBIN "gfx/pics/201n/back.lz" UnownABackpic: INCBIN "gfx/pics/201a/back.lz" UnownMBackpic: INCBIN "gfx/pics/201m/back.lz" UnownKBackpic: INCBIN "gfx/pics/201k/back.lz" UnownTBackpic: INCBIN "gfx/pics/201t/back.lz" UnownXBackpic: INCBIN "gfx/pics/201x/back.lz" UnownLBackpic: INCBIN "gfx/pics/201l/back.lz" UnownUBackpic: INCBIN "gfx/pics/201u/back.lz" UnownQBackpic: INCBIN "gfx/pics/201q/back.lz" UnownYBackpic: INCBIN "gfx/pics/201y/back.lz" UnownPBackpic: INCBIN "gfx/pics/201p/back.lz" UnownIBackpic: INCBIN "gfx/pics/201i/back.lz" UnownRBackpic: INCBIN "gfx/pics/201r/back.lz" ; 1669d3 SECTION "bank5A",DATA,BANK[$5A] ; This bank is identical to bank 59! ; It's also unreferenced, so it's a free bank INCBIN "gfx/pics/167/back.lz" INCBIN "gfx/pics/243/back.lz" INCBIN "gfx/pics/201k/front.lz" INCBIN "gfx/pics/228/back.lz" INCBIN "gfx/pics/060/back.lz" INCBIN "gfx/pics/007/back.lz" INCBIN "gfx/pics/213/back.lz" INCBIN "gfx/pics/087/back.lz" INCBIN "gfx/pics/201b/front.lz" INCBIN "gfx/pics/079/back.lz" INCBIN "gfx/pics/206/back.lz" INCBIN "gfx/pics/232/back.lz" INCBIN "gfx/pics/194/back.lz" INCBIN "gfx/pics/128/back.lz" INCBIN "gfx/pics/201x/front.lz" INCBIN "gfx/pics/201n/front.lz" INCBIN "gfx/pics/114/back.lz" INCBIN "gfx/pics/100/back.lz" INCBIN "gfx/pics/201j/front.lz" INCBIN "gfx/pics/226/back.lz" INCBIN "gfx/pics/201l/front.lz" INCBIN "gfx/pics/221/back.lz" INCBIN "gfx/pics/201m/front.lz" INCBIN "gfx/pics/201f/front.lz" INCBIN "gfx/pics/177/back.lz" INCBIN "gfx/pics/201a/front.lz" INCBIN "gfx/pics/076/back.lz" INCBIN "gfx/pics/201u/front.lz" INCBIN "gfx/pics/050/back.lz" INCBIN "gfx/pics/201q/front.lz" INCBIN "gfx/pics/201p/front.lz" INCBIN "gfx/pics/201c/back.lz" INCBIN "gfx/pics/124/back.lz" INCBIN "gfx/pics/042/back.lz" INCBIN "gfx/pics/201y/front.lz" INCBIN "gfx/pics/201g/back.lz" INCBIN "gfx/pics/201i/front.lz" INCBIN "gfx/pics/201v/back.lz" INCBIN "gfx/pics/205/back.lz" INCBIN "gfx/pics/201s/back.lz" INCBIN "gfx/pics/201r/front.lz" INCBIN "gfx/pics/201e/back.lz" INCBIN "gfx/pics/201j/back.lz" INCBIN "gfx/pics/201b/back.lz" INCBIN "gfx/pics/201o/back.lz" INCBIN "gfx/pics/201z/back.lz" INCBIN "gfx/pics/201w/back.lz" INCBIN "gfx/pics/201n/back.lz" INCBIN "gfx/pics/201a/back.lz" INCBIN "gfx/pics/201m/back.lz" INCBIN "gfx/pics/201k/back.lz" INCBIN "gfx/pics/201t/back.lz" INCBIN "gfx/pics/201x/back.lz" INCBIN "gfx/pics/201l/back.lz" INCBIN "gfx/pics/201u/back.lz" INCBIN "gfx/pics/201q/back.lz" INCBIN "gfx/pics/201y/back.lz" INCBIN "gfx/pics/201p/back.lz" INCBIN "gfx/pics/201i/back.lz" INCBIN "gfx/pics/201r/back.lz" SECTION "bank5B",DATA,BANK[$5B] INCBIN "baserom.gbc",$16C000,$4000 SECTION "bank5C",DATA,BANK[$5C] INCBIN "baserom.gbc",$170000,$4000 SECTION "bank5D",DATA,BANK[$5D] INCBIN "baserom.gbc",$174000,$4000 SECTION "bank5E",DATA,BANK[$5E] INCBIN "baserom.gbc", $178000, $1f ; Songs V Music_MobileAdapterMenu: INCLUDE "audio/music/mobileadaptermenu.asm" Music_BuenasPassword: INCLUDE "audio/music/buenaspassword.asm" Music_LookMysticalMan: INCLUDE "audio/music/lookmysticalman.asm" Music_CrystalOpening: INCLUDE "audio/music/crystalopening.asm" Music_BattleTowerTheme: INCLUDE "audio/music/battletowertheme.asm" Music_SuicuneBattle: INCLUDE "audio/music/suicunebattle.asm" Music_BattleTowerLobby: INCLUDE "audio/music/battletowerlobby.asm" Music_MobileCenter: INCLUDE "audio/music/mobilecenter.asm" INCBIN "baserom.gbc",$17982d, $1799ef - $17982d MobileAdapterGFX: INCBIN "gfx/misc/mobile_adapter.2bpp" INCBIN "baserom.gbc",$17a68f, $17b629 - $17a68f SECTION "bank5F",DATA,BANK[$5F] INCBIN "baserom.gbc",$17C000,$4000 SECTION "bank60",DATA,BANK[$60] ; Map Scripts XIII INCLUDE "maps/IndigoPlateauPokeCenter1F.asm" INCLUDE "maps/WillsRoom.asm" INCLUDE "maps/KogasRoom.asm" INCLUDE "maps/BrunosRoom.asm" INCLUDE "maps/KarensRoom.asm" INCLUDE "maps/LancesRoom.asm" INCLUDE "maps/HallOfFame.asm" SECTION "bank61",DATA,BANK[$61] ; Map Scripts XIV INCLUDE "maps/CeruleanCity.asm" INCLUDE "maps/SproutTower1F.asm" INCLUDE "maps/SproutTower2F.asm" INCLUDE "maps/SproutTower3F.asm" INCLUDE "maps/TinTower1F.asm" INCLUDE "maps/TinTower2F.asm" INCLUDE "maps/TinTower3F.asm" INCLUDE "maps/TinTower4F.asm" INCLUDE "maps/TinTower5F.asm" INCLUDE "maps/TinTower6F.asm" INCLUDE "maps/TinTower7F.asm" INCLUDE "maps/TinTower8F.asm" INCLUDE "maps/TinTower9F.asm" INCLUDE "maps/BurnedTower1F.asm" INCLUDE "maps/BurnedTowerB1F.asm" SECTION "bank62",DATA,BANK[$62] ; Map Scripts XV INCLUDE "maps/CeruleanGymBadgeSpeechHouse.asm" INCLUDE "maps/CeruleanPoliceStation.asm" INCLUDE "maps/CeruleanTradeSpeechHouse.asm" INCLUDE "maps/CeruleanPokeCenter1F.asm" INCLUDE "maps/CeruleanPokeCenter2FBeta.asm" INCLUDE "maps/CeruleanGym.asm" INCLUDE "maps/CeruleanMart.asm" INCLUDE "maps/Route10PokeCenter1F.asm" INCLUDE "maps/Route10PokeCenter2FBeta.asm" INCLUDE "maps/PowerPlant.asm" INCLUDE "maps/BillsHouse.asm" INCLUDE "maps/FightingDojo.asm" INCLUDE "maps/SaffronGym.asm" INCLUDE "maps/SaffronMart.asm" INCLUDE "maps/SaffronPokeCenter1F.asm" INCLUDE "maps/SaffronPokeCenter2FBeta.asm" INCLUDE "maps/MrPsychicsHouse.asm" INCLUDE "maps/SaffronTrainStation.asm" INCLUDE "maps/SilphCo1F.asm" INCLUDE "maps/CopycatsHouse1F.asm" INCLUDE "maps/CopycatsHouse2F.asm" INCLUDE "maps/Route5UndergroundEntrance.asm" INCLUDE "maps/Route5SaffronCityGate.asm" INCLUDE "maps/Route5CleanseTagSpeechHouse.asm" SECTION "bank63",DATA,BANK[$63] ; Map Scripts XVI INCLUDE "maps/PewterCity.asm" INCLUDE "maps/WhirlIslandNW.asm" INCLUDE "maps/WhirlIslandNE.asm" INCLUDE "maps/WhirlIslandSW.asm" INCLUDE "maps/WhirlIslandCave.asm" INCLUDE "maps/WhirlIslandSE.asm" INCLUDE "maps/WhirlIslandB1F.asm" INCLUDE "maps/WhirlIslandB2F.asm" INCLUDE "maps/WhirlIslandLugiaChamber.asm" INCLUDE "maps/SilverCaveRoom1.asm" INCLUDE "maps/SilverCaveRoom2.asm" INCLUDE "maps/SilverCaveRoom3.asm" INCLUDE "maps/SilverCaveItemRooms.asm" INCLUDE "maps/DarkCaveVioletEntrance.asm" INCLUDE "maps/DarkCaveBlackthornEntrance.asm" INCLUDE "maps/DragonsDen1F.asm" INCLUDE "maps/DragonsDenB1F.asm" INCLUDE "maps/DragonShrine.asm" INCLUDE "maps/TohjoFalls.asm" INCLUDE "maps/AzaleaPokeCenter1F.asm" INCLUDE "maps/CharcoalKiln.asm" INCLUDE "maps/AzaleaMart.asm" INCLUDE "maps/KurtsHouse.asm" INCLUDE "maps/AzaleaGym.asm" SECTION "bank64",DATA,BANK[$64] ; Map Scripts XVII INCLUDE "maps/MahoganyTown.asm" INCLUDE "maps/Route32.asm" INCLUDE "maps/VermilionHouseFishingSpeechHouse.asm" INCLUDE "maps/VermilionPokeCenter1F.asm" INCLUDE "maps/VermilionPokeCenter2FBeta.asm" INCLUDE "maps/PokemonFanClub.asm" INCLUDE "maps/VermilionMagnetTrainSpeechHouse.asm" INCLUDE "maps/VermilionMart.asm" INCLUDE "maps/VermilionHouseDiglettsCaveSpeechHouse.asm" INCLUDE "maps/VermilionGym.asm" INCLUDE "maps/Route6SaffronGate.asm" INCLUDE "maps/Route6UndergroundEntrance.asm" INCLUDE "maps/PokeCenter2F.asm" INCLUDE "maps/TradeCenter.asm" INCLUDE "maps/Colosseum.asm" INCLUDE "maps/TimeCapsule.asm" INCLUDE "maps/MobileTradeRoomMobile.asm" INCLUDE "maps/MobileBattleRoom.asm" SECTION "bank65",DATA,BANK[$65] ; Map Scripts XVIII INCLUDE "maps/Route36.asm" INCLUDE "maps/FuchsiaCity.asm" INCLUDE "maps/BlackthornGym1F.asm" INCLUDE "maps/BlackthornGym2F.asm" INCLUDE "maps/BlackthornDragonSpeechHouse.asm" INCLUDE "maps/BlackthornDodrioTradeHouse.asm" INCLUDE "maps/BlackthornMart.asm" INCLUDE "maps/BlackthornPokeCenter1F.asm" INCLUDE "maps/MoveDeletersHouse.asm" INCLUDE "maps/FuchsiaMart.asm" INCLUDE "maps/SafariZoneMainOffice.asm" INCLUDE "maps/FuchsiaGym.asm" INCLUDE "maps/FuchsiaBillSpeechHouse.asm" INCLUDE "maps/FuchsiaPokeCenter1F.asm" INCLUDE "maps/FuchsiaPokeCenter2FBeta.asm" INCLUDE "maps/SafariZoneWardensHome.asm" INCLUDE "maps/Route15FuchsiaGate.asm" INCLUDE "maps/CherrygroveMart.asm" INCLUDE "maps/CherrygrovePokeCenter1F.asm" INCLUDE "maps/CherrygroveGymSpeechHouse.asm" INCLUDE "maps/GuideGentsHouse.asm" INCLUDE "maps/CherrygroveEvolutionSpeechHouse.asm" INCLUDE "maps/Route30BerrySpeechHouse.asm" INCLUDE "maps/MrPokemonsHouse.asm" INCLUDE "maps/Route31VioletGate.asm" SECTION "bank66",DATA,BANK[$66] ; Map Scripts XIX INCLUDE "maps/AzaleaTown.asm" INCLUDE "maps/GoldenrodCity.asm" INCLUDE "maps/SaffronCity.asm" INCLUDE "maps/MahoganyRedGyaradosSpeechHouse.asm" INCLUDE "maps/MahoganyGym.asm" INCLUDE "maps/MahoganyPokeCenter1F.asm" INCLUDE "maps/Route42EcruteakGate.asm" INCLUDE "maps/LakeofRageHiddenPowerHouse.asm" INCLUDE "maps/LakeofRageMagikarpHouse.asm" INCLUDE "maps/Route43MahoganyGate.asm" INCLUDE "maps/Route43Gate.asm" INCLUDE "maps/RedsHouse1F.asm" INCLUDE "maps/RedsHouse2F.asm" INCLUDE "maps/BluesHouse.asm" INCLUDE "maps/OaksLab.asm" SECTION "bank67",DATA,BANK[$67] ; Map Scripts XX INCLUDE "maps/CherrygroveCity.asm" INCLUDE "maps/Route35.asm" INCLUDE "maps/Route43.asm" INCLUDE "maps/Route44.asm" INCLUDE "maps/Route45.asm" INCLUDE "maps/Route19.asm" INCLUDE "maps/Route25.asm" SECTION "bank68",DATA,BANK[$68] ; Map Scripts XXI INCLUDE "maps/CianwoodCity.asm" INCLUDE "maps/Route27.asm" INCLUDE "maps/Route29.asm" INCLUDE "maps/Route30.asm" INCLUDE "maps/Route38.asm" INCLUDE "maps/Route13.asm" INCLUDE "maps/PewterNidoranSpeechHouse.asm" INCLUDE "maps/PewterGym.asm" INCLUDE "maps/PewterMart.asm" INCLUDE "maps/PewterPokeCenter1F.asm" INCLUDE "maps/PewterPokeCEnter2FBeta.asm" INCLUDE "maps/PewterSnoozeSpeechHouse.asm" SECTION "bank69",DATA,BANK[$69] ; Map Scripts XXII INCLUDE "maps/EcruteakCity.asm" INCLUDE "maps/BlackthornCity.asm" INCLUDE "maps/Route26.asm" INCLUDE "maps/Route28.asm" INCLUDE "maps/Route31.asm" INCLUDE "maps/Route39.asm" INCLUDE "maps/Route40.asm" INCLUDE "maps/Route41.asm" INCLUDE "maps/Route12.asm" SECTION "bank6A",DATA,BANK[$6A] ; Map Scripts XXIII INCLUDE "maps/NewBarkTown.asm" INCLUDE "maps/VioletCity.asm" INCLUDE "maps/OlivineCity.asm" INCLUDE "maps/Route37.asm" INCLUDE "maps/Route42.asm" INCLUDE "maps/Route46.asm" INCLUDE "maps/ViridianCity.asm" INCLUDE "maps/CeladonCity.asm" INCLUDE "maps/Route15.asm" INCLUDE "maps/VermilionCity.asm" INCLUDE "maps/Route9.asm" INCLUDE "maps/CinnabarPokeCenter1F.asm" INCLUDE "maps/CinnabarPokeCenter2FBeta.asm" INCLUDE "maps/Route19FuchsiaGate.asm" INCLUDE "maps/SeafoamGym.asm" SECTION "bank6B",DATA,BANK[$6B] ; Map Scripts XXIV INCLUDE "maps/Route33.asm" INCLUDE "maps/Route2.asm" INCLUDE "maps/Route1.asm" INCLUDE "maps/PalletTown.asm" INCLUDE "maps/Route21.asm" INCLUDE "maps/CinnabarIsland.asm" INCLUDE "maps/Route20.asm" INCLUDE "maps/Route18.asm" INCLUDE "maps/Route17.asm" INCLUDE "maps/Route16.asm" INCLUDE "maps/Route7.asm" INCLUDE "maps/Route14.asm" INCLUDE "maps/LavenderTown.asm" INCLUDE "maps/Route6.asm" INCLUDE "maps/Route5.asm" INCLUDE "maps/Route24.asm" INCLUDE "maps/Route3.asm" INCLUDE "maps/Route4.asm" INCLUDE "maps/Route10South.asm" INCLUDE "maps/Route23.asm" INCLUDE "maps/SilverCavePokeCenter1F.asm" INCLUDE "maps/Route28FamousSpeechHouse.asm" SECTION "bank6C",DATA,BANK[$6C] UnknownText_0x1b0000: ; 0x1b0000 db $0, "Good morning!", $4f db "Welcome to our", $55 db "#MON CENTER.", $57 ; 0x1b002b UnknownText_0x1b002b: ; 0x1b002b db $0, "Hello!", $4f db "Welcome to our", $55 db "#MON CENTER.", $57 ; 0x1b004f UnknownText_0x1b004f: ; 0x1b004f db $0, "Good evening!", $4f db "You're out late.", $51 db "Welcome to our", $4f db "#MON CENTER.", $57 ; 0x1b008a UnknownText_0x1b008a: ; 0x1b008a db $0, "Good morning!", $51 db "This is the #-", $4f db "MON COMMUNICATION", $51 db "CENTER--or the", $4f db "#COM CENTER.", $57 ; 0x1b00d6 UnknownText_0x1b00d6: ; 0x1b00d6 db $0, "Hello!", $51 db "This is the #-", $4f db "MON COMMUNICATION", $51 db "CENTER--or the", $4f db "#COM CENTER.", $57 ; 0x1b011b UnknownText_0x1b011b: ; 0x1b011b db $0, "Good to see you", $4f db "working so late.", $51 db "This is the #-", $4f db "MON COMMUNICATION", $51 db "CENTER--or the", $4f db "#COM CENTER.", $57 ; 0x1b017a UnknownText_0x1b017a: ; 0x1b017a db $0, "We can heal your", $4f db "#MON to perfect", $55 db "health.", $51 db "Shall we heal your", $4f db "#MON?", $57 ; 0x1b01bd UnknownText_0x1b01bd: ; 0x1b01bd db $0, "OK, may I see your", $4f db "#MON?", $57 ; 0x1b01d7 UnknownText_0x1b01d7: ; 0x1b01d7 db $0, "Thank you for", $4f db "waiting.", $51 db "Your #MON are", $4f db "fully healed.", $57 ; 0x1b020b UnknownText_0x1b020b: ; 0x1b020b db $0, "We hope to see you", $4f db "again.", $57 ; 0x1b0226 UnknownText_0x1b0226: ; 0x1b0226 db $0, "We hope to see you", $4f db "again.", $57 ; 0x1b0241 UnknownText_0x1b0241: ; 0x1b0241 db $0, "Your #MON", $4f db "appear to be", $51 db "infected by tiny", $4f db "life forms.", $51 db "Your #MON are", $4f db "healthy and seem", $55 db "to be fine.", $51 db "But we can't tell", $4f db "you anything more", $51 db "at a #MON", $4f db "CENTER.", $57 ; 0x1b02d6 UnknownText_0x1b02d6: ; 0x1b02d6 db $0, "Your #MON", $4f db "appear to be", $51 db "infected by tiny", $4f db "life forms.", $51 db "Your #MON are", $4f db "healthy and seem", $55 db "to be fine.", $51 db "But we can't tell", $4f db "you anything more.", $57 ; 0x1b035a UnknownText_0x1b035a: ; 0x1b035a db $0, "It's full of", $4f db "difficult books.", $57 ; 0x1b0378 UnknownText_0x1b0378: ; 0x1b0378 db $0, "A whole collection", $4f db "of #MON picture", $55 db "books!", $57 ; 0x1b03a3 UnknownText_0x1b03a3: ; 0x1b03a3 db $0, "#MON magazines…", $4f db "#MON PAL,", $51 db "#MON HANDBOOK,", $4f db "#MON GRAPH…", $57 ; 0x1b03d9 UnknownText_0x1b03d9: ; 0x1b03d9 db $0, "TEAM ROCKET OATH", $51 db "Steal #MON for", $4f db "profit!", $51 db "Exploit #MON", $4f db "for profit!", $51 db "All #MON exist", $4f db "for the glory of", $55 db "TEAM ROCKET!", $57 ; 0x1b0448 UnknownText_0x1b0448: ; 0x1b0448 db $0, "What is this?", $51 db "Oh, it's an", $4f db "incense burner!", $57 ; 0x1b0472 UnknownText_0x1b0472: ; 0x1b0472 db $0, "Lots of #MON", $4f db "merchandise!", $57 ; 0x1b048d UnknownText_0x1b048d: ; 0x1b048d db $0, "It's the TOWN MAP.", $57 ; 0x1b04a0 UnknownText_0x1b04a0: ; 0x1b04a0 db $0, "My reflection!", $4f db "Lookin' good!", $57 ; 0x1b04be UnknownText_0x1b04be: ; 0x1b04be db $0, "It's a TV.", $57 ; 0x1b04c9 UnknownText_0x1b04c9: ; 0x1b04c9 db $0, "#MON JOURNAL", $4f db "HOME PAGE…", $51 db "It hasn't been", $4f db "updated…", $57 ; 0x1b04f9 UnknownText_0x1b04f9: ; 0x1b04f9 db $0, "#MON RADIO!", $51 db "Call in with your", $4f db "requests now!", $57 ; 0x1b0526 UnknownText_0x1b0526: ; 0x1b0526 db $0, "There's nothing in", $4f db "here…", $57 ; 0x1b053f UnknownText_0x1b053f: ; 0x1b053f db $0, "A #MON may be", $4f db "able to move this.", $57 ; 0x1b0561 UnknownText_0x1b0561: ; 0x1b0561 db $0, "Maybe a #MON", $4f db "can break this.", $57 ; 0x1b057f UnknownText_0x1b057f: ; 0x1b057f db $0, "Heal Your #MON!", $4f db "#MON CENTER", $57 ; 0x1b059c UnknownText_0x1b059c: ; 0x1b059c db $0, "For All Your", $4f db "#MON Needs", $51 db "#MON MART", $57 ; 0x1b05bf UnknownText_0x1b05bf: ; 0x1b05bf db $0, "We will now judge", $4f db "the #MON you've", $55 db "caught.", $51 db $56, $4f db $56, $51 db "We have chosen the", $4f db "winners!", $51 db "Are you ready for", $4f db "this?", $57 ; 0x1b0621 UnknownText_0x1b0621: ; 0x1b0621 db $0, $52, ", the No.@" text_from_ram $d099 db $0, $4f db "finisher, wins", $55 db "@" text_from_ram $d0ac db $0, "!", $57 ; 0x1b0648 UnknownText_0x1b0648: ; 0x1b0648 db $0, $52, " received", $4f db "@" text_from_ram $d0ac db $0, ".", $57 ; 0x1b065b UnknownText_0x1b065b: ; 0x1b065b db $0, "Please join us for", $4f db "the next Contest!", $57 ; 0x1b0681 UnknownText_0x1b0681: ; 0x1b0681 db $0, "Everyone else gets", $4f db "a BERRY as a con-", $55 db "solation prize!", $57 ; 0x1b06b7 UnknownText_0x1b06b7: ; 0x1b06b7 db $0, "We hope you do", $4f db "better next time.", $57 ; 0x1b06d9 UnknownText_0x1b06d9: ; 0x1b06d9 db $0, "We'll return the", $4f db "#MON we kept", $51 db "for you.", $4f db "Here you go!", $57 ; 0x1b070d UnknownText_0x1b070d: ; 0x1b070d db $0, "Your party's full,", $4f db "so the #MON was", $51 db "sent to your BOX", $4f db "in BILL's PC.", $57 ; 0x1b074e UnknownText_0x1b074e: ; 0x1b074e text_from_ram $d099 db $0, $4f db "#MON GYM", $57 ; 0x1b075c UnknownText_0x1b075c: ; 0x1b075c db $0, "LEADER: @" text_from_ram $d0ac db $0, $51 db "WINNING TRAINERS:", $4f db $52, $57 ; 0x1b077f UnknownText_0x1b077f: ; 0x1b077f db $0, "Welcome to the", $4f db "GAME CORNER.", $57 ; 0x1b079c UnknownText_0x1b079c: ; 0x1b079c db $0, "Do you need game", $4f db "coins?", $51 db "Oh, you don't have", $4f db "a COIN CASE for", $55 db "your coins.", $57 ; 0x1b07e3 UnknownText_0x1b07e3: ; 0x1b07e3 db $0, "Do you need some", $4f db "game coins?", $51 db "It costs ¥1000 for", $4f db "50 coins. Do you", $55 db "want some?", $57 ; 0x1b0830 UnknownText_0x1b0830: ; 0x1b0830 db $0, "Thank you!", $4f db "Here are 50 coins.", $57 ; 0x1b084f UnknownText_0x1b084f: ; 0x1b084f db $0, "Thank you! Here", $4f db "are 500 coins.", $57 ; 0x1b086f UnknownText_0x1b086f: ; 0x1b086f db $0, "You don't have", $4f db "enough money.", $57 ; 0x1b088c UnknownText_0x1b088c: ; 0x1b088c db $0, "Whoops! Your COIN", $4f db "CASE is full.", $57 ; 0x1b08ad UnknownText_0x1b08ad: ; 0x1b08ad db $0, "No coins for you?", $4f db "Come again!", $57 ; 0x1b08cc UnknownText_0x1b08cc: ; 0x1b08cc db $0, "Oh? Your PACK is", $4f db "full.", $51 db "We'll keep this", $4f db "for you today, so", $51 db "come back when you", $4f db "make room for it.", $57 ; 0x1b092a UnknownText_0x1b092a: ; 0x1b092a db $0, "Wow! You and your", $4f db "#MON are really", $55 db "close!", $57 ; 0x1b0954 UnknownText_0x1b0954: ; 0x1b0954 db $0, "#MON get more", $4f db "friendly if you", $51 db "spend time with", $4f db "them.", $57 ; 0x1b0989 UnknownText_0x1b0989: ; 0x1b0989 db $0, "You haven't tamed", $4f db "your #MON.", $51 db "If you aren't", $4f db "nice, it'll pout.", $57 ; 0x1b09c4 UnknownText_0x1b09c4: ; 0x1b09c4 db $0, $52, " registered", $4f db "@" text_from_ram $d099 db $0, "'s number.", $57 ; 0x1b09e1 UnknownText_0x1b09e1: ; 0x1b09e1 db $0, $52, " registered", $4f db "@" text_from_ram $d099 db $0, "'s number.", $57 ; 0x1b09fe UnknownText_0x1b09fe: ; 0x1b09fe db $0, "Your knowledge is", $4f db "impressive!", $51 db "I like that!", $51 db "Want to trade", $4f db "battle tips?", $51 db "I'll phone if I", $4f db "get good info.", $51 db "Would you tell me", $4f db "your number?", $57 ; 0x1b0a82 UnknownText_0x1b0a82: ; 0x1b0a82 db $0, "Want to trade", $4f db "battle tips?", $51 db "I'll phone if I", $4f db "get good info.", $51 db "Would you tell me", $4f db "your number?", $57 ; 0x1b0adb UnknownText_0x1b0adb: ; 0x1b0adb db $0, "I'll call you if I", $4f db "hear anything!", $57 ; 0x1b0afd UnknownText_0x1b0afd: ; 0x1b0afd db $0, "Oh, OK. Too bad…", $51 db "Well, if you ever", $4f db "want my number,", $55 db "come see me, OK?", $57 ; 0x1b0b42 UnknownText_0x1b0b42: ; 0x1b0b42 db $0, "Oh?", $4f db "Your phone's full.", $51 db "It can't register", $4f db "my number.", $57 ; 0x1b0b75 UnknownText_0x1b0b75: ; 0x1b0b75 db $0, "Hi, I was waiting", $4f db "for you to show!", $51 db "Let's get started", $4f db "right away!", $57 ; 0x1b0bb6 UnknownText_0x1b0bb6: ; 0x1b0bb6 db $0, "Your MARILL is so", $4f db "cute and adorable!", $51 db "You love #MON", $4f db "just like I do!", $51 db "Want to trade", $4f db "phone numbers?", $51 db "Let's chat! It'll", $4f db "be so much fun!", $57 ; 0x1b0c37 UnknownText_0x1b0c37: ; 0x1b0c37 db $0, "Your MARILL is so", $4f db "cute and adorable!", $51 db "We should chat, it", $4f db "will be fun.", $51 db "Can I have your", $4f db "phone number?", $57 ; 0x1b0c9b UnknownText_0x1b0c9b: ; 0x1b0c9b db $0, "To be honest, I", $4f db "want a MARILL.", $51 db "But I make do with", $4f db "my cute SNUBBULL.", $57 ; 0x1b0ce0 UnknownText_0x1b0ce0: ; 0x1b0ce0 db $0, "Oh… That's", $4f db "disappointing…", $51 db "Goodbye, MARILL…", $57 ; 0x1b0d0b UnknownText_0x1b0d0b: ; 0x1b0d0b db $0, "Oh? Your phone's", $4f db "memory is full.", $57 ; 0x1b0d2c UnknownText_0x1b0d2c: ; 0x1b0d2c db $0, "Oh? ", $52, "? ", $4f db "I waited here for", $51 db "you. I brought you", $4f db "a little gift.", $57 ; 0x1b0d69 UnknownText_0x1b0d69: ; 0x1b0d69 db $0, "Oh?", $4f db "You have no room.", $51 db "Please come back", $4f db "for it later.", $57 ; 0x1b0d9f UnknownText_0x1b0d9f: ; 0x1b0d9f db $0, "Cool! That's the", $4f db "first time I've", $55 db "lost in a while!", $51 db "Hey, give me your", $4f db "phone number.", $51 db "You'd be fun to", $4f db "battle, so I'll", $51 db "call you when I", $4f db "get stronger!", $57 ; 0x1b0e2c UnknownText_0x1b0e2c: ; 0x1b0e2c db $0, "Hey, give me your", $4f db "phone number.", $51 db "You'd be fun to", $4f db "battle, so I'll", $51 db "call you when I", $4f db "get stronger!", $57 ; 0x1b0e89 UnknownText_0x1b0e89: ; 0x1b0e89 db $0, "Hey, let's battle", $4f db "again!", $57 ; 0x1b0ea2 UnknownText_0x1b0ea2: ; 0x1b0ea2 db $0, "Looks like you're", $4f db "a wimp…", $57 ; 0x1b0ebc UnknownText_0x1b0ebc: ; 0x1b0ebc db $0, "Hey! Your phone's", $4f db "already full!", $57 ; 0x1b0edc UnknownText_0x1b0edc: ; 0x1b0edc db $0, "Hey! I'm tired of", $4f db "waiting for you!", $57 ; 0x1b0eff UnknownText_0x1b0eff: ; 0x1b0eff db $0, "Oh… Your PACK's", $4f db "full. I'll give it", $55 db "to you later.", $57 ; 0x1b0f2f UnknownText_0x1b0f2f: ; 0x1b0f2f db $0, "Man! You're as", $4f db "tough as ever!", $51 db "I've battled you", $4f db "over and over, but", $51 db $52, ", I haven't", $4f db "won once.", $51 db "I bought tons of", $4f db "items to toughen", $51 db "up my #MON, but", $4f db "to no avail…", $51 db "Items alone aren't", $4f db "the answer.", $51 db "That must be what", $4f db "it is…", $51 db "Here, take this,", $4f db $52, ".", $51 db "I won't be needing", $4f db "it anymore…", $57 ; 0x1b102e UnknownText_0x1b102e: ; 0x1b102e db $0, "Wow, you're tough.", $4f db "I haven't battled", $51 db "that seriously in", $4f db "a long time.", $51 db "Could I get your", $4f db "phone number?", $51 db "I'd like to battle", $4f db "again when I heal", $51 db "@" text_from_ram $d0ac db $0, " and the", $4f db "rest of my team.", $57 ; 0x1b10d3 UnknownText_0x1b10d3: ; 0x1b10d3 db $0, "Could I get your", $4f db "phone number?", $51 db "I'd like to battle", $4f db "again when I heal", $51 db "@" text_from_ram $d0ac db $0, " and the", $4f db "rest of my team.", $57 ; 0x1b1136 UnknownText_0x1b1136: ; 0x1b1136 db $0, "How should I beat", $4f db "you? I'm tormented", $51 db "by those thoughts", $4f db "all the time…", $57 ; 0x1b117b UnknownText_0x1b117b: ; 0x1b117b db $0, "OK… I understand…", $4f db "But if you change", $51 db "your mind, give me", $4f db "a shout anytime.", $57 ; 0x1b11c4 UnknownText_0x1b11c4: ; 0x1b11c4 db $0, "Your phone's", $4f db "memory is full.", $51 db "You can't register", $4f db "my number.", $57 ; 0x1b11fe UnknownText_0x1b11fe: ; 0x1b11fe db $0, "Hi! I've been", $4f db "waiting for you!", $51 db "This time, I'm", $4f db "going to win!", $57 ; 0x1b1239 UnknownText_0x1b1239: ; 0x1b1239 db $0, "It's been a while", $4f db "since I lost…", $51 db "You're very good", $4f db "at battling.", $51 db "We should battle", $4f db "again sometime.", $51 db "By challenging a", $4f db "tough trainer like", $51 db "you, I think I can", $4f db "get better too.", $51 db "So how about it?", $51 db "Would you give me", $4f db "your phone number?", $57 ; 0x1b1314 UnknownText_0x1b1314: ; 0x1b1314 db $0, "By challenging a", $4f db "tough trainer like", $51 db "you, I think I can", $4f db "get better too.", $51 db "So how about it?", $51 db "Would you give me", $4f db "your phone number?", $57 ; 0x1b1392 UnknownText_0x1b1392: ; 0x1b1392 db $0, "Let's battle again", $4f db "sometime!", $57 ; 0x1b13af UnknownText_0x1b13af: ; 0x1b13af db $0, "That's too bad…", $51 db "Let me know if you", $4f db "change your mind.", $57 ; 0x1b13e4 UnknownText_0x1b13e4: ; 0x1b13e4 db $0, "Oh no. Your phone", $4f db "is out of memory.", $57 ; 0x1b1409 UnknownText_0x1b1409: ; 0x1b1409 db $0, "You sure kept me", $4f db "waiting! Let's go!", $57 ; 0x1b142d UnknownText_0x1b142d: ; 0x1b142d db $0, "If my @" text_from_ram $d0ac db $0, $4f db "sees anything", $51 db "pretty, it goes", $4f db "and gets it.", $51 db "Do you like pretty", $4f db "things?", $51 db "I could share if", $4f db "it gets some more.", $51 db "What's your phone", $4f db "number? I'll call.", $51 db "Don't expect a", $4f db "whole lot, OK?", $57 ; 0x1b14e4 UnknownText_0x1b14e4: ; 0x1b14e4 db $0, "Do you like pretty", $4f db "things?", $51 db "I could share if", $4f db "FARFETCH'D goes", $55 db "and gets more.", $51 db "What's your phone", $4f db "number? I'll call.", $57 ; 0x1b1553 UnknownText_0x1b1553: ; 0x1b1553 db $0, "I'll call you as", $4f db "soon as I get", $55 db "something pretty.", $57 ; 0x1b1584 UnknownText_0x1b1584: ; 0x1b1584 db $0, "You sure? Well,", $4f db "tell me if you", $55 db "change your mind.", $57 ; 0x1b15b6 UnknownText_0x1b15b6: ; 0x1b15b6 db $0, "Huh? Your phone", $4f db "list is full.", $57 ; 0x1b15d5 UnknownText_0x1b15d5: ; 0x1b15d5 db $0, "Tweet! Tweeeet!", $51 db "Kept me waiting!", $4f db "Go, FARFETCH'D!", $57 ; 0x1b1607 UnknownText_0x1b1607: ; 0x1b1607 db $0, "Kept me waiting!", $4f db "Look, this is it!", $51 db "See? Isn't it some", $4f db "kind of pretty?", $57 ; 0x1b164d UnknownText_0x1b164d: ; 0x1b164d db $0, "Huh? You don't", $4f db "have anywhere to", $51 db "put this. Better", $4f db "come back for it.", $57 ; 0x1b1690 UnknownText_0x1b1690: ; 0x1b1690 db $0, "Not bad…", $4f db "It's something to", $51 db "beat me, even by", $4f db "an unlikely fluke…", $51 db "I like you! Give", $4f db "me your number!", $51 db "You can be my", $4f db "practice partner!", $57 ; 0x1b1710 UnknownText_0x1b1710: ; 0x1b1710 db $0, "Give me your phone", $4f db "number!", $51 db "You are going to", $4f db "be my practice", $55 db "partner!", $57 ; 0x1b1755 UnknownText_0x1b1755: ; 0x1b1755 db $0, "Don't be too proud", $4f db "about beating me!", $51 db "It was a fluke!", $57 ; 0x1b178a UnknownText_0x1b178a: ; 0x1b178a db $0, "I don't believe", $4f db "it! You're going", $55 db "to regret this!", $57 ; 0x1b17ba UnknownText_0x1b17ba: ; 0x1b17ba db $0, "What? Your phone", $4f db "list has no room!", $57 ; 0x1b17de UnknownText_0x1b17de: ; 0x1b17de db $0, "What took you?", $4f db "Start right away!", $57 ; 0x1b1800 UnknownText_0x1b1800: ; 0x1b1800 db $0, "Listen, can I get", $4f db "your phone number?", $51 db "I'll ring you for", $4f db "some battles.", $51 db "I'm a rookie too, ", $4f db "so I think it'd be", $55 db "a good motivator.", $57 ; 0x1b187b UnknownText_0x1b187b: ; 0x1b187b db $0, "Can I get your", $4f db "phone number?", $51 db "I don't want to", $4f db "lose against you!", $51 db "We have to battle", $4f db "again, OK?", $57 ; 0x1b18d7 UnknownText_0x1b18d7: ; 0x1b18d7 db $0, "I'll ring you", $4f db "whenever I get the", $55 db "urge to battle!", $57 ; 0x1b1908 UnknownText_0x1b1908: ; 0x1b1908 db $0, "Oh, all right…", $51 db "But I won't lose", $4f db "to you again!", $57 ; 0x1b1936 UnknownText_0x1b1936: ; 0x1b1936 db $0, "Huh, what? Your", $4f db "phone's full.", $57 ; 0x1b1954 UnknownText_0x1b1954: ; 0x1b1954 db $0, "I've been waiting!", $4f db "Let's battle now!", $57 ; 0x1b1978 UnknownText_0x1b1978: ; 0x1b1978 db $0, "Hey, wait! Your", $4f db "PACK is stuffed!", $51 db "Well, we'll leave", $4f db "it till next time.", $57 ; 0x1b19be UnknownText_0x1b19be: ; 0x1b19be db $0, "And yet another", $4f db "loss…", $51 db "No doubt about", $4f db "it--you're tough.", $51 db "Being beaten this", $4f db "often actually", $55 db "feels good now!", $51 db "Here, take this. ", $4f db "Use it to get even", $51 db "tougher. That will", $4f db "toughen me up too!", $57 ; 0x1b1a71 UnknownText_0x1b1a71: ; 0x1b1a71 db $0, "You're awesome!", $4f db "I like you!", $51 db "I look for #MON", $4f db "here every day.", $51 db "When I'm in the", $4f db "grass, I find all", $55 db "kinds of BERRIES.", $51 db "If you'd like,", $4f db "I'll share some.", $51 db "Could I get your", $4f db "phone number?", $57 ; 0x1b1b1d UnknownText_0x1b1b1d: ; 0x1b1b1d db $0, "When I'm in the", $4f db "grass, I find all", $55 db "kinds of BERRIES.", $51 db "If you'd like,", $4f db "I'll share some.", $51 db "Could I get your", $4f db "phone number?", $57 ; 0x1b1b8e UnknownText_0x1b1b8e: ; 0x1b1b8e db $0, "You'll hear from", $4f db "me as soon as I", $51 db "find anything that", $4f db "you might like.", $57 ; 0x1b1bd2 UnknownText_0x1b1bd2: ; 0x1b1bd2 db $0, "Oh well. Don't be", $4f db "shy if you want to", $55 db "get my number.", $57 ; 0x1b1c06 UnknownText_0x1b1c06: ; 0x1b1c06 db $0, "Your phone list", $4f db "has no room for my", $55 db "number.", $57 ; 0x1b1c32 UnknownText_0x1b1c32: ; 0x1b1c32 db $0, "I was waiting for", $4f db "you. Let's battle!", $57 ; 0x1b1c57 UnknownText_0x1b1c57: ; 0x1b1c57 db $0, "Good to see you!", $4f db "See? This is what", $51 db "I found.", $4f db "It's for you!", $57 ; 0x1b1c91 UnknownText_0x1b1c91: ; 0x1b1c91 db $0, "Oops, your PACK's", $4f db "full. Too bad.", $51 db "You should come", $4f db "back for it later.", $57 ; 0x1b1cd5 UnknownText_0x1b1cd5: ; 0x1b1cd5 db $0, "Don't young people", $4f db "fish anymore?", $51 db "I've seen rare", $4f db "#MON while I've", $55 db "been fishing…", $51 db "You young people", $4f db "like that, right?", $51 db "Want to trade", $4f db "phone numbers?", $51 db "I'll let you know", $4f db "if I see anything.", $57 ; 0x1b1d85 UnknownText_0x1b1d85: ; 0x1b1d85 db $0, "Hm? So you do want", $4f db "me to phone if I", $55 db "see rare #MON?", $57 ; 0x1b1db9 UnknownText_0x1b1db9: ; 0x1b1db9 db $0, "Yep, phone if I", $4f db "see rare #MON.", $51 db "Don't worry, I", $4f db "won't forget!", $57 ; 0x1b1df4 UnknownText_0x1b1df4: ; 0x1b1df4 db $0, "Oh…", $4f db "My own kids won't", $51 db "even give me their", $4f db "phone numbers…", $51 db "Is that how young", $4f db "people are today?", $57 ; 0x1b1e50 UnknownText_0x1b1e50: ; 0x1b1e50 db $0, "Your phone's", $4f db "memory is full.", $51 db "It seems that", $4f db "young people all", $55 db "have #GEAR.", $57 ; 0x1b1e98 UnknownText_0x1b1e98: ; 0x1b1e98 db $0, "Hey, kid!", $51 db "No losing for me", $4f db "this day!", $57 ; 0x1b1ebe UnknownText_0x1b1ebe: ; 0x1b1ebe db $0, "Oh? You're on a", $4f db "big journey to see", $55 db "the sights? Neat!", $51 db "Let's be friends!", $4f db "Can I have your", $55 db "phone number?", $51 db "I want to hear", $4f db "about everything", $55 db "you've seen!", $57 ; 0x1b1f4e UnknownText_0x1b1f4e: ; 0x1b1f4e db $0, "Let's be friends!", $4f db "Can I have your", $55 db "phone number?", $51 db "I want to hear", $4f db "about everything", $55 db "you've seen!", $57 ; 0x1b1faa UnknownText_0x1b1faa: ; 0x1b1faa db $0, "I'll telephone you", $4f db "if I hear anything", $55 db "interesting.", $57 ; 0x1b1fdd UnknownText_0x1b1fdd: ; 0x1b1fdd db $0, "Aww… You won't be", $4f db "my friend?", $57 ; 0x1b1ffa UnknownText_0x1b1ffa: ; 0x1b1ffa db $0, "Wait! Your phone", $4f db "list is filled up!", $57 ; 0x1b201f UnknownText_0x1b201f: ; 0x1b201f db $0, "You're late! Let's", $4f db "get started now!", $57 ; 0x1b2042 ; Map Scripts XXV INCLUDE "maps/SilverCaveOutside.asm" INCLUDE "maps/Route10North.asm" SECTION "bank6D",DATA,BANK[$6D] INCLUDE "text/phone/mom.tx" INCLUDE "text/phone/bill.tx" INCLUDE "text/phone/elm.tx" INCLUDE "text/phone/trainers1.tx" SECTION "bank6E",DATA,BANK[$6E] ; Pokedex entries II ; 065-128 INCLUDE "stats/pokedex/entries_2.asm" SECTION "bank6F",DATA,BANK[$6F] INCBIN "baserom.gbc",$1BC000,$4000 SECTION "bank70",DATA,BANK[$70] UnknownText_0x1c0000: ; 1c0000 db $0, "Oh, no picture?", $4f db "Come again, OK?", $57 ; 1c0021 UnknownText_0x1c0021: ; 1c0021 db $0, "An EGG? My talent", $4f db "is worth more…", $57 ; 1c0043 UnknownText_0x1c0043: ; 1c0043 db $0, "Hello, hello! I'm", $4f db "the NAME RATER.", $51 db "I rate the names", $4f db "of #MON.", $51 db "Would you like me", $4f db "to rate names?", $57 ; 1c00a0 UnknownText_0x1c00a0: ; 1c00a0 db $0, "Which #MON's", $4f db "nickname should I", $55 db "rate for you?", $58 ; 1c00cd UnknownText_0x1c00cd: ; 1c00cd db $0, "Hm… @" text_from_ram $d073 db $0, "…", $4f db "That's a fairly", $55 db "decent name.", $51 db "But, how about a", $4f db "slightly better", $55 db "nickname?", $51 db "Want me to give it", $4f db "a better name?", $57 ; 1c0142 UnknownText_0x1c0142: ; 1c0142 db $0, "All right. What", $4f db "name should we", $55 db "give it, then?", $58 ; 1c0171 UnknownText_0x1c0171: ; 1c0171 db $0, "That's a better", $4f db "name than before!", $51 db "Well done!", $57 ; 1c019e UnknownText_0x1c019e: ; 1c019e db $0, "OK, then. Come", $4f db "again sometime.", $57 ; 1c01be UnknownText_0x1c01be: ; 1c01be db $0, "Hm… @" text_from_ram $d073 db $0, "?", $4f db "What a great name!", $55 db "It's perfect.", $51 db "Treat @" text_from_ram $d073 db $0, $4f db "with loving care.", $57 ; 1c0208 UnknownText_0x1c0208: ; 1c0208 db $0, "Whoa… That's just", $4f db "an EGG.", $57 ; 1c0222 UnknownText_0x1c0222: ; 1c0222 db $0, "It might look the", $4f db "same as before,", $51 db "but this new name", $4f db "is much better!", $51 db "Well done!", $57 ; 1c0272 UnknownText_0x1c0272: ; 1c0272 db $0, "All right. This", $4f db "#MON is now", $55 db "named @" text_from_ram $d073 db $0, ".", $58 ; 1c029c UnknownText_0x1c029c: ; 1c029c text_from_ram $d073 db $0, " gained@" db "@" ; 1c02a9 UnknownText_0x1c02a9: ; 1c02a9 db $0, $4f db "a boosted", $55 db "@" deciram $d086, $24 db $0, " EXP. Points!", $58 ; 1c02c9 UnknownText_0x1c02c9: ; 1c02c9 db $0, $4f db "@" deciram $d086, $24 db $0, " EXP. Points!", $58 ; 1c02df UnknownText_0x1c02df: ; 1c02df db $0, "Go! @" db "@" ; 1c02e6 UnknownText_0x1c02e6: ; 1c02e6 db $0, "Do it! @" db "@" ; 1c02f0 UnknownText_0x1c02f0: ; 1c02f0 db $0, "Go for it,", $4f db "@" db "@" ; 1c02fe UnknownText_0x1c02fe: ; 1c02fe db $0, "Your foe's weak!", $4f db "Get'm, @" db "@" ; 1c0317 UnknownText_0x1c0317: ; 1c0317 text_from_ram $c621 db $0, "!", $57 ; 1c031d UnknownText_0x1c031d: ; 1c031d text_from_ram $c621 db $0, ",@" db "@" ; 1c0324 UnknownText_0x1c0324: ; 1c0324 db $0, " that's", $4f db "enough! Come back!@" db "@" ; 1c0340 UnknownText_0x1c0340: ; 1c0340 db $0, " OK!", $4f db "Come back!@" db "@" ; 1c0352 UnknownText_0x1c0352: ; 1c0352 db $0, " good!", $4f db "Come back!@" db "@" ; 1c0366 UnknownText_0x1c0366: ; 1c0366 db $0, " come", $4f db "back!", $57 ; 1c0373 UnknownText_0x1c0373: ; 1c0373 db $0, "Booted up a TM.", $58 ; 1c0384 UnknownText_0x1c0384: ; 1c0384 db $0, "Booted up an HM.", $58 ; 1c0396 UnknownText_0x1c0396: ; 1c0396 db $0, "It contained", $4f db "@" text_from_ram $d086 db $0, ".", $51 db "Teach @" text_from_ram $d086 db $0, $4f db "to a #MON?", $57 ; 1c03c2 UnknownText_0x1c03c2: ; 1c03c2 text_from_ram $d086 db $0, " is", $4f db "not compatible", $55 db "with @" text_from_ram $d073 db $0, ".", $51 db "It can't learn", $4f db "@" text_from_ram $d086 db $0, ".", $58 ; 1c03fa UnknownText_0x1c03fa: ; 1c03fa db $0, "You have no room", $4f db "for any more", $55 db "@" text_from_ram $d073 db $0, "S.", $58 ; 1c0421 UnknownText_0x1c0421: ; 1c0421 db $0, "You received", $4f db "@" text_from_ram $d073 db $0, "!", $58 ; 1c0436 UnknownText_0x1c0436: ; 1c0436 db $0, "The link has been", $4f db "cancelled.", $58 ; 1c0454 UnknownText_0x1c0454: ; 1c0454 db $0, "Communication", $4f db "error.", $58 ; 1c046a UnknownText_0x1c046a: ; 1c046a db $0, "Must retrieve GIFT", $4f db "at #MON CENTER.", $58 ; 1c048e UnknownText_0x1c048e: ; 1c048e db $0, "Your friend isn't", $4f db "ready.", $58 ; 1c04a7 UnknownText_0x1c04a7: ; 1c04a7 db $0, "Sorry--only five", $4f db "GIFTS a day.", $58 ; 1c04c6 UnknownText_0x1c04c6: ; 1c04c6 db $0, "Sorry. One GIFT", $4f db "a day per person.", $58 ; 1c04e9 UnknownText_0x1c04e9: ; 1c04e9 text_from_ram $c903 db $0, " sent", $4f db "@" text_from_ram $d073 db $0, ".", $58 ; 1c04fa UnknownText_0x1c04fa: ; 1c04fa text_from_ram $c903 db $0, " sent", $4f db "@" text_from_ram $d073 db $0, $55 db "to @" text_from_ram $c953 db $0, "'s home.", $58 ; 1c051a UnknownText_0x1c051a: ; 1c051a db $0, "Received", $4f db "@" text_from_ram $c850 db $0, "'s CARD.", $58 ; 1c0531 UnknownText_0x1c0531: ; 1c0531 text_from_ram $c850 db $0, "'s CARD was", $4f db "listed as no.@" deciram $d265, $12 db $0, ".", $58 ; 1c0555 UnknownText_0x1c0555: ; 1c0555 db $0, "The CARD was not", $4f db "registered.", $58 ; 1c0573 UnknownText_0x1c0573: ; 1c0573 db $0, "The link has been", $4f db "cancelled.", $58 ; 1c0591 UnknownText_0x1c0591: ; 1c0591 db $0, "Communication", $4f db "error.", $58 ; 1c05a7 _BadgeRequiredText: ; 1c05a7 db $0, "Sorry! A new BADGE", $4f db "is required.", $58 ; 1c05c8 UnknownText_0x1c05c8: ; 1c05c8 db $0, "Can't use that", $4f db "here.", $58 ; 1c05dd UnknownText_0x1c05dd: ; 1c05dd text_from_ram $d086 db $0, " used", $4f db "CUT!", $58 ; 1c05ec UnknownText_0x1c05ec: ; 1c05ec db $0, "There's nothing to", $4f db "CUT here.", $58 ; 1c0609 UnknownText_0x1c0609: ; 1c0609 db $0, "A blinding FLASH", $4f db "lights the area!@" text_waitbutton db "@" ; 1c062e UnknownText_0x1c062e: ; 1c062e db "@" ; 1c062f _UsedSurfText: ; 1c062f text_from_ram $d086 db $0, " used", $4f db "SURF!", $57 ; 1c063f _CantSurfText: ; 1c063f db $0, "You can't SURF", $4f db "here.", $58 ; 1c0654 _AlreadySurfingText: ; 1c0654 db $0, "You're already", $4f db "SURFING.", $58 ; 1c066c _AskSurfText: ; 1c066c db $0, "The water is calm.", $4f db "Want to SURF?", $57 ; 1c068e UnknownText_0x1c068e: ; 1c068e text_from_ram $d086 db $0, " used", $4f db "WATERFALL!", $57 ; 1c06a3 UnknownText_0x1c06a3: ; 1c06a3 db $0, "Wow, it's a huge", $4f db "waterfall.", $57 ; 1c06bf UnknownText_0x1c06bf: ; 1c06bf db $0, "Do you want to use", $4f db "WATERFALL?", $57 ; 1c06de UnknownText_0x1c06de: ; 1c06de text_from_ram $d086 db $0, " used", $4f db "DIG!", $57 ; 1c06ed UnknownText_0x1c06ed: ; 1c06ed db $0, $52, " used an", $4f db "ESCAPE ROPE.", $57 ; 1c0705 UnknownText_0x1c0705: ; 1c0705 db $0, "Can't use that", $4f db "here.", $57 ; 1c071a UnknownText_0x1c071a: ; 1c071a db $0, "Return to the last", $4f db "#MON CENTER.", $57 ; 1c073b UnknownText_0x1c073b: ; 1c073b db $0, "Can't use that", $4f db "here.", $51 db $57 ; 1c0751 UnknownText_0x1c0751: ; 1c0751 db $0, "A #MON is using", $4f db "STRENGTH already.", $58 ; 1c0774 UnknownText_0x1c0774: ; 1c0774 text_from_ram $d086 db $0, " used", $4f db "STRENGTH!", $57 ; 1c0788 UnknownText_0x1c0788: ; 1c0788 text_from_ram $d073 db $0, " can", $4f db "move boulders.", $58 ; 1c07a0 UnknownText_0x1c07a0: ; 1c07a0 db $0, "A #MON may be", $4f db "able to move this.", $51 db "Want to use", $4f db "STRENGTH?", $57 ; 1c07d8 UnknownText_0x1c07d8: ; 1c07d8 db $0, "Boulders may now", $4f db "be moved!", $57 ; 1c07f4 UnknownText_0x1c07f4: ; 1c07f4 db $0, "A #MON may be", $4f db "able to move this.", $57 ; 1c0816 UnknownText_0x1c0816: ; 1c0816 text_from_ram $d086 db $0, " used", $4f db "WHIRLPOOL!", $58 ; 1c082b UnknownText_0x1c082b: ; 1c082b db $0, "It's a vicious", $4f db "whirlpool!", $51 db "A #MON may be", $4f db "able to pass it.", $57 ; 1c0864 UnknownText_0x1c0864: ; 1c0864 db $0, "A whirlpool is in", $4f db "the way.", $51 db "Want to use", $4f db "WHIRLPOOL?", $57 ; 1c0897 UnknownText_0x1c0897: ; 1c0897 text_from_ram $d086 db $0, " did a", $4f db "HEADBUTT!", $58 ; 1c08ac UnknownText_0x1c08ac: ; 1c08ac db $0, "Nope. Nothing…", $57 ; 1c08bc UnknownText_0x1c08bc: ; 1c08bc db $0, "A #MON could be", $4f db "in this tree.", $51 db "Want to HEADBUTT", $4f db "it?", $57 ; 1c08f0 UnknownText_0x1c08f0: ; 1c08f0 text_from_ram $d086 db $0, " used", $4f db "ROCK SMASH!", $58 ; 1c0906 UnknownText_0x1c0906: ; 1c0906 db $0, "Maybe a #MON", $4f db "can break this.", $57 ; 1c0924 UnknownText_0x1c0924: ; 1c0924 db $0, "This rock looks", $4f db "breakable.", $51 db "Want to use ROCK", $4f db "SMASH?", $57 ; 1c0958 UnknownText_0x1c0958: ; 1c0958 db $0, "Oh!", $4f db "A bite!", $58 ; 1c0965 UnknownText_0x1c0965: ; 1c0965 db $0, "Not even a nibble!", $58 ; 1c0979 UnknownText_0x1c0979: ; 1c0979 db $0, "Looks like there's", $4f db "nothing here.", $58 ; 1c099a UnknownText_0x1c099a: ; 1c099a db $0, "You can't get off", $4f db "here!", $57 ; 1c09b2 UnknownText_0x1c09b2: ; 1c09b2 db $0, $52, " got on the", $4f db "@" text_from_ram $d086 db $0, ".", $57 ; 1c09c7 UnknownText_0x1c09c7: ; 1c09c7 db $0, $52, " got off", $4f db "the @" text_from_ram $d086 db $0, ".", $57 ; 1c09dd UnknownText_0x1c09dd: ; 1c09dd db $0, "This tree can be", $4f db "CUT!", $51 db "Want to use CUT?", $57 ; 1c0a05 UnknownText_0x1c0a05: ; 1c0a05 db $0, "This tree can be", $4f db "CUT!", $57 ; 1c0a1c UnknownText_0x1c0a1c: ; 1c0a1c db $0, $52, " found", $4f db "@" text_from_ram $d099 db $0, "!", $57 ; 1c0a2c UnknownText_0x1c0a2c: ; 1c0a2c db $0, "But ", $52, " can't", $4f db "carry any more", $55 db "items.", $57 ; 1c0a4e UnknownText_0x1c0a4e: ; 1c0a4e db $0, $52, " is out of", $4f db "useable #MON!", $51 db $52, " whited", $4f db "out!", $57 ; 1c0a77 UnknownText_0x1c0a77: ; 1c0a77 db $0, "Yes! ITEMFINDER", $4f db "indicates there's", $55 db "an item nearby.", $58 ; 1c0aa9 UnknownText_0x1c0aa9: ; 1c0aa9 db $0, "Nope! ITEMFINDER", $4f db "isn't responding.", $58 ; 1c0acc UnknownText_0x1c0acc: ; 1c0acc text_from_ram $d099 db $0, $4f db "fainted!", $58 ; 1c0ada UnknownText_0x1c0ada: ; 1c0ada db $0, $52, " is out of", $4f db "useable #MON!", $51 db $52, " whited", $4f db "out!", $58 ; 1c0b03 UnknownText_0x1c0b03: ; 1c0b03 text_from_ram $d099 db $0, " used", $4f db "SWEET SCENT!", $57 ; 1c0b1a UnknownText_0x1c0b1a: ; 1c0b1a db $0, "Looks like there's", $4f db "nothing here…", $57 ; 1c0b3b UnknownText_0x1c0b3b: ; 1c0b3b db $0, $52, " sprinkled", $4f db "water.", $51 db "But nothing", $4f db "happened…", $57 ; 1c0b65 UnknownText_0x1c0b65: ; 1c0b65 db $0, $52, "'s #MON", $4f db "were all healed!", $57 ; 1c0b7f UnknownText_0x1c0b7f: ; 1c0b7f db $0, "An EGG can't hold", $4f db "an item.", $58 ; 1c0b9a UnknownText_0x1c0b9a: ; 1c0b9a db $0, "No items.", $57 ; 1c0ba5 UnknownText_0x1c0ba5: ; 1c0ba5 db $0, "Throw away how", $4f db "many?", $57 ; 1c0bbb UnknownText_0x1c0bbb: ; 1c0bbb db $0, "Throw away @" deciram $d10c, $12 db $0, $4f db "@" text_from_ram $d086 db $0, "(S)?", $57 ; 1c0bd8 UnknownText_0x1c0bd8: ; 1c0bd8 db $0, "Threw away", $4f db "@" text_from_ram $d086 db $0, "(S).", $58 ; 1c0bee UnknownText_0x1c0bee: ; 1c0bee db $0, "OAK: ", $52, "!", $4f db "This isn't the", $55 db "time to use that!", $58 ; 1c0c17 UnknownText_0x1c0c17: ; 1c0c17 db $0, "You don't have a", $4f db "#MON!", $58 ; 1c0c2e UnknownText_0x1c0c2e: ; 1c0c2e db $0, "Registered the", $4f db "@" text_from_ram $d086 db $0, ".", $58 ; 1c0c45 UnknownText_0x1c0c45: ; 1c0c45 db $0, "You can't register", $4f db "that item.", $58 ; 1c0c63 UnknownText_0x1c0c63: ; 1c0c63 db $0, "Where should this", $4f db "be moved to?", $57 ; 1c0c83 UnknownText_0x1c0c83: ; 1c0c83 db $0, $57 ; 1c0c85 UnknownText_0x1c0c85: ; 1c0c85 db $0, "You can't use it", $4f db "in a battle.", $58 ; 1c0ca3 UnknownText_0x1c0ca3: ; 1c0ca3 db $0, "Are you a boy?", $4f db "Or are you a girl?", $57 ; 1c0cc6 UnknownText_0x1c0cc6: ; 1c0cc6 db $0, $5a, "'s", $4f db "@" text_from_ram $d086 db "@" ; 1c0ccf UnknownText_0x1c0ccf: ; 1c0ccf db "@" ; 1c0cd0 UnknownText_0x1c0cd0: ; 1c0cd0 interpret_data db $0, $4c, "went way up!", $58 ; 1c0ce0 UnknownText_0x1c0ce0: ; 1c0ce0 db $0, " went up!", $58 ; 1c0ceb UnknownText_0x1c0ceb: ; 1c0ceb db $0, $59, "'s", $4f db "@" text_from_ram $d086 db "@" ; 1c0cf4 UnknownText_0x1c0cf4: ; 1c0cf4 db "@" ; 1c0cf5 UnknownText_0x1c0cf5: ; 1c0cf5 interpret_data db $0, $4c, "sharply fell!", $58 ; 1c0d06 UnknownText_0x1c0d06: ; 1c0d06 db $0, " fell!", $58 ; 1c0d0e UnknownText_0x1c0d0e: ; 1c0d0e db $0, $5a, "@" db "@" ; 1c0d12 UnknownText_0x1c0d12: ; 1c0d12 db $0, $4f db "made a whirlwind!", $58 ; 1c0d26 UnknownText_0x1c0d26: ; 1c0d26 db $0, $4f db "took in sunlight!", $58 ; 1c0d3a UnknownText_0x1c0d3a: ; 1c0d3a db $0, $4f db "lowered its head!", $58 ; 1c0d4e UnknownText_0x1c0d4e: ; 1c0d4e db $0, $4f db "is glowing!", $58 ; 1c0d5c UnknownText_0x1c0d5c: ; 1c0d5c db $0, $4f db "flew up high!", $58 ; 1c0d6c UnknownText_0x1c0d6c: ; 1c0d6c db $0, $4f db "dug a hole!", $58 ; 1c0d7a _ActorNameText: ; 1c0d7a db $0, $5a, "@" db "@" ; 1c0d7e _UsedMove1Text: ; 1c0d7e db $0, $4f db "used @" db "@" ; 1c0d87 _UsedMove2Text: ; 1c0d87 db $0, $4f db "used @" db "@" ; 1c0d90 _UsedInsteadText: ; 1c0d90 db $0, "instead,", $55 db "@" db "@" ; 1c0d9c _MoveNameText: ; 1c0d9c text_from_ram StringBuffer2 db "@" ; 1c0da0 UnknownText_0x1c0da0: ; 1c0da0 db "@" ; 1c0da1 _EndUsedMove1Text: ; 1c0da1 db $0, "!", $57 ; 1c0da4 _EndUsedMove2Text: ; 1c0da4 db $0, "!", $57 ; 1c0da7 _EndUsedMove3Text: ; 1c0da7 db $0, "!", $57 ; 1c0daa _EndUsedMove4Text: ; 1c0daa db $0, "!", $57 ; 1c0dad _EndUsedMove5Text: ; 1c0dad db $0, "!", $57 ; 1c0db0 UnknownText_0x1c0db0: ; 1c0db0 db $0, "Huh?", $51 db "@" db "@" ; 1c0db8 UnknownText_0x1c0db8: ; 1c0db8 db $0, $57 ; 1c0dba UnknownText_0x1c0dba: ; 1c0dba text_from_ram StringBuffer1 db $0, " came", $4f db "out of its EGG!@" sound0x02 text_waitbutton db "@" ; 1c0dd7 UnknownText_0x1c0dd7: ; 1c0dd7 db "@" ; 1c0dd8 UnknownText_0x1c0dd8: ; 1c0dd8 db $0, "Give a nickname to", $4f db "@" text_from_ram StringBuffer1 db $0, "?", $57 ; 1c0df3 UnknownText_0x1c0df3: ; 1c0df3 db $0, "It's @" text_from_ram $df2f db $0, $4f db "that was left with", $55 db "the DAY-CARE LADY.", $57 ; 1c0e24 UnknownText_0x1c0e24: ; 1c0e24 db $0, "It's @" text_from_ram $def6 db $0, $4f db "that was left with", $55 db "the DAY-CARE MAN.", $57 ; 1c0e54 UnknownText_0x1c0e54: ; 1c0e54 db $0, "It's brimming with", $4f db "energy.", $58 ; 1c0e6f UnknownText_0x1c0e6f: ; 1c0e6f db $0, "It has no interest", $4f db "in @" text_from_ram $d073 db $0, ".", $58 ; 1c0e8d UnknownText_0x1c0e8d: ; 1c0e8d db $0, "It appears to care", $4f db "for @" text_from_ram $d073 db $0, ".", $58 ; 1c0eac UnknownText_0x1c0eac: ; 1c0eac db $0, "It's friendly with", $4f db "@" text_from_ram $d073 db $0, ".", $58 ; 1c0ec6 UnknownText_0x1c0ec6: ; 1c0ec6 db $0, "It shows interest", $4f db "in @" text_from_ram $d073 db $0, ".", $58 ; 1c0ee3 UnknownText_0x1c0ee3: ; 1c0ee3 db $0, "There's no MAIL", $4f db "here.", $58 ; 1c0ef9 UnknownText_0x1c0ef9: ; 1c0ef9 db $0, "The cleared MAIL", $4f db "was put away.", $58 ; 1c0f19 UnknownText_0x1c0f19: ; 1c0f19 db $0, "The PACK is full.", $58 ; 1c0f2c UnknownText_0x1c0f2c: ; 1c0f2c db $0, "The MAIL's message", $4f db "will be lost. OK?", $57 ; 1c0f51 UnknownText_0x1c0f51: ; 1c0f51 db $0, "It's already hold-", $4f db "ing an item.", $58 ; 1c0f71 UnknownText_0x1c0f71: ; 1c0f71 db $0, "An EGG can't hold", $4f db "any MAIL.", $58 ; 1c0f8d UnknownText_0x1c0f8d: ; 1c0f8d db $0, "The MAIL was moved", $4f db "from the MAILBOX.", $58 ; 1c0fb3 UnknownText_0x1c0fb3: ; 1c0fb3 db $0, "Yes", $58 ; 1c0fb8 UnknownText_0x1c0fb8: ; 1c0fb8 db $0, "No", $58 ; 1c0fbc UnknownText_0x1c0fbc: ; 1c0fbc deciram $cf64, $13 db $0, " @" text_from_ram $d073 db $0, $4f db "Animation type @" text_from_ram $d086 db "@" ; 1c0fdc UnknownText_0x1c0fdc: ; 1c0fdc db "@" ; 1c0fdd UnknownText_0x1c0fdd: ; 1c0fdd db $0, "#MON number?", $57 ; 1c0feb UnknownText_0x1c0feb: ; 1c0feb text_from_ram $d073 db $0, " was", $4f db "sent to BILL's PC.", $58 ; 1c1006 UnknownText_0x1c1006: ; 1c1006 db $0, "You gotta have", $4f db "#MON to call!", $58 ; 1c1024 UnknownText_0x1c1024: ; 1c1024 db $0, "What?", $57 ; 1c102b UnknownText_0x1c102b: ; 1c102b db $0, "There is a #MON", $4f db "holding MAIL.", $51 db "Please remove the", $4f db "MAIL.", $58 ; 1c1062 UnknownText_0x1c1062: ; 1c1062 db $0, "You don't have a", $4f db "single #MON!", $58 ; 1c1080 UnknownText_0x1c1080: ; 1c1080 db $0, "You can't deposit", $4f db "your last #MON!", $58 ; 1c10a2 UnknownText_0x1c10a2: ; 1c10a2 db $0, "You can't take any", $4f db "more #MON.", $58 ; 1c10c0 UnknownText_0x1c10c0: ; 1c10c0 db $0, "Caught @" text_from_ram $d073 db $0, "!", $58 ; 1c10cf UnknownText_0x1c10cf: ; 1c10cf db $0, "Switch #MON?", $57 ; 1c10dd UnknownText_0x1c10dd: ; 1c10dd db $0, "You already caught", $4f db "a @" text_from_ram $d073 db $0, ".", $58 ; 1c10fa UnknownText_0x1c10fa: ; 1c10fa db $0, "This Bug-Catching", $4f db "Contest winner is@" interpret_data db $0, "…", $51 db "@" text_from_ram $d016 db $0, ",", $4f db "who caught a", $55 db "@" text_from_ram $d073 db $0, "!@" db "@" ; 1c113f UnknownText_0x1c113f: ; 1c113f db $0, $51 db "The winning score", $4f db "was @" deciram $d004, $23 db $0, " points!", $58 ; 1c1166 UnknownText_0x1c1166: ; 1c1166 db $0, "Placing second was", $4f db "@" text_from_ram $d016 db $0, ",", $51 db "who caught a", $4f db "@" text_from_ram $d073 db $0, "!@" db "@" ; 1c1196 UnknownText_0x1c1196: ; 1c1196 db $0, $51 db "The score was", $4f db "@" deciram $d008, $23 db $0, " points!", $58 ; 1c11b5 UnknownText_0x1c11b5: ; 1c11b5 db $0, "Placing third was", $4f db "@" text_from_ram $d016 db $0, ",", $51 db "who caught a", $4f db "@" text_from_ram $d073 db $0, "!@" db "@" ; 1c11e4 UnknownText_0x1c11e4: ; 1c11e4 db $0, $51 db "The score was", $4f db "@" deciram $d00c, $23 db $0, " points!", $58 ; 1c1203 UnknownText_0x1c1203: ; 1c1203 db $0, "Let me measure", $4f db "that MAGIKARP.", $51 db "…Hm, it measures", $4f db "@" text_from_ram $d073 db $0, ".", $58 ; 1c123a UnknownText_0x1c123a: ; 1c123a db $0, "CURRENT RECORD", $51 db "@" text_from_ram $d073 db $0, " caught by", $4f db "@" text_from_ram $dfea text_waitbutton db "@" ; 1c1260 UnknownText_0x1c1260: ; 1c1260 db "@" ; 1c1261 UnknownText_0x1c1261: ; 1c1261 db $0, "Congratulations!", $51 db "We have a match", $4f db "with the ID number", $51 db "of @" text_from_ram $d073 db $0, " in", $4f db "your party.", $58 ; 1c12ae UnknownText_0x1c12ae: ; 1c12ae db $0, "Congratulations!", $51 db "We have a match", $4f db "with the ID number", $51 db "of @" text_from_ram $d073 db $0, " in", $4f db "your PC BOX.", $58 ; 1c12fc UnknownText_0x1c12fc: ; 1c12fc db $0, "Give a nickname to", $4f db "the @" text_from_ram $d073 db $0, " you", $55 db "received?", $57 ; 1c1328 UnknownText_0x1c1328: ; 1c1328 db $0, "Bzzzzt! You must", $4f db "have a #MON to", $55 db "use this!", $58 ; 1c1353 UnknownText_0x1c1353: ; 1c1353 db $0, $52, " turned on", $4f db "the PC.", $58 ; 1c1368 UnknownText_0x1c1368: ; 1c1368 db $0, "What do you want", $4f db "to do?", $57 ; 1c1381 UnknownText_0x1c1381: ; 1c1381 db $0, "How many do you", $4f db "want to withdraw?", $57 ; 1c13a4 UnknownText_0x1c13a4: ; 1c13a4 db $0, "Withdrew @" deciram $d10c, $12 db $0, $4f db "@" text_from_ram $d086 db $0, "(S).", $58 ; 1c13bf UnknownText_0x1c13bf: ; 1c13bf db $0, "There's no room", $4f db "for more items.", $58 ; 1c13df UnknownText_0x1c13df: ; 1c13df db $0, "No items here!", $58 ; 1c13ef UnknownText_0x1c13ef: ; 1c13ef db $0, "How many do you", $4f db "want to deposit?", $57 ; 1c1411 UnknownText_0x1c1411: ; 1c1411 db $0, "Deposited @" deciram $d10c, $12 db $0, $4f db "@" text_from_ram $d086 db $0, "(S).", $58 ; 1c142d UnknownText_0x1c142d: ; 1c142d db $0, "There's no room to", $4f db "store items.", $58 ; 1c144d UnknownText_0x1c144d: ; 1c144d db $0, $52, " turned on", $4f db "the PC.", $58 ; 1c1462 UnknownText_0x1c1462: ; 1c1462 db $0, "Access whose PC?", $57 ; 1c1474 UnknownText_0x1c1474: ; 1c1474 db $0, "BILL's PC", $4f db "accessed.", $51 db "#MON Storage", $4f db "System opened.", $58 ; 1c14a4 UnknownText_0x1c14a4: ; 1c14a4 db $0, "Accessed own PC.", $51 db "Item Storage", $4f db "System opened.", $58 ; 1c14d2 UnknownText_0x1c14d2: ; 1c14d2 db $0, "PROF.OAK's PC", $4f db "accessed.", $51 db "#DEX Rating", $4f db "System opened.", $58 ; 1c1505 UnknownText_0x1c1505: ; 1c1505 db $0, "…", $4f db "Link closed…", $57 ; 1c1515 UnknownText_0x1c1515: ; 1c1515 db $0, "Want to get your", $4f db "#DEX rated?", $57 ; 1c1533 UnknownText_0x1c1533: ; 1c1533 db $0, "Current #DEX", $4f db "completion level:", $58 ; 1c1553 UnknownText_0x1c1553: ; 1c1553 text_from_ram $d099 db $0, " #MON seen", $4f db "@" text_from_ram $d0ac db $0, " #MON owned", $51 db "PROF.OAK's", $4f db "Rating:", $57 ; 1c1585 UnknownText_0x1c1585: ; 1c1585 db $0, "Look for #MON", $4f db "in grassy areas!", $57 ; 1c15a5 UnknownText_0x1c15a5: ; 1c15a5 db $0, "Good. I see you", $4f db "understand how to", $55 db "use # BALLS.", $57 ; 1c15d5 UnknownText_0x1c15d5: ; 1c15d5 db $0, "You're getting", $4f db "good at this.", $51 db "But you have a", $4f db "long way to go.", $57 ; 1c1611 UnknownText_0x1c1611: ; 1c1611 db $0, "You need to fill", $4f db "up the #DEX.", $51 db "Catch different", $4f db "kinds of #MON!", $57 ; 1c164f UnknownText_0x1c164f: ; 1c164f db $0, "You're trying--I", $4f db "can see that.", $51 db "Your #DEX is", $4f db "coming together.", $57 ; 1c168c UnknownText_0x1c168c: ; 1c168c db $0, "To evolve, some", $4f db "#MON grow,", $51 db "others use the", $4f db "effects of STONES.", $57 ; 1c16ca UnknownText_0x1c16ca: ; 1c16ca db $0, "Have you gotten a", $4f db "fishing ROD? You", $51 db "can catch #MON", $4f db "by fishing.", $57 ; 1c1709 UnknownText_0x1c1709: ; 1c1709 db $0, "Excellent! You", $4f db "seem to like col-", $55 db "lecting things!", $57 ; 1c173b UnknownText_0x1c173b: ; 1c173b db $0, "Some #MON only", $4f db "appear during", $51 db "certain times of", $4f db "the day.", $57 ; 1c1773 UnknownText_0x1c1773: ; 1c1773 db $0, "Your #DEX is", $4f db "filling up. Keep", $55 db "up the good work!", $57 ; 1c17a4 UnknownText_0x1c17a4: ; 1c17a4 db $0, "I'm impressed.", $4f db "You're evolving", $51 db "#MON, not just", $4f db "catching them.", $57 ; 1c17e0 UnknownText_0x1c17e0: ; 1c17e0 db $0, "Have you met KURT?", $4f db "His custom BALLS", $55 db "should help.", $57 ; 1c1812 UnknownText_0x1c1812: ; 1c1812 db $0, "Wow. You've found", $4f db "more #MON than", $51 db "the last #DEX", $4f db "research project.", $57 ; 1c1853 UnknownText_0x1c1853: ; 1c1853 db $0, "Are you trading", $4f db "your #MON?", $51 db "It's tough to do", $4f db "this alone!", $57 ; 1c188b UnknownText_0x1c188b: ; 1c188b db $0, "Wow! You've hit", $4f db "200! Your #DEX", $55 db "is looking great!", $57 ; 1c18bc UnknownText_0x1c18bc: ; 1c18bc db $0, "You've found so", $4f db "many #MON!", $51 db "You've really", $4f db "helped my studies!", $57 ; 1c18f7 UnknownText_0x1c18f7: ; 1c18f7 db $0, "Magnificent! You", $4f db "could become a", $51 db "#MON professor", $4f db "right now!", $57 ; 1c1932 UnknownText_0x1c1932: ; 1c1932 db $0, "Your #DEX is", $4f db "amazing! You're", $51 db "ready to turn", $4f db "professional!", $57 ; 1c196b UnknownText_0x1c196b: ; 1c196b db $0, "Whoa! A perfect", $4f db "#DEX! I've", $51 db "dreamt about this!", $4f db "Congratulations!", $57 ; 1c19aa UnknownText_0x1c19aa: ; 1c19aa db $0, "The link to PROF.", $4f db "OAK's PC closed.", $57 ; 1c19cd UnknownText_0x1c19cd: ; 1c19cd db $0, "Triple-theme", $4f db "trainer ranking!", $51 db "The SAVE file you", $4f db "just sent might", $55 db "make the rankings!", $51 db $57 ; 1c1a22 UnknownText_0x1c1a22: ; 1c1a22 db $0, "There is no", $4f db "ranking data.", $51 db "Link to obtain", $4f db "ranking data.", $51 db $57 ; 1c1a5b UnknownText_0x1c1a5b: ; 1c1a5b db $0, " , yeah!", $57 ; 1c1a65 UnknownText_0x1c1a65: ; 1c1a65 db $0, "Darn…", $57 ; 1c1a6c UnknownText_0x1c1a6c: ; 1c1a6c db $0, "Would you like to", $4f db "end the Contest?", $57 ; 1c1a90 UnknownText_0x1c1a90: ; 1c1a90 db $0, "Toss out how many", $4f db "@" text_from_ram $d086 db $0, "(S)?", $57 ; 1c1aad UnknownText_0x1c1aad: ; 1c1aad db $0, "Throw away @" deciram $d10c, $12 db $0, $4f db "@" text_from_ram $d086 db $0, "(S)?", $57 ; 1c1aca UnknownText_0x1c1aca: ; 1c1aca db $0, "Discarded", $4f db "@" text_from_ram $d073 db $0, "(S).", $58 ; 1c1adf UnknownText_0x1c1adf: ; 1c1adf db $0, "That's too impor-", $4f db "tant to toss out!", $58 ; 1c1b03 UnknownText_0x1c1b03: ; 1c1b03 db $0, "OAK: ", $52, "!", $4f db "This isn't the", $55 db "time to use that!", $57 ; 1c1b2c UnknownText_0x1c1b2c: ; 1c1b2c db $0, "Took @" text_from_ram $d050 db $0, "'s", $4f db "@" text_from_ram $d073 db $0, " and", $51 db "made it hold", $4f db "@" text_from_ram $d086 db $0, ".", $58 ; 1c1b57 UnknownText_0x1c1b57: ; 1c1b57 db $0, "Made @" text_from_ram $d050 db $0, $4f db "hold @" text_from_ram $d086 db $0, ".", $58 ; 1c1b6f UnknownText_0x1c1b6f: ; 1c1b6f db $0, "Please remove the", $4f db "MAIL first.", $58 ; 1c1b8e UnknownText_0x1c1b8e: ; 1c1b8e text_from_ram $d050 db $0, " isn't", $4f db "holding anything.", $58 ; 1c1baa UnknownText_0x1c1baa: ; 1c1baa db $0, "Item storage space", $4f db "full.", $58 ; 1c1bc4 UnknownText_0x1c1bc4: ; 1c1bc4 db $0, "Took @" text_from_ram $d073 db $0, $4f db "from @" text_from_ram $d050 db $0, ".", $58 ; 1c1bdc UnknownText_0x1c1bdc: ; 1c1bdc text_from_ram $d050 db $0, " is", $4f db "already holding", $51 db "@" text_from_ram $d073 db $0, ".", $4f db "Switch items?", $57 ; 1c1c09 UnknownText_0x1c1c09: ; 1c1c09 db $0, "This item can't be", $4f db "held.", $58 ; 1c1c22 UnknownText_0x1c1c22: ; 1c1c22 db $0, "The MAIL will lose", $4f db "its message. OK?", $57 ; 1c1c47 UnknownText_0x1c1c47: ; 1c1c47 db $0, "MAIL detached from", $4f db "@" text_from_ram $d073 db $0, ".", $58 ; 1c1c62 UnknownText_0x1c1c62: ; 1c1c62 db $0, "There's no space", $4f db "for removing MAIL.", $58 ; 1c1c86 UnknownText_0x1c1c86: ; 1c1c86 db $0, "Send the removed", $4f db "MAIL to your PC?", $57 ; 1c1ca9 UnknownText_0x1c1ca9: ; 1c1ca9 db $0, "Your PC's MAILBOX", $4f db "is full.", $58 ; 1c1cc4 UnknownText_0x1c1cc4: ; 1c1cc4 db $0, "The MAIL was sent", $4f db "to your PC.", $58 ; 1c1ce3 UnknownText_0x1c1ce3: ; 1c1ce3 db $0, "Not enough HP!", $58 ; 1c1cf3 UnknownText_0x1c1cf3: ; 1c1cf3 db $0, "An item in your", $4f db "PACK may be", $51 db "registered for use", $4f db "on SELECT Button.", $57 ; 1c1d35 UnknownText_0x1c1d35: ; 1c1d35 db $0, "Hello! Sorry to", $4f db "keep you waiting!", $51 db "Welcome to the", $4f db "world of #MON!", $51 db "My name is OAK.", $51 db "People call me the", $4f db "#MON PROF.", $58 ; 1c1da4 UnknownText_0x1c1da4: ; 1c1da4 db $0, "This world is in-", $4f db "habited by crea-", $55 db "tures that we call", $55 db "#MON.@" db "@" ; 1c1de2 UnknownText_0x1c1de2: ; 1c1de2 text_waitbutton db "@" ; 1c1de4 UnknownText_0x1c1de4: ; 1c1de4 db "@" ; 1c1de5 UnknownText_0x1c1de5: ; 1c1de5 db $0, "People and #MON", $4f db "live together by", $51 db "supporting each", $4f db "other.", $51 db "Some people play", $4f db "with #MON, some", $55 db "battle with them.", $58 ; 1c1e51 UnknownText_0x1c1e51: ; 1c1e51 db $0, "But we don't know", $4f db "everything about", $55 db "#MON yet.", $51 db "There are still", $4f db "many mysteries to", $55 db "solve.", $51 db "That's why I study", $4f db "#MON every day.", $58 ; 1c1ec9 SECTION "bank71",DATA,BANK[$71] UnknownText_0x1c4000: ; 0x1c4000 db $0, "Now, what did you", $4f db "say your name was?", $58 ; 0x1c4026 UnknownText_0x1c4026: ; 0x1c4026 db $0, $52, ", are you", $4f db "ready?", $51 db "Your very own", $4f db "#MON story is", $55 db "about to unfold.", $51 db "You'll face fun", $4f db "times and tough", $55 db "challenges.", $51 db "A world of dreams", $4f db "and adventures", $51 db "with #MON", $4f db "awaits! Let's go!", $51 db "I'll be seeing you", $4f db "later!", $57 ; 0x1c40e6 UnknownText_0x1c40e6: ; 0x1c40e6 db $0, "The clock's time", $4f db "may be wrong.", $51 db "Please reset the", $4f db "time.", $58 ; 0x1c411c UnknownText_0x1c411c: ; 0x1c411c db $0, "Set with the", $4f db "Control Pad.", $51 db "Confirm: A Button", $4f db "Cancel: B Button", $57 ; 0x1c415b UnknownText_0x1c415b: ; 0x1c415b db $0, "Is this OK?", $57 ; 0x1c4168 UnknownText_0x1c4168: ; 0x1c4168 db $0, "The clock has been", $4f db "reset.", $57 ; 0x1c4183 UnknownText_0x1c4183: ; 0x1c4183 db $0, "Too much time has", $4f db "elapsed. Please", $55 db "try again.", $58 ; 0x1c41b1 UnknownText_0x1c41b1: ; 0x1c41b1 db $0, "If you trade that", $4f db "#MON, you won't", $55 db "be able to battle.", $58 ; 0x1c41e6 UnknownText_0x1c41e6: ; 0x1c41e6 db $0, "Your friend's", $4f db "@" text_from_ram $d073 db $0, " appears", $55 db "to be abnormal!", $58 ; 0x1c4212 UnknownText_0x1c4212: ; 0x1c4212 db $0, "Trade @" text_from_ram $d004 db $0, $4f db "for @" text_from_ram $d073 db $0, "?", $57 ; 0x1c422a UnknownText_0x1c422a: ; 0x1c422a db $0, "To enter a mobile", $4f db "battle, you must", $51 db "pick a team of", $4f db "three #MON.", $51 db "Is that OK?", $57 ; 0x1c4275 UnknownText_0x1c4275: ; 0x1c4275 db $0, "Need more info on", $4f db "mobile battles?", $57 ; 0x1c4298 UnknownText_0x1c4298: ; 0x1c4298 db $0, "For a mobile", $4f db "battle, choose", $55 db "three #MON.", $51 db "The maximum daily", $4f db "play time is ten", $51 db "minutes for each", $4f db "linked player.", $51 db "If a battle isn't", $4f db "finished within", $51 db "the time limit,", $4f db "the player with", $51 db "the fewest fainted", $4f db "#MON wins.", $51 db "If tied, the team", $4f db "that lost the", $51 db "least amount of HP", $4f db "wins.", $57 ; 0x1c439c UnknownText_0x1c439c: ; 0x1c439c db $0, "Today's remaining", $4f db "time is @" deciram $d086, $12 db $0, " min.", $51 db "Would you like to", $4f db "battle?", $57 ; 0x1c43dc UnknownText_0x1c43dc: ; 0x1c43dc db $0, "There are only @" deciram $d086, $12 db $0, $4f db "min. left today.", $51 db "Want a quick", $4f db "battle?", $57 ; 0x1c4419 UnknownText_0x1c4419: ; 0x1c4419 db $0, "There is only", $4f db "1 min. left today!", $51 db "Want to rush", $4f db "through a battle?", $57 ; 0x1c445a UnknownText_0x1c445a: ; 0x1c445a db $0, "There is less than", $4f db "1 min. left today!", $51 db "Please try again", $4f db "tomorrow.", $57 ; 0x1c449c UnknownText_0x1c449c: ; 0x1c449c db $0, "Try again using", $4f db "the same settings?", $57 ; 0x1c44c0 UnknownText_0x1c44c0: ; 0x1c44c0 db $0, "There is less than", $4f db "1 min. left today!", $57 ; 0x1c44e7 UnknownText_0x1c44e7: ; 0x1c44e7 db $0, "No time left for", $4f db "linking today.", $57 ; 0x1c4508 UnknownText_0x1c4508: ; 0x1c4508 db $0, "Pick three #MON", $4f db "for battle.", $57 ; 0x1c4525 UnknownText_0x1c4525: ; 0x1c4525 db $0, "Today's remaining", $4f db "time is @" deciram $d086, $12 db $0, " min.", $57 ; 0x1c454b UnknownText_0x1c454b: ; 0x1c454b db $0, "Would you like to", $4f db "save the game?", $57 ; 0x1c456d UnknownText_0x1c456d: ; 0x1c456d db $0, "SAVING… DON'T TURN", $4f db "OFF THE POWER.", $57 ; 0x1c4590 UnknownText_0x1c4590: ; 0x1c4590 db $0, $52, " saved", $4f db "the game.", $57 ; 0x1c45a3 UnknownText_0x1c45a3: ; 0x1c45a3 db $0, "There is already a", $4f db "save file. Is it", $55 db "OK to overwrite?", $57 ; 0x1c45d9 UnknownText_0x1c45d9: ; 0x1c45d9 db $0, "There is another", $4f db "save file. Is it", $55 db "OK to overwrite?", $57 ; 0x1c460d UnknownText_0x1c460d: ; 0x1c460d db $0, "The save file is", $4f db "corrupted!", $58 ; 0x1c462a UnknownText_0x1c462a: ; 0x1c462a db $0, "When you change a", $4f db "#MON BOX, data", $55 db "will be saved. OK?", $57 ; 0x1c465f UnknownText_0x1c465f: ; 0x1c465f db $0, "Each time you move", $4f db "a #MON, data", $55 db "will be saved. OK?", $57 ; 0x1c4693 UnknownText_0x1c4693: ; 0x1c4693 db $0, "The window save", $4f db "area was exceeded.", $57 ; 0x1c46b7 UnknownText_0x1c46b7: ; 0x1c46b7 db $0, "No windows avail-", $4f db "able for popping.", $57 ; 0x1c46dc UnknownText_0x1c46dc: ; 0x1c46dc db $0, "Corrupted event!", $58 ; 0x1c46ee _ObjectEventText: ; 0x1c46ee db $0, "Object event", $57 ; 0x1c46fc UnknownText_0x1c46fc: ; 0x1c46fc db $0, "BG event", $57 ; 0x1c4706 UnknownText_0x1c4706: ; 0x1c4706 db $0, "Coordinates event", $57 ; 0x1c4719 UnknownText_0x1c4719: ; 0x1c4719 db $0, $52, " received", $4f db "@" text_from_ram $d0ac db $0, ".", $57 ; 0x1c472c UnknownText_0x1c472c: ; 0x1c472c db $0, $52, " put the", $4f db "@" text_from_ram $d073 db $0, " in", $55 db "the @" text_from_ram $d099 db $0, ".", $58 ; 0x1c474b UnknownText_0x1c474b: ; 0x1c474b db $0, "The @" text_from_ram $d099 db $0, $4f db "is full…", $58 ; 0x1c475f UnknownText_0x1c475f: ; 0x1c475f db $0, "I see all.", $4f db "I know all…", $51 db "Certainly, I know", $4f db "of your #MON!", $57 ; 0x1c4797 UnknownText_0x1c4797: ; 0x1c4797 db $0, "Whaaaat? I can't", $4f db "tell a thing!", $51 db "How could I not", $4f db "know of this?", $57 ; 0x1c47d4 UnknownText_0x1c47d4: ; 0x1c47d4 db $0, "Hm… I see you met", $4f db "@" text_from_ram $d003 db $0, " here:", $55 db "@" text_from_ram $d00e db $0, "!", $58 ; 0x1c47fa UnknownText_0x1c47fa: ; 0x1c47fa db $0, "The time was", $4f db "@" text_from_ram $d01f db $0, "!", $51 db "Its level was @" text_from_ram $d036 db $0, "!", $51 db "Am I good or what?", $58 ; 0x1c4837 UnknownText_0x1c4837: ; 0x1c4837 db $0, "Hm… @" text_from_ram $d003 db $0, $4f db "came from @" text_from_ram $d02a db $0, $55 db "in a trade?", $51 db "@" text_from_ram $d00e db $0, $4f db "was where @" text_from_ram $d02a db $0, $55 db "met @" text_from_ram $d003 db $0, "!", $58 ; 0x1c487f UnknownText_0x1c487f: ; 0x1c487f db $0, "What!? Incredible!", $51 db "I don't understand", $4f db "how, but it is", $51 db "incredible!", $4f db "You are special.", $51 db "I can't tell where", $4f db "you met it, but it", $55 db "was at level @" text_from_ram $d036 db $0, ".", $51 db "Am I good or what?", $58 ; 0x1c491d UnknownText_0x1c491d: ; 0x1c491d db $0, "Hey!", $51 db "That's an EGG!", $51 db "You can't say that", $4f db "you've met it yet…", $57 ; 0x1c4955 UnknownText_0x1c4955: ; 0x1c4955 db $0, "Fufufu! I saw that", $4f db "you'd do nothing!", $57 ; 0x1c497a UnknownText_0x1c497a: ; 0x1c497a db $0, "Incidentally…", $51 db "It would be wise", $4f db "to raise your", $51 db "#MON with a", $4f db "little more care.", $57 ; 0x1c49c6 UnknownText_0x1c49c6: ; 0x1c49c6 db $0, "Incidentally…", $51 db "It seems to have", $4f db "grown a little.", $51 db "@" text_from_ram $d003 db $0, " seems", $4f db "to be becoming", $55 db "more confident.", $57 ; 0x1c4a21 UnknownText_0x1c4a21: ; 0x1c4a21 db $0, "Incidentally…", $51 db "@" text_from_ram $d003 db $0, " has", $4f db "grown. It's gained", $55 db "much strength.", $57 ; 0x1c4a5b UnknownText_0x1c4a5b: ; 0x1c4a5b db $0, "Incidentally…", $51 db "It certainly has", $4f db "grown mighty!", $51 db "This @" text_from_ram $d003 db $0, $4f db "must have come", $51 db "through numerous", $4f db "#MON battles.", $51 db "It looks brimming", $4f db "with confidence.", $57 ; 0x1c4ae5 UnknownText_0x1c4ae5: ; 0x1c4ae5 db $0, "Incidentally…", $51 db "I'm impressed by", $4f db "your dedication.", $51 db "It's been a long", $4f db "time since I've", $51 db "seen a #MON as", $4f db "mighty as this", $55 db "@" text_from_ram $d003 db $0, ".", $51 db "I'm sure that", $4f db "seeing @" text_from_ram $d003 db $0, $51 db "in battle would", $4f db "excite anyone.", $57 ; 0x1c4b92 UnknownText_0x1c4b92: ; 0x1c4b92 db $0, "Congratulations!", $4f db "Your @" text_from_ram $d086 db $50 ; 0x1c4bae UnknownText_0x1c4bae: ; 0x1c4bae db $50 ; 0x1c4baf UnknownText_0x1c4baf: ; 0x1c4baf db $0, $51 db "evolved into", $4f db "@" text_from_ram $d073 db $0, "!", $57 ; 0x1c4bc5 UnknownText_0x1c4bc5: ; 0x1c4bc5 db $0, "Huh? @" text_from_ram $d086 db $0, $4f db "stopped evolving!", $58 ; 0x1c4be3 UnknownText_0x1c4be3: ; 0x1c4be3 db $0, "What? @" text_from_ram $d086 db $0, $4f db "is evolving!", $57 ; 0x1c4bfd UnknownText_0x1c4bfd: ; 0x1c4bfd db $0, "How many?", $57 ; 0x1c4c08 UnknownText_0x1c4c08: ; 0x1c4c08 deciram $d10c, $12 db $0, " @" text_from_ram $d086 db $0, "(S)", $4f db "will be ¥@" deciram $ffc3, $36 db $0, ".", $57 ; 0x1c4c28 UnknownText_0x1c4c28: ; 0x1c4c28 db $0, "Hello, dear.", $51 db "I sell inexpensive", $4f db "herbal medicine.", $51 db "They're good, but", $4f db "a trifle bitter.", $51 db "Your #MON may", $4f db "not like them.", $51 db "Hehehehe…", $57 ; 0x1c4ca3 UnknownText_0x1c4ca3: ; 0x1c4ca3 db $0, "How many?", $57 ; 0x1c4cae UnknownText_0x1c4cae: ; 0x1c4cae deciram $d10c, $12 db $0, " @" text_from_ram $d086 db $0, "(S)", $4f db "will be ¥@" deciram $ffc3, $36 db $0, ".", $57 ; 0x1c4cce UnknownText_0x1c4cce: ; 0x1c4cce db $0, "Thank you, dear.", $4f db "Hehehehe…", $57 ; 0x1c4cea UnknownText_0x1c4cea: ; 0x1c4cea db $0, "Oh? Your PACK is", $4f db "full, dear.", $57 ; 0x1c4d08 UnknownText_0x1c4d08: ; 0x1c4d08 db $0, "Hehehe… You don't", $4f db "have the money.", $57 ; 0x1c4d2a UnknownText_0x1c4d2a: ; 0x1c4d2a db $0, "Come again, dear.", $4f db "Hehehehe…", $57 ; 0x1c4d47 UnknownText_0x1c4d47: ; 0x1c4d47 db $0, "Hiya! Care to see", $4f db "some bargains?", $51 db "I sell rare items", $4f db "that nobody else", $51 db "carries--but only", $4f db "one of each item.", $57 ; 0x1c4db0 UnknownText_0x1c4db0: ; 0x1c4db0 text_from_ram $d086 db $0, " costs", $4f db "¥@" deciram $ffc3, $36 db $0, ". Want it?", $57 ; 0x1c4dcd UnknownText_0x1c4dcd: ; 0x1c4dcd db $0, "Thanks.", $57 ; 0x1c4dd6 UnknownText_0x1c4dd6: ; 0x1c4dd6 db $0, "Uh-oh, your PACK", $4f db "is chock-full.", $57 ; 0x1c4df7 UnknownText_0x1c4df7: ; 0x1c4df7 db $0, "You bought that", $4f db "already. I'm all", $55 db "sold out of it.", $57 ; 0x1c4e28 UnknownText_0x1c4e28: ; 0x1c4e28 db $0, "Uh-oh, you're", $4f db "short on funds.", $57 ; 0x1c4e46 UnknownText_0x1c4e46: ; 0x1c4e46 db $0, "Come by again", $4f db "sometime.", $57 ; 0x1c4e5f UnknownText_0x1c4e5f: ; 0x1c4e5f db $0, "What's up? Need", $4f db "some medicine?", $57 ; 0x1c4e7e UnknownText_0x1c4e7e: ; 0x1c4e7e db $0, "How many?", $57 ; 0x1c4e89 UnknownText_0x1c4e89: ; 0x1c4e89 deciram $d10c, $12 db $0, " @" text_from_ram $d086 db $0, "(S)", $4f db "will cost ¥@" deciram $ffc3, $36 db $0, ".", $57 ; 0x1c4eab UnknownText_0x1c4eab: ; 0x1c4eab db $0, "Thanks much!", $57 ; 0x1c4eb9 UnknownText_0x1c4eb9: ; 0x1c4eb9 db $0, "You don't have any", $4f db "more space.", $57 ; 0x1c4ed8 UnknownText_0x1c4ed8: ; 0x1c4ed8 db $0, "Huh? That's not", $4f db "enough money.", $57 ; 0x1c4ef6 UnknownText_0x1c4ef6: ; 0x1c4ef6 db $0, "All right.", $4f db "See you around.", $57 ; 0x1c4f12 UnknownText_0x1c4f12: ; 0x1c4f12 db $0, "You don't have", $4f db "anything to sell.", $58 ; 0x1c4f33 UnknownText_0x1c4f33: ; 0x1c4f33 db $0, "How many?", $57 ; 0x1c4f3e UnknownText_0x1c4f3e: ; 0x1c4f3e db $0, "I can pay you", $4f db "¥@" deciram $ffc3, $36 db $0, ".", $51 db "Is that OK?", $57 ; 0x1c4f62 UnknownText_0x1c4f62: ; 0x1c4f62 db $0, "Welcome! How may I", $4f db "help you?", $57 ; 0x1c4f80 UnknownText_0x1c4f80: ; 0x1c4f80 db $0, "Here you are.", $4f db "Thank you!", $57 ; 0x1c4f9a UnknownText_0x1c4f9a: ; 0x1c4f9a db $0, "You don't have", $4f db "enough money.", $57 ; 0x1c4fb7 UnknownText_0x1c4fb7: ; 0x1c4fb7 db $0, "You can't carry", $4f db "any more items.", $57 ; 0x1c4fd7 UnknownText_0x1c4fd7: ; 0x1c4fd7 db $0, "Sorry, I can't buy", $4f db "that from you.", $58 ; 0x1c4ff9 UnknownText_0x1c4ff9: ; 0x1c4ff9 db $0, "Please come again!", $57 ; 0x1c500d UnknownText_0x1c500d: ; 0x1c500d db $0, "Can I do anything", $4f db "else for you?", $57 ; 0x1c502e UnknownText_0x1c502e: ; 0x1c502e db $0, "Got ¥@" deciram $ffc3, $36 db $0, " for", $4f db "@" text_from_ram $d086 db $0, "(S).", $57 ; 0x1c5049 UnknownText_0x1c5049: ; 0x1c5049 db $0, "Bet how many", $4f db "coins?", $57 ; 0x1c505e UnknownText_0x1c505e: ; 0x1c505e db $0, "Start!", $57 ; 0x1c5066 UnknownText_0x1c5066: ; 0x1c5066 db $0, "Not enough", $4f db "coins.", $58 ; 0x1c5079 UnknownText_0x1c5079: ; 0x1c5079 db $0, "Darn… Ran out of", $4f db "coins…", $57 ; 0x1c5092 UnknownText_0x1c5092: ; 0x1c5092 db $0, "Play again?", $57 ; 0x1c509f UnknownText_0x1c509f: ; 0x1c509f db $0, "lined up!", $4f db "Won @" text_from_ram $d086 db $0, " coins!", $57 ; 0x1c50bb UnknownText_0x1c50bb: ; 0x1c50bb db $0, "Darn!", $57 ; 0x1c50c2 _MobileStadiumEntryText: ; 0x1c50c2 db $0, "Data for use in", $4f db "the MOBILE STADIUM", $51 db "of the N64 #MON", $4f db "STADIUM 2 can be", $55 db "read here.", $51 db "Read the data?", $57 ; 0x1c5121 _MobileStadiumSuccessText: ; 0x1c5121 db $0, "Data transfer is", $4f db "complete.", $51 db "We hope you enjoy", $4f db "MOBILE STADIUM", $51 db "battles in the N64", $4f db "#MON STADIUM 2.", $51 db $57 ; 0x1c5182 UnknownText_0x1c5182: ; 0x1c5182 db $0, "Clock time unknown", $57 ; 0x1c5196 UnknownText_0x1c5196: ; 0x1c5196 db $0, "Delete the saved", $4f db "LOG-IN PASSWORD?", $57 ; 0x1c51b9 UnknownText_0x1c51b9: ; 0x1c51b9 db $0, "Deleted the LOG-IN", $4f db "PASSWORD.", $57 ; 0x1c51d7 UnknownText_0x1c51d7: ; 0x1c51d7 db $0, "Pick three #MON", $4f db "for battle.", $58 ; 0x1c51f4 UnknownText_0x1c51f4: ; 0x1c51f4 text_from_ram $d006 db $0, ",", $4f db "@" text_from_ram $d00c db $0, " and", $55 db "@" text_from_ram $d012 db $0, ".", $51 db "Use these three?", $57 ; 0x1c521c UnknownText_0x1c521c: ; 0x1c521c db $0, "Only three #MON", $4f db "may enter.", $58 ; 0x1c5238 UnknownText_0x1c5238: ; 0x1c5238 db $0, "The CARD FOLDER", $4f db "stores your and", $51 db "your friends'", $4f db "CARDS.", $51 db "A CARD contains", $4f db "information like", $51 db "the person's name,", $4f db "phone number and", $55 db "profile.", $51 db $57 ; 0x1c52bc UnknownText_0x1c52bc: ; 0x1c52bc db $0, "This is your CARD.", $51 db "Once you've", $4f db "entered your phone", $51 db "number, you can", $4f db "trade CARDS with", $55 db "your friends.", $51 db $57 ; 0x1c531e UnknownText_0x1c531e: ; 0x1c531e db $0, "If you have your", $4f db "friend's CARD, you", $51 db "can use it to make", $4f db "a call from a", $51 db "mobile phone on", $4f db "the 2nd floor of a", $55 db "#MON CENTER.", $51 db $57 ; 0x1c5394 UnknownText_0x1c5394: ; 0x1c5394 db $0, "To safely store", $4f db "your collection of", $51 db "CARDS, you must", $4f db "set a PASSCODE for", $55 db "your CARD FOLDER.", $51 db $57 ; 0x1c53ee UnknownText_0x1c53ee: ; 0x1c53ee db $0, "If the CARD FOLDER", $4f db "is deleted, all", $51 db "its CARDS and the", $4f db "PASSCODE will also", $55 db "be deleted.", $51 db "Beware--a deleted", $4f db "CARD FOLDER can't", $55 db "be restored.", $51 db "Want to delete", $4f db "your CARD FOLDER?", $57 ; 0x1c5494 UnknownText_0x1c5494: ; 0x1c5494 db $0, "Are you sure you", $4f db "want to delete it?", $57 ; 0x1c54b9 UnknownText_0x1c54b9: ; 0x1c54b9 db $0, "The CARD FOLDER", $4f db "has been deleted.", $51 db $57 ; 0x1c54dd UnknownText_0x1c54dd: ; 0x1c54dd db $0, "There is an older", $4f db "CARD FOLDER from a", $55 db "previous journey.", $51 db "Do you want to", $4f db "open it?", $57 ; 0x1c552d UnknownText_0x1c552d: ; 0x1c552d db $0, "Delete the old", $4f db "CARD FOLDER?", $57 ; 0x1c554a UnknownText_0x1c554a: ; 0x1c554a db $0, "Finish registering", $4f db "CARDS?", $57 ; 0x1c5565 UnknownText_0x1c5565: ; 0x1c5565 db $0, "Huh? Sorry, wrong", $4f db "number!", $57 ; 0x1c5580 UnknownText_0x1c5580: ; 0x1c5580 db $0, "Click!", $57 ; 0x1c5588 UnknownText_0x1c5588: ; 0x1c5588 db $0, $56, $57 ; 0x1c558b UnknownText_0x1c558b: ; 0x1c558b db $0, "That number is out", $4f db "of the area.", $57 ; 0x1c55ac UnknownText_0x1c55ac: ; 0x1c55ac db $0, "Just go talk to", $4f db "that person!", $57 ; 0x1c55ca UnknownText_0x1c55ca: ; 0x1c55ca db $0, "Thank you!", $57 ; 0x1c55d6 UnknownText_0x1c55d6: ; 0x1c55d6 db $0, " :", $57 ; 0x1c55db UnknownText_0x1c55db: ; 0x1c55db db $0, "Password OK.", $4f db "Select CONTINUE &", $55 db "reset settings.", $58 ; 0x1c560b UnknownText_0x1c560b: ; 0x1c560b db $0, "Wrong password!", $58 ; 0x1c561c UnknownText_0x1c561c: ; 0x1c561c db $0, "Reset the clock?", $57 ; 0x1c562e UnknownText_0x1c562e: ; 0x1c562e db $0, "Please enter the", $4f db "password.", $57 ; 0x1c564a UnknownText_0x1c564a: ; 0x1c564a db $0, "Clear all save", $4f db "data?", $57 ; 0x1c5660 UnknownText_0x1c5660: ; 0x1c5660 text_from_ram $d050 db $0, " learned", $4f db "@" text_from_ram $d086 db $0, "!@" sound0 text_waitbutton db $50 ; 0x1c5677 UnknownText_0x1c5677: ; 0x1c5677 db $50 ; 0x1c5678 UnknownText_0x1c5678: ; 0x1c5678 db $0, "Which move should", $4e, "be forgotten?", $57 ; 0x1c5699 UnknownText_0x1c5699: ; 0x1c5699 db $0, "Stop learning", $4f db "@" text_from_ram $d086 db $0, "?", $57 ; 0x1c56af UnknownText_0x1c56af: ; 0x1c56af text_from_ram $d050 db $0, $4f db "did not learn", $55 db "@" text_from_ram $d086 db $0, ".", $58 ; 0x1c56c9 UnknownText_0x1c56c9: ; 0x1c56c9 text_from_ram $d050 db $0, " is", $4f db "trying to learn", $55 db "@" text_from_ram $d086 db $0, ".", $51 db "But @" text_from_ram $d050 db $0, $4f db "can't learn more", $55 db "than four moves.", $51 db "Delete an older", $4f db "move to make room", $55 db "for @" text_from_ram $d086 db $0, "?", $57 ; 0x1c5740 UnknownText_0x1c5740: ; 0x1c5740 db $0, "1, 2 and…@" interpret_data db $50 ; 0x1c574d UnknownText_0x1c574d: ; 0x1c574d db $50 ; 0x1c574e UnknownText_0x1c574e: ; 0x1c574e db $0, " Poof!@" interpret_data db $0, $51 db "@" text_from_ram $d050 db $0, " forgot", $4f db "@" text_from_ram $d073 db $0, ".", $51 db "And…", $58 ; 0x1c5772 UnknownText_0x1c5772: ; 0x1c5772 db $0, "HM moves can't be", $4f db "forgotten now.", $58 ; 0x1c5793 UnknownText_0x1c5793: ; 0x1c5793 db $0, "Play with three", $4f db "coins?", $57 ; 0x1c57ab UnknownText_0x1c57ab: ; 0x1c57ab db $0, "Not enough coins…", $58 ; 0x1c57be UnknownText_0x1c57be: ; 0x1c57be db $0, "Choose a card.", $57 ; 0x1c57ce UnknownText_0x1c57ce: ; 0x1c57ce db $0, "Place your bet.", $57 ; 0x1c57df UnknownText_0x1c57df: ; 0x1c57df db $0, "Want to play", $4f db "again?", $57 ; 0x1c57f4 UnknownText_0x1c57f4: ; 0x1c57f4 db $0, "The cards have", $4f db "been shuffled.", $58 ; 0x1c5813 UnknownText_0x1c5813: ; 0x1c5813 db $0, "Yeah!", $57 ; 0x1c581a UnknownText_0x1c581a: ; 0x1c581a db $0, "Darn…", $57 ; 0x1c5821 UnknownText_0x1c5821: ; 0x1c5821 current_day db $50 ; 0x1c5823 UnknownText_0x1c5823: ; 0x1c5823 db $50 ; 0x1c5824 UnknownText_0x1c5824: ; 0x1c5824 db $0, $56, $57 ; 0x1c5827 UnknownText_0x1c5827: ; 0x1c5827 db $0, "You're out of the", $4f db "service area.", $58 ; 0x1c5847 UnknownText_0x1c5847: ; 0x1c5847 db $0, "Whom do you want", $4f db "to call?", $57 ; 0x1c5862 UnknownText_0x1c5862: ; 0x1c5862 db $0, "Press any button", $4f db "to exit.", $57 ; 0x1c587d UnknownText_0x1c587d: ; 0x1c587d db $0, "Delete this stored", $4f db "phone number?", $57 ; 0x1c589f UnknownText_0x1c589f: ; 0x1c589f db $0, "Which prize would", $4f db "you like?", $57 ; 0x1c58bc UnknownText_0x1c58bc: ; 0x1c58bc text_from_ram $d073 db $0, "?", $4f db "Is that right?", $57 ; 0x1c58d1 UnknownText_0x1c58d1: ; 0x1c58d1 db $0, "Here you go!", $51 db $57 ; 0x1c58e0 UnknownText_0x1c58e0: ; 0x1c58e0 db $0, "You don't have", $4f db "enough points.", $51 db $57 ; 0x1c58ff UnknownText_0x1c58ff: ; 0x1c58ff db $0, "You have no room", $4f db "for it.", $51 db $57 ; 0x1c591a UnknownText_0x1c591a: ; 0x1c591a db $0, "Oh. Please come", $4f db "back again!", $57 ; 0x1c5937 UnknownText_0x1c5937: ; 0x1c5937 db $0, "Excuse me!", $51 db $57 ; 0x1c5944 UnknownText_0x1c5944: ; 0x1c5944 db $0, "Excuse me.", $4f db "You're not ready.", $51 db $57 ; 0x1c5962 UnknownText_0x1c5962: ; 0x1c5962 db $0, "Please return when", $4f db "you're ready.", $57 ; 0x1c5983 UnknownText_0x1c5983: ; 0x1c5983 db $0, "You need at least", $4f db "three #MON.", $51 db $57 ; 0x1c59a3 UnknownText_0x1c59a3: ; 0x1c59a3 db $0, "Sorry, an EGG", $4f db "doesn't qualify.", $51 db $57 ; 0x1c59c3 UnknownText_0x1c59c3: ; 0x1c59c3 db $0, "Only three #MON", $4f db "may be entered.", $51 db $57 ; 0x1c59e5 UnknownText_0x1c59e5: ; 0x1c59e5 db $0, "The @" text_from_ram $d086 db $0, " #MON", $4f db "must all be", $55 db "different kinds.", $51 db $57 ; 0x1c5a13 UnknownText_0x1c5a13: ; 0x1c5a13 db $0, "The @" text_from_ram $d086 db $0, " #MON", $4f db "must not hold the", $55 db "same items.", $51 db $57 ; 0x1c5a42 UnknownText_0x1c5a42: ; 0x1c5a42 db $0, "You can't take an", $4f db "EGG!", $51 db $57 ; 0x1c5a5a UnknownText_0x1c5a5a: ; 0x1c5a5a db $0, "It dodged the", $4f db "thrown BALL!", $51 db "This #MON", $4f db "can't be caught!", $58 ; 0x1c5a90 UnknownText_0x1c5a90: ; 0x1c5a90 db $0, "You missed the", $4f db "#MON!", $58 ; 0x1c5aa6 UnknownText_0x1c5aa6: ; 0x1c5aa6 db $0, "Oh no! The #MON", $4f db "broke free!", $58 ; 0x1c5ac3 UnknownText_0x1c5ac3: ; 0x1c5ac3 db $0, "Aww! It appeared", $4f db "to be caught!", $58 ; 0x1c5ae3 UnknownText_0x1c5ae3: ; 0x1c5ae3 db $0, "Aargh!", $4f db "Almost had it!", $58 ; 0x1c5afa UnknownText_0x1c5afa: ; 0x1c5afa db $0, "Shoot! It was so", $4f db "close too!", $58 ; 0x1c5b17 UnknownText_0x1c5b17: ; 0x1c5b17 db $0, "Gotcha! @" text_from_ram $c616 db $0, $4f db "was caught!@" sound0x02 db $50 ; 0x1c5b34 UnknownText_0x1c5b34: ; 0x1c5b34 db $50 ; 0x1c5b35 UnknownText_0x1c5b35: ; 0x1c5b35 text_waitbutton db $50 ; 0x1c5b37 UnknownText_0x1c5b37: ; 0x1c5b37 db $50 ; 0x1c5b38 UnknownText_0x1c5b38: ; 0x1c5b38 text_from_ram $d050 db $0, " was", $4f db "sent to BILL's PC.", $58 ; 0x1c5b53 UnknownText_0x1c5b53: ; 0x1c5b53 text_from_ram $c616 db $0, "'s data", $4f db "was newly added to", $55 db "the #DEX.@" sound0x2C text_waitbutton db $50 ; 0x1c5b7e UnknownText_0x1c5b7e: ; 0x1c5b7e db $50 ; 0x1c5b7f UnknownText_0x1c5b7f: ; 0x1c5b7f db $0, "Give a nickname to", $4f db "@" text_from_ram $d073 db $0, "?", $57 ; 0x1c5b9a UnknownText_0x1c5b9a: ; 0x1c5b9a text_from_ram $d073 db $0, "'s", $4f db "@" text_from_ram $d086 db $0, " rose.", $58 ; 0x1c5bac UnknownText_0x1c5bac: ; 0x1c5bac db $0, "That can't be used", $4f db "on this #MON.", $58 ; 0x1c5bcd UnknownText_0x1c5bcd: ; 0x1c5bcd db $0, "The REPEL used", $4f db "earlier is still", $55 db "in effect.", $58 ; 0x1c5bf9 UnknownText_0x1c5bf9: ; 0x1c5bf9 db $0, "Played the #", $4f db "FLUTE.", $51 db "Now, that's a", $4f db "catchy tune!", $58 ; 0x1c5c28 UnknownText_0x1c5c28: ; 0x1c5c28 db $0, "All sleeping", $4f db "#MON woke up.", $58 ; 0x1c5c44 UnknownText_0x1c5c44: ; 0x1c5c44 db $0, $52, " played the", $4f db "# FLUTE.@" text_waitbutton db $50 ; 0x1c5c5d UnknownText_0x1c5c5d: ; 0x1c5c5d db $50 ; 0x1c5c5e UnknownText_0x1c5c5e: ; 0x1c5c5e db $0, "You now have", $4f db "@" deciram $dc4b, $12 db $0, " points.", $57 ; 0x1c5c7b UnknownText_0x1c5c7b: ; 0x1c5c7b db $0, "Coins:", $4f db "@" deciram $d855, $24 db $50 ; 0x1c5c89 UnknownText_0x1c5c89: ; 0x1c5c89 db $50 ; 0x1c5c8a UnknownText_0x1c5c8a: ; 0x1c5c8a db $0, "Raise the PP of", $4f db "which move?", $57 ; 0x1c5ca7 UnknownText_0x1c5ca7: ; 0x1c5ca7 db $0, "Restore the PP of", $4f db "which move?", $57 ; 0x1c5cc6 UnknownText_0x1c5cc6: ; 0x1c5cc6 text_from_ram $d086 db $0, "'s PP", $4f db "is maxed out.", $58 ; 0x1c5cdd UnknownText_0x1c5cdd: ; 0x1c5cdd text_from_ram $d086 db $0, "'s PP", $4f db "increased.", $58 ; 0x1c5cf1 UnknownText_0x1c5cf1: ; 0x1c5cf1 db $0, "PP was restored.", $58 ; 0x1c5d03 UnknownText_0x1c5d03: ; 0x1c5d03 db $0, "There was a trophy", $4f db "inside!@" sound0 db $0, $51 db "@" text_from_ram PlayerName db $0, " sent the", $4f db "trophy home.", $58 ; 0x1c5d3e UnknownText_0x1c5d3e: ; 0x1c5d3e db $0, "It looks bitter…", $58 ; 0x1c5d50 UnknownText_0x1c5d50: ; 0x1c5d50 db $0, "That can't be used", $4f db "on an EGG.", $58 ; 0x1c5d6e UnknownText_0x1c5d6e: ; 0x1c5d6e db $0, "OAK: ", $52, "!", $4f db "This isn't the", $55 db "time to use that!", $58 ; 0x1c5d97 UnknownText_0x1c5d97: ; 0x1c5d97 db $0, "That belongs to", $4f db "someone else!", $58 ; 0x1c5db6 UnknownText_0x1c5db6: ; 0x1c5db6 db $0, "It won't have any", $4f db "effect.", $58 ; 0x1c5dd0 UnknownText_0x1c5dd0: ; 0x1c5dd0 db $0, "The trainer", $4f db "blocked the BALL!", $58 ; 0x1c5def UnknownText_0x1c5def: ; 0x1c5def db $0, "Don't be a thief!", $58 ; 0x1c5e01 UnknownText_0x1c5e01: ; 0x1c5e01 db $0, "Cycling isn't", $4f db "allowed here.", $58 ; 0x1c5e1d UnknownText_0x1c5e1d: ; 0x1c5e1d db $0, "Can't get on your", $4f db "@" text_from_ram $d073 db $0, " now.", $58 ; 0x1c5e3a UnknownText_0x1c5e3a: ; 0x1c5e3a db $0, "The #MON BOX", $4f db "is full. That", $55 db "can't be used now.", $58 ; 0x1c5e68 UnknownText_0x1c5e68: ; 0x1c5e68 db $0, $52, " used the@" text_dunno1 text_from_ram $d086 db $0, ".", $57 ; 0x1c5e7b UnknownText_0x1c5e7b: ; 0x1c5e7b db $0, $52, " got on the@" text_dunno1 text_from_ram $d086 db $0, ".", $58 ; 0x1c5e90 UnknownText_0x1c5e90: ; 0x1c5e90 db $0, $52, " got off@" text_dunno1 db $0, "the @" text_from_ram $d086 db $0, ".", $58 ; 0x1c5ea8 UnknownText_0x1c5ea8: ; 0x1c5ea8 text_from_ram $d073 db $0, " knows", $4f db "@" text_from_ram $d086 db $0, ".", $58 ; 0x1c5eba UnknownText_0x1c5eba: ; 0x1c5eba db $0, "That #MON knows", $4f db "only one move.", $57 ; 0x1c5eda UnknownText_0x1c5eda: ; 0x1c5eda db $0, "Oh, make it forget", $4f db "@" text_from_ram $d073 db $0, "?", $57 ; 0x1c5ef5 UnknownText_0x1c5ef5: ; 0x1c5ef5 db $0, "Done! Your #MON", $4f db "forgot the move.", $57 ; 0x1c5f17 UnknownText_0x1c5f17: ; 0x1c5f17 db $0, "An EGG doesn't", $4f db "know any moves!", $57 ; 0x1c5f36 UnknownText_0x1c5f36: ; 0x1c5f36 db $0, "No? Come visit me", $4f db "again.", $57 ; 0x1c5f50 UnknownText_0x1c5f50: ; 0x1c5f50 db $0, "Which move should", $4f db "it forget, then?", $58 ; 0x1c5f74 UnknownText_0x1c5f74: ; 0x1c5f74 db $0, "Um… Oh, yes, I'm", $4f db "the MOVE DELETER.", $51 db "I can make #MON", $4f db "forget moves.", $51 db "Shall I make a", $4f db "#MON forget?", $57 ; 0x1c5fd1 UnknownText_0x1c5fd1: ; 0x1c5fd1 db $0, "Which #MON?", $58 ; 0x1c5fde UnknownText_0x1c5fde: ; 0x1c5fde db $0, " DST,", $4f db "is that OK?", $57 ; 0x1c5ff1 UnknownText_0x1c5ff1: ; 0x1c5ff1 db $0, ",", $4f db "is that OK?", $57 ; 0x1c6000 UnknownText_0x1c6000: ; 0x1c6000 db $0, "Do you want to", $4f db "switch to Daylight", $55 db "Saving Time?", $57 ; 0x1c6030 UnknownText_0x1c6030: ; 0x1c6030 db $0, "I set the clock", $4f db "forward by one", $55 db "hour.", $58 ; 0x1c6056 UnknownText_0x1c6056: ; 0x1c6056 db $0, "Is Daylight Saving", $4f db "Time over?", $57 ; 0x1c6075 UnknownText_0x1c6075: ; 0x1c6075 db $0, "I put the clock", $4f db "back one hour.", $58 ; 0x1c6095 UnknownText_0x1c6095: ; 0x1c6095 db $0, "Do you want to", $4f db "adjust your clock", $51 db "for Daylight", $4f db "Saving Time?", $57 ; 0x1c60d1 UnknownText_0x1c60d1: ; 0x1c60d1 db $0, "I lost the in-", $4f db "struction booklet", $55 db "for the #GEAR.", $51 db "Come back again in", $4f db "a while.", $58 ; 0x1c611e SECTION "bank72",DATA,BANK[$72] ItemNames: db "MASTER BALL@" db "ULTRA BALL@" db "BRIGHTPOWDER@" db "GREAT BALL@" db "# BALL@" db "TERU-SAMA@" db "BICYCLE@" 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 "ESCAPE ROPE@" db "REPEL@" db "MAX ELIXER@" db "FIRE STONE@" db "THUNDERSTONE@" db "WATER STONE@" db "TERU-SAMA@" db "HP UP@" db "PROTEIN@" db "IRON@" db "CARBOS@" db "LUCKY PUNCH@" db "CALCIUM@" db "RARE CANDY@" db "X ACCURACY@" db "LEAF STONE@" db "METAL POWDER@" db "NUGGET@" db "# DOLL@" db "FULL HEAL@" db "REVIVE@" db "MAX REVIVE@" db "GUARD SPEC.@" db "SUPER REPEL@" db "MAX REPEL@" db "DIRE HIT@" db "TERU-SAMA@" db "FRESH WATER@" db "SODA POP@" db "LEMONADE@" db "X ATTACK@" db "TERU-SAMA@" db "X DEFEND@" db "X SPEED@" db "X SPECIAL@" db "COIN CASE@" db "ITEMFINDER@" db "TERU-SAMA@" db "EXP.SHARE@" db "OLD ROD@" db "GOOD ROD@" db "SILVER LEAF@" db "SUPER ROD@" db "PP UP@" db "ETHER@" db "MAX ETHER@" db "ELIXER@" db "RED SCALE@" db "SECRETPOTION@" db "S.S.TICKET@" db "MYSTERY EGG@" db "CLEAR BELL@" db "SILVER WING@" db "MOOMOO MILK@" db "QUICK CLAW@" db "PSNCUREBERRY@" db "GOLD LEAF@" db "SOFT SAND@" db "SHARP BEAK@" db "PRZCUREBERRY@" db "BURNT BERRY@" db "ICE BERRY@" db "POISON BARB@" db "KING'S ROCK@" db "BITTER BERRY@" db "MINT BERRY@" db "RED APRICORN@" db "TINYMUSHROOM@" db "BIG MUSHROOM@" db "SILVERPOWDER@" db "BLU APRICORN@" db "TERU-SAMA@" db "AMULET COIN@" db "YLW APRICORN@" db "GRN APRICORN@" db "CLEANSE TAG@" db "MYSTIC WATER@" db "TWISTEDSPOON@" db "WHT APRICORN@" db "BLACKBELT@" db "BLK APRICORN@" db "TERU-SAMA@" db "PNK APRICORN@" db "BLACKGLASSES@" db "SLOWPOKETAIL@" db "PINK BOW@" db "STICK@" db "SMOKE BALL@" db "NEVERMELTICE@" db "MAGNET@" db "MIRACLEBERRY@" db "PEARL@" db "BIG PEARL@" db "EVERSTONE@" db "SPELL TAG@" db "RAGECANDYBAR@" db "GS BALL@" db "BLUE CARD@" db "MIRACLE SEED@" db "THICK CLUB@" db "FOCUS BAND@" db "TERU-SAMA@" db "ENERGYPOWDER@" db "ENERGY ROOT@" db "HEAL POWDER@" db "REVIVAL HERB@" db "HARD STONE@" db "LUCKY EGG@" db "CARD KEY@" db "MACHINE PART@" db "EGG TICKET@" db "LOST ITEM@" db "STARDUST@" db "STAR PIECE@" db "BASEMENT KEY@" db "PASS@" db "TERU-SAMA@" db "TERU-SAMA@" db "TERU-SAMA@" db "CHARCOAL@" db "BERRY JUICE@" db "SCOPE LENS@" db "TERU-SAMA@" db "TERU-SAMA@" db "METAL COAT@" db "DRAGON FANG@" db "TERU-SAMA@" db "LEFTOVERS@" db "TERU-SAMA@" db "TERU-SAMA@" db "TERU-SAMA@" db "MYSTERYBERRY@" db "DRAGON SCALE@" db "BERSERK GENE@" db "TERU-SAMA@" db "TERU-SAMA@" db "TERU-SAMA@" db "SACRED ASH@" db "HEAVY BALL@" db "FLOWER MAIL@" db "LEVEL BALL@" db "LURE BALL@" db "FAST BALL@" db "TERU-SAMA@" db "LIGHT BALL@" db "FRIEND BALL@" db "MOON BALL@" db "LOVE BALL@" db "NORMAL BOX@" db "GORGEOUS BOX@" db "SUN STONE@" db "POLKADOT BOW@" db "TERU-SAMA@" db "UP-GRADE@" db "BERRY@" db "GOLD BERRY@" db "SQUIRTBOTTLE@" db "TERU-SAMA@" db "PARK BALL@" db "RAINBOW WING@" db "TERU-SAMA@" db "BRICK PIECE@" db "SURF MAIL@" db "LITEBLUEMAIL@" db "PORTRAITMAIL@" db "LOVELY MAIL@" db "EON MAIL@" db "MORPH MAIL@" db "BLUESKY MAIL@" db "MUSIC MAIL@" db "MIRAGE MAIL@" db "TERU-SAMA@" db "TM01@" db "TM02@" db "TM03@" db "TM04@" db "TERU-SAMA@" db "TM05@" db "TM06@" db "TM07@" db "TM08@" db "TM09@" db "TM10@" db "TM11@" db "TM12@" db "TM13@" db "TM14@" db "TM15@" db "TM16@" db "TM17@" db "TM18@" db "TM19@" db "TM20@" db "TM21@" db "TM22@" db "TM23@" db "TM24@" db "TM25@" db "TM26@" db "TM27@" db "TM28@" db "TERU-SAMA@" db "TM29@" db "TM30@" db "TM31@" db "TM32@" db "TM33@" db "TM34@" db "TM35@" db "TM36@" db "TM37@" db "TM38@" db "TM39@" db "TM40@" db "TM41@" db "TM42@" db "TM43@" db "TM44@" db "TM45@" db "TM46@" db "TM47@" db "TM48@" db "TM49@" db "TM50@" db "HM01@" db "HM02@" db "HM03@" db "HM04@" db "HM05@" db "HM06@" db "HM07@" db "TERU-SAMA@" db "TERU-SAMA@" db "TERU-SAMA@" db "TERU-SAMA@" db "TERU-SAMA@" db "TERU-SAMA@" db "?@" GetItemDescription: ; 0x1c8955 ld a, [$cf60] cp TM_01 jr c, .nomovedesc ; if not a TM, use a predefined string ld [$d106], a push de ld a, $b ; XXX replace this with BANK(label) ld hl, $47b6 ; XXX replace this with label rst FarCall pop hl ld a, [$d265] ld [$cf60], a ld a, $11 call Predef ret .nomovedesc push de ld hl, ItemDescriptions ld a, [$cf60] dec a ld c, a ld b, $0 add hl, bc add hl, bc ld e, [hl] inc hl ld d, [hl] pop hl jp PlaceString ; 0x1c8987 ItemDescriptions: dw MasterBallDesc dw UltraBallDesc dw BrightpowderDesc dw GreatBallDesc dw PokeBallDesc dw TeruSama1Desc dw BicycleDesc dw MoonStoneDesc dw AntidoteDesc dw BurnHealDesc dw IceHealDesc dw AwakeningDesc dw ParlyzHealDesc dw FullRestoreDesc dw MaxPotionDesc dw HyperPotionDesc dw SuperPotionDesc dw PotionDesc dw EscapeRopeDesc dw RepelDesc dw MaxElixerDesc dw FireStoneDesc dw ThunderStoneDesc dw WaterStoneDesc dw TeruSama2Desc dw HPUpDesc dw ProteinDesc dw IronDesc dw CarbosDesc dw LuckyPunchDesc dw CalciumDesc dw RareCandyDesc dw XAccuracyDesc dw LeafStoneDesc dw MetalPowderDesc dw NuggetDesc dw PokeDollDesc dw FullHealDesc dw ReviveDesc dw MaxReviveDesc dw GuardSpecDesc dw SuperRepelDesc dw MaxRepelDesc dw DireHitDesc dw TeruSama3Desc dw FreshWaterDesc dw SodaPopDesc dw LemonadeDesc dw XAttackDesc dw TeruSama4Desc dw XDefendDesc dw XSpeedDesc dw XSpecialDesc dw CoinCaseDesc dw ItemfinderDesc dw TeruSama5Desc dw ExpShareDesc dw OldRodDesc dw GoodRodDesc dw SilverLeafDesc dw SuperRodDesc dw PPUpDesc dw EtherDesc dw MaxEtherDesc dw ElixerDesc dw RedScaleDesc dw SecretPotionDesc dw SSTicketDesc dw MysteryEggDesc dw ClearBellDesc dw SilverWingDesc dw MoomooMilkDesc dw QuickClawDesc dw PsnCureBerryDesc dw GoldLeafDesc dw SoftSandDesc dw SharpBeakDesc dw PrzCureBerryDesc dw BurntBerryDesc dw IceBerryDesc dw PoisonBarbDesc dw KingsRockDesc dw BitterBerryDesc dw MintBerryDesc dw RedApricornDesc dw TinyMushroomDesc dw BigMushroomDesc dw SilverPowderDesc dw BluApricornDesc dw TeruSama6Desc dw AmuletCoinDesc dw YlwApricornDesc dw GrnApricornDesc dw CleanseTagDesc dw MysticWaterDesc dw TwistedSpoonDesc dw WhtApricornDesc dw BlackbeltDesc dw BlkApricornDesc dw TeruSama7Desc dw PnkApricornDesc dw BlackGlassesDesc dw SlowpokeTailDesc dw PinkBowDesc dw StickDesc dw SmokeBallDesc dw NeverMeltIceDesc dw MagnetDesc dw MiracleBerryDesc dw PearlDesc dw BigPearlDesc dw EverStoneDesc dw SpellTagDesc dw RageCandyBarDesc dw GSBallDesc dw BlueCardDesc dw MiracleSeedDesc dw ThickClubDesc dw FocusBandDesc dw TeruSama8Desc dw EnergyPowderDesc dw EnergyRootDesc dw HealPowderDesc dw RevivalHerbDesc dw HardStoneDesc dw LuckyEggDesc dw CardKeyDesc dw MachinePartDesc dw EggTicketDesc dw LostItemDesc dw StardustDesc dw StarPieceDesc dw BasementKeyDesc dw PassDesc dw TeruSama9Desc dw TeruSama10Desc dw TeruSama11Desc dw CharcoalDesc dw BerryJuiceDesc dw ScopeLensDesc dw TeruSama12Desc dw TeruSama13Desc dw MetalCoatDesc dw DragonFangDesc dw TeruSama14Desc dw LeftoversDesc dw TeruSama15Desc dw TeruSama16Desc dw TeruSama17Desc dw MysteryBerryDesc dw DragonScaleDesc dw BerserkGeneDesc dw TeruSama18Desc dw TeruSama19Desc dw TeruSama20Desc dw SacredAshDesc dw HeavyBallDesc dw FlowerMailDesc dw LevelBallDesc dw LureBallDesc dw FastBallDesc dw TeruSama21Desc dw LightBallDesc dw FriendBallDesc dw MoonBallDesc dw LoveBallDesc dw NormalBoxDesc dw GorgeousBoxDesc dw SunStoneDesc dw PolkadotBowDesc dw TeruSama22Desc dw UpGradeDesc dw BerryDesc dw GoldBerryDesc dw SquirtBottleDesc dw TeruSama23Desc dw ParkBallDesc dw RainbowWingDesc dw TeruSama24Desc dw BrickPieceDesc dw SurfMailDesc dw LiteBlueMailDesc dw PortraitMailDesc dw LovelyMailDesc dw EonMailDesc dw MorphMailDesc dw BlueSkyMailDesc dw MusicMailDesc dw MewMailDesc dw TeruSama25Desc dw TeruSama26Desc dw TeruSama26Desc dw TeruSama26Desc dw TeruSama26Desc dw TeruSama26Desc dw TeruSama27Desc dw TeruSama27Desc dw TeruSama27Desc dw TeruSama27Desc dw TeruSama27Desc dw TeruSama27Desc dw TeruSama27Desc dw TeruSama27Desc dw TeruSama27Desc dw TeruSama27Desc dw TeruSama27Desc dw TeruSama27Desc dw TeruSama27Desc dw TeruSama27Desc dw TeruSama27Desc dw TeruSama27Desc dw TeruSama27Desc dw TeruSama27Desc dw TeruSama27Desc dw TeruSama27Desc dw TeruSama27Desc dw TeruSama27Desc dw TeruSama27Desc dw TeruSama27Desc dw TeruSama27Desc dw TeruSama28Desc dw TeruSama28Desc dw TeruSama28Desc dw TeruSama28Desc dw TeruSama28Desc dw TeruSama28Desc dw TeruSama28Desc dw TeruSama28Desc dw TeruSama28Desc dw TeruSama28Desc dw TeruSama28Desc dw TeruSama28Desc dw TeruSama28Desc dw TeruSama28Desc dw TeruSama28Desc dw TeruSama28Desc dw TeruSama28Desc dw TeruSama28Desc dw TeruSama28Desc dw TeruSama28Desc dw TeruSama28Desc dw TeruSama28Desc dw TeruSama28Desc dw TeruSama28Desc dw TeruSama28Desc dw TeruSama28Desc dw TeruSama28Desc dw TeruSama28Desc dw TeruSama28Desc dw TeruSama28Desc dw TeruSama29Desc dw TeruSama30Desc dw TeruSama31Desc dw TeruSama32Desc dw TeruSama33Desc MasterBallDesc: db "The best BALL. It",$4E db "never misses.@" UltraBallDesc: db "A BALL with a high",$4E db "rate of success.@" BrightpowderDesc: db "Lowers the foe's",$4E db "accuracy. (HOLD)@" GreatBallDesc: db "A BALL with a de-",$4E db "cent success rate.@" PokeBallDesc: db "An item for catch-",$4E db "ing #MON.@" TeruSama1Desc: db "?@" BicycleDesc: db "A collapsible bike",$4E db "for fast movement.@" MoonStoneDesc: db "Evolves certain",$4E db "kinds of #MON.@" AntidoteDesc: db "Cures poisoned",$4E db "#MON.@" BurnHealDesc: db "Heals burned",$4E db "#MON.@" IceHealDesc: db "Defrosts frozen",$4E db "#MON.@" AwakeningDesc: db "Awakens sleeping",$4E db "#MON.@" ParlyzHealDesc: db "Heals paralyzed",$4E db "#MON.@" FullRestoreDesc: db "Fully restores HP",$4E db "& status.@" MaxPotionDesc: db "Fully restores",$4E db "#MON HP.@" HyperPotionDesc: db "Restores #MON",$4E db "HP by 200.@" SuperPotionDesc: db "Restores #MON",$4E db "HP by 50.@" PotionDesc: db "Restores #MON",$4E db "HP by 20.@" EscapeRopeDesc: db "Use for escaping",$4E db "from caves, etc.@" RepelDesc: db "Repels weak #-",$4E db "MON for 100 steps.@" MaxElixerDesc: db "Fully restores the",$4E db "PP of one #MON.@" FireStoneDesc: db "Evolves certain",$4E db "kinds of #MON.@" ThunderStoneDesc: db "Evolves certain",$4E db "kinds of #MON.@" WaterStoneDesc: db "Evolves certain",$4E db "kinds of #MON.@" TeruSama2Desc: db "?@" HPUpDesc: db "Raises the HP of",$4E db "one #MON.@" ProteinDesc: db "Raises ATTACK of",$4E db "one #MON.@" IronDesc: db "Raises DEFENSE of",$4E db "one #MON.@" CarbosDesc: db "Raises SPEED of",$4E db "one #MON.@" LuckyPunchDesc: db "Ups critical hit",$4E db "ratio of CHANSEY.@" CalciumDesc: db "Ups SPECIAL stats",$4E db "of one #MON.@" RareCandyDesc: db "Raises level of a",$4E db "#MON by one.@" XAccuracyDesc: db "Raises accuracy.",$4E db "(1 BTL)@" LeafStoneDesc: db "Evolves certain",$4E db "kinds of #MON.@" MetalPowderDesc: db "Raises DEFENSE of",$4E db "DITTO. (HOLD)@" NuggetDesc: db "Made of pure gold.",$4E db "Sell high.@" PokeDollDesc: db "Use to escape from",$4E db "a wild #MON.@" FullHealDesc: db "Eliminates all",$4E db "status problems.@" ReviveDesc: db "Restores a fainted",$4E db "#MON to 1/2 HP.@" MaxReviveDesc: db "Fully restores a",$4E db "fainted #MON.@" GuardSpecDesc: db "Prevents stats",$4E db "reduction. (1 BTL)@" SuperRepelDesc: db "Repels weak #-",$4E db "MON for 200 steps.@" MaxRepelDesc: db "Repels weak #-",$4E db "MON for 250 steps.@" DireHitDesc: db "Ups critical hit",$4E db "ratio. (1 BTL)@" TeruSama3Desc: db "?@" FreshWaterDesc: db "Restores #MON",$4E db "HP by 50.@" SodaPopDesc: db "Restores #MON",$4E db "HP by 60.@" LemonadeDesc: db "Restores #MON",$4E db "HP by 80.@" XAttackDesc: db "Raises ATTACK.",$4E db "(1 BTL)@" TeruSama4Desc: db "?@" XDefendDesc: db "Raises DEFENSE.",$4E db "(1 BTL)@" XSpeedDesc: db "Raises SPEED.",$4E db "(1 BTL)@" XSpecialDesc: db "Raises SPECIAL",$4E db "ATTACK. (1 BTL)@" CoinCaseDesc: db "Holds up to 9,999",$4E db "game coins.@" ItemfinderDesc: db "Checks for unseen",$4E db "items in the area.@" TeruSama5Desc: db "?@" ExpShareDesc: db "Shares battle EXP.",$4E db "Points. (HOLD)@" OldRodDesc: db "Use by water to",$4E db "fish for #MON.@" GoodRodDesc: db "A good ROD for",$4E db "catching #MON.@" SilverLeafDesc: db "A strange, silver-",$4E db "colored leaf.@" SuperRodDesc: db "The best ROD for",$4E db "catching #MON.@" PPUpDesc: db "Raises max PP of",$4E db "a selected move.@" EtherDesc: db "Restores PP of one",$4E db "move by 10.@" MaxEtherDesc: db "Fully restores PP",$4E db "of one move.@" ElixerDesc: db "Restores PP of all",$4E db "moves by 10.@" RedScaleDesc: db "A scale from the",$4E db "red GYARADOS.@" SecretPotionDesc: db "Fully heals any",$4E db "#MON.@" SSTicketDesc: db "A ticket for the",$4E db "S.S.AQUA.@" MysteryEggDesc: db "An EGG obtained",$4E db "from MR.#MON.@" ClearBellDesc: db "Makes a gentle",$4E db "ringing.@" SilverWingDesc: db "A strange, silver-",$4E db "colored feather.@" MoomooMilkDesc: db "Restores #MON",$4E db "HP by 100.@" QuickClawDesc: db "Raises 1st strike",$4E db "ratio. (HOLD)@" PsnCureBerryDesc: db "A self-cure for",$4E db "poison. (HOLD)@" GoldLeafDesc: db "A strange, gold-",$4E db "colored leaf.@" SoftSandDesc: db "Powers up ground-",$4E db "type moves. (HOLD)@" SharpBeakDesc: db "Powers up flying-",$4E db "type moves. (HOLD)@" PrzCureBerryDesc: db "A self-cure for",$4E db "paralysis. (HOLD)@" BurntBerryDesc: db "A self-cure for",$4E db "freezing. (HOLD)@" IceBerryDesc: db "A self-heal for a",$4E db "burn. (HOLD)@" PoisonBarbDesc: db "Powers up poison-",$4E db "type moves. (HOLD)@" KingsRockDesc: db "May make the foe",$4E db "flinch. (HOLD)@" BitterBerryDesc: db "A self-cure for",$4E db "confusion. (HOLD)@" MintBerryDesc: db "A self-awakening",$4E db "for sleep. (HOLD)@" RedApricornDesc: db "A red APRICORN.@" TinyMushroomDesc: db "An ordinary mush-",$4E db "room. Sell low.@" BigMushroomDesc: db "A rare mushroom.",$4E db "Sell high.@" SilverPowderDesc: db "Powers up bug-type",$4E db "moves. (HOLD)@" BluApricornDesc: db "A blue APRICORN.@" TeruSama6Desc: db "?@" AmuletCoinDesc: db "Doubles monetary",$4E db "earnings. (HOLD)@" YlwApricornDesc: db "A yellow APRICORN.@" GrnApricornDesc: db "A green APRICORN.@" CleanseTagDesc: db "Helps repel wild",$4E db "#MON. (HOLD)@" MysticWaterDesc: db "Powers up water-",$4E db "type moves. (HOLD)@" TwistedSpoonDesc: db "Powers up psychic-",$4E db "type moves. (HOLD)@" WhtApricornDesc: db "A white APRICORN.@" BlackbeltDesc: db "Boosts fighting-",$4E db "type moves. (HOLD)@" BlkApricornDesc: db "A black APRICORN.",$4E db "@" TeruSama7Desc: db "?@" PnkApricornDesc: db "A pink APRICORN.",$4E db "@" BlackGlassesDesc: db "Powers up dark-",$4E db "type moves. (HOLD)@" SlowpokeTailDesc: db "Very tasty. Sell",$4E db "high.@" PinkBowDesc: db "Powers up normal-",$4E db "type moves. (HOLD)@" StickDesc: db "An ordinary stick.",$4E db "Sell low.@" SmokeBallDesc: db "Escape from wild",$4E db "#MON. (HOLD)@" NeverMeltIceDesc: db "Powers up ice-type",$4E db "moves. (HOLD)@" MagnetDesc: db "Boosts electric-",$4E db "type moves. (HOLD)@" MiracleBerryDesc: db "Cures all status",$4E db "problems. (HOLD)@" PearlDesc: db "A beautiful pearl.",$4E db "Sell low.@" BigPearlDesc: db "A big, beautiful",$4E db "pearl. Sell high.@" EverStoneDesc: db "Stops evolution.",$4E db "(HOLD)@" SpellTagDesc: db "Powers up ghost-",$4E db "type moves. (HOLD)@" RageCandyBarDesc: db "Restores #MON",$4E db "HP by 20.@" GSBallDesc: db "The mysterious",$4E db "BALL.@" BlueCardDesc: db "Card to save",$4E db "points.@" MiracleSeedDesc: db "Powers up grass-",$4E db "type moves. (HOLD)@" ThickClubDesc: db "A bone of some",$4E db "sort. Sell low.@" FocusBandDesc: db "May prevent faint-",$4E db "ing. (HOLD)@" TeruSama8Desc: db "?@" EnergyPowderDesc: db "Restores #MON",$4E db "HP by 50. Bitter.@" EnergyRootDesc: db "Restores #MON",$4E db "HP by 200. Bitter.@" HealPowderDesc: db "Cures all status",$4E db "problems. Bitter.@" RevivalHerbDesc: db "Revives fainted",$4E db "#MON. Bitter.@" HardStoneDesc: db "Powers up rock-",$4E db "type moves. (HOLD)@" LuckyEggDesc: db "Earns extra EXP.",$4E db "points. (HOLD)@" CardKeyDesc: db "Opens shutters in",$4E db "the RADIO TOWER.@" MachinePartDesc: db "A machine part for",$4E db "the POWER PLANT.@" EggTicketDesc: db "May use at Golden-",$4E db "rod trade corner.@" LostItemDesc: db "The # DOLL lost",$4E db "by the COPYCAT.@" StardustDesc: db "Pretty, red sand.",$4E db "Sell high.@" StarPieceDesc: db "A hunk of red gem.",$4E db "Sell very high.@" BasementKeyDesc: db "Opens doors.@" PassDesc: db "A ticket for the",$4E db "MAGNET TRAIN.@" TeruSama9Desc: db "?@" TeruSama10Desc: db "?@" TeruSama11Desc: db "?@" CharcoalDesc: db "Powers up fire-",$4E db "type moves. (HOLD)@" BerryJuiceDesc: db "Restores #MON",$4E db "HP by 20.@" ScopeLensDesc: db "Raises critical",$4E db "hit ratio. (HOLD)@" TeruSama12Desc: db "?@" TeruSama13Desc: db "?@" MetalCoatDesc: db "Powers up steel-",$4E db "type moves. (HOLD)@" DragonFangDesc: db "Powers up dragon-",$4E db "type moves. (HOLD)@" TeruSama14Desc: db "?@" LeftoversDesc: db "Restores HP during",$4E db "battle. (HOLD)@" TeruSama15Desc: db "?@" TeruSama16Desc: db "?@" TeruSama17Desc: db "?@" MysteryBerryDesc: db "A self-restore",$4E db "for PP. (HOLD)@" DragonScaleDesc: db "A rare dragon-type",$4E db "item.@" BerserkGeneDesc: db "Boosts ATTACK but",$4E db "causes confusion.@" TeruSama18Desc: db "?@" TeruSama19Desc: db "?@" TeruSama20Desc: db "?@" SacredAshDesc: db "Fully revives all",$4E db "fainted #MON.@" HeavyBallDesc: db "A BALL for catch-",$4E db "ing heavy #MON.@" FlowerMailDesc: db "Flower-print MAIL.",$4E db "(HOLD)@" LevelBallDesc: db "A BALL for lower-",$4E db "level #MON.@" LureBallDesc: db "A BALL for #MON",$4E db "hooked by a ROD.@" FastBallDesc: db "A BALL for catch-",$4E db "ing fast #MON.@" TeruSama21Desc: db "?@" LightBallDesc: db "An odd, electrical",$4E db "orb. (HOLD)@" FriendBallDesc: db "A BALL that makes",$4E db "#MON friendly.@" MoonBallDesc: db "A BALL for MOON",$4E db "STONE evolvers.@" LoveBallDesc: db "For catching the",$4E db "opposite gender.@" NormalBoxDesc: db "Open it and see",$4E db "what's inside.@" GorgeousBoxDesc: db "Open it and see",$4E db "what's inside.@" SunStoneDesc: db "Evolves certain",$4E db "kinds of #MON.@" PolkadotBowDesc: db "Powers up normal-",$4E db "type moves. (HOLD)@" TeruSama22Desc: db "?@" UpGradeDesc: db "A mysterious box",$4E db "made by SILPH CO.@" BerryDesc: db "A self-restore",$4E db "item. (10HP, HOLD)@" GoldBerryDesc: db "A self-restore",$4E db "item. (30HP, HOLD)@" SquirtBottleDesc: db "A bottle used for",$4E db "watering plants.@" TeruSama23Desc: db "?@" ParkBallDesc: db "The Bug-Catching",$4E db "Contest BALL.@" RainbowWingDesc: db "A mystical feather",$4E db "of rainbow colors.@" TeruSama24Desc: db "?@" BrickPieceDesc: db "A rare chunk of",$4E db "tile.@" SurfMailDesc: db "LAPRAS-print MAIL.",$4E db "(HOLD)@" LiteBlueMailDesc: db "DRATINI-print",$4E db "MAIL. (HOLD)@" PortraitMailDesc: db "MAIL featuring the",$4E db "holder's likeness.@" LovelyMailDesc: db "Heart-print MAIL.",$4E db "(HOLD)@" EonMailDesc: db "EEVEE-print MAIL.",$4E db "(HOLD)@" MorphMailDesc: db "DITTO-print MAIL.",$4E db "(HOLD)@" BlueSkyMailDesc: db "Sky-print MAIL.",$4E db "(HOLD)@" MusicMailDesc: db "NATU-print MAIL.",$4E db "(HOLD)@" MewMailDesc: db "MEW-print MAIL.",$4E db "(HOLD)@" TeruSama25Desc: db "?@" TeruSama26Desc: db "?@" TeruSama27Desc: db "?@" TeruSama28Desc: db "?@" TeruSama29Desc: db "?@" TeruSama30Desc: db "?@" TeruSama31Desc: db "?@" TeruSama32Desc: db "?@" TeruSama33Desc: db "?@" MoveNames: 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@" db "SKETCH@" db "TRIPLE KICK@" db "THIEF@" db "SPIDER WEB@" db "MIND READER@" db "NIGHTMARE@" db "FLAME WHEEL@" db "SNORE@" db "CURSE@" db "FLAIL@" db "CONVERSION2@" db "AEROBLAST@" db "COTTON SPORE@" db "REVERSAL@" db "SPITE@" db "POWDER SNOW@" db "PROTECT@" db "MACH PUNCH@" db "SCARY FACE@" db "FAINT ATTACK@" db "SWEET KISS@" db "BELLY DRUM@" db "SLUDGE BOMB@" db "MUD-SLAP@" db "OCTAZOOKA@" db "SPIKES@" db "ZAP CANNON@" db "FORESIGHT@" db "DESTINY BOND@" db "PERISH SONG@" db "ICY WIND@" db "DETECT@" db "BONE RUSH@" db "LOCK-ON@" db "OUTRAGE@" db "SANDSTORM@" db "GIGA DRAIN@" db "ENDURE@" db "CHARM@" db "ROLLOUT@" db "FALSE SWIPE@" db "SWAGGER@" db "MILK DRINK@" db "SPARK@" db "FURY CUTTER@" db "STEEL WING@" db "MEAN LOOK@" db "ATTRACT@" db "SLEEP TALK@" db "HEAL BELL@" db "RETURN@" db "PRESENT@" db "FRUSTRATION@" db "SAFEGUARD@" db "PAIN SPLIT@" db "SACRED FIRE@" db "MAGNITUDE@" db "DYNAMICPUNCH@" db "MEGAHORN@" db "DRAGONBREATH@" db "BATON PASS@" db "ENCORE@" db "PURSUIT@" db "RAPID SPIN@" db "SWEET SCENT@" db "IRON TAIL@" db "METAL CLAW@" db "VITAL THROW@" db "MORNING SUN@" db "SYNTHESIS@" db "MOONLIGHT@" db "HIDDEN POWER@" db "CROSS CHOP@" db "TWISTER@" db "RAIN DANCE@" db "SUNNY DAY@" db "CRUNCH@" db "MIRROR COAT@" db "PSYCH UP@" db "EXTREMESPEED@" db "ANCIENTPOWER@" db "SHADOW BALL@" db "FUTURE SIGHT@" db "ROCK SMASH@" db "WHIRLPOOL@" db "BEAT UP@" GetLandmarkCoords: ; 0x1ca896 ; given a landmark id in e, return the y coord in d, and the x coord in e. push hl ld l, e ld h, $0 add hl, hl add hl, hl ld de, Landmarks add hl, de ld a, [hli] ld e, a ld d, [hl] pop hl ret GetLandmarkName: ; 0x1ca8a5 ; given a landmark id in e, copy its name to $d073. push hl push de push bc ld l, e ld h, $0 add hl, hl add hl, hl ld de, Landmarks + 2 ; skip the coordinates, we only want the string add hl, de ld a, [hli] ld h, [hl] ld l, a ld de, $d073 ld c, 18 .loop ld a, [hli] ld [de], a inc de dec c jr nz, .loop pop bc pop de pop hl ret Landmarks: ; 0x1ca8c3 ;db x coord, y coord ;dw pointer to name db 0,0 dw SpecialMapString db 148,116 dw NewBarkString db 136,116 dw Route29String db 108,116 dw CherrygroveString db 108,96 dw Route30String db 104,76 dw Route31String db 92,76 dw VioletString db 93,74 dw SproutString db 92,108 dw Route32String db 84,92 dw RuinsString db 92,140 dw UnionString db 90,140 dw Route33String db 76,140 dw AzaleaString db 78,138 dw WellString db 60,136 dw IlexString db 60,128 dw Route34String db 60,108 dw GoldenrodString db 58,108 dw RadioTowerString db 60,92 dw Route35String db 60,76 dw ParkString db 72,76 dw Route36String db 76,68 dw Route37String db 76,60 dw EcruteakString db 78,58 dw TinString db 74,58 dw BurnedTowerString db 60,60 dw Route38String db 44,64 dw Route39String db 44,76 dw OlivineString db 46,78 dw LighthouseString db 36,72 dw BattleTowerString db 36,80 dw Route40String db 36,108 dw WhirlString db 36,116 dw Route41String db 28,116 dw CianwoodString db 100,60 dw Route42String db 92,60 dw MortarString db 116,60 dw MahoganyString db 116,52 dw Route43String db 116,44 dw LakeString db 128,60 dw Route44String db 138,54 dw PathString db 140,60 dw BlackthornString db 140,52 dw DenString db 140,80 dw Route45String db 120,88 dw DarkString db 132,104 dw Route46String db 156,84 dw SilverCaveString db 60,124 dw PalletString db 60,108 dw Route1String db 60,92 dw ViridianString db 60,80 dw Route2String db 60,68 dw PewterString db 72,68 dw Route3String db 84,68 dw MoonString db 96,68 dw Route4String db 108,68 dw CeruleanString db 108,60 dw Route24String db 116,52 dw Route25String db 108,76 dw Route5String db 116,92 dw UndergroundString db 108,92 dw Route6String db 108,100 dw VermilionString db 96,76 dw DiglettsCaveString db 96,84 dw Route7String db 124,84 dw Route8String db 124,68 dw Route9String db 140,68 dw TunnelString db 140,72 dw Route10String db 140,76 dw PlantString db 140,84 dw LavenderString db 148,84 dw LavTowerString db 84,84 dw CeladonString db 108,84 dw SaffronString db 124,100 dw Route11String db 140,96 dw Route12String db 132,116 dw Route13String db 124,128 dw Route14String db 112,132 dw Route15String db 76,84 dw Route16String db 76,108 dw Route17String db 88,132 dw Route18String db 100,132 dw FuchsiaString db 100,144 dw Route19String db 84,148 dw Route20String db 76,148 dw SeafoamString db 60,148 dw CinnabarString db 60,136 dw Route21String db 44,84 dw Route22String db 36,68 dw RoadString db 36,60 dw Route23String db 36,52 dw IndigoString db 36,108 dw Route26String db 28,116 dw Route27String db 20,116 dw FallsString db 28,84 dw Route28String db 148,132 dw AquaString NewBarkString: db "NEW BARK",$1F,"TOWN@" CherrygroveString: db "CHERRYGROVE",$1F,"CITY@" VioletString: db "VIOLET CITY@" AzaleaString: db "AZALEA TOWN@" GoldenrodString: db "GOLDENROD",$1F,"CITY@" EcruteakString: db "ECRUTEAK",$1F,"CITY@" OlivineString: db "OLIVINE",$1F,"CITY@" CianwoodString: db "CIANWOOD",$1F,"CITY@" MahoganyString: db "MAHOGANY",$1F,"TOWN@" BlackthornString: db "BLACKTHORN",$1F,"CITY@" LakeString: db "LAKE OF",$1F,"RAGE@" SilverCaveString: db "SILVER CAVE@" SproutString: db "SPROUT",$1F,"TOWER@" RuinsString: db "RUINS",$1F,"OF ALPH@" UnionString: db "UNION CAVE@" WellString: db "SLOWPOKE",$1F,"WELL@" RadioTowerString: db "RADIO TOWER@" PlantString: db "POWER PLANT@" ParkString: db "NATIONAL",$1F,"PARK@" TinString: db "TIN TOWER@" LighthouseString: db "LIGHTHOUSE@" WhirlString: db "WHIRL",$1F,"ISLANDS@" MortarString: db "MT.MORTAR@" DenString: db "DRAGON'S",$1F,"DEN@" PathString: db "ICE PATH@" NotApplicableString: db "N/A@" PalletString: db "PALLET TOWN@" ViridianString: db "VIRIDIAN",$1F,"CITY@" PewterString: db "PEWTER CITY@" CeruleanString: db "CERULEAN",$1F,"CITY@" LavenderString: db "LAVENDER",$1F,"TOWN@" VermilionString: db "VERMILION",$1F,"CITY@" CeladonString: db "CELADON",$1F,"CITY@" SaffronString: db "SAFFRON",$1F,"CITY@" FuchsiaString: db "FUCHSIA",$1F,"CITY@" CinnabarString: db "CINNABAR",$1F,"ISLAND@" IndigoString: db "INDIGO",$1F,"PLATEAU@" RoadString: db "VICTORY",$1F,"ROAD@" MoonString: db "MT.MOON@" TunnelString: db "ROCK TUNNEL@" LavTowerString: db "LAV",$1F,"RADIO TOWER@" SilphString: db "SILPH CO.@" ZoneString: db "SAFARI ZONE@" SeafoamString: db "SEAFOAM",$1F,"ISLANDS@" MansionString: db "#MON",$1F,"MANSION@" DungeonString: db "CERULEAN",$1F,"CAVE@" Route1String: db "ROUTE 1@" Route2String: db "ROUTE 2@" Route3String: db "ROUTE 3@" Route4String: db "ROUTE 4@" Route5String: db "ROUTE 5@" Route6String: db "ROUTE 6@" Route7String: db "ROUTE 7@" Route8String: db "ROUTE 8@" Route9String: db "ROUTE 9@" Route10String: db "ROUTE 10@" Route11String: db "ROUTE 11@" Route12String: db "ROUTE 12@" Route13String: db "ROUTE 13@" Route14String: db "ROUTE 14@" Route15String: db "ROUTE 15@" Route16String: db "ROUTE 16@" Route17String: db "ROUTE 17@" Route18String: db "ROUTE 18@" Route19String: db "ROUTE 19@" Route20String: db "ROUTE 20@" Route21String: db "ROUTE 21@" Route22String: db "ROUTE 22@" Route23String: db "ROUTE 23@" Route24String: db "ROUTE 24@" Route25String: db "ROUTE 25@" Route26String: db "ROUTE 26@" Route27String: db "ROUTE 27@" Route28String: db "ROUTE 28@" Route29String: db "ROUTE 29@" Route30String: db "ROUTE 30@" Route31String: db "ROUTE 31@" Route32String: db "ROUTE 32@" Route33String: db "ROUTE 33@" Route34String: db "ROUTE 34@" Route35String: db "ROUTE 35@" Route36String: db "ROUTE 36@" Route37String: db "ROUTE 37@" Route38String: db "ROUTE 38@" Route39String: db "ROUTE 39@" Route40String: db "ROUTE 40@" Route41String: db "ROUTE 41@" Route42String: db "ROUTE 42@" Route43String: db "ROUTE 43@" Route44String: db "ROUTE 44@" Route45String: db "ROUTE 45@" Route46String: db "ROUTE 46@" DarkString: db "DARK CAVE@" IlexString: db "ILEX",$1F,"FOREST@" BurnedTowerString: db "BURNED",$1F,"TOWER@" AquaString: db "FAST SHIP@" ViridianForestString: db "VIRIDIAN",$1F,"FOREST@" DiglettsCaveString: db "DIGLETT'S",$1F,"CAVE@" FallsString: db "TOHJO FALLS@" UndergroundString: db "UNDERGROUND@" BattleTowerString: db "BATTLE",$1F,"TOWER@" SpecialMapString: db "SPECIAL@" RegionCheck: ; 0x1caea1 ; Checks if the player is in Kanto or Johto. ; If in Johto, returns 0 in e. ; If in Kanto, returns 1 in e. ld a, [MapGroup] ld b, a ld a, [MapNumber] ld c, a call GetWorldMapLocation cp $5f ; on S.S. Aqua jr z, .johto cp $0 ; special jr nz, .checkagain ; If in map $00, load map group / map id from backup locations ld a, [BackupMapGroup] ld b, a ld a, [BackupMapNumber] ld c, a call GetWorldMapLocation .checkagain cp $2f ; Pallet Town jr c, .johto cp $58 ; Victory Road jr c, .kanto .johto ld e, 0 ret .kanto ld e, 1 ret SECTION "bank73",DATA,BANK[$73] ; Pokedex entries III ; 129-192 INCLUDE "stats/pokedex/entries_3.asm" SECTION "bank74",DATA,BANK[$74] ; Pokedex entries IV ; 193-251 INCLUDE "stats/pokedex/entries_4.asm" SECTION "bank75",DATA,BANK[$75] SECTION "bank76",DATA,BANK[$76] SECTION "bank77",DATA,BANK[$77] INCBIN "baserom.gbc", $1dc000, $1dc5a1 - $1dc000 Tileset26GFX: Tileset32GFX: Tileset33GFX: Tileset34GFX: Tileset35GFX: Tileset36GFX: ; 1dc5a1 INCBIN "gfx/tilesets/26.lz" ; 1dd1a8 INCBIN "baserom.gbc", $1dd1a8, $1de29f - $1dd1a8 DudeAutoInput_A: ; 1de29f db NO_INPUT, $50 db BUTTON_A, $00 db NO_INPUT, $ff ; end ; 1de2a5 DudeAutoInput_RightA: ; 1de2a5 db NO_INPUT, $08 db D_RIGHT, $00 db NO_INPUT, $08 db BUTTON_A, $00 db NO_INPUT, $ff ; end ; 1de2af DudeAutoInput_DownA: ; 1de2af db NO_INPUT, $fe db NO_INPUT, $fe db NO_INPUT, $fe db NO_INPUT, $fe db D_DOWN, $00 db NO_INPUT, $fe db NO_INPUT, $fe db NO_INPUT, $fe db NO_INPUT, $fe db BUTTON_A, $00 db NO_INPUT, $ff ; end ; 1de2c5 INCBIN "baserom.gbc",$1de2c5,$1de2e4 - $1de2c5 PokegearGFX: ; 1de2e4 INCBIN "gfx/misc/pokegear.lz" ; 1de5c7 INCBIN "baserom.gbc",$1de5c7,$1e0000 - $1de5c7 SECTION "bank78",DATA,BANK[$78] INCBIN "baserom.gbc",$1E0000,$4000 SECTION "bank79",DATA,BANK[$79] SECTION "bank7A",DATA,BANK[$7A] SECTION "bank7B",DATA,BANK[$7B] INCBIN "baserom.gbc",$1EC000,$4000 SECTION "bank7C",DATA,BANK[$7C] INCBIN "baserom.gbc",$1F0000,$4000 SECTION "bank7D",DATA,BANK[$7D] INCBIN "baserom.gbc",$1F4000,$4000 SECTION "bank7E",DATA,BANK[$7E] INCBIN "baserom.gbc",$1F8000,$4000 SECTION "bank7F",DATA,BANK[$7F] INCBIN "baserom.gbc",$1FC000,$4000