mirror of
https://github.com/pret/pokeyellow.git
synced 2026-05-09 04:11:32 -05:00
249 lines
4.2 KiB
NASM
Executable File
249 lines
4.2 KiB
NASM
Executable File
LearnMove: ; 6bc8 (1:6bc8)
|
|
call SaveScreenTilesToBuffer1
|
|
ld a, [wWhichPokemon]
|
|
ld hl, wPartyMonNicks
|
|
call GetPartyMonName
|
|
ld hl, wcd6d
|
|
ld de, wLearnMoveMonName
|
|
ld bc, NAME_LENGTH
|
|
call CopyData
|
|
|
|
DontAbandonLearning: ; 6be0 (1:6be0)
|
|
ld hl, wPartyMon1Moves
|
|
ld bc, wPartyMon2Moves - wPartyMon1Moves
|
|
ld a, [wWhichPokemon]
|
|
call AddNTimes
|
|
ld d, h
|
|
ld e, l
|
|
ld b, NUM_MOVES
|
|
.findEmptyMoveSlotLoop
|
|
ld a, [hl]
|
|
and a
|
|
jr z, .next
|
|
inc hl
|
|
dec b
|
|
jr nz, .findEmptyMoveSlotLoop
|
|
push de
|
|
call TryingToLearn
|
|
pop de
|
|
jp c, AbandonLearning
|
|
push hl
|
|
push de
|
|
ld [wd11e], a
|
|
call GetMoveName
|
|
ld hl, OneTwoAndText
|
|
call PrintText
|
|
pop de
|
|
pop hl
|
|
.next
|
|
ld a, [wMoveNum]
|
|
ld [hl], a
|
|
ld bc, wPartyMon1PP - wPartyMon1Moves
|
|
add hl, bc
|
|
push hl
|
|
push de
|
|
dec a
|
|
ld hl, Moves
|
|
ld bc, MoveEnd - Moves
|
|
call AddNTimes
|
|
ld de, wBuffer
|
|
ld a, BANK(Moves)
|
|
call FarCopyData
|
|
ld a, [wBuffer + 5] ; a = move's max PP
|
|
pop de
|
|
pop hl
|
|
ld [hl], a
|
|
ld a, [wIsInBattle]
|
|
and a
|
|
jp z, PrintLearnedMove
|
|
ld a, [wWhichPokemon]
|
|
ld b, a
|
|
ld a, [wPlayerMonNumber]
|
|
cp b
|
|
jp nz, PrintLearnedMove
|
|
ld h, d
|
|
ld l, e
|
|
ld de, wBattleMonMoves
|
|
ld bc, NUM_MOVES
|
|
call CopyData
|
|
ld bc, wPartyMon1PP - wPartyMon1OTID
|
|
add hl, bc
|
|
ld de, wBattleMonPP
|
|
ld bc, NUM_MOVES
|
|
call CopyData
|
|
jp PrintLearnedMove
|
|
|
|
AbandonLearning: ; 6c5f (1:6c5f)
|
|
ld hl, AbandonLearningText
|
|
call PrintText
|
|
coord hl, 14, 7
|
|
lb bc, 8, 15
|
|
ld a, TWO_OPTION_MENU
|
|
ld [wTextBoxID], a
|
|
call DisplayTextBoxID ; yes/no menu
|
|
ld a, [wCurrentMenuItem]
|
|
and a
|
|
jp nz, DontAbandonLearning
|
|
ld hl, DidNotLearnText
|
|
call PrintText
|
|
ld b, 0
|
|
ret
|
|
|
|
PrintLearnedMove: ; 6c83 (1:6c83)
|
|
ld hl, LearnedMove1Text
|
|
call PrintText
|
|
ld b, 1
|
|
ret
|
|
|
|
TryingToLearn: ; 6c8c (1:6c8c)
|
|
push hl
|
|
ld hl, TryingToLearnText
|
|
call PrintText
|
|
coord hl, 14, 7
|
|
lb bc, 8, 15
|
|
ld a, TWO_OPTION_MENU
|
|
ld [wTextBoxID], a
|
|
call DisplayTextBoxID ; yes/no menu
|
|
pop hl
|
|
ld a, [wCurrentMenuItem]
|
|
rra
|
|
ret c
|
|
ld bc, -NUM_MOVES
|
|
add hl, bc
|
|
push hl
|
|
ld de, wMoves
|
|
ld bc, NUM_MOVES
|
|
call CopyData
|
|
callab FormatMovesString
|
|
pop hl
|
|
.loop
|
|
push hl
|
|
ld hl, WhichMoveToForgetText
|
|
call PrintText
|
|
coord hl, 4, 7
|
|
lb bc, 4, 14
|
|
call TextBoxBorder
|
|
coord hl, 6, 8
|
|
ld de, wMovesString
|
|
ld a, [hFlags_0xFFFA]
|
|
set 2, a
|
|
ld [hFlags_0xFFFA], a
|
|
call PlaceString
|
|
ld a, [hFlags_0xFFFA]
|
|
res 2, a
|
|
ld [hFlags_0xFFFA], a
|
|
ld hl, wTopMenuItemY
|
|
ld a, 8
|
|
ld [hli], a ; wTopMenuItemY
|
|
ld a, 5
|
|
ld [hli], a ; wTopMenuItemX
|
|
xor a
|
|
ld [hli], a ; wCurrentMenuItem
|
|
inc hl
|
|
ld a, [wNumMovesMinusOne]
|
|
ld [hli], a ; wMaxMenuItem
|
|
ld a, A_BUTTON | B_BUTTON
|
|
ld [hli], a ; wMenuWatchedKeys
|
|
ld [hl], 0 ; wLastMenuItem
|
|
ld hl, hFlags_0xFFFA
|
|
set 1, [hl]
|
|
call HandleMenuInput
|
|
ld hl, hFlags_0xFFFA
|
|
res 1, [hl]
|
|
push af
|
|
call LoadScreenTilesFromBuffer1
|
|
pop af
|
|
pop hl
|
|
bit 1, a ; pressed b
|
|
jr nz, .cancel
|
|
push hl
|
|
ld a, [wCurrentMenuItem]
|
|
ld c, a
|
|
ld b, 0
|
|
add hl, bc
|
|
ld a, [hl]
|
|
push af
|
|
push bc
|
|
call IsMoveHM
|
|
pop bc
|
|
pop de
|
|
ld a, d
|
|
jr c, .hm
|
|
pop hl
|
|
add hl, bc
|
|
and a
|
|
ret
|
|
.hm
|
|
ld hl, HMCantDeleteText
|
|
call PrintText
|
|
pop hl
|
|
jr .loop
|
|
.cancel
|
|
scf
|
|
ret
|
|
|
|
LearnedMove1Text: ; 6d31 (1:6d31)
|
|
TX_FAR _LearnedMove1Text
|
|
db $b,6,"@"
|
|
|
|
WhichMoveToForgetText: ; 6d38 (1:6d38)
|
|
TX_FAR _WhichMoveToForgetText
|
|
db "@"
|
|
|
|
AbandonLearningText: ; 6d3d (1:6d3d)
|
|
TX_FAR _AbandonLearningText
|
|
db "@"
|
|
|
|
DidNotLearnText: ; 6d42 (1:6d42)
|
|
TX_FAR _DidNotLearnText
|
|
db "@"
|
|
|
|
TryingToLearnText: ; 6d47 (1:6d47)
|
|
TX_FAR _TryingToLearnText
|
|
db "@"
|
|
|
|
OneTwoAndText: ; 6d4c (1:6d4c)
|
|
; bugfix: In Red/Blue, the SFX_SWAP sound was played in the wrong bank, which played an incorrect sound
|
|
; Yellow has fixed this by swapping to the correct bank
|
|
TX_FAR _OneTwoAndText
|
|
db $a
|
|
TX_ASM
|
|
push af
|
|
push bc
|
|
push de
|
|
push hl
|
|
ld a, $1
|
|
ld [wMuteAudioAndPauseMusic], a
|
|
call DelayFrame
|
|
ld a, [wAudioROMBank]
|
|
push af
|
|
ld a, BANK(SFX_Swap_1)
|
|
ld [wAudioROMBank], a
|
|
ld [wAudioSavedROMBank], a
|
|
call WaitForSoundToFinish
|
|
ld a, SFX_SWAP
|
|
call PlaySound
|
|
call WaitForSoundToFinish
|
|
pop af
|
|
ld [wAudioROMBank], a
|
|
ld [wAudioSavedROMBank], a
|
|
xor a
|
|
ld [wMuteAudioAndPauseMusic], a
|
|
pop hl
|
|
pop de
|
|
pop bc
|
|
pop af
|
|
ld hl, PoofText
|
|
ret
|
|
|
|
PoofText: ; 6d88 (1:6d88)
|
|
TX_FAR _PoofText
|
|
db $a
|
|
ForgotAndText: ; 6d8d (1:6d8d)
|
|
TX_FAR _ForgotAndText
|
|
db "@"
|
|
|
|
HMCantDeleteText: ; 6d92 (1:6d92)
|
|
TX_FAR _HMCantDeleteText
|
|
db "@"
|