1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
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, wBufferMonNickname
call InsertDataIntoBoxOrParty
ld a, [sBoxCount]
dec a
ld [wNextBoxOrPartyIndex], a
ld hl, sBoxMonOTs
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, wBufferMonNickname
call InsertDataIntoBoxOrParty
ld a, [wPartyCount]
dec a
ld [wNextBoxOrPartyIndex], a
ld hl, wPartyMonOTs
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
|