summaryrefslogtreecommitdiff
path: root/engine/pokemon
diff options
context:
space:
mode:
Diffstat (limited to 'engine/pokemon')
-rwxr-xr-xengine/pokemon/move_mon.asm8
-rw-r--r--engine/pokemon/move_mon_wo_mail.asm133
2 files changed, 137 insertions, 4 deletions
diff --git a/engine/pokemon/move_mon.asm b/engine/pokemon/move_mon.asm
index 7198910d..5fce891f 100755
--- a/engine/pokemon/move_mon.asm
+++ b/engine/pokemon/move_mon.asm
@@ -406,7 +406,7 @@ AddTempmonToParty: ; da9c (3:5a9c)
ld a, [wFirstUnownSeen]
and a
jr nz, .asm_db43
- ld a, [wd11e]
+ ld a, [wUnownLetter]
ld [wFirstUnownSeen], a
.asm_db43
and a
@@ -604,7 +604,7 @@ SendGetMonIntoFromBox: ; db45 (3:5b45)
ld a, [sBoxCount]
dec a
ld b, a
- call Functiondcbc
+ call RestorePPOfDepositedPokemon
Functiondcb2: ; dcb2 (3:5cb2)
call CloseSRAM
and a
@@ -615,7 +615,7 @@ Functiondcb7: ; dcb7 (3:5cb7)
scf
ret
-Functiondcbc: ; dcbc (3:5cbc)
+RestorePPOfDepositedPokemon:
ld a, b
ld hl, sBoxMon1Species
ld bc, BOXMON_STRUCT_LENGTH
@@ -947,7 +947,7 @@ SendMonIntoBox: ; de74 (3:5e74)
ld bc, $4
call CopyBytes
ld b, $0
- call Functiondcbc
+ call RestorePPOfDepositedPokemon
call CloseSRAM
scf
ret
diff --git a/engine/pokemon/move_mon_wo_mail.asm b/engine/pokemon/move_mon_wo_mail.asm
new file mode 100644
index 00000000..79f70d05
--- /dev/null
+++ b/engine/pokemon/move_mon_wo_mail.asm
@@ -0,0 +1,133 @@
+InsertPokemonIntoBox:
+ ld a, BANK(sBoxCount)
+ call OpenSRAM
+ ld hl, sBoxCount
+ call InsertSpeciesIntoBoxOrParty
+ ld a, [sBoxCount]
+ dec a
+ ld [wNextBoxOrPartyIndex], a
+ ld hl, sBoxMonNicknames
+ ld bc, MON_NAME_LENGTH
+ ld de, wBufferMonNick
+ call InsertDataIntoBoxOrParty
+ ld a, [sBoxCount]
+ dec a
+ ld [wNextBoxOrPartyIndex], a
+ ld hl, sBoxMonOT
+ ld bc, NAME_LENGTH
+ ld de, wBufferMonOT
+ call InsertDataIntoBoxOrParty
+ ld a, [sBoxCount]
+ dec a
+ ld [wNextBoxOrPartyIndex], a
+ ld hl, sBoxMons
+ ld bc, BOXMON_STRUCT_LENGTH
+ ld de, wBufferMon
+ call InsertDataIntoBoxOrParty
+ ld hl, wBufferMonMoves
+ ld de, wTempMonMoves
+ ld bc, NUM_MOVES
+ call CopyBytes
+ ld hl, wBufferMonPP
+ ld de, wTempMonPP
+ ld bc, NUM_MOVES
+ call CopyBytes
+ ld a, [wCurPartyMon]
+ ld b, a
+ farcall RestorePPOfDepositedPokemon
+ jp CloseSRAM
+
+InsertPokemonIntoParty:
+ ld hl, wPartyCount
+ call InsertSpeciesIntoBoxOrParty
+ ld a, [wPartyCount]
+ dec a
+ ld [wNextBoxOrPartyIndex], a
+ ld hl, wPartyMonNicknames
+ ld bc, MON_NAME_LENGTH
+ ld de, wBufferMonNick
+ call InsertDataIntoBoxOrParty
+ ld a, [wPartyCount]
+ dec a
+ ld [wNextBoxOrPartyIndex], a
+ ld hl, wPartyMonOT
+ ld bc, NAME_LENGTH
+ ld de, wBufferMonOT
+ call InsertDataIntoBoxOrParty
+ ld a, [wPartyCount]
+ dec a
+ ld [wNextBoxOrPartyIndex], a
+ ld hl, wPartyMons
+ ld bc, PARTYMON_STRUCT_LENGTH
+ ld de, wBufferMon
+ call InsertDataIntoBoxOrParty
+ ret
+
+InsertSpeciesIntoBoxOrParty:
+ inc [hl]
+ inc hl
+ ld a, [wCurPartyMon]
+ ld c, a
+ ld b, 0
+ add hl, bc
+ ld a, [wCurPartySpecies]
+ ld c, a
+.loop
+ ld a, [hl]
+ ld [hl], c
+ inc hl
+ inc c
+ ld c, a
+ jr nz, .loop
+ ret
+
+InsertDataIntoBoxOrParty:
+ push de
+ push hl
+ push bc
+ ld a, [wNextBoxOrPartyIndex]
+ dec a
+ call AddNTimes
+ push hl
+ add hl, bc
+ ld d, h
+ ld e, l
+ pop hl
+.loop
+ push bc
+ ld a, [wNextBoxOrPartyIndex]
+ ld b, a
+ ld a, [wCurPartyMon]
+ cp b
+ pop bc
+ jr z, .insert
+ push hl
+ push de
+ push bc
+ call CopyBytes
+ pop bc
+ pop de
+ pop hl
+ push hl
+ ld a, l
+ sub c
+ ld l, a
+ ld a, h
+ sbc b
+ ld h, a
+ pop de
+ ld a, [wNextBoxOrPartyIndex]
+ dec a
+ ld [wNextBoxOrPartyIndex], a
+ jr .loop
+
+.insert
+ pop bc
+ pop hl
+ ld a, [wCurPartyMon]
+ call AddNTimes
+ ld d, h
+ ld e, l
+ pop hl
+ call CopyBytes
+ ret