diff options
Diffstat (limited to 'engine/menu/pokedex.asm.orig')
-rwxr-xr-x | engine/menu/pokedex.asm.orig | 647 |
1 files changed, 0 insertions, 647 deletions
diff --git a/engine/menu/pokedex.asm.orig b/engine/menu/pokedex.asm.orig deleted file mode 100755 index 7d7d2b38..00000000 --- a/engine/menu/pokedex.asm.orig +++ /dev/null @@ -1,647 +0,0 @@ -ShowPokedexMenu: ; 40000 (10:4000) - call GBPalWhiteOut - call ClearScreen - call UpdateSprites ; move sprites - ld a,[wListScrollOffset] - push af - xor a - ld [wCurrentMenuItem],a - ld [wListScrollOffset],a - ld [wLastMenuItem],a - inc a - ld [wd11e],a - ld [hJoy7],a -.setUpGraphics - ld b,$08 - call GoPAL_SET - callab LoadPokedexTilePatterns -.doPokemonListMenu - ld hl,wTopMenuItemY - ld a,3 - ld [hli],a ; top menu item Y - xor a - ld [hli],a ; top menu item X - inc a - ld [wcc37],a - inc hl - inc hl - ld a,6 - ld [hli],a ; max menu item ID - ld [hl],%00110011 ; menu watched keys (Left, Right, B button, A button) - call HandlePokedexListMenu - jr c,.goToSideMenu ; if the player chose a pokemon from the list -.exitPokedex - xor a - ld [wcc37],a - ld [wCurrentMenuItem],a - ld [wLastMenuItem],a -<<<<<<< HEAD - ld [hJoy7],a - ld [wcd3a],a - ld [wcd3b],a -======= - ld [$ffb7],a - ld [wWastedByteCD3A],a - ld [wOverrideSimulatedJoypadStatesMask],a ->>>>>>> yama/master - pop af - ld [wListScrollOffset],a - call GBPalWhiteOutWithDelay3 - call GoPAL_SET_CF1C - jp ReloadMapData -.goToSideMenu - call HandlePokedexSideMenu - dec b - jr z,.exitPokedex ; if the player chose Quit - dec b - jr z,.doPokemonListMenu ; if pokemon not seen or player pressed B button - jp .setUpGraphics ; if pokemon data or area was shown - -; handles the menu on the lower right in the pokedex screen -; OUTPUT: -; b = reason for exiting menu -; 00: showed pokemon data or area -; 01: the player chose Quit -; 02: the pokemon has not been seen yet or the player pressed the B button -HandlePokedexSideMenu: ; 4006d (10:406d) - call PlaceUnfilledArrowMenuCursor - ld a,[wCurrentMenuItem] - push af - ld b,a - ld a,[wLastMenuItem] - push af - ld a,[wListScrollOffset] - push af - add b - inc a - ld [wd11e],a - ld a,[wd11e] - push af - ld a,[wWhichTrade] - push af - ld hl,wPokedexSeen - call IsPokemonBitSet - ld b,2 - jr z,.exitSideMenu - call PokedexToIndex - ld hl,wTopMenuItemY - ld a,10 - ld [hli],a ; top menu item Y - ld a,15 - ld [hli],a ; top menu item X - xor a - ld [hli],a ; current menu item ID - inc hl - ld a,3 - ld [hli],a ; max menu item ID - ld [hli],a ; menu watched keys (A button and B button) - xor a - ld [hli],a ; old menu item ID - ld [wcc37],a -.handleMenuInput - call HandleMenuInput - bit 1,a ; was the B button pressed? - ld b,2 - jr nz,.buttonBPressed - ld a,[wCurrentMenuItem] - and a - jr z,.choseData - dec a - jr z,.choseCry - dec a - jr z,.choseArea -.choseQuit - ld b,1 -.exitSideMenu - pop af - ld [wWhichTrade],a - pop af - ld [wd11e],a - pop af - ld [wListScrollOffset],a - pop af - ld [wLastMenuItem],a - pop af - ld [wCurrentMenuItem],a - push bc - hlCoord 0, 3 - ld de,20 - ld bc,$7f0d ; 13 blank tiles - call DrawTileLine ; cover up the menu cursor in the pokemon list - pop bc - ret -.buttonBPressed - push bc - hlCoord 15, 10 - ld de,20 - ld bc,$7f07 ; 7 blank tiles - call DrawTileLine ; cover up the menu cursor in the side menu - pop bc - jr .exitSideMenu -.choseData - call ShowPokedexDataInternal - ld b,0 - jr .exitSideMenu -; play pokemon cry -.choseCry - ld a,[wd11e] - call GetCryData ; get cry data - call PlaySound ; play sound - jr .handleMenuInput -.choseArea - predef LoadTownMap_Nest ; display pokemon areas - ld b,0 - jr .exitSideMenu - -; handles the list of pokemon on the left of the pokedex screen -; sets carry flag if player presses A, unsets carry flag if player presses B -HandlePokedexListMenu: ; 40111 (10:4111) - xor a - ld [H_AUTOBGTRANSFERENABLED],a -; draw the horizontal line separating the seen and owned amounts from the menu - hlCoord 15, 8 - ld a,$7a ; horizontal line tile - ld [hli],a - ld [hli],a - ld [hli],a - ld [hli],a - ld [hli],a - hlCoord 14, 0 - ld [hl],$71 ; vertical line tile - hlCoord 14, 1 - call DrawPokedexVerticalLine - hlCoord 14, 9 - call DrawPokedexVerticalLine - ld hl,wPokedexSeen - ld b,wPokedexSeenEnd - wPokedexSeen - call CountSetBits - ld de,wd11e - hlCoord 16, 3 - ld bc,$0103 - call PrintNumber ; print number of seen pokemon - ld hl,wPokedexOwned - ld b,wPokedexOwnedEnd - wPokedexOwned - call CountSetBits - ld de,wd11e - hlCoord 16, 6 - ld bc,$0103 - call PrintNumber ; print number of owned pokemon - hlCoord 16, 2 - ld de,PokedexSeenText - call PlaceString - hlCoord 16, 5 - ld de,PokedexOwnText - call PlaceString - hlCoord 1, 1 - ld de,PokedexContentsText - call PlaceString - hlCoord 16, 10 - ld de,PokedexMenuItemsText - call PlaceString -; find the highest pokedex number among the pokemon the player has seen - ld hl,wPokedexSeenEnd - 1 - ld b,153 -.maxSeenPokemonLoop - ld a,[hld] - ld c,8 -.maxSeenPokemonInnerLoop - dec b - sla a - jr c,.storeMaxSeenPokemon - dec c - jr nz,.maxSeenPokemonInnerLoop - jr .maxSeenPokemonLoop -.storeMaxSeenPokemon - ld a,b - ld [wWhichTrade],a ; max seen pokemon -.loop - xor a - ld [H_AUTOBGTRANSFERENABLED],a - hlCoord 4, 2 - ld bc,$0e0a - call ClearScreenArea - hlCoord 1, 3 - ld a,[wListScrollOffset] - ld [wd11e],a - ld d,7 - ld a,[wWhichTrade] - cp a,7 - jr nc,.printPokemonLoop - ld d,a - dec a - ld [wMaxMenuItem],a -; loop to print pokemon pokedex numbers and names -; if the player has owned the pokemon, it puts a pokeball beside the name -.printPokemonLoop - ld a,[wd11e] - inc a - ld [wd11e],a - push af - push de - push hl - ld de,-20 - add hl,de - ld de,wd11e - ld bc,$8103 - call PrintNumber ; print the pokedex number - ld de,20 - add hl,de - dec hl - push hl - ld hl,wPokedexOwned - call IsPokemonBitSet - pop hl - ld a," " - jr z,.writeTile - ld a,$72 ; pokeball tile -.writeTile - ld [hl],a ; put a pokeball next to pokemon that the player has owned - push hl - ld hl,wPokedexSeen - call IsPokemonBitSet - jr nz,.getPokemonName ; if the player has seen the pokemon - ld de,.dashedLine ; print a dashed line in place of the name if the player hasn't seen the pokemon - jr .skipGettingName -.dashedLine ; for unseen pokemon in the list - db "----------@" -.getPokemonName - call PokedexToIndex - call GetMonName -.skipGettingName - pop hl - inc hl - call PlaceString - pop hl - ld bc,2 * 20 - add hl,bc - pop de - pop af - ld [wd11e],a - dec d - jr nz,.printPokemonLoop - ld a,01 - ld [H_AUTOBGTRANSFERENABLED],a - call Delay3 - call GBPalNormal - call HandleMenuInput - bit 1,a ; was the B button pressed? - jp nz,.buttonBPressed -.checkIfUpPressed - bit 6,a ; was Up pressed? - jr z,.checkIfDownPressed -.upPressed ; scroll up one row - ld a,[wListScrollOffset] - and a - jp z,.loop - dec a - ld [wListScrollOffset],a - jp .loop -.checkIfDownPressed - bit 7,a ; was Down pressed? - jr z,.checkIfRightPressed -.downPressed ; scroll down one row - ld a,[wWhichTrade] - cp a,7 - jp c,.loop - sub a,7 - ld b,a - ld a,[wListScrollOffset] - cp b - jp z,.loop - inc a - ld [wListScrollOffset],a - jp .loop -.checkIfRightPressed - bit 4,a ; was Right pressed? - jr z,.checkIfLeftPressed -.rightPressed ; scroll down 7 rows - ld a,[wWhichTrade] - cp a,7 - jp c,.loop - sub a,6 - ld b,a - ld a,[wListScrollOffset] - add a,7 - ld [wListScrollOffset],a - cp b - jp c,.loop - dec b - ld a,b - ld [wListScrollOffset],a - jp .loop -.checkIfLeftPressed ; scroll up 7 rows - bit 5,a ; was Left pressed? - jr z,.buttonAPressed -.leftPressed - ld a,[wListScrollOffset] - sub a,7 - ld [wListScrollOffset],a - jp nc,.loop - xor a - ld [wListScrollOffset],a - jp .loop -.buttonAPressed - scf - ret -.buttonBPressed - and a - ret - -DrawPokedexVerticalLine: ; 4028e (10:428e) - ld c,9 ; height of line - ld de,20 ; width of screen - ld a,$71 ; vertical line tile -.loop - ld [hl],a - add hl,de - xor a,1 ; toggle between vertical line tile and box tile - dec c - jr nz,.loop - ret - -PokedexSeenText: ; 4029d (10:429d) - db "SEEN@" - -PokedexOwnText: ; 402a2 (10:42a2) - db "OWN@" - -PokedexContentsText: ; 402a6 (10:42a6) - db "CONTENTS@" - -PokedexMenuItemsText: ; 402af (10:42af) - db "DATA" - next "CRY" - next "AREA" - next "QUIT@" - -; tests if a pokemon's bit is set in the seen or owned pokemon bit fields -; INPUT: -; [wd11e] = pokedex number -; hl = address of bit field -IsPokemonBitSet: ; 402c2 (10:42c2) - ld a,[wd11e] - dec a - ld c,a - ld b,2 - predef FlagActionPredef - ld a,c - and a - ret - -; function to display pokedex data from outside the pokedex -ShowPokedexData: ; 402d1 (10:42d1) - call GBPalWhiteOutWithDelay3 - call ClearScreen - call UpdateSprites - callab LoadPokedexTilePatterns ; load pokedex tiles - -; function to display pokedex data from inside the pokedex -ShowPokedexDataInternal: ; 402e2 (10:42e2) - ld hl,wd72c - set 1,[hl] - ld a,$33 ; 3/7 volume - ld [$ff24],a - call GBPalWhiteOut ; zero all palettes - call ClearScreen - ld a,[wd11e] ; pokemon ID - ld [wcf91],a - push af - ld b,04 - call GoPAL_SET - pop af - ld [wd11e],a - ld a,[hTilesetType] - push af - xor a - ld [hTilesetType],a - hlCoord 0, 0 - ld de,1 - ld bc,$6414 - call DrawTileLine ; draw top border - hlCoord 0, 17 - ld b,$6f - call DrawTileLine ; draw bottom border - hlCoord 0, 1 - ld de,20 - ld bc,$6610 - call DrawTileLine ; draw left border - hlCoord 19, 1 - ld b,$67 - call DrawTileLine ; draw right border - ld a,$63 ; upper left corner tile - Coorda 0, 0 - ld a,$65 ; upper right corner tile - Coorda 19, 0 - ld a,$6c ; lower left corner tile - Coorda 0, 17 - ld a,$6e ; lower right corner tile - Coorda 19, 17 - hlCoord 0, 9 - ld de,PokedexDataDividerLine - call PlaceString ; draw horizontal divider line - hlCoord 9, 6 - ld de,HeightWeightText - call PlaceString - call GetMonName - hlCoord 9, 2 - call PlaceString - ld hl,PokedexEntryPointers - ld a,[wd11e] - dec a - ld e,a - ld d,0 - add hl,de - add hl,de - ld a,[hli] - ld e,a - ld d,[hl] ; de = address of pokedex entry - hlCoord 9, 4 - call PlaceString ; print species name - ld h,b - ld l,c - push de - ld a,[wd11e] - push af - call IndexToPokedex - hlCoord 2, 8 - ld a, "№" - ld [hli],a - ld a,$f2 - ld [hli],a - ld de,wd11e - ld bc,$8103 - call PrintNumber ; print pokedex number - ld hl,wPokedexOwned - call IsPokemonBitSet - pop af - ld [wd11e],a - ld a,[wcf91] - ld [wd0b5],a - pop de - push af - push bc - push de - push hl - call Delay3 - call GBPalNormal - call GetMonHeader ; load pokemon picture location - hlCoord 1, 1 - call LoadFlippedFrontSpriteByMonIndex ; draw pokemon picture - ld a,[wcf91] - call PlayCry ; play pokemon cry - pop hl - pop de - pop bc - pop af - ld a,c - and a - jp z,.waitForButtonPress ; if the pokemon has not been owned, don't print the height, weight, or description - inc de ; de = address of feet (height) - ld a,[de] ; reads feet, but a is overwritten without being used - hlCoord 12, 6 - ld bc,$0102 - call PrintNumber ; print feet (height) - ld a,$60 ; feet symbol tile (one tick) - ld [hl],a - inc de - inc de ; de = address of inches (height) - hlCoord 15, 6 - ld bc,$8102 - call PrintNumber ; print inches (height) - ld a,$61 ; inches symbol tile (two ticks) - ld [hl],a -; now print the weight (note that weight is stored in tenths of pounds internally) - inc de - inc de - inc de ; de = address of upper byte of weight - push de -; put weight in big-endian order at $ff8b - ld hl,$ff8b - ld a,[hl] ; save existing value of [$ff8b] - push af - ld a,[de] ; a = upper byte of weight - ld [hli],a ; store upper byte of weight in [$ff8b] - ld a,[hl] ; save existing value of [$ff8c] - push af - dec de - ld a,[de] ; a = lower byte of weight - ld [hl],a ; store lower byte of weight in [$ff8c] - ld de,$ff8b - hlCoord 11, 8 - ld bc,$0205 ; no leading zeroes, right-aligned, 2 bytes, 5 digits - call PrintNumber ; print weight - hlCoord 14, 8 - ld a,[$ff8c] - sub a,10 - ld a,[$ff8b] - sbc a,0 - jr nc,.next - ld [hl],"0" ; if the weight is less than 10, put a 0 before the decimal point -.next - inc hl - ld a,[hli] - ld [hld],a ; make space for the decimal point by moving the last digit forward one tile - ld [hl],$f2 ; decimal point tile - pop af - ld [$ff8c],a ; restore original value of [$ff8c] - pop af - ld [$ff8b],a ; restore original value of [$ff8b] - pop hl - inc hl ; hl = address of pokedex description text - bcCoord 1, 11 - ld a,2 - ld [$fff4],a - call TextCommandProcessor ; print pokedex description text - xor a - ld [$fff4],a -.waitForButtonPress - call JoypadLowSensitivity - ld a,[hJoy5] - and a,%00000011 ; A button and B button - jr z,.waitForButtonPress - pop af - ld [hTilesetType],a - call GBPalWhiteOut - call ClearScreen - call GoPAL_SET_CF1C - call LoadTextBoxTilePatterns - call GBPalNormal - ld hl,wd72c - res 1,[hl] - ld a,$77 ; max volume - ld [$ff24],a - ret - -HeightWeightText: ; 40448 (10:4448) - db "HT ?",$60,"??",$61,$4E,"WT ???lb@" - -; XXX does anything point to this? -Unknown_4045D: ; 4045d (10:445d) - db $54,$50 - -; horizontal line that divides the pokedex text description from the rest of the data -PokedexDataDividerLine: ; 4045f (10:445f) - db $68,$69,$6B,$69,$6B - db $69,$6B,$69,$6B,$6B - db $6B,$6B,$69,$6B,$69 - db $6B,$69,$6B,$69,$6A - db $50 - -; draws a line of tiles -; INPUT: -; b = tile ID -; c = number of tile ID's to write -; de = amount to destination address after each tile (1 for horizontal, 20 for vertical) -; hl = destination address -DrawTileLine: ; 40474 (10:4474) - push bc - push de -.loop - ld [hl],b - add hl,de - dec c - jr nz,.loop - pop de - pop bc - ret - -INCLUDE "data/pokedex_entries.asm" - -PokedexToIndex: ; 40ff9 (10:4ff9) - ; converts the Pokédex number at wd11e to an index - push bc - push hl - ld a,[wd11e] - ld b,a - ld c,0 - ld hl,PokedexOrder - -.loop ; go through the list until we find an entry with a matching dex number - inc c - ld a,[hli] - cp b - jr nz,.loop - - ld a,c - ld [wd11e],a - pop hl - pop bc - ret - -IndexToPokedex: ; 41010 (10:5010) - ; converts the indexédex number at wd11e to a Pokédex number - push bc - push hl - ld a,[wd11e] - dec a - ld hl,PokedexOrder - ld b,0 - ld c,a - add hl,bc - ld a,[hl] - ld [wd11e],a - pop hl - pop bc - ret - -INCLUDE "data/pokedex_order.asm" |