![]() |
Quote:
Quote:
They were fixed by @Squeetz in the community's Discord. I don't know a single thing about ASM, but I thought someone needed to bring this up in case anyone wanted to use it. Code:
|
Quote:
1. First, you'll want to download HackMew's thumb compiler, found on this page. 2. Then, save the files you quoted individually as [filename].asm, eg. attack.asm. Using the windows command prompt, type 'thumb [filename].asm [filename].bin' in the same directory as your .asm file and the compiler. Then, open the .bin file with a hex editor, and insert into free space, making sure the offset ends in a 0,4,8, or C. With these particular routines, you'll need to also insert [00 01 0A 00] for red font and [00 07 0A 00] for blue font, somewhere in your rom, and then change the pointer at the bottom of each routine to the location of each 4bytes string. So, if you inserted 00 07 0A 00 at 0x123456, 0x08BBBBBB would become 0x08123456. 3. At the top of each assembly routine you're trying to insert, there is an insertion instruction that has been commented out, eg. @ 00 49 08 47 XX XX XX XX at x137134 in the attack.asm routine. This means, at offset 0x137134 you type the above hex, where XX XX XX XX is a reverse pointer (+1) to the location of the attack.bin hex you inserted into free space from step 2. For example, if you inserted attack.bin at 0x987654, for example, XX XX XX XX will be 55 76 98 08. Do this for each routine and you should be all set! I hope this helps. let me know if you have any issues. |
Quote:
EDIT: So when I try that, I get this error. Quote:
EDIT #3: So, if I put the hex for attack.bin at 0x71A6B0, XX XX XX XX would be B1 A6 71 08? EDIT #4: It works! Thanks! Yours is the only tutorial for inserting ASM that I could actually follow and understand. |
Request for FR:
Volt Tackle by breeding with either parent holding a Light Ball. |
Request for Platinum:
Having coloured stats based on natures. I don't know if this could be done by editing the ASM used to implement this into FireRed and changing the offsets or if they are just too different. Either way, I think more work needs to be done on hacking 4th gen games, and I'd be happy to help (although I am very dumb). I'm currently looking into editing the hex of the 4th gen games but there doesn't seem to be any documentation on ASM for 4th gen and very little documentation on hex for 4th gen. If someone smarter than me can give me a good starting point as to where I could learn how to find out how to do this (if that makes any sense) I would be more than willing to learn. |
Quote:
|
Dumb question but what program is used to compile the ASM routines?
|
Quote:
Quote:
Quote:
|
1 Attachment(s)
[FR] Volt Tackle port from EM:
If you have free space from 0x270670-0x270741 (0xD2 bytes), use the IPS patch I provide here. ...It's a long story, so I will expand on this when I get the time. Fully working, I promise. You're gonna love it. edit: A bit of explanation now: I took a look at an Emerald disassembly and found the routine that calls to check if the egg at the Day-Care is a pichu and if either of the parents are holding a Light Ball. I ported that exact routine into FR, but I had to make a copy of the routine at sub_80460D4 as to include the pichu check. Then I had to make special 0xB8 call the new routine instead of sub_80460D4. Since I had made a copy of the routine I also had to make sure the new routine used all the same offsets as before, and therefore I placed the routine at 0x270670, which I happened to have free space. I wanted to place the routine at something like 0x760000 or higher, but the old offsets wouldn't work any more. Down below are the uncompiled stuff: This routine (located at 0x270670 in my patch) is a copy of the routine at 0x0460D4 but now includes the pichu egg check (in orange): Code:
Code:
Code:
edit2: I could probably just use bx r3? |
Quote:
Here's the steps I did in order: - repointed the first table located at 0x5B2CF0 to 0xDE43E0 and changed two pointers. - repointed the jumptable located at 0x13A168 (instead of 0x13A156 as I couldn't find the pointers for it) to 0xDE4760 and changed one pointer. - compiled your routine and inserted at 0xDE4794 (which is right after the repointed jumptable) - added new entry (6 pre-existing pointers) to 0xDE4720. - changed the byte at 0x813A148 from 0xC to 0xD. |
DIFFERENT PALS FOR THE MALE AND FEMALE BAG [FR]
Thanks to KDS for helping me fix the error. :) Insert this code: Spoiler:
example: Spoiler:
|
Scaled Experience Formula In Generation V, a new way of determining the Experience Points gained after Battle was introduced. Previously, the Experience Formula was a flat one, which did not change based on Level Differences between your Pokemon and the other one. In Black & White, they used a Scaled Experience Formula, which would cause your Pokemon to gain more experience if their opponent was a higher Level, and less if their opponent was a lower one. Today, I am sharing a way to have this sort of Scaled Experience Points in Fire Red or Emerald. I have included the download link to a folder which contains four items. Folder: (Download)
The Instruction Manual explains how the routine works and any extra information that is necessary to know (particularly if you would like to modify this routine for your specific hack). Important: Considering I first uploaded the first version of this routine a long time ago, you may have an older version of it. This version may be preferable to that one, and it is smaller than the previous version is. Therefore, one can simply insert it over the old version and not have to repoint anything. Extra Information This routine is compatible with Think0028's Experience All Patch. His original download link is unfortunately broken, hence why I put it in the download folder. If it was still active, I would have linked directly to it. If you inserted the Disable Experience Gain With Flag routine, originally by FBI, then you may wish to remove it, as this routine implements it. I am not sure if there is a conflict due to this, but at the very least there is a redundant check if you have two routines which both check the same Flag. It is also possible that this routine bypasses that one entirely, in which case you would want to remove it to avoid wasting space. Thanks and credits to FBI for that original routine, as without it I would likely not have been able to find the correct branching address for this routine. As I have nowhere else to post this information, I will say here that to remove the 1.5x Experience Boost you get for defeating a Pokemon in a Trainer Battle (like they did in Generation VII), do the following: Put 07 E0 at 0x21DD8 (FireRed) or 0x4A698 (Emerald) Put 1C E0 at 0x21E00 (FireRed) or put 28 E0 at 0x4A6C0 (Emerald) |
The two requests I ever made over here were in vain.. allow me to try another one instead.
How about a port of JPAN's Overworld Hacks to Emerald? I'm looking for a way to basically change a character's Front sprite, Back sprite and OWs to another one until I revert things back to how it was manually with another command. |
I need help making an eeveelution evolution happen i need it made so when an eevee faints in battle and then you feed it a rare candy while its fainted after battle it evolves into a ghost type eeveelution
|
Quote:
First here's a link to a tutorial on how to add new evolution methods. https://www.pokecommunity.com/showthread.php?t=329357 Second, you need a way to check if a Pokémon in your party is fainted. You can check the current HP of a Pokémon using the RAM offsets I posted here. ldr r1, .FirstPoke mov r1, #0x39 bl Decrypt cmp r0, #0x0 beq Evolve .FirstPoke is the first RAM offset in the lists I posted under the "Yours" heading. Basically what this little snippet does is it checks the current HP of the first Pokémon in your party and compares it to zero. If it's zero, the Pokémon is fainted and you can then branch to the next thing. You can change the party slot it checks, but ideally you would want a way for the code to know which Pokemon you selected. It might help to look through the evolution routines posted in the tutorial and see how they're structured. That's all I can really do without doing testing first, but that will have to wait until later because it's 2:30 in the morning as I'm posting this. PM me later if you still need help. |
Hello, I would like to request a hook routine to be added to the original TM's routine.
The new routine would be activated when the TM's were used and deleted, so a new item would be created in the ITEN bag. If possible, include checking if the bag is full. If yes, discard new item. Thanks in advance. |
Quote:
I think reuable tms are already done, if thats what you need... |
Quote:
He didn't mentioned if he wants the exact TM to be created yet again, so I'd say he's not looking for reusable TMs. |
Quote:
Quote:
Example: After using any TM, it is deleted from TM CASE and creates a NUGGET in the player bag. And if possible show the informed message where the new item will be in the bag. |
Fixing some major bugs/oversights with this routine seemed worthy of a new post so anyone who has implemented it can notice the changes:
Adding a Dodge Rate for Catching Wild Pokemon [FR] This routine uses the wild pokemon's base speed stat to calculate a probability that it will dodge a thrown pokeball (nominally ~5-10%) (credits to Urz, shanem7, and ghoulslash for bug finding, scripting, and testing!) Important Routine Notes:
Insertion Instructions:
The Routine: Code:
|
Expanding the Bag Entirely [FR]
-Big Edit: The routines have been completely rewritten from scratch to work properly now. This has been done in bits and pieces over the years (I believe it's actually been done completely for Emerald), so I decided to rewrite the bag storage routine for Fire Red. Pre-Requisites
The Code Spoiler:
Credits
|
Alright I'm making a request!
Everyone has probably heard about Bank system... On which can allow the player to store his money, loans, interest (ofc in support with primes RTC) and other cool banking stuff. PS this thread has helped me a lot thanks "A free helper" Blah ;) ! |
Quote:
|
Aight, this request is similar to shinyquagsire's berry selection screen...
I need an asm which can show the party screen and on selecting the pokemon, exits and stores data in a var... However theres a twist, im not talking about special 0x9f... The mons need to be read from Ram where PSS stored the mons... So now y'all get it why its so complex... If that is to be pulled off, it'd be amazing;) |
Quote:
replace the part where it accesses your party with the new ram address. this likely just involves replacing an address from the routine, literally nothing more. callasm the new special and ezpz |
| All times are GMT -8. The time now is 8:46 AM. |
![]()
© 2002 - 2018 The PokéCommunity™, pokecommunity.com.
Pokémon characters and images belong to The Pokémon Company International and Nintendo. This website is in no way affiliated with or endorsed by Nintendo, Creatures, GAMEFREAK, The Pokémon Company or The Pokémon Company International. We just love Pokémon.
All forum styles, their images (unless noted otherwise) and site designs are © 2002 - 2016 The PokéCommunity / PokéCommunity.com.
PokéCommunity™ is a trademark of The PokéCommunity. All rights reserved. Sponsor advertisements do not imply our endorsement of that product or service. User generated content remains the property of its creator.
Acknowledgements
Use of PokéCommunity Assets
vB Optimise by DragonByte Technologies Ltd © 2023.