summaryrefslogtreecommitdiff
path: root/main.asm
diff options
context:
space:
mode:
Diffstat (limited to 'main.asm')
-rw-r--r--main.asm1450
1 files changed, 3 insertions, 1447 deletions
diff --git a/main.asm b/main.asm
index b009ee400..4ef49f11a 100644
--- a/main.asm
+++ b/main.asm
@@ -12578,236 +12578,7 @@ AI_Redundant: ; 2c41a
INCLUDE "event/move_deleter.asm"
-
-Function2c642: ; 2c642 (b:4642)
- ld de, OverworldMap
- ld a, $1
- ld [de], a
- inc de
- ld a, BANK(sGameData)
- call GetSRAMBank
- ld hl, sPlayerData + PlayerID - wPlayerData
- ld a, [hli]
- ld [de], a
- ld b, a
- inc de
- ld a, [hl]
- ld [de], a
- ld c, a
- inc de
- push bc
- ld hl, sPlayerData + PlayerName - wPlayerData
- ld bc, NAME_LENGTH
- call CopyBytes
- push de
- ld hl, sPokemonData + PokedexCaught - wPokemonData
- ld b, (NUM_POKEMON + 7) / 8
- call CountSetBits
- pop de
- pop bc
- ld a, [wd265]
- ld [de], a
- inc de
- call CloseSRAM
- call Random
- and $1
- ld [de], a
- inc de
- call Function2c6ac
- ld [de], a
- inc de
- ld a, c
- ld c, b
- ld b, a
- call Function2c6ac
- ld [de], a
- inc de
- ld a, BANK(sBackupMysteryGiftItem)
- call GetSRAMBank
- ld a, [sBackupMysteryGiftItem]
- ld [de], a
- inc de
- ld a, [sBackupMysteryGiftItem + 1]
- ld [de], a
- ld a, $14
- ld [wca00], a
- call CloseSRAM
- ld hl, OverworldMap
- ld de, wc950
- ld bc, SCREEN_WIDTH
- jp CopyBytes
-
-Function2c6ac: ; 2c6ac (b:46ac)
- push de
- call Random
- cp $19 ; 10 percent
- jr c, .tenpercent
- call Random
- and $7
- ld d, a
- rl d
- ld e, $80
-.loop
- rlc e
- dec a
- jr nz, .loop
- ld a, e
- and c
- jr z, .skip
- ld a, $1
-.skip
- add d
- jr .done
-
-.tenpercent
- call Random
- cp $32 ; 20 percent
- jr c, .twopercent
- call Random
- and $3
- ld d, a
- rl d
- ld e, $80
-.loop2
- rlc e
- dec a
- jr nz, .loop2
- ld a, e
- and b
- jr z, .skip2
- ld a, $1
-.skip2
- add d
- add $10
- jr .done
-
-.twopercent
- call Random
- cp $32 ; 50 ; 20 percent
- jr c, .pointfourpercent
- ld a, b
- swap a
- and $7
- add $18
- jr .done
-
-.pointfourpercent
- ld a, b
- and $80
- ld a, $20
- jr z, .done
- ld a, $21
-
-.done
- pop de
- ret
-
-MysteryGiftGetItemHeldEffect: ; 2c708 (b:4708)
- ld a, c
- cp $25 ; 37
- jr nc, Function2c722
- ld hl, Unknown_2c725
- ld b, 0
- add hl, bc
- ld c, [hl]
- ret
-
-MysteryGiftGetDecoration: ; 2c715 (b:4715)
- ld a, c
- cp $25 ; 37
- jr nc, Function2c722
- ld hl, Unknown_2c74a
- ld b, 0
- add hl, bc
- ld c, [hl]
- ret
-
-Function2c722: ; 2c722 (b:4722)
- ld c, DECO_POLKADOT_BED ; GREAT_BALL
- ret
-; 2c725 (b:4725)
-
-Unknown_2c725: ; 2c725
-; May or may not be items.
- db BERRY
- db PRZCUREBERRY
- db MINT_BERRY
- db ICE_BERRY
- db BURNT_BERRY
- db PSNCUREBERRY
- db GUARD_SPEC
- db X_DEFEND
- db X_ATTACK
- db BITTER_BERRY
- db DIRE_HIT
- db X_SPECIAL
- db X_ACCURACY
- db EON_MAIL
- db MORPH_MAIL
- db MUSIC_MAIL
- db MIRACLEBERRY
- db GOLD_BERRY
- db REVIVE
- db GREAT_BALL
- db SUPER_REPEL
- db MAX_REPEL
- db ELIXER
- db ETHER
- db WATER_STONE
- db FIRE_STONE
- db LEAF_STONE
- db THUNDERSTONE
- db MAX_ETHER
- db MAX_ELIXER
- db MAX_REVIVE
- db SCOPE_LENS
- db HP_UP
- db PP_UP
- db RARE_CANDY
- db BLUESKY_MAIL
- db MIRAGE_MAIL
-; 2c74a
-
-Unknown_2c74a: ; 2c74a
-; May or may not be items.
- db DECO_SNES
- db DECO_BIG_SNORLAX_DOLL
- db DECO_BIG_ONIX_DOLL
- db DECO_BIG_LAPRAS_DOLL
- db DECO_DOLLS
- db DECO_PIKACHU_DOLL
- db DECO_SURF_PIKACHU_DOLL
- db DECO_CLEFAIRY_DOLL
- db DECO_JIGGLYPUFF_DOLL
- db DECO_BULBASAUR_DOLL
- db DECO_TROPICPLANT
- db DECO_JUMBOPLANT
- db DECO_TOWN_MAP
- db DECO_CHARMANDER_DOLL
- db DECO_POLIWAG_DOLL
- db DECO_DIGLETT_DOLL
- db DECO_BLUE_CARPET
- db DECO_YELLOW_CARPET
- db DECO_POSTERS
- db DECO_PIKACHU_POSTER
- db DECO_N64
- db DECO_BIG_DOLLS
- db DECO_BEDS
- db DECO_FEATHERY_BED
- db DECO_POLKADOT_BED
- db DECO_PIKACHU_BED
- db DECO_CARPETS
- db DECO_RED_CARPET
- db DECO_GREEN_CARPET
- db DECO_CLEFAIRY_POSTER
- db DECO_ODDISH_DOLL
- db DECO_MAGNAPLANT
- db DECO_GENGAR_DOLL
- db DECO_CONSOLES
- db DECO_PINK_BED
- db DECO_SQUIRTLE_DOLL
- db DECO_STARMIE_DOLL
-; 2c76f
+INCLUDE "engine/mysterygift2.asm"
Function2c76f: ; 2c76f (b:476f)
ld a, $1
@@ -15136,1224 +14907,9 @@ Unknown_4985a: ; unreferenced
INCLUDE "event/celebi.asm"
INCLUDE "engine/main_menu.asm"
-
-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.
-; Return the result in ScriptVar.
-
- 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 the player owns any monsters of the species in ScriptVar.
-; Return the result in ScriptVar.
-
- call CheckOwnMonAnywhere
- jr c, .exists
-
- ; doesn't exist
- xor a
- ld [ScriptVar], a
- ret
-
-.exists
- ld a, 1
- ld [ScriptVar], a
- ret
-
-
-CheckOwnMonAnywhere: ; 0x4a721
-; Check if the player owns any monsters of the species in ScriptVar.
-; It must exist in either party or PC, and have the player's OT and ID.
-
- ; If there are no monsters in the party,
- ; the player must not own any yet.
- ld a, [PartyCount]
- and a
- ret z
-
- ld d, a
- ld e, 0
- ld hl, PartyMon1Species
- ld bc, PartyMonOT
-
- ; Run CheckOwnMon on each Pokémon in the party.
-.partymon
- call CheckOwnMon
- ret c ; found!
-
- push bc
- ld bc, PARTYMON_STRUCT_LENGTH
- add hl, bc
- pop bc
- call UpdateOTPointer
- dec d
- jr nz, .partymon
-
- ; Run CheckOwnMon on each Pokémon in the PC.
- ld a, BANK(sBoxCount)
- call GetSRAMBank
- ld a, [sBoxCount]
- and a
- jr z, .boxes
-
- ld d, a
- ld hl, sBoxMon1Species
- ld bc, sBoxMonOT
-.openboxmon
- call CheckOwnMon
- jr nc, .loop
-
- ; found!
- call CloseSRAM
- ret
-
-.loop
- push bc
- ld bc, BOXMON_STRUCT_LENGTH
- add hl, bc
- pop bc
- call UpdateOTPointer
- dec d
- jr nz, .openboxmon
-
- ; Run CheckOwnMon on each monster in the other 13 PC boxes.
-.boxes
- call CloseSRAM
-
- ld c, 0
-.box
- ; Don't search the current box again.
- ld a, [wCurBox]
- and $f
- cp c
- jr z, .loopbox
-
- ; Load the box.
- ld hl, BoxAddressTable1
- ld b, 0
-rept 3
- add hl, bc
-endr
- ld a, [hli]
- call GetSRAMBank
- ld a, [hli]
- ld h, [hl]
- ld l, a
-
- ; Number of monsters in the box
- ld a, [hl]
- and a
- jr z, .loopbox
-
- push bc
-
- push hl
- ld de, sBoxMons - sBoxCount
- add hl, de
- ld d, h
- ld e, l
- pop hl
- push de
- ld de, sBoxMonOT - sBoxCount
- add hl, de
- ld b, h
- ld c, l
- pop hl
-
- ld d, a
-
-.boxmon
- call CheckOwnMon
- jr nc, .loopboxmon
-
- ; found!
- pop bc
- call CloseSRAM
- ret
-
-.loopboxmon
- push bc
- ld bc, BOXMON_STRUCT_LENGTH
- add hl, bc
- pop bc
- call UpdateOTPointer
- dec d
- jr nz, .boxmon
- pop bc
-
-.loopbox
- inc c
- ld a, c
- cp NUM_BOXES
- jr c, .box
-
- ; not found
- call CloseSRAM
- and a
- 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, MON_ID
- 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
-
- rept 4
- ld a, [de]
- cp [hl]
- jr nz, .notfound
- cp "@"
- jr z, .found ; reached end of string
- inc hl
- inc de
- endr
-
- ld a, [de]
- cp [hl]
- jr z, .found
-
-.notfound
- pop de
- pop hl
- pop bc
- and a
- ret
-
-.found
- pop de
- pop hl
- pop bc
- scf
- ret
-; 0x4a810
-
-BoxAddressTable1: ; 4a810
- dba sBox1
- dba sBox2
- dba sBox3
- dba sBox4
- dba sBox5
- dba sBox6
- dba sBox7
- dba sBox8
- dba sBox9
- dba sBox10
- dba sBox11
- dba sBox12
- dba sBox13
- dba sBox14
-; 4a83a
-
-UpdateOTPointer: ; 0x4a83a
- push hl
- ld hl, NAME_LENGTH
- add hl, bc
- ld b, h
- ld c, l
- pop hl
- ret
-; 0x4a843
-
-
-MobileCheckOwnMonAnywhere: ; 4a843
-; Like CheckOwnMonAnywhere, but only check for species.
-; OT/ID don't matter.
-
- ld a, [PartyCount]
- and a
- ret z
-
- ld d, a
- ld e, 0
- ld hl, PartyMon1Species
- ld bc, PartyMonOT
-.asm_4a851
- call .CheckMatch
- ret c
- push bc
- ld bc, PARTYMON_STRUCT_LENGTH
- add hl, bc
- pop bc
- call .CopyName
- dec d
- jr nz, .asm_4a851
- ld a, BANK(sBoxCount)
- call GetSRAMBank
- ld a, [sBoxCount]
- and a
- jr z, .asm_4a888
- ld d, a
- ld hl, sBoxMon1Species
- ld bc, sBoxMonOT
-.asm_4a873
- call .CheckMatch
- jr nc, .asm_4a87c
- call CloseSRAM
- ret
-
-.asm_4a87c
- push bc
- ld bc, BOXMON_STRUCT_LENGTH
- add hl, bc
- pop bc
- call .CopyName
- dec d
- jr nz, .asm_4a873
-
-.asm_4a888
- call CloseSRAM
- ld c, 0
-.asm_4a88d
- ld a, [wCurBox]
- and $f
- cp c
- jr z, .asm_4a8d1
- ld hl, .BoxAddrs
- ld b, 0
-rept 3
- add hl, bc
-endr
- ld a, [hli]
- call GetSRAMBank
- ld a, [hli]
- ld h, [hl]
- ld l, a
- ld a, [hl]
- and a
- jr z, .asm_4a8d1
- push bc
- push hl
- ld de, sBoxMons - sBoxCount
- add hl, de
- ld d, h
- ld e, l
- pop hl
- push de
- ld de, sBoxMonOT - sBoxCount
- add hl, de
- ld b, h
- ld c, l
- pop hl
- ld d, a
-.asm_4a8ba
- call .CheckMatch
- jr nc, .asm_4a8c4
- pop bc
- call CloseSRAM
- ret
-
-.asm_4a8c4
- push bc
- ld bc, BOXMON_STRUCT_LENGTH
- add hl, bc
- pop bc
- call .CopyName
- dec d
- jr nz, .asm_4a8ba
- pop bc
-
-.asm_4a8d1
- inc c
- ld a, c
- cp NUM_BOXES
- jr c, .asm_4a88d
- call CloseSRAM
- and a
- ret
-; 4a8dc
-
-.CheckMatch: ; 4a8dc
- push bc
- push hl
- push de
- ld d, b
- ld e, c
- ld a, [ScriptVar]
- ld b, [hl]
- cp b
- jr nz, .no_match
- jr .match
-
-.no_match
- pop de
- pop hl
- pop bc
- and a
- ret
-
-.match
- pop de
- pop hl
- pop bc
- scf
- ret
-; 4a8f4
-
-.BoxAddrs: ; 4a8f4
- dba sBox1
- dba sBox2
- dba sBox3
- dba sBox4
- dba sBox5
- dba sBox6
- dba sBox7
- dba sBox8
- dba sBox9
- dba sBox10
- dba sBox11
- dba sBox12
- dba sBox13
- dba sBox14
-; 4a91e
-
-.CopyName: ; 4a91e
- push hl
- ld hl, NAME_LENGTH
- add hl, bc
- ld b, h
- ld c, l
- pop hl
- ret
-; 4a927
-
-
-FindItemInPCOrBag: ; 4a927
- ld a, [ScriptVar]
- ld [CurItem], a
- ld hl, PCItems
- call CheckItem
- jr c, .found
-
- ld a, [ScriptVar]
- ld [CurItem], a
- ld hl, NumItems
- call CheckItem
- jr c, .found
-
- xor a
- ld [ScriptVar], a
- ret
-
-.found
- ld a, 1
- ld [ScriptVar], a
- ret
-; 4a94e
-
+INCLUDE "engine/search.asm"
+INCLUDE "misc/mobile_12_2.asm"
; mobile battle selection
-Function4a94e: ; 4a94e
- call FadeToMenu
- ld a, -1
- ld hl, wd002
- ld bc, 3
- call ByteFill
- xor a
- ld [wd018], a
- ld [wd019], a
- ld b, SCGB_14
- call GetSGBLayout
- call SetPalettes
- call Function4aa22
- jr c, .asm_4a985
- jr z, .asm_4a9a1
- jr .asm_4a97b
-
-.asm_4a974
- call Function4aa25
- jr c, .asm_4a985
- jr z, .asm_4a9a1
-
-.asm_4a97b
- call Function4ac58
- ld hl, wd019
- res 1, [hl]
- jr .asm_4a974
-
-.asm_4a985
- ld a, [wd018]
- and a
- jr nz, .asm_4a990
- call Function4aba8
- jr c, .asm_4a974
-
-.asm_4a990
- call CloseSubmenu
- ld hl, wd002
- ld a, -1
- ld bc, 3
- call ByteFill
- scf
- jr .asm_4a9af
-
-.asm_4a9a1
- call Function4a9c3
- jr c, .asm_4a9b0
- call Function4a9d7
- jr c, .asm_4a974
- call CloseSubmenu
- and a
-
-.asm_4a9af
- ret
-
-.asm_4a9b0
- ld de, SFX_WRONG
- call PlaySFX
- ld hl, UnknownText_0x4a9be
- call PrintText
- jr .asm_4a974
-; 4a9be
-
-UnknownText_0x4a9be: ; 0x4a9be
- ; Pick three #MON for battle.
- text_jump UnknownText_0x1c51d7
- db "@"
-; 0x4a9c3
-
-Function4a9c3: ; 4a9c3
- ld hl, wd002
- ld a, $ff
- cp [hl]
- jr z, .asm_4a9d5
- inc hl
- cp [hl]
- jr z, .asm_4a9d5
- inc hl
- cp [hl]
- jr z, .asm_4a9d5
- and a
- ret
-
-.asm_4a9d5
- scf
- ret
-; 4a9d7
-
-Function4a9d7: ; 4a9d7
- ld a, [wd002]
- ld hl, PartyMonNicknames
- call GetNick
- ld h, d
- ld l, e
- ld de, EndFlypoint
- ld bc, 6
- call CopyBytes
- ld a, [wd003]
- ld hl, PartyMonNicknames
- call GetNick
- ld h, d
- ld l, e
- ld de, wd00c
- ld bc, 6
- call CopyBytes
- ld a, [wd004]
- ld hl, PartyMonNicknames
- call GetNick
- ld h, d
- ld l, e
- ld de, wd012
- ld bc, 6
- call CopyBytes
- ld hl, UnknownText_0x4aa1d
- call PrintText
- call YesNoBox
- ret
-; 4aa1d
-
-UnknownText_0x4aa1d: ; 0x4aa1d
- ; , @ and @ . Use these three?
- text_jump UnknownText_0x1c51f4
- db "@"
-; 0x4aa22
-
-Function4aa22: ; 4aa22
- call ClearBGPalettes
-
-Function4aa25: ; 4aa25
- callba LoadPartyMenuGFX
- callba InitPartyMenuWithCancel
- call Function4aad3
-
-Function4aa34: ; 4aa34
- ld a, $9
- ld [PartyMenuActionText], a
- callba WritePartyMenuTilemap
- xor a
- ld [PartyMenuActionText], a
- callba PrintPartyMenuText
- call Function4aab6
- call WaitBGMap
- call SetPalettes
- call DelayFrame
- call Function4ab1a
- jr z, .asm_4aa66
- push af
- call Function4aafb
- jr c, .asm_4aa67
- call Function4ab06
- jr c, .asm_4aa67
- pop af
-
-.asm_4aa66
- ret
-
-.asm_4aa67
- ld hl, wd019
- set 1, [hl]
- pop af
- ret
-; 4aa6e
-
-Function4aa6e: ; 4aa6e
- pop af
- ld de, SFX_WRONG
- call PlaySFX
- call WaitSFX
- jr Function4aa34
-; 4aa7a
-
-Function4aa7a: ; 4aa7a
- ld hl, wd002
- ld d, $3
-.loop
- ld e, PARTY_LENGTH
- ld a, [hli]
- push de
- push hl
- cp -1
- jr z, .done
- ld hl, wSpriteAnimationStructs
- inc a
- ld d, a
-.inner_loop
- ld a, [hl]
- and a
- jr z, .next
- cp d
- jr z, .same_as_d
- jr .next
-
- ld a, $3
- jr .proceed
-
-.same_as_d
- ld a, $2
-
-.proceed
- push hl
- ld c, l
- ld b, h
- ld hl, $2
- add hl, bc
- ld [hl], a
- pop hl
-
-.next
- ld bc, $10
- add hl, bc
- dec e
- jr nz, .inner_loop
- pop hl
- pop de
- dec d
- jr nz, .loop
- jr .finished
-
-.done
- pop hl
- pop de
-
-.finished
- ret
-; 4aab6
-
-Function4aab6: ; 4aab6
- ld hl, wd002
- ld d, $3
-.loop
- ld a, [hli]
- cp -1
- jr z, .done
- push de
- push hl
- hlcoord 0, 1
- ld bc, $28
- call AddNTimes
- ld [hl], $ec
- pop hl
- pop de
- dec d
- jr nz, .loop
-
-.done
- ret
-; 4aad3
-
-Function4aad3: ; 4aad3
- ld hl, PartyCount
- ld a, [hli]
- and a
- ret z ; Nothing in your party
-
- ld c, a
- xor a
- ld [hObjectStructIndexBuffer], a
-.loop
- push bc
- push hl
- ld e, 0
- callba Function8e83f
- ld a, [hObjectStructIndexBuffer]
- inc a
- ld [hObjectStructIndexBuffer], a
- pop hl
- pop bc
- dec c
- jr nz, .loop
-
- call Function4aa7a
- callba PlaySpriteAnimations
- ret
-; 4aafb
-
-Function4aafb: ; 4aafb
- ld a, [CurPartySpecies]
- cp EGG
- jr z, .egg
- and a
- ret
-
-.egg
- scf
- ret
-; 4ab06
-
-Function4ab06: ; 4ab06
- ld a, [CurPartyMon]
- ld bc, PARTYMON_STRUCT_LENGTH
- ld hl, PartyMon1HP
- call AddNTimes
- ld a, [hli]
- ld b, a
- ld a, [hl]
- or b
- jr nz, .NotFainted
- scf
-
-.NotFainted
- ret
-; 4ab1a
-
-Function4ab1a: ; 4ab1a
-.asm_4ab1a
- ld a, $fb
- ld [wcfa8], a
- ld a, $26
- ld [wcfa7], a
- ld a, $2
- ld [wcfa4], a
- call Function4adf7
- call Function1bc9
- call Function4abc3
- jr c, .asm_4ab1a
- push af
- call Function4ab99
- call nc, Function1bee
- pop af
- bit 1, a
- jr nz, .asm_4ab6d
- ld a, [PartyCount]
- inc a
- ld b, a
- ld a, [MenuSelection2]
- ld [wd0d8], a
- cp b
- jr z, .asm_4ab7e
- ld a, [MenuSelection2]
- 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, SFX_READ_TEXT_2
- call PlaySFX
- call WaitSFX
- ld a, $1
- and a
- ret
-
-.asm_4ab6d
- ld a, [MenuSelection2]
- ld [wd0d8], a
-.asm_4ab73
- ld de, SFX_READ_TEXT_2
- call PlaySFX
- call WaitSFX
- scf
- ret
-
-.asm_4ab7e
- ld a, $1
- ld [wd018], a
- ld a, [wcfaa]
- cp $2
- jr z, .asm_4ab73
- ld de, SFX_READ_TEXT_2
- call PlaySFX
- call WaitSFX
- xor a
- ld [wd018], a
- and a
- ret
-; 4ab99
-
-Function4ab99: ; 4ab99
- bit 1, a
- jr z, .asm_4aba6
- ld a, [wd002]
- cp $ff
- jr z, .asm_4aba6
- scf
- ret
-
-.asm_4aba6
- and a
- ret
-; 4aba8
-
-Function4aba8: ; 4aba8
- ld hl, wd004
- ld a, [hl]
- cp $ff
- jr nz, .asm_4abbe
- dec hl
- ld a, [hl]
- cp $ff
- jr nz, .asm_4abbe
- dec hl
- ld a, [hl]
- cp $ff
- jr nz, .asm_4abbe
- and a
- ret
-
-.asm_4abbe
- ld a, $ff
- ld [hl], a
- scf
- ret
-; 4abc3
-
-Function4abc3: ; 4abc3
- bit 3, a
- jr z, .asm_4abd5
- ld a, [PartyCount]
- inc a
- ld [MenuSelection2], a
- ld a, $1
- ld [wcfaa], a
- jr .asm_4ac29
-
-.asm_4abd5
- bit 6, a
- jr z, .asm_4abeb
- ld a, [MenuSelection2]
- ld [MenuSelection2], a
- and a
- jr nz, .asm_4ac29
- ld a, [PartyCount]
- inc a
- ld [MenuSelection2], a
- jr .asm_4ac29
-
-.asm_4abeb
- bit 7, a
- jr z, .asm_4ac08
- ld a, [MenuSelection2]
- ld [MenuSelection2], a
- ld a, [PartyCount]
-rept 2
- inc a
-endr
- ld b, a
- ld a, [MenuSelection2]
- cp b
- jr nz, .asm_4ac29
- ld a, $1
- ld [MenuSelection2], a
- jr .asm_4ac29
-
-.asm_4ac08
- bit 4, a
- jr nz, .asm_4ac10
- bit 5, a
- jr z, .asm_4ac56
-
-.asm_4ac10
- ld a, [MenuSelection2]
- ld b, a
- ld a, [PartyCount]
- inc a
- cp b
- jr nz, .asm_4ac29
- ld a, [wcfaa]
- cp $1
- jr z, .asm_4ac26
- ld a, $1
- jr .asm_4ac29
-
-.asm_4ac26
- ld [wcfaa], a
-
-.asm_4ac29
- hlcoord 0, 1
- lb bc, 13, 1
- call ClearBox
- call Function4aab6
- ld a, [PartyCount]
- hlcoord 6, 1
-.asm_4ac3b
- ld bc, $28
- add hl, bc
- dec a
- jr nz, .asm_4ac3b
- ld [hl], $7f
- ld a, [MenuSelection2]
- ld b, a
- ld a, [PartyCount]
- inc a
- cp b
- jr z, .asm_4ac54
- ld a, $1
- ld [wcfaa], a
-
-.asm_4ac54
- scf
- ret
-
-.asm_4ac56
- and a
- ret
-; 4ac58
-
-Function4ac58: ; 4ac58
- lb bc, 2, 18
- hlcoord 1, 15
- call ClearBox
- callba FreezeMonIcons
- ld hl, MenuDataHeader_0x4aca2
- call LoadMenuDataHeader
- ld hl, wd019
- bit 1, [hl]
- jr z, .asm_4ac89
- hlcoord 11, 13
- ld b, $3
- ld c, $7
- call TextBox
- hlcoord 13, 14
- ld de, String_4ada7
- call PlaceString
- jr .asm_4ac96
-
-.asm_4ac89
- hlcoord 11, 9
- ld b, $7
- ld c, $7
- call TextBox
- call Function4ad68
-
-.asm_4ac96
- ld a, $1
- ld [hBGMapMode], a
- call Function4acaa
- call ExitMenu
- and a
- ret
-; 4aca2
-
-MenuDataHeader_0x4aca2: ; 0x4aca2
- db $40 ; flags
- db 09, 11 ; start coords
- db 17, 19 ; end coords
- dw NULL
- db 1 ; default option
-; 0x4acaa
-
-Function4acaa: ; 4acaa
-.asm_4acaa
- ld a, $a0
- ld [wMenuData2Flags], a
- ld a, [wd019]
- bit 1, a
- jr z, .asm_4acc2
- ld a, $2
- ld [wMenuData2Items], a
- ld a, $c
- ld [wMenuBorderTopCoord], a
- jr .asm_4accc
-
-.asm_4acc2
- ld a, $4
- ld [wMenuData2Items], a
- ld a, $8
- ld [wMenuBorderTopCoord], a
-
-.asm_4accc
- ld a, $b
- ld [wMenuBorderLeftCoord], a
- ld a, $1
- ld [wMenuCursorBuffer], a
- call Function1c10
- ld hl, wcfa5
- set 6, [hl]
- call Function1bc9
- ld de, SFX_READ_TEXT_2
- call PlaySFX
- ld a, [hJoyPressed]
- bit 0, a
- jr nz, .asm_4acf4
- bit 1, a
- jr nz, .asm_4acf3
- jr .asm_4acaa
-
-.asm_4acf3
- ret
-
-.asm_4acf4
- ld a, [wd019]
- bit 1, a
- jr nz, .asm_4ad0e
- ld a, [MenuSelection2]
- cp $1
- jr z, Function4ad17
- cp $2
- jp z, Function4ad56
- cp $3
- jp z, Function4ad60
- jr .asm_4acf3
-
-.asm_4ad0e
- ld a, [MenuSelection2]
- cp $1
- jr z, Function4ad56
- jr .asm_4acf3
-
-Function4ad17: ; 4ad17
- call Function4adb2
- jr z, .asm_4ad4a
- ld hl, wd002
- ld a, $ff
- cp [hl]
- jr z, .asm_4ad39
- inc hl
- cp [hl]
- jr z, .asm_4ad39
- inc hl
- cp [hl]
- jr z, .asm_4ad39
- ld de, SFX_WRONG
- call WaitPlaySFX
- ld hl, UnknownText_0x4ad51
- call PrintText
- ret
-
-.asm_4ad39
- ld a, [CurPartyMon]
- ld [hl], a
- call Function4a9c3
- ret c
- ld a, [wd019]
- set 0, a
- ld [wd019], a
- ret
-
-.asm_4ad4a
- ld a, $ff
- ld [hl], a
- call Function4adc2
- ret
-
-UnknownText_0x4ad51: ; 0x4ad51
- ; Only three #MON may enter.
- text_jump UnknownText_0x1c521c
- db "@"
-; 0x4ad56
-
-Function4ad56: ; 4ad56
- callba OpenPartyStats
- call Function3200
- ret
-; 4ad60
-
-Function4ad60: ; 4ad60
- callba ManagePokemonMoves
- ret
-; 4ad67
-
-Function4ad67: ; 4ad67
- ret
-; 4ad68
-
-Function4ad68: ; 4ad68
- hlcoord 13, 12
- ld de, String_4ad88
- call PlaceString
- call Function4adb2
- jr c, .asm_4ad7e
- hlcoord 13, 10
- ld de, String_4ada0
- jr .asm_4ad84
-
-.asm_4ad7e
- hlcoord 13, 10
- ld de, String_4ad9a
-
-.asm_4ad84
- call PlaceString
- ret
-; 4ad88
-
-String_4ad88: ; 4ad88
- db "つよさをみる"
- next "つかえるわざ"
- next "もどる@"
-; 4ad9a
-
-String_4ad9a: ; 4ad9a
- db "さんかする@"
-; 4ada0
-
-String_4ada0: ; 4ada0
- db "さんかしない@"
-; 4ada7
-
-String_4ada7: ; 4ada7
- db "つよさをみる"
- next "もどる@" ; BACK
-; 4adb2
-
-Function4adb2: ; 4adb2
- ld hl, wd002
- ld a, [CurPartyMon]
- cp [hl]
- ret z
- inc hl
- cp [hl]
- ret z
- inc hl
- cp [hl]
- ret z
- scf
- ret
-; 4adc2
-
-Function4adc2: ; 4adc2
- ld a, [wd002]
- cp $ff
- jr nz, .skip
- ld a, [wd003]
- cp $ff
- jr nz, .skip2
- ld a, [wd004]
- ld [wd002], a
- ld a, $ff
- ld [wd004], a
- jr .skip
-
-.skip2
- ld [wd002], a
- ld a, $ff
- ld [wd003], a
-
-.skip
- ld a, [wd003]
- cp $ff
- ret nz
- ld b, a
- ld a, [wd004]
- ld [wd003], a
- ld a, b
- ld [wd004], a
- ret
-; 4adf7
-
-Function4adf7: ; 4adf7
- ld a, [wd019]
- bit 0, a
- ret z
- ld a, [PartyCount]
- inc a
- ld [MenuSelection2], a
- ld a, $1
- ld [wcfaa], a
- ld a, [wd019]
- res 0, a
- ld [wd019], a
- ret
-; 4ae12
AskRememberPassword: ; 4ae12
call .DoMenu