├── Changing Name Data Instructions.txt
├── Editing Information
├── .DS_Store
├── B2W2 Alt Form Sprite ID's.txt
├── BW Alt Form Sprite ID's.txt
├── Gen IV Item Battle Script Documentation.pdf
├── Gen IV Item Structure.pdf
├── Gen IV Pluck and Fling Effect Documentation.pdf
├── Locations Information.txt
└── What can be edited.txt
├── LICENSE
├── PokÉditor.iml
├── Program Files
├── .DS_Store
├── AbilityList.txt
├── CharFix.txt
├── Defaults
│ ├── .DS_Store
│ ├── evolution4.csv
│ └── personal4.csv
├── Effects.txt
├── EntryData.txt
├── EntryDataGen5-1.txt
├── EntryDataGen5-2.txt
├── EntryDataGen6.txt
├── EvolutionMethodsGen4.txt
├── EvolutionMethodsGen5.txt
├── HeadbuttLocations.txt
├── IndoorLocations.txt
├── ItemBattleFunctionsGen4.txt
├── ItemFieldBagPocketsGen4.txt
├── ItemFieldFunctionsJohto.txt
├── ItemFieldFunctionsSinnoh.txt
├── ItemList Rebooted.txt
├── ItemListDP.txt
├── ItemListGen5.txt
├── ItemListJohto.txt
├── ItemListPt.txt
├── ItemScriptDataGen4.txt
├── Locations.txt
├── LocationsPt.txt
├── MoveList Rebooted.txt
├── MoveList.txt
├── OutdoorLocations.txt
├── PluckFlingEffectsGen4.txt
├── TmList.txt
├── TmListGen5.txt
├── TmNameListGen5.txt
├── TmNameListJohto.txt
├── TmNameListSinnoh.txt
├── TutorLocationsSinnoh.txt
├── identifiers.hex
└── version
├── README.md
├── Usage.md
├── out
├── .DS_Store
└── artifacts
│ └── .DS_Store
└── src
├── .DS_Store
├── DsFileFinder.java
├── DsRomReader.java
├── Editor.java
├── FimgEntry.java
├── FntbEntry.java
├── META-INF
└── MANIFEST.MF
├── RomData.java
├── Zygarc
├── GarcSubFile.java
└── Zygarc.java
├── babies
├── BabyFormEditor.java
├── SpecialBabyFormData.java
└── SpecialBabyFormEditor.java
├── encounters
├── DexAreaData.java
├── johto
│ ├── EncounterData.java
│ ├── EncounterEditor.java
│ ├── contest
│ │ ├── ContestEncounterData.java
│ │ └── ContestEncounterEditor.java
│ └── headbutt
│ │ ├── HeadbuttData.java
│ │ ├── HeadbuttEncounterEditor.java
│ │ └── TreeCoordinates.java
└── sinnoh
│ ├── SinnohEncounterData.java
│ └── SinnohEncounterEditor.java
├── evolutions
├── EvolutionData.java
├── gen4
│ └── EvolutionEditor.java
└── gen5
│ └── EvolutionEditorGen5.java
├── framework
├── .DS_Store
├── BLZCoder.java
├── BinaryWriter.java
├── BitStream.java
├── BitVector.java
├── Buffer.java
├── BufferTest.java
├── CsvReader.java
├── InterfaceFiller.java
└── MemBuf.java
├── growth
└── GrowthEditor.java
├── intro
└── IntroEditorGen4.java
├── items
├── ItemData.java
├── ItemEditorGen4.java
└── ItemEditorGen5.java
├── learnsets
├── LearnsetData.java
├── LearnsetEditor.java
└── MoveLearnsetData.java
├── moves
├── gen4
│ ├── MoveDataGen4.java
│ └── MoveEditorGen4.java
└── gen5
│ ├── MoveDataGen5.java
│ └── MoveEditorGen5.java
├── narctowl
├── NarcSubFile.java
├── Narctowl.java
└── TableSubFile.java
├── opening
└── OpeningEditorGen4.java
├── overlays
└── OverlayData.java
├── personal
├── gen4
│ ├── PersonalData.java
│ └── PersonalEditor.java
├── gen5
│ ├── Gen5PersonalData.java
│ ├── Gen5PersonalEditor1.java
│ └── Gen5PersonalEditor2.java
└── gen6
│ ├── PersonalDataGen6.java
│ └── PersonalEditorGen6.java
├── pokemart
├── MartData.java
└── MartEditor.java
├── randomizer
└── FileRandomizer.java
├── scripts
└── gen4
│ ├── ScriptEditorGen4.java
│ └── scriptData.java
├── starters
├── gen4
│ └── StarterEditorGen4.java
└── gen5
│ └── StarterEditorGen5.java
├── text
├── CharFixer.java
├── CharTable.java
├── PokeText.java
├── TextEditor.java
└── TextEditor2.java
├── trainers
└── gen4
│ ├── TrainerDataGen4.java
│ ├── TrainerEditorGen4.java
│ └── TrainerPokemonData.java
└── tutors
└── sinnoh
├── TutorCompatibilityEditor.java
├── TutorMoveListData.java
└── TutorMoveListEditor.java
/Changing Name Data Instructions.txt:
--------------------------------------------------------------------------------
1 | In the "Program Files" folder, you will find a bunch of .txt files containing different data.
2 |
3 | If your hack has an expanded dex, edited ability list, edited item list, edited move list, or any other edits, and you wish for these changes to be reflected in the data output by the program, simply open the text file you want to edit.
4 |
5 | Replace entries with what you've replaced them with (if applicable), add new entries (if applicable), or do anything else with the data as long as you are aware that the data must be in the same order as its actual indexes and offsets within the game.
6 |
7 | Below are some examples of files and what they control for program output:
8 | AbilityList.txt- List of Abilities
9 | EntryData.txt- List of Species Names
10 | ItemList.txt- List of items
11 | Locations.txt- List of locations for regular encounter data
12 | MoveList.txt- List of moves
13 | TmList.txt- List containing TM01-TM92, HM01-HM08
14 | TmNameList.txt- List containing the name associated with each TM/ HM.
--------------------------------------------------------------------------------
/Editing Information/.DS_Store:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/turtleisaac/PokEditor-v1/62cc30eac8822b3a0934e878a30117d053eb4b6c/Editing Information/.DS_Store
--------------------------------------------------------------------------------
/Editing Information/B2W2 Alt Form Sprite ID's.txt:
--------------------------------------------------------------------------------
1 | Documentation on Alternate Form Sprites in B2/W2- Written by turtleisaac
2 |
3 | Alternate Form Sprite ID- Description
4 | 0- Unown (B)
5 | 1- Unown (C)
6 | 2- Unown (D)
7 | 3- Unown (E)
8 | 4- Unown (F)
9 | 5- Unown (G)
10 | 6- Unown (H)
11 | 7- Unown (I)
12 | 8- Unown (J)
13 | 9- Unown (K)
14 | 10- Unown (L)
15 | 11- Unown (M)
16 | 12- Unown (N)
17 | 13- Unown (O)
18 | 14- Unown (P)
19 | 15- Unown (Q)
20 | 16- Unown (R)
21 | 17- Unown (S)
22 | 18- Unown (T)
23 | 19- Unown (U)
24 | 20- Unown (V)
25 | 21- Unown (W)
26 | 22- Unown (X)
27 | 23- Unown (Y)
28 | 24- Unown (Z)
29 | 25- Unown (!)
30 | 26- Unown (?)
31 | 27- Castform (Sun)
32 | 28- Castform (Rain)
33 | 29- Castform (Hail)
34 | 30- Deoxys (A)
35 | 31- Deoxys (D)
36 | 32- Deoxys (S)
37 | 33- Burmy (Sandy Cloak)
38 | 34- Burmy (Trash Cloak)
39 | 35- Wormadam (Sandy Cloak)
40 | 36- Wormadam (Trash Cloak)
41 | 37- Cherrim (Sunshine)
42 | 38- Shellos (East Sea)
43 | 39- Gastrodon (East Sea)
44 | 40- Rotom (Heat)
45 | 41- Rotom (Wash)
46 | 42- Rotom (Freeze)
47 | 43- Rotom (Fan)
48 | 44- Rotom (Mow)
49 | 45- Giratina (O)
50 | 46- Shaymin (S)
51 | 47- Basculin (Blue)
52 | 48- Darmanitan (Zen)
53 | 49- Deerling (Summer)
54 | 50- Deerling (Autumn)
55 | 51- Deerling (Winter)
56 | 52- Sawsbuck (Summer)
57 | 53- Sawsbuck (Autumn)
58 | 54- Sawsbuck (Winter)
59 | 55- Tornadus (T)
60 | 56- Thundurus (T)
61 | 57- Landorus (T)
62 | 58- Kyurem (W)
63 | 59- Kyurem (B)
64 | 60- Keldeo (R)
65 | 61- Meloetta (P)
66 | 62- Genesect (S)
67 | 63- Genesect (B)
68 | 64- Genesect (C)
69 | 65- Genesect (D)
--------------------------------------------------------------------------------
/Editing Information/BW Alt Form Sprite ID's.txt:
--------------------------------------------------------------------------------
1 | Documentation on Alternate Form Sprites in B/W- Written by turtleisaac
2 |
3 | Alternate Form Sprite ID- Sprite
4 | 0- Unown (B)
5 | 1- Unown (C)
6 | 2- Unown (D)
7 | 3- Unown (E)
8 | 4- Unown (F)
9 | 5- Unown (G)
10 | 6- Unown (H)
11 | 7- Unown (I)
12 | 8- Unown (J)
13 | 9- Unown (K)
14 | 10- Unown (L)
15 | 11- Unown (M)
16 | 12- Unown (N)
17 | 13- Unown (O)
18 | 14- Unown (P)
19 | 15- Unown (Q)
20 | 16- Unown (R)
21 | 17- Unown (S)
22 | 18- Unown (T)
23 | 19- Unown (U)
24 | 20- Unown (V)
25 | 21- Unown (W)
26 | 22- Unown (X)
27 | 23- Unown (Y)
28 | 24- Unown (Z)
29 | 25- Unown (!)
30 | 26- Unown (?)
31 | 27- Castform (Sun)
32 | 28- Castform (Rain)
33 | 29- Castform (Hail)
34 | 30- Deoxys (A)
35 | 31- Deoxys (D)
36 | 32- Deoxys (S)
37 | 33- Burmy (Sandy Cloak)
38 | 34- Burmy (Trash Cloak)
39 | 35- Wormadam (Sandy Cloak)
40 | 36- Wormadam (Trash Cloak)
41 | 37- Cherrim (Sunshine)
42 | 38- Shellos (East Sea)
43 | 39- Gastrodon (East Sea)
44 | 40- Rotom (Heat)
45 | 41- Rotom (Wash)
46 | 42- Rotom (Freeze)
47 | 43- Rotom (Fan)
48 | 44- Rotom (Mow)
49 | 45- Giratina (O)
50 | 46- Shaymin (S)
51 | 47- Basculin (Blue)
52 | 48- Darmanitan (Zen)
53 | 49- Deerling (Summer)
54 | 50- Deerling (Autumn)
55 | 51- Deerling (Winter)
56 | 52- Sawsbuck (Summer)
57 | 53- Sawsbuck (Autumn)
58 | 54- Sawsbuck (Winter)
59 | 55- Meloetta (P) - (Also shared with Kyurem for some reason)
60 | 56- Genesect (S)
61 | 57- Genesect (B)
62 | 58- Genesect (C)
63 | 59- Genesect (D)
--------------------------------------------------------------------------------
/Editing Information/Gen IV Item Battle Script Documentation.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/turtleisaac/PokEditor-v1/62cc30eac8822b3a0934e878a30117d053eb4b6c/Editing Information/Gen IV Item Battle Script Documentation.pdf
--------------------------------------------------------------------------------
/Editing Information/Gen IV Item Structure.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/turtleisaac/PokEditor-v1/62cc30eac8822b3a0934e878a30117d053eb4b6c/Editing Information/Gen IV Item Structure.pdf
--------------------------------------------------------------------------------
/Editing Information/Gen IV Pluck and Fling Effect Documentation.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/turtleisaac/PokEditor-v1/62cc30eac8822b3a0934e878a30117d053eb4b6c/Editing Information/Gen IV Pluck and Fling Effect Documentation.pdf
--------------------------------------------------------------------------------
/Editing Information/Locations Information.txt:
--------------------------------------------------------------------------------
1 | Narc Locations for HGSS:
2 |
3 | Personal Data: a/0/0/2.narc
4 | Learnset Data: a/0/3/3.narc
5 | Evolution Data: a/0/3/4.narc
6 | Encounter Data: (HG) a/0/3/7.narc, (SS) a/1/3/6.narc
7 |
8 | Narc Locations for DP:
9 |
10 |
11 | Narc Locations for PT:
12 |
--------------------------------------------------------------------------------
/Editing Information/What can be edited.txt:
--------------------------------------------------------------------------------
1 | What can be edited using PokÉditor
2 | Author: Turtleisaac
3 |
4 | Starting off with the personal data narc: all base stats, type 1, type 2, catch rate, exp yield, all EV yields (maximum value of 3 per EV), uncommon held item, rare held item, gender ratio (0-255, representing the number of encounters out of 254 that will be female. 0 is male only, 254 is female only. 255 is no gender.), hatch multiplier (number multiplied by 255 that represents amount of steps needed to hatch this species), base happiness, growth rate, egg group 1, egg group 2, ability 1, ability 2, run chance (safari zone only), a column I have lovingly labeled as "DO NOT TOUCH" (as Hiro's docs are clearly incorrect), and the TM learnset information for all TM's and HM's for this species.
5 |
6 | Next up is the learnset narc, which kind of speaks for itself. Each entry is defined by a move, followed by the level it is to be learned at. All species have a maximum learnset move count of 20, and all entries after the end of a mon's learnset should just be left blank.
7 |
8 | The next narc is the Evolutions narc. You can implement the method of evolution, what is required to evolve (representing a level, item, species, move, etc... depending on the selected method), and the resulting species. Each species has a maximum of 7 evolutions. If a pokemon has no evolution in a slot, it should have "None" as the defined method, the "Required" column should be left blank, and the "Result" column should contain "~" (tilde, the squiggly line)
9 |
10 | Lastly is the final narc (for now), the Encounters narc. With it, you can firstly change (on a by-area basis) (editing map header data is required to edit the associated encounter data for maps using that header) the master encounter rates for field encounters, water encounters (individual rates for each rod and surf), and rock smash encounters (all rates are out of 255).
11 |
12 | For field encounters you can edit the species that appears in any of 36 encounter slots: 12 for morning, 12 for day, 12 for night. Each slot for all three times share a hard-coded encounter rate and user-defined level (see program output to see what I mean). To make one species appear more frequently and at varying levels, simply put it in more encounter slots and vary the levels for those slots.
13 |
14 | For water encounters, there are five encounter slots each for surf, old rod, good rod, and super rod. Each has a hard-coded encounter rate, and you are able to define a range of levels for a pokemon to appear at by defining a minimum and maximum level.
15 |
16 | For rock smash encounters, there are two encounter slots, having hard-coded rates of 90% and 10%, respectively. You can define a range of levels once again using a minimum and maximum level.
17 |
18 | Mass Outbreak/ Swarm data has four entries per-area, representing a species that will appear in a field encounter, surf encounter, good rod encounter, or super rod encounter. The levels for these encounters are defined by the first encounter slot for their respective encounter methods.
19 |
20 | Pastoral/ Meridian Sound (Hoenn/ Sinnoh Sound) editing is super simple, all you need is to define species that appear in two slots for each area. The levels of these slots are defined by the field encounter slot 1 and slot 2 levels.
21 |
22 | To finish off the encounter data editor, if you wish to have no encounter present in a slot, enter in "~" (tilde, the squiggly line) as the pokemon name. Level/ min level/ max level should be set to 0 for those null entries.
--------------------------------------------------------------------------------
/PokÉditor.iml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/Program Files/.DS_Store:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/turtleisaac/PokEditor-v1/62cc30eac8822b3a0934e878a30117d053eb4b6c/Program Files/.DS_Store
--------------------------------------------------------------------------------
/Program Files/AbilityList.txt:
--------------------------------------------------------------------------------
1 | -
2 | Stench
3 | Drizzle
4 | Speed Boost
5 | Battle Armor
6 | Sturdy
7 | Damp
8 | Limber
9 | Sand Veil
10 | Static
11 | Volt Absorb
12 | Water Absorb
13 | Oblivious
14 | Cloud Nine
15 | Compoundeyes
16 | Insomnia
17 | Color Change
18 | Immunity
19 | Flash Fire
20 | Shield Dust
21 | Own Tempo
22 | Suction Cups
23 | Intimidate
24 | Shadow Tag
25 | Rough Skin
26 | Wonder Guard
27 | Levitate
28 | Effect Spore
29 | Synchronize
30 | Clear Body
31 | Natural Cure
32 | Lightningrod
33 | Serene Grace
34 | Swift Swim
35 | Chlorophyll
36 | Illuminate
37 | Trace
38 | Huge Power
39 | Poison Point
40 | Inner Focus
41 | Magma Armor
42 | Water Veil
43 | Magnet Pull
44 | Soundproof
45 | Rain Dish
46 | Sand Stream
47 | Pressure
48 | Thick Fat
49 | Early Bird
50 | Flame Body
51 | Run Away
52 | Keen Eye
53 | Hyper Cutter
54 | Pickup
55 | Truant
56 | Hustle
57 | Cute Charm
58 | Plus
59 | Minus
60 | Forecast
61 | Sticky Hold
62 | Shed Skin
63 | Guts
64 | Marvel Scale
65 | Liquid Ooze
66 | Overgrow
67 | Blaze
68 | Torrent
69 | Swarm
70 | Rock Head
71 | Drought
72 | Arena Trap
73 | Vital Spirit
74 | White Smoke
75 | Pure Power
76 | Shell Armor
77 | Air Lock
78 | Tangled Feet
79 | Motor Drive
80 | Rivalry
81 | Steadfast
82 | Snow Cloak
83 | Gluttony
84 | Anger Point
85 | Unburden
86 | Heatproof
87 | Simple
88 | Dry Skin
89 | Download
90 | Iron Fist
91 | Poison Heal
92 | Adaptability
93 | Skill Link
94 | Hydration
95 | Solar Power
96 | Quick Feet
97 | Normalize
98 | Sniper
99 | Magic Guard
100 | No Guard
101 | Stall
102 | Technician
103 | Leaf Guard
104 | Klutz
105 | Mold Breaker
106 | Super Luck
107 | Aftermath
108 | Anticipation
109 | Forewarn
110 | Unaware
111 | Tinted Lens
112 | Filter
113 | Slow Start
114 | Scrappy
115 | Storm Drain
116 | Ice Body
117 | Solid Rock
118 | Snow Warning
119 | Honey Gather
120 | Frisk
121 | Reckless
122 | Multitype
123 | Flower Gift
124 | Bad Dreams
125 | Pickpocket
126 | Sheer Force
127 | Contrary
128 | Unnerve
129 | Defiant
130 | Defeatist
131 | Cursed Body
132 | Healer
133 | Friend Guard
134 | Weak Armor
135 | Heavy Metal
136 | Light Metal
137 | Multiscale
138 | Toxic Boost
139 | Flare Boost
140 | Harvest
141 | Telepathy
142 | Moody
143 | Overcoat
144 | Poison Touch
145 | Regenerator
146 | Big Pecks
147 | Sand Rush
148 | Wonder Skin
149 | Analytic
150 | Illusion
151 | Imposter
152 | Infiltrator
153 | Mummy
154 | Moxie
155 | Justified
156 | Rattled
157 | Magic Bounce
158 | Sap Sipper
159 | Prankster
160 | Sand Force
161 | Iron Barbs
162 | Zen Mode
163 | Victory Star
164 | Turboblaze
165 | Teravolt
166 | Aroma Veil
167 | Flower Veil
168 | Cheek Pouch
169 | Protean
170 | Fur Coat
171 | Magician
172 | Bulletproof
173 | Competitive
174 | Strong Jaw
175 | Refrigerate
176 | Sweet Veil
177 | Stance Change
178 | Gale Wings
179 | Mega Launcher
180 | Grass Pelt
181 | Symbiosis
182 | Tough Claws
183 | Pixilate
184 | Gooey
185 | Aerilate
186 | Parental Bond
187 | Dark Aura
188 | Fairy Aura
189 | Aura Break
190 | Primordial Sea
191 | Desolate Land
192 | Delta Stream
193 | Stamina
194 | Wimp Out
195 | Emergency Exit
196 | Water Compaction
197 | Merciless
198 | Shields Down
199 | Stakeout
200 | Water Bubble
201 | Steelworker
202 | Berserk
203 | Slush Rush
204 | Long Reach
205 | Liquid Voice
206 | Triage
207 | Galvanize
208 | Surge Surfer
209 | Schooling
210 | Disguise
211 | Battle Bond
212 | Power Construct
213 | Corrosion
214 | Comatose
215 | Queenly Majesty
216 | Innards Out
217 | Dancer
218 | Battery
219 | Fluffy
220 | Dazzling
221 | Soul-Heart
222 | Tangling Hair
223 | Receiver
224 | Power of Alchemy
225 | Beast Boost
226 | RKS System
227 | Electric Surge
228 | Psychic Surge
229 | Misty Surge
230 | Grassy Surge
231 | Full Metal Body
232 | Shadow Shield
233 | Prism Armor
234 | Neuroforce
235 | Intrepid Sword
236 | Dauntless Shield
237 | Libero
238 | Ball Fetch
239 | Cotton Down
240 | Propeller Tail
241 | Mirror Armor
242 | Gulp Missile
243 | Stalwart
244 | Steam Engine
245 | Punk Rock
246 | Sand Spit
247 | Ice Scales
248 | Ripen
249 | Ice Face
250 | Power Spot
251 | Mimicry
252 | Screen Cleaner
253 | Steely Spirit
254 | Perish Body
255 | Wandering Spirit
256 | Gorilla Tactics
257 | Neutralizing Gas
258 | Pastel Veil
259 | Hunger Switch
260 | Quick Draw
261 | Unseen Fist
262 | 96
263 | 97
264 | 98
265 | 99
266 | 100
267 | 101
268 | 102
269 | 103
270 | 104
271 | 105
272 | 106
273 | 107
274 | 108
275 | 109
276 | 110
277 | 111
278 | 112
279 | 113
280 | 114
281 | 115
282 | 116
283 | 117
284 | 118
285 | 119
286 | 120
287 | 121
288 | 122
289 | 123
290 | 124
291 | 125
292 | 126
293 | 127
294 | 128
295 | 129
296 | 130
297 | 131
298 | 132
299 | 133
300 | 134
301 | 135
302 | 136
303 | 137
304 | 138
305 | 139
306 | 140
307 | 141
308 | 142
309 | 143
310 | 144
311 | 145
312 | 146
313 | 147
314 | 148
315 | 149
316 | 150
317 | 151
318 | 152
319 | 153
320 | 154
321 | 155
322 | 156
323 | 157
324 | 158
325 | 159
326 | 160
327 | 161
328 | 162
329 | 163
330 | 164
331 | 165
332 | 166
333 | 167
334 | 168
335 | 169
336 | 170
337 | 171
338 | 172
339 | 173
340 | 174
341 | 175
342 | 176
343 | 177
344 | 178
345 | 179
346 | 180
347 | 181
348 | 182
349 | 183
350 | 184
351 | 185
352 | 186
353 | 187
354 | 188
355 | 189
356 | 190
357 | 191
358 | 192
359 | 193
360 | 194
361 | 195
362 | 196
363 | 197
364 | 198
365 | 199
366 | 200
--------------------------------------------------------------------------------
/Program Files/Defaults/.DS_Store:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/turtleisaac/PokEditor-v1/62cc30eac8822b3a0934e878a30117d053eb4b6c/Program Files/Defaults/.DS_Store
--------------------------------------------------------------------------------
/Program Files/Effects.txt:
--------------------------------------------------------------------------------
1 | None
2 | Causes Sleep
3 | Chance to Poison
4 | Damages target; heals user up to 50% of damage dealt
5 | Chance to Burn
6 | Chance to Freeze
7 | Chance to Paralyze
8 | Selfdestruct/ Explosion effect
9 | Damages sleeping target; heals user up to 50% of damage dealt
10 | Mirror Move effect
11 | Raises Atk
12 | Raises Def
13 | Raises Spd
14 | Raises SpAtk
15 | Raises SpDef
16 | Raises Accuracy
17 | Raises Evasion
18 | Always hits
19 | Lowers Atk
20 | Lowers Def
21 | Lowers Spd
22 | Lowers SpAtk
23 | Lowers SpDef
24 | Lowers Accuracy
25 | Lowers Evasion
26 | Resets stat changes
27 | Bide effect
28 | Locked into move for 2-3 turns; confuses user after
29 | Whirlwind/ Roar effect
30 | Hits target 2-5 times
31 | Changes user's type to match one of its moves
32 | Chance to Flinch
33 | Restores up to 50% max HP
34 | Badly Poisons
35 | Pay Day effect
36 | 1/2 damage from Special attacks
37 | Chance of either Paralyzing; Burning; or Freezing target
38 | Causes Sleep and restores all HP
39 | OHKO
40 | Charging turn; high crit ratio
41 | Deals damage equal to 1/2 target's current hp
42 | Deals 40 damage
43 | Binding move effect
44 | High crit ratio
45 | Hits twice
46 | Deals 1/2 user's max HP to user if it misses
47 | Prevents lowering of stats
48 | Sharply raises crit ratio
49 | 1/4 damage dealt recoil
50 | Guaranteed Confusion
51 | Sharply raises Atk
52 | Sharply raises Def
53 | Sharply raises Spd
54 | Sharply raises SpAtk
55 | Sharply raises SpDef
56 | Sharply raises Accuracy
57 | Sharply raises Evasion
58 | Transform effect
59 | Sharply lowers Atk
60 | Sharply lowers Def
61 | Sharply lowers Spd
62 | Sharply lowers SpAtk
63 | Sharply lowers Accuracy
64 | Sharply lowers Evasion
65 | 64
66 | 1/2 damage from Physical attacks
67 | Guaranteed Poison
68 | Guaranteed Paralysis
69 | Lowers Atk
70 | Lowers Def
71 | Lowers Spd
72 | Lowers SpAtk
73 | Lowers SpDef
74 | Lowers Accuracy
75 | Lowers Evasion
76 | Attacks next turn; chance of flinch; increased crit ratio
77 | Chance to Confuse
78 | Hits twice; chance to poison
79 | Vital Throw ??
80 | Substitute effect
81 | Recharge turn
82 | Locked into move; raises Atk whenever hit
83 | Copies user-selected move
84 | Metronome effect
85 | Leech Seed effect
86 | Splash effect
87 | Disables last move used for 4-7 turns
88 | Deals damage equal to user's level
89 | Deals up to user's level x1.5 damage
90 | 2x last amount of damage received
91 | Locks target into last move used for 3-7 turns
92 | Pain Split effect
93 | Can only be used while asleep; chance of causing Flinch
94 | Conversion2 effect
95 | Next move used by user guaranteed to hit
96 | Sketch effect
97 | 96
98 | Sleep Talk effect
99 | Destiny Bond effect
100 | Higher power the less HP the user has
101 | Decreases PP of target's last move used by 4
102 | False Swipe effect
103 | Heal Bell effect
104 | Priority +1
105 | Hits the target up to 3 times; increases power by 10 with each hit
106 | Steals target's held item
107 | Prevents target from switching out or fleeing
108 | If asleep; target takes damage equal to 1/4 its max HP at the end of every turn
109 | Raises Evasion; weak to Stomp/Rollout/Bodyslam
110 | Curse effect
111 | 110
112 | Protect/ Detect effect
113 | Spikes effect
114 | Ignores type immunities
115 | All users on field faint in 3 turns
116 | Causes Sandstorm
117 | Allows user to endure a fatal hit and survive at 1 HP
118 | Rollout effect
119 | Sharply raises target's Atk and causes Confusion
120 | 2x power for every consecutive hit
121 | Infatuates target of opposite gender
122 | Return effect
123 | Present Effect
124 | Frustration effect
125 | Safeguard effect
126 | Thaws user; chance to Burn
127 | Magnitude effect
128 | Baton Pass effect
129 | Pursuit effect
130 | Removes all hazards/ binding moves on user's side of the field
131 | Inflicts 20 damage
132 | 131
133 | Synthesis effect
134 | 133
135 | 134
136 | Hidden Power effect
137 | Causes Rain
138 | Causes Harsh Sunlight
139 | Chance of raising Def
140 | Chance of raising Atk
141 | Ancient Power boost
142 | 141
143 | Belly Drum effect
144 | Copies all of target's stat boosts
145 | Mirror Coat effect
146 | Raises Def; attacks next turn
147 | Twister effect
148 | 2x Damage on Pokemon using Dig
149 | Future Sight effect
150 | 2x Damage on Pokemon using Bounce/Fly
151 | Causes flinch and 2x damage if target has used Minimize
152 | Charging turn unless in Harsh Sunlight
153 | Always hits in rain; chance to Paralyze
154 | Flees from wild single battle
155 | Beat Up effect
156 | Fly effect
157 | Raises Def and 2x Rollout/ Ice Ball power
158 | 157
159 | Guaranteed Flinch; can only be used turn 1
160 | Uproar effect
161 | Stockpile effect
162 | Spit Up effect
163 | Swallow effect
164 | 163
165 | Causes Hail
166 | Torment effect
167 | Raises target's SpAtk and causes Confusion
168 | Guaranteed Burn; activates Flash Fire
169 | User faints and target's Atk and SpAtk are lowered sharply
170 | 2x power if user is Poisoned; Paralyzed; or Burned.
171 | Focus Punch effect
172 | 2x power if target is Paralyzed; cures target of Paralysis
173 | Redirects all moves to user
174 | Nature Power effect
175 | Next move deals 2x damage if it is Electric-type
176 | Target can't use status moves for 3-5 turns
177 | Ally's attack deals 1.5x damage this turn
178 | User switches held items with target
179 | User copies target's Ability
180 | 1/2 of user's max HP is restored at the end of next turn
181 | Assist effect
182 | Ingrain effect
183 | Lowers user's Atk and Def
184 | Reflects status moves back at their user
185 | User regains a consumed held item
186 | 2x power if the user has been hit this turn
187 | Removes Light Screen/ Reflect from target's side of the field
188 | Yawn effect
189 | Renders the target's held item unusable
190 | Target's HP becomes equal to the user's current HP
191 | Power= Base power x(user's current HP/ user's max HP)
192 | User swaps Abilities with the target
193 | Target is prevented from using moves shared with the user
194 | Cures user of Burn; Poison; or Paralysis
195 | Grudge effect
196 | If any Pokemon uses a beneficial status move; the user uses it instead
197 | Inflicts greater damage on heavier targets
198 | Secret Power effect
199 | 1/3 damage dealt recoil
200 | Guaranteed Confusion
201 | Chance of causing Burn; increased Crit ratio
202 | Weakens Electric-type moves by 50% until user switches out
203 | Chance of Badly Poisoning
204 | Type changes to match weather
205 | Lowers user's SpAtk harshly
206 | Lowers target's Atk and Def
207 | Raises user's Def and SpDef
208 | Can hit Pokemon during semi-invulnerable turns of Fly/Bounce
209 | Raises user's Atk and Def
210 | Chance of causing Poison; increased crit ratio
211 | 1/3 damage dealt recoil
212 | Raises user's SpAtk and SpDef
213 | Raises user's Atk and Spd
214 | Camouflage effect
215 | Roost effect
216 | Gravity effect
217 | 2x power if target is asleep; wakes up target
218 | Causes all moves to ignore changes to the target's Evasiveness
219 | Lowers user's Spd
220 | Power = min(150; (25 x Target's Current Speed / User's Current Speed) + 1)
221 | Healing Wish effect
222 | 2x power if target is at or below 1/2 HP
223 | Natural Gift effect
224 | Can only hit targets that have used Protect/ Detect
225 | Consumes target's berry
226 | 2x Spd for user's party for 3 turns
227 | Sharply raises a random stat of the target
228 | Damage= 1.5x damage dealt by the target's last attack
229 | Switches user out after dealing damage
230 | Lowers user's Def and SpDef
231 | 2x Power if user moves after target
232 | 2x damage if the target has already taken damage this turn
233 | Prevents the target from using its held item or having items used on it
234 | Power and effect determined by held item
235 | Cures user of any status condition and afflicts the target with it
236 | The less PP the move has; the greater its Power
237 | Heal Block effect
238 | Power = Base power + 120 x (Target's Current HP / Target's Maximum HP)
239 | Swaps the user's Atk stat with its Def stat
240 | Suppresses the target's Ability
241 | Prevents opponents from landing critical hits on the user's party for 5 turns
242 | If the target has not moved yet; the user copies their move and uses it with 1.5x power
243 | User uses the last move that was used in battle
244 | Swaps the user's Atk and SpAtk buffs with the target's Atk and SpAtk buffs
245 | Swaps the user's Def and SpDef buffs with the target's Def and SpDef buffs
246 | Power= 60 + (20x # of stat increases of target)
247 | Fails unless the user has used all of its other moves at least once
248 | Changes the target's Ability to Insomnia
249 | Fails if the target did not select a damaging move or has already moved
250 | Toxic Spikes effect
251 | Swaps the user's stat changes with the target's
252 | Restores 1/16 of the user's max HP at the end of every turn
253 | User becomes immune to Ground-type attacks and field hazards for 5 turns
254 | Chance of causing Burn; 1/3 damage dealt recoil
255 | Struggle effect
256 | Dive effect
257 | Dig effect
258 | 2x Damage on Pokemon using Dive
259 | Defog effect
260 | Trick Room effect
261 | Always hits in Hail
262 | Whirlpool effect
263 | 1/3 damage dealt recoil
264 | Bounce effect
265 | 264
266 | Lowers opposite gender target's SpAtk harshly
267 | Stealth Rocks effect
268 | Chatter effect
269 | Type= Type of Plate held by user
270 | 1/2 damage dealt recoil
271 | Lunar Dance effect
272 | Chance of lowering target's SpDef harshly
273 | Shadow Force effect
274 | Chance of causing Burn; chance of causing Flinch
275 | Chance of causing Freeze; chance of causing Flinch
276 | Chance of causing Paralysis; chance of causing Flinch
277 | Chance of raising user's SpAtk
--------------------------------------------------------------------------------
/Program Files/EntryData.txt:
--------------------------------------------------------------------------------
1 | ~
2 | Bulbasaur
3 | Ivysaur
4 | Venusaur
5 | Charmander
6 | Charmeleon
7 | Charizard
8 | Squirtle
9 | Wartortle
10 | Blastoise
11 | Caterpie
12 | Metapod
13 | Butterfree
14 | Weedle
15 | Kakuna
16 | Beedrill
17 | Pidgey
18 | Pidgeotto
19 | Pidgeot
20 | Rattata
21 | Raticate
22 | Spearow
23 | Fearow
24 | Ekans
25 | Arbok
26 | Pikachu
27 | Raichu
28 | Sandshrew
29 | Sandslash
30 | Nidoran♀
31 | Nidorina
32 | Nidoqueen
33 | Nidoran♂
34 | Nidorino
35 | Nidoking
36 | Clefairy
37 | Clefable
38 | Vulpix
39 | Ninetales
40 | Jigglypuff
41 | Wigglytuff
42 | Zubat
43 | Golbat
44 | Oddish
45 | Gloom
46 | Vileplume
47 | Paras
48 | Parasect
49 | Venonat
50 | Venomoth
51 | Diglett
52 | Dugtrio
53 | Meowth
54 | Persian
55 | Psyduck
56 | Golduck
57 | Mankey
58 | Primeape
59 | Growlithe
60 | Arcanine
61 | Poliwag
62 | Poliwhirl
63 | Poliwrath
64 | Abra
65 | Kadabra
66 | Alakazam
67 | Machop
68 | Machoke
69 | Machamp
70 | Bellsprout
71 | Weepinbell
72 | Victreebel
73 | Tentacool
74 | Tentacruel
75 | Geodude
76 | Graveler
77 | Golem
78 | Ponyta
79 | Rapidash
80 | Slowpoke
81 | Slowbro
82 | Magnemite
83 | Magneton
84 | Farfetch'd
85 | Doduo
86 | Dodrio
87 | Seel
88 | Dewgong
89 | Grimer
90 | Muk
91 | Shellder
92 | Cloyster
93 | Gastly
94 | Haunter
95 | Gengar
96 | Onix
97 | Drowzee
98 | Hypno
99 | Krabby
100 | Kingler
101 | Voltorb
102 | Electrode
103 | Exeggcute
104 | Exeggutor
105 | Cubone
106 | Marowak
107 | Hitmonlee
108 | Hitmonchan
109 | Lickitung
110 | Koffing
111 | Weezing
112 | Rhyhorn
113 | Rhydon
114 | Chansey
115 | Tangela
116 | Kangaskhan
117 | Horsea
118 | Seadra
119 | Goldeen
120 | Seaking
121 | Staryu
122 | Starmie
123 | Mr. Mime
124 | Scyther
125 | Jynx
126 | Electabuzz
127 | Magmar
128 | Pinsir
129 | Tauros
130 | Magikarp
131 | Gyarados
132 | Lapras
133 | Ditto
134 | Eevee
135 | Vaporeon
136 | Jolteon
137 | Flareon
138 | Porygon
139 | Omanyte
140 | Omastar
141 | Kabuto
142 | Kabutops
143 | Aerodactyl
144 | Snorlax
145 | Articuno
146 | Zapdos
147 | Moltres
148 | Dratini
149 | Dragonair
150 | Dragonite
151 | Mewtwo
152 | Mew
153 | Chikorita
154 | Bayleef
155 | Meganium
156 | Cyndaquil
157 | Quilava
158 | Typhlosion
159 | Totodile
160 | Croconaw
161 | Feraligatr
162 | Sentret
163 | Furret
164 | Hoothoot
165 | Noctowl
166 | Ledyba
167 | Ledian
168 | Spinarak
169 | Ariados
170 | Crobat
171 | Chinchou
172 | Lanturn
173 | Pichu
174 | Cleffa
175 | Igglybuff
176 | Togepi
177 | Togetic
178 | Natu
179 | Xatu
180 | Mareep
181 | Flaaffy
182 | Ampharos
183 | Bellossom
184 | Marill
185 | Azumarill
186 | Sudowoodo
187 | Politoed
188 | Hoppip
189 | Skiploom
190 | Jumpluff
191 | Aipom
192 | Sunkern
193 | Sunflora
194 | Yanma
195 | Wooper
196 | Quagsire
197 | Espeon
198 | Umbreon
199 | Murkrow
200 | Slowking
201 | Misdreavus
202 | Unown
203 | Wobbuffet
204 | Girafarig
205 | Pineco
206 | Forretress
207 | Dunsparce
208 | Gligar
209 | Steelix
210 | Snubbull
211 | Granbull
212 | Qwilfish
213 | Scizor
214 | Shuckle
215 | Heracross
216 | Sneasel
217 | Teddiursa
218 | Ursaring
219 | Slugma
220 | Magcargo
221 | Swinub
222 | Piloswine
223 | Corsola
224 | Remoraid
225 | Octillery
226 | Delibird
227 | Mantine
228 | Skarmory
229 | Houndour
230 | Houndoom
231 | Kingdra
232 | Phanpy
233 | Donphan
234 | Porygon2
235 | Stantler
236 | Smeargle
237 | Tyrogue
238 | Hitmontop
239 | Smoochum
240 | Elekid
241 | Magby
242 | Miltank
243 | Blissey
244 | Raikou
245 | Entei
246 | Suicune
247 | Larvitar
248 | Pupitar
249 | Tyranitar
250 | Lugia
251 | Ho-oh
252 | Celebi
253 | Treecko
254 | Grovyle
255 | Sceptile
256 | Torchic
257 | Combusken
258 | Blaziken
259 | Mudkip
260 | Marshtomp
261 | Swampert
262 | Poochyena
263 | Mightyena
264 | Zigzagoon
265 | Linoone
266 | Wurmple
267 | Silcoon
268 | Beautifly
269 | Cascoon
270 | Dustox
271 | Lotad
272 | Lombre
273 | Ludicolo
274 | Seedot
275 | Nuzleaf
276 | Shiftry
277 | Taillow
278 | Swellow
279 | Wingull
280 | Pelipper
281 | Ralts
282 | Kirlia
283 | Gardevoir
284 | Surskit
285 | Masquerain
286 | Shroomish
287 | Breloom
288 | Slakoth
289 | Vigoroth
290 | Slaking
291 | Nincada
292 | Ninjask
293 | Shedinja
294 | Whismur
295 | Loudred
296 | Exploud
297 | Makuhita
298 | Hariyama
299 | Azurill
300 | Nosepass
301 | Skitty
302 | Delcatty
303 | Sableye
304 | Mawile
305 | Aron
306 | Lairon
307 | Aggron
308 | Meditite
309 | Medicham
310 | Electrike
311 | Manectric
312 | Plusle
313 | Minun
314 | Volbeat
315 | Illumise
316 | Roselia
317 | Gulpin
318 | Swalot
319 | Carvanha
320 | Sharpedo
321 | Wailmer
322 | Wailord
323 | Numel
324 | Camerupt
325 | Torkoal
326 | Spoink
327 | Grumpig
328 | Spinda
329 | Trapinch
330 | Vibrava
331 | Flygon
332 | Cacnea
333 | Cacturne
334 | Swablu
335 | Altaria
336 | Zangoose
337 | Seviper
338 | Lunatone
339 | Solrock
340 | Barboach
341 | Whiscash
342 | Corphish
343 | Crawdaunt
344 | Baltoy
345 | Claydol
346 | Lileep
347 | Cradily
348 | Anorith
349 | Armaldo
350 | Feebas
351 | Milotic
352 | Castform
353 | Kecleon
354 | Shuppet
355 | Banette
356 | Duskull
357 | Dusclops
358 | Tropius
359 | Chimecho
360 | Absol
361 | Wynaut
362 | Snorunt
363 | Glalie
364 | Spheal
365 | Sealeo
366 | Walrein
367 | Clamperl
368 | Huntail
369 | Gorebyss
370 | Relicanth
371 | Luvdisc
372 | Bagon
373 | Shelgon
374 | Salamence
375 | Beldum
376 | Metang
377 | Metagross
378 | Regirock
379 | Regice
380 | Registeel
381 | Latias
382 | Latios
383 | Kyogre
384 | Groudon
385 | Rayquaza
386 | Jirachi
387 | Deoxys (N)
388 | Turtwig
389 | Grotle
390 | Torterra
391 | Chimchar
392 | Monferno
393 | Infernape
394 | Piplup
395 | Prinplup
396 | Empoleon
397 | Starly
398 | Staravia
399 | Staraptor
400 | Bidoof
401 | Bibarel
402 | Kricketot
403 | Kricketune
404 | Shinx
405 | Luxio
406 | Luxray
407 | Budew
408 | Roserade
409 | Cranidos
410 | Rampardos
411 | Shieldon
412 | Bastiodon
413 | Burmy
414 | Wormadam (P)
415 | Mothim
416 | Combee
417 | Vespiquen
418 | Pachirisu
419 | Buizel
420 | Floatzel
421 | Cherubi
422 | Cherrim
423 | Shellos
424 | Gastrodon
425 | Ambipom
426 | Drifloon
427 | Drifblim
428 | Buneary
429 | Lopunny
430 | Mismagius
431 | Honchkrow
432 | Glameow
433 | Purugly
434 | Chingling
435 | Stunky
436 | Skuntank
437 | Bronzor
438 | Bronzong
439 | Bonsly
440 | Mime Jr.
441 | Happiny
442 | Chatot
443 | Spiritomb
444 | Gible
445 | Gabite
446 | Garchomp
447 | Munchlax
448 | Riolu
449 | Lucario
450 | Hippopotas
451 | Hippowdon
452 | Skorupi
453 | Drapion
454 | Croagunk
455 | Toxicroak
456 | Carnivine
457 | Finneon
458 | Lumineon
459 | Mantyke
460 | Snover
461 | Abomasnow
462 | Weavile
463 | Magnezone
464 | Lickilicky
465 | Rhyperior
466 | Tangrowth
467 | Electivire
468 | Magmortar
469 | Togekiss
470 | Yanmega
471 | Leafeon
472 | Glaceon
473 | Gliscor
474 | Mamoswine
475 | Porygon-Z
476 | Gallade
477 | Probopass
478 | Dusknoir
479 | Froslass
480 | Rotom
481 | Uxie
482 | Mesprit
483 | Azelf
484 | Dialga
485 | Palkia
486 | Heatran
487 | Regigigas
488 | Giratina
489 | Cresselia
490 | Phione
491 | Manaphy
492 | Darkrai
493 | Shaymin
494 | Arceus
495 | Egg
496 | Bad Egg
497 | Deoxys (A)
498 | Deoxys (D)
499 | Deoxys (S)
500 | Wormadam (S)
501 | Wormadam (T)
502 | Giratina (O)
503 | Shaymin (S)
504 | Rotom (Heat)
505 | Rotom (Wash)
506 | Rotom (Frost)
507 | Rotom (Fan)
508 | Rotom (Mow)
--------------------------------------------------------------------------------
/Program Files/EntryDataGen5-1.txt:
--------------------------------------------------------------------------------
1 | ~
2 | Bulbasaur
3 | Ivysaur
4 | Venusaur
5 | Charmander
6 | Charmeleon
7 | Charizard
8 | Squirtle
9 | Wartortle
10 | Blastoise
11 | Caterpie
12 | Metapod
13 | Butterfree
14 | Weedle
15 | Kakuna
16 | Beedrill
17 | Pidgey
18 | Pidgeotto
19 | Pidgeot
20 | Rattata
21 | Raticate
22 | Spearow
23 | Fearow
24 | Ekans
25 | Arbok
26 | Pikachu
27 | Raichu
28 | Sandshrew
29 | Sandslash
30 | Nidoran♀
31 | Nidorina
32 | Nidoqueen
33 | Nidoran♂
34 | Nidorino
35 | Nidoking
36 | Clefairy
37 | Clefable
38 | Vulpix
39 | Ninetales
40 | Jigglypuff
41 | Wigglytuff
42 | Zubat
43 | Golbat
44 | Oddish
45 | Gloom
46 | Vileplume
47 | Paras
48 | Parasect
49 | Venonat
50 | Venomoth
51 | Diglett
52 | Dugtrio
53 | Meowth
54 | Persian
55 | Psyduck
56 | Golduck
57 | Mankey
58 | Primeape
59 | Growlithe
60 | Arcanine
61 | Poliwag
62 | Poliwhirl
63 | Poliwrath
64 | Abra
65 | Kadabra
66 | Alakazam
67 | Machop
68 | Machoke
69 | Machamp
70 | Bellsprout
71 | Weepinbell
72 | Victreebel
73 | Tentacool
74 | Tentacruel
75 | Geodude
76 | Graveler
77 | Golem
78 | Ponyta
79 | Rapidash
80 | Slowpoke
81 | Slowbro
82 | Magnemite
83 | Magneton
84 | Farfetch'd
85 | Doduo
86 | Dodrio
87 | Seel
88 | Dewgong
89 | Grimer
90 | Muk
91 | Shellder
92 | Cloyster
93 | Gastly
94 | Haunter
95 | Gengar
96 | Onix
97 | Drowzee
98 | Hypno
99 | Krabby
100 | Kingler
101 | Voltorb
102 | Electrode
103 | Exeggcute
104 | Exeggutor
105 | Cubone
106 | Marowak
107 | Hitmonlee
108 | Hitmonchan
109 | Lickitung
110 | Koffing
111 | Weezing
112 | Rhyhorn
113 | Rhydon
114 | Chansey
115 | Tangela
116 | Kangaskhan
117 | Horsea
118 | Seadra
119 | Goldeen
120 | Seaking
121 | Staryu
122 | Starmie
123 | Mr. Mime
124 | Scyther
125 | Jynx
126 | Electabuzz
127 | Magmar
128 | Pinsir
129 | Tauros
130 | Magikarp
131 | Gyarados
132 | Lapras
133 | Ditto
134 | Eevee
135 | Vaporeon
136 | Jolteon
137 | Flareon
138 | Porygon
139 | Omanyte
140 | Omastar
141 | Kabuto
142 | Kabutops
143 | Aerodactyl
144 | Snorlax
145 | Articuno
146 | Zapdos
147 | Moltres
148 | Dratini
149 | Dragonair
150 | Dragonite
151 | Mewtwo
152 | Mew
153 | Chikorita
154 | Bayleef
155 | Meganium
156 | Cyndaquil
157 | Quilava
158 | Typhlosion
159 | Totodile
160 | Croconaw
161 | Feraligatr
162 | Sentret
163 | Furret
164 | Hoothoot
165 | Noctowl
166 | Ledyba
167 | Ledian
168 | Spinarak
169 | Ariados
170 | Crobat
171 | Chinchou
172 | Lanturn
173 | Pichu
174 | Cleffa
175 | Igglybuff
176 | Togepi
177 | Togetic
178 | Natu
179 | Xatu
180 | Mareep
181 | Flaaffy
182 | Ampharos
183 | Bellossom
184 | Marill
185 | Azumarill
186 | Sudowoodo
187 | Politoed
188 | Hoppip
189 | Skiploom
190 | Jumpluff
191 | Aipom
192 | Sunkern
193 | Sunflora
194 | Yanma
195 | Wooper
196 | Quagsire
197 | Espeon
198 | Umbreon
199 | Murkrow
200 | Slowking
201 | Misdreavus
202 | Unown
203 | Wobbuffet
204 | Girafarig
205 | Pineco
206 | Forretress
207 | Dunsparce
208 | Gligar
209 | Steelix
210 | Snubbull
211 | Granbull
212 | Qwilfish
213 | Scizor
214 | Shuckle
215 | Heracross
216 | Sneasel
217 | Teddiursa
218 | Ursaring
219 | Slugma
220 | Magcargo
221 | Swinub
222 | Piloswine
223 | Corsola
224 | Remoraid
225 | Octillery
226 | Delibird
227 | Mantine
228 | Skarmory
229 | Houndour
230 | Houndoom
231 | Kingdra
232 | Phanpy
233 | Donphan
234 | Porygon2
235 | Stantler
236 | Smeargle
237 | Tyrogue
238 | Hitmontop
239 | Smoochum
240 | Elekid
241 | Magby
242 | Miltank
243 | Blissey
244 | Raikou
245 | Entei
246 | Suicune
247 | Larvitar
248 | Pupitar
249 | Tyranitar
250 | Lugia
251 | Ho-Oh
252 | Celebi
253 | Treecko
254 | Grovyle
255 | Sceptile
256 | Torchic
257 | Combusken
258 | Blaziken
259 | Mudkip
260 | Marshtomp
261 | Swampert
262 | Poochyena
263 | Mightyena
264 | Zigzagoon
265 | Linoone
266 | Wurmple
267 | Silcoon
268 | Beautifly
269 | Cascoon
270 | Dustox
271 | Lotad
272 | Lombre
273 | Ludicolo
274 | Seedot
275 | Nuzleaf
276 | Shiftry
277 | Taillow
278 | Swellow
279 | Wingull
280 | Pelipper
281 | Ralts
282 | Kirlia
283 | Gardevoir
284 | Surskit
285 | Masquerain
286 | Shroomish
287 | Breloom
288 | Slakoth
289 | Vigoroth
290 | Slaking
291 | Nincada
292 | Ninjask
293 | Shedinja
294 | Whismur
295 | Loudred
296 | Exploud
297 | Makuhita
298 | Hariyama
299 | Azurill
300 | Nosepass
301 | Skitty
302 | Delcatty
303 | Sableye
304 | Mawile
305 | Aron
306 | Lairon
307 | Aggron
308 | Meditite
309 | Medicham
310 | Electrike
311 | Manectric
312 | Plusle
313 | Minun
314 | Volbeat
315 | Illumise
316 | Roselia
317 | Gulpin
318 | Swalot
319 | Carvanha
320 | Sharpedo
321 | Wailmer
322 | Wailord
323 | Numel
324 | Camerupt
325 | Torkoal
326 | Spoink
327 | Grumpig
328 | Spinda
329 | Trapinch
330 | Vibrava
331 | Flygon
332 | Cacnea
333 | Cacturne
334 | Swablu
335 | Altaria
336 | Zangoose
337 | Seviper
338 | Lunatone
339 | Solrock
340 | Barboach
341 | Whiscash
342 | Corphish
343 | Crawdaunt
344 | Baltoy
345 | Claydol
346 | Lileep
347 | Cradily
348 | Anorith
349 | Armaldo
350 | Feebas
351 | Milotic
352 | Castform
353 | Kecleon
354 | Shuppet
355 | Banette
356 | Duskull
357 | Dusclops
358 | Tropius
359 | Chimecho
360 | Absol
361 | Wynaut
362 | Snorunt
363 | Glalie
364 | Spheal
365 | Sealeo
366 | Walrein
367 | Clamperl
368 | Huntail
369 | Gorebyss
370 | Relicanth
371 | Luvdisc
372 | Bagon
373 | Shelgon
374 | Salamence
375 | Beldum
376 | Metang
377 | Metagross
378 | Regirock
379 | Regice
380 | Registeel
381 | Latias
382 | Latios
383 | Kyogre
384 | Groudon
385 | Rayquaza
386 | Jirachi
387 | Deoxys
388 | Turtwig
389 | Grotle
390 | Torterra
391 | Chimchar
392 | Monferno
393 | Infernape
394 | Piplup
395 | Prinplup
396 | Empoleon
397 | Starly
398 | Staravia
399 | Staraptor
400 | Bidoof
401 | Bibarel
402 | Kricketot
403 | Kricketune
404 | Shinx
405 | Luxio
406 | Luxray
407 | Budew
408 | Roserade
409 | Cranidos
410 | Rampardos
411 | Shieldon
412 | Bastiodon
413 | Burmy
414 | Wormadam
415 | Mothim
416 | Combee
417 | Vespiquen
418 | Pachirisu
419 | Buizel
420 | Floatzel
421 | Cherubi
422 | Cherrim
423 | Shellos
424 | Gastrodon
425 | Ambipom
426 | Drifloon
427 | Drifblim
428 | Buneary
429 | Lopunny
430 | Mismagius
431 | Honchkrow
432 | Glameow
433 | Purugly
434 | Chingling
435 | Stunky
436 | Skuntank
437 | Bronzor
438 | Bronzong
439 | Bonsly
440 | Mime Jr.
441 | Happiny
442 | Chatot
443 | Spiritomb
444 | Gible
445 | Gabite
446 | Garchomp
447 | Munchlax
448 | Riolu
449 | Lucario
450 | Hippopotas
451 | Hippowdon
452 | Skorupi
453 | Drapion
454 | Croagunk
455 | Toxicroak
456 | Carnivine
457 | Finneon
458 | Lumineon
459 | Mantyke
460 | Snover
461 | Abomasnow
462 | Weavile
463 | Magnezone
464 | Lickilicky
465 | Rhyperior
466 | Tangrowth
467 | Electivire
468 | Magmortar
469 | Togekiss
470 | Yanmega
471 | Leafeon
472 | Glaceon
473 | Gliscor
474 | Mamoswine
475 | Porygon-Z
476 | Gallade
477 | Probopass
478 | Dusknoir
479 | Froslass
480 | Rotom
481 | Uxie
482 | Mesprit
483 | Azelf
484 | Dialga
485 | Palkia
486 | Heatran
487 | Regigigas
488 | Giratina
489 | Cresselia
490 | Phione
491 | Manaphy
492 | Darkrai
493 | Shaymin
494 | Arceus
495 | Victini
496 | Snivy
497 | Servine
498 | Serperior
499 | Tepig
500 | Pignite
501 | Emboar
502 | Oshawott
503 | Dewott
504 | Samurott
505 | Patrat
506 | Watchog
507 | Lillipup
508 | Herdier
509 | Stoutland
510 | Purrloin
511 | Liepard
512 | Pansage
513 | Simisage
514 | Pansear
515 | Simisear
516 | Panpour
517 | Simipour
518 | Munna
519 | Musharna
520 | Pidove
521 | Tranquill
522 | Unfezant
523 | Blitzle
524 | Zebstrika
525 | Roggenrola
526 | Boldore
527 | Gigalith
528 | Woobat
529 | Swoobat
530 | Drilbur
531 | Excadrill
532 | Audino
533 | Timburr
534 | Gurdurr
535 | Conkeldurr
536 | Tympole
537 | Palpitoad
538 | Seismitoad
539 | Throh
540 | Sawk
541 | Sewaddle
542 | Swadloon
543 | Leavanny
544 | Venipede
545 | Whirlipede
546 | Scolipede
547 | Cottonee
548 | Whimsicott
549 | Petilil
550 | Lilligant
551 | Basculin (Red)
552 | Sandile
553 | Krokorok
554 | Krookodile
555 | Darumaka
556 | Darmanitan
557 | Maractus
558 | Dwebble
559 | Crustle
560 | Scraggy
561 | Scrafty
562 | Sigilyph
563 | Yamask
564 | Cofagrigus
565 | Tirtouga
566 | Carracosta
567 | Archen
568 | Archeops
569 | Trubbish
570 | Garbodor
571 | Zorua
572 | Zoroark
573 | Minccino
574 | Cinccino
575 | Gothita
576 | Gothorita
577 | Gothitelle
578 | Solosis
579 | Duosion
580 | Reuniclus
581 | Ducklett
582 | Swanna
583 | Vanillite
584 | Vanillish
585 | Vanilluxe
586 | Deerling
587 | Sawsbuck
588 | Emolga
589 | Karrablast
590 | Escavalier
591 | Foongus
592 | Amoonguss
593 | Frillish
594 | Jellicent
595 | Alomomola
596 | Joltik
597 | Galvantula
598 | Ferroseed
599 | Ferrothorn
600 | Klink
601 | Klang
602 | Klinklang
603 | Tynamo
604 | Eelektrik
605 | Eelektross
606 | Elgyem
607 | Beheeyem
608 | Litwick
609 | Lampent
610 | Chandelure
611 | Axew
612 | Fraxure
613 | Haxorus
614 | Cubchoo
615 | Beartic
616 | Cryogonal
617 | Shelmet
618 | Accelgor
619 | Stunfisk
620 | Mienfoo
621 | Mienshao
622 | Druddigon
623 | Golett
624 | Golurk
625 | Pawniard
626 | Bisharp
627 | Bouffalant
628 | Rufflet
629 | Braviary
630 | Vullaby
631 | Mandibuzz
632 | Heatmor
633 | Durant
634 | Deino
635 | Zweilous
636 | Hydreigon
637 | Larvesta
638 | Volcarona
639 | Cobalion
640 | Terrakion
641 | Virizion
642 | Tornadus
643 | Thundurus
644 | Reshiram
645 | Zekrom
646 | Landorus
647 | Kyurem
648 | Keldeo
649 | Meloetta
650 | Genesect
651 | Deoxys (A)
652 | Deoxys (D)
653 | Deoxys (S)
654 | Wormadam (S)
655 | Wormadam (T)
656 | Shaymin (S)
657 | Giratina (O)
658 | Rotom (Heat)
659 | Rotom (Wash)
660 | Rotom (Frost)
661 | Rotom (Fan)
662 | Rotom (Mow)
663 | Castform (Sun)
664 | Castform (Rain)
665 | Castform (Hail)
666 | Basculin (Blue)
667 | Darmanitan (Zen Mode)
668 | Meloetta (Pirouette)
669 | Pokémon Egg
670 | Manaphy Egg
--------------------------------------------------------------------------------
/Program Files/EvolutionMethodsGen4.txt:
--------------------------------------------------------------------------------
1 | None
2 | Happiness
3 | Happiness (Day)
4 | Happiness (Night)
5 | Level Up
6 | Trade
7 | Trade (Item)
8 | Use Item
9 | Level (Attack > Defense)
10 | Level (Attack = Defense)
11 | Level (Attack < Defense)
12 | Level (PID > 5)
13 | Level (PID < 5)
14 | Level (1 of 2)
15 | Level (2 of 2)
16 | Max Beauty
17 | Use Item (Male)
18 | Use Item (Female)
19 | Use Item (Day)
20 | Use Item (Night)
21 | Attack Known
22 | Pokemon in Party
23 | Level (Male)
24 | Level (Female)
25 | Level (Mt. Coronet)
26 | Level (Eterna Forest)
27 | Level (Route 217)
--------------------------------------------------------------------------------
/Program Files/EvolutionMethodsGen5.txt:
--------------------------------------------------------------------------------
1 | None
2 | Happiness
3 | Happiness (Day)
4 | Happiness (Night)
5 | Level
6 | Trade
7 | Trade (Item)
8 | Trade (Karrablast/ Shelmet)
9 | Use Item
10 | Level (Attack > Defense)
11 | Level (Attack = Defense)
12 | Level (Attack < Defense)
13 | Level (PID > 5)
14 | Level (PID < 5)
15 | Level (1 of 2)
16 | Level (2 of 2)
17 | Max Beauty
18 | Use Item (Male)
19 | Use Item (Female)
20 | Held Item
21 | Held Item (Night)
22 | Attack Known
23 | Pokemon in Party
24 | Level (Male)
25 | Level (Female)
26 | Level Up (Magnetic Field)
27 | Level Up (Mossy Rock)
28 | Level Up (Ice Rock)
--------------------------------------------------------------------------------
/Program Files/HeadbuttLocations.txt:
--------------------------------------------------------------------------------
1 | Mystery Zone
2 | Mystery Zone
3 | Mystery Zone
4 | Mystery Zone
5 | Mystery Zone
6 | Mystery Zone
7 | Bellchime Trail
8 | Burned Tower
9 | Ruins of Alph
10 | Route 1
11 | Route 2
12 | Route 3
13 | Route 4
14 | Route 5
15 | Route 6
16 | Route 7
17 | Route 8
18 | Route 9
19 | Route 10
20 | Route 11
21 | Route 12
22 | Route 13
23 | Route 14
24 | Route 15
25 | Route 16
26 | Route 17
27 | Route 18
28 | Route 22
29 | Route 24
30 | Route 25
31 | Route 26
32 | Route 27
33 | Route 28
34 | Route 29
35 | Route 30
36 | Route 31
37 | Route 32
38 | Route 33
39 | Route 34
40 | Route 35
41 | Route 36
42 | Route 37
43 | Route 38
44 | Route 39
45 | Route 42
46 | Route 43
47 | Route 44
48 | Route 45
49 | Route 46
50 | Pallet Town
51 | Viridian City
52 | Pewter City
53 | Cerulean City
54 | Lavender Town
55 | Vermilion City
56 | Celadon City
57 | Fuchsia City
58 | Cinnabar Island
59 | Indigo Plateau
60 | Saffron City
61 | New Bark Town
62 | New Bark Town
63 | New Bark Town
64 | New Bark Town
65 | New Bark Town
66 | New Bark Town
67 | New Bark Town
68 | Cherrygrove City
69 | Cherrygrove City
70 | Cherrygrove City
71 | Cherrygrove City
72 | Cherrygrove City
73 | Cherrygrove City
74 | Violet City
75 | Azalea Town
76 | Cianwood City
77 | Goldenrod City
78 | Olivine City
79 | Ecruteak City
80 | Ecruteak City
81 | Ecruteak City
82 | Ecruteak City
83 | Jubilife City
84 | Ecruteak City
85 | Ecruteak City
86 | Ecruteak City
87 | Ecruteak City
88 | Mahogany Town
89 | Lake of Rage
90 | Blackthorn City
91 | Mt. Silver
92 | Route 19
93 | Route 20
94 | Route 21
95 | Route 40
96 | Route 41
97 | National Park
98 | Route 31
99 | Route 32
100 | Union Cave
101 | Azalea Town
102 | Route 35
103 | Route 35
104 | Route 36
105 | Route 36
106 | Jubilife City
107 | DIGLETT’s Cave
108 | Mt. Moon
109 | Rock Tunnel
110 | Pal Park
111 | Sprout Tower
112 | Bell Tower
113 | Radio Tower
114 | Ruins of Alph
115 | SLOWPOKE Well
116 | Lighthouse
117 | Mahogany Town
118 | Ilex Forest
119 | Goldenrod Tunnel
120 | Mt. Mortar
121 | Ice Path
122 | Whirl Islands
123 | Mt. Silver Cave
124 | Dark Cave
125 | Victory Road
126 | Dragon’s Den
127 | Tohjo Falls
128 | Route 30
129 | Ecruteak City
130 | Ecruteak City
131 | Ecruteak City
132 | Ecruteak City
133 | Route 42
134 | Mahogany Town
135 | Route 29
136 | Violet City
137 | Azalea Town
138 | Goldenrod City
139 | Olivine City
140 | Cianwood City
141 | Mahogany Town
142 | Blackthorn City
143 | Route 43
144 | Route 30
145 | Cherrygrove City
146 | Cerulean Cave
147 | Seafoam Islands
148 | Viridian Forest
149 | Power Plant
150 | Route 36
151 | Pokéathlon Dome
152 | Route 47
153 | Route 48
154 | Union Cave
155 | Union Cave
156 | Sprout Tower
157 | Sprout Tower
158 | Violet City
159 | Violet City
160 | Violet City
161 | Violet City
162 | Jubilife City
163 | Violet City
164 | Azalea Town
165 | Azalea Town
166 | Azalea Town
167 | Azalea Town
168 | Violet City
169 | Azalea Town
170 | Route 32
171 | Route 32
172 | Route 34
173 | Route 38
174 | Safari Zone Gate
175 | Safari Zone Gate
176 | Jubilife City
177 | Dark Cave
178 | SLOWPOKE Well
179 | Victory Road
180 | Victory Road
181 | Azalea Town
182 | SLOWPOKE Well
183 | Goldenrod City
184 | Goldenrod City
185 | Goldenrod City
186 | Goldenrod City
187 | Radio Tower
188 | Radio Tower
189 | Radio Tower
190 | Radio Tower
191 | Radio Tower
192 | Goldenrod City
193 | Goldenrod City
194 | Goldenrod City
195 | Goldenrod City
196 | Goldenrod City
197 | Goldenrod City
198 | Goldenrod City
199 | Goldenrod City
200 | Goldenrod Tunnel
201 | Goldenrod City
202 | Goldenrod City
203 | Goldenrod City
204 | Goldenrod City
205 | Goldenrod City
206 | Goldenrod City
207 | Goldenrod City
208 | Global Terminal
209 | Goldenrod City
210 | Goldenrod City
211 | Goldenrod City
212 | Goldenrod City
213 | Goldenrod City
214 | Goldenrod City
215 | Route 39
216 | Route 39
217 | Ecruteak City
218 | Burned Tower
219 | Ruins of Alph
220 | Goldenrod City
221 | Lighthouse
222 | Lighthouse
223 | Lighthouse
224 | Lighthouse
225 | Lighthouse
226 | Lighthouse
227 | Olivine City
228 | Olivine City
229 | Olivine City
230 | Olivine City
231 | Olivine City
232 | Olivine City
233 | Cianwood City
234 | Cianwood City
235 | Cianwood City
236 | Cianwood City
237 | Cianwood City
238 | Ice Path
239 | Ice Path
240 | Ice Path
241 | Olivine City
242 | Cianwood City
243 | Whirl Islands
244 | Whirl Islands
245 | Whirl Islands
246 | Route 43
247 | Mahogany Town
248 | Team Rocket HQ
249 | Team Rocket HQ
250 | Team Rocket HQ
251 | Mt. Mortar
252 | Mt. Mortar
253 | Mt. Mortar
254 | Dragon’s Den
255 | Fight Area
256 | Fight Area
257 | Fight Area
258 | Fight Area
259 | Fight Area
260 | Fight Area
261 | Fight Area
262 | Fight Area
263 | Fight Area
264 | Battle Park
265 | Battle Park
266 | Battle Tower
267 | Battle Tower
268 | Battle Tower
269 | Battle Tower
270 | Battle Tower
271 | Battle Tower
272 | Battle Tower
273 | Battle Frontier
274 | Battle Frontier
275 | Battle Tower
276 | Battle Factory
277 | Battle Hall
278 | Battle Castle
279 | Battle Arcade
280 | Cliff Edge Gate
281 | Pokéathlon Dome
282 | Pokéathlon Dome
283 | Pokéathlon Dome
284 | Pokéathlon Dome
285 | Pokéathlon Dome
286 | Pokéathlon Dome
287 | Pokéathlon Dome
288 | Pokéathlon Dome
289 | Dragon’s Den
290 | Blackthorn City
291 | Blackthorn City
292 | Blackthorn City
293 | Blackthorn City
294 | Blackthorn City
295 | Lake of Rage
296 | Lake of Rage
297 | Route 26
298 | Route 26
299 | Tohjo Falls
300 | Route 26
301 | Pokémon League
302 | Pokémon League
303 | Pokémon League
304 | Pokémon League
305 | Pokémon League
306 | Pokémon League
307 | Pokémon League
308 | S.S. Aqua
309 | S.S. Aqua
310 | S.S. Aqua
311 | S.S. Aqua
312 | S.S. Aqua
313 | Ruins of Alph
314 | Ruins of Alph
315 | Ruins of Alph
316 | Ruins of Alph
317 | Ruins of Alph
318 | Ruins of Alph
319 | Ruins of Alph
320 | Ruins of Alph
321 | Ruins of Alph
322 | Ruins of Alph
323 | Route 27
324 | Ruins of Alph
325 | Ruins of Alph
326 | Ruins of Alph
327 | Ruins of Alph
328 | Ruins of Alph
329 | S.S. Aqua
330 | S.S. Aqua
331 | Olivine City
332 | Route 34
333 | Bell Tower
334 | Bell Tower
335 | Bell Tower
336 | Bell Tower
337 | Bell Tower
338 | Bell Tower
339 | Bell Tower
340 | Bell Tower
341 | Bell Tower
342 | Bell Tower
343 | Cliff Cave
344 | Safari Zone
345 | Safari Zone
346 | Safari Zone
347 | Safari Zone
348 | Safari Zone
349 | Safari Zone
350 | Safari Zone
351 | Safari Zone
352 | Safari Zone
353 | Safari Zone
354 | Safari Zone
355 | Safari Zone
356 | Safari Zone
357 | Safari Zone
358 | Safari Zone
359 | Vermilion City
360 | Vermilion City
361 | Vermilion City
362 | Vermilion City
363 | Vermilion City
364 | Vermilion City
365 | Vermilion City
366 | Vermilion City
367 | Route 40
368 | Olivine City
369 | Mahogany Town
370 | Blackthorn City
371 | Celadon City
372 | Celadon City
373 | Celadon City
374 | Celadon City
375 | Celadon City
376 | Celadon City
377 | Celadon City
378 | Celadon City
379 | Celadon City
380 | Celadon City
381 | Celadon City
382 | Celadon City
383 | Celadon City
384 | Celadon City
385 | New Bark Town
386 | Cianwood City
387 | Vermilion City
388 | Vermilion City
389 | Route 10
390 | Route 6
391 | Route 8
392 | Route 5
393 | Route 15
394 | Celadon City
395 | Celadon City
396 | Celadon City
397 | Mahogany Town
398 | Mahogany Town
399 | Saffron City
400 | Saffron City
401 | Saffron City
402 | Saffron City
403 | Saffron City
404 | ROTOM’s Room
405 | Saffron City
406 | Saffron City
407 | Saffron City
408 | Saffron City
409 | Saffron City
410 | Saffron City
411 | Saffron City
412 | Frontier Access
413 | Global Terminal
414 | Global Terminal
415 | Route 2
416 | Route 16
417 | Route 20
418 | Route 2
419 | Route 2
420 | Route 2
421 | Route 2
422 | Route 16
423 | Route 16
424 | Route 18
425 | Route 19
426 | Route 11
427 | Cerulean City
428 | Cerulean City
429 | Cerulean City
430 | Cerulean City
431 | Cerulean City
432 | Cerulean City
433 | Cerulean City
434 | Lavender Town
435 | Lavender Town
436 | Lavender Town
437 | Lavender Town
438 | Lavender Town
439 | Lavender Town
440 | Lavender Town
441 | Route 25
442 | Goldenrod City
443 | Celadon City
444 | Celadon City
445 | Celadon City
446 | Saffron City
447 | Lighthouse
448 | Radio Tower
449 | Mt. Moon
450 | Mt. Moon
451 | Cerulean Cave
452 | Cerulean Cave
453 | Rock Tunnel
454 | Seafoam Islands
455 | Seafoam Islands
456 | Seafoam Islands
457 | Seafoam Islands
458 | Seafoam Islands
459 | Seafoam Islands
460 | Mt. Silver Cave
461 | Mt. Silver Cave
462 | Mt. Silver Cave
463 | Mt. Silver Cave
464 | Mt. Silver Cave
465 | Mt. Silver Cave
466 | Mt. Silver Cave
467 | Route 10
468 | Power Plant
469 | Route 5
470 | Route 5
471 | Route 6
472 | Pewter City
473 | Pewter City
474 | Pewter City
475 | Pewter City
476 | Pewter City
477 | Pewter City
478 | Pewter City
479 | Fuchsia City
480 | Pal Park
481 | Fuchsia City
482 | Fuchsia City
483 | Fuchsia City
484 | Fuchsia City
485 | Route 10
486 | Fuchsia City
487 | Whirl Islands
488 | National Park
489 | National Park
490 | Power Plant
491 | Ruins of Alph
492 | Ruins of Alph
493 | Ruins of Alph
494 | Route 7
495 | Lavender Town
496 | Cerulean City
497 | Viridian City
498 | Viridian City
499 | Viridian City
500 | Viridian City
501 | Viridian City
502 | Viridian City
503 | Viridian City
504 | Pallet Town
505 | Pallet Town
506 | Pallet Town
507 | Pallet Town
508 | Pallet Town
509 | Cinnabar Island
510 | Cinnabar Island
511 | Route 28
512 | Route 3
513 | Route 3
514 | Mt. Moon
515 | Mt. Silver
516 | Mt. Silver
517 | Mystery Zone
518 | Route 5
519 | Mt. Moon
520 | Goldenrod City
521 | Saffron City
522 | Sinjoh Ruins
523 | Sinjoh Ruins
524 | Sinjoh Ruins
525 | Embedded Tower
526 | Embedded Tower
527 | Embedded Tower
528 | Route 1
529 | Frontier Access
530 | Frontier Access
531 | Frontier Access
532 | Frontier Access
533 | Route 5
534 | Route 12
535 | Safari Zone Gate
536 | Safari Zone Gate
537 | Goldenrod City
538 | Celadon City
539 | Mystery Zone
540 | Pokémon League
--------------------------------------------------------------------------------
/Program Files/IndoorLocations.txt:
--------------------------------------------------------------------------------
1 | 01 Bellsprout Tower
2 | 02 Ruins of Alph
3 | 03 Union Cave
4 | 04 Slowpoke Well
5 | 05 Ilex Forest
6 | 06 National Park
7 | 07 Burned Tower
8 | 08 Bell Tower
9 | 09 Whirl Islands
10 | 0A Mt. Mortar
11 | 0B Ice Path
12 | 0C Dragon's Den
13 | 0D Dark Cave
14 | 0E Mt. Moon
15 | 0F Seafoam Islands
16 | 10 Silver Cave
17 | 11 Cliff Edge Gate
18 | 12 Cliff Cave
19 | 13 Olivine City [SS Aqua]
20 | 14 Rock Tunnel
21 | 15 Victory Road
22 | 16 Tohjo Falls
23 | 17 Digletts Cave
24 | 18 Viridian Forest
25 | 19 Cerulean Cave
26 |
--------------------------------------------------------------------------------
/Program Files/ItemBattleFunctionsGen4.txt:
--------------------------------------------------------------------------------
1 | None
2 | Pokeballs
3 | Recovery
4 | Escape
5 |
--------------------------------------------------------------------------------
/Program Files/ItemFieldBagPocketsGen4.txt:
--------------------------------------------------------------------------------
1 | Items
2 | Medicine
3 | Pokeballs
4 | TMs/HMs
5 | Berries
6 | Mail
7 | Battle Items
8 | Key Items
--------------------------------------------------------------------------------
/Program Files/ItemFieldFunctionsJohto.txt:
--------------------------------------------------------------------------------
1 | None
2 | Recovery
3 | Town Map
4 | Explorer Kit
5 | Bicycle
6 | Journal
7 | TM/HM
8 | Mail
9 | Berry
10 | Poffin Case
11 | Pal Pad
12 | Poké Radar
13 | Sprayduck
14 | Mulch
15 | Honey
16 | Vs. Seeker
17 | Old Rod
18 | Good Rod
19 | Super Rod
20 | Display Bag Prompt
21 | Evolution Item
22 | Escape Rope
23 | Azure Flute
24 | Apricorn Box
25 | Berry Pots
26 | Unown Report
27 | Dowsing Machine
28 | GB Sounds
29 | Gracidea
30 | Vs. Recorder
--------------------------------------------------------------------------------
/Program Files/ItemFieldFunctionsSinnoh.txt:
--------------------------------------------------------------------------------
1 | None
2 | Recovery
3 | Town Map
4 | Explorer Kit
5 | Bicycle
6 | Journal
7 | TM/HM
8 | Mail
9 | Berry
10 | Poffin Case
11 | Pal Pad
12 | Poké Radar
13 | Sprayduck
14 | Mulch
15 | Honey
16 | Vs. Seeker
17 | Old Rod
18 | Good Rod
19 | Super Rod
20 | Display Bag Prompt
21 | Evolution Item
22 | Escape Rope
23 | Azure Flute
24 | Vs. Item
25 | Gracidea
--------------------------------------------------------------------------------
/Program Files/ItemList Rebooted.txt:
--------------------------------------------------------------------------------
1 | None
2 | Master Ball
3 | Ultra Ball
4 | Great Ball
5 | Poke Ball
6 | Safari Ball
7 | Net Ball
8 | Dive Ball
9 | Nest Ball
10 | Repeat Ball
11 | Timer Ball
12 | Luxury Ball
13 | Premier Ball
14 | Dusk Ball
15 | Heal Ball
16 | Quick Ball
17 | Cherish Ball
18 | Potion
19 | Antidote
20 | Burn Heal
21 | Ice Heal
22 | Awakening
23 | Parlyz Heal
24 | Full Restore
25 | Max Potion
26 | Hyper Potion
27 | Super Potion
28 | Full Heal
29 | Revive
30 | Max Revive
31 | Fresh Water
32 | Soda Pop
33 | Lemonade
34 | Moomoo Milk
35 | EnergyPowder
36 | Energy Root
37 | Heal Powder
38 | Revival Herb
39 | Ether
40 | Max Ether
41 | Elixir
42 | Max Elixir
43 | Lava Cookie
44 | Berry Juice
45 | Sacred Ash
46 | HP Up
47 | Protein
48 | Iron
49 | Carbos
50 | Calcium
51 | Rare Candy
52 | PP Up
53 | Zinc
54 | PP Max
55 | Old Gateau
56 | Guard Spec.
57 | Dire Hit
58 | X Attack
59 | X Defend
60 | X Speed
61 | X Accuracy
62 | X Special
63 | X Sp. Def
64 | Poke Doll
65 | Fluffy Tail
66 | Blue Flute
67 | Yellow Flute
68 | Red Flute
69 | Black Flute
70 | White Flute
71 | Shoal Salt
72 | Shoal Shell
73 | Red Shard
74 | Blue Shard
75 | Yellow Shard
76 | Green Shard
77 | Super Repel
78 | Max Repel
79 | Escape Rope
80 | Repel
81 | Sun Stone
82 | Moon Stone
83 | Fire Stone
84 | Thunderstone
85 | Water Stone
86 | Leaf Stone
87 | TinyMushroom
88 | Big Mushroom
89 | Pearl
90 | Big Pearl
91 | Stardust
92 | Star Piece
93 | Nugget
94 | Heart Scale
95 | Honey
96 | Growth Mulch
97 | Damp Mulch
98 | Stable Mulch
99 | Gooey Mulch
100 | Root Fossil
101 | Claw Fossil
102 | Helix Fossil
103 | Dome Fossil
104 | Old Amber
105 | Armor Fossil
106 | Skull Fossil
107 | Rare Bone
108 | Shiny Stone
109 | Dusk Stone
110 | Dawn Stone
111 | Oval Stone
112 | Odd Keystone
113 | Griseous Orb
114 | ???
115 | ???
116 | ???
117 | ???
118 | ???
119 | ???
120 | ???
121 | ???
122 | ???
123 | ???
124 | ???
125 | ???
126 | ???
127 | ???
128 | ???
129 | ???
130 | ???
131 | ???
132 | ???
133 | ???
134 | ???
135 | ???
136 | Adamant Orb
137 | Lustrous Orb
138 | Grass Mail
139 | Flame Mail
140 | Bubble Mail
141 | Bloom Mail
142 | Tunnel Mail
143 | Steel Mail
144 | Heart Mail
145 | Snow Mail
146 | Space Mail
147 | Air Mail
148 | Mosaic Mail
149 | Brick Mail
150 | Cheri Berry
151 | Chesto Berry
152 | Pecha Berry
153 | Rawst Berry
154 | Aspear Berry
155 | Leppa Berry
156 | Oran Berry
157 | Persim Berry
158 | Lum Berry
159 | Sitrus Berry
160 | Figy Berry
161 | Wiki Berry
162 | Mago Berry
163 | Aguav Berry
164 | Iapapa Berry
165 | Razz Berry
166 | Bluk Berry
167 | Nanab Berry
168 | Wepear Berry
169 | Pinap Berry
170 | Pomeg Berry
171 | Kelpsy Berry
172 | Qualot Berry
173 | Hondew Berry
174 | Grepa Berry
175 | Tamato Berry
176 | Cornn Berry
177 | Magost Berry
178 | Rabuta Berry
179 | Nomel Berry
180 | Spelon Berry
181 | Pamtre Berry
182 | Watmel Berry
183 | Durin Berry
184 | Belue Berry
185 | Occa Berry
186 | Passho Berry
187 | Wacan Berry
188 | Rindo Berry
189 | Yache Berry
190 | Chople Berry
191 | Kebia Berry
192 | Shuca Berry
193 | Coba Berry
194 | Payapa Berry
195 | Tanga Berry
196 | Charti Berry
197 | Kasib Berry
198 | Haban Berry
199 | Colbur Berry
200 | Babiri Berry
201 | Chilan Berry
202 | Liechi Berry
203 | Ganlon Berry
204 | Salac Berry
205 | Petaya Berry
206 | Apicot Berry
207 | Lansat Berry
208 | Starf Berry
209 | Enigma Berry
210 | Micle Berry
211 | Custap Berry
212 | Jaboca Berry
213 | Rowap Berry
214 | BrightPowder
215 | White Herb
216 | Macho Brace
217 | Exp. Share
218 | Quick Claw
219 | Soothe Bell
220 | Mental Herb
221 | Choice Band
222 | King's Rock
223 | SilverPowder
224 | Amulet Coin
225 | Cleanse Tag
226 | Soul Dew
227 | DeepSeaTooth
228 | DeepSeaScale
229 | Smoke Ball
230 | Everstone
231 | Focus Band
232 | Lucky Egg
233 | Scope Lens
234 | Metal Coat
235 | Leftovers
236 | Dragon Scale
237 | Light Ball
238 | Soft Sand
239 | Hard Stone
240 | Miracle Seed
241 | BlackGlasses
242 | Black Belt
243 | Magnet
244 | Mystic Water
245 | Sharp Beak
246 | Poison Barb
247 | NeverMeltIce
248 | Spell Tag
249 | TwistedSpoon
250 | Charcoal
251 | Dragon Fang
252 | Silk Scarf
253 | Up-Grade
254 | Shell Bell
255 | Sea Incense
256 | Lax Incense
257 | Lucky Punch
258 | Metal Powder
259 | Thick Club
260 | Stick
261 | Red Scarf
262 | Blue Scarf
263 | Pink Scarf
264 | Green Scarf
265 | Yellow Scarf
266 | Wide Lens
267 | Muscle Band
268 | Wise Glasses
269 | Expert Belt
270 | Light Clay
271 | Life Orb
272 | Power Herb
273 | Toxic Orb
274 | Flame Orb
275 | Quick Powder
276 | Focus Sash
277 | Zoom Lens
278 | Metronome
279 | Iron Ball
280 | Lagging Tail
281 | Destiny Knot
282 | Black Sludge
283 | Icy Rock
284 | Smooth Rock
285 | Heat Rock
286 | Damp Rock
287 | Grip Claw
288 | Choice Scarf
289 | Sticky Barb
290 | Power Bracer
291 | Power Belt
292 | Power Lens
293 | Power Band
294 | Power Anklet
295 | Power Weight
296 | Shed Shell
297 | Big Root
298 | Choice Specs
299 | Flame Plate
300 | Splash Plate
301 | Zap Plate
302 | Meadow Plate
303 | Icicle Plate
304 | Fist Plate
305 | Toxic Plate
306 | Earth Plate
307 | Sky Plate
308 | Mind Plate
309 | Insect Plate
310 | Stone Plate
311 | Spooky Plate
312 | Draco Plate
313 | Dread Plate
314 | Iron Plate
315 | Odd Incense
316 | Rock Incense
317 | Full Incense
318 | Wave Incense
319 | Rose Incense
320 | Luck Incense
321 | Pure Incense
322 | Protector
323 | Electirizer
324 | Magmarizer
325 | Dubious Disc
326 | Reaper Cloth
327 | Razor Claw
328 | Razor Fang
329 | TM01
330 | TM02
331 | TM03
332 | TM04
333 | TM05
334 | TM06
335 | TM07
336 | TM08
337 | TM09
338 | TM10
339 | TM11
340 | TM12
341 | TM13
342 | TM14
343 | TM15
344 | TM16
345 | TM17
346 | TM18
347 | TM19
348 | TM20
349 | TM21
350 | TM22
351 | TM23
352 | TM24
353 | TM25
354 | TM26
355 | TM27
356 | TM28
357 | TM29
358 | TM30
359 | TM31
360 | TM32
361 | TM33
362 | TM34
363 | TM35
364 | TM36
365 | TM37
366 | TM38
367 | TM39
368 | TM40
369 | TM41
370 | TM42
371 | TM43
372 | TM44
373 | TM45
374 | TM46
375 | TM47
376 | TM48
377 | TM49
378 | TM50
379 | TM51
380 | TM52
381 | TM53
382 | TM54
383 | TM55
384 | TM56
385 | TM57
386 | TM58
387 | TM59
388 | TM60
389 | TM61
390 | TM62
391 | TM63
392 | TM64
393 | TM65
394 | TM66
395 | TM67
396 | TM68
397 | TM69
398 | TM70
399 | TM71
400 | TM72
401 | TM73
402 | TM74
403 | TM75
404 | TM76
405 | TM77
406 | TM78
407 | TM79
408 | TM80
409 | TM81
410 | TM82
411 | TM83
412 | TM84
413 | TM85
414 | TM86
415 | TM87
416 | TM88
417 | TM89
418 | TM90
419 | TM91
420 | TM92
421 | HM01
422 | HM02
423 | HM03
424 | HM04
425 | HM05
426 | HM06
427 | HM07
428 | HM08
429 | ???
430 | Loot Sack
431 | Rule Book
432 | Poke Radar
433 | Point Card
434 | Journal
435 | Seal Case
436 | Fashion Case
437 | Seal Bag
438 | Pal Pad
439 | Works Key
440 | Old Charm
441 | Galactic Key
442 | Red Chain
443 | Town Map
444 | Vs. Seeker
445 | Coin Case
446 | Old Rod
447 | Good Rod
448 | Super Rod
449 | Sprayduck
450 | Poffin Case
451 | Bicycle
452 | Suite Key
453 | Oak’s Letter
454 | Lunar Wing
455 | Member Card
456 | Azure Flute
457 | S.S. Ticket
458 | Contest Pass
459 | Magma Stone
460 | Parcel
461 | Coupon 1
462 | Coupon 2
463 | Coupon 3
464 | Storage Key
465 | SecretPotion
466 | Vs. Recorder
467 | Gracidea
468 | Secret Key
469 | Apricorn Box
470 | UNOWN Report
471 | Berry Pots
472 | Dowsing MCHN
473 | Blue Card
474 | SlowpokeTail
475 | Clear Bell
476 | Card Key
477 | Basement Key
478 | SquirtBottle
479 | Red Scale
480 | Lost Item
481 | Pass
482 | Machine Part
483 | Silver Wing
484 | Rainbow Wing
485 | Mystery Egg
486 | Red Apricorn
487 | Ylw Apricorn
488 | Blu Apricorn
489 | Grn Apricorn
490 | Pnk Apricorn
491 | Wht Apricorn
492 | Blk Apricorn
493 | Fast Ball
494 | Level Ball
495 | Lure Ball
496 | Heavy Ball
497 | Love Ball
498 | Friend Ball
499 | Moon Ball
500 | Sport Ball
501 | Park Ball
502 | Photo Album
503 | GB Sounds
504 | Tidal Bell
505 | RageCandyBar
506 | framework.Data Card 01
507 | framework.Data Card 02
508 | framework.Data Card 03
509 | framework.Data Card 04
510 | framework.Data Card 05
511 | framework.Data Card 06
512 | framework.Data Card 07
513 | framework.Data Card 08
514 | framework.Data Card 09
515 | framework.Data Card 10
516 | framework.Data Card 11
517 | framework.Data Card 12
518 | framework.Data Card 13
519 | framework.Data Card 14
520 | framework.Data Card 15
521 | framework.Data Card 16
522 | framework.Data Card 17
523 | framework.Data Card 18
524 | framework.Data Card 19
525 | framework.Data Card 20
526 | framework.Data Card 21
527 | framework.Data Card 22
528 | framework.Data Card 23
529 | framework.Data Card 24
530 | framework.Data Card 25
531 | framework.Data Card 26
532 | framework.Data Card 27
533 | Jade Orb
534 | Lock Capsule
535 | Red Orb
536 | Blue Orb
537 | Enigma Stone
--------------------------------------------------------------------------------
/Program Files/ItemListDP.txt:
--------------------------------------------------------------------------------
1 | None
2 | Master Ball
3 | Ultra Ball
4 | Great Ball
5 | Poké Ball
6 | Safari Ball
7 | Net Ball
8 | Dive Ball
9 | Nest Ball
10 | Repeat Ball
11 | Timer Ball
12 | Luxury Ball
13 | Premier Ball
14 | Dusk Ball
15 | Heal Ball
16 | Quick Ball
17 | Cherish Ball
18 | Potion
19 | Antidote
20 | Burn Heal
21 | Ice Heal
22 | Awakening
23 | Parlyz Heal
24 | Full Restore
25 | Max Potion
26 | Hyper Potion
27 | Super Potion
28 | Full Heal
29 | Revive
30 | Max Revive
31 | Fresh Water
32 | Soda Pop
33 | Lemonade
34 | Moomoo Milk
35 | EnergyPowder
36 | Energy Root
37 | Heal Powder
38 | Revival Herb
39 | Ether
40 | Max Ether
41 | Elixir
42 | Max Elixir
43 | Lava Cookie
44 | Berry Juice
45 | Sacred Ash
46 | HP Up
47 | Protein
48 | Iron
49 | Carbos
50 | Calcium
51 | Rare Candy
52 | PP Up
53 | Zinc
54 | PP Max
55 | Old Gateau
56 | Guard Spec.
57 | Dire Hit
58 | X Attack
59 | X Defense
60 | X Speed
61 | X Accuracy
62 | X Special
63 | X Sp. Def
64 | Poké Doll
65 | Fluffy Tail
66 | Blue Flute
67 | Yellow Flute
68 | Red Flute
69 | Black Flute
70 | White Flute
71 | Shoal Salt
72 | Shoal Shell
73 | Red Shard
74 | Blue Shard
75 | Yellow Shard
76 | Green Shard
77 | Super Repel
78 | Max Repel
79 | Escape Rope
80 | Repel
81 | Sun Stone
82 | Moon Stone
83 | Fire Stone
84 | Thunderstone
85 | Water Stone
86 | Leaf Stone
87 | TinyMushroom
88 | Big Mushroom
89 | Pearl
90 | Big Pearl
91 | Stardust
92 | Star Piece
93 | Nugget
94 | Heart Scale
95 | Honey
96 | Growth Mulch
97 | Damp Mulch
98 | Stable Mulch
99 | Gooey Mulch
100 | Root Fossil
101 | Claw Fossil
102 | Helix Fossil
103 | Dome Fossil
104 | Old Amber
105 | Armor Fossil
106 | Skull Fossil
107 | Rare Bone
108 | Shiny Stone
109 | Dusk Stone
110 | Dawn Stone
111 | Oval Stone
112 | Odd Keystone
113 | Adamant Orb
114 | Lustrous Orb
115 | Grass Mail
116 | Flame Mail
117 | Bubble Mail
118 | Bloom Mail
119 | Tunnel Mail
120 | Steel Mail
121 | Heart Mail
122 | Snow Mail
123 | Space Mail
124 | Air Mail
125 | Mosaic Mail
126 | Brick Mail
127 | Cheri Berry
128 | Chesto Berry
129 | Pecha Berry
130 | Rawst Berry
131 | Aspear Berry
132 | Leppa Berry
133 | Oran Berry
134 | Persim Berry
135 | Lum Berry
136 | Sitrus Berry
137 | Figy Berry
138 | Wiki Berry
139 | Mago Berry
140 | Aguav Berry
141 | Iapapa Berry
142 | Razz Berry
143 | Bluk Berry
144 | Nanab Berry
145 | Wepear Berry
146 | Pinap Berry
147 | Pomeg Berry
148 | Kelpsy Berry
149 | Qualot Berry
150 | Hondew Berry
151 | Grepa Berry
152 | Tamato Berry
153 | Cornn Berry
154 | Magost Berry
155 | Rabuta Berry
156 | Nomel Berry
157 | Spelon Berry
158 | Pamtre Berry
159 | Watmel Berry
160 | Durin Berry
161 | Belue Berry
162 | Occa Berry
163 | Passho Berry
164 | Wacan Berry
165 | Rindo Berry
166 | Yache Berry
167 | Chople Berry
168 | Kebia Berry
169 | Shuca Berry
170 | Coba Berry
171 | Payapa Berry
172 | Tanga Berry
173 | Charti Berry
174 | Kasib Berry
175 | Haban Berry
176 | Colbur Berry
177 | Babiri Berry
178 | Chilan Berry
179 | Liechi Berry
180 | Ganlon Berry
181 | Salac Berry
182 | Petaya Berry
183 | Apicot Berry
184 | Lansat Berry
185 | Starf Berry
186 | Enigma Berry
187 | Micle Berry
188 | Custap Berry
189 | Jaboca Berry
190 | Rowap Berry
191 | BrightPowder
192 | White Herb
193 | Macho Brace
194 | Exp. Share
195 | Quick Claw
196 | Soothe Bell
197 | Mental Herb
198 | Choice Band
199 | King's Rock
200 | SilverPowder
201 | Amulet Coin
202 | Cleanse Tag
203 | Soul Dew
204 | DeepSeaTooth
205 | DeepSeaScale
206 | Smoke Ball
207 | Everstone
208 | Focus Band
209 | Lucky Egg
210 | Scope Lens
211 | Metal Coat
212 | Leftovers
213 | Dragon Scale
214 | Light Ball
215 | Soft Sand
216 | Hard Stone
217 | Miracle Seed
218 | BlackGlasses
219 | Black Belt
220 | Magnet
221 | Mystic Water
222 | Sharp Beak
223 | Poison Barb
224 | NeverMeltIce
225 | Spell Tag
226 | TwistedSpoon
227 | Charcoal
228 | Dragon Fang
229 | Silk Scarf
230 | Up-Grade
231 | Shell Bell
232 | Sea Incense
233 | Lax Incense
234 | Lucky Punch
235 | Metal Powder
236 | Thick Club
237 | Stick
238 | Red Scarf
239 | Blue Scarf
240 | Pink Scarf
241 | Green Scarf
242 | Yellow Scarf
243 | Wide Lens
244 | Muscle Band
245 | Wise Glasses
246 | Expert Belt
247 | Light Clay
248 | Life Orb
249 | Power Herb
250 | Toxic Orb
251 | Flame Orb
252 | Quick Powder
253 | Focus Sash
254 | Zoom Lens
255 | Metronome
256 | Iron Ball
257 | Lagging Tail
258 | Destiny Knot
259 | Black Sludge
260 | Icy Rock
261 | Smooth Rock
262 | Heat Rock
263 | Damp Rock
264 | Grip Claw
265 | Choice Scarf
266 | Sticky Barb
267 | Power Bracer
268 | Power Belt
269 | Power Lens
270 | Power Band
271 | Power Anklet
272 | Power Weight
273 | Shed Shell
274 | Big Root
275 | Choice Specs
276 | Flame Plate
277 | Splash Plate
278 | Zap Plate
279 | Meadow Plate
280 | Icicle Plate
281 | Fist Plate
282 | Toxic Plate
283 | Earth Plate
284 | Sky Plate
285 | Mind Plate
286 | Insect Plate
287 | Stone Plate
288 | Spooky Plate
289 | Draco Plate
290 | Dread Plate
291 | Iron Plate
292 | Odd Incense
293 | Rock Incense
294 | Full Incense
295 | Wave Incense
296 | Rose Incense
297 | Luck Incense
298 | Pure Incense
299 | Protector
300 | Electirizer
301 | Magmarizer
302 | Dubious Disc
303 | Reaper Cloth
304 | Razor Claw
305 | Razor Fang
306 | TM01
307 | TM02
308 | TM03
309 | TM04
310 | TM05
311 | TM06
312 | TM07
313 | TM08
314 | TM09
315 | TM10
316 | TM11
317 | TM12
318 | TM13
319 | TM14
320 | TM15
321 | TM16
322 | TM17
323 | TM18
324 | TM19
325 | TM20
326 | TM21
327 | TM22
328 | TM23
329 | TM24
330 | TM25
331 | TM26
332 | TM27
333 | TM28
334 | TM29
335 | TM30
336 | TM31
337 | TM32
338 | TM33
339 | TM34
340 | TM35
341 | TM36
342 | TM37
343 | TM38
344 | TM39
345 | TM40
346 | TM41
347 | TM42
348 | TM43
349 | TM44
350 | TM45
351 | TM46
352 | TM47
353 | TM48
354 | TM49
355 | TM50
356 | TM51
357 | TM52
358 | TM53
359 | TM54
360 | TM55
361 | TM56
362 | TM57
363 | TM58
364 | TM59
365 | TM60
366 | TM61
367 | TM62
368 | TM63
369 | TM64
370 | TM65
371 | TM66
372 | TM67
373 | TM68
374 | TM69
375 | TM70
376 | TM71
377 | TM72
378 | TM73
379 | TM74
380 | TM75
381 | TM76
382 | TM77
383 | TM78
384 | TM79
385 | TM80
386 | TM81
387 | TM82
388 | TM83
389 | TM84
390 | TM85
391 | TM86
392 | TM87
393 | TM88
394 | TM89
395 | TM90
396 | TM91
397 | TM92
398 | HM01
399 | HM02
400 | HM03
401 | HM04
402 | HM05
403 | HM06
404 | HM07
405 | HM08
406 | Explorer Kit
407 | Loot Sack
408 | Rule Book
409 | Poké Radar
410 | Point Card
411 | Journal
412 | Seal Case
413 | Fashion Case
414 | Seal Bag
415 | Pal Pad
416 | Works Key
417 | Old Charm
418 | Galactic Key
419 | Red Chain
420 | Town Map
421 | Vs. Seeker
422 | Coin Case
423 | Old Rod
424 | Good Rod
425 | Super Rod
426 | Sprayduck
427 | Poffin Case
428 | Bicycle
429 | Suite Key
430 | Oak's Letter
431 | Lunar Wing
432 | Member Card
433 | Azure Flute
434 | S.S. Ticket
435 | Contest Pass
436 | Magma Stone
437 | Parcel
438 | Coupon 1
439 | Coupon 2
440 | Coupon 3
441 | Storage Key
442 | SecretPotion
443 | Vs. Recorder
444 | Gracidea
445 | Secret Key
--------------------------------------------------------------------------------
/Program Files/ItemListPt.txt:
--------------------------------------------------------------------------------
1 | None
2 | Master Ball
3 | Ultra Ball
4 | Great Ball
5 | Poké Ball
6 | Safari Ball
7 | Net Ball
8 | Dive Ball
9 | Nest Ball
10 | Repeat Ball
11 | Timer Ball
12 | Luxury Ball
13 | Premier Ball
14 | Dusk Ball
15 | Heal Ball
16 | Quick Ball
17 | Cherish Ball
18 | Potion
19 | Antidote
20 | Burn Heal
21 | Ice Heal
22 | Awakening
23 | Parlyz Heal
24 | Full Restore
25 | Max Potion
26 | Hyper Potion
27 | Super Potion
28 | Full Heal
29 | Revive
30 | Max Revive
31 | Fresh Water
32 | Soda Pop
33 | Lemonade
34 | Moomoo Milk
35 | EnergyPowder
36 | Energy Root
37 | Heal Powder
38 | Revival Herb
39 | Ether
40 | Max Ether
41 | Elixir
42 | Max Elixir
43 | Lava Cookie
44 | Berry Juice
45 | Sacred Ash
46 | HP Up
47 | Protein
48 | Iron
49 | Carbos
50 | Calcium
51 | Rare Candy
52 | PP Up
53 | Zinc
54 | PP Max
55 | Old Gateau
56 | Guard Spec.
57 | Dire Hit
58 | X Attack
59 | X Defense
60 | X Speed
61 | X Accuracy
62 | X Special
63 | X Sp. Def
64 | Poké Doll
65 | Fluffy Tail
66 | Blue Flute
67 | Yellow Flute
68 | Red Flute
69 | Black Flute
70 | White Flute
71 | Shoal Salt
72 | Shoal Shell
73 | Red Shard
74 | Blue Shard
75 | Yellow Shard
76 | Green Shard
77 | Super Repel
78 | Max Repel
79 | Escape Rope
80 | Repel
81 | Sun Stone
82 | Moon Stone
83 | Fire Stone
84 | Thunderstone
85 | Water Stone
86 | Leaf Stone
87 | TinyMushroom
88 | Big Mushroom
89 | Pearl
90 | Big Pearl
91 | Stardust
92 | Star Piece
93 | Nugget
94 | Heart Scale
95 | Honey
96 | Growth Mulch
97 | Damp Mulch
98 | Stable Mulch
99 | Gooey Mulch
100 | Root Fossil
101 | Claw Fossil
102 | Helix Fossil
103 | Dome Fossil
104 | Old Amber
105 | Armor Fossil
106 | Skull Fossil
107 | Rare Bone
108 | Shiny Stone
109 | Dusk Stone
110 | Dawn Stone
111 | Oval Stone
112 | Odd Keystone
113 | Griseous Orb
114 | Adamant Orb
115 | Lustrous Orb
116 | Grass Mail
117 | Flame Mail
118 | Bubble Mail
119 | Bloom Mail
120 | Tunnel Mail
121 | Steel Mail
122 | Heart Mail
123 | Snow Mail
124 | Space Mail
125 | Air Mail
126 | Mosaic Mail
127 | Brick Mail
128 | Cheri Berry
129 | Chesto Berry
130 | Pecha Berry
131 | Rawst Berry
132 | Aspear Berry
133 | Leppa Berry
134 | Oran Berry
135 | Persim Berry
136 | Lum Berry
137 | Sitrus Berry
138 | Figy Berry
139 | Wiki Berry
140 | Mago Berry
141 | Aguav Berry
142 | Iapapa Berry
143 | Razz Berry
144 | Bluk Berry
145 | Nanab Berry
146 | Wepear Berry
147 | Pinap Berry
148 | Pomeg Berry
149 | Kelpsy Berry
150 | Qualot Berry
151 | Hondew Berry
152 | Grepa Berry
153 | Tamato Berry
154 | Cornn Berry
155 | Magost Berry
156 | Rabuta Berry
157 | Nomel Berry
158 | Spelon Berry
159 | Pamtre Berry
160 | Watmel Berry
161 | Durin Berry
162 | Belue Berry
163 | Occa Berry
164 | Passho Berry
165 | Wacan Berry
166 | Rindo Berry
167 | Yache Berry
168 | Chople Berry
169 | Kebia Berry
170 | Shuca Berry
171 | Coba Berry
172 | Payapa Berry
173 | Tanga Berry
174 | Charti Berry
175 | Kasib Berry
176 | Haban Berry
177 | Colbur Berry
178 | Babiri Berry
179 | Chilan Berry
180 | Liechi Berry
181 | Ganlon Berry
182 | Salac Berry
183 | Petaya Berry
184 | Apicot Berry
185 | Lansat Berry
186 | Starf Berry
187 | Enigma Berry
188 | Micle Berry
189 | Custap Berry
190 | Jaboca Berry
191 | Rowap Berry
192 | BrightPowder
193 | White Herb
194 | Macho Brace
195 | Exp. Share
196 | Quick Claw
197 | Soothe Bell
198 | Mental Herb
199 | Choice Band
200 | King's Rock
201 | SilverPowder
202 | Amulet Coin
203 | Cleanse Tag
204 | Soul Dew
205 | DeepSeaTooth
206 | DeepSeaScale
207 | Smoke Ball
208 | Everstone
209 | Focus Band
210 | Lucky Egg
211 | Scope Lens
212 | Metal Coat
213 | Leftovers
214 | Dragon Scale
215 | Light Ball
216 | Soft Sand
217 | Hard Stone
218 | Miracle Seed
219 | BlackGlasses
220 | Black Belt
221 | Magnet
222 | Mystic Water
223 | Sharp Beak
224 | Poison Barb
225 | NeverMeltIce
226 | Spell Tag
227 | TwistedSpoon
228 | Charcoal
229 | Dragon Fang
230 | Silk Scarf
231 | Up-Grade
232 | Shell Bell
233 | Sea Incense
234 | Lax Incense
235 | Lucky Punch
236 | Metal Powder
237 | Thick Club
238 | Stick
239 | Red Scarf
240 | Blue Scarf
241 | Pink Scarf
242 | Green Scarf
243 | Yellow Scarf
244 | Wide Lens
245 | Muscle Band
246 | Wise Glasses
247 | Expert Belt
248 | Light Clay
249 | Life Orb
250 | Power Herb
251 | Toxic Orb
252 | Flame Orb
253 | Quick Powder
254 | Focus Sash
255 | Zoom Lens
256 | Metronome
257 | Iron Ball
258 | Lagging Tail
259 | Destiny Knot
260 | Black Sludge
261 | Icy Rock
262 | Smooth Rock
263 | Heat Rock
264 | Damp Rock
265 | Grip Claw
266 | Choice Scarf
267 | Sticky Barb
268 | Power Bracer
269 | Power Belt
270 | Power Lens
271 | Power Band
272 | Power Anklet
273 | Power Weight
274 | Shed Shell
275 | Big Root
276 | Choice Specs
277 | Flame Plate
278 | Splash Plate
279 | Zap Plate
280 | Meadow Plate
281 | Icicle Plate
282 | Fist Plate
283 | Toxic Plate
284 | Earth Plate
285 | Sky Plate
286 | Mind Plate
287 | Insect Plate
288 | Stone Plate
289 | Spooky Plate
290 | Draco Plate
291 | Dread Plate
292 | Iron Plate
293 | Odd Incense
294 | Rock Incense
295 | Full Incense
296 | Wave Incense
297 | Rose Incense
298 | Luck Incense
299 | Pure Incense
300 | Protector
301 | Electirizer
302 | Magmarizer
303 | Dubious Disc
304 | Reaper Cloth
305 | Razor Claw
306 | Razor Fang
307 | TM01
308 | TM02
309 | TM03
310 | TM04
311 | TM05
312 | TM06
313 | TM07
314 | TM08
315 | TM09
316 | TM10
317 | TM11
318 | TM12
319 | TM13
320 | TM14
321 | TM15
322 | TM16
323 | TM17
324 | TM18
325 | TM19
326 | TM20
327 | TM21
328 | TM22
329 | TM23
330 | TM24
331 | TM25
332 | TM26
333 | TM27
334 | TM28
335 | TM29
336 | TM30
337 | TM31
338 | TM32
339 | TM33
340 | TM34
341 | TM35
342 | TM36
343 | TM37
344 | TM38
345 | TM39
346 | TM40
347 | TM41
348 | TM42
349 | TM43
350 | TM44
351 | TM45
352 | TM46
353 | TM47
354 | TM48
355 | TM49
356 | TM50
357 | TM51
358 | TM52
359 | TM53
360 | TM54
361 | TM55
362 | TM56
363 | TM57
364 | TM58
365 | TM59
366 | TM60
367 | TM61
368 | TM62
369 | TM63
370 | TM64
371 | TM65
372 | TM66
373 | TM67
374 | TM68
375 | TM69
376 | TM70
377 | TM71
378 | TM72
379 | TM73
380 | TM74
381 | TM75
382 | TM76
383 | TM77
384 | TM78
385 | TM79
386 | TM80
387 | TM81
388 | TM82
389 | TM83
390 | TM84
391 | TM85
392 | TM86
393 | TM87
394 | TM88
395 | TM89
396 | TM90
397 | TM91
398 | TM92
399 | HM01
400 | HM02
401 | HM03
402 | HM04
403 | HM05
404 | HM06
405 | HM07
406 | HM08
407 | Explorer Kit
408 | Loot Sack
409 | Rule Book
410 | Poké Radar
411 | Point Card
412 | Journal
413 | Seal Case
414 | Fashion Case
415 | Seal Bag
416 | Pal Pad
417 | Works Key
418 | Old Charm
419 | Galactic Key
420 | Red Chain
421 | Town Map
422 | Vs. Seeker
423 | Coin Case
424 | Old Rod
425 | Good Rod
426 | Super Rod
427 | Sprayduck
428 | Poffin Case
429 | Bicycle
430 | Suite Key
431 | Oak's Letter
432 | Lunar Wing
433 | Member Card
434 | Azure Flute
435 | S.S. Ticket
436 | Contest Pass
437 | Magma Stone
438 | Parcel
439 | Coupon 1
440 | Coupon 2
441 | Coupon 3
442 | Storage Key
443 | SecretPotion
444 | Vs. Recorder
445 | Gracidea
446 | Secret Key
--------------------------------------------------------------------------------
/Program Files/ItemScriptDataGen4.txt:
--------------------------------------------------------------------------------
1 | Heal 20 HP if HP falls below 50%
2 | Adamant Orb Effect
3 | Lustrous Orb Effect
4 | Heal Paralysis if afflicted while held
5 | Heal Sleep if afflicted while held
6 | Heal Poison if afflicted while held
7 | Heal Burn if afflicted while held
8 | Heal Freeze if afflicted while held
9 | Heal
--------------------------------------------------------------------------------
/Program Files/Locations.txt:
--------------------------------------------------------------------------------
1 | New Bark Town
2 | Route 29
3 | Cherrygrove City
4 | Route 30
5 | Route 31
6 | Violet City
7 | Sprout Tower
8 | Sprout Tower
9 | Route 32
10 | Ruins of Alph
11 | Ruins of Alph
12 | Ruins of Alph
13 | Ruins of Alph
14 | Ruins of Alph
15 | Union Cave
16 | Union Cave
17 | Union Cave
18 | Route 33
19 | SLOWPOKE Well
20 | SLOWPOKE Well
21 | Ilex Forest
22 | Route 34
23 | Route 35
24 | National Park
25 | National Park
26 | Route 36
27 | Route 37
28 | Ecruteak City
29 | Burned Tower
30 | Burned Tower
31 | Bell Tower
32 | Bell Tower
33 | Bell Tower
34 | Bell Tower
35 | Bell Tower
36 | Bell Tower
37 | Bell Tower
38 | Bell Tower
39 | Route 38
40 | Route 39
41 | Olivine City
42 | Route 40
43 | Route 41
44 | Whirl Islands
45 | Whirl Islands
46 | ~
47 | Whirl Islands
48 | ~
49 | Whirl Islands
50 | ~
51 | ~
52 | Cianwood City
53 | Route 42
54 | Mt. Mortar
55 | Mt. Mortar
56 | Mt. Mortar
57 | Mt. Mortar
58 | Route 43
59 | Lake of Rage
60 | Route 44
61 | Ice Path
62 | Ice Path
63 | Ice Path
64 | Ice Path
65 | ~
66 | Blackthorn City
67 | Dragon’s Den
68 | Route 45
69 | Route 46
70 | Dark Cave
71 | Dark Cave
72 | Route 47
73 | Mt. Moon
74 | Mt. Moon
75 | Seafoam Islands
76 | Seafoam Islands
77 | Seafoam Islands
78 | Seafoam Islands
79 | Seafoam Islands
80 | Mt. Silver Cave
81 | Mt. Silver Cave
82 | Mt. Silver Cave
83 | Cliff Edge Gate
84 | Cliff Cave
85 | Bell Tower
86 | Mt. Silver
87 | Mt. Silver Cave
88 | Mt. Silver Cave
89 | Mt. Silver Cave
90 | Mt. Silver Cave
91 | ~
92 | Safari Zone
93 | Route 12
94 | Route 19
95 | Route 20
96 | Pallet Town
97 | Viridian City
98 | Cerulean City
99 | Vermilion City
100 | Celadon City
101 | Fuchsia City
102 | Cinnabar Island
103 | Route 48
104 | Route 26
105 | Route 27
106 | Route 28
107 | Mt. Moon
108 | Mt. Moon
109 | Rock Tunnel
110 | Rock Tunnel
111 | Victory Road
112 | Route 1
113 | Route 2
114 | Route 3
115 | Route 4
116 | Route 5
117 | Route 6
118 | Route 7
119 | Route 8
120 | Route 9
121 | Route 10
122 | Route 11
123 | Route 13
124 | Route 14
125 | Route 15
126 | Route 16
127 | Route 17
128 | Route 18
129 | Route 21
130 | Route 22
131 | Route 24
132 | Route 25
133 | Tohjo Falls
134 | DIGLETT’s Cave
135 | Victory Road
136 | Victory Road
137 | Route 2
138 | Viridian Forest
139 | ~
140 | Cerulean Cave
141 | Cerulean Cave
142 | Cerulean Cave
--------------------------------------------------------------------------------
/Program Files/MoveList Rebooted.txt:
--------------------------------------------------------------------------------
1 | Name
2 | Pound
3 | Karate Chop
4 | Double Slap
5 | Comet Punch
6 | Power-Up Punch
7 | Pay Day
8 | Fire Punch
9 | Ice Punch
10 | Thunder Punch
11 | Scratch
12 | Vise Grip
13 | Guillotine
14 | Razor Wind
15 | Swords Dance
16 | Cut
17 | Gust
18 | Wing Attack
19 | Whirlwind
20 | Fly
21 | Bind
22 | Rising Tackle
23 | Vine Whip
24 | Stomp
25 | Double Kick
26 | Mega Kick
27 | Push Kick
28 | Rolling Kick
29 | Sand Attack
30 | Headbutt
31 | Horn Attack
32 | Fury Attack
33 | Horn Drill
34 | Tackle
35 | Body Slam
36 | Wrap
37 | Take Down
38 | Thrash
39 | Double-Edge
40 | Tail Whip
41 | Poison Sting
42 | Twineedle
43 | Pin Missile
44 | Leer
45 | Bite*
46 | Growl
47 | Roar
48 | Sing
49 | Supersonic
50 | Boomburst
51 | Disable
52 | Acid
53 | Ember
54 | Flamethrower
55 | Mist
56 | Water Gun
57 | Hydro Pump
58 | Surf
59 | Ice Beam
60 | Blizzard
61 | Psybeam
62 | Bubble Beam
63 | Aurora Beam
64 | Hyper Beam
65 | Peck
66 | Drill Peck
67 | Play Rough
68 | Low Kick
69 | Counter
70 | Seismic Toss
71 | Strength
72 | Absorb
73 | Mega Drain
74 | Leech Seed
75 | Growth
76 | Razor Leaf
77 | Solar Beam
78 | Poison Powder
79 | Stun Spore
80 | Sleep Powder
81 | Petal Dance
82 | String Shot
83 | Dragon Rage
84 | Fire Spin
85 | Thunder Shock
86 | Thunderbolt
87 | Thunder Wave
88 | Thunder
89 | Rock Throw
90 | Earthquake
91 | Contiental Crush
92 | Dig
93 | Toxic
94 | Confusion
95 | Psychic
96 | Hypnosis
97 | Meditate
98 | Agility
99 | Quick Attack
100 | Rage
101 | Teleport
102 | Night Shade
103 | Mimic
104 | Screech
105 | Double Team
106 | Recover
107 | Harden
108 | Minimize
109 | Smokescreen
110 | Confuse Ray
111 | Withdraw
112 | Defense Curl
113 | Barrier
114 | Light Screen
115 | Haze
116 | Reflect
117 | Focus Energy
118 | Bide
119 | Metronome
120 | Mirror Move
121 | Self-Destruct
122 | Egg Bomb
123 | Lick
124 | Smog
125 | Sludge
126 | Bone Club
127 | Fire Blast
128 | Waterfall
129 | Clamp
130 | Swift
131 | Skull Bash
132 | Spike Cannon
133 | Constrict
134 | Amnesia
135 | Kinesis
136 | Soft-Boiled
137 | High Jump Kick
138 | Glare
139 | Dream Eater
140 | Poison Gas
141 | Barrage
142 | Leech Life
143 | Lovely Kiss
144 | Sky Attack
145 | Transform
146 | Bubble
147 | Dizzy Punch
148 | Spore
149 | Flash
150 | Psywave
151 | Splash
152 | Acid Armor
153 | Crabhammer
154 | Explosion
155 | Fury Swipes
156 | Bonemerang
157 | Rest
158 | Rock Slide
159 | Hyper Fang
160 | Sharpen
161 | Conversion
162 | Tri Attack
163 | Super Fang
164 | Slash
165 | Substitute
166 | Struggle
167 | Sketch
168 | Senpukyaku
169 | Thief
170 | Spider Web
171 | Mind Reader
172 | Poltergeist
173 | Flame Wheel
174 | Snore
175 | Curse*
176 | Flail
177 | Conversion 2
178 | Aeroblast
179 | Cotton Spore
180 | Reversal
181 | Spite
182 | Powder Snow
183 | Protect
184 | Mach Punch
185 | Scary Face
186 | Feint Attack
187 | Sweet Kiss*
188 | Belly Drum
189 | Sludge Bomb
190 | Mud-Slap
191 | Octazooka
192 | Spikes
193 | Zap Cannon
194 | Foresight
195 | Destiny Bond
196 | Perish Song
197 | Icy Wind
198 | Detect
199 | Bone Rush
200 | Lock-On
201 | Outrage
202 | Sandstorm
203 | Giga Drain
204 | Endure
205 | Charm*
206 | Rollout
207 | False Swipe
208 | Swagger
209 | Milk Drink
210 | Spark
211 | Fury Cutter
212 | Steel Wing
213 | Mean Look
214 | Attract
215 | Sleep Talk
216 | Heal Bell
217 | Return
218 | Present
219 | Frustration
220 | Safeguard
221 | Pain Split
222 | Sacred Fire
223 | Magnitude
224 | Dynamic Punch
225 | Megahorn
226 | Dragon Breath
227 | Baton Pass
228 | Encore
229 | Pursuit
230 | Rapid Spin
231 | Sweet Scent
232 | Iron Tail
233 | Metal Claw
234 | Vital Throw
235 | Morning Sun
236 | Synthesis
237 | Moonlight
238 | Hidden Power
239 | Cross Chop
240 | Twister
241 | Rain Dance
242 | Sunny Day
243 | Crunch
244 | Mirror Coat
245 | Psych Up
246 | Extreme Speed
247 | Ancient Power
248 | Shadow Ball
249 | Future Sight
250 | Rock Smash
251 | Whirlpool
252 | Beat Up
253 | Fake Out
254 | Uproar
255 | Stockpile
256 | Spit Up
257 | Swallow
258 | Heat Wave
259 | Hail
260 | Torment
261 | Flatter
262 | Will-O-Wisp
263 | Memento
264 | Facade
265 | Focus Punch
266 | Smelling Salts
267 | Follow Me
268 | Nature Power
269 | Charge
270 | Taunt
271 | Helping Hand
272 | Trick
273 | Role Play
274 | Wish
275 | Assist
276 | Ingrain
277 | Superpower
278 | Magic Coat
279 | Recycle
280 | Revenge
281 | Brick Break
282 | Yawn
283 | Knock Off
284 | Endeavor
285 | Eruption
286 | Skill Swap
287 | Imprison
288 | Refresh
289 | Grudge
290 | Snatch
291 | Secret Power
292 | Dive
293 | Arm Thrust
294 | Camouflage
295 | Tail Glow
296 | Dazzling Gleam
297 | Mist
298 | Feather Dance
299 | Teeter Dance
300 | Blaze Kick
301 | Mud Sport
302 | Ice Ball
303 | Needle Arm
304 | Slack Off
305 | Hyper Voice
306 | Poison Fang
307 | Crush Claw
308 | Blast Burn
309 | Hydro Cannon
310 | Meteor Mash
311 | Astonish
312 | Weather Ball
313 | Aromatherapy
314 | Fake Tears
315 | Air Cutter
316 | Overheat
317 | Odor Sleuth
318 | Rock Tomb
319 | Silver Wind
320 | Metal Sound
321 | Grass Whistle
322 | Tickle
323 | Cosmic Power
324 | Power Geyser
325 | Signal Beam
326 | Shadow Punch
327 | Extrasensory
328 | Sky Uppercut
329 | Scorching Sands
330 | Crystal Crush
331 | Turbid Tides
332 | Bullet Seed
333 | Aerial Ace
334 | Icicle Spear
335 | Iron Defense
336 | Block
337 | Howl
338 | Dragon Claw
339 | Frenzy Plant
340 | Bulk Up
341 | Bounce
342 | Mud Shot
343 | Poison Tail
344 | Covet
345 | Volt Tackle
346 | Magical Leaf
347 | Water Sport
348 | Calm Mind
349 | Leaf Blade
350 | Dragon Dance
351 | Rock Blast
352 | Shock Wave
353 | Water Pulse
354 | Doom Desire
355 | Psycho Boost
356 | Roost
357 | Gravity
358 | Miracle Eye
359 | Wake-Up Slap
360 | Hammer Arm
361 | Gyro Ball
362 | Healing Wish
363 | Brine
364 | Natural Gift
365 | Feint
366 | Pluck
367 | Tailwind
368 | Acupressure
369 | Metal Burst
370 | U-turn
371 | Close Combat
372 | Payback
373 | Assurance
374 | Embargo
375 | Fling
376 | Psycho Shift
377 | Trump Card
378 | Heal Block
379 | Wring Out
380 | Power Trick
381 | Gastro Acid
382 | Lucky Chant
383 | Me First
384 | Copycat
385 | Power Swap
386 | Guard Swap
387 | Punishment
388 | Last Resort
389 | Worry Seed
390 | Sucker Punch
391 | Toxic Spikes
392 | Heart Swap
393 | Aqua Ring
394 | Magnet Rise
395 | Flare Blitz
396 | Force Palm
397 | Aura Sphere
398 | Rock Polish
399 | Poison Jab
400 | Dark Pulse
401 | Night Slash
402 | Aqua Tail
403 | Seed Bomb
404 | Air Slash
405 | X-Scissor
406 | Bug Buzz
407 | Dragon Pulse
408 | Dragon Rush
409 | Power Gem
410 | Drain Punch
411 | Vacuum Wave
412 | Focus Blast
413 | Energy Ball
414 | Brave Bird
415 | Earth Power
416 | Switcheroo
417 | Giga Impact
418 | Nasty Plot
419 | Bullet Punch
420 | Avalanche
421 | Ice Shard
422 | Shadow Claw
423 | Thunder Fang
424 | Ice Fang
425 | Fire Fang
426 | Shadow Sneak
427 | Mud Bomb
428 | Psycho Cut
429 | Zen Headbutt
430 | Steel Beam
431 | Flash Cannon
432 | Rock Climb
433 | Defog
434 | Trick Room
435 | Draco Meteor
436 | Discharge
437 | Lava Plume
438 | Leaf Storm
439 | Power Whip
440 | Accelerock
441 | Cross Poison
442 | Gunk Shot
443 | Iron Head
444 | Magnet Bomb
445 | Stone Edge
446 | Captivate
447 | Stealth Rock
448 | Grass Knot
449 | Chatter
450 | Judgment
451 | Bug Bite
452 | Charge Beam
453 | Wood Hammer
454 | Aqua Jet
455 | Attack Order
456 | Defend Order
457 | Heal Order
458 | Head Smash
459 | Double Hit
460 | Roar of Time
461 | Spacial Rend
462 | Moonblast
463 | Crush Grip
464 | Magma Storm
465 | Dark Void
466 | Seed Flare
467 | Ominous Wind
468 | Shadow Force
469 | Hone Claws
470 | Wide Guard
471 | Guard Split
472 | Power Split
473 | Wonder Room
474 | Psyshock
475 | Venoshock
476 | Autotomize
477 | Rage Powder
478 | Telekinesis
479 | Magic Room
480 | Smack Down
481 | Storm Throw
482 | Flame Burst
483 | Sludge Wave
484 | Quiver Dance
485 | Heavy Slam
486 | Synchronoise
487 | Electro Ball
488 | Soak
489 | Flame Charge
490 | Coil
491 | Low Sweep
492 | Acid Spray
493 | Foul Play
494 | Simple Beam
495 | Entrainment
496 | After You
497 | Round
498 | Echoed Voice
499 | Chip Away
500 | Clear Smog
501 | Stored Power
502 | Quick Guard
503 | Ally Switch
504 | Scald
505 | Shell Smash
506 | Heal Pulse
507 | Hex
508 | Sky Drop
509 | Shift Gear
510 | Circle Throw
511 | Incinerate
512 | Quash
513 | Acrobatics
514 | Reflect Type
515 | Retaliate
516 | Final Gambit
517 | Bestow
518 | Inferno
519 | Water Pledge
520 | Fire Pledge
521 | Grass Pledge
522 | Volt Switch
523 | Struggle Bug
524 | Bulldoze
525 | Frost Breath
526 | Dragon Tail
527 | Work Up
528 | Electroweb
529 | Wild Charge
530 | Drill Run
531 | Dual Chop
532 | Heart Stamp
533 | Horn Leech
534 | Sacred Sword
535 | Razor Shell
536 | Heat Crash
537 | Leaf Tornado
538 | Steamroller
539 | Cotton Guard
540 | Night Daze
541 | Psystrike
542 | Tail Slap
543 | Hurricane
544 | Head Charge
545 | Gear Grind
546 | Searing Shot
547 | Techno Blast
548 | Relic Song
549 | Secret Sword
550 | Glaciate
551 | Bolt Strike
552 | Blue Flare
553 | Fiery Dance
554 | Freeze Shock
555 | Ice Burn
556 | Snarl
557 | Icicle Crash
558 | V-create
559 | Fusion Flare
560 | Fusion Bolt
--------------------------------------------------------------------------------
/Program Files/OutdoorLocations.txt:
--------------------------------------------------------------------------------
1 | 01 New Bark Town
2 | 02 Route 29
3 | 03 Cherrygrove City
4 | 04 Route 30
5 | 05 Route 31
6 | 06 Violet City
7 | 07 Route 32
8 | 08 Route 33
9 | 09 Route 34
10 | 0A Route 35
11 | 0B Route 36
12 | 0C Route 37
13 | 0D Ecruteak City
14 | 0E Route 38
15 | 0F Route 39
16 | 10 Olivine City
17 | 11 Route 40
18 | 12 Route 41
19 | 13 Cianwood City
20 | 14 Route 42
21 | 15 Route 43
22 | 16 Lake of Rage
23 | 17 Route 44
24 | 18 Blackthorn City
25 | 19 Route 45
26 | 1A Route 46
27 | 1B Route 47
28 | 1C Mt. Silver
29 | 1D Route 12
30 | 1E Route 19
31 | 1F Route 20
32 | 20 Pallet Town
33 | 21 Viridian City
34 | 22 Cerulean City
35 | 23 Vermilion City
36 | 24 Celadon City
37 | 25 Fuchsia City
38 | 26 Cinnabar Island
39 | 27 Route 48
40 | 28 Route 26
41 | 29 Route 27
42 | 2A Route 28
43 | 2B Route 1
44 | 2C Route 2
45 | 2D Route 3
46 | 2E Route 4
47 | 2F Route 5
48 | 30 Route 6
49 | 31 Route 7
50 | 32 Route 8
51 | 33 Route 9
52 | 34 Route 10
53 | 35 Route 11
54 | 36 Route 13
55 | 37 Route 14
56 | 38 Route 15
57 | 39 Route 16
58 | 3A Route 17
59 | 3B Route 18
60 | 3C Route 21
61 | 3D Route 22
62 | 3E Route 24
63 | 3F Route 25
64 | 40 Route 2 [Do not use]
65 | 41 Pewter City [Only for Special Locations]
66 | 42 Azalea Town [Only for Special Locations]
67 | 43 Safari Zone Gate [Only for Special Locations]
--------------------------------------------------------------------------------
/Program Files/PluckFlingEffectsGen4.txt:
--------------------------------------------------------------------------------
1 | None
2 | Cure Paralysis
3 | Cure Sleep
4 | Cure Poison
5 | Cure Burn
6 | Cure Freeze
7 | Restore 10 PP
8 | Restore 20 HP
9 | Cures Confusion
10 | Cure any Status or Confusion
11 | Restore 25% HP
12 | Figy Berry
13 | Wiki Berry
14 | Mago Berry
15 | Aguav Berry
16 | Iapapa Berry
17 | Raises Atk
18 | Raises Def
19 | Raises Spd
20 | Raises SpAtk
21 | Raises SpDef
22 | Raises Crit ratio
23 | Sharply raises random stat
24 | Raises Accuracy next move
25 | Restores lowered stats
26 | Cures Infatuation (Attract)
27 | Causes target to flinch
28 | Paralyzes target
29 | Poisons target
30 | Badly Poisons target
31 | Burns target
--------------------------------------------------------------------------------
/Program Files/TmList.txt:
--------------------------------------------------------------------------------
1 | TM01
2 | TM02
3 | TM03
4 | TM04
5 | TM05
6 | TM06
7 | TM07
8 | TM08
9 | TM09
10 | TM10
11 | TM11
12 | TM12
13 | TM13
14 | TM14
15 | TM15
16 | TM16
17 | TM17
18 | TM18
19 | TM19
20 | TM20
21 | TM21
22 | TM22
23 | TM23
24 | TM24
25 | TM25
26 | TM26
27 | TM27
28 | TM28
29 | TM29
30 | TM30
31 | TM31
32 | TM32
33 | TM33
34 | TM34
35 | TM35
36 | TM36
37 | TM37
38 | TM38
39 | TM39
40 | TM40
41 | TM41
42 | TM42
43 | TM43
44 | TM44
45 | TM45
46 | TM46
47 | TM47
48 | TM48
49 | TM49
50 | TM50
51 | TM51
52 | TM52
53 | TM53
54 | TM54
55 | TM55
56 | TM56
57 | TM57
58 | TM58
59 | TM59
60 | TM60
61 | TM61
62 | TM62
63 | TM63
64 | TM64
65 | TM65
66 | TM66
67 | TM67
68 | TM68
69 | TM69
70 | TM70
71 | TM71
72 | TM72
73 | TM73
74 | TM74
75 | TM75
76 | TM76
77 | TM77
78 | TM78
79 | TM79
80 | TM80
81 | TM81
82 | TM82
83 | TM83
84 | TM84
85 | TM85
86 | TM86
87 | TM87
88 | TM88
89 | TM89
90 | TM90
91 | TM91
92 | TM92
93 | HM01
94 | HM02
95 | HM03
96 | HM04
97 | HM05
98 | HM06
99 | HM07
100 | HM08
101 |
--------------------------------------------------------------------------------
/Program Files/TmListGen5.txt:
--------------------------------------------------------------------------------
1 | TM01
2 | TM02
3 | TM03
4 | TM04
5 | TM05
6 | TM06
7 | TM07
8 | TM08
9 | TM09
10 | TM10
11 | TM11
12 | TM12
13 | TM13
14 | TM14
15 | TM15
16 | TM16
17 | TM17
18 | TM18
19 | TM19
20 | TM20
21 | TM21
22 | TM22
23 | TM23
24 | TM24
25 | TM25
26 | TM26
27 | TM27
28 | TM28
29 | TM29
30 | TM30
31 | TM31
32 | TM32
33 | TM33
34 | TM34
35 | TM35
36 | TM36
37 | TM37
38 | TM38
39 | TM39
40 | TM40
41 | TM41
42 | TM42
43 | TM43
44 | TM44
45 | TM45
46 | TM46
47 | TM47
48 | TM48
49 | TM49
50 | TM50
51 | TM51
52 | TM52
53 | TM53
54 | TM54
55 | TM55
56 | TM56
57 | TM57
58 | TM58
59 | TM59
60 | TM60
61 | TM61
62 | TM62
63 | TM63
64 | TM64
65 | TM65
66 | TM66
67 | TM67
68 | TM68
69 | TM69
70 | TM70
71 | TM71
72 | TM72
73 | TM73
74 | TM74
75 | TM75
76 | TM76
77 | TM77
78 | TM78
79 | TM79
80 | TM80
81 | TM81
82 | TM82
83 | TM83
84 | TM84
85 | TM85
86 | TM86
87 | TM87
88 | TM88
89 | TM89
90 | TM90
91 | TM91
92 | TM92
93 | TM93
94 | TM94
95 | TM95
96 | HM01
97 | HM02
98 | HM03
99 | HM04
100 | HM05
101 | HM06
--------------------------------------------------------------------------------
/Program Files/TmNameListGen5.txt:
--------------------------------------------------------------------------------
1 | Hone Claws
2 | Dragon Claw
3 | Psyshock
4 | Calm Mind
5 | Roar
6 | Toxic
7 | Hail
8 | Bulk Up
9 | Venoshock
10 | Hidden Power
11 | Sunny Day
12 | Taunt
13 | Ice Beam
14 | Blizzard
15 | Hyper Beam
16 | Light Screen
17 | Protect
18 | Rain Dance
19 | Telekinesis
20 | Safeguard
21 | Frustration
22 | Solarbeam
23 | Smack Down
24 | Thunderbolt
25 | Thunder
26 | Earthquake
27 | Return
28 | Dig
29 | Psychic
30 | Shadow Ball
31 | Brick Break
32 | Double Team
33 | Reflect
34 | Sludge Wave
35 | Flamethrower
36 | Sludge Bomb
37 | Sandstorm
38 | Fire Blast
39 | Rock Tomb
40 | Aerial Ace
41 | Torment
42 | Facade
43 | Flame Charge
44 | Rest
45 | Attract
46 | Thief
47 | Low Sweep
48 | Round
49 | Echoed Voice
50 | Overheat
51 | Ally Switch
52 | Focus Blast
53 | Energy Ball
54 | False Swipe
55 | Scald
56 | Fling
57 | Charge Beam
58 | Sky Drop
59 | Incinerate
60 | Quash
61 | Will-o-wisp
62 | Acrobatics
63 | Embargo
64 | Explosion
65 | Shadow Claw
66 | Payback
67 | Retaliate
68 | Giga Impact
69 | Rock Polish
70 | Flash
71 | Stone Edge
72 | Volt Switch
73 | Thunder Wave
74 | Gyro Ball
75 | Swords Dance
76 | Struggle Bug
77 | Psych Up
78 | Bulldoze
79 | Frost Breath
80 | Rock Slide
81 | X-scissor
82 | Dragon Tail
83 | Work Up
84 | Poison Jab
85 | Dream Eater
86 | Grass Knot
87 | Swagger
88 | Pluck
89 | U-turn
90 | Substitute
91 | Flash Cannon
92 | Trick Room
93 | Wild Charge
94 | Rock Smash
95 | Snarl
96 | Cut
97 | Fly
98 | Surf
99 | Strength
100 | Waterfall
101 | Dive
--------------------------------------------------------------------------------
/Program Files/TmNameListJohto.txt:
--------------------------------------------------------------------------------
1 | Focus Punch
2 | Dragon Claw
3 | Water Pulse
4 | Calm Mind
5 | Roar
6 | Toxic
7 | Hail
8 | Bulk Up
9 | Bullet Seed
10 | Hidden Power
11 | Sunny Day
12 | Taunt
13 | Ice Beam
14 | Blizzard
15 | Hyper Beam
16 | Light Screen
17 | Protect
18 | Rain Dance
19 | Giga Drain
20 | Safeguard
21 | Frustration
22 | Solarbeam
23 | Iron Tail
24 | Thunderbolt
25 | Thunder
26 | Earthquake
27 | Return
28 | Dig
29 | Psychic
30 | Shadow Ball
31 | Brick Break
32 | Double Team
33 | Reflect
34 | Shock Wave
35 | Flamethrower
36 | Sludge Bomb
37 | Sandstorm
38 | Fire Blast
39 | Rock Tomb
40 | Aerial Ace
41 | Torment
42 | Facade
43 | Secret Power
44 | Rest
45 | Attract
46 | Thief
47 | Steel Wing
48 | Skill Swap
49 | Snatch
50 | Overheat
51 | Roost
52 | Focus Blast
53 | Energy Ball
54 | False Swipe
55 | Brine
56 | Fling
57 | Charge Beam
58 | Endure
59 | Dragon Pulse
60 | Drain Punch
61 | Will-o-wisp
62 | Silver Wind
63 | Embargo
64 | Explosion
65 | Shadow Claw
66 | Payback
67 | Recycle
68 | Giga Impact
69 | Rock Polish
70 | Flash
71 | Stone Edge
72 | Avalanche
73 | Thunder Wave
74 | Gyro Ball
75 | Swords Dance
76 | Stealth Rock
77 | Psych Up
78 | Captivate
79 | Dark Pulse
80 | Rock Slide
81 | X-Scissor
82 | Sleep Talk
83 | Natural Gift
84 | Poison Jab
85 | Dream Eater
86 | Grass Knot
87 | Swagger
88 | Pluck
89 | U-Turn
90 | Substitute
91 | Flash Cannon
92 | Trick Room
93 | Cut
94 | Fly
95 | Surf
96 | Strength
97 | Whirlpool
98 | Rock Smash
99 | Waterfall
100 | Rock Climb
--------------------------------------------------------------------------------
/Program Files/TmNameListSinnoh.txt:
--------------------------------------------------------------------------------
1 | Focus Punch
2 | Dragon Claw
3 | Water Pulse
4 | Calm Mind
5 | Roar
6 | Toxic
7 | Hail
8 | Bulk Up
9 | Bullet Seed
10 | Hidden Power
11 | Sunny Day
12 | Taunt
13 | Ice Beam
14 | Blizzard
15 | Hyper Beam
16 | Light Screen
17 | Protect
18 | Rain Dance
19 | Giga Drain
20 | Safeguard
21 | Frustration
22 | Solarbeam
23 | Iron Tail
24 | Thunderbolt
25 | Thunder
26 | Earthquake
27 | Return
28 | Dig
29 | Psychic
30 | Shadow Ball
31 | Brick Break
32 | Double Team
33 | Reflect
34 | Shock Wave
35 | Flamethrower
36 | Sludge Bomb
37 | Sandstorm
38 | Fire Blast
39 | Rock Tomb
40 | Aerial Ace
41 | Torment
42 | Facade
43 | Secret Power
44 | Rest
45 | Attract
46 | Thief
47 | Steel Wing
48 | Skill Swap
49 | Snatch
50 | Overheat
51 | Roost
52 | Focus Blast
53 | Energy Ball
54 | False Swipe
55 | Brine
56 | Fling
57 | Charge Beam
58 | Endure
59 | Dragon Pulse
60 | Drain Punch
61 | Will-o-wisp
62 | Silver Wind
63 | Embargo
64 | Explosion
65 | Shadow Claw
66 | Payback
67 | Recycle
68 | Giga Impact
69 | Rock Polish
70 | Flash
71 | Stone Edge
72 | Avalanche
73 | Thunder Wave
74 | Gyro Ball
75 | Swords Dance
76 | Stealth Rock
77 | Psych Up
78 | Captivate
79 | Dark Pulse
80 | Rock Slide
81 | X-Scissor
82 | Sleep Talk
83 | Natural Gift
84 | Poison Jab
85 | Dream Eater
86 | Grass Knot
87 | Swagger
88 | Pluck
89 | U-Turn
90 | Substitute
91 | Flash Cannon
92 | Trick Room
93 | Cut
94 | Fly
95 | Surf
96 | Strength
97 | Defog
98 | Rock Smash
99 | Waterfall
100 | Rock Climb
--------------------------------------------------------------------------------
/Program Files/TutorLocationsSinnoh.txt:
--------------------------------------------------------------------------------
1 | Route 212
2 | Survival Area
3 | Snowpoint City
--------------------------------------------------------------------------------
/Program Files/identifiers.hex:
--------------------------------------------------------------------------------
1 | 0DMB0XTBRSCNRLCNRGCNRNANRAMNRCMNRECN
--------------------------------------------------------------------------------
/Program Files/version:
--------------------------------------------------------------------------------
1 | 1.9.1
2 | Fixed issues with the Item Editor
3 | Fixed issues with packing narcs
4 | Added the option to not generate new sheets when running an editor
--------------------------------------------------------------------------------
/Usage.md:
--------------------------------------------------------------------------------
1 | # PokEditor
2 | Author: Turtleisaac
3 |
4 |
5 | # Usage
6 |
7 | java -jar PokEditor.jar \
8 |
9 |
10 | # List of Editors
11 |
12 | personal
13 |
14 | learnsets
15 |
16 | encounters
17 |
18 | evolutions
19 |
20 | growth
21 |
22 | items
23 |
24 | # Arguments
25 |
26 | \ \
27 |
28 | # How to edit
29 |
30 | The recommended method of editing is to use the [PokEditor Google Sheets templates](https://drive.google.com/drive/folders/1hlKiP7V31Ddj4WmKnjK7lfhT88yPjB55?usp=sharing), which will require that you have a Google account. Double click on the template for the game you wish to use (note: not all Pokémon DS game templates are currently available due to work still being carried out on them), then wait for the spreadsheet to load. Click "File", "Make a Copy", then choose what to name the copy and where in your Google Drive you want the copy to be placed.
31 |
32 | When you are ready to turn your edits into an edited rom, you can run the PokEditor.jar file through cmd using any of the arguments listed above, and it will output new .csv files that contain the data read from the rom. These files represent which spreadsheet(s) you need to download off of Google Sheets, and are named what you **need** to change your downloaded file(s)'s names to, with the addition of the word "Recompile" with no spaces in between (The program outputs a file called "personalData.csv", so the spreadsheet you download for that becomes "personalDataRecompile.csv"). Go to the spreadsheet(s) you need to download, click "File", "Download", then "Comma-separated values (.csv, current sheet)". This will download the spreadsheet as a .csv file. Repeat until you have every sheet you need for the editor you wish to run downloaded. After this point, simply move these files to the PokEditor folder and rename them to match the scheme explained above.
33 |
34 | If you did not add new entries (this is usually the case), the program will prompt you to type in a name for the output rom. Be sure to include .nds in the name, or else the file will not have a file extension. If you did add new entries, such as additional personal data files for new pokemon/ forms, the program will instead output a narc file and instructions on how to insert it into the game, as PokEditor is currently unable to rebuild roms when a larger/ smaller narc is recompiled.
35 |
36 | # How to generate spreadsheets containing data you have already edited in another tool
37 |
38 | After using the program to generate the spreadsheet(s), import the .csv files into any spreadsheet editor like Google Sheets or Microsoft Excel. Edit to your heart's content, then export/ download the spreadsheets as a .csv, place them in the same folder as PokEditor.jar, and make the name of the file match the name it originally had, but with "Recompile" appended to the end of the name (ex: personalDataRecompile.csv). You can then either run the program a second time using the same arguments as before, or if you never exited the comand line, simply press enter for the program to continue doing its work.
39 |
40 | If you did not add new entries (this is usually the case), the program will prompt you to type in a name for the output rom. Be sure to include .nds in the name, or else the file will not have a file extension. If you did add new entries, such as additional personal data files for new pokemon/ forms, the program will instead output a narc file and instructions on how to insert it into the game, as PokEditor is currently unable to rebuild roms when a larger/ smaller narc is recompiled.
41 |
--------------------------------------------------------------------------------
/out/.DS_Store:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/turtleisaac/PokEditor-v1/62cc30eac8822b3a0934e878a30117d053eb4b6c/out/.DS_Store
--------------------------------------------------------------------------------
/out/artifacts/.DS_Store:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/turtleisaac/PokEditor-v1/62cc30eac8822b3a0934e878a30117d053eb4b6c/out/artifacts/.DS_Store
--------------------------------------------------------------------------------
/src/.DS_Store:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/turtleisaac/PokEditor-v1/62cc30eac8822b3a0934e878a30117d053eb4b6c/src/.DS_Store
--------------------------------------------------------------------------------
/src/Editor.java:
--------------------------------------------------------------------------------
1 | //import encounters.johto.EncounterEditor;
2 | //import evolutions.gen4.EvolutionEditor;
3 | //import growth.GrowthEditor;
4 | //import learnsets.LearnsetEditor;
5 | //import personal.gen4.PersonalEditor;
6 | //
7 | //import java.io.*;
8 | //
9 | //public class Editor
10 | //{
11 | // public static void main(String[] args) throws IOException
12 | // {
13 | // switch (args[0]) {
14 | // case "personal":
15 | // PersonalEditor personalEditor = new PersonalEditor();
16 | // if (args[1].equals("toCsv")) {
17 | // personalEditor.personalToCSV(args[2]);
18 | // } else if (args[1].equals("toPersonal")) {
19 | // personalEditor.csvToPersonal(args[2], args[3], args[4]);
20 | // } else {
21 | // throw new RuntimeException("Invalid arguments");
22 | // }
23 | // break;
24 | // case "learnsets":
25 | // LearnsetEditor learnsetEditor = new LearnsetEditor();
26 | // if (args[1].equals("toCsv")) {
27 | // learnsetEditor.learnsetToCsv(args[2]);
28 | // } else if (args[1].equals("toLearnsets")) {
29 | // learnsetEditor.csvToLearnsets(args[2], args[3]);
30 | // } else {
31 | // throw new RuntimeException("Invalid arguments");
32 | // }
33 | //
34 | // break;
35 | // case "evolutions":
36 | // EvolutionEditor evolutionEditor = new EvolutionEditor();
37 | // if (args[1].equals("toCsv")) {
38 | // evolutionEditor.evolutionToCsv(args[2], false);
39 | // } else if (args[1].equals("toEvolutions")) {
40 | // evolutionEditor.csvToEvolutions(args[2], args[3]);
41 | // } else {
42 | // throw new RuntimeException("Invalid arguments");
43 | // }
44 | //
45 | // break;
46 | // case "growth":
47 | // GrowthEditor growthEditor = new GrowthEditor();
48 | // if (args[1].equals("toCsv")) {
49 | // growthEditor.growthToCsv(args[2]);
50 | // } else if (args[1].equals("toGrowth")) {
51 | // growthEditor.csvToGrowth(args[2], args[3]);
52 | // } else {
53 | // throw new RuntimeException("Invalid arguments");
54 | // }
55 | //
56 | // break;
57 | // case "encounters":
58 | // EncounterEditor encounterEditor = new EncounterEditor();
59 | // if (args[1].equals("toCsv")) {
60 | // encounterEditor.encountersToCsv(args[2]);
61 | // } else if (args[1].equals("toEncounters")) {
62 | // encounterEditor.csvToEncounters(args[2],args[3]);
63 | // } else {
64 | // throw new RuntimeException("Invalid arguments");
65 | // }
66 | //
67 | // break;
68 | //
69 | //// case "headbutt":
70 | //// Encounters.Johto.HeadbuttEncounterEditor headbuttEditor= new Encounters.Johto.HeadbuttEncounterEditor();
71 | //// if(args[1].equals("toCsv")) {
72 | //// headbuttEditor.headbuttToCsv("a252SS");
73 | //// } else if (args[1].equals("toHeadbutt")) {
74 | //// headbuttEditor.csvToHeadbutt("headbuttEncounters.csv","headbuttEncounters Recompile");
75 | //// } else {
76 | //// throw new RuntimeException("Invalid arguments");
77 | //// }
78 | //// break;
79 | // default:
80 | // throw new RuntimeException("Invalid arguments");
81 | // }
82 | // }
83 | //}
84 |
--------------------------------------------------------------------------------
/src/FimgEntry.java:
--------------------------------------------------------------------------------
1 | public interface FimgEntry
2 | {
3 | int getId();
4 | long getStartingOffset();
5 | long getEndingOffset();
6 | long getGap();
7 | }
8 |
--------------------------------------------------------------------------------
/src/FntbEntry.java:
--------------------------------------------------------------------------------
1 | public interface FntbEntry
2 | {
3 | long getStartingOffset();
4 | long getFirstFileId();
5 | long getParentDir();
6 |
7 |
8 | }
9 |
--------------------------------------------------------------------------------
/src/META-INF/MANIFEST.MF:
--------------------------------------------------------------------------------
1 | Manifest-Version: 1.0
2 | Main-Class: com.turtleisaac.pokeditor.editors.DsRomReader
3 |
4 |
--------------------------------------------------------------------------------
/src/RomData.java:
--------------------------------------------------------------------------------
1 | public interface RomData
2 | {
3 | String getTitle(); //0x00
4 | String getGameCode(); //0x0C
5 | String getMakerCode(); //0x10
6 | int getDeviceCode(); //0x12
7 | int getEncryptionSeed(); //0x13
8 | byte getDeviceCapacity(); //0x14
9 | byte[] getReserved(); //0x15
10 | byte getReserved2(); //0x1C
11 | int getSystemRegion(); //0x1D
12 | int getRomVersion(); //0x1E
13 | int getAutoStartFlag(); //0x1F
14 |
15 | int getArm9Offset(); //0x20
16 | int getArm9EntryAddress(); //0x24
17 | int getArm9LoadAddress(); //0x28
18 | int getArm9Length(); //0x2C
19 |
20 | int getArm7Offset(); //0x30
21 | int getArm7EntryAddress(); //0x34
22 | int getArm7LoadAddress(); //0x38
23 | int getArm7Length(); //0x3C
24 |
25 | int getFntbOffset(); //0x40
26 | int getFntbLength(); //0x44
27 |
28 | int getFatbOffset(); //0x48
29 | int getFatbLength(); //0x4C
30 |
31 | int getArm9OverlayOffset(); //0x50
32 | int getArm9OverlayLength(); //0x54
33 |
34 | int getArm7OverlayOffset(); //0x58
35 | int getArm7OverlayLength(); //0x5C
36 |
37 | int getNormalCardControlRegisterSettings(); //0x60
38 | int getSecureCardControlRegisterSettings(); //0x64
39 |
40 | int getIconBannerOffset(); //0x68
41 | int getSecureAreaCrc(); //0x6C
42 | short getSecureTransferTimeout(); //0x6E
43 | int getArm9Autoload(); //0x70
44 | int getArm7Autoload(); //0x74
45 | byte[] getSecureDisable(); //0x78
46 |
47 | int getRomLength(); //0x80
48 | int getHeaderLength(); //0x84
49 |
50 | byte[] getReserved3(); //0x88
51 | byte[] getReserved4(); //0xB0
52 | byte[] getNintendoLogo(); //0xC0
53 | short getNintendoLogoCrc(); //0x15C
54 | short getHeaderCrc(); //0x15E
55 | int getDebugRomOffset(); //0x160
56 | int getDebugLength(); //0x164
57 | int getDebugRamOffset(); //0x168
58 | int getReserved5(); //0x16C
59 | byte[] getReserved6(); //0x170
60 | }
61 |
--------------------------------------------------------------------------------
/src/Zygarc/GarcSubFile.java:
--------------------------------------------------------------------------------
1 | package Zygarc;
2 |
3 | public interface GarcSubFile
4 | {
5 | long getOtafEntry();
6 |
7 | long getBits();
8 | long getStartingOffset();
9 | long getEndingOffset();
10 | long getLength();
11 | long getTrashBytes();
12 | String getName();
13 | }
14 |
--------------------------------------------------------------------------------
/src/babies/BabyFormEditor.java:
--------------------------------------------------------------------------------
1 | package com.turtleisaac.pokeditor.editors.babies;
2 |
3 | import framework.BinaryWriter;
4 | import framework.Buffer;
5 | import framework.CsvReader;
6 |
7 | import java.io.*;
8 | import java.util.*;
9 |
10 | public class BabyFormEditor
11 | {
12 | public static void main(String[] args) throws IOException
13 | {
14 | BabyFormEditor editor= new BabyFormEditor();
15 | editor.babyFormsToCsv("pms.narc");
16 | }
17 |
18 | private static String path = System.getProperty("user.dir") + File.separator; //creates a new String field containing user.dir and File.separator (/ on Unix systems, \ on Windows)
19 | private String dataPath = path;
20 | private static String resourcePath = path + "Program Files" + File.separator;
21 | private static String[] nameData;
22 |
23 | public BabyFormEditor() throws IOException
24 | {
25 | String entryPath = resourcePath + "EntryData.txt";
26 |
27 | BufferedReader reader = new BufferedReader(new FileReader(entryPath));
28 | ArrayList nameList = new ArrayList<>();
29 | String line;
30 | while ((line = reader.readLine()) != null)
31 | {
32 | nameList.add(line);
33 | }
34 | nameData = nameList.toArray(new String[0]);
35 | reader.close();
36 | }
37 |
38 | public void babyFormsToCsv(String babyFormFile) throws IOException
39 | {
40 | dataPath += babyFormFile;
41 |
42 | File file= new File(dataPath);
43 | Buffer buffer= new Buffer(dataPath);
44 | int numPokemon;
45 |
46 | if(file.length() % 2 != 0)
47 | {
48 | throw new RuntimeException("Invalid baby form table");
49 | }
50 | else
51 | {
52 | numPokemon= (int) (file.length() / 2);
53 | }
54 |
55 | int[] babyForms= new int[numPokemon];
56 |
57 | for(int i= 0; i < numPokemon; i++)
58 | {
59 | babyForms[i]= buffer.readUIntS();
60 | }
61 |
62 | BufferedWriter writer = new BufferedWriter(new FileWriter(path + "babyFormsData.csv"));
63 | writer.write("ID Number,Name,Baby Form\n"); //header in spreadsheet output
64 | String line;
65 | for (int col = 0; col < numPokemon; col++)
66 | {
67 | line = col + "," + nameData[col] + "," + nameData[babyForms[col]];
68 | line += "\n";
69 | writer.write(line);
70 | }
71 | writer.close();
72 | }
73 |
74 |
75 | public void csvToBabyForms(String babyFormsCsv, String outputFile) throws IOException
76 | {
77 | String babyFormsPath = path + babyFormsCsv;
78 | String outputPath;
79 |
80 | if (outputFile.contains("Recompile"))
81 | {
82 | outputPath = path + "temp" + File.separator + outputFile;
83 | } else
84 | {
85 | outputPath = path + outputFile;
86 | }
87 |
88 | if (!new File(outputPath).exists())
89 | {
90 | throw new RuntimeException("Could not create output directory. Check write permissions");
91 | }
92 |
93 | CsvReader csvReader = new CsvReader(babyFormsPath);
94 | BinaryWriter writer= new BinaryWriter(outputPath);
95 | for (int i = 0; i < csvReader.length(); i++)
96 | {
97 | writer.writeShort(getPokemon(csvReader.next()[0]));
98 | }
99 | }
100 |
101 |
102 | private static short getPokemon(String pokemon)
103 | {
104 | for(int i= 0; i < nameData.length; i++)
105 | {
106 | if(pokemon.equalsIgnoreCase(nameData[i]))
107 | {
108 | return (short) i;
109 | }
110 | }
111 | throw new RuntimeException("Invalid pokemon entered: " + pokemon);
112 | }
113 |
114 | }
115 |
--------------------------------------------------------------------------------
/src/babies/SpecialBabyFormData.java:
--------------------------------------------------------------------------------
1 | package com.turtleisaac.pokeditor.editors.babies;
2 |
3 | public interface SpecialBabyFormData
4 | {
5 | int getPokemon();
6 | int getItem();
7 | int getDefault();
8 | }
9 |
--------------------------------------------------------------------------------
/src/babies/SpecialBabyFormEditor.java:
--------------------------------------------------------------------------------
1 | package com.turtleisaac.pokeditor.editors.babies;
2 |
3 | import framework.BinaryWriter;
4 | import framework.Buffer;
5 |
6 | import java.io.BufferedReader;
7 | import java.io.File;
8 | import java.io.FileReader;
9 | import java.io.IOException;
10 | import java.util.ArrayList;
11 | import java.util.Arrays;
12 | import java.util.Comparator;
13 | import java.util.Scanner;
14 |
15 | public class SpecialBabyFormEditor
16 | {
17 | private static String path = System.getProperty("user.dir") + File.separator; //creates a new String field containing user.dir and File.separator (/ on Unix systems, \ on Windows)
18 | private static String resourcePath = path + "Program Files" + File.separator;
19 | private static String[] nameData;
20 | private String gameCode;
21 | private ArrayList dataList;
22 | private int offset;
23 | private Buffer starterBuffer;
24 | private BinaryWriter writer;
25 |
26 | private static final int S_BABIES_PT_E= 0x17a7ec;
27 | private static final int S_BABIES_PT_J= 0x17a7ec;
28 | private static final int S_BABIES_PT_F= 0x17a7ec;
29 | private static final int S_BABIES_PT_G= 0x17a7ec;
30 | private static final int S_BABIES_PT_I= 0x17a7ec;
31 | private static final int S_BABIES_PT_S= 0x17a7ec;
32 | private static final int S_BABIES_PT_K= 0x17a7ec;
33 |
34 | private static final int S_BABIES_DP_E= 0x165a32;
35 | private static final int S_BABIES_DP_J= 0x165a32;
36 | private static final int S_BABIES_DP_F= 0x165a32;
37 | private static final int S_BABIES_DP_G= 0x165a32;
38 | private static final int S_BABIES_DP_I= 0x165a32;
39 | private static final int S_BABIES_DP_S= 0x165a32;
40 | private static final int S_BABIES_DP_K= 0x165a32;
41 |
42 | public SpecialBabyFormEditor(String gameCode) throws IOException
43 | {
44 | this.gameCode = gameCode;
45 | String entryPath = resourcePath + "EntryData.txt";
46 |
47 |
48 | BufferedReader reader = new BufferedReader(new FileReader(entryPath));
49 | ArrayList nameList = new ArrayList<>();
50 | String line;
51 | while ((line = reader.readLine()) != null)
52 | {
53 | nameList.add(line);
54 | }
55 | nameData = nameList.toArray(new String[0]);
56 | reader.close();
57 |
58 | String noRegion= gameCode.substring(0,3).toLowerCase();
59 |
60 | switch (noRegion)
61 | {
62 | case "cpu" :
63 | switch (gameCode.toLowerCase().substring(3))
64 | {
65 | case "e" :
66 | offset= S_BABIES_PT_E;
67 | break;
68 | case "j" :
69 | offset= S_BABIES_PT_J;
70 | break;
71 | case "f" :
72 | offset= S_BABIES_PT_F;
73 | break;
74 | case "g" :
75 | offset= S_BABIES_PT_G;
76 | break;
77 | case "i" :
78 | offset= S_BABIES_PT_I;
79 | break;
80 | case "s" :
81 | offset= S_BABIES_PT_S;
82 | break;
83 | case "k" :
84 | offset= S_BABIES_PT_K;
85 | break;
86 | default:
87 | throw new RuntimeException("Unsupported Region");
88 | }
89 | break;
90 |
91 | case "apa" :
92 | case "ada" :
93 | switch (gameCode.toLowerCase().substring(3))
94 | {
95 | case "e" :
96 | offset= S_BABIES_DP_E;
97 | break;
98 | case "j" :
99 | offset= S_BABIES_DP_J;
100 | break;
101 | case "f" :
102 | offset= S_BABIES_DP_F;
103 | break;
104 | case "g" :
105 | offset= S_BABIES_DP_G;
106 | break;
107 | case "i" :
108 | offset= S_BABIES_DP_I;
109 | break;
110 | case "s" :
111 | offset= S_BABIES_DP_S;
112 | break;
113 | case "k" :
114 | offset= S_BABIES_DP_K;
115 | break;
116 | default:
117 | throw new RuntimeException("Unsupported Region");
118 | }
119 | break;
120 | default:
121 | throw new RuntimeException("This editor can't be used with Gen 5 or HGSS currently.");
122 | }
123 | }
124 |
125 | public void changeSpecialBabies(String babyFile) throws IOException
126 | {
127 | dataList= new ArrayList<>();
128 | Buffer buffer= new Buffer(path + "temp" + File.separator + babyFile);
129 | buffer.skipTo(offset);
130 |
131 | for(int i= 0; i < buffer.getLength() / 3; i++)
132 | {
133 |
134 | }
135 |
136 | }
137 |
138 | private void editSpecialBabies() throws IOException
139 | {
140 | Scanner scanner= new Scanner(System.in);
141 | String ans;
142 | int pokemonId;
143 | int itemId;
144 | int defaultId;
145 |
146 |
147 | }
148 |
149 | private void sort(File arr[])
150 | {
151 | Arrays.sort(arr, Comparator.comparingInt(SpecialBabyFormEditor::fileToInt));
152 | }
153 |
154 | private static int fileToInt(File f)
155 | {
156 | return Integer.parseInt(f.getName().split("\\.")[0]);
157 | }
158 |
159 | private int arrIdx;
160 | private String[] input;
161 |
162 | private void initializeIndex(String[] arr)
163 | {
164 | arrIdx = 0;
165 | input = arr;
166 | }
167 |
168 | private String next()
169 | {
170 | try
171 | {
172 | return input[arrIdx++];
173 | } catch (IndexOutOfBoundsException e)
174 | {
175 | return "";
176 | }
177 | }
178 |
179 | private static int getPokemon(String pokemon)
180 | {
181 | for(int i= 0; i < nameData.length; i++)
182 | {
183 | if(pokemon.equalsIgnoreCase(nameData[i]))
184 | {
185 | return i;
186 | }
187 | }
188 | throw new RuntimeException("Invalid pokemon entered: " + pokemon);
189 | }
190 | }
191 |
--------------------------------------------------------------------------------
/src/encounters/DexAreaData.java:
--------------------------------------------------------------------------------
1 | package encounters;
2 |
3 | import java.util.ArrayList;
4 |
5 | public interface DexAreaData
6 | {
7 | ArrayList getMorningIndoors();
8 | ArrayList getDayIndoors();
9 | ArrayList getNightIndoors();
10 |
11 | ArrayList getMorningOutdoors();
12 | ArrayList getDayOutdoors();
13 | ArrayList getNightOutdoors();
14 |
15 | ArrayList getHeadbuttIndoors();
16 | ArrayList getHeadbuttOutdoors();
17 | }
18 |
--------------------------------------------------------------------------------
/src/encounters/johto/EncounterData.java:
--------------------------------------------------------------------------------
1 | package encounters.johto;
2 |
3 | public interface EncounterData
4 | {
5 | int getFieldRate();
6 | int getSurfRate();
7 | int getSmashRate();
8 | int getOldRate();
9 | int getGoodRate();
10 | int getSuperRate();
11 | short getPadding();
12 | //
13 | byte[] getFieldLevels();
14 | short[] getFieldMorning();
15 | short[] getFieldDay();
16 | short[] getFieldNight();
17 | //
18 | short[] getHoenn();
19 | short[] getSinnoh();
20 | //
21 | byte[] getSurf1MinMax();
22 | short getSurf1();
23 | byte[] getSurf2MinMax();
24 | short getSurf2();
25 | byte[] getSurf3MinMax();
26 | short getSurf3();
27 | byte[] getSurf4MinMax();
28 | short getSurf4();
29 | byte[] getSurf5MinMax();
30 | short getSurf5();
31 | short[] getSurfs();
32 | byte[] getSurfMins();
33 | byte[] getSurfMaxs();
34 | //
35 | short getSmash1();
36 | byte[] getSmash1MinMax();
37 | short getSmash2();
38 | byte[] getSmash2MinMax();
39 | short[] getSmashes();
40 | byte[] getSmashMins();
41 | byte[] getSmashMaxs();
42 | //
43 | byte[] getOld1MinMax();
44 | short getOld1();
45 | byte[] getOld2MinMax();
46 | short getOld2();
47 | byte[] getOld3MinMax();
48 | short getOld3();
49 | byte[] getOld4MinMax();
50 | short getOld4();
51 | byte[] getOld5MinMax();
52 | short getOld5();
53 | short[] getOlds();
54 | byte[] getOldMins();
55 | byte[] getOldMaxs();
56 | //
57 | byte[] getGood1MinMax();
58 | short getGood1();
59 | byte[] getGood2MinMax();
60 | short getGood2();
61 | byte[] getGood3MinMax();
62 | short getGood3();
63 | byte[] getGood4MinMax();
64 | short getGood4();
65 | byte[] getGood5MinMax();
66 | short getGood5();
67 | short[] getGoods();
68 | byte[] getGoodMins();
69 | byte[] getGoodMaxs();
70 | //
71 | byte[] getSuper1MinMax();
72 | short getSuper1();
73 | byte[] getSuper2MinMax();
74 | short getSuper2();
75 | byte[] getSuper3MinMax();
76 | short getSuper3();
77 | byte[] getSuper4MinMax();
78 | short getSuper4();
79 | byte[] getSuper5MinMax();
80 | short getSuper5();
81 | short[] getSupers();
82 | byte[] getSuperMins();
83 | byte[] getSuperMaxs();
84 | //
85 | short getFieldSwarm();
86 | short getSurfSwarm();
87 | short getGoodSwarm();
88 | short getSuperSwarm();
89 | }
90 |
--------------------------------------------------------------------------------
/src/encounters/johto/contest/ContestEncounterData.java:
--------------------------------------------------------------------------------
1 | package encounters.johto.contest;
2 |
3 | public interface ContestEncounterData
4 | {
5 | long[] getPokemon();
6 | short getMinLevels();
7 | short getMaxLevels();
8 | }
9 |
--------------------------------------------------------------------------------
/src/encounters/johto/contest/ContestEncounterEditor.java:
--------------------------------------------------------------------------------
1 | //package encounters.johto.contest;
2 | //
3 | //import framework.BinaryWriter;
4 | //import framework.Buffer;
5 | //import framework.CsvReader;
6 | //
7 | //import java.io.*;
8 | //import java.util.ArrayList;
9 | //
10 | //public class ContestEncounterEditor
11 | //{
12 | // public static void main(String[] args) throws IOException
13 | // {
14 | // ContestEncounterEditor editor= new ContestEncounterEditor();
15 | // editor.babyFormsToCsv("mushi_encount.bin");
16 | // }
17 | //
18 | // private static String path = System.getProperty("user.dir") + File.separator; //creates a new String field containing user.dir and File.separator (/ on Unix systems, \ on Windows)
19 | // private String dataPath = path;
20 | // private static String resourcePath = path + "Program Files" + File.separator;
21 | // private static String[] nameData;
22 | //
23 | // public ContestEncounterEditor() throws IOException
24 | // {
25 | // String entryPath = resourcePath + "EntryData.txt";
26 | //
27 | // BufferedReader reader = new BufferedReader(new FileReader(entryPath));
28 | // ArrayList nameList = new ArrayList<>();
29 | // String line;
30 | // while ((line = reader.readLine()) != null)
31 | // {
32 | // nameList.add(line);
33 | // }
34 | // nameData = nameList.toArray(new String[0]);
35 | // reader.close();
36 | // }
37 | //
38 | // public void babyFormsToCsv(String encounterFile) throws IOException
39 | // {
40 | // dataPath += encounterFile;
41 | //
42 | // File file= new File(dataPath);
43 | // Buffer buffer= new Buffer(dataPath);
44 | //
45 | // for(int i= 0; i < numPokemon; i++)
46 | // {
47 | // babyForms[i]= buffer.readUIntS();
48 | // }
49 | //
50 | // BufferedWriter writer = new BufferedWriter(new FileWriter(path + "babyFormsData.csv"));
51 | // writer.write("ID Number,Name,Baby Form\n"); //header in spreadsheet output
52 | // String line;
53 | // for (int col = 0; col < numPokemon; col++)
54 | // {
55 | // line = col + "," + nameData[col] + "," + nameData[babyForms[col]];
56 | // line += "\n";
57 | // writer.write(line);
58 | // }
59 | // writer.close();
60 | // }
61 | //
62 | //
63 | // public void csvToBabyForms(String babyFormsCsv, String outputFile) throws IOException
64 | // {
65 | // String babyFormsPath = path + babyFormsCsv;
66 | // String outputPath;
67 | //
68 | // if (outputFile.contains("Recompile"))
69 | // {
70 | // outputPath = path + "temp" + File.separator + outputFile;
71 | // } else
72 | // {
73 | // outputPath = path + outputFile;
74 | // }
75 | //
76 | // if (!new File(outputPath).exists())
77 | // {
78 | // throw new RuntimeException("Could not create output directory. Check write permissions");
79 | // }
80 | //
81 | // CsvReader csvReader = new CsvReader(babyFormsPath);
82 | // BinaryWriter writer= new BinaryWriter(outputPath);
83 | // for (int i = 0; i < csvReader.length(); i++)
84 | // {
85 | // writer.writeShort(getPokemon(csvReader.next()[0]));
86 | // }
87 | // }
88 | //
89 | //
90 | // private static short getPokemon(String pokemon)
91 | // {
92 | // for(int i= 0; i < nameData.length; i++)
93 | // {
94 | // if(pokemon.equalsIgnoreCase(nameData[i]))
95 | // {
96 | // return (short) i;
97 | // }
98 | // }
99 | // throw new RuntimeException("Invalid pokemon entered: " + pokemon);
100 | // }
101 | //
102 | //}
103 |
--------------------------------------------------------------------------------
/src/encounters/johto/headbutt/HeadbuttData.java:
--------------------------------------------------------------------------------
1 | package encounters.johto.headbutt;
2 |
3 | import java.util.ArrayList;
4 | //
5 | public interface HeadbuttData
6 | {
7 | int getNumTrees();
8 | int getNumSpecialTrees();
9 | //
10 | short[] getNormalEncounters();
11 | int[] getNormalMins();
12 | int[] getNormalMaxs();
13 | //
14 | short[] getSpecialEncounters();
15 | int[] getSpecialMins();
16 | int[] getSpecialMaxs();
17 | //
18 | ArrayList getNormalCoordinates();
19 | ArrayList getSpecialCoordinates();
20 | }
21 |
--------------------------------------------------------------------------------
/src/encounters/johto/headbutt/TreeCoordinates.java:
--------------------------------------------------------------------------------
1 | package encounters.johto.headbutt;
2 |
3 | public interface TreeCoordinates
4 | {
5 | byte[] getXValues();
6 | }
7 |
--------------------------------------------------------------------------------
/src/encounters/sinnoh/SinnohEncounterData.java:
--------------------------------------------------------------------------------
1 | package encounters.sinnoh;
2 |
3 | public interface SinnohEncounterData
4 | {
5 | int getFieldRate();
6 | int[] getFieldLevels();
7 | int[] getFieldEncounters();
8 |
9 | int[] getSwarmEncounters();
10 | int[] getDayEncounters();
11 | int[] getNightEncounters();
12 |
13 | int[] getRadarEncounters();
14 |
15 | int[] getRuby();
16 | int[] getSapphire();
17 | int[] getEmerald();
18 | int[] getFireRed();
19 | int[] getLeafGreen();
20 |
21 | int getSurfRate();
22 | int[] getSurfMaxs();
23 | int[] getSurfMins();
24 | int[] getSurfEncounters();
25 |
26 | int getOldRate();
27 | int[] getOldMaxs();
28 | int[] getOldMins();
29 | int[] getOldEncounters();
30 |
31 | int getGoodRate();
32 | int[] getGoodMaxs();
33 | int[] getGoodMins();
34 | int[] getGoodEncounters();
35 |
36 | int getSuperRate();
37 | int[] getSuperMaxs();
38 | int[] getSuperMins();
39 | int[] getSuperEncounters();
40 | }
41 |
--------------------------------------------------------------------------------
/src/evolutions/EvolutionData.java:
--------------------------------------------------------------------------------
1 | package evolutions;
2 |
3 | public interface EvolutionData
4 | {
5 | int getNum();
6 |
7 | int[] getEvolutionMethod();
8 | int[] getPadding();
9 | int[] getRequirementNumber();
10 | int[] getEvolvedID();
11 | }
12 |
--------------------------------------------------------------------------------
/src/framework/.DS_Store:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/turtleisaac/PokEditor-v1/62cc30eac8822b3a0934e878a30117d053eb4b6c/src/framework/.DS_Store
--------------------------------------------------------------------------------
/src/framework/BinaryWriter.java:
--------------------------------------------------------------------------------
1 | package framework;
2 |
3 | import java.io.*;
4 |
5 | public class BinaryWriter {
6 |
7 | private final RandomAccessFile raf;
8 | private final byte[] buf = new byte[8];
9 |
10 | public static void writeFile(File file, int... bytes) throws IOException {
11 | BinaryWriter writer = new BinaryWriter(file);
12 | writer.writeBytes(bytes);
13 | writer.close();
14 | }
15 |
16 | public BinaryWriter(File file) throws IOException {
17 | raf = new RandomAccessFile(file, "rw");
18 | raf.setLength(0);
19 | }
20 |
21 | public BinaryWriter(String fileName) throws IOException {
22 | this(new File(fileName));
23 | }
24 |
25 | public void setPosition(long pos) throws IOException {
26 | raf.seek(pos);
27 | }
28 |
29 | public long getPosition() throws IOException {
30 | return raf.getFilePointer();
31 | }
32 |
33 | public void skipBytes(int bytes) throws IOException {
34 | raf.skipBytes(bytes);
35 | }
36 |
37 | public void writeInt(int i) throws IOException {
38 | buf[0] = (byte) (i & 0xff);
39 | buf[1] = (byte) ((i >> 8) & 0xff);
40 | buf[2] = (byte) ((i >> 16) & 0xff);
41 | buf[3] = (byte) ((i >> 24) & 0xff);
42 | raf.write(buf, 0, 4);
43 | }
44 |
45 | public void writeInts(int... i) throws IOException {
46 | for(int in : i) {
47 | writeInt(in);
48 | }
49 | }
50 |
51 | public void writeLong(long i) throws IOException {
52 | buf[0] = (byte) (i & 0xff);
53 | buf[1] = (byte) ((i >> 8) & 0xff);
54 | buf[2] = (byte) ((i >> 16) & 0xff);
55 | buf[3] = (byte) ((i >> 24) & 0xff);
56 | buf[4] = (byte) ((i >> 32) & 0xff);
57 | buf[5] = (byte) ((i >> 40) & 0xff);
58 | buf[6] = (byte) ((i >> 48) & 0xff);
59 | buf[7] = (byte) ((i >> 56) & 0xff);
60 | raf.write(buf, 0, 8);
61 | }
62 |
63 | public void writeShort(short s) throws IOException {
64 | buf[0] = (byte) (s & 0xff);
65 | buf[1] = (byte) ((s >> 8) & 0xff);
66 | raf.write(buf, 0, 2);
67 | }
68 |
69 | public void writeByte(byte b) throws IOException {
70 | raf.write(b);
71 | }
72 |
73 | public void writeBytes(int... bytes) throws IOException {
74 | for (int b : bytes) {
75 | raf.write(b);
76 | }
77 | }
78 |
79 | public void writeShorts(int... shorts) throws IOException {
80 | for (int s : shorts) {
81 | raf.writeShort(s);
82 | }
83 | }
84 |
85 | public void writeShorts(short... shorts) throws IOException {
86 | for (short s : shorts) {
87 | raf.writeShort(s);
88 | }
89 | }
90 |
91 | public void write(byte[] bytes) throws IOException {
92 | raf.write(bytes);
93 | }
94 |
95 | public void write(byte[] bytes, int offset, int length) throws IOException {
96 | raf.write(bytes, offset, length);
97 | }
98 |
99 | public void writeByteNumTimes(byte b, int num) throws IOException {
100 | for(int i= 0; i < num; i++) {
101 | raf.write(b);
102 | }
103 | }
104 |
105 | public void writePadding(int num) throws IOException {
106 | writeByteNumTimes((byte) 0x00,num);
107 | }
108 |
109 | public void close() throws IOException {
110 | raf.close();
111 | }
112 |
113 | public void write(int i) {
114 | }
115 | }
116 |
--------------------------------------------------------------------------------
/src/framework/BitStream.java:
--------------------------------------------------------------------------------
1 | package framework;
2 |
3 | import java.util.Arrays;
4 |
5 | public class BitStream {
6 |
7 | private byte[] bytes;
8 | private int nextBit;
9 |
10 | private static final int DEFAULT_CAPACITY = 1024*Byte.SIZE;
11 | private static final String STRING_ZEROS = "0000000";
12 |
13 | public BitStream() {
14 | this(DEFAULT_CAPACITY);
15 | }
16 |
17 | public BitStream(int initialCapacity) {
18 | nextBit = 0;
19 | if (initialCapacity%Byte.SIZE != 0) {
20 | ++initialCapacity;
21 | }
22 | bytes = new byte[initialCapacity];
23 | }
24 |
25 | public void append(boolean value) {
26 | ensureSize();
27 | if (value) {
28 | bytes[nextBit / Byte.SIZE] |= 1 << (nextBit % Byte.SIZE);
29 | }
30 | ++nextBit;
31 | }
32 |
33 | public void append(byte b) {
34 | for (int i=0; i max)
44 | {
45 | System.out.println("mooo");
46 | }
47 | return ret <= max ? ret : alt;
48 | }
49 |
50 | public short readSelectiveShort(int max, short alt)
51 | {
52 | short ret= readShort();
53 | if(ret > max)
54 | {
55 | System.out.println("mooo");
56 | }
57 | return ret <= max ? ret : alt;
58 | }
59 |
60 | public int readSelectiveByte(int max, int alt)
61 | {
62 | int ret= readByte();
63 | if(ret > max)
64 | {
65 | System.out.println("mooo");
66 | }
67 | return ret <= max ? ret : alt;
68 | }
69 |
70 | public long readUIntI() {
71 | return (long)readInt() & 0xffffffffL;
72 | }
73 | public int readUIntS() { return (int)readShort() & 0xffff; }
74 |
75 |
76 | public long readLong() {
77 | require(8);
78 |
79 | long ret = readByte();
80 | ret |= readByte() << 8;
81 | ret |= readByte() << 16;
82 | ret |= readByte() << 24;
83 | ret |= (long)readByte() << 32;
84 | ret |= (long)readByte() << 40;
85 | ret |= (long)readByte() << 48;
86 | ret |= (long)readByte() << 56;
87 |
88 | return ret;
89 | }
90 |
91 | public short readShort() {
92 | require(2);
93 |
94 | int ret = readByte() | (readByte() << 8);
95 |
96 | return (short)ret;
97 | }
98 |
99 | public short[] readShorts(int size) {
100 | short[] ret= new short[size];
101 | for(int i= 0; i < size; i++){
102 | ret[i]= readShort();
103 | }
104 | return ret;
105 | }
106 |
107 | public String readString(int size) {
108 | require(size);
109 | String ret = new String(bytes, position, size);
110 | position += size;
111 | truePosition+= size;
112 | return ret;
113 | }
114 |
115 | public byte[] readBytes(int size) {
116 |
117 | byte[] ret = new byte[size];
118 | int offset = 0;
119 | while (size > 0) {
120 | int toRead = Math.min(size, bytes.length);
121 | require(toRead);
122 | System.arraycopy(bytes, position, ret, offset, toRead);
123 | position += toRead;
124 | offset += toRead;
125 | truePosition+= toRead;
126 | size -= toRead;
127 | }
128 |
129 | return ret;
130 | }
131 | public int readByte() {
132 | require(1);
133 | truePosition++;
134 | return bytes[position++] & 0xff;
135 | }
136 |
137 | public short readUShortB()
138 | {
139 | return (short) ((short)readByte() & 0xff);
140 | }
141 |
142 | public int getPosition()
143 | {
144 | return truePosition;
145 | }
146 |
147 | private void require(int size) {
148 | if (limit - position < size) {
149 | refill();
150 | if (limit - position < size) {
151 | throw new RuntimeException("Want "+size+" bytes but only "+limit+" bytes remain. Current position: " + truePosition);
152 | }
153 | }
154 | }
155 |
156 | private void refill() {
157 | int remaining = limit - position;
158 | System.arraycopy(bytes, position, bytes, 0, remaining);
159 | position = 0;
160 | limit = remaining;
161 |
162 | int free = bytes.length - remaining;
163 | int read = 0;
164 | try {
165 | read = in.read(bytes, remaining, free);
166 | } catch (IOException e) {
167 | throw new RuntimeException(e);
168 | }
169 | if (read == -1) {
170 | endOfFile = true;
171 | }
172 | else
173 | {
174 | limit += read;
175 | }
176 | }
177 |
178 | public void close() throws IOException
179 | {
180 | in.close();
181 | }
182 |
183 | public String getFile()
184 | {
185 | return file;
186 | }
187 |
188 | public boolean endOfFile() {
189 | return endOfFile;
190 | }
191 |
192 | public void skipBytes(int bytes) {
193 | byte[] throwAway= readBytes(bytes);
194 | }
195 |
196 | public void skipTo(int offset)
197 | {
198 | if(offset < truePosition) {
199 | throw new RuntimeException("Already beyond this offset");
200 | }
201 | byte[] throwAway= readBytes(offset-truePosition);
202 | }
203 |
204 | public byte[] readRemainder() {
205 | return readBytes((int)(new File(file).length()-truePosition));
206 | }
207 |
208 | public int getLength()
209 | {
210 | return (int) new File(file).length();
211 | }
212 | }
213 |
--------------------------------------------------------------------------------
/src/framework/BufferTest.java:
--------------------------------------------------------------------------------
1 | package framework;
2 |
3 | import java.io.File;
4 | import java.util.Random;
5 |
6 | class BufferTest {
7 |
8 | public static void main(String[] args) {
9 |
10 | String name = System.getProperty("user.dir") + File.separator + "SoulSilver.nds";
11 | Buffer buffer1 = new Buffer(name);
12 | Buffer buffer2 = new Buffer(name);
13 |
14 | byte[] arr1 = new byte[1024*1024*10];
15 | byte[] arr2 = new byte[1024*1024*10];
16 |
17 | for (int i=0; i fileLines= new ArrayList<>();
29 | BufferedReader reader= new BufferedReader(new FileReader(filePath));
30 | String line;
31 | while((line= reader.readLine()) != null)
32 | {
33 | fileLines.add(line);
34 | }
35 | reader.close();
36 | for(; firstY != 0; firstY--)
37 | {
38 | fileLines.remove(0);
39 | }
40 |
41 |
42 | String[][] fileData= new String[fileLines.size()][];
43 | int x;
44 | for(int i= 0; i < fileLines.size(); i++)
45 | {
46 | x= firstX;
47 | String thisLine= fileLines.get(i);
48 | for(; x != 0; x--)
49 | {
50 | thisLine= thisLine.substring(thisLine.indexOf(",")+1);
51 | }
52 | thisLine= thisLine.replaceAll("×","x");
53 | fileData[i]= thisLine.split(",");
54 | }
55 | return fileData;
56 | }
57 |
58 | public String[] next()
59 | {
60 | if(line == in.length)
61 | {
62 | return null;
63 | }
64 | else
65 | {
66 | return in[line++];
67 | }
68 | }
69 |
70 | public int length()
71 | {
72 | return in.length;
73 | }
74 |
75 | public void skipLine() {
76 | next();
77 | }
78 |
79 | public String[][] getCsv()
80 | {
81 | return in;
82 | }
83 |
84 | public void print()
85 | {
86 | for(String[] arr : in)
87 | {
88 | System.out.println(Arrays.toString(arr));
89 | }
90 | }
91 | }
92 |
--------------------------------------------------------------------------------
/src/framework/InterfaceFiller.java:
--------------------------------------------------------------------------------
1 | package framework;
2 |
3 | import java.io.*;
4 | import java.util.ArrayList;
5 |
6 | public class InterfaceFiller
7 | {
8 | public static void main(String[] args) throws IOException {
9 | InterfaceFiller interfaceFiller= new InterfaceFiller(new File(System.getProperty("user.dir") + File.separator + "src" + File.separator + "HeadbuttData.java"));
10 | }
11 |
12 | private String path= System.getProperty("user.dir") + File.separator;
13 |
14 | public InterfaceFiller(File file) throws IOException
15 | {
16 | ArrayList variables= new ArrayList<>();
17 | ArrayList types= new ArrayList<>();
18 | ArrayList methodCalls= new ArrayList<>();
19 | ArrayList lines= new ArrayList<>();
20 | BufferedReader reader= new BufferedReader(new FileReader(file));
21 | String line;
22 |
23 | // for (Method method : Encounters.Johto.EncounterData.class.getMethods()) {
24 | // System.out.println(method.getName()+" "+method.getReturnType());
25 | // }
26 |
27 | while((line= reader.readLine()) != null)
28 | {
29 | if(!line.equals("//") && !line.equals("{") && !line.equals("}") && !line.contains("public") && !line.contains("import"))
30 | {
31 | line= line.substring(4);
32 | lines.add(line.substring(0,line.length()-1));
33 | //System.out.println(line);
34 | String[] thisLine= line.split(" ");
35 | String varType= thisLine[0];
36 | String modified= thisLine[1].substring(3,4).toLowerCase() + thisLine[1].substring(4,thisLine[1].length()-3);
37 | // String modified= thisLine[1].substring(0,thisLine[1].length()-3);
38 | types.add(varType);
39 | variables.add(modified);
40 |
41 | if(varType.contains("ArrayList"))
42 | {
43 | methodCalls.add("FIX THIS MANUALLY");
44 | }
45 | if(varType.equals("int"))
46 | {
47 | methodCalls.add("buffer.readByte()");
48 | }
49 | if(varType.equals("byte[]"))
50 | {
51 | methodCalls.add("buffer.readBytes()");
52 | }
53 | if(varType.equals("short"))
54 | {
55 | methodCalls.add("buffer.readShort()");
56 | }
57 | if(varType.equals("short[]"))
58 | {
59 | methodCalls.add("buffer.readShorts()");
60 | }
61 | if(varType.equals("String"))
62 | {
63 | methodCalls.add("buffer.readString()");
64 | }
65 | }
66 | }
67 | reader.close();
68 |
69 | BufferedWriter writer= new BufferedWriter(new FileWriter(new File(path + "interfaceFiller.txt")));
70 | for(int i= 0; i < variables.size(); i++)
71 | {
72 | writer.write(types.get(i) + " " + variables.get(i) + "= " + methodCalls.get(i) + ";\n");
73 | }
74 |
75 | writer.write("\ndataList.add(new " + file.getName().substring(0,file.getName().length()-5) + "() {\n");
76 | for(int i= 0; i < variables.size(); i++)
77 | {
78 | writer.write("@Override\n");
79 | writer.write("public " + lines.get(i) + " { return " + variables.get(i) + "; }\n\n");
80 | }
81 | writer.write("});");
82 | writer.close();
83 | }
84 | }
85 |
--------------------------------------------------------------------------------
/src/framework/MemBuf.java:
--------------------------------------------------------------------------------
1 | package framework;
2 |
3 | import java.io.IOException;
4 | import java.util.Arrays;
5 |
6 | public class MemBuf {
7 |
8 | private byte[] buf;
9 | private int capacity;
10 | private int readPos;
11 | private int writePos;
12 | private MemBufReader reader;
13 | private MemBufWriter writer;
14 |
15 | private static final int INITIAL_SIZE = 1024*1024;
16 |
17 | public static MemBuf create() {
18 | return new MemBuf();
19 | }
20 |
21 | public MemBuf() {
22 | this.buf = new byte[INITIAL_SIZE];
23 | this.capacity = INITIAL_SIZE;
24 | reader = new MemBufReader();
25 | writer = new MemBufWriter();
26 | }
27 |
28 | public MemBufReader reader() {
29 | return reader;
30 | }
31 |
32 | public MemBufWriter writer() {
33 | return writer;
34 | }
35 |
36 | public class MemBufReader {
37 |
38 | private void require(int space) {
39 | if (writePos - readPos < space) {
40 | throw new IllegalStateException("Not enough room to read. need "+space+" bytes, have"+(writePos-readPos));
41 | }
42 | }
43 |
44 | public int getPosition() {
45 | return readPos;
46 | }
47 |
48 | public void setPosition(int pos) {
49 | readPos = pos;
50 | }
51 |
52 | public byte[] getBuffer() {
53 | byte[] ret = new byte[writePos-readPos];
54 | System.arraycopy(buf, readPos, ret, 0, writePos-readPos);
55 | return ret;
56 | }
57 |
58 | public int readByte() {
59 | require(1);
60 | return buf[readPos++];
61 | }
62 |
63 | public int readInt() {
64 | require(4);
65 | int ret = readByte();
66 | ret |= readByte() << 8;
67 | ret |= readByte() << 16;
68 | ret |= readByte() << 24;
69 | return ret;
70 | }
71 |
72 | public short readShort() {
73 | require(2);
74 | int ret = readByte() | (readByte() << 8);
75 | return (short)ret;
76 | }
77 |
78 | public String readString(int size) {
79 | require(size);
80 | String ret = new String(buf, readPos, size);
81 | readPos += size;
82 | return ret;
83 | }
84 |
85 | public byte[] readBytes(int size) {
86 | require(size);
87 | byte[] ret = new byte[size];
88 | System.arraycopy(buf, readPos, ret, 0, size);
89 | return ret;
90 | }
91 |
92 | }
93 |
94 |
95 | public class MemBufWriter {
96 |
97 | private void require(int space) {
98 | if (capacity - writePos < space) {
99 | int newSize = Math.max(writePos+space, capacity + INITIAL_SIZE);
100 | buf = Arrays.copyOf(buf, newSize);
101 | capacity = buf.length;
102 | }
103 | }
104 |
105 | public int getPosition() {
106 | return writePos;
107 | }
108 |
109 | public void setPosition(int pos) {
110 | writePos = pos;
111 | }
112 |
113 | public void skip(int n) {
114 | writePos += n;
115 | }
116 |
117 | public MemBufWriter writeInt(int i) throws IOException {
118 | require(4);
119 | buf[writePos++] = (byte) (i & 0xff);
120 | buf[writePos++] = (byte) ((i >> 8) & 0xff);
121 | buf[writePos++] = (byte) ((i >> 16) & 0xff);
122 | buf[writePos++] = (byte) ((i >> 24) & 0xff);
123 | return this;
124 | }
125 |
126 | public MemBufWriter writeShort(short s) throws IOException {
127 | require(2);
128 | buf[writePos++] = (byte) (s & 0xff);
129 | buf[writePos++] = (byte) ((s >> 8) & 0xff);
130 | return this;
131 | }
132 |
133 | public MemBufWriter writeByte(byte b) throws IOException {
134 | require(1);
135 | buf[writePos++] = b;
136 | return this;
137 | }
138 |
139 | public MemBufWriter writeBytes(int... bytes) throws IOException {
140 | require(bytes.length);
141 | for (int b : bytes) {
142 | buf[writePos++] = (byte)b;
143 | }
144 | return this;
145 | }
146 |
147 | public MemBufWriter write(byte[] bytes) throws IOException {
148 | require(bytes.length);
149 | for (byte b : bytes) {
150 | buf[writePos++] = b;
151 | }
152 | return this;
153 | }
154 |
155 | public MemBufWriter write(byte[] bytes, int offset, int length) throws IOException {
156 | require(length);
157 | for (int i=offset; length > 0; offset++,length--) {
158 | buf[writePos++] = bytes[i];
159 | }
160 | return this;
161 | }
162 |
163 | }
164 |
165 | }
166 |
--------------------------------------------------------------------------------
/src/growth/GrowthEditor.java:
--------------------------------------------------------------------------------
1 | package growth;
2 |
3 | import framework.BinaryWriter;
4 | import framework.Buffer;
5 | import framework.CsvReader;
6 |
7 | import java.io.*;
8 | import java.util.*;
9 |
10 | public class GrowthEditor
11 | {
12 | private static String path= System.getProperty("user.dir") + File.separator; //creates a new String field containing user.dir and File.separator (/ on Unix systems, \ on Windows)
13 | private String dataPath= path;
14 | private static final String[] typeArr= {"Normal", "Fighting", "Flying", "Poison", "Ground", "Rock", "Bug", "Ghost", "Steel", "Fairy", "Fire", "Water","Grass","Electric","Psychic","Ice","Dragon","Dark"};
15 | private static final String[] evolutionMethodArr= {"None","Happiness","Happiness (Day)","Happiness (Night)","Level Up","Trade","Trade (Item)","Use Item","Level (Attack > Defense)","Level (Attack = Defense)","Level (Attack < Defense)","Level (PID > 5)","Level (PID < 5)","Level (1 of 2)","Level (2 of 2)","Max Beauty","Use Item (Male)","Use Item (Female)","Use Item (Day)","Use Item (Night)","Attack Known","Pokemon in Party","Level (Male)","Level (Female)","Level (Mt. Coronet)","Level (Eterna Forest)","Level (Route 217)"};
16 | private static final String[] growthTableIdArr= {"Medium Fast","Erratic","Fluctuating","Medium Slow","Fast","Slow","Medium Fast","Medium Fast"};
17 | private static String resourcePath= path + "Program Files" + File.separator;
18 | private static String[] nameData;
19 |
20 | public GrowthEditor() throws IOException
21 | {
22 | BufferedReader reader= new BufferedReader(new FileReader(resourcePath + "EntryData.txt"));
23 | ArrayList nameList= new ArrayList<>();
24 | String line;
25 | while((line= reader.readLine()) != null)
26 | {
27 | line= line.trim();
28 | nameList.add(line);
29 | }
30 | nameData= nameList.toArray(new String[0]);
31 | reader.close();
32 | }
33 |
34 | public void growthToCsv(String growthDir) throws IOException
35 | {
36 | dataPath+= growthDir;
37 |
38 | Buffer buffer;
39 | ArrayList dataList= new ArrayList<>();
40 |
41 | List fileList = new ArrayList<>(Arrays.asList(Objects.requireNonNull(new File(dataPath).listFiles()))); //creates a List of File objects representing every file in specified parameter directory
42 | fileList.removeIf(File::isHidden); //removes all File objects from List that are hidden
43 |
44 | File[] files = fileList.toArray(new File[0]); //creates an array of File objects using the contents of the modified List
45 | sort(files); //sorts files numerically (0.bin, 1.bin, 2.bin, etc...)
46 |
47 | for (File file : files)
48 | {
49 | long[] entry = new long[101];
50 | buffer = new Buffer(file.toString());
51 | for (int x = 0; x < entry.length; x++)
52 | {
53 | entry[x]= buffer.readUIntI();
54 | }
55 | buffer.close();
56 | dataList.add(entry);
57 | }
58 |
59 | BufferedWriter writer= new BufferedWriter(new FileWriter(path + "growthTable.csv"));
60 | writer.write("ID Number,Growth Type,");
61 | for(int i= 0; i < 101; i++)
62 | {
63 | writer.write("Level " + i + ",");
64 | }
65 | writer.write("\n");
66 |
67 | for(int row= 0; row < dataList.size(); row++)
68 | {
69 | writer.write(row + "," + growthTableIdArr[row] + ",");
70 | long[] thisRow= dataList.get(row);
71 | for(int col= 0; col < thisRow.length; col++)
72 | {
73 | writer.write(thisRow[col] + ",");
74 | }
75 | writer.write("\n");
76 | }
77 | writer.close();
78 | }
79 |
80 | public void csvToGrowth(String growthCsv, String outputDir) throws IOException
81 | {
82 | String outputPath;
83 | if(outputDir.contains("Recompile"))
84 | {
85 | outputPath= path + "temp" + File.separator+ outputDir + File.separator;
86 | }
87 | else
88 | {
89 | outputPath= path + File.separator + outputDir + File.separator;
90 | }
91 |
92 | String growthPath= path + growthCsv;
93 | CsvReader csvReader= new CsvReader(growthPath);
94 | BinaryWriter writer;
95 |
96 | for(int i= 0; i < csvReader.length(); i++)
97 | {
98 | initializeIndex(csvReader.next());
99 | writer= new BinaryWriter(outputPath + i + ".bin");
100 | for(int x= 0; x < input.length; x++)
101 | {
102 | writer.writeInt((int)Long.parseLong(next()));
103 | }
104 |
105 | }
106 |
107 | }
108 |
109 |
110 | private void sort (File arr[])
111 | {
112 | Arrays.sort(arr, Comparator.comparingInt(GrowthEditor::fileToInt));
113 | }
114 |
115 | private static int fileToInt (File f)
116 | {
117 | return Integer.parseInt(f.getName().split("\\.")[0]);
118 | }
119 |
120 | private int arrIdx;
121 | private String[] input;
122 |
123 | private void initializeIndex(String[] arr)
124 | {
125 | arrIdx= 0;
126 | input= arr;
127 | }
128 |
129 | private String next()
130 | {
131 | try
132 | {
133 | return input[arrIdx++];
134 | }
135 | catch (IndexOutOfBoundsException e)
136 | {
137 | return "";
138 | }
139 | }
140 | }
141 |
--------------------------------------------------------------------------------
/src/intro/IntroEditorGen4.java:
--------------------------------------------------------------------------------
1 | package intro;
2 |
3 | import framework.BinaryWriter;
4 | import framework.Buffer;
5 |
6 | import java.io.BufferedReader;
7 | import java.io.File;
8 | import java.io.FileReader;
9 | import java.io.IOException;
10 | import java.util.ArrayList;
11 | import java.util.Arrays;
12 | import java.util.Comparator;
13 | import java.util.Scanner;
14 |
15 | public class IntroEditorGen4
16 | {
17 | private static String path = System.getProperty("user.dir") + File.separator; //creates a new String field containing user.dir and File.separator (/ on Unix systems, \ on Windows)
18 | private static String resourcePath = path + "Program Files" + File.separator;
19 | private static String[] nameData;
20 | private String gameCode;
21 | Buffer introBuffer;
22 | BinaryWriter writer;
23 |
24 | public IntroEditorGen4(String gameCode) throws IOException
25 | {
26 | this.gameCode = gameCode;
27 |
28 | String entryPath = resourcePath + "EntryData.txt";
29 |
30 |
31 | BufferedReader reader = new BufferedReader(new FileReader(entryPath));
32 | ArrayList nameList = new ArrayList<>();
33 | String line;
34 | while ((line = reader.readLine()) != null)
35 | {
36 | nameList.add(line);
37 | }
38 | nameData = nameList.toArray(new String[0]);
39 | reader.close();
40 | }
41 |
42 | public void changeIntroPokemon(String introFile) throws IOException
43 | {
44 | introBuffer= new Buffer(introFile);
45 | writer= new BinaryWriter(introFile + "Recompile");
46 | int[] offsets;
47 |
48 | String noRegion= gameCode.substring(0,3).toLowerCase();
49 | switch (noRegion)
50 | {
51 | case "cpu": //Platinum
52 | if(gameCode.substring(3).equalsIgnoreCase("j"))
53 | {
54 | offsets= new int[] {0x1bac};
55 | } else
56 | {
57 | offsets= new int[] {0xf54,0x1588};
58 | }
59 | editIntroData(offsets);
60 | break;
61 |
62 | case "apa": //Pearl
63 | case "ada"://Diamond
64 | if(gameCode.substring(3).equalsIgnoreCase("j"))
65 | {
66 | offsets =new int[] {0x30};
67 | } else
68 | {
69 | offsets= new int[] {0xf0c,0x1430};
70 | }
71 | editIntroData(offsets);
72 | break;
73 |
74 | default:
75 | throw new RuntimeException("This editor can't be used with Gen 5 or HGSS currently.");
76 | }
77 | }
78 |
79 | private void editIntroData(int[] offsets) throws IOException
80 | {
81 | Scanner scanner= new Scanner(System.in);
82 | String ans;
83 | int pokemonId;
84 |
85 | for(int x= 0; x < offsets.length; x++)
86 | {
87 | int offset= offsets[x] - introBuffer.getPosition();
88 | writer.write(introBuffer.readBytes(offset));
89 | pokemonId= introBuffer.readInt();
90 | if(x == 0)
91 | {
92 | System.out.println("The intro cutscene Pokemon sprite is currently: " + nameData[pokemonId] + ". Do you want to change it? (y/N)\n");
93 | }
94 | else
95 | {
96 | System.out.println("The intro cutscene Pokemon cry is currently: " + nameData[pokemonId] + ". Do you want to change it? (y/N)\n");
97 | }
98 |
99 | ans= scanner.nextLine();
100 | System.out.println("\n");
101 |
102 | if(ans.equalsIgnoreCase("y"))
103 | {
104 | System.out.println("Please enter the name of the Pokemon you wish to replace it with\n");
105 | pokemonId= getPokemon(scanner.nextLine());
106 | System.out.println("\nIntro Pokemon has been replaced with " + nameData[pokemonId] + "\n");
107 | }
108 | else if (x == 0)
109 | {
110 | break;
111 | }
112 | writer.writeInt(pokemonId);
113 | }
114 | writer.write(introBuffer.readRemainder());
115 | }
116 |
117 | private void sort(File arr[])
118 | {
119 | Arrays.sort(arr, Comparator.comparingInt(IntroEditorGen4::fileToInt));
120 | }
121 |
122 | private static int fileToInt(File f)
123 | {
124 | return Integer.parseInt(f.getName().split("\\.")[0]);
125 | }
126 |
127 | private int arrIdx;
128 | private String[] input;
129 |
130 | private void initializeIndex(String[] arr)
131 | {
132 | arrIdx = 0;
133 | input = arr;
134 | }
135 |
136 | private String next()
137 | {
138 | try
139 | {
140 | return input[arrIdx++];
141 | } catch (IndexOutOfBoundsException e)
142 | {
143 | return "";
144 | }
145 | }
146 |
147 | private static int getPokemon(String pokemon)
148 | {
149 | for(int i= 0; i < nameData.length; i++)
150 | {
151 | if(pokemon.equalsIgnoreCase(nameData[i]))
152 | {
153 | return i;
154 | }
155 | }
156 | throw new RuntimeException("Invalid pokemon entered: " + pokemon);
157 | }
158 | }
159 |
--------------------------------------------------------------------------------
/src/items/ItemData.java:
--------------------------------------------------------------------------------
1 | package items;
2 |
3 | public interface ItemData
4 | {
5 | int getPrice();
6 | short getEffect();
7 | short getPower();
8 | short getPluck();
9 | short getFlingEffect();
10 | short getFlingPower();
11 | short getNaturalPower();
12 |
13 | byte getNaturalType();
14 | boolean getDiscardUnable();
15 | boolean getAbleRegister();
16 | byte getFieldPocketNumber();
17 | byte getBattlePocketNumber();
18 |
19 | short getFieldFunction();
20 | short getBattleFunction();
21 | short getWorkType();
22 |
23 | boolean getSlpRecovery();
24 | boolean getPsnRecovery();
25 | boolean getBrnRecovery();
26 | boolean getFrzRecovery();
27 | boolean getPrlzRecovery();
28 | boolean getCnfsRecovery();
29 | boolean getAttractRecovery();
30 | boolean getAbilityGuard();
31 |
32 | boolean getRevive();
33 | boolean getReviveAll();
34 | boolean getLevelUp();
35 | boolean getEvolution();
36 | byte getAtkUp();
37 |
38 | byte getDefUp();
39 | byte getSpAtkUp();
40 |
41 | byte getSpDefUp();
42 | byte getSpeedUp();
43 |
44 | byte getAccuracyUp();
45 | byte getCritUp();
46 | boolean getPpUp();
47 | boolean getPpUp3();
48 |
49 | boolean getPpRecovery();
50 | boolean getPpFullRecovery();
51 | boolean getHpRecovery();
52 | boolean getHpEv();
53 | boolean getAtkEv();
54 | boolean getDefEv();
55 | boolean getSpeedEv();
56 | boolean getSpAtkEv();
57 |
58 | boolean getSpDefEv();
59 | boolean getFriendExp1();
60 | boolean getFriendExp2();
61 | boolean getFriendExp3();
62 |
63 | byte getHpEvChange();
64 | byte getAtkEvChange();
65 | byte getDefEvChange();
66 | byte getSpeedEvChange();
67 | byte getSpAtkEvChange();
68 | byte getSpDefEvChange();
69 | short getHpRecoveryAmount();
70 | short getPpRecoveryAmount();
71 | byte getFriendExpChange1();
72 | byte getFriendExpChange2();
73 | byte getFriendExpChange3();
74 | }
75 |
--------------------------------------------------------------------------------
/src/learnsets/LearnsetData.java:
--------------------------------------------------------------------------------
1 | package learnsets;
2 |
3 | public interface LearnsetData
4 | {
5 | int getNum();
6 | int getlength();
7 |
8 | short[] getMoves();
9 | }
10 |
--------------------------------------------------------------------------------
/src/learnsets/MoveLearnsetData.java:
--------------------------------------------------------------------------------
1 | package learnsets;
2 |
3 | public interface MoveLearnsetData
4 | {
5 | int getID();
6 | int getLevel();
7 | }
8 |
--------------------------------------------------------------------------------
/src/moves/gen4/MoveDataGen4.java:
--------------------------------------------------------------------------------
1 | package moves.gen4;
2 |
3 | public interface MoveDataGen4
4 | {
5 | int getEffect();
6 | short getCategory();
7 | short getPower();
8 |
9 | short getType();
10 | short getAccuracy();
11 | short getPp();
12 | short getAdditionalEffect();
13 |
14 | int getRange();
15 | byte getPriority();
16 | short getFlag();
17 |
18 | short getContestEffect();
19 | short getContestType();
20 | }
21 |
--------------------------------------------------------------------------------
/src/moves/gen5/MoveDataGen5.java:
--------------------------------------------------------------------------------
1 | package moves.gen5;
2 |
3 | public interface MoveDataGen5
4 | {
5 | short getType();
6 | short getEffectCategory();
7 | short getCategory();
8 | short getPower();
9 |
10 | short getAccuracy();
11 | short getPp();
12 | short getPriority();
13 | short getMinHits();
14 | short getMaxHits();
15 |
16 | int getResultEffect();
17 | short getEffectChance();
18 | short getStatus();
19 | short getMinTurns();
20 | short getMaxTurns();
21 |
22 | short getCrit();
23 | short getFlinch();
24 | int getEffect();
25 | short getRecoil();
26 | short getHealing();
27 | short getTarget();
28 |
29 | short getStat1();
30 | short getStat2();
31 | short getStat3();
32 |
33 | short getMagnitude1();
34 | short getMagnitude2();
35 | short getMagnitude3();
36 |
37 | short getStatChance1();
38 | short getStatChance2();
39 | short getStatChance3();
40 | int getFlag();
41 |
42 | boolean getContact();
43 | boolean getChargingTurn();
44 | boolean getRechargeTurn();
45 | boolean getBlockedProtect();
46 | boolean getMagicCoat();
47 | boolean getSnatch();
48 | boolean getMirrorMove();
49 | boolean getPunchingMove();
50 | boolean getSoundMove();
51 | boolean getGravity();
52 | boolean getMeltTarget();
53 | boolean getNonAdjacent();
54 | boolean getHealingMove();
55 | boolean getSubstituteHit();
56 | }
57 |
--------------------------------------------------------------------------------
/src/narctowl/NarcSubFile.java:
--------------------------------------------------------------------------------
1 | package narctowl;
2 |
3 | public interface NarcSubFile
4 | {
5 | int getStartingOffset();
6 | int getEndingOffset();
7 | int getTrashBytes();
8 | String getName();
9 | }
10 |
--------------------------------------------------------------------------------
/src/narctowl/TableSubFile.java:
--------------------------------------------------------------------------------
1 | package narctowl;
2 |
3 | public interface TableSubFile
4 | {
5 | int getStartingOffset();
6 | int getEndingOffset();
7 | byte[] getFileContents();
8 | int length();
9 |
10 | }
11 |
--------------------------------------------------------------------------------
/src/opening/OpeningEditorGen4.java:
--------------------------------------------------------------------------------
1 | package opening;
2 |
3 | import framework.BinaryWriter;
4 | import framework.Buffer;
5 |
6 | import java.io.BufferedReader;
7 | import java.io.File;
8 | import java.io.FileReader;
9 | import java.io.IOException;
10 | import java.util.ArrayList;
11 | import java.util.Arrays;
12 | import java.util.Comparator;
13 | import java.util.Scanner;
14 |
15 | public class OpeningEditorGen4
16 | {
17 | private static String path = System.getProperty("user.dir") + File.separator; //creates a new String field containing user.dir and File.separator (/ on Unix systems, \ on Windows)
18 | private static String resourcePath = path + "Program Files" + File.separator;
19 | private static String[] nameData;
20 | private String gameCode;
21 | private Buffer starterBuffer;
22 | private BinaryWriter writer;
23 |
24 | public OpeningEditorGen4(String gameCode) throws IOException
25 | {
26 | this.gameCode = gameCode;
27 |
28 | String entryPath = resourcePath + "EntryData.txt";
29 |
30 |
31 | BufferedReader reader = new BufferedReader(new FileReader(entryPath));
32 | ArrayList nameList = new ArrayList<>();
33 | String line;
34 | while ((line = reader.readLine()) != null)
35 | {
36 | nameList.add(line);
37 | }
38 | nameData = nameList.toArray(new String[0]);
39 | reader.close();
40 | }
41 |
42 | public void changeOpening(String openingFile) throws IOException
43 | {
44 | starterBuffer= new Buffer(openingFile);
45 | writer= new BinaryWriter(openingFile + "Recompile");
46 | int offset;
47 |
48 | String noRegion= gameCode.substring(0,3).toLowerCase();
49 | switch (noRegion)
50 | {
51 | case "cpu": //Platinum
52 | if(gameCode.substring(3).equalsIgnoreCase("j"))
53 | {
54 | offset = 0x6bb4;
55 | } else
56 | {
57 | offset = 0x6bb4;
58 | }
59 | editOpeningData(offset);
60 | break;
61 |
62 | case "apa": //Pearl
63 | case "ada"://Diamond
64 | if(gameCode.substring(3).equalsIgnoreCase("j"))
65 | {
66 | offset = 0x49ec;
67 | } else
68 | {
69 | offset = 0x49ec;
70 | }
71 | editOpeningData(offset);
72 | break;
73 |
74 | default:
75 | throw new RuntimeException("This editor can't be used with Gen 5 or HGSS currently.");
76 | }
77 | }
78 |
79 | private void editOpeningData(int offset) throws IOException
80 | {
81 | Scanner scanner= new Scanner(System.in);
82 | String ans;
83 | int pokemonId;
84 |
85 | writer.write(starterBuffer.readBytes(offset));
86 | for(int i= 0; i < 3; i++)
87 | {
88 | pokemonId= starterBuffer.readInt();
89 | System.out.println("Opening Cutscene Pokemon " + (i + 1) + " is currently: " + nameData[pokemonId] + ". Do you want to change it? (y/N)\n");
90 | ans= scanner.nextLine();
91 | System.out.println("\n");
92 |
93 | if(ans.equalsIgnoreCase("y"))
94 | {
95 | System.out.println("Please enter the name of the Pokemon you wish to replace it with\n");
96 | pokemonId= getPokemon(scanner.nextLine());
97 | System.out.println("\nPokemon has been replaced with " + nameData[pokemonId] + "\n");
98 | }
99 | writer.writeInt(pokemonId);
100 | }
101 | writer.write(starterBuffer.readRemainder());
102 | writer.close();
103 | }
104 |
105 | private void sort(File arr[])
106 | {
107 | Arrays.sort(arr, Comparator.comparingInt(OpeningEditorGen4::fileToInt));
108 | }
109 |
110 | private static int fileToInt(File f)
111 | {
112 | return Integer.parseInt(f.getName().split("\\.")[0]);
113 | }
114 |
115 | private int arrIdx;
116 | private String[] input;
117 |
118 | private void initializeIndex(String[] arr)
119 | {
120 | arrIdx = 0;
121 | input = arr;
122 | }
123 |
124 | private String next()
125 | {
126 | try
127 | {
128 | return input[arrIdx++];
129 | } catch (IndexOutOfBoundsException e)
130 | {
131 | return "";
132 | }
133 | }
134 |
135 | private static int getPokemon(String pokemon)
136 | {
137 | for(int i= 0; i < nameData.length; i++)
138 | {
139 | if(pokemon.equalsIgnoreCase(nameData[i]))
140 | {
141 | return i;
142 | }
143 | }
144 | throw new RuntimeException("Invalid pokemon entered: " + pokemon);
145 | }
146 | }
147 |
--------------------------------------------------------------------------------
/src/overlays/OverlayData.java:
--------------------------------------------------------------------------------
1 | package overlays;
2 |
3 | public interface OverlayData
4 | {
5 | long getOverlayId();
6 |
7 | long getRamAddress();
8 | long getRamSize();
9 |
10 | long getBssSize();
11 | long getStaticInitStart();
12 | long getStaticInitEnd();
13 | long getFileId();
14 | int getReserved();
15 |
16 | }
17 |
--------------------------------------------------------------------------------
/src/personal/gen4/PersonalData.java:
--------------------------------------------------------------------------------
1 | package personal.gen4;
2 |
3 | public interface PersonalData
4 | {
5 | int getNum();
6 | int getHP();
7 | int getAtk();
8 | int getDef();
9 | int getSpe();
10 | int getSpAtk();
11 | int getSpDef();
12 | int getType1();
13 | int getType2();
14 | int getCatchRate();
15 | int getBaseExp();
16 |
17 | int getHpEv();
18 | int getSpeEv();
19 | int getAtkEv();
20 | int getDefEv();
21 | int getSpAtkEv();
22 | int getSpDefEv();
23 | int getPadding();
24 |
25 | int getUncommonItem();
26 | int getRareItem();
27 | int getGenderRatio();
28 | int getHatchMultiplier();
29 | int getBaseHappiness();
30 | int getExpRate();
31 | int getEggGroup1();
32 | int getEggGroup2();
33 | int getAbility1();
34 | int getAbility2();
35 | int getRunChance();
36 | int getDexColor();
37 |
38 | boolean getTm(int idx);
39 | }
40 |
--------------------------------------------------------------------------------
/src/personal/gen5/Gen5PersonalData.java:
--------------------------------------------------------------------------------
1 | package personal.gen5;
2 |
3 | public interface Gen5PersonalData
4 | {
5 | int getNum();
6 | int getHP();
7 | int getAtk();
8 | int getDef();
9 | int getSpe();
10 | int getSpAtk();
11 | int getSpDef();
12 | int getType1();
13 | int getType2();
14 | int getCatchRate();
15 | int getStage();
16 |
17 | int getHpEv();
18 | int getSpeEv();
19 | int getAtkEv();
20 | int getDefEv();
21 | int getSpAtkEv();
22 | int getSpDefEv();
23 | int getPadding();
24 |
25 | int getItem1();
26 | int getItem2();
27 | int getItem3();
28 | int getGenderRatio();
29 | int getHatchMultiplier();
30 | int getBaseHappiness();
31 | int getExpRate();
32 | int getEggGroup1();
33 | int getEggGroup2();
34 | int getAbility1();
35 | int getAbility2();
36 | int getAbility3();
37 | int getRunChance();
38 | int getFormID();
39 | int getForm();
40 | int getNumForms();
41 | int getDexColor();
42 | int getBaseExp();
43 | int getHeight();
44 | int getWeight();
45 |
46 | boolean getTm(int idx);
47 | }
48 |
--------------------------------------------------------------------------------
/src/personal/gen6/PersonalDataGen6.java:
--------------------------------------------------------------------------------
1 | package personal.gen6;
2 |
3 | public interface PersonalDataGen6
4 | {
5 | int getNum();
6 | int getHP();
7 | int getAtk();
8 | int getDef();
9 | int getSpe();
10 | int getSpAtk();
11 | int getSpDef();
12 | int getType1();
13 | int getType2();
14 | int getCatchRate();
15 | int getStage();
16 |
17 | int getHpEv();
18 | int getSpeEv();
19 | int getAtkEv();
20 | int getDefEv();
21 | int getSpAtkEv();
22 | int getSpDefEv();
23 | int getPadding();
24 |
25 | int getItem1();
26 | int getItem2();
27 | int getItem3();
28 | int getGenderRatio();
29 | int getHatchMultiplier();
30 | int getBaseHappiness();
31 | int getExpRate();
32 | int getEggGroup1();
33 | int getEggGroup2();
34 | int getAbility1();
35 | int getAbility2();
36 | int getAbility3();
37 |
38 | int getFormID();
39 | int getFormSprite();
40 | int getNumForms();
41 |
42 | int getDexColor();
43 | int getBaseExp();
44 | int getHeight();
45 | int getWeight();
46 |
47 | boolean getTm(int idx);
48 | }
49 |
--------------------------------------------------------------------------------
/src/pokemart/MartData.java:
--------------------------------------------------------------------------------
1 | package pokemart;
2 |
3 | public interface MartData
4 | {
5 | int test();
6 | }
7 |
--------------------------------------------------------------------------------
/src/pokemart/MartEditor.java:
--------------------------------------------------------------------------------
1 | package pokemart;
2 |
3 | import framework.BinaryWriter;
4 | import framework.Buffer;
5 | import framework.CsvReader;
6 |
7 | import java.io.*;
8 | import java.util.*;
9 |
10 | public class MartEditor
11 | {
12 | private static String path = System.getProperty("user.dir") + File.separator; //creates a new String field containing user.dir and File.separator (/ on Unix systems, \ on Windows)
13 | private String dataPath = path;
14 | private static String resourcePath = path + "Program Files" + File.separator;
15 | private static final String[] typeArr = {"Normal", "Fighting", "Flying", "Poison", "Ground", "Rock", "Bug", "Ghost", "Steel", "Fire", "Water", "Grass", "Electric", "Psychic", "Ice", "Dragon", "Dark", "Fairy"};
16 | private static final String[] categories = {"Physical", "Special", "Status"};
17 | private static final String[] statusArr = {"None", "Sleep", "Poison", "Burn", "Freeze", "Paralysis", "Confusion", "Infatuation"};
18 | private static String[] nameData;
19 | private static String[] moveData;
20 | private static String[] effects;
21 | private static String[] flags;
22 | private static String[] targets;
23 |
24 | public MartEditor() throws IOException
25 | {
26 | String entryPath = resourcePath + "EntryData.txt";
27 | String movePath = resourcePath + "MoveList.txt";
28 |
29 |
30 | BufferedReader reader = new BufferedReader(new FileReader(entryPath));
31 | ArrayList nameList = new ArrayList<>();
32 | String line;
33 | while ((line = reader.readLine()) != null) {
34 | nameList.add(line);
35 | }
36 | nameData = nameList.toArray(new String[0]);
37 | reader.close();
38 |
39 | reader = new BufferedReader(new FileReader(movePath));
40 | ArrayList moveList = new ArrayList<>();
41 |
42 | while ((line = reader.readLine()) != null) {
43 | moveList.add(line);
44 | }
45 | moveData = moveList.toArray(new String[0]);
46 | reader.close();
47 |
48 | reader = new BufferedReader(new FileReader(resourcePath + "Effects.txt"));
49 | ArrayList effectList = new ArrayList<>();
50 | while ((line = reader.readLine()) != null) {
51 | effectList.add(line);
52 | }
53 | effects = effectList.toArray(new String[0]);
54 | reader.close();
55 |
56 |
57 | flags = new String[500];
58 | for (int i = 0; i < flags.length; i++) {
59 | flags[i] = "" + i;
60 | }
61 |
62 | targets = new String[0x81];
63 | targets[0] = "One opponent";
64 | targets[1] = "Automatic";
65 | targets[2] = "Random";
66 | targets[4] = "Both opponents";
67 | targets[8] = "Both opponents and ally";
68 | targets[16] = "User";
69 | targets[32] = "User's side of field";
70 | targets[64] = "Entire field";
71 | targets[128] = "Opponent's side of field";
72 | }
73 |
74 | public void martToCsv(String martDir) throws IOException {
75 | dataPath += martDir;
76 |
77 | Buffer buffer;
78 | ArrayList dataList = new ArrayList<>();
79 |
80 | List fileList = new ArrayList<>(Arrays.asList(Objects.requireNonNull(new File(dataPath).listFiles()))); //creates a List of File objects representing every file in specified parameter directory
81 | fileList.removeIf(File::isHidden); //removes all File objects from List that are hidden
82 |
83 | File[] files = fileList.toArray(new File[0]); //creates an array of File objects using the contents of the modified List
84 | sort(files); //sorts files numerically (0.bin, 1.bin, 2.bin, etc...)
85 |
86 | for (File file : files)
87 | {
88 | buffer = new Buffer(file.toString());
89 |
90 | dataList.add(new MartData() {
91 | @Override
92 | public int test() {
93 | return 0;
94 | }
95 | });
96 | }
97 |
98 |
99 | // BufferedWriter writer = new BufferedWriter(new FileWriter(path + "martData.csv"));
100 | // writer.write("ID Number,Name,\n"); //header in spreadsheet output
101 | // String line;
102 | // for (int row = 0; row < dataList.size(); row++) {
103 | // line = row + "," + martData[row] + ",";
104 | // for (int col = 0; col < martTable[0].length; col++) {
105 | // line += martTable[row][col] + ",";
106 | // }
107 | // line += "\n";
108 | // writer.write(line);
109 | // }
110 | // writer.close();
111 | }
112 |
113 |
114 | public void csvToMart(String martCsv, String outputDir) throws IOException {
115 | String martPath = path + martCsv;
116 | String outputPath;
117 |
118 | if (outputDir.contains("Recompile")) {
119 | outputPath = path + "temp" + File.separator + outputDir;
120 | } else {
121 | outputPath = path + File.separator + outputDir;
122 | }
123 |
124 | if (!new File(outputPath).exists() && !new File(outputPath).mkdir()) {
125 | throw new RuntimeException("Could not create output directory. Check write permissions");
126 | }
127 | outputPath += File.separator;
128 |
129 | CsvReader csvReader = new CsvReader(martPath);
130 | BinaryWriter writer;
131 | for (int i = 0; i < csvReader.length(); i++) {
132 | initializeIndex(csvReader.next());
133 | writer = new BinaryWriter(outputPath + i + ".bin");
134 |
135 | writer.close();
136 | }
137 |
138 | }
139 |
140 | private void sort(File arr[]) {
141 | Arrays.sort(arr, Comparator.comparingInt(MartEditor::fileToInt));
142 | }
143 |
144 | private static int fileToInt(File f) {
145 | return Integer.parseInt(f.getName().split("\\.")[0]);
146 | }
147 |
148 | private int arrIdx;
149 | private String[] input;
150 |
151 | private void initializeIndex(String[] arr) {
152 | arrIdx = 0;
153 | input = arr;
154 | }
155 |
156 | private String next() {
157 | try {
158 | return input[arrIdx++];
159 | } catch (IndexOutOfBoundsException e) {
160 | return "";
161 | }
162 | }
163 |
164 | private static byte getType(String type) {
165 | for (int i = 0; i < typeArr.length; i++) {
166 | if (type.equals(typeArr[i])) {
167 | return (byte) i;
168 | }
169 | }
170 |
171 | throw new RuntimeException("Invalid type entered: " + type);
172 | }
173 |
174 | private static int getMove(String move) {
175 | for (int i = 0; i < moveData.length; i++) {
176 | if (move.equals(moveData[i])) {
177 | return i;
178 | }
179 | }
180 | throw new RuntimeException("Invalid move entered: " + move);
181 | }
182 |
183 | private static short getEffect(String effect) {
184 | for (int i = 0; i < effects.length; i++) {
185 | if (effect.equals(effects[i])) {
186 | return (short) i;
187 | }
188 | }
189 | throw new RuntimeException("Invalid effect entered: " + effect);
190 | }
191 |
192 | private static byte getCategory(String category) {
193 | for (int i = 0; i < categories.length; i++) {
194 | if (category.equals(categories[i])) {
195 | return (byte) i;
196 | }
197 | }
198 | throw new RuntimeException("Invalid category entered: " + category);
199 | }
200 |
201 | private static short getTargets(String target) {
202 | for (int i = 0; i < targets.length; i++) {
203 | if (target.equals(targets[i])) {
204 | return (byte) i;
205 | }
206 | }
207 | throw new RuntimeException("Invalid target(s) entered: " + target);
208 | }
209 |
210 |
211 | }
212 |
--------------------------------------------------------------------------------
/src/randomizer/FileRandomizer.java:
--------------------------------------------------------------------------------
1 | package randomizer;
2 |
3 | import framework.BinaryWriter;
4 | import framework.Buffer;
5 |
6 | import java.io.*;
7 | import java.util.*;
8 |
9 | public class FileRandomizer implements Serializable
10 | {
11 | public static void main(String[] args) throws IOException
12 | {
13 | FileRandomizer randomizer= new FileRandomizer("CPUE",false);
14 | randomizer.randomizeCompletely("temp" + File.separator + "com/turtleisaac/pokeditor/editors/personal");
15 | // randomizer.randomize(Objects.requireNonNull(new File("temp" + File.separator + "personal").listFiles()).length);
16 | }
17 |
18 | private static String path= System.getProperty("user.dir") + File.separator; //creates a new String field containing user.dir and File.separator (/ on Unix systems, \ on Windows)
19 | private String dataPath = path;
20 | private String gameCode;
21 | private boolean gen4;
22 | private static String[] nameData;
23 | private boolean names;
24 | private int[] arr;
25 | private List fileList;
26 | private File[] files;
27 |
28 |
29 |
30 |
31 | public FileRandomizer(String gameCode, boolean names) throws IOException
32 | {
33 | this.gameCode= gameCode;
34 | this.names= names;
35 |
36 | String entryFile;
37 |
38 | String noRegion= gameCode.substring(0,3).toLowerCase();
39 | switch (noRegion)
40 | {
41 | case "cpu": //Platinum
42 | case "apa": //Pearl
43 | case "ada": //Diamond
44 | case "ipk": //HeartGold
45 | case "ipg": //SoulSilver
46 | gen4= true;
47 | entryFile= "EntryData.txt";
48 | break;
49 |
50 | case "irb" : //Black
51 | case "irw" : //White
52 | gen4= false;
53 | entryFile= "EntryDataGen5-1.txt";
54 | break;
55 |
56 | case "ird" : //White2
57 | case "ire" : //Black2
58 | gen4= false;
59 | entryFile= "EntryDataGen5-2.txt";
60 | break;
61 |
62 | default:
63 | throw new RuntimeException("Invalid game code");
64 | }
65 |
66 |
67 | BufferedReader reader= new BufferedReader(new FileReader(path + "Program Files" + File.separator + entryFile));
68 | ArrayList nameList= new ArrayList<>();
69 | String line;
70 | while((line= reader.readLine()) != null)
71 | {
72 | line= line.trim();
73 | nameList.add(line);
74 | }
75 | nameData= nameList.toArray(new String[0]);
76 | reader.close();
77 | }
78 |
79 | public void randomizeCompletely(String dir) throws IOException
80 | {
81 | dataPath+= dir;
82 | fileList = new ArrayList<>(Arrays.asList(Objects.requireNonNull(new File(dataPath).listFiles()))); //creates a List of File objects representing every file in specified parameter directory
83 | fileList.removeIf(File::isHidden); //removes all File objects from List that are hidden
84 |
85 | files = fileList.toArray(new File[0]); //creates an array of File objects using the contents of the modified List
86 | sort(files); //sorts files numerically (0.bin, 1.bin, 2.bin, etc...)
87 |
88 | arr= generateOrder(files.length);
89 | printOrder(arr);
90 |
91 | BinaryWriter writer;
92 | Buffer buffer;
93 | if(!new File(dataPath + "Recompile").mkdir() && !new File(dataPath + "Recompile").exists())
94 | {
95 | throw new RuntimeException("Check write perms");
96 | }
97 |
98 | for(int i= 0; i < arr.length; i++)
99 | {
100 | buffer= new Buffer(files[arr[i]].toString());
101 | writer= new BinaryWriter(dataPath + "Recompile" + File.separator + files[arr[i]].getName());
102 | writer.write(buffer.readRemainder());
103 | buffer.close();
104 | writer.close();
105 | }
106 | }
107 |
108 | public void randomizeWithSet(String dir) throws IOException, ClassNotFoundException
109 | {
110 | dataPath+= dir;
111 | fileList = new ArrayList<>(Arrays.asList(Objects.requireNonNull(new File(dataPath).listFiles()))); //creates a List of File objects representing every file in specified parameter directory
112 | fileList.removeIf(File::isHidden); //removes all File objects from List that are hidden
113 |
114 | files = fileList.toArray(new File[0]); //creates an array of File objects using the contents of the modified List
115 | sort(files); //sorts files numerically (0.bin, 1.bin, 2.bin, etc...)
116 |
117 | if(new File(path + "temp" + File.separator + "random.ser").exists())
118 | {
119 | FileInputStream fileIn= new FileInputStream(path + "temp" + File.separator + "random.ser");
120 | ObjectInputStream objIn= new ObjectInputStream(fileIn);
121 |
122 | arr= (int[]) objIn.readObject();
123 | if(arr.length != files.length)
124 | {
125 | throw new RuntimeException("The narc that you are trying to randomize contains an amount of files that does not match the amount in the existing randomized set");
126 | }
127 | printOrder(arr);
128 |
129 | BinaryWriter writer;
130 | Buffer buffer;
131 | if(!new File(dataPath + "Recompile").mkdir() && !new File(dataPath + "Recompile").exists())
132 | {
133 | throw new RuntimeException("Check write perms");
134 | }
135 |
136 | for(int i= 0; i < arr.length; i++)
137 | {
138 | buffer= new Buffer(files[arr[i]].toString());
139 | writer= new BinaryWriter(dataPath + "Recompile" + File.separator + i + ".bin");
140 | writer.write(buffer.readRemainder());
141 | buffer.close();
142 | writer.close();
143 | }
144 | }
145 | else
146 | {
147 | throw new RuntimeException("A random order has not been generated yet");
148 | }
149 | }
150 |
151 | public void createOrder(int numFiles) throws IOException
152 | {
153 | if(!new File(path + "temp").mkdir() && !new File(path + "temp").exists())
154 | {
155 | throw new RuntimeException("Check write perms");
156 | }
157 |
158 | arr= generateOrder(numFiles);
159 | FileOutputStream fileOut= new FileOutputStream(path + "temp" + File.separator + "random.ser");
160 | ObjectOutputStream objOut= new ObjectOutputStream(fileOut);
161 | objOut.writeObject(arr);
162 | }
163 |
164 | public void randomizeNums(int numEntries)
165 | {
166 | int[] arr= generateOrder(numEntries);
167 | printOrder(arr);
168 | }
169 |
170 |
171 |
172 | private int[] generateOrder(int numFiles)
173 | {
174 | int[] randomArr= new int[numFiles];
175 | randomArr[0]= 0;
176 |
177 | for(int i= 1; i < numFiles; i++)
178 | {
179 | int num;
180 | while(true)
181 | {
182 | if(gen4 && (i == 494 || i == 495))
183 | {
184 | num= i;
185 | }
186 | else if(i >= 650 && i <= 684)
187 | {
188 | num= i;
189 | }
190 | else
191 | {
192 | do
193 | {
194 | num = (int) (Math.random() * numFiles);
195 | } while (num == 494 || num == 495 || (num >= 650 && num <= 684));
196 | }
197 |
198 | if(!contains(randomArr,num))
199 | {
200 | randomArr[i]= num;
201 | break;
202 | }
203 | }
204 | }
205 |
206 | return randomArr;
207 | }
208 |
209 | private void sort(File arr[])
210 | {
211 | Arrays.sort(arr, Comparator.comparingInt(FileRandomizer::fileToInt));
212 | }
213 |
214 | private static int fileToInt(File f)
215 | {
216 | return Integer.parseInt(f.getName().split("\\.")[0]);
217 | }
218 |
219 | private boolean contains(int[] arr, int val)
220 | {
221 | for(int num : arr)
222 | {
223 | if(num == val)
224 | {
225 | return true;
226 | }
227 | }
228 | return false;
229 | }
230 |
231 | private void arrChecker(int[] arr)
232 | {
233 | for(int i= 0; i < arr.length; i++)
234 | {
235 | if(!contains(arr, i))
236 | {
237 | throw new RuntimeException("Invalid set: missing value (" + i + ")");
238 | }
239 | }
240 |
241 | for (int i = 0; i < arr.length - 1; i++)
242 | {
243 | for(int x= 1; x < arr.length; x++)
244 | {
245 | if(arr[i] == arr[x] && i != x)
246 | {
247 | System.err.println("Invalid set: value at index " + i + " (" + arr[i] + ")" + " is equal to value at index " + x + " (" + arr[x] + ")");
248 | }
249 | }
250 | }
251 | }
252 |
253 | private void printOrder(int[] arr)
254 | {
255 | arrChecker(arr);
256 | System.out.println("Generating random list of " + arr.length + " entries\n");
257 | for(int i= 0; i < arr.length; i++)
258 | {
259 | if(names)
260 | System.out.println(nameData[arr[i]]);
261 | else
262 | System.out.println(arr[i]);
263 | }
264 | }
265 |
266 |
267 | }
268 |
--------------------------------------------------------------------------------
/src/scripts/gen4/ScriptEditorGen4.java:
--------------------------------------------------------------------------------
1 | package scripts.gen4;
2 |
3 | import framework.*;
4 | import java.io.*;
5 | import java.util.*;
6 |
7 | public class ScriptEditorGen4
8 | {
9 | private static String path = System.getProperty("user.dir") + File.separator; //creates a new String field containing user.dir and File.separator (/ on Unix systems, \ on Windows)
10 | private String dataPath = path;
11 | private static String resourcePath = path + "Program Files" + File.separator;
12 | private static final String[] typeArr = {"Normal", "Fighting", "Flying", "Poison", "Ground", "Rock", "Bug", "Ghost", "Steel", "Fire", "Water", "Grass", "Electric", "Psychic", "Ice", "Dragon", "Dark", "Fairy"};
13 | private static final String[] categories = {"Physical", "Special", "Status"};
14 | private static final String[] statusArr = {"None", "Sleep", "Poison", "Burn", "Freeze", "Paralysis", "Confusion", "Infatuation"};
15 | private static String[] nameData;
16 | private static String[] moveData;
17 | private static String[] effects;
18 | private static String[] flags;
19 | private static String[] targets;
20 |
21 | public ScriptEditorGen4() throws IOException {
22 | String entryPath = resourcePath + "EntryData.txt";
23 | String movePath = resourcePath + "MoveList.txt";
24 |
25 |
26 | BufferedReader reader = new BufferedReader(new FileReader(entryPath));
27 | ArrayList nameList = new ArrayList<>();
28 | String line;
29 | while ((line = reader.readLine()) != null) {
30 | nameList.add(line);
31 | }
32 | nameData = nameList.toArray(new String[0]);
33 | reader.close();
34 |
35 | reader = new BufferedReader(new FileReader(movePath));
36 | ArrayList moveList = new ArrayList<>();
37 |
38 | while ((line = reader.readLine()) != null) {
39 | moveList.add(line);
40 | }
41 | moveData = moveList.toArray(new String[0]);
42 | reader.close();
43 |
44 | reader = new BufferedReader(new FileReader(resourcePath + "Effects.txt"));
45 | ArrayList effectList = new ArrayList<>();
46 | while ((line = reader.readLine()) != null) {
47 | effectList.add(line);
48 | }
49 | effects = effectList.toArray(new String[0]);
50 | reader.close();
51 |
52 |
53 | flags = new String[500];
54 | for (int i = 0; i < flags.length; i++) {
55 | flags[i] = "" + i;
56 | }
57 |
58 | targets = new String[0x81];
59 | targets[0] = "One opponent";
60 | targets[1] = "Automatic";
61 | targets[2] = "Random";
62 | targets[4] = "Both opponents";
63 | targets[8] = "Both opponents and ally";
64 | targets[16] = "User";
65 | targets[32] = "User's side of field";
66 | targets[64] = "Entire field";
67 | targets[128] = "Opponent's side of field";
68 | }
69 |
70 | public void scriptsToCsv(String scriptsDir) throws IOException {
71 | dataPath += scriptsDir;
72 |
73 | Buffer buffer;
74 | ArrayList dataList = new ArrayList<>();
75 |
76 | List fileList = new ArrayList<>(Arrays.asList(Objects.requireNonNull(new File(dataPath).listFiles()))); //creates a List of File objects representing every file in specified parameter directory
77 | fileList.removeIf(File::isHidden); //removes all File objects from List that are hidden
78 |
79 | File[] files = fileList.toArray(new File[0]); //creates an array of File objects using the contents of the modified List
80 | sort(files); //sorts files numerically (0.bin, 1.bin, 2.bin, etc...)
81 |
82 | // for (File file : files) {
83 | // buffer = new Buffer(file.toString());
84 | //
85 | // dataList.add(new scriptData()
86 | // }
87 |
88 | //
89 | // BufferedWriter writer = new BufferedWriter(new FileWriter(path + "scriptsData.csv"));
90 | // writer.write("ID Number,Name,\n"); //header in spreadsheet output
91 | // String line;
92 | // for (int row = 0; row < dataList.size(); row++) {
93 | // line = row + "," + scriptsData[row] + ",";
94 | // for (int col = 0; col < scriptsTable[0].length; col++) {
95 | // line += scriptsTable[row][col] + ",";
96 | // }
97 | // line += "\n";
98 | // writer.write(line);
99 | // }
100 | // writer.close();
101 | }
102 |
103 |
104 | public void csvTo(String scriptsCsv, String outputDir) throws IOException {
105 | String scriptsPath = path + scriptsCsv;
106 | String outputPath;
107 |
108 | if (outputDir.contains("Recompile")) {
109 | outputPath = path + "temp" + File.separator + outputDir;
110 | } else {
111 | outputPath = path + File.separator + outputDir;
112 | }
113 |
114 | if (!new File(outputPath).exists() && !new File(outputPath).mkdir()) {
115 | throw new RuntimeException("Could not create output directory. Check write permissions");
116 | }
117 | outputPath += File.separator;
118 |
119 | CsvReader csvReader = new CsvReader(scriptsPath);
120 | BinaryWriter writer;
121 | for (int i = 0; i < csvReader.length(); i++) {
122 | initializeIndex(csvReader.next());
123 | writer = new BinaryWriter(outputPath + i + ".bin");
124 |
125 | writer.close();
126 | }
127 |
128 | }
129 |
130 | private void sort(File arr[]) {
131 | Arrays.sort(arr, Comparator.comparingInt(ScriptEditorGen4::fileToInt));
132 | }
133 |
134 | private static int fileToInt(File f) {
135 | return Integer.parseInt(f.getName().split("\\.")[0]);
136 | }
137 |
138 | private int arrIdx;
139 | private String[] input;
140 |
141 | private void initializeIndex(String[] arr) {
142 | arrIdx = 0;
143 | input = arr;
144 | }
145 |
146 | private String next() {
147 | try {
148 | return input[arrIdx++];
149 | } catch (IndexOutOfBoundsException e) {
150 | return "";
151 | }
152 | }
153 |
154 | private static byte getType(String type) {
155 | for (int i = 0; i < typeArr.length; i++) {
156 | if (type.equals(typeArr[i])) {
157 | return (byte) i;
158 | }
159 | }
160 |
161 | throw new RuntimeException("Invalid type entered: " + type);
162 | }
163 |
164 | private static int getMove(String move) {
165 | for (int i = 0; i < moveData.length; i++) {
166 | if (move.equals(moveData[i])) {
167 | return i;
168 | }
169 | }
170 | throw new RuntimeException("Invalid move entered: " + move);
171 | }
172 |
173 | private static short getEffect(String effect) {
174 | for (int i = 0; i < effects.length; i++) {
175 | if (effect.equals(effects[i])) {
176 | return (short) i;
177 | }
178 | }
179 | throw new RuntimeException("Invalid effect entered: " + effect);
180 | }
181 |
182 | private static byte getCategory(String category) {
183 | for (int i = 0; i < categories.length; i++) {
184 | if (category.equals(categories[i])) {
185 | return (byte) i;
186 | }
187 | }
188 | throw new RuntimeException("Invalid category entered: " + category);
189 | }
190 |
191 | private static short getTargets(String target) {
192 | for (int i = 0; i < targets.length; i++) {
193 | if (target.equals(targets[i])) {
194 | return (byte) i;
195 | }
196 | }
197 | throw new RuntimeException("Invalid target(s) entered: " + target);
198 | }
199 |
200 |
201 | }
202 |
--------------------------------------------------------------------------------
/src/scripts/gen4/scriptData.java:
--------------------------------------------------------------------------------
1 | package scripts.gen4;
2 |
3 | public interface scriptData {
4 | }
5 |
--------------------------------------------------------------------------------
/src/starters/gen4/StarterEditorGen4.java:
--------------------------------------------------------------------------------
1 | package starters.gen4;
2 |
3 | import framework.BinaryWriter;
4 | import framework.Buffer;
5 |
6 | import java.io.*;
7 | import java.util.*;
8 |
9 | public class StarterEditorGen4
10 | {
11 | private static String path = System.getProperty("user.dir") + File.separator; //creates a new String field containing user.dir and File.separator (/ on Unix systems, \ on Windows)
12 | private static String resourcePath = path + "Program Files" + File.separator;
13 | private static String[] nameData;
14 | private String gameCode;
15 | Buffer starterBuffer;
16 | BinaryWriter writer;
17 |
18 | public StarterEditorGen4(String gameCode) throws IOException
19 | {
20 | this.gameCode = gameCode;
21 |
22 | String entryPath = resourcePath + "EntryData.txt";
23 |
24 |
25 | BufferedReader reader = new BufferedReader(new FileReader(entryPath));
26 | ArrayList nameList = new ArrayList<>();
27 | String line;
28 | while ((line = reader.readLine()) != null)
29 | {
30 | nameList.add(line);
31 | }
32 | nameData = nameList.toArray(new String[0]);
33 | reader.close();
34 | }
35 |
36 | public void changeStarters(String startersFile) throws IOException
37 | {
38 | starterBuffer= new Buffer(startersFile);
39 | writer= new BinaryWriter(startersFile + "Recompile");
40 | int offset;
41 |
42 | String noRegion= gameCode.substring(0,3).toLowerCase();
43 | switch (noRegion)
44 | {
45 | case "cpu": //Platinum
46 | if(gameCode.substring(3).equalsIgnoreCase("j"))
47 | {
48 | offset = 0x1bac;
49 | } else
50 | {
51 | offset = 0x1bc0;
52 | }
53 | editStarterData(offset);
54 | break;
55 |
56 | case "apa": //Pearl
57 | case "ada"://Diamond
58 | if(gameCode.substring(3).equalsIgnoreCase("j"))
59 | {
60 | offset = 0x30;
61 | } else
62 | {
63 | offset = 0x1b88;
64 | }
65 | editStarterData(offset);
66 | break;
67 |
68 | default:
69 | throw new RuntimeException("This editor can't be used with Gen 5 or HGSS currently.");
70 | }
71 | }
72 |
73 | private void editStarterData(int offset) throws IOException
74 | {
75 | Scanner scanner= new Scanner(System.in);
76 | String ans;
77 | int pokemonId;
78 | BinaryWriter starterWriter= new BinaryWriter(path + "temp" + File.separator + "starters.bin");
79 |
80 | writer.write(starterBuffer.readBytes(offset));
81 | for(int i= 0; i < 3; i++)
82 | {
83 | pokemonId= starterBuffer.readInt();
84 | System.out.println("Starter " + (i + 1) + " is currently: " + nameData[pokemonId] + ". Do you want to change it? (y/N)\n");
85 | ans= scanner.nextLine();
86 | System.out.println("\n");
87 |
88 | if(ans.equalsIgnoreCase("y"))
89 | {
90 | System.out.println("Please enter the name of the Pokemon you wish to replace it with\n");
91 | pokemonId= getPokemon(scanner.nextLine());
92 | System.out.println("\nStarter has been replaced with " + nameData[pokemonId] + "\n");
93 | }
94 | writer.writeInt(pokemonId);
95 | starterWriter.writeShort((short)pokemonId);
96 | }
97 | writer.write(starterBuffer.readRemainder());
98 | starterWriter.close();
99 | writer.close();
100 | }
101 |
102 | private void sort(File arr[])
103 | {
104 | Arrays.sort(arr, Comparator.comparingInt(StarterEditorGen4::fileToInt));
105 | }
106 |
107 | private static int fileToInt(File f)
108 | {
109 | return Integer.parseInt(f.getName().split("\\.")[0]);
110 | }
111 |
112 | private int arrIdx;
113 | private String[] input;
114 |
115 | private void initializeIndex(String[] arr)
116 | {
117 | arrIdx = 0;
118 | input = arr;
119 | }
120 |
121 | private String next()
122 | {
123 | try
124 | {
125 | return input[arrIdx++];
126 | } catch (IndexOutOfBoundsException e)
127 | {
128 | return "";
129 | }
130 | }
131 |
132 | private static int getPokemon(String pokemon)
133 | {
134 | for(int i= 0; i < nameData.length; i++)
135 | {
136 | if(pokemon.equalsIgnoreCase(nameData[i]))
137 | {
138 | return i;
139 | }
140 | }
141 | throw new RuntimeException("Invalid pokemon entered: " + pokemon);
142 | }
143 | }
144 |
--------------------------------------------------------------------------------
/src/starters/gen5/StarterEditorGen5.java:
--------------------------------------------------------------------------------
1 | package starters.gen5;
2 |
3 | import framework.BinaryWriter;
4 | import framework.Buffer;
5 |
6 | import java.io.BufferedReader;
7 | import java.io.File;
8 | import java.io.FileReader;
9 | import java.io.IOException;
10 | import java.util.ArrayList;
11 | import java.util.Arrays;
12 | import java.util.Comparator;
13 | import java.util.Scanner;
14 |
15 | public class StarterEditorGen5
16 | {
17 | private static String path = System.getProperty("user.dir") + File.separator; //creates a new String field containing user.dir and File.separator (/ on Unix systems, \ on Windows)
18 | private String dataPath = path;
19 | private static String resourcePath = path + "Program Files" + File.separator;
20 | private static final String[] typeArr = {"Normal", "Fighting", "Flying", "Poison", "Ground", "Rock", "Bug", "Ghost", "Steel", "Fire", "Water", "Grass", "Electric", "Psychic", "Ice", "Dragon", "Dark", "Fairy"};
21 | private static final String[] categories = {"Physical", "Special", "Status"};
22 | private static final String[] statusArr = {"None", "Sleep", "Poison", "Burn", "Freeze", "Paralysis", "Confusion", "Infatuation"};
23 | private static String[] nameData;
24 | private String gameCode;
25 | Buffer starterBuffer;
26 | BinaryWriter writer;
27 |
28 | public StarterEditorGen5(String gameCode) throws IOException
29 | {
30 | this.gameCode = gameCode;
31 |
32 | String entryPath = resourcePath + "EntryData.txt";
33 | String movePath = resourcePath + "MoveList.txt";
34 |
35 |
36 | BufferedReader reader = new BufferedReader(new FileReader(entryPath));
37 | ArrayList nameList = new ArrayList<>();
38 | String line;
39 | while ((line = reader.readLine()) != null)
40 | {
41 | nameList.add(line);
42 | }
43 | nameData = nameList.toArray(new String[0]);
44 | reader.close();
45 | }
46 |
47 | public void changeStarters(String startersFile) throws IOException
48 | {
49 | starterBuffer= new Buffer(startersFile);
50 | writer= new BinaryWriter(startersFile + "Recompile");
51 | int offset;
52 |
53 | switch (gameCode.substring(0,3).toLowerCase())
54 | {
55 | case "IPK": //HeartGold
56 | case "IPG": //SoulSilver
57 | switch (gameCode.substring(3).toLowerCase())
58 | {
59 |
60 | }
61 |
62 | break;
63 |
64 | case "CPU": //Platinum
65 | if(gameCode.substring(3).equalsIgnoreCase("j"))
66 | {
67 | offset = 0x1bac;
68 | } else
69 | {
70 | offset = 0x1bc0;
71 | }
72 | editStarterData(0x1bc0);
73 | break;
74 |
75 | case "APA": //Pearl
76 | case "ADA"://Diamond
77 | if(gameCode.substring(3).equalsIgnoreCase("j"))
78 | {
79 | offset = 0x30;
80 | } else
81 | {
82 | offset = 0x1b88;
83 | }
84 | editStarterData(0x1b88);
85 | break;
86 |
87 | case "IRB" : //Black
88 | case "POKEMON W" : //White
89 | switch (gameCode.substring(3).toLowerCase())
90 | {
91 |
92 | }
93 | break;
94 |
95 | case "IRD" : //White2
96 | case "POKEMON B2" : //Black2
97 | switch (gameCode.substring(3).toLowerCase())
98 | {
99 |
100 | }
101 | break;
102 | }
103 | }
104 |
105 | private void editStarterData(int offset) throws IOException
106 | {
107 | Scanner scanner= new Scanner(System.in);
108 | String ans;
109 | int pokemonId;
110 |
111 | writer.write(starterBuffer.readBytes(offset));
112 | for(int i= 0; i < 3; i++)
113 | {
114 | pokemonId= starterBuffer.readInt();
115 | System.out.println("Starter " + (i + 1) + " is currently: " + nameData[pokemonId] + ". Do you want to change it? (y/N)\n");
116 | ans= scanner.nextLine();
117 | System.out.println("\n");
118 |
119 | if(ans.equalsIgnoreCase("y"))
120 | {
121 | System.out.println("Please enter the name of the Pokemon you wish to replace it with\n");
122 | pokemonId= getPokemon(scanner.nextLine());
123 | System.out.println("\nStarter has been replaced with " + nameData[pokemonId] + "\n");
124 | }
125 | writer.writeInt(pokemonId);
126 | starterBuffer.skipBytes(4);
127 | }
128 | }
129 |
130 | private void sort(File arr[])
131 | {
132 | Arrays.sort(arr, Comparator.comparingInt(StarterEditorGen5::fileToInt));
133 | }
134 |
135 | private static int fileToInt(File f)
136 | {
137 | return Integer.parseInt(f.getName().split("\\.")[0]);
138 | }
139 |
140 | private int arrIdx;
141 | private String[] input;
142 |
143 | private void initializeIndex(String[] arr)
144 | {
145 | arrIdx = 0;
146 | input = arr;
147 | }
148 |
149 | private String next()
150 | {
151 | try
152 | {
153 | return input[arrIdx++];
154 | } catch (IndexOutOfBoundsException e)
155 | {
156 | return "";
157 | }
158 | }
159 |
160 | private static int getPokemon(String pokemon)
161 | {
162 | for(int i= 0; i < nameData.length; i++)
163 | {
164 | if(pokemon.equalsIgnoreCase(nameData[i]))
165 | {
166 | return i;
167 | }
168 | }
169 | throw new RuntimeException("Invalid pokemon entered: " + pokemon);
170 | }
171 | }
172 |
--------------------------------------------------------------------------------
/src/text/CharFixer.java:
--------------------------------------------------------------------------------
1 | package text;
2 |
3 | import java.io.*;
4 |
5 | public class CharFixer
6 | {
7 | public static void main(String[] args) throws IOException
8 | {
9 | CharFixer charFixer= new CharFixer();
10 | }
11 |
12 | public CharFixer() throws IOException
13 | {
14 | BufferedReader reader= new BufferedReader(new FileReader(System.getProperty("user.dir") + File.separator + "CharTable.txt"));
15 | BufferedWriter writer= new BufferedWriter(new FileWriter(System.getProperty("user.dir") + File.separator + "CharFix.txt"));
16 | String line;
17 | boolean flag= false;
18 |
19 | while((line= reader.readLine()) != null)
20 | {
21 | line= line.trim();
22 | if(line.contains("case"))
23 | {
24 | flag= true;
25 | String[] lineArr= line.split(" ");
26 | String hexId= lineArr[lineArr.length-1];
27 | for(int i= 0; !hexId.substring(i,i+1).equals(":"); i++)
28 | {
29 | switch (hexId.substring(i,i+1))
30 | {
31 | case "(":
32 | case ")":
33 | case"\"":
34 | break;
35 | default:
36 | writer.write(hexId.substring(i,i+1));
37 | }
38 | }
39 | writer.write(" ");
40 | }
41 | else if(flag)
42 | {
43 | String[] lineArr= line.split(" ");
44 | String hexId= lineArr[lineArr.length-1];
45 | for(int i= 0; !hexId.substring(i,i+1).equals(";"); i++)
46 | {
47 | switch (hexId.substring(i,i+1))
48 | {
49 | case "(":
50 | case ")":
51 | case"\"":
52 | break;
53 | default:
54 | writer.write(hexId.substring(i,i+1));
55 | }
56 | }
57 | writer.write("\n");
58 | flag= false;
59 | writer.flush();
60 | }
61 | }
62 | }
63 | }
64 |
--------------------------------------------------------------------------------
/src/text/CharTable.java:
--------------------------------------------------------------------------------
1 | package text;
2 |
3 | import java.io.*;
4 | import java.util.HashMap;
5 |
6 |
7 | public class CharTable
8 | {
9 | private static HashMap mapGet = new HashMap<>();
10 | private static HashMap mapWrite = new HashMap<>();
11 |
12 | public CharTable() throws IOException
13 | {
14 | BufferedReader reader= new BufferedReader(new FileReader(System.getProperty("user.dir") + File.separator + "CharFix.txt"));
15 | String line;
16 |
17 | while((line= reader.readLine()) != null)
18 | {
19 | String[] lineArr= line.trim().split(" ");
20 | int hexId= Integer.parseInt(lineArr[0].substring(2),16);
21 | String character= lineArr[1];
22 |
23 | if(hexId != 0x1DE)
24 | {
25 | mapGet.put(hexId,character);
26 | mapWrite.put(character,hexId);
27 | }
28 | else //this is for the space character " "
29 | {
30 | mapGet.put(hexId," ");
31 | mapWrite.put(" ",hexId);
32 | }
33 | }
34 | }
35 |
36 | public String getCharacter(int p)
37 | {
38 | return mapGet.getOrDefault(p, "0");
39 | }
40 |
41 | public int writeCharacter(String p)
42 | {
43 | return mapWrite.getOrDefault(p, 0);
44 | }
45 |
46 | }
47 |
--------------------------------------------------------------------------------
/src/trainers/gen4/TrainerDataGen4.java:
--------------------------------------------------------------------------------
1 | package trainers.gen4;
2 |
3 | public interface TrainerDataGen4
4 | {
5 | short getFlag();
6 | short getTrainerClass();
7 | short getBattleType();
8 | short getNumPokemon();
9 |
10 | int getItem1();
11 | int getItem2();
12 | int getItem3();
13 | int getItem4();
14 |
15 | long getAI();
16 |
17 | short getBattleType2();
18 |
19 | short getUnknown1();
20 | short getUnknown2();
21 | short getUnknown3();
22 | }
23 |
--------------------------------------------------------------------------------
/src/trainers/gen4/TrainerPokemonData.java:
--------------------------------------------------------------------------------
1 | package trainers.gen4;
2 |
3 | public interface TrainerPokemonData
4 | {
5 | short getIvs();
6 | short getAbility();
7 |
8 | int getLevel();
9 | int getPokemon();
10 | int getAltForm();
11 |
12 | short getBallCapsule();
13 |
14 | interface TrainerPokemonData1 extends TrainerPokemonData
15 | {
16 | int getMove1();
17 | int getMove2();
18 | int getMove3();
19 | int getMove4();
20 | }
21 |
22 | interface TrainerPokemonData2 extends TrainerPokemonData
23 | {
24 | int getItem();
25 | }
26 |
27 | interface TrainerPokemonData3 extends TrainerPokemonData1
28 | {
29 | int getItem();
30 | }
31 | }
32 |
--------------------------------------------------------------------------------
/src/tutors/sinnoh/TutorMoveListData.java:
--------------------------------------------------------------------------------
1 | package tutors.sinnoh;
2 |
3 | public interface TutorMoveListData
4 | {
5 | int getMoveId();
6 |
7 | int getRedShards();
8 | int getBlueShards();
9 | int getYellowShards();
10 | int getGreenShards();
11 |
12 | int getTutor();
13 | }
14 |
--------------------------------------------------------------------------------