├── 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 | --------------------------------------------------------------------------------