Jump to content

Search the Community

Showing results for tags 'tutorial'.



More search options

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type


Categories

  • Pokémon
    • Pokémon (Ultra Sun/Ultra Moon)
    • Pokémon (Sun/Moon)
    • Pokémon (PSMD)
    • Pokémon (EoS)
  • Egg Groups
    • Egg Groups (Ultra Sun/Ultra Moon)
    • Egg Groups (Sun/Moon)
  • Moves
    • Moves (Ultra Sun/Ultra Moon)
    • Moves (Sun/Moon)
    • Moves (PSMD)
    • Moves (EoS)
  • Abilities
    • Abilities (Ultra Sun/Ultra Moon)
    • Abilities (Sun/Moon)
    • Abilities (PSMD)
  • Types
    • Types (Ultra Sun/Ultra Moon)
    • Types (SM)
    • Types (PSMD)
    • Types (EoS)

Categories

  • Generation 7
  • Generation 6
  • Generation 5
  • Generation 4
  • Mystery Dungeon 3DS
  • Mystery Dungeon NDS
  • Sprite Index
  • Other

Categories

  • Project Pokémon
  • Games
    • Pokémon Ultra Sun and Ultra Moon
    • Pokémon Sun and Moon
    • Pokémon Super Mystery Dungeon

Categories

  • Save Editing
    • Managing GB/GBC Saves
    • Managing GBA Saves
    • Managing NDS Saves
    • Managing 3DS Saves
    • Managing Gamecube Saves
    • Managing Wii Saves
    • Managing Switch Saves
    • Using PKHeX
    • Gen 3 Specific Edits
    • Gen 4 Specific Edits
    • Gen 5 Specific Edits
  • ROM Editing
    • Stars' Pokémon Colosseum and XD Hacking Tutorial
    • Editing ROMs with Sky Editor
    • 3DS Pokémon Games Hacking Tutorials
  • RAM Editing
    • GS ACE: Coin Case
    • GS ACE: TM17
  • Gameplay related support
    • e-reader support

Forums

  • ProjectPokemon.org
    • Announcements
    • News Discussion
    • Project Pokémon Feedback
    • Introductions
  • Event Pokémon
    • Event Pokémon News
    • Event Contributions
  • Technical Discussions
    • ROM
    • Saves
    • RAM and Live Edits
    • Hardware
    • General Development
  • Pokémon Discussions
    • Pokémon Games Discussion
    • Pokémon Online Play
    • Pokémon Franchise
    • Pokémon Trivial Games
  • Other
  • Mystery Dungeon Hacking's Discussions
  • The "I Love Cats" Club's Discussions
  • The Cool Kids Corner's Discussions
  • Team Valor's General Discussion
  • Pokemon USUM Breeder's Club's Rules
  • Pokemon USUM Breeder's Club's Post breeding stories & pictures here
  • Pokemon USUM Breeder's Club's Competitive Breeding Requests
  • Pokemon USUM Breeder's Club's Non-Competitive Breeding Requests
  • Pokemon USUM Breeder's Club's Introduce self
  • The PBOE, (Pokémon Brotherhood of Evil)'s Topics
  • Sky Editor's Topics
  • Sky Editor's Questions
  • Hoopa's Café's Topics
  • Super pokemon POWER's Topics
  • Steel Of Time Club's Topics

Calendars

  • Community Calendar
  • Pokémon Event Calendar
  • The "I Love Cats" Club's Events
  • Hoopa's Café's Important Dates
  • Super pokemon POWER's Events
  • Steel Of Time Club's Events

Categories

  • Event Gallery
    • Generation 8
    • Generation 7 (Switch)
    • Generation 7 (3DS)
    • Generation 6
    • Generation 5
    • Dream World
    • C-Gear Skins
    • Pokédex Skins
    • Pokémon Musicals
    • Pokémon World Tournaments
    • Generation 4
    • Generation 3
    • Generation 2
    • Generation 1
  • In-Game Series
    • Generation 8
    • Generation 7
    • Generation 6
    • Generation 5
    • Generation 4
    • Generation 3
    • Generation 2
    • Generation 1
  • Unreleased/Beta PKM Gallery
  • Tools
  • Saves
  • PKM Files
  • ROM related entries
  • Misc
  • Mystery Dungeon Hacking's Files
  • Sky Editor's Files
  • Hoopa's Café's Files
  • Super pokemon POWER's Files
  • Steel Of Time Club's Files

Blogs

There are no results to display.

There are no results to display.


Find results in...

Find results that contain...


Date Created

  • Start

    End


Last Updated

  • Start

    End


Filter by number of...

Joined

  • Start

    End


Group


Gender


About Me


Friend Code (Nintendo Switch)


Friend Code (3DS)


NNID (Wii U)

Found 36 results

  1. Main effect: The probability is PP/65536. PP is equal to 08 by default. You can now put the value 10 (16 chances in 65536), like in Gen VI. Decompress arm9.bin. Go to offset 0×70080* and change the value 08 into QQ. QQ can take any value from 00 (no shiny at all) to FF (roughly 1 in 257 chance). *Regions' differences: Language Shiny chance Japanese 0×6FAC0 Spanish HG 0×70078 Korean HG 0×7017C Korean SS 0×70174 Others 0×70080 Side-effect: Formula reminder: (Trainer ID ⊕ Secret ID) ⊕ (16 leftmost bits of PID ⊕ 16 rightmost bits of PID) = CID What I call the CID (stands for Color ID) must be a number between 0 and 7 included for its bearer to be shiny. For example let's say you decided to update the value from 0×08 to 0×10, what will happen you may ask? Any caught Pokémon who happens to have their CID between 8 and 15 included and who weren't shiny before the update will turn shiny!
  2. So alot of people have been asking how I do animation swaps and stuff in my hacks, so I decided to post a tutorial. You will need: pk3DS (Latest Version) Ohana3DSRebirth (mariosonicds build) Step 1: Uncompress a/1/7/0 in pk3DS Step 2: Find the bin that contains the model that you want to use Step 3. Uncompress the bin in pk3DS, You should get a folder named ID_CM (ID being whatever number the file is) Step 4. Inside that folder you should see 9 bin files, copy the file named 0.bin Step 5. Find the bin the contains the animations you want to use, and uncompress it Step 6: You should get another folder named ID_CM that also has 9 bin files in it, overwrite the 0.bin in that folder with the one you copied Step 7: Pack the folder, you should now have a file named ID.CM Step 8. Rename the file to ID.BIN and replace the existing file Step 9. Repack the GARC Now you should have different animation ;). If you have any questions let me know!
  3. Hello All! As I have started to make my own skins, and see myself continuing to create more in the future I've decided to create this step by step tutorial to help out! This way I can have a nice and easy place to point people towards for install instructions and as a file dump for my own created skins . What this will allow you to do: You can use any official c-gear skins that you either missed or are unobtainable due to region or release. You will also be able to use completely custom skins, I will provide my skins I have created in this thread. Ultimately you will get to turn your bland c-gear into stuff like this: PokeGen C-Gear Tutorial First and foremost you will need access to your save file. If you are simply running on an emulator or a flash cart this is easy and you should already have the knowledge of how to get this! If you are wanting to use this on your retail cartridge you will need a save dongle to retrieve your save file and then put it back on your cart. That being said, lets get started! Open up PokeGen and load your save (File>Open). Your save will load, and you will see all your Pokemon in your party and boxes show up. We are not going to change or mess with them at all, so if you are trying to keep a clean and cheat free game don't worry, the save will be fine! Your next step is to open up the C-Gear tool (Tools>C-Gear Background) You will see a new window pop up that has your current C-Gear in the left hand box. The right hand box should be empty. In my example below you can see the pikachu c-gear skin which is a standard skin available on the global link to anyone. Click the "Open" button and navigate to the C gear file that you would like to change it to. This has to be a C gear file type. Select your file in the browser and hit open. You should now see your desired skin on the right hand box. If everything looks correct on the right hand side, click the arrow in between the boxes to overwrite the c-gear skin that is currently on the game. You should now see both boxes have the skin that you want to use. That's all you need to do, pretty simple right? Close out the C-Gear Window, and save your changes! Now just put this save file back on your cartridge and you've got yourself a spiffy new c-gear to make everyone else jealous! C-Gear Skins For official skins Please head to the C-Gear Skin Gallery on Project Pokemon! Previews of my own current custom made skins can be seen by clicking the spoiler below. Download the Piggman's Skins attachment for these. For more user made custom skins, and official skins after the date of this posting, see this ProjectPokemon thread. If you have any requests for a custom skin, you may make a request, but there is no guarantee that I will do it. (I have to usually find a request interesting/fun myself before doing one) 157 July 12th 2012 Piggman's Skins..zip
  4. DISCLAIMER: As of now, this is only a beta (revision 4 since the Pokémon summary freeze fix), but at the very least the type chart works. NEW: Download link at the bottom of this post! You read it right, we're going to make the game take into account the Fairy-type! Also, STAB works too. But keep in mind this is still primitive and the Hall of Fame freeze on a NDS need to be addressed ASAP. While it may seem it is a one-man project, it is not; anyone who knows how to ameliorate the code or knows something useful is a welcome guest (credits will be given where they are due obviously). Part 1: Extraction Step 1: First and foremost open your Pokémon Black 2 or White 2 ROM with CrystalTile2. Step 2: Click the NDS icon (or alternatively click Ctrl+N). Step 3: Right-click on each of the following files and click Extract. arm9.bin overlay9_0167.bin overlay9_0168.bin overlay9_0207.bin overlay9_0265.bin Likewise, right-click on each of the following files and click Export. a/0/1/1 a/0/8/2 a/1/2/5 a/2/1/3 Note 1: File Reinsertion will be done on the last Part. Note 2: As a rule of thumb, overlays, arm9 and fat are NOT interchangeable between versions, but narcs are safe. Part 2: Updated type chart Step 1: Open overlay 167 with an Hex editor. Step 2: Add this at the beginning of overlay 167, yes by that I mean to add (not replace) this at offset 0×0: 04 04 04 04 04 02 04 00 02 04 04 04 04 04 04 04 04 04 08 04 02 02 04 08 02 00 08 04 04 04 04 02 08 04 08 02 04 08 04 04 04 02 08 04 02 04 04 08 02 04 04 04 04 04 04 04 04 02 02 02 04 02 00 04 04 08 04 04 04 04 04 08 04 04 00 08 04 08 02 04 08 08 04 02 08 04 04 04 04 04 04 02 08 04 02 04 08 04 02 08 04 04 04 04 08 04 04 04 04 02 02 02 04 04 04 02 02 02 04 08 04 08 04 04 08 02 00 04 04 04 04 04 04 08 04 04 04 04 04 08 04 04 02 04 04 04 04 04 04 08 04 04 02 02 02 04 02 04 08 04 04 08 04 04 04 04 04 02 08 04 08 02 02 08 04 04 08 02 04 04 04 04 04 04 08 08 04 04 04 08 02 02 04 04 04 02 04 04 04 04 02 02 08 08 02 04 02 02 08 02 04 04 04 02 04 04 04 04 08 04 00 04 04 04 04 04 08 02 02 04 04 02 04 04 04 08 04 08 04 04 04 04 02 04 04 04 04 02 04 04 00 04 04 04 08 04 08 04 04 04 02 02 02 08 04 04 02 08 04 04 04 04 04 04 04 04 04 04 02 04 04 04 04 04 04 08 04 00 04 02 04 04 04 04 04 08 04 04 04 04 04 08 04 04 02 02 04 08 04 02 04 04 04 04 02 02 04 04 04 04 04 08 08 04 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF Step 3: After inserting the new type-chart, change the following: 0×0C312 : 112A 08D0 => 122A 08DA 0×11226 : 1128 02D1 => 1228 02DB 0×21884 : 11 => 12 0×21896 : 11 => 12 0×218A2 : 1129 06D1 => 1229 06DB 0×218A6 : 1128 01D1 => 1228 01DB 0×218B4 : 1128 00D1 => 1228 00DB 0×218DA : 112C 0ED0 => 122C 0EDA 0×23A20 : 1128 01D0 => 1228 01DA 0×23A24 : 1129 01D1 => 1229 01DB 0×23A2C : 0201 8218 => 1222 4243 0×23B98 : 11 => 12 0×260E2 : 112E 1ED0 => 122E 1EDA 0×306F0 : 112C 3CD0 => 122C 3CDA 0×306F6 : 11 => 12 0×23A6C (B2) : 00751D02 => 40971902 (W2) : 40751D02 => 80971902 0×23BA4 (B2) : 00751D02 => 40971902 (W2) : 40751D02 => 80971902 Step 4: Save the changes done on overlay 167. The file size should go from 268,096 bytes to 268,480 bytes. Part 3: Fairy-type icon Step 1: Open a/0/8/2 with an Hex editor. Step 2: Go to offset 0×6A84 and change 1F7C1F7C into 9CF20EB9. What you did here is a change to the type-icons' palette so that it takes into account the colors for the Fairy-type. Step 3: Go to offset 0×8094 and change this: 00 00 00 00 10 11 11 11 21 22 22 22 22 22 22 22 22 22 22 FF 22 22 F2 EE 22 22 F2 2E 22 22 F2 2E 00 00 00 00 11 11 11 11 22 22 22 22 22 22 22 22 2E 22 FF 2E EF F2 EE EF EE F2 2E EF 22 F2 2E EF 00 00 00 00 11 11 11 11 22 22 22 22 22 22 22 22 22 FF 2E F2 F2 EE EF F2 F2 2E EF F2 F2 2E EF F2 00 00 00 00 11 11 11 01 22 22 22 12 22 22 22 22 2E 22 22 22 2E 22 22 22 2E 22 22 22 2E 22 22 22 22 22 F2 2E 22 22 F2 2E 22 22 E2 FF 22 22 22 EE 22 22 22 22 23 22 22 22 30 33 33 33 00 00 00 00 22 F2 2E EF EF F2 2E EF EE E2 FF EE 2E 22 EE 2E 22 22 22 22 22 22 22 22 33 33 33 33 00 00 00 00 F2 2E EF F2 F2 2E EF F2 E2 FF EE F2 22 EE 2E E2 22 22 22 22 22 22 22 22 33 33 33 33 00 00 00 00 2E 22 22 22 2E 22 22 22 FF EF 22 22 EE EE 22 22 22 22 22 22 22 22 22 32 33 33 33 03 00 00 00 00 into this: 00 00 00 00 00 00 00 00 99 99 99 99 89 88 88 88 89 88 FF FF 89 88 EF EE 89 88 EF 88 89 88 FF EF 00 00 00 00 00 00 00 00 99 99 99 99 88 88 88 88 8E FF 8E FF FE EE EF FE F8 8E EF F8 F8 8E EF F8 00 00 00 00 00 00 00 00 99 99 99 99 88 88 88 88 EF FF EF F8 EE EF FE FE 8E EF F8 EE 8E FF EF 88 00 00 00 00 00 00 00 00 99 99 99 99 88 88 88 98 8E F8 8E 98 8E F8 8E 98 EF EF 88 98 FE 8E 88 98 89 88 EF EE 89 88 EF 88 89 88 EF 88 89 88 EE 88 89 88 88 88 99 99 99 99 00 00 00 00 00 00 00 00 F8 FF EF F8 F8 EE EF F8 F8 8E EF FF E8 8E EE EE 88 88 88 88 99 99 99 99 00 00 00 00 00 00 00 00 8E EF EF 88 8E EF FE 8E EF EF F8 8E EE EE E8 8E 88 88 88 88 99 99 99 99 00 00 00 00 00 00 00 00 F8 8E 88 98 F8 8E 88 98 F8 8E 88 98 E8 8E 88 98 88 88 88 98 99 99 99 99 00 00 00 00 00 00 00 00 in other words (or rather images), into . Step 4: Save the changes done on a/0/8/2. Step 5: Open a/1/2/5 with an Hex editor. Step 6: Go to offset 0×BCB8 and change 1F7C1F7C into 9CF20EB9. Step 7: Go to offset 0×CF98 and change this: 00 00 00 00 00 00 00 00 33 33 33 33 43 44 44 44 43 44 44 44 43 44 44 F4 43 44 44 F4 43 44 44 44 00 00 00 00 00 00 00 00 33 33 33 33 44 44 44 44 FF 4E 44 F4 EE EF 44 EF 4E EF 44 EF F4 4E 44 44 00 00 00 00 00 00 00 00 33 33 33 33 44 44 44 44 EF 44 44 FF FE 4E F4 EE F4 4E F4 4E EF 44 44 F4 00 00 00 00 00 00 00 00 33 33 33 33 44 44 44 34 4E 44 44 34 EF 44 44 34 EF 44 44 34 4E 44 44 34 43 44 44 44 43 44 44 44 43 44 44 44 43 44 44 44 43 44 44 44 33 33 33 33 00 00 00 00 00 00 00 00 F4 4E 44 44 E4 4E 44 44 F4 4E 44 44 E4 4E 44 44 44 44 44 44 33 33 33 33 00 00 00 00 00 00 00 00 EF 44 44 F4 EE 44 44 E4 EF 44 44 F4 EE 44 44 E4 44 44 44 44 33 33 33 33 00 00 00 00 00 00 00 00 4E 44 44 34 4E 44 44 34 4E 44 44 34 4E 44 44 34 44 44 44 34 33 33 33 33 00 00 00 00 00 00 00 00 into this: 00 00 00 00 00 00 00 00 99 99 99 99 89 88 88 88 89 88 FF FF 89 88 EF EE 89 88 EF 88 89 88 FF EF 00 00 00 00 00 00 00 00 99 99 99 99 88 88 88 88 8E FF 8E FF FE EE EF FE F8 8E EF F8 F8 8E EF F8 00 00 00 00 00 00 00 00 99 99 99 99 88 88 88 88 EF FF EF F8 EE EF FE FE 8E EF F8 EE 8E FF EF 88 00 00 00 00 00 00 00 00 99 99 99 99 88 88 88 98 8E F8 8E 98 8E F8 8E 98 EF EF 88 98 FE 8E 88 98 89 88 EF EE 89 88 EF 88 89 88 EF 88 89 88 EE 88 89 88 88 88 99 99 99 99 00 00 00 00 00 00 00 00 F8 FF EF F8 F8 EE EF F8 F8 8E EF FF E8 8E EE EE 88 88 88 88 99 99 99 99 00 00 00 00 00 00 00 00 8E EF EF 88 8E EF FE 8E EF EF F8 8E EE EE E8 8E 88 88 88 88 99 99 99 99 00 00 00 00 00 00 00 00 F8 8E 88 98 F8 8E 88 98 F8 8E 88 98 E8 8E 88 98 88 88 88 98 99 99 99 99 00 00 00 00 00 00 00 00 Which will transform into . Step 8: Save the changes done on a/1/2/5. Step 9: Open arm9.bin with an Hex editor. Step 10: Go to offset 0×8E09D (B2) / 0×8E0C9 (W2) and change 00 into 02. Step 11: Save the changes done on arm9.bin. Part 4: Fairy-type template Step 1: Open a/0/1/1 with NDSeditor. Step 2: Double-click the file to open this window. Step 3: Tick the box and click on the leftmost icon (Extract selected) NDSeditor will extract all the files in the same folder a/0/1/1 is located at. Step 4: Move a/0/1/1 out of the folder so that only the extracted files stays. Step 5: Copy file a/0/1/1-570 (or any file ending with .rlcn) and rename it a/0/1/1-572. This will be our palette for the Fairy-type template. Step 6: Open file 572 in a Hex editor. Step 7: Wipe out the contents and paste this: 52 4C 43 4E FF FE 00 01 28 02 00 00 10 00 01 00 54 54 4C 50 18 02 00 00 03 00 00 00 00 00 00 00 00 02 00 00 10 00 00 00 CD 75 29 25 08 21 E7 1C C6 18 A5 14 84 10 63 0C 7D EE 5B 66 39 5E F6 D5 D4 C9 B1 41 1F 7C 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 Step 8: Save and close your Hex editor. Step 9: On NDSeditor, click Tools and 'Make Narc file' Step 10: Select the folder where your extracted files are located and click OK. Step 11: Close NDSeditor. Step 12: Open overlay 168 with your Hex editor. Step 13: Go to offset 0×15E48 and change 0000 into 3C02. Step 14: (optional) Go to offset 0×13F0A and change 0127 into 0000. This will disable the 'Low HP' music, which I personally don't like for killing the 'tension' of fights. Step 15: Save the changes done on overlay 168. End-results: => Part 5: Hall of Fame Explanation: Step 1: Open overlay 265 with your Hex editor. Step 2: Go to offset 0×06B4 and change: CC(B81902) into C8(B81902) if B2; 0C(B91902) into 08(B91902) if W2; Step 3: Go to offset 0×2008 and change this: 00 00 00 00 2D 00 00 00 26 00 00 00 28 00 00 00 2E 00 00 00 2B 00 00 00 30 00 00 00 22 00 00 00 29 00 00 00 31 00 00 00 27 00 00 00 32 00 00 00 2A 00 00 00 25 00 00 00 2F 00 00 00 2C 00 00 00 24 00 00 00 23 00 00 00 into this: 2D 00 00 00 26 00 00 00 28 00 00 00 2E 00 00 00 2B 00 00 00 30 00 00 00 22 00 00 00 29 00 00 00 31 00 00 00 27 00 00 00 32 00 00 00 2A 00 00 00 25 00 00 00 2F 00 00 00 2C 00 00 00 24 00 00 00 23 00 00 00 [u]XX[/u] 00 00 00 What you did there really is a circular shift by 32 bits to the left, no more no less. XX can be any value between 0×22 and 0×32. Step 4: Go to offset 0×21DC and change 09 into 04. Go to offset 0×221C and change 00 into 09. Step 5: Save the changes done on overlay 265. Step 6: Open a/2/1/3 in a Hex editor. Step 7: Go to offset 0×513C and paste this: 52 4C 43 4E FF FE 00 01 28 02 00 00 10 00 01 00 54 54 4C 50 18 02 00 00 03 00 00 00 00 00 00 00 00 02 00 00 10 00 00 00 87 1A 9C 72 F5 55 B2 49 6F 3D 2D 35 EA A8 A7 9C 65 94 22 88 00 00 1F 7C 1F 7C 1F 7C 1F 7C 1F 7C 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 Step 8: Save the changes done on a/2/1/3. The end result will look like this: This is a temporary fix as of now, the ideal fix would be to create a particle (.spa) specifically for the Fairy-type. The template is there to stay though. Part 6: Pokémon summary emergency freeze fix This is not a perfect fix, since what it does is that if it detects a Fairy-type icon that should be loaded, it will instead load the Normal-type icon. But at least when it comes to preventing a freeze when trying to view a Pokémon summary, it gets the job done. Step 1: Open overlay 207 with your Hex editor. Step 2: Change the following: 0×3C20 : 0698 AF21 0022 AF24 => 0049 0847 F13B0902 0×3C30 : 3118 AF20 8130 0858 => 0049 0847 033C0902 0×5EA8 : 051C 201C AF21 0022 => 0049 0847 273C0902 0×5EB8 : A800 3118 AF20 8130 => 0049 0847 393C0902 0×7888 : B000 2918 1320 0001 => 0049 0847 153C0902 Step 3: Save the changes done on overlay 207. Step 4: Open arm9.bin with an Hex editor. Step 5: Go to offset 0×8FBF0 and paste this for B2: 11 2D 00 DB 00 25 06 98 AF 21 00 22 AF 24 13 4F 38 47 11 2F 00 DB 00 27 31 18 AF 20 81 30 08 58 0F 49 08 47 11 2E 00 DB 00 26 B0 00 29 18 13 20 00 01 0C 4D 28 47 05 1C 11 2D 00 DB 00 25 20 1C AF 21 00 22 08 4C 20 47 11 2F 00 DB 00 27 A8 00 31 18 AF 20 81 30 08 58 04 49 08 47 A9 6B 1B 02 B9 6B 1B 02 11 A8 1B 02 31 8E 1B 02 43 8E 1B 02 or this for W2: 11 2D 00 DB 00 25 06 98 AF 21 00 22 AF 24 13 4F 38 47 11 2F 00 DB 00 27 31 18 AF 20 81 30 08 58 0F 49 08 47 11 2E 00 DB 00 26 B0 00 29 18 13 20 00 01 0C 4D 28 47 05 1C 11 2D 00 DB 00 25 20 1C AF 21 00 22 08 4C 20 47 11 2F 00 DB 00 27 A8 00 31 18 AF 20 81 30 08 58 04 49 08 47 E9 6B 1B 02 F9 6B 1B 02 51 A8 1B 02 71 8E 1B 02 83 8E 1B 02 Step 6: Save the changes done on arm9.bin. Part 7: Reinsertion Reinserting files will require you to first right-click and then: use Compression if you're reinserting overlays or arm9; use Import if you're reinserting anything else. Step 1: Open your Pokémon Black 2 or White 2 ROM with CrystalTile2. Step 2: Click the NDS icon (or alternatively click Ctrl+N). Step 3: Reinsert overlay 168 with the Compression option. Step 4: Extract overlay 168 but this time exceptionally with Export, you'll see why later. Step 5: Go to offset 0×363F40 and change 00 3C 1B 00 into 00 3D 1B 00, this will change the ROM (not RAM) address of overlay 168. Go to offset 0×364530 and change 00 9A E5 08 into 00 99 E5 08, this will change the ROM address of narc a/0/1/1. Step 6: Right-click on overlay9_167.bin and click 'distribution Overlay file location and space'. Step 7: Change 021998C0 into 02199740 (B2) / 02199780 (W2) and click OK. Step 8: Right-click on each of the following files and click Compression. arm9.bin overlay9_0167.bin overlay9_0207.bin overlay9_0265.bin Likewise, right-click on each of the following files and click Import. overlay9_0168.bin (this time only) a/0/1/1 a/0/8/2 a/1/2/5 a/2/1/3 Note: If you omit Steps 3 and 4 and try to reinsert overlay 168 using Compression AFTER the fat.bin has been changed, then CrystalTile2 will crash for some reason. Otherwise using Compression on overlay 168 is fine. Urgent to do: Try to load Hall of Fame Fairy-particle with a custom file, and try to get the Hall of Fame working on a real NDS. To do: Try to load the Fairy-type icon in the Pokémon summary (While I did build a workaround so that it doesn't freeze anymore on a NDS, the Fairy-type icon still cannot be loaded without throwing an error). Load the Fairy-type icon in the PC, while deactivating it if the Pokémon is not Fairy-type. Try to load the Fairy-type icon in the Pokédex. Make Struggle type 0×12, as it stands right now Struggle is considered Fairy-type. Hope you enjoyed reading. A little video to see the Fairy-type in action: [video=youtube;QE-HvGAAJnA]
  5. Ever notice how the majority of command-line applications require about a dozen commands for a single logical operation? This tool aims to fix that! ROMs can be extracted and repacked with a single command per operation, like so: To extract: ToolkitConsole.exe MyRom.3ds RawFiles To repack as a CIA: ToolkitConsole.exe RawFiles Repacked.cia To repack as a 0-key encrypted CCI (for use with Gateway): ToolkitConsole.exe RawFiles Repacked.3ds -key0ORToolkitConsole.exe RawFiles Repacked.3dz Note: 3dz files will be invalid until a private header is applied. To repack as a decrypted CCI (for use with Citra or Decrypt9): ToolkitConsole.exe RawFiles Repacked.3ds To repack for HANS: ToolkitConsole.exe RawFiles G:/ MyHack System requirements: .Net Framework 4.6 Free space on the system drive. Cleanup happens as soon as possible, but especially for larger ROMs, you may need several GB free. Supported formats for extraction: Decrypted CCI (aka .3DS) Decrypted CXI (what Braindump gives you) Supported formats for building: Decrypted CCI (aka .3DS) For use with Citra Can be used for Gateway and Sky 3DS (with CFW) if encrypted using Decrypt9 [*] 0-Key Encrypted CCI For use with Gateway [*] CIA For use with CFW [*] HANS RomFS, Code.Bin, and Homebrew Launcher Shortcut Planned Features: Copy private header to 0-key encrypted CCI files as they are built. Until this is done, any *.3dz files created are invalid until a private header is added. Decrypted CIA extraction This also doubles as a code library for developers. See GitHub for library usage. Latest package will be on Sky Editor's MyGet feed and may be added to NuGet at some point. Credits: SciresM for 3DS Builder (modified to use command-line arguments) profi200 for Project_CTR's makerom dnasdw for 3dstool Asia81 for HackingToolkit3DS, which provided the usage for 3dstool. Release Page GitHub Download
  6. Hi everyone! I just uploaded some Pokemon DS rom hacking tutorial vids and wanted to post them here in case they help anyone out. They are definitely not high level stuff, mostly a showcase of how to use tools like Tinke, Kiwi, PokeDS/Pis, DS Text Editor, and PPRE for trainer editing. So more of a "rom hacking for dummies" kind of guide. Topics Discussed: Pt 1: Overworld Sprites (including the elusive HM summon sprite) Pt 2: Trainer Front/Back sprites and VS faces before a gym battle Pt 3: Pokemon Sprites Pt 3.5: Advance Pokemon Edits Pt 4: Text Editing (OLD WAY) Pt 4.5: Text Editing 2 (BETTER WAY) Pt 5: Opening, Intro, Ending locations Pt 6: Enemy Trainer Pokemon Teams Pt 7: Pokemon Icons Pt 7.5: Pokemon Icon Pallets Pt 8: How to use Photoshop and Graphic Gale Pt 9: Diamond/Pearl Battle Sprites Pt 10: Trainer Cards (Both Gen 4 and 5) Pt 11: HG SS Pokemon Follow Overworld Sprites Pt 12: 3D BMD0 Overworld Cutscene Trainer Sprites Pt 13: Pokemon Cries to Pretty Much Anything If you have any questions, leaving a youtube comment would be a much faster way to reach me.
  7. I've noticed there seems to be issues with extracting readable data from a Pokémon X/Y ROM. There are plenty of tools, like Ohana3DS and GARCTool, but they don't go together very well, and they don't support some file types. Therefore, I've posted a consolidated tutorial here for those of us who crave complete control over their data! All the files you need are in a ZIP file attached to this thread, save for the ROM because posting a 2 GB file would be a big no-no. You'll find a program labeled XObj (https://github.com/Quibilia/XObj) in the ZIP file. I wrote this program myself to examine the formats of the X/Y files and rename them accordingly. The copy of Ohana3DS Rebirth included in this ZIP file is a modified version designed to read the animations and textures in the ROM, which are containers of BCH files. I call it: Ohana3DS Transfigured! (https://github.com/Quibilia/Ohana3DS-Transfigured) The steps are as follows: 1. Run 3DS To CIA Converter.bat. Select option 5, then option 5 again. Type in the path to your ROM, and let it run. When the batch file tells you it's time to modify the files, close it. 2. Locate the subdirectory "romfs" where the batch file is stored. Enter it, and go into the subfolder "a". Copy (not move, COPY) everything in this folder to another folder labeled "XModels". The folder can be anywhere you want, as long as it's easy to get to. 3. Copy XObj.exe, GARC UnPacker.exe, and their accompanying batch files to the parent folder of XModels (if XModels is on your desktop, then your desktop), and run GARC.bat. This'll take a few minutes, so grab a soda. 4. When it's done, run XObj.exe, and it will look for any files that are compressed, and rename them to ".lz" files. Go into XModels, and enter the subdirectory "0/0/7.garc_". If there are no .lz files here, skip the next two steps. 5. Open Ohana3DS Rebirth.exe, and drag all of the .lz files into the window. They should be all grouped together in Windows Explorer (thanks, alphabetical order). It'll whir for a minute, and more likely than not stop responding, but let it run and it'll spit out some decompressed files. Go back into the parent folder of XModels, and run ClearCompressed.bat. This will delete all the compressed files, and leave the decompressed ones. Close Ohana3DS. 6. Run XObj again, and it'll convert each file in XModels to a format readable by our modified Ohana3DS. There are a lot of directories in XModels, but for this tutorial, we'll just be focusing on the files in 0/0/7.garc_, which hold the data for our favorite characters themselves. 7. Run ClearOriginals.bat, and it'll delete the original files, but leave the ones that we converted with XObj. 8. If you're looking for all of the models at once, here's where the real fun starts. Open Ohana3DS again, and go back into 0/0/7.garc_. Highlight all 8000-something files here, and drag them into the Ohana3DS window. The program will stop responding. After about five minutes, it should start responding again; when it does, the parent folder of XModels should be filled with .obj and .png files. Congratulations! You've successfully extracted all of the models and textures from your X/Y ROM. I'm still working out a conversion algorithm for the animations, but they should be convertible with Ohana3DS if you need them (just not with drag-drop support like the models and textures). 9. If you're looking for one or two models, I've outfitted Ohana3DS for that as well. Before dragging those 8000 files into the window, just go to the Open menu, and select a .PC file; this is a 3D model. From there, you can import textures in .PT format, or animations in .PB, .PK, or .PF formats. As for me, there are some questions I have about the animation files. It seems that all three formats contain more than one kind of animation, and they can be read pretty much the same way, so...what's the point in having more than one format? Also, if anyone could tell me where the skeletal animations are stored, I'd appreciate it. The material and visibility animations are stored along with the models, but the skeletal...they're hiding from me.
  8. This tutorial will show how to replace textures in a .BMD0 file (Vs. Scenes, Fly sprites, etc.) First off, download the following programs: NitroExplorer2 Tinke (latest version) Mario Kart DS Editor Some kind of image editing software For this tutorial, I will be replacing Vs. Scenes. Step 1. Open NitroExplorer2 and navigate to a/1/6/6, extract the NARC. Step 2. Open the NARC with Tinke. Step 3. Find the file that you want to edit, the Vs. Scenes are usually start around the 80th file. Step 4. View the file and extract it (be sure when extracting the file you put .nsbmd at the end of what ever you named it). Step 5. Open Mario Kart DS Editor. Step 6. Goto Tools>Nitro Explorer>NSBMD ==> NSBMD + NSBTX Step 7. Select the file you extracted, and save the new .nsbmd, and the .nsbtx Step 8. You should now have a .nsbtx file, Open it in Mario Kart DS Editor. Step 9. Textures should appear, the top part contains the images, and the bottom part contains the palettes for the images. Step 10. Select the palette, then the image, and extract it as .png Step 11. Edit it however you like, color limit doesn't matter. Step 12. Save the image, then go back to Mario Kart DS Editor and replace the image. Step 13. Save the .nsbtx, and goto Tools>Nitro Explorer> NSBMD + NSBTX ==> NSBMD. Step 14. Rename the new NSBMD file to (name).BMD0 Step 15. Replace a Vs. Scene with the one you just edited. Step 16. Pack the NARC and re-insert it. Your .BMD0 should be working properly. If you have any questions, or comments, let me know .
  9. It occurs to me that I've not actually explained how to do this yet so I figure I may as well: Step 1 - What's the file you need? You'll need to extract the a/2/7/3 .narc file from Black 2 or White 2. It doesn't really matter which. Step 2 - Starting Preparations. Open it up in a hex editor. I'd recommend crystaltile2 so you can quite easily jump between the files. Alternatively, you can use the kiwi.ds editor to extract the files separately, or whatever other method you wish. I'll walk through this tutorial using the Floccessy Ranch Grotto, which is the first file in the .narc. Step 3 - Editing the Pokémon Species. The whole of the first file looks like this: Now it's time to dissect what the file actually means! I'd highly recommend paying attention to this. It's a textified version of the Hidden Grotto listings done by Kaphotics, and it'll help you read what's going on here. The "CE 00 CE 00 CE 00 CE 00" at the start of the file is a reference to the four Pokémon who can appear with 1% frequency. In this case, Dunsparce takes up Group A, B, C, and D. Why Dunsparce? Dunsparce's index number is 206, which is 0x00CE (where 0x signifies it's a hexadecimal number). However, Pokémon games tend to use indices in a flipped form - the latter two bytes come FIRST, and then the former two bytes come last. So 00 CE becomes CE 00, and thus you see it as it's found in the data. You'll notice other similar strings within this document. As you can see from Kaphotics' list, Herdier is the middle frequency Pokémon. Herdier's National and also index number is 507 -> 0x01FB -> FB 01. You'll see two instances of "FB 01 FB 01 FB 01 FB 01" in the file (also two of "CE 00 CE 00 CE 00 CE 00). The first one refers to Black 2, and the second refers to White 2. So essentially, the file is split like this: The first part is the Black 2 encounter possibilites, the second part is what can appear in White 2. Most of the time this isn't utilised in the game, although you can see it in action in some areas such as Pinwheel Forest's interior, where Beedrill is found in Black 2 and Butterfree in White 2. In the Floccessy Ranch example, you can also see strings for Marill. Marill is 183 -> 0x00B7 -> B7 00, thus "B7 00 B7 00 B7 00 B7 00". Actually changing the species is simple - you just edit the strings shown! For example, if you always want Bulbasaur to appear in the Hidden Grotto with a 1% appearance rate, then you'd replace both instances of "CE 00 CE 00 CE 00 CE 00" with "01 00 01 00 01 00 01 00". That is of course, assuming you want the same effect in Black 2 and White 2. Alternatively, you might want any one of Bulbasaur, Charmander, Squirtle, or Pikachu to appear with a medium rate in the Hidden Grotto. This time, you'd replace the medium rate Pokémon string (Herdier, so FB 01 FB 01 FB 01 FB 01) with "01 00 04 00 07 00 19 00", referring to their index numbers 001, 004, 007 and 025 respectively. This gives them all an equal opportunity to be called (I think) when that encounter rate is selected. Thus, you can have to up to 12 Pokémon appear in a single Grotto on any version! So, that's the species. But what's the rest? N.B.: You can place any species in the Hidden Grotto, but they must have an overworld sprite in the game for them to show up. The first 493 Pokémon can all show up, but only the Unovian Pokémon shown on this sprite sheet will be able to show up successfully. Otherwise, you'll get a generic placeholder overworld (a boy with blue hair).. Step 4 - Editing the Other Pokémon Info. Let's take a look at an entire string of Pokémon hex in the Grotto, for one version: "CE 00 CE 00 CE 00 CE 00 0F 0F 0F 0F 0A 0A 0A 0A 1E 1E 1E 1E 00 00 00 00" "FB 01 FB 01 FB 01 FB 01 0F 0F 0F 0F 0A 0A 0A 0A 1E 1E 1E 1E 00 00 00 00" "B7 00 B7 00 B7 00 B7 00 0F 0F 0F 0F 0A 0A 0A 0A 1E 1E 1E 1E 00 00 00 00" Now, we already know these three strings combined make up the Pokémon selection pool for one version. The first one is the rarest, the second the middle, and the third the most common. You're also aware that there's actually four separate Pokémon that can be called in each group - although the game rarely has more than two species in the same group. (You can see an example of there being two in Route 9.) However, what does the remaining part mean? Let's analyse this... CE 00 CE 00 CE 00 CE 00 0F 0F 0F 0F 0A 0A 0A 0A 1E 1E 1E 1E 00 00 00 00 [color="Red"]CE 00 CE 00 CE 00 CE 00[/color] [color="RoyalBlue"]0F 0F 0F 0F [/color][color="SeaGreen"]0A 0A 0A 0A[/color] [color="Orange"]1E 1E 1E 1E[/color] 00 00 00 00 Suddenly the separate parts become a lot clearer! We already know the Pokémon species indices are the ones in red. The four bytes in blue refer to the maximum level that a Pokémon can be. The four bytes in green refer to the minimum level a Pokémon can be. The four bytes in orange refer to the percentage chance that the Pokémon that appears is female. Hidden Grottos don't generate Pokémon genders in the same way regular encounters do! As far as I'm aware, the last four bytes are always 00 00 00 00, so we don't need to worry about those. NOTE: It appears these values refer to the form(e) the Pokémon will take. I assume it works by slot correspondence, e.g. if your first Pokémon byte is EC 01, then set the first of these bytes to 01 and you should get the Sky Forme generating. There's one other important distinction here; the bytes are in groups of four as they each refer to a particular group! So in reality, they're split up as follows: [color="DarkOrchid"]CE 00[/color] [color="Lime"]CE 00[/color] [color="Teal"]CE 00[/color] [color="DarkRed"]CE 00[/color] [color="DarkOrchid"]0F[/color] [color="Lime"]0F[/color] [color="Teal"]0F [/color][color="DarkRed"]0F[/color] [color="DarkOrchid"]0A[/color] [color="Lime"]0A[/color] [color="Teal"]0A[/color] [color="DarkRed"]0A[/color] [color="DarkOrchid"]1E[/color] [color="Lime"]1E[/color] [color="Teal"]1E[/color] [color="DarkRed"]1E[/color] 00 00 00 00 The bytes that have a matching colour are the ones that are related to each other. Let's use one of our example strings from before... 01 00 04 00 07 00 19 00 14 14 14 14 0F 0F 0F 0F 32 32 32 32 00 00 00 00 This might be more easily read like this (even though you can't input this): "01 00 14 0F 32 00" - Species: Bulbasaur. Max Level: 20. Min Level: 15. Female rate: 50%. "04 00 14 0F 32 00" - Species: Charmander. Max Level: 20. Min Level: 15. Female rate: 50%. "07 00 14 0F 32 00" - Species: Squirtle. Max Level: 20. Min Level: 15. Female rate: 50%. "19 00 14 0F 32 00" - Species: Pikachu. Max Level: 20. Min Level: 15. Female rate: 50%. Just for a quick translation: 0x14 = 20. 0x19 = 25. 0x0F = 15. 0x32 = 50. The Pokémon in question can at any level between the max/min levels inclusive. For example, a Bulbasaur could generate in the Grotto and be encountered at Level 15, 16, 17, 18, 19, or 20. It also has a 50% chance of being female. From this it should be easy enough to see what's going on now. Just adjust the values to what you need! Quick word of warning, though. You cannot have the max and min levels be the same. If you do that, some funky stuff starts happening and they seem to be able to appear at any level they want. If you want them to appear at only one level, then use the max level as (min level + 1). This generally seems to cause them to appear at the minimum level anyway (though possibly not always). Step 5 - What's the rest? The remaining part of the Grotto files deal with the items that you can find in them. Using the Floccessy Ranch example again: The highlighted section is our items. It may look like random numbers, but when cross-compared with this page, it isn't! As we can see from that link, 0x0052 refers to a Fire Stone, 0x0054 to Water, 0x0053 to Thunder and 0x0055 to Leaf. This matches up with the Item 1 row in Kaphotics' list. Then the next bytes... 0x0002 are Ultra Balls, 0x004D is a Max Repel, and 0x0019 is a Hyper Potion. That's the item 2 list... etc. You probably get the idea by now. So, in short... First 8 bytes - 2 bytes for each group, visible item 1%. Next 8 bytes - 2 bytes for each group, visible item 4%. Next 8 - visible item 10% Next 8 - Visible item 25% The next 32 bytes refer to the four groups of hidden items, but it works in exactly the same way. There's no difference in the items between Black 2 and White 2, so whatever changes you make should appear the same in both. Step 6 - What file is what? These are listed in order in Kaphotics' list anyway, but in case you want another reference point: File 0 - Floccessy Ranch File 1 - Route 5* File 2 - Lostlorn Forest File 3 - Route 6 [Field, the one just around the corner from Driftveil] File 4 - Route 6 [Cave, the one just outside Mistralton Cave] File 5 - Route 7 File 6 - Route 13 [stairLeft, the one next to the staircase close to Cobalion] File 7 - Route 13 [stairDown, the one close to the Giant Chasm entrance] File 8 - Route 9 File 9 - Giant Chasm [in the plains, only after you defeat Ghetsis] File 10 - Route 22 File 11 - Route 23 File 12 - Abundant Shrine [Field, ie the one accessible by land only] File 13 - Abundant Shrine [Pond, you need Surf to access this one.] File 14 - Pinwheel Forest [interior, inside the forest over a river.] File 15 - Pinwheel Forest [Exterior, by the Challenge Rock.] File 16 - Route 3 [Daycare, the one just above the Doubles grass] File 17 - Route 3 [Pond, across the large pond] File 18 - Route 2 File 19 - Route 18 * The first Pokémon entry here (for your version) is the one that will appear by default when Bianca shows you this Grotto for the first time. --- Hopefully that helps some people.
  10. I wasn't kidding when I said that I had a load of tutorials to write down. Decompress arm9.bin Go to offset 0×FF4AE* You should see this: 68 01 FF 00 CA 00 2A 01 FE 00 B7 00 B7 01 3A 01 7A 00 B6 01 3B 01 B9 00 BE 01 3C 01 8F 00 CA 01 3D 01 E2 00 96 01 3E 01 3B 01 B8 01 3F 01 71 00 B1 01 40 01 66 01 Format is BB BB II II DD DD. BB BB is the baby produced when at least one parent holds the corresponding item. II II is the item that at least one parent has to hold. DD DD is the default baby when none of the parent holds the corresponding item. For example we’re going to dissect the 7th row, shall we? 96 01 is a Pokémon ID. Invert the 2 bytes and you get 01 96. Converting from base 16 to base 10 we get 406. Oh, it’s Budew! This is the same principle with the item ID and the default baby ID. Item ID: 3E 01 => 01 3E => 318 => Rose Incense Default baby ID: 3B 01 => 01 3B => 315 => Roselia The instruction is as follows: If at least one of the Parents hold the Rose Incense, Budew will hatch from the egg, otherwise Roselia hatch from the egg. So if you have understood, it means we basically have to replace all 9 instances of DD DD by their corresponding BB BB. By changing the aforementioned bytes you get this: 68 01 FF 00 68 01 2A 01 FE 00 2A 01 B7 01 3A 01 B7 01 B6 01 3B 01 B6 01 BE 01 3C 01 BE 01 CA 01 3D 01 CA 01 96 01 3E 01 96 01 B8 01 3F 01 B8 01 B1 01 40 01 B1 01 Neat, now how about you go and hatch that Budew without a Rose Incense, hum? * Regions’ differences: Language Offset Japanese 0×FFEC2 English 0×FF4AE French 0×FF492 German 0×FF462 Italian 0×FF426 Spanish HG 0×FF496 Spanish SS 0×FF49E Korean HG 0×FFB5A Korean SS 0×FFB52
  11. I know, I'm on thread-spree lately, and it's not over since I have at least 4 more tutorials to get down! Disclaimer: Read all the paragraph before attempting any manipulation. Decompress overlay9_0012.bin Go to the very bottom of the file You should see something like that: 2D 00 2E 00 2F 00 30 00 67 00 AD 00 FD 00 3F 01 40 01 30 01 95 01 C0 01 Q: What are those? A: Those are the very moves blocked by Soundproof. Each move is 2 bytes long, for example let’s try this one: 30 01. Invert the 2 bytes and you get 01 30. Now convert from hex to decimal and you get 304. 304 is the ID number for the move Hyper Voice! Well what move are we trying to break already? Oh yes, Heal Bell. So the move Heal Bell has been assigned the ID number 215. Okay 215 in hexadecimal is D7, since moves are 2 bytes long instead let’s go with 00 D7. Invert the 2 bytes and you get D7 00. Time to go and check against the previous string… … … HEY! But there’s no bytes equal to D7 00 in there! Explanation: Actually this string lists the moves blocked by an opponent’s Soundproof! Have you ever tried to use Heal Bell against that Exploud? Believe it or not but it will work. When it comes to the move Heal Bell, the game will instead perform a check against all of your team members’ abilities, and if a Pokémon affected by a major status condition happens to have Soundproof, it will not be healed. Tough luck, huh? But this will come to an end with those simple-to-follow steps. Decompress overlay9_0012.bin Go to offset 0×98A0* and change the value D7 into 00 Do the same at offset 0×21ADE* Go to offset 0×98B0* and change the value 2B into FF (anything between 7C and FF included will do the trick) Do the same at offset 0×9906* and offset 0×21AE4* Offset 0×98A0 is the check for Heal Bell’s execution for the Pokémon on the battlefield, on the side of the Heal Bell’s user. Offset 0×21ADE is the check for Heal Bell’s execution for the remaining team members of the Heal Bell’s user team. Offset 0×98B0 is the check for Soundproof against the Heal Bell’s user. Offset 0×9906 is the check for Soundproof against the teammate of the Heal Bell’s user (Double battle only). Offset 0×21AE4 is the check for Soundproof against the remaining team members of the Heal Bell user’s team. Basically the new instruction is: check if [Pokémon] used move with ID 0 and check for every instance of ability with ID 255. Note: You shouldn’t replace 2B by 00, because the ability with ID number 0 is used in-game when an ability gets cancelled (Gastro Acid comes to mind), whereas you can replace D7 by 00 since there is no legitimate way to get the move with ID number 0. * Regions’ differences: Language Offset 1 Offset 2 Offset 3 Offset 4 Offset 5 Japanese 0×98A8 0×98B8 0×990E 0×21AE6 0×21AEC Korean 0×98A4 0×98B4 0×990A 0×21AE2 0×21AE8 Others 0×98A0 0×98B0 0×9906 0×21ADE 0×21AE4
  12. Credits go to PowMikelan98 for discovering this and giving me permission to post this. Original post: http://wahackforo.com/t-21923-pag20#195 Open your HeartGold or SoulSilver ROM with CrystalTile2 Go to folder a/1/8/0 right-click and then click on sub-file sort. The data is 89 bytes for each Pokémon, the first bunch of data being that of Pokémon with ID 0. For example to go to the data of Milotic (ID 350), we do this simple operation: 350×89=31150 31150 is 79AE in hexadecimal, thus you add 79AE to 3C to get the relative address for Milotic's data. Note: first byte is labelled as byte 0, not byte 1. For each Pokémon: byte 1 governs the movement's type when a Pokémon is sent out (for example 0×13 (19) makes the Pokémon flash with electricity, like Raichu or Jolteon for example). byte 86 is the sprite's position on the Y-axis, a signed value who moves the sprite from 128 pixels down (80) to 127 pixels up (7F). byte 87 is the shadow's position on the X-axis, a signed value who moves the shadow from 128 pixels to the left (80) to 127 pixels to the right (7F). byte 88 is the shadow's size: 0=none 1=small 2=medium 3=big
  13. so i have this idea that i've been kicking around in my head probably since right after b2w2 came out in japan. i think this will be a set of games that is hacked for a good long time to come. this is quite likely the last set of main series releases on the ds. anyway, what if we could actually program for the games? i don't mean in assembly, but in C or C++. i know what i would have to do and exactly what i would have to write to create a nice, robust library for low-level manipulation of the game. for example, say you wanted to decrypt a party pokemon do something with one of its fields: (let's say the level for pkm party slot 3) u32 slot3_lv = getPkmStat(getPartyPkmAddress(&PkmBlk, 3), PKM_LV, NULL); you could do that instead of writing some assembler and compiling it with the gcc assembler from devkitarm, arm-none-eabi-as, and hoping you got the syntax right, all the pointers right, etc etc. some of the things you could do: -create your own set of overlays and load them like gamefreak using their overlay handler -not just write your own scripts, but write your own code and create your own script commands to use in your scripts -create your own data files and load them into memory to manipulate them with your own code -add your own code to the engine -add new fields and data to pkm files -add new data to the save game -add your own events and save them, add new swarms and other events -add new stuff to happen at midnight -tweak damage calculations, stat calculations, a lot of stuff without needing an AR -hell, rewrite the graphics renderer if you're feeling really enterprising my list of script commands is very nicely filled out and quite thorough- all from analyzed code, all completely correct. i've done everything on this list(barring a lame attempt at the last one). what i'm offering is a way to do it more easily through a library and higher-level code instead of assembly. something like this would be much more accessible. i have an IDA database absolutely packed with info that would be so useful to this along with quite a few pages in a notepad of stuff and even more kind of bouncing around in my head that i've never mentioned to anyone. i have a script compiler partially done, a script decompiler partially done, and the source files for libPKM prepped, but not started. this has the potential to be a full devkit for bw2. the reason i'm doing this and not just starting work directly is that i'm wondering how many people would actually use it. i can think of less than a half dozen people that even could use it. so.. would anyone out there use this? it would take hacking this game to a whole other level, but it's not worth doing if i'm going to spend a ton of time on it and no one is going to use it. i'd love it if people could get behind this a little bit because it has huge potential, but like i said i don't really know how many people can use it. thoughts?
  14. 0. Why PyQt? When ever one plans the development of an application, an important consideration is the language one will use to code it. Some of the things that can play a role are: Will the application have a GUI Will the application be cross-platform or platform specific. Do you want a high-level or low-level language (or something in between) Nowadays, it is very common to want to develop applications that have a user friendly GUI. For windows only applications C# is a great option. Visual C# Express is available for free from Microsoft and has an easy to use GUI builder. However, if one wants to code a cross-platform application C# is no longer such an attractive option. While The Mono Project aims to allow for C# applications to be cross-platform there are many things missing. C++, a very popular and poweful language, is a cross platform language, but unfortunately it does not have a standard GUI builder. What one must do is decide on a package to use for the GUIs. Some populat options are WxWidgets and Qt. However, C++ is a low-level language. If one prefers a high-level language to stay away from all the complications of programming in C++, Python is a great option. Like C++, it is a cross-platform language. Also like C++, it does not have a standard GUI package. Because Qt is one of the more powerful and expansive GUI packages for C++ and has been ported to python, PyQt is one of the best options for developing GUI applications with Python. The official PyQt introduction can be found here: http://www.riverbankcomputing.co.uk/software/pyqt/intro Or particulat interest is: As mentioned in the official Why PyQt?, Python is an interpreted language, whereas C++ is a compiled language. This can mean slower applications. When speed is a crucial issue, one might choose C++ despite having to deal with the low-level language implications. I. Getting Started Here a few things that you need to get started with PyQt. Python 2.6 http://www.python.org/download/ PyQt4 for python 2.6 http://www.riverbankcomputing.co.uk/software/pyqt/download I started learning pyqt from this book: http://www.qtrac.eu/pyqtbook.html Even if you cannot buy the book or find it at a library it is still useful to get this: http://www.qtrac.eu/pyqtbook26.zip Inside you will find sample code and more importantly Make PyQt (makepyqt.pyw) Make PyQt is a python program that will turn the ui files made using the Qt Designer. II. A PyQt IDE While it is possible to develop pyqt programs with only a text editor, there are many conveniences that once can take advantage of. I would at least recommend using the Qt Designer (comes with PyQt) and Make PyQt (makepyqt.pyw) to generate the code needed for the GUIs. Combined with something like Programmer's Notepad this works very nicely. However, for those who prefer to use an IDE, there is a good option. The Eric4 IDE is a great tool that helps keep one's projects in order. I will be using it for the examples. III. Example (Updated example, comming soon) PyQt programs begin as follows: from PyQt4.QtCore import * from PyQt4.QtGui import * import ui_ppremain PyQt4.QtCore and PyQt4.QtGui are the basic modules that we need to make PyQt Programs. import ui_ppremain, imports the file ui_ppremain.py, which is what makepyqt.pyw outputs when you choose to build in the directory where you have your ui files. and the code that executes the program as follows: app = QApplication(sys.argv) mw = MainWindow() mw.show() app.exec_() the code for the main window would be: class MainWindow(QMainWindow, ui_ppremain.Ui_MainWindow): def __init__(self,parent=None): super(MainWindow,self).__init__(parent) self.setupUi(self) self.updateUi() self.romname=""; def updateUi(self): self.nameLabel.text="ROM Name:" One thing to notice is that indentation is important in python. Structure is provided through indentation rather than braces as in other languages. More concrete examples to come later. Feel free to ask questions.
  15. General Is PKHeX available for the Macintosh OS or Linux? No. You can use software like Wine/Mono to run it on these operating systems, however the program may not function as intended. My Pokémon won't work on WiFi battles or can't be traded. Why? This is usually a Pokémon legality issue. These problems aren't dealt with in the PKHeX subforum; see the announcement regarding cheating online. What is the Mystery Gift "Received List"? Every Gift has a unique ID associated with it. When you receive a Mystery Gift the game flags your save file as having obtained the gift, and doesn't allow it to be obtained again. PKHeX will set the used IDs for you; an ID can be deleted by right clicking the ID and choosing to "Delete". Can PKHeX create backups automatically? Yes, create a "bak" folder in the same location as the executable, and PKHeX will export a backup of every new save you load. Generations 7, 6 Is PKHeX compatible with Powersaves or Sky3DS? No. It never will be. Save files must be decrypted in order to load & save, and must be resigned before put back into your cart data. Generations 5, 4, 3 I'm using a flash card (R4, Acekard, etc) or emulator and my save file isn't able to be loaded. What's going wrong? Make sure the save data is in 4 megabit format (512KB) for Gen4/5 games, and 128KB flash for Gen3 games. Generations 2, 1 Does PKHeX support these games? Yes! Be sure you are exporting your save file in the "Battery" format (raw save file, not emulator specific).
  16. Main feature Awwww… too bad that Deoxys' stats are not recalculated after each fight like in Gen III, otherwise I would have used that. First and foremost, you have to know that the game double-checks for the 100 EV limit: the first check is triggered by the corresponding vitamin, the second check is run no matter the used vitamin. Now we choose a value to replace 64 (100) with, might as well use FC (252) for convenience's sake. Here's how you proceed to lift the limit: Decompress arm9.bin Case-by-case checks Go to offset 0×90034* and change the value 64 into FC, this is the check for the HP Up Go to offset 0×900A0* and change the value 64 into FC, this is the check for the Protein Go to offset 0×9010C* and change the value 64 into FC, this is the check for the Iron Go to offset 0×9017A* and change the value 64 into FC, this is the check for the Carbos Go to offset 0×901E8* and change the value 64 into FC, this is the check for the Calcium Go to offset 0×90254* and change the value 64 into FC, this is the check for the Zinc * Regions' differences Language Offset 1 Offset 2 Offset 3 Offset 4 Offset 5 Offset 6 Japanese 0×8F910 0×8F97C 0×8F9E8 0×8FA56 0×8FAC4 0×8FB30 Spanish HG 0×9002C 0×90098 0×90104 0×90172 0×901E0 0×9024C Korean HG 0×90728 0×90794 0×90800 0×9086E 0×908DC 0×90948 Korean SS 0×90720 0×9078C 0×907F8 0×90866 0×908D4 0×90940 Others 0×90034 0×900A0 0×9010C 0×9017A 0×901E8 0×90254 [*]Global check Go to offset 0×90A96* and change the value 64 into FC Do the same at offset 0×90ABC* and offset 0×90AC0* * Regions' differences Language Offset 1 Offset 2 Offset 3 Japanese 0×90372 0×90398 0×9039C Spanish HG 0×90A8E 0×90AB4 0×90AB8 Korean HG 0×9118A 0×911B0 0×911B4 Korean SS 0×91182 0×911A8 0×911AC Others 0×90A96 0×90ABC 0×90AC0 Bonus feature 1: Change how many EV are given by each vitamin Open the folder a/0/1/7. The amount of EV added for one given stat W by its respective vitamin X is located at byte Y on file Z. Stat Vitamin Byte File (W) (X) (Y) (Z) HP HP Up 21 45 Attack Protein 22 46 Defense Iron 23 47 Speed Carbos 24 48 Sp.Atk. Calcium 25 49 Sp.Def. Zinc 26 52 Note: First byte is assumed to be byte 0, not byte 1. That byte always has a value of 10 (0A), it's a signed value who can subtract as much as 128 EV (80) or add as much as 127 EV (7F). We're going to change that value to one who can divide 252 (FC) while staying very close to 10 (0A). Why not 12 (0C)? But what if you want to put EV not divisible by 12 in one particular stat? Well, that's what EV-reducing Berries are for Since the Vitamins are set up to give 12 EV now, it means the modulo applied here is a modulo 12. But at Lv.100 1 point in a stat equals 4 EV, thus we have to apply a modulo 3 instead (12/4). Modulo 3 is 0 => remainder of Wanted_EV/12 is 0 => no correction needed. Modulo 3 is 1 => remainder of Wanted_EV/12 is 4 => give 2 Vitamins (+24) and then 2 EV-reducing Berries (-20). Modulo 3 is 2 => remainder of Wanted_EV/12 is 8 => give 4 Vitamins (+48) and then 4 EV-reducing Berries (-40). Don't forget this is meant as an emergency feature to give the player a mean to EV-train a Lv.100 Pokémon, hence why you are allowed to complicate the feature. Bonus feature 2: Lower the EV limit from 255 to 252 Yep, we're borrowing that feature from Gen VI. Decompress overlay9_0012.bin. Go to offset 0×EC9C* and change the value FF into FC. Do the same at offset 0×ECA0*. * Regions' differences Language Offset 1 Offset 2 Japanese 0×ECA4 0×ECA8 Korean 0×ECA0 0×ECA4 Others 0×EC9C 0×ECA0 Decompress arm9.bin. Go to offset 0×4B948* and change the value FF into FC. Do the same at offset 0×4B94C*. * Regions' differences Language Offset 1 Offset 2 Japanese 0×4B3DC 0×4B3E0 Spanish HG 0×4B940 0×4B944 Korean HG 0×4BA44 0×4BA48 Korean SS 0×4BA3C 0×4BA40 Others 0×4B948 0×4B94C
  17. So today we're going to restore the missing code needed to evolve some Pokémon by leveling them up in a specific location. More specifically Eevee into Leafeon, Eevee into Glaceon, Magneton into Magnezone and Nosepass into Probopass. As it is, there's currently no way to obtain those evolutions on a retail card without trading them to DPPt. This is the code for the location-specific evolution (this comes from Platinum btw): 07 4B 00 22 19 88 88 42 04 D1 50 1C 41 00 04 48 40 5A 70 47 92 1C 1B 1D [b][u]YY[/u][/b] 2A F3 D3 00 20 70 47 [b][u]XX XX XX XX[/u][/b] XX XX XX XX is the offset for the following data : 81 01 1A 00 CB 00 19 00 CF 00 18 00 D0 00 18 00 D1 00 18 00 D2 00 18 00 D3 00 18 00 D4 00 18 00 D5 00 18 00 D6 00 18 00 D7 00 18 00 D8 00 18 00 D9 00 18 00 DA 00 18 00 DB 00 18 00 DC 00 18 00 DD 00 18 00 FE 01 18 00 FF 01 18 00 48 02 18 00 49 02 18 00 Format is MM MM EE EE MM MM is the map number EE EE is the evolution method For example the first 4 bytes are read like this: 81 01 => 01 81 => map 385 which is Route 217 (oustide) 1A 00 => 00 1A => evolution method 26 which is used to evolve Eevee into Glaceon Ergo if you level up Eevee on Route 217, it will evolve into Glaceon. YY is the total of map-related evolution, times 2. Map-related evolutions are 4 bytes long each, the total is 84 bytes long. 84 / 4 = 21 Then multiply by 2. 21 × 2 = 42 42 is 2A in hex, thus in Pokémon Platinum YY is equal to 2A. As surprising as it may be, the function still exists in HGSS, or rather the leftovers. So how are we going to restore the code ? Step 1: Open Pokémon HG or SS with CrystalTile2. Step 2: Decompress the arm9 by right-clicking and then selecting Extract(U). Step 3: We're going to search for a place to fit in the new code, a place with enough unused FF FF should do the trick. Why not for example the address 0×11025C ? Step 4: Copy and paste this string: 07 4B 00 22 19 88 88 42 04 D1 50 1C 41 00 04 48 40 5A 70 47 92 1C 1B 1D [b][u]12[/u][/b] 2A F3 D3 00 20 70 47 [b][u]C8 02 11 02[/u][/b] Step 5: We need to paste the new map-data too. But wait a second, none of Leafeon, Glaceon, Magnezone or Probopass are listed in the Johto Dex! To alleviate that issue, map-specific evolution are going to be Kanto-only. Eevee into Leafeon : Virdian Forest (that one is a given) Eevee into Glaceon : Seafoam Islands except the Gym part (again, a given) Magneton into Magnezone and Nosepass into Probopass : Route 10 and Power Plant (reasoning being that Power Plant used to be home to Magnemite and Magneton) That makes for 9 maps in total, thus 36 bytes in total, hence why YY in this code is equal to 12. Copy and paste this string at address 0×1102C8 (thus XX XX XX XX is equal to C8 02 11 02 which is 021102C8 in little-endian): 92 00 1A 00 C5 01 1A 00 C6 01 1A 00 C7 01 1A 00 C8 01 1A 00 93 00 19 00 12 00 18 00 84 01 18 00 D3 01 18 00 Step 6: A problem arises, there are 3 routines who use a Branch linking to the map-evo function, thus we have to modify the pointers: Go to address 0×3CE04 and change FEFC02FC into D3F02AFA. Go to address 0×51E5C and change E9F7D6FB into BEF0FEF9. Go to address 0×81E6E and change B9F7CDFB into 8EF0F5F9. This is only for English versions for now, I will eventually update with offsets for all regions. Step 7: Save your modified arm9 and close the Hex editor. Step 8: Reinsert the arm9 into your ROM. Now you won't need to transfer the aforementioned Pokémon to DPPt with this trick, so go and evolve that Eevee / Magnemite / Nosepass.
  18. So you want to make a ROM hack? First, you need a ROM to hack. It would be illegal to download one, but there are other ways to get a ROM. There's 4 major ways you can get a ROM, in order of speed (descending): USB Backup Device Slot 2 flashcart Slot 1 flashcart + EZ Flash 3in1 Slot 1 flashcart + Wi-Fi Note that 2, 3, and 4 all require that you use a DS lite (or original DS). Now for the details of each: 1. USB Backup Device There's several out there that you could find with a web search, but for ROM backups, I recommend the SMS4. I won't go into details of any others unless anyone asks. Chances are, if you have a USB backup device intended to back up ROMs, you would know. If you already have a USB backup device like the NDS Backup Adapter Plus or R4i Backup Adapter, these do not support backing up ROMs. 2. Slot 2 flashcart You have at least two choices. I recommend the NDS Backup Tool Slot 2 by Rudolph (not the red nosed). There's also a newer tool called Wood Dumper. I haven't tried it, but it looks good. 3. Slot 1 flashcart + EZ Flash 3in1 If you don't have a slot 2 flashcart but happen to have an EZ Flash 3in1, then you can use NDS Backup Tool 3in1. It will take significantly longer than the above tools, because it has to Erase the NOR Write a portion of the ROM (after you swap the flashcart with your game) Ask you to restart the tool Write the NOR to your flashcart If your ROM is over 32 MB, it will repeat this process until complete. 4. Slot 1 Flashcart + Wi-Fi Do you have lots of time? I hope you have, oh, say 12 hours to let this process go. Wi-Fi backup tools let you use your computer and your DS Lite compatible Wi-Fi to backup your ROM with the DS's very slow wireless chip. Be aware that the DS lite doesn't support WPA (which is what most people have). It only supports unsecured and WEP (which is more of an inconvenience to hackers than security). But if you happen to have compatible Wi-Fi, I recommend Rudolph's NDS Backup Tool Wifi, but it's more of a hassle to set up than Wood Dumper. NDS Backup Tool Wifi connects to your computer. Wood Dumper lets your computer connect to it. For NDS Backup Tool, refer to the readme in Pokedoc's Wi-Fi save backup tool. For Wood Dumper, find an FTP client (Windows Explorer has OK FTP support) to connect to: ftp://[ip displayed in Wood Dumper]/ If you have any questions, feel free to ask. But remember: downloading ROMs is illegal and could land you with severe legal consequences.
  19. PPRE Tutorial & FAQ Welcome to the Project Pokémon´s ROM Editor Tutorial and FAQ! Please go to THIS TOPIC to download the newest version of PPRE. This tutorial should give you all the information you'll need to get the programme working. Some extra information is given in CODE fields. You can ignore these parts of the tutorial if you already know how it works. If you already have your map with the downloaded files and a Rom File, you can SKIP STEP 1. If you're uncertain if you did the right things, just read STEP 1 as well. Tutorial Step 1 First create a New Map. For example, go to My Documents, hit the right mouse button and select 'New > Map'. Rename this map to 'PPRE' for convenience. I'll call the new created map PPRE from now on. The second step is to download the programme. Check the official PPRE Topic for a download link. What you actually download is a .ZIP file. [size=3][b]Extra:[/b] [i]What are .ZIP files and how do I open them?[/i][/size] With special programmes, you can create .ZIP files. .ZIP files make it easier to carry different files; it compresses SEVERAL files to ONE file. For example; to get PPRE working, you need 3 other files. Instead of downloading these 3 other files seperately, you can just download them all at once via a .ZIP (''package'') file. You can open .ZIP files with programmes like WinRAR or WinZIP. Evaluation Versions of these programmes can be downloaded for free from their sites. Just click one of the links below to go to their official site. [list] [*][url="http://www.rarlab.com/download.htm"]WinRAR[/url] [*][url="http://www.winzip.com/index.htm"]WinZIP[/url] [/list] Open the downloaded .ZIP file with either WinRAR of WinZip. It contains 4 files, which should be: ndstool.exe ppre.exe Tabel.tbl thenewpoketext.exe If this is correct, select the 4 Files and hit the right mouse button. Now click 'Extract...' (or something like that, it might differ between the programmes). (Check the Spoiler for an image) A new screen opens. Search for your new created map and hit the Unzip / Extract button. The 4 files will be extracted to your new map! You now need a Pokémon Rom. It has to be one of the following Roms: Pokémon Diamond Pokémon Pearl Pokémon Platinum Pokémon Heart Gold Pokémon Soul Silver [size=3][b]Extra:[/b] [i]Where can I download a Rom File?[/i][/size] Please remember though that Rom Files are [b]ILLEGAL[/b]. You may only use them if you have an original copy of the game. I can't help you with downloading a Rom file as they are illegal. NEVER ask for a Rom File on this forum. The rom has to be UNTRIMMED (untouched). The Rom should be in a .ZIP file, too. You have to Extract the Rom to the SAME NEW MAP! The following thing is very IMPORTANT. Open your new map where your Rom File should be. Now RENAME the Rom File. For example, if you have a Pokémon Diamond rom, rename it to: diamond.nds, if you have a Pokémon Platinum Rom, rename it to platinum.nds and if you have a Soul Silver Rom, rename it to soulsilver.nds, etc.! This might seem unnecessary, but it is very important. What we have is a New Map (hopefully named PPRE) with 5 files (the 4 PPRE files and 1 Pokémon Rom). Step 2 Now you have to open the ppre.exe file. Double click to open it. You should see the following screen (beta-number might differ). Follow the following steps to get the programme working. Never forget any of these steps or it will go wrong! Step 1: type in the name of your Rom (which should be diamond.nds, pearl.nds, platinum.nds, heartgold.nds or soulsilver.nds) in the RED TEXT FIELD. With 'Red' I mean the red-circled field as you can see in the screenshot above. You have to add the '.NDS' suffix! Step 2: Now you click the green-circled button 'Set Rom'. A black screen should open. Please wait, it will take around 1 minute. Do not click anywhere during the progress. When the black screen goes away, you can continue to Step 3. [size=3][b]Extra:[/b] [i]What is happening during Step 2?[/i][/size] The ppre programme is now 'opening' your rom. It uses the ndstool.exe file to create a temporary map, which is needed to edit your Rom. In your PPRE map, a new map should be created, called: tmp_platinum if your game was Pokémon Platinum Version, or tmp_pearl if your game was Pearl, and so on! This map is needed to edit with PPRE, so DO NOT delete that map. Step 3: it's time to edit! I might create a tutorial about how that works, too, but for now, you should be able to do it yourself! You can edit POKéMON, MAPS and TRAINERS. As this is a Beta, you can not edit ABILITIES, ITEMS, MOVES, etc. yet. Don't click that buttons. Step 4: ah, so you changed the things you like? You made Lugia evolve into Magikarp and Pikachu evolve into Arceus? Eh, nice. Now you have to save your game. Take a look at the screenshot. You see the blue-circled textfield? You have to enter the following: pearledit.nds if you were editing a Pearl Rom, platinumedit.nds if you were editing a Platinum Rom, heartgoldedit.nds if you were editing a Heart Gold Rom and so on! Step 5: now click the orange/yellow-circled button 'Write ROM'. Wait a minute again and take a look at your PPRE map. A new file called platinumedit.nds (or something else, depending on the rom you're changing) should be created! YOU NOW PERFECTLY EDITED YOUR ROM! Thanks for using this tutorial! Happy Rom-editing! [ --- I'LL ADD THE FAQ HERE VERY SOON AND UPDATE IT FROM TIME TO TIME, PLEASE HAVE SOME PATIENCE! --- ] @ the Moderators, as my mother language is not English, be free to edit any typo's and spelling errors.
  20. Anyone with a guide or tutorial that they would like added to this directory please post here and I will add it to the first post. Please be sure that all guides are complete and as accurate as possible. DDD's Sprite Editing Tutorial &
  21. So, if you want to fix the freezing problems, there is an ActionReplay DS code and a Codebreaker DS code that allows you to play without freeze. The ARDS code is 020DD9E4 E1A00000 (You have to tick the "RAW" box on NO$GBA) The CBDS code is 220DD9E4 E1A00000 (You don't need to tick the "RAW" box) I found the ARDS code on the internet, then converted it to CBDS using a code converter, tested it and it worked. Now, if you have a flashcart that supports full ARDS (Including raw) or supports CBDS, you're good to go. Please note that I only tested these on NO$GBA, so it might only work on this. If you want to help me, you can tell me if R4DS supports either raw ARDS codes or CBDS. I know if supports ARDS, but I don't know about CBDS and raw ARDS codes.
  22. I can't find one anywhere (that's suitable for me, and specifically for games). I already understand Hexadecimal, Binary, Octal (Not that I'll need it), Decimal (THE HARD KIND), and how to convert between them. I also know Logic Gates, but that probably only applies to hardware, not software. I want to learn about addresses, and what order I would put a code in, and things like that. I own a Trainer Toolkit, but I don't understand large portions of the manual. If anyone could give me a link to a website that I don't have to sign up for, I would be eternally grateful. I still don't get what 32-bit addresses and "If equal to/If more/less than" means. If you know an incredible tutorial that I would have to sign up for, that would be fine, too. Thanks in advance!
  23. EDIT: I added a new script at the bottom of this post. Hi guys, this is my first tutorial so sorry for mistakes Anyways, like the title says, it's about Pokemon Trainer Battle Scripting. So far I only know it works for HG/SS. If you want to use in Platinum or D/P, feel free to try and please tell me if it works. On to the tutorial. Here are the tools you need: Once you've downloaded the things needed, put your HG/SS rom into PPRE's folder. Then open up PPRE and click on choose rom. Select your rom and click Set Rom. Then command prompt should appear. PPRE is extracting your rom now. Once PPRE has finished, click on Trainers. Once you opened up Trainers, select a random trainer from the list. Edit the Trainer's information now(Number of Pokemon he/she had and so on). Once you changed the number of Pokemon, click another trainer from the list and go back to the trainer you edited to see that the number of Pokemon had changed. NOTE: I can't seem to edit the Trainer's name, so I used an older version of PPRE, which worked. However, the Pokemon's level is maximum 99 and I cant save my scripts using that. After you've edited the Trainer, TAKE NOTE OF THE NUMBER BESIDE HIS/HER NAME. IT'S VERY IMPORTANT. For me it's 24. Save your changes afterwards. Next, go to Maps and choose the map you want. For me I'm going to use Cianwood City Gym. Go to the Events tab and click on Overworlds. See the number at the top right corner? That's the number of overworlds. Click on the up arrow to increase the number of overworlds. You might see a new tab now. Type in the ID of the overworld, which is this: Now type in the sprite. The values for them are here: However, PPRE can read only Dec numbers, but these are Hex numbers. So open up Calculator, and go to the Scientific Mode for XP. I don't know what to press for the other computers so you have to figure out yourself. Go to Hex and type in the number for the sprite. Click on Dec next to get the Dec number. Write this in PPRE. Next for the movement. I don't really have the list for the movements(I'm too lazy to figure out :'( So if you got the list, please tell me and I will give credit.) However I do know that 15 is facing down and 20 is facing up.) Type it in the box. Flag... I don't really know what's that but I will figure it out sometime, probably after B/W is released.. I'm just too busy :sleeping: Script we will come to it later. Line of Sight, by the name, you probably know what's it. It's use for detection for normal trainers, like when you're walking along Viridan Forest when a trainer spot you. X-, Y- and Z- coordinate, pretty simple. I don't know bout Z though. Anyway, you might ask, how do we find the X and Y coordinate? Simple! Using the Lua Script, open it in DeSmuME and activate the script! Move to the spot where you want your trainer to be at and he will stand there! However the Lua Script doesn't work on Patched Roms. After finding out the X and Y coordinate, type it in the boxes. Once you've done all these, take note of the ID of your overworld. Next, go to the Text tab. You will see that there's already a lot of text. Write your trainer's beginning and losing text like this: text_[continued number]="[text]" So for example I want to write this: Yo! This is a guide! And the text number is 5, I will write in PPRE this: text_5="Yo! This is a guide!" Just remember, \n is for line break and \r is for new box. After writing your text, note down the text numbers - both beginning and lose text. I don't know how to make the winning text activate, sorry Now go to the Scripts text and go to Scripts. Press add script and go to the new script. Now we can begin writing our script. Example of Script: Lockall starts your script. Lockall is basically the same as the script starter you use when hacking GBA games. Faceplayer, too, exists in GBA hacking. Just let the trainer turn to you when you talk to him/her. Message [number] is the text you wrote just now. [number] is the text number which I told you to note. WaitButton and CloseMsgOnKeyPress works together. The trainer battle will begin after you pressed A or B(WaitButton). The message will then close(CloseMsgOnKeyPress). TrainerBattle [number] 0 1 starts your trainer battle. [number] is the trainer number I told you to note just now. You can see why it's important now. Message [number] is the losing text. Releaseall MUST be present if you wrote Lockall. It releases the NPCs around. End is the ending of the script. VERY IMPORTANT. Now that you finished your script, save your changes. Go back to PPRE and type in your rom name, also remember to write in the ".nds" without the quotient marks. After your rom has finished creating, open your rom and enjoy! Also if you want to edit the sprite of your trainer, I might write a tutorial on it, but it's best if you follow KazoWAR's on Youtube. Thanks for reading my tutorial! This is my first tutorial so I hope you would rate my skills on writing tutorials. ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Here's a completely optional part: Removing people. Basically, after you've finished your battle, you can make the trainer disappear. Here's an example of the script: The new part edited, as you can see, is Applymovement 5 mov_1 Waitmovement Removepeople 5 Before I go into explaining, go to Maps, choose your map and Scripts, before finally going to Movements. Choose Add Movement. A new tab should form. Now, you have to write your movement. The movement format must be like this: [movement_name] [number_of_times] Movement_name is the type of movement you want your OW to move, such as the 1 I used, WalkDownNormal. Here's a list of the movements: Number of times is the number of steps you want your OW to move. Pretty simple, you should understand. Now to explain the script. Applymovement [OW ID] [mov_[id]] is put into your script. Applymovement is to apply a movement on [OW ID] which is your OW's ID, which I explained earlier at the previous post, and [mov_[id]] is the ID of your movement. For me it's mov_1. Waitmovement is to wait for the movement to be finished before the OWs can be released. Removepeople [OW ID] is to remove the OW you assigned to. By now you should know what's [OW ID]. So now that your movement script is finished, save your changes, write your rom and begin playing! ~Hope this helps!~ LUA Script.zip
  24. Is this possible, I want to actually be able to use my pokedex. And the data is already in-game. Is there a way to edit ORAS/XY/BW/BW2/PT/HG/SS to support these features? I want lbs to kg and feet/inches to proper meters. Anyone know if and how to do it? Thanks, searching yielded no results.
  25. Complete title: Treat two different lines as the same species for breeding purposes Disclaimer: For now this goes for games in: English French German Spanish (SS only) We already have the Nidos and Volbeat+Illumise. This time we're going to add (not replace mind you) two new rules for breeding (males on the left, females on the right): the controversial Tauros+Miltank Gyarados+Milotic Decompress arm9.bin First we're going to change the pointer so that it points to the new piece of code, go to offset 0×6CA88 and change FFF7AEFE into 91F0F6FF At offset 0×FEA78 add this: F8 B5 84 B0 0D 1C 01 A9 00 90 6D F7 A1 FB 00 24 01 AF A6 00 B8 59 05 21 00 22 6F F7 D5 FD 61 00 03 AA 50 52 10 1C 40 5A 84 28 04 D1 01 20 60 40 28 70 6C 70 08 E0 B8 59 71 F7 6E FA 01 28 03 D1 01 20 2C 70 60 40 68 70 60 1C 00 04 04 0C 02 2C DF D3 28 78 41 00 03 A8 40 5A 72 F7 B3 FB 04 1C 1D 2C 09 D1 00 98 2A F7 15 FC 02 21 89 03 08 42 01 D0 20 24 00 E0 1D 24 F1 2C 09 D1 00 98 2A F7 09 FC 02 21 89 03 08 42 01 D0 80 24 00 E0 F1 24 1C 48 84 42 09 D1 00 98 2A F7 FC FB 02 21 89 03 08 42 01 D0 81 24 00 E0 16 4C 13 48 84 42 09 D1 00 98 2A F7 EF FB 02 21 89 03 08 42 01 D0 0F 4C 00 E0 0D 4C 0E 48 84 42 00 D1 44 1E 68 78 41 00 03 A8 40 5A 84 28 0B D1 28 78 81 00 01 A8 40 58 71 F7 1A FA 01 28 03 D0 69 78 28 78 68 70 29 70 20 1C 00 00 04 B0 F8 BD 3A 01 00 00 39 01 00 00 EA 01 00 00 5D 01 00 00 This is it, or it is? Not quite, remember that in gen IV if you try to breed male Nidoran / Volbeat with a Ditto the offspring will always be male. This is because the code checks when the offspring is female Nidoran or Illumise, if it is the case then the egg has a 50 % of hatching into either the species of the female or the species of the male. To fix this follow the following steps: Open your ROM in CrystalTile2 Extract the folder poketool/personal/pms.narc: This is what the game use to tell the offspring that the a given species of Pokémon will produce. We're going to change the following: 20 00 into 1D 00 (3 times) 80 00 into F1 00 (once) 81 00 into 5D 01 (twice) 39 01 into 3A 01 (once) Note: you can also give Tauros egg moves now.
×
×
  • Create New...