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
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
|
StagePartyDataForMysteryGift:
; You will be sending this data to your mystery gift partner.
; Structure is the same as a trainer with species and moves
; defined.
ld a, BANK(sPokemonData)
call OpenSRAM
ld de, wMysteryGiftStaging
ld bc, sPokemonData + wPartyMons - wPokemonData
ld hl, sPokemonData + wPartySpecies - wPokemonData
.loop
ld a, [hli]
cp -1
jr z, .party_end
cp EGG
jr z, .next
push hl
; copy level
ld hl, MON_LEVEL
add hl, bc
ld a, [hl]
ld [de], a
inc de
; copy species
ld hl, MON_SPECIES
add hl, bc
ld a, [hl]
ld [de], a
inc de
; copy moves
ld hl, MON_MOVES
add hl, bc
push bc
ld bc, NUM_MOVES
call CopyBytes
pop bc
pop hl
.next
push hl
ld hl, PARTYMON_STRUCT_LENGTH
add hl, bc
ld b, h
ld c, l
pop hl
jr .loop
.party_end
ld a, -1
ld [de], a
ld a, wMysteryGiftTrainerEnd - wMysteryGiftTrainer
ld [wUnusedMysteryGiftStagedDataLength], a
jp CloseSRAM
InitMysteryGiftLayout:
call ClearBGPalettes
call DisableLCD
ld hl, MysteryGiftGFX
ld de, vTiles2 tile $00
ld a, BANK(MysteryGiftGFX)
ld bc, $20 tiles
call FarCopyBytes
farcall LoadMysteryGiftBackgroundGFX
farcall LoadMysteryGiftGFX2
ld hl, vTiles2 tile $3d
ld a, $ff
ld bc, 1 tiles
call ByteFill
hlcoord 0, 0
ld a, $3d
ld bc, SCREEN_HEIGHT * SCREEN_WIDTH
call ByteFill
hlcoord 3, 7
lb bc, 9, 15
call ClearBox
hlcoord 0, 0
ld a, $1e
ld [hli], a
inc a
ld [hl], a
hlcoord 0, 1
ld a, $33
ld [hli], a
inc a
ld [hl], a
hlcoord 3, 1
ld a, 0
call .Load15GFX
hlcoord 3, 2
ld a, $f
call .Load15GFX
hlcoord 8, 0
ld a, $20
call .Load4GFX
hlcoord 9, 3
ld a, $24
call .Load3GFX
hlcoord 9, 4
ld [hl], $27
hlcoord 1, 2
ld a, $2e
call .Load15Column
hlcoord 18, 5
ld a, $2a
call .Load11Column
hlcoord 2, 5
ld a, $28
call .Load16Row
hlcoord 2, 16
ld a, $2c
call .Load16Row
hlcoord 2, 5
ld a, $35
call .Load4GFX
hlcoord 18, 5
ld [hl], $29
hlcoord 18, 16
ld [hl], $2b
hlcoord 1, 16
ld [hl], $2d
hlcoord 2, 6
ld a, $39
call .Load16Row
hlcoord 2, 15
ld a, $3b
call .Load16Row
hlcoord 2, 6
ld a, $3c
call .Load9Column
hlcoord 17, 6
ld a, $3a
call .Load9Column
hlcoord 2, 6
ld [hl], $2f
hlcoord 17, 6
ld [hl], $30
hlcoord 2, 15
ld [hl], $32
hlcoord 17, 15
ld [hl], $31
call EnableLCD
call WaitBGMap
ld b, SCGB_MYSTERY_GIFT
call GetSGBLayout
jp SetPalettes
.Load3GFX:
ld b, 3
jr .gfx_loop
.Load4GFX:
ld b, 4
jr .gfx_loop
.Load15GFX:
ld b, 15
.gfx_loop
ld [hli], a
inc a
dec b
jr nz, .gfx_loop
ret
.Load9Column:
ld b, 9
jr .col_loop
.Load11Column:
ld b, 11
jr .col_loop
.Load15Column:
ld b, 15
.col_loop
ld [hl], a
ld de, SCREEN_WIDTH
add hl, de
dec b
jr nz, .col_loop
ret
.Load16Row:
ld b, 16
.row_loop
ld [hli], a
dec b
jr nz, .row_loop
ret
MysteryGiftGFX:
INCBIN "gfx/mystery_gift/mystery_gift.2bpp"
|