~moody/pse

pse/pokegen.go -rw-r--r-- 10.5 KiB
e4de17d5 — Jacob Moody Introduce pse(1) 9 months ago
                                                                                
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
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
package pse

func NewPokeData(b []byte, ID uint32, personality uint32) PokeData {
	var (
		g PokeDataG
		a PokeDataA
		m PokeDataM
		e PokeDataE
	)
	switch personality % 24 {
	case 0:
		g = NewPokeDataG(b[0:12], ID, personality)
		a = NewPokeDataA(b[12:24], ID, personality)
		e = NewPokeDataE(b[24:36], ID, personality)
		m = NewPokeDataM(b[36:48], ID, personality)
	case 1:
		g = NewPokeDataG(b[0:12], ID, personality)
		a = NewPokeDataA(b[12:24], ID, personality)
		m = NewPokeDataM(b[24:36], ID, personality)
		e = NewPokeDataE(b[36:48], ID, personality)
	case 2:
		g = NewPokeDataG(b[0:12], ID, personality)
		e = NewPokeDataE(b[12:24], ID, personality)
		a = NewPokeDataA(b[24:36], ID, personality)
		m = NewPokeDataM(b[36:48], ID, personality)
	case 3:
		g = NewPokeDataG(b[0:12], ID, personality)
		e = NewPokeDataE(b[12:24], ID, personality)
		m = NewPokeDataM(b[24:36], ID, personality)
		a = NewPokeDataA(b[36:48], ID, personality)
	case 4:
		g = NewPokeDataG(b[0:12], ID, personality)
		m = NewPokeDataM(b[12:24], ID, personality)
		a = NewPokeDataA(b[24:36], ID, personality)
		e = NewPokeDataE(b[36:48], ID, personality)
	case 5:
		g = NewPokeDataG(b[0:12], ID, personality)
		m = NewPokeDataM(b[12:24], ID, personality)
		e = NewPokeDataE(b[24:36], ID, personality)
		a = NewPokeDataA(b[36:48], ID, personality)
	case 6:
		a = NewPokeDataA(b[0:12], ID, personality)
		g = NewPokeDataG(b[12:24], ID, personality)
		e = NewPokeDataE(b[24:36], ID, personality)
		m = NewPokeDataM(b[36:48], ID, personality)
	case 7:
		a = NewPokeDataA(b[0:12], ID, personality)
		g = NewPokeDataG(b[12:24], ID, personality)
		m = NewPokeDataM(b[24:36], ID, personality)
		e = NewPokeDataE(b[36:48], ID, personality)
	case 8:
		a = NewPokeDataA(b[0:12], ID, personality)
		e = NewPokeDataE(b[12:24], ID, personality)
		g = NewPokeDataG(b[24:36], ID, personality)
		m = NewPokeDataM(b[36:48], ID, personality)
	case 9:
		a = NewPokeDataA(b[0:12], ID, personality)
		e = NewPokeDataE(b[12:24], ID, personality)
		m = NewPokeDataM(b[24:36], ID, personality)
		g = NewPokeDataG(b[36:48], ID, personality)
	case 10:
		a = NewPokeDataA(b[0:12], ID, personality)
		m = NewPokeDataM(b[12:24], ID, personality)
		g = NewPokeDataG(b[24:36], ID, personality)
		e = NewPokeDataE(b[36:48], ID, personality)
	case 11:
		a = NewPokeDataA(b[0:12], ID, personality)
		m = NewPokeDataM(b[12:24], ID, personality)
		e = NewPokeDataE(b[24:36], ID, personality)
		g = NewPokeDataG(b[36:48], ID, personality)
	case 12:
		e = NewPokeDataE(b[0:12], ID, personality)
		g = NewPokeDataG(b[12:24], ID, personality)
		a = NewPokeDataA(b[24:36], ID, personality)
		m = NewPokeDataM(b[36:48], ID, personality)
	case 13:
		e = NewPokeDataE(b[0:12], ID, personality)
		g = NewPokeDataG(b[12:24], ID, personality)
		m = NewPokeDataM(b[24:36], ID, personality)
		a = NewPokeDataA(b[36:48], ID, personality)
	case 14:
		e = NewPokeDataE(b[0:12], ID, personality)
		a = NewPokeDataA(b[12:24], ID, personality)
		g = NewPokeDataG(b[24:36], ID, personality)
		m = NewPokeDataM(b[36:48], ID, personality)
	case 15:
		e = NewPokeDataE(b[0:12], ID, personality)
		a = NewPokeDataA(b[12:24], ID, personality)
		m = NewPokeDataM(b[24:36], ID, personality)
		g = NewPokeDataG(b[36:48], ID, personality)
	case 16:
		e = NewPokeDataE(b[0:12], ID, personality)
		m = NewPokeDataM(b[12:24], ID, personality)
		g = NewPokeDataG(b[24:36], ID, personality)
		a = NewPokeDataA(b[36:48], ID, personality)
	case 17:
		e = NewPokeDataE(b[0:12], ID, personality)
		m = NewPokeDataM(b[12:24], ID, personality)
		a = NewPokeDataA(b[24:36], ID, personality)
		g = NewPokeDataG(b[36:48], ID, personality)
	case 18:
		m = NewPokeDataM(b[0:12], ID, personality)
		g = NewPokeDataG(b[12:24], ID, personality)
		a = NewPokeDataA(b[24:36], ID, personality)
		e = NewPokeDataE(b[36:48], ID, personality)
	case 19:
		m = NewPokeDataM(b[0:12], ID, personality)
		g = NewPokeDataG(b[12:24], ID, personality)
		e = NewPokeDataE(b[24:36], ID, personality)
		a = NewPokeDataA(b[36:48], ID, personality)
	case 20:
		m = NewPokeDataM(b[0:12], ID, personality)
		a = NewPokeDataA(b[12:24], ID, personality)
		g = NewPokeDataG(b[24:36], ID, personality)
		e = NewPokeDataE(b[36:48], ID, personality)
	case 21:
		m = NewPokeDataM(b[0:12], ID, personality)
		a = NewPokeDataA(b[12:24], ID, personality)
		e = NewPokeDataE(b[24:36], ID, personality)
		g = NewPokeDataG(b[36:48], ID, personality)
	case 22:
		m = NewPokeDataM(b[0:12], ID, personality)
		e = NewPokeDataE(b[12:24], ID, personality)
		g = NewPokeDataG(b[24:36], ID, personality)
		a = NewPokeDataA(b[36:48], ID, personality)
	case 23:
		m = NewPokeDataM(b[0:12], ID, personality)
		e = NewPokeDataE(b[12:24], ID, personality)
		a = NewPokeDataA(b[24:36], ID, personality)
		g = NewPokeDataG(b[36:48], ID, personality)
	}
	return PokeData{g, a, m, e, b}
}

func (p *PokeData) Commit(ID uint32, personality uint32) {
	switch personality % 24 {
	case 0:
		copy(p.data[0:12], p.PokeDataG.Commit(ID, personality))
		copy(p.data[12:24], p.PokeDataA.Commit(ID, personality))
		copy(p.data[24:36], p.PokeDataE.Commit(ID, personality))
		copy(p.data[36:48], p.PokeDataM.Commit(ID, personality))
	case 1:
		copy(p.data[0:12], p.PokeDataG.Commit(ID, personality))
		copy(p.data[12:24], p.PokeDataA.Commit(ID, personality))
		copy(p.data[24:36], p.PokeDataM.Commit(ID, personality))
		copy(p.data[36:48], p.PokeDataE.Commit(ID, personality))
	case 2:
		copy(p.data[0:12], p.PokeDataG.Commit(ID, personality))
		copy(p.data[12:24], p.PokeDataE.Commit(ID, personality))
		copy(p.data[24:36], p.PokeDataA.Commit(ID, personality))
		copy(p.data[36:48], p.PokeDataM.Commit(ID, personality))
	case 3:
		copy(p.data[0:12], p.PokeDataG.Commit(ID, personality))
		copy(p.data[12:24], p.PokeDataE.Commit(ID, personality))
		copy(p.data[24:36], p.PokeDataM.Commit(ID, personality))
		copy(p.data[36:48], p.PokeDataA.Commit(ID, personality))
	case 4:
		copy(p.data[0:12], p.PokeDataG.Commit(ID, personality))
		copy(p.data[12:24], p.PokeDataM.Commit(ID, personality))
		copy(p.data[24:36], p.PokeDataA.Commit(ID, personality))
		copy(p.data[36:48], p.PokeDataE.Commit(ID, personality))
	case 5:
		copy(p.data[0:12], p.PokeDataG.Commit(ID, personality))
		copy(p.data[12:24], p.PokeDataM.Commit(ID, personality))
		copy(p.data[24:36], p.PokeDataE.Commit(ID, personality))
		copy(p.data[36:48], p.PokeDataA.Commit(ID, personality))
	case 6:
		copy(p.data[0:12], p.PokeDataA.Commit(ID, personality))
		copy(p.data[12:24], p.PokeDataG.Commit(ID, personality))
		copy(p.data[24:36], p.PokeDataE.Commit(ID, personality))
		copy(p.data[36:48], p.PokeDataM.Commit(ID, personality))
	case 7:
		copy(p.data[0:12], p.PokeDataA.Commit(ID, personality))
		copy(p.data[12:24], p.PokeDataG.Commit(ID, personality))
		copy(p.data[24:36], p.PokeDataM.Commit(ID, personality))
		copy(p.data[36:48], p.PokeDataE.Commit(ID, personality))
	case 8:
		copy(p.data[0:12], p.PokeDataA.Commit(ID, personality))
		copy(p.data[12:24], p.PokeDataE.Commit(ID, personality))
		copy(p.data[24:36], p.PokeDataG.Commit(ID, personality))
		copy(p.data[36:48], p.PokeDataM.Commit(ID, personality))
	case 9:
		copy(p.data[0:12], p.PokeDataA.Commit(ID, personality))
		copy(p.data[12:24], p.PokeDataE.Commit(ID, personality))
		copy(p.data[24:36], p.PokeDataM.Commit(ID, personality))
		copy(p.data[36:48], p.PokeDataG.Commit(ID, personality))
	case 10:
		copy(p.data[0:12], p.PokeDataA.Commit(ID, personality))
		copy(p.data[12:24], p.PokeDataM.Commit(ID, personality))
		copy(p.data[24:36], p.PokeDataG.Commit(ID, personality))
		copy(p.data[36:48], p.PokeDataE.Commit(ID, personality))
	case 11:
		copy(p.data[0:12], p.PokeDataA.Commit(ID, personality))
		copy(p.data[12:24], p.PokeDataM.Commit(ID, personality))
		copy(p.data[24:36], p.PokeDataE.Commit(ID, personality))
		copy(p.data[36:48], p.PokeDataG.Commit(ID, personality))
	case 12:
		copy(p.data[0:12], p.PokeDataE.Commit(ID, personality))
		copy(p.data[12:24], p.PokeDataG.Commit(ID, personality))
		copy(p.data[24:36], p.PokeDataA.Commit(ID, personality))
		copy(p.data[36:48], p.PokeDataM.Commit(ID, personality))
	case 13:
		copy(p.data[0:12], p.PokeDataE.Commit(ID, personality))
		copy(p.data[12:24], p.PokeDataG.Commit(ID, personality))
		copy(p.data[24:36], p.PokeDataM.Commit(ID, personality))
		copy(p.data[36:48], p.PokeDataA.Commit(ID, personality))
	case 14:
		copy(p.data[0:12], p.PokeDataE.Commit(ID, personality))
		copy(p.data[12:24], p.PokeDataA.Commit(ID, personality))
		copy(p.data[24:36], p.PokeDataG.Commit(ID, personality))
		copy(p.data[36:48], p.PokeDataM.Commit(ID, personality))
	case 15:
		copy(p.data[0:12], p.PokeDataE.Commit(ID, personality))
		copy(p.data[12:24], p.PokeDataA.Commit(ID, personality))
		copy(p.data[24:36], p.PokeDataM.Commit(ID, personality))
		copy(p.data[36:48], p.PokeDataG.Commit(ID, personality))
	case 16:
		copy(p.data[0:12], p.PokeDataE.Commit(ID, personality))
		copy(p.data[12:24], p.PokeDataM.Commit(ID, personality))
		copy(p.data[24:36], p.PokeDataG.Commit(ID, personality))
		copy(p.data[36:48], p.PokeDataA.Commit(ID, personality))
	case 17:
		copy(p.data[0:12], p.PokeDataE.Commit(ID, personality))
		copy(p.data[12:24], p.PokeDataM.Commit(ID, personality))
		copy(p.data[24:36], p.PokeDataA.Commit(ID, personality))
		copy(p.data[36:48], p.PokeDataG.Commit(ID, personality))
	case 18:
		copy(p.data[0:12], p.PokeDataM.Commit(ID, personality))
		copy(p.data[12:24], p.PokeDataG.Commit(ID, personality))
		copy(p.data[24:36], p.PokeDataA.Commit(ID, personality))
		copy(p.data[36:48], p.PokeDataE.Commit(ID, personality))
	case 19:
		copy(p.data[0:12], p.PokeDataM.Commit(ID, personality))
		copy(p.data[12:24], p.PokeDataG.Commit(ID, personality))
		copy(p.data[24:36], p.PokeDataE.Commit(ID, personality))
		copy(p.data[36:48], p.PokeDataA.Commit(ID, personality))
	case 20:
		copy(p.data[0:12], p.PokeDataM.Commit(ID, personality))
		copy(p.data[12:24], p.PokeDataA.Commit(ID, personality))
		copy(p.data[24:36], p.PokeDataG.Commit(ID, personality))
		copy(p.data[36:48], p.PokeDataE.Commit(ID, personality))
	case 21:
		copy(p.data[0:12], p.PokeDataM.Commit(ID, personality))
		copy(p.data[12:24], p.PokeDataA.Commit(ID, personality))
		copy(p.data[24:36], p.PokeDataE.Commit(ID, personality))
		copy(p.data[36:48], p.PokeDataG.Commit(ID, personality))
	case 22:
		copy(p.data[0:12], p.PokeDataM.Commit(ID, personality))
		copy(p.data[12:24], p.PokeDataE.Commit(ID, personality))
		copy(p.data[24:36], p.PokeDataG.Commit(ID, personality))
		copy(p.data[36:48], p.PokeDataA.Commit(ID, personality))
	case 23:
		copy(p.data[0:12], p.PokeDataM.Commit(ID, personality))
		copy(p.data[12:24], p.PokeDataE.Commit(ID, personality))
		copy(p.data[24:36], p.PokeDataA.Commit(ID, personality))
		copy(p.data[36:48], p.PokeDataG.Commit(ID, personality))
	}
}