summaryrefslogtreecommitdiff
path: root/engine/learn_move.asm
diff options
context:
space:
mode:
Diffstat (limited to 'engine/learn_move.asm')
-rwxr-xr-xengine/learn_move.asm228
1 files changed, 228 insertions, 0 deletions
diff --git a/engine/learn_move.asm b/engine/learn_move.asm
new file mode 100755
index 00000000..c1f5dee1
--- /dev/null
+++ b/engine/learn_move.asm
@@ -0,0 +1,228 @@
+LearnMove: ; 6e43 (1:6e43)
+ call SaveScreenTilesToBuffer1
+ ld a, [wWhichPokemon] ; $cf92
+ ld hl, W_PARTYMON1NAME ; $d2b5
+ call GetPartyMonName
+ ld hl, $cd6d
+ ld de, $d036
+ ld bc, $b
+ call CopyData
+
+DontAbandonLearning: ; 6e5b (1:6e5b)
+ ld hl, W_PARTYMON1_MOVE1 ; $d173
+ ld bc, $2c
+ ld a, [wWhichPokemon] ; $cf92
+ call AddNTimes
+ ld d, h
+ ld e, l
+ ld b, $4
+.asm_6e6b
+ ld a, [hl]
+ and a
+ jr z, .asm_6e8b
+ inc hl
+ dec b
+ jr nz, .asm_6e6b
+ push de
+ call TryingToLearn
+ pop de
+ jp c, AbandonLearning
+ push hl
+ push de
+ ld [$d11e], a
+ call GetMoveName
+ ld hl, OneTwoAndText
+ call PrintText
+ pop de
+ pop hl
+.asm_6e8b
+ ld a, [$d0e0]
+ ld [hl], a
+ ld bc, $15
+ add hl, bc
+ push hl
+ push de
+ dec a
+ ld hl, Moves ; $4000
+ ld bc, $6
+ call AddNTimes
+ ld de, $cee9
+ ld a, BANK(Moves)
+ call FarCopyData
+ ld a, [$ceee]
+ pop de
+ pop hl
+ ld [hl], a
+ ld a, [W_ISINBATTLE] ; $d057
+ and a
+ jp z, PrintLearnedMove
+ ld a, [wWhichPokemon] ; $cf92
+ ld b, a
+ ld a, [wPlayerMonNumber] ; $cc2f
+ cp b
+ jp nz, PrintLearnedMove
+ ld h, d
+ ld l, e
+ ld de, W_PLAYERMONMOVES
+ ld bc, $4
+ call CopyData
+ ld bc, $11
+ add hl, bc
+ ld de, W_PLAYERMONPP ; $d02d
+ ld bc, $4
+ call CopyData
+ jp PrintLearnedMove
+
+AbandonLearning: ; 6eda (1:6eda)
+ ld hl, AbandonLearningText
+ call PrintText
+ FuncCoord 14, 7 ; $c43a
+ ld hl, Coord
+ ld bc, $80f
+ ld a, $14
+ ld [$d125], a
+ call DisplayTextBoxID
+ ld a, [wCurrentMenuItem] ; $cc26
+ and a
+ jp nz, DontAbandonLearning
+ ld hl, DidNotLearnText
+ call PrintText
+ ld b, $0
+ ret
+
+PrintLearnedMove: ; 6efe (1:6efe)
+ ld hl, LearnedMove1Text
+ call PrintText
+ ld b, $1
+ ret
+
+TryingToLearn: ; 6f07 (1:6f07)
+ push hl
+ ld hl, TryingToLearnText
+ call PrintText
+ FuncCoord 14, 7 ; $c43a
+ ld hl, Coord
+ ld bc, $80f
+ ld a, $14
+ ld [$d125], a
+ call DisplayTextBoxID
+ pop hl
+ ld a, [wCurrentMenuItem] ; $cc26
+ rra
+ ret c
+ ld bc, $fffc
+ add hl, bc
+ push hl
+ ld de, $d0dc
+ ld bc, $4
+ call CopyData
+ callab Func_39b87
+ pop hl
+.asm_6f39
+ push hl
+ ld hl, WhichMoveToForgetText
+ call PrintText
+ FuncCoord 4, 7 ; $c430
+ ld hl, Coord
+ ld b, $4
+ ld c, $e
+ call TextBoxBorder
+ FuncCoord 6, 8 ; $c446
+ ld hl, Coord
+ ld de, $d0e1
+ ld a, [$fff6]
+ set 2, a
+ ld [$fff6], a
+ call PlaceString
+ ld a, [$fff6]
+ res 2, a
+ ld [$fff6], a
+ ld hl, wTopMenuItemY ; $cc24
+ ld a, $8
+ ld [hli], a
+ ld a, $5
+ ld [hli], a
+ xor a
+ ld [hli], a
+ inc hl
+ ld a, [$cd6c]
+ ld [hli], a
+ ld a, $3
+ ld [hli], a
+ ld [hl], $0
+ ld hl, $fff6
+ set 1, [hl]
+ call HandleMenuInput
+ ld hl, $fff6
+ res 1, [hl]
+ push af
+ call LoadScreenTilesFromBuffer1
+ pop af
+ pop hl
+ bit 1, a
+ jr nz, .asm_6fab
+ push hl
+ ld a, [wCurrentMenuItem] ; $cc26
+ 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, .asm_6fa2
+ pop hl
+ add hl, bc
+ and a
+ ret
+.asm_6fa2
+ ld hl, HMCantDeleteText
+ call PrintText
+ pop hl
+ jr .asm_6f39
+.asm_6fab
+ scf
+ ret
+
+LearnedMove1Text: ; 6fb4 (1:6fb4)
+ TX_FAR _LearnedMove1Text
+ db $b,6,"@"
+
+WhichMoveToForgetText: ; 6fb4 (1:6fb4)
+ TX_FAR _WhichMoveToForgetText
+ db "@"
+
+AbandonLearningText: ; 6fb9 (1:6fb9)
+ TX_FAR _AbandonLearningText
+ db "@"
+
+DidNotLearnText: ; 6fbe (1:6fbe)
+ TX_FAR _DidNotLearnText
+ db "@"
+
+TryingToLearnText: ; 6fc3 (1:6fc3)
+ TX_FAR _TryingToLearnText
+ db "@"
+
+OneTwoAndText: ; 6fc8 (1:6fc8)
+ TX_FAR _OneTwoAndText
+ db $a
+ db $8
+ ld a, (SFX_02_58 - SFX_Headers_02) / 3
+ call PlaySoundWaitForCurrent
+ ld hl, PoofText
+ ret
+
+PoofText: ; 6fd7 (1:6fd7)
+ TX_FAR _PoofText
+ db $a
+ForgotAndText: ; 6fdc (1:6fdc)
+ TX_FAR _ForgotAndText
+ db "@"
+
+HMCantDeleteText: ; 6fe1 (1:6fe1)
+ TX_FAR _HMCantDeleteText
+ db "@"