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
191
192
193
|
ProfOaksPC:
ld hl, OakPCText1
call MenuTextbox
call YesNoBox
jr c, .shutdown
call ProfOaksPCBoot ; player chose "yes"?
.shutdown
ld hl, OakPCText4
call PrintText
call JoyWaitAorB
call ExitMenu
ret
ProfOaksPCBoot:
ld hl, OakPCText2
call PrintText
call Rate
call PlaySFX ; sfx loaded by previous Rate function call
call JoyWaitAorB
call WaitSFX
ret
ProfOaksPCRating:
call Rate
push de
ld de, MUSIC_NONE
call PlayMusic
pop de
call PlaySFX
call JoyWaitAorB
call WaitSFX
ret
Rate:
; calculate Seen/Owned
ld hl, wPokedexSeen
ld b, wEndPokedexSeen - wPokedexSeen
call CountSetBits
ld [wTempPokedexSeenCount], a
ld hl, wPokedexCaught
ld b, wEndPokedexCaught - wPokedexCaught
call CountSetBits
ld [wTempPokedexCaughtCount], a
; print appropriate rating
call .UpdateRatingBuffers
ld hl, OakPCText3
call PrintText
call JoyWaitAorB
ld a, [wTempPokedexCaughtCount]
ld hl, OakRatings
call FindOakRating
push de
call PrintText
pop de
ret
.UpdateRatingBuffers:
ld hl, wStringBuffer3
ld de, wTempPokedexSeenCount
call .UpdateRatingBuffer
ld hl, wStringBuffer4
ld de, wTempPokedexCaughtCount
call .UpdateRatingBuffer
ret
.UpdateRatingBuffer:
push hl
ld a, "@"
ld bc, ITEM_NAME_LENGTH
call ByteFill
pop hl
lb bc, PRINTNUM_LEFTALIGN | 1, 3
call PrintNum
ret
FindOakRating:
; return sound effect in de
; return text pointer in hl
nop
ld c, a
.loop
ld a, [hli]
cp c
jr nc, .match
rept 4
inc hl
endr
jr .loop
.match
ld a, [hli]
ld e, a
ld a, [hli]
ld d, a
ld a, [hli]
ld h, [hl]
ld l, a
ret
INCLUDE "data/events/pokedex_ratings.asm"
OakPCText1:
text_far _OakPCText1
text_end
OakPCText2:
text_far _OakPCText2
text_end
OakPCText3:
text_far _OakPCText3
text_end
OakRating01:
text_far _OakRating01
text_end
OakRating02:
text_far _OakRating02
text_end
OakRating03:
text_far _OakRating03
text_end
OakRating04:
text_far _OakRating04
text_end
OakRating05:
text_far _OakRating05
text_end
OakRating06:
text_far _OakRating06
text_end
OakRating07:
text_far _OakRating07
text_end
OakRating08:
text_far _OakRating08
text_end
OakRating09:
text_far _OakRating09
text_end
OakRating10:
text_far _OakRating10
text_end
OakRating11:
text_far _OakRating11
text_end
OakRating12:
text_far _OakRating12
text_end
OakRating13:
text_far _OakRating13
text_end
OakRating14:
text_far _OakRating14
text_end
OakRating15:
text_far _OakRating15
text_end
OakRating16:
text_far _OakRating16
text_end
OakRating17:
text_far _OakRating17
text_end
OakRating18:
text_far _OakRating18
text_end
OakRating19:
text_far _OakRating19
text_end
OakPCText4:
text_far _OakPCText4
text_end
|