![]() |
Quote:
|
Quote:
|
Quote:
|
Quote:
Basically, it is a port of FBI's Toggling Capturability Routine available only on Fire Red to Emerald. This port makes a certain Pokemon uncapturable by just setting var 8000 to 0x1. This only works on Emerald . How to insert: First compile the following ASM code and insert into free space: Spoiler:
Here is a compiled version: Code:
Code:
NOTE: This only prints the text "The TRAINER blocked the ball! Don't be a Thief!". I suggest changing this to "The ball is Blocked! This Pokemon cannot be caught!" Optional: Insert the following in free-space location in your ROM: AAAAAA: Code:
Code:
In 0x5CC650, insert the reverse pointer of BBBBBB (do not add 1) NOTE: This will replace the "The TRAINER blocked the BALL" and "Don't be a thief!" strings. https://scontent.fmnl3-1.fna.fbcdn.net/v/t1.15752-9/37132326_1767827489951966_8381321768370962432_n.png?_nc_cat=0&oh=0f4777dd9ce48a5e35d1bf29c8576d81&oe=5BD64FEBhttps://scontent.fmnl3-1.fna.fbcdn.net/v/t1.15752-9/37565425_1767827499951965_3780329454006435840_n.png?_nc_cat=0&oh=705f5c32dfde7c10f019eba9b7ee7a18&oe=5BCEF31C All credits goes to FBI. |
Quote:
And sorry if this is a dumb question, but how do I change the message when the pokeball is blocked? |
Quote:
AAAAAA: Code:
Code:
In 0x5CC650, insert the reverse pointer of BBBBBB (do not add 1) NOTE: This will replace the "The TRAINER blocked the BALL" and "Don't be a thief!" strings. Welp, that's fine for me. The previous strings are kind of not friendly lol https://scontent.fmnl3-1.fna.fbcdn.net/v/t1.15752-9/37132326_1767827489951966_8381321768370962432_n.png?_nc_cat=0&oh=0f4777dd9ce48a5e35d1bf29c8576d81&oe=5BD64FEBhttps://scontent.fmnl3-1.fna.fbcdn.net/v/t1.15752-9/37565425_1767827499951965_3780329454006435840_n.png?_nc_cat=0&oh=705f5c32dfde7c10f019eba9b7ee7a18&oe=5BCEF31C |
Quote:
Just replace the offset at MyLoc with your desired free space and then copy paste the assembled code to 0x0462B0 and MyLoc as appropriate. Code:
|
Quote:
|
Excuse me, can you put Ruby's routines here?
|
Forgive me for not contributing, but I had to ask.
At the risk of being totally unhelpful to the thread: does anyone know of working routines for attack boosting Gems (Normal Gem, Flying Gem, etc., etc.) for either FireRed or Emerald? I've seen a certain Japanese hack of FireRed has gotten them to work and it looks like Pokemon Clover either has implemented them already or is planning to offer them eventually. |
The bag expansion for Fire Red has been completely revamped and should work now:
https://www.pokecommunity.com/showthread.php?p=9743323#9743323 |
Quote:
24-hour format (use instead of 'Routine I'): Spoiler:
12-hour format (use instead of 'Routine I'): Spoiler:
|
https://cdn.bulbagarden.net/upload/7/7c/Dream_Metronome_Sprite.pngMetronome Battleshttps://cdn.bulbagarden.net/upload/7/7c/Dream_Metronome_Sprite.png This involves four routines and a bunch of scripting. Notes Before We Begin • You will need 25 vars that you will not use for anything else. I used vars 0x408F through 0x40A8, and the routines posted below reflect that. If you wish to change them, you'll need to figure out the RAM addresses for those vars on your own. • 24 of those vars are for the moves of your party. 1 is set when the Metronome Battle starts for reasons I will get into later. • These vars need to be permanent vars (so not 0x8000 whatever) because they need to be accessed even if the game is turned off and on. Routine 1: Clear RAM What this does is clear out (sets to zero) all the vars which will contain the moves. This just make sure that you have a blank slate for the next routine. Spoiler:
Routine 2: Store Party's Moves This routine takes all the moves of your Party Pokemon and stores them one at a time in the vars I mentioned before. If the Pokemon doesn't have a move in that slot, it will just set the var to zero by default. Spoiler:
Routine 3: Replace Moves With Metronome This routine is fairly self-explanatory. It replaces all of your Pokemon's move with four of Metronome. Note that this does not change the PP, so the PP of Metronome will still be the same as whatever move it replaced. This is easily fixed during the scripting (which will come soon). Spoiler:
Routine 4: Restore Party's Moves This last routine takes the moves in the vars and gives them back to the Pokemon they originally belonged to. Spoiler:
Putting it all Together I will assume that the initiator of the Metronome battle will be a person event or something like that. In your script, you will want to call the first three routines in order. Then script the battle, and then afterwards call the fourth routine and then the first again. Syntax: callasm OFFSET OF R1 callasm OFFSET OF R2 callasm OFFSET OF R3 special HEAL_POKEMON 'This fixes the PP issue from before setvar SOME VAR 0xFF' trainerbattle 0x3 0xNUM 0x0 @DefeatMsg callasm OFFSET OF R4 callasm OFFSET OF R1 special HEAL_POKEMON setvar SOME VAR 0x0 Let's explain a few things. You'll want to use specifically "trainerbattle" type 3. This makes the script continue after you defeat the trainer, which we want so that you can get your original moves back after you win. But what about if you lose? This is what the SOME VAR is about. Before you start the battle, you'll want to set whichever var you chose to something not zero. I picked 0xFF just because. If you win, this var gets set back to zero. But if you lose then the var is still the non-zero value. So you will need to include this map script at every possible healing location the player could get sent back to. Spoiler:
This checks if you initiated but did not complete the Metronome Battle (via the var) and if you that is true then it replaces your moves. If you lost the battle then it will do this during the normal White Out script. What I recommend is using JPAN's SetHealingPlace hack to set the healing place to be the map where you find the NPC who starts the battle. That way you only need to have this map script on that specific map instead of having to put it everywhere. Another important thing you will probably need is the routine to disable experience gain with a flag! I forgot where it was, but I believe it’s in this thread. You need this to prevent your Pokémon leveling up and learning a new move. This would not only ruin the Metronome battle, but they wouldn’t even keep the move after the battle was over and everything got replaced back. Example Script Here I will just include the script I used in my game, just to get an idea of how the scripting part is supposed to go down. Spoiler:
|
Side Quest Menu [FR]
This hack converts the PC item storage menu into a side quest menu, or task list, etc. Here is the repository, the compilation instructions are included in the readme. You will need to define your own parameters/ram in src/headers/defs.asm and create your own tables of string pointers for all of the quest names, descriptions, item images, and quest details. I kept the item image part to allow hackers to include items that might be symbolic of their quest, eg. a scroll or key or pokeball. To use in a script (XSE) Code:
|
Quote:
|
Quote:
|
[FR] Multi-directional jump tiles
This is an expanded-upon version of Invert's routine on the Wahack forums (https://wahackforo.com/t-40642/fr-asm-salto-en-cualquier-direccion) So credit goes to them for the original. Made this for the purpose of creating a multiple-height jumping puzzle which was something Invert's routine was lacking, so thought I might as well share it. Code:
|
Evolution Moves [FR]
Adds the feature of learning moves when you evolve, regardless of the level. Currently, only compatable if you have expanded your moves above 511 (jambo learnsets). May make it compatable with old learnsets if there is a desire. Here is the repository. Update config.ini with your learnset table location and a free ram address byte (does not need to be in the save block hack. Example free space starts at 0203e000 if you've removed the help system, I believe) I've only done prelimenary testing, so there may be bugs. |
Quote:
I'm having a hard time understanding an aspect of your system, mainly the flags. So if you have 256 quests (the max, still kinda a small number), does that mean you need 512 flags? Consecutive flags, at that? So quest #1 would be flag 0x200, and that would go all the 0x2FF, leaving me with literally no other safe flags for the entire game, or to complete the other 256 flags eaten by the routine? Looks like I might have to dabble in expanding safe flags, unless I'm missing something obvious here. Edit: Couldn't I just set the "flag" offsets to some unused RAM? Probably not, since it wouldn't be covered by the save block. And how do I convert the flag number to a RAM location? Thanks, hjk321 Nice routine though! |
Quote:
The system is set up so that you will need two flags for each quest: one to 'activate' the quest, which just means you have unlocked it and the quest name will show up in the menu and you can activate it and whatnot. The second will indicate that the quest is completed, in which case the 'Done' text will appear next to the quest name. It is currently written so that the activation flags (to show the quest names) are in order, and the completion flags are also in order, but can start from a different initial flag. This was done to prevent the use of two separate tables, but can easily be changed. 256 quests seems like a pretty high number of quests for a rom hack though. And that is not necessarily the limit, the active quest ram can easily be expanded to a halfword value. I would recommend expanding the safe number of flags with JPANs save block hack; this way you can unlock thousands more safe flags and this system won't be as limiting. I'm not entirely sure why you would want to use RAM instead of flags; that would end up just taking up much more space unless you edit the routine to check for specific bits in the ram, which is then the same functionality as a flag. I hope this helps. |
Quote:
As an experiment I have 15 quests and I set some flags At the index. Index starts at 0203C001, have also tried 0x909 and 0x2109 in defs.asm. Here is proof I have flags set in that area... https://cdn.pbrd.co/images/HHxEbja.png and yet all 15 quests are unshowable. What am I doing wrong? I only made minor edits to some text variables, as well as linking to external tables rather than making a table in the actual asm. I didn't edit anything significant. |
Quote:
|
Hi ASMaties! I'm new to hacking and I'm not sure how to go about this… would it be okay if I requested some help modifying the way EV-increasing items (HP Up, Protein, Iron, etc.) work in Emerald?
The default behaviour adds +10 EVs, but it has no effect when the EV is >=100. I want to remove that restriction so you can keep using EV items and max out an EV at 252, allowing players to EV train quickly and painlessly. Any help would be much appreciated! |
Quote:
I rewrote the moveset loop by just calling a custom function rather than editing the main learn_move function at 0803ea88, and it appears to work fine. Spoiler:
If you implemented the original routines, be sure to replace the bytes at 3eaa4. |
Only Buy 1 TM From Shops [FR]
If you've decided to make your TMs reusable in Fire Red, this routine will remove the option to buy more than one of each from shops. Credits to azurile13 for the first part (Main) of the code.The only thing that needs changing is the line ".equ offset". Code:
|
| 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.