![]() |
I want to make a request. As Dizzy's Various features added Expansion for Hall of Frame fix. Is there any way to port to Fire Red?
|
Quote:
Fire Red Port done by Samu from Whack a hack Foro. Original Link to the post Code:
The following changes in the rom are needed: - Go to 0x08021C3A and overwrite with "02 21". - Go to 0x08021D70 and write "01 20". - Go to 0x08021CC6 and write the following: "C0 46 00 4A 10 47 [XX+1 XX XX 08] 04 BC" where [XX+1 XX XX 08] is the reverse pointer +1 to the offset of this routine. Example: If I were to put it in 130F40, I'd have to replace XX XX XX with 41 0F 13. |
Quote:
Without asm: pidgey level 3 - 24 exp point with exp share - 12 + 12 exp point With this routine: pidgey level 3 - 12 exp point with exp share flag off - 12 + 24 exp point with exp share flag on - 12 + 12 + 12 + ... exp point |
Auto Run [FR]
Compile this ASM, copy everything past offset 0x5BA30 in the bin file, and paste in at 0x5BA30 in your rom. This checks if a flag is set to allow you to run automatically. The default is the original running shoes flag in Fire Red. This also removes the need for a flag to be set in order for the player to run. If you want a flag, you'll have to hook to a new routine altogether. Code:
Note: -The toggling rarely works when the game is in Turbo Mode. -This code will only work if you've inserted the above code. -This code must have the same flag as above to work. Code:
|
Quote:
|
Quote:
(Scroll up) |
Quote:
1) I went to the offset 13B8C2 and wrote "1D E0". 2) I compiled the ASM Routine, the only changes I did to it were: -Line 70: .Key: .word 0x2 -Line 71: .Flag: .word 0x200 3) I inserted the compiled routine in the offset 71A250. 4) I went to the offset 056458 and wrote: 00 48 00 47 51 A2 71 08 And then when I start the game, enable the Flag 0x200 and press the R Button, my character still walks and I still have to run by holding the B Button :/ EDIT: Fixed. I didn't get at first that I had to use both ASM Routines at the same time. |
Pokemon LoathingFriendship Evolution:
Code:
To insert follow instructions in this thread. I hope some find this useful. I thought about trade evolution basically being just this. A Pokemon so depressed it evolves... |
Is there a port of the Disable Bag to Emerald?
Trying on my own, I was trying to convert this "Prevent Items" routine by JPAN here: Spoiler:
The only problem I have now is finding the address of the routine that shows the "Items can't be used now." message. Here's the original FR Version: Spoiler:
Here's mine (omitted stuff for clarity): Spoiler:
|
I want to make an ghost eeveelution and to evolve it you must level it up with a rare candy in the party while it is fainted then once it is leveled up it evolves
|
Old post :/
Spoiler:
Okay, having checked the Disable Bag routine for FR here in this thread (which I actually checked before using JPAN's, but apparently I was so in a rush that I didn't check properly). Here is the routine for Emerald: Code:
|
Quote:
Faint/Low Hp Evolution: Code:
Note for the first highlighted in green: If you have expaned your evolutions for your pokemon you must change this line: "add r0, r6, r7" to: 8 evos or less = lsl r0, r6, #0x1 16 evos or less = lsl r0, r6, #0x2 32 evos or less = lsl r0, r6, #0x3 or just change the bytes in the compiled file from F0 19 to: 8 evos or less = 70 00 16 evos or less = B0 00 32 evos or less = F0 00 Note for second highlighted in green: As it is the Pokemon must be leveled up with a Rare Candy to get it to revive and have 1-Hp. You can change the value of 0x2 to something higher but anything lower than 0x2 will not work with this routine. After the compare it the vaule must be lower than the "0x2" or what ever value you decide to change it to. Hope this helps! |
omg thank you so much dude! youve just made me so happy now since im still new to asm i gotta figure out the little bits but im sure i can get it :) again thank you so much would you like credit since youve created the asm for it
|
so me and my friend got it into the rom and everything and turns out it didnt work, did you test it? cause we cant get it to work
|
Quote:
Is it possible to modify this routine in order to display Item images? Is this display function able to handle them? If not, what is the best way to show them? |
Quote:
|
Quote:
|
Why do you want to prevent the player from using the turbo button? One of the main benefits to playing a rom is that you get a turbo button.
It would lag without turbo. Turbo would probably still speed the game up somewhat, but just not as much. |
Quote:
I have told you before that even with asm this would be hard. Because its on a emulator level. |
Quote:
I could be wrong about this so nobody sue me if there in fact is one xD Sweet Scent Script This is what I did with FBI's Field Moves ASM in this post. I basically just made it so you could attract certain Pokemon in certain special areas with an increased shiny chance. You will need FBI's Shiny Generator. Either use this one here or use the modified version if you want to have Synchronize's overworld effect here. Then follow the steps for inserting a new field move, except you don't need to expand the table if you're replacing Sweet Scent's effect. Just replace the pointer C9 E0 0D 08 with the pointer to the first routine. Also, you will need to go to 0x82E76 and change “20 78” to “06 E0”. Also go to 0x82E6C and change “0C 31” to “04 31”. This allows Special 0xAB to use the grass data when loading Wild Pokémon. Anyway the script I made is here: Spoiler:
The CheckItem part was for the Shiny Charm, so if you have that then change the number to the index number for the Shiny Charm. I also modified the Set Wild Battle command with this: Spoiler:
Basically all that does is let you use LASTRESULT for the Pokemon. |
Anyone can make a routine that counts the amount of a certain item in the bag and stores it in a variable? I know this can be made with loops but I think a routine is a better way to do this. Thanks anyway.
|
Quote:
|
Quote:
|
Hey helpful people, you all might have seen my post about this in a thread under Rom Hacking. But anyway, I've never used ASM coding in my PKMN hacking career thus far. I'm making a game in which I only want double battles and have encountered a glitch in which if you start a double battle with 1 (not-fainted) Pokémon is your party, the game just clones that pokemon for your partner in battle... (not desired) I've come to the realization that the only way to keep this game double battles only Is to either fix this glitch by changing the battle engine (sounds too hard) or to find another solution.
Well, the solution I came up with was to possibly have an ASM call before each trainer that would change the bitfield's double battle bit of the trainer in question to 1 or 0 based on how many Pokémon the player has. Now again, I've never used ASM so I don't know if you have access to that certain part of the rom, but if you did this would be a great way of fixing my problem. So any help would be awesome, thanks! |
Quote:
|
Quote:
|
Quote:
|
Hello! Would it be possible to request a routine?
If possible, I would like a battle routine that only allows you to use a maximum of 6 itmes throughout a battle(ignoring the pokeball bag). This would get rid of potion spamming! :) |
Inherit Pokeball from Mother (Emerald)
So I'm learning asm and decided to see if I could implement passing down pokeballs like in 6th gen, and after a while I managed to make something that seems to work. Since this is basically my first go at writing asm feel free to point out better ways to do things and improve it. There's is two parts to this, you have to give the egg its mother's pokeball and you have to keep the ball when it hatches. This is for Emerald only (Though I'm guessing it wouldn't be too hard to port to FR). Give Egg Pokeball How to insert: Compile and put this into free space Spoiler:
and at 0x8070A48 write 00 48 00 47 XX XX XX 08 (where XX XX XX is the reverse hex pointer of where you put in the code +1) How it works: When given an egg it will check if either of the parents are female. If yes it will pass on the egg, unless it's a masterball. Keep Ball when Hatching How to insert: Compile and put both of these into free space Spoiler:
Spoiler:
and at 0x80713D4 write 00 48 00 47 XX XX XX 08 (where XX XX XX is the reverse hex pointer of where you put in the first piece of code +1) and at 0x8071528 write 00 4A 10 47 XX XX XX 08 (where XX XX XX is the reverse hex pointer of where you put in the second piece of code +1) How it works: When hatching some data doesn't seem to be transferred to the pokemon, the type of ball being one. The first routine simply stores the ball type to 0x8000 while the second retrieves and gives it to the pokemon where before a normal pokeball was given. |
Quote:
The readme file says I need to have "Devkitarm" and "make" installed and that "armips v0.8/0.9" is required. Mainly, I just have no clue what those programs are and how I would get them installed correctly in order to compile and insert this code into my ROM. I believe I MAY have Devkitarm installed (from using DizzyEgg's Emerald Battle Engine Upgrade), but I'm not sure about "make" nor "armips". Any help on this would be absolutely appreciated, otherwise it seems I may have a lot of basic research on my hands before I'm able to include this in my ROM (which I'm also unsure of where to start). |
Hi everyone. I was hoping someone could take a look at an asm routine and a script and tell me what i'm doing wrong. Here's the routine, originally made by FBI,
Spoiler:
It is meant to rename the player from the overworld, but if the name is invalid (contains spaces), is sets 0x800D to 0x1. Everything works, except that last part. If I put a space in the name, it acts as if the name is valid and continues without changing the name. Here is the script I wrote for it, Spoiler:
Is it something wrong with the routine or my script? |
Quote:
Code:
|
Quote:
|
Quote:
Routine 1: Put 00 49 08 47 XX XX XX 08 at 0x46250 Spoiler:
Routine 2: Put 00 48 00 47 XX XX XX 08 at 0x46D10 Spoiler:
Routine 3: 00 4A 10 47 XX XX XX 08 at 0x46DD0 Spoiler:
I have also made a routine that will cause the PokeBall to be random. To use this: 1. Don't insert Routine 1. 2. Instead of Routine 2, insert the routine below. 3. Insert Routine 3 normally. Routine: Put 00 48 00 47 XX XX XX 08 at 0x46D10 Spoiler:
|
Quote:
|
Hey again everybody. I'm trying to get this code:
https://github.com/jiangzhengwenjz/Double_wild_battle Into my fire red game. Problem is the readme is having me install DevkitARM and Gnumake.. I I got a C in System Programing and can't for the life of me make this work. If anyone can help me I'd be grateful! |
Quote:
|
Stats on the Pokédex screen replacing the weight comparisonCode:
|
So I've extracted both Gnumake and devkitARM v45. I have the double battle code extracted as well. I've read the readmes for all these files and they definitely don't assume i'm a beginner. Has anyone ever done this and wanna do a quick step-by-step? Thanks again.
|
Quote:
|
Quote:
I hope that helps. |
Quote:
2- On the line where it says ".equ offset, 0x" I put the address (in my case it is B00000) 3.- I keep the routine and name it as .asm (in my case, Dex.asm) 4.- I go to the thumb folder and I put my Dex.asm to Dex.bin 5.- Then I open with HxD a clean rom and the Dex.bin ..... Until this step can I understand .. what should I do now? explain me with a little more detail and I hope I do not bother much ... |
Quote:
I have questions though, does the byte on the equ. part is the actual index number of that Pokémon or that is what can be seen in National Dex. I have, however, made the arrangement that all mons first and the the forms will be the last slot.. by doing that, do I have to edit the index and replace it with the corresponding pokemon index? Also, does it support forms now? Liké Flabebe but they will share the same index number. EDIT: I have tried to compile all these to my THUMB Assembler but I got no luck because the code is too many that the compiler can't manage to assemble lol. Is there anyway I can compile it? I tried CMD and what I always get is error... tried piece-by-piece assembly but still the compiler can't process it. |
Quote:
Go to 0x10611E in both Dex.bin and your ROM, copy the bytes from Dex.bin, and paste them in your ROM. Go to 0x106370 in both Dex.bin and your ROM, copy the bytes from Dex.bin, and paste them in your ROM. Go to 0x106530 in both Dex.bin and your ROM, copy the bytes from Dex.bin, and paste them in your ROM. Go to 0x452200 in both Dex.bin and your ROM, copy the bytes from Dex.bin, and paste them in your ROM. Go to the address you put next to .equ offset, 0xB00000. in both Dex.bin and your ROM, copy the bytes from Dex.bin, and paste them in your ROM. Save your ROM. |
Quote:
|
I have a request. i'm not sure if that is possible or if it was already created, but. Is there a way to create a custom giveegg? I mean, I'd like to create an event that gives the player a Pokemon egg. and that egg will hatch with an specific shiny rate and custom moves. Like the Odd Egg you receive in GSC from the Day-care man that hatches knowing Dizzy Punch.
|
I have a request that I'm pretty sure it's possible. I want a routine that modify the giveitem command (or something similar) in order to give the specified amount in a var of certain item. Example: The var 0x8000 is set to 3, then execute the giveitem command and it gives 3 items.
|
Quote:
So for example: Code:
|
Quote:
|
I've been a bit on and off with rom hacking, but here's something I threw together recently:
Expanding Number of Buffers [FR] Background info for those who are curious: Spoiler:
This hack requires the JPANs save block hack (I suppose you could use other free RAM outside of the save block area if you don't mind losing buffered values between saves) It allows for up to 7 more buffer locations. Currently, there are 3 buffers of 4 bytes each and 4 buffers of 16 bytes each for numbers and strings, respectively. Feel free to change them, I tried to make the assembly routine easy to edit to accommodate various ram blocks. You can certainly buffer more than 4 characters into one of the 4-byte buffers, but it will overwrite anything else you have buffered afterwards. If you want to change the number of 4 vs. 16 byte buffers, just be sure to change the SetX+Y values appropriately. Each script buffer command loads a table of buffer RAM pointers for buffers02-04, each from separate locations, obnoxiously enough. Just be sure to copy the data from the compiled routine into your ROM at each script section. Spoiler:
I tested a few of them but not all, so please let me know if there are any bugs. |
Quote:
I have a question if it's possible to modify this so that in the Search Modes (Alphabetical, Type, etc.) it's able to display the Pokemon added to the regional dex. It only appears to still display only the original 151 in those Modes. |
Quote:
Quote:
Can you also get which lines are getting the error? This vanilla modified coding of mine works well. PM me if you have errors rather than discussing it here. |
Quote:
I haven't added any new Pokemon yet so I don't think I need to expand, but I have made it so that Gen 2 related Pokemon appear with their families in the regional dex. The order isn't what I want to edit, but just the trigger for displaying Pokemon that get added to the regional dex. It seems there is only one pointer to each table as well so there's probably something that changes what gets displayed based on the National Dex flag. |
Quote:
|
Quote:
Edit: I've adapted these new routines for emerald and they work a goddamn treat! I got all the offsets I'm using from the .map file of the pokeemerald disassembly (and from just searching for copies of the offsets spherical had found in a vanilla rom) Here's what I've changed (in bold):: Spoiler: Script
Routine 1: Spoiler:
Routine 2 Spoiler:
|
Quote:
Quote:
|
Quote:
I'm guessing you've tried with e.g 2 pokemon in party needing depositing with 2 empty spaces cause besides that, I think thatcould be the only difference with how we tested. I'll try that myself too (would make little sense if that was the reason but still worth a look) Thanks for spotting that I needed a failsafe for eggs! Emerald special is 0x149 iirc in this case, before I forget Edit: I actually think I have a question for you! Am i being dumb as hell or could I make routine 2 delete all pokemon but one by simply cutting out the one part that actively transfers to a pc box? my asm knowledge is appalling but I can just cut out ldr r3, =(0x0806b490|1) @ pokemon_add_to_pc right? the lines above are just lining up to use that routine on the correct pokemon, as far as i can tell |
Quote:
As for your question, routine 2 is supposed to: - Take the pokemon slot number in 0x8004 that was received by the special called before this routine - Loop through the all six slots of the player's party -- Deposit the current slot's Pokémon to the box if it is not equal to the slot in 0x8004 - Copy the data of the Pokémon in the slot in 0x8004 and paste it in the first slot of the party - Copy 500 00 bytes and paste them at the second slot of the party, erasing the rest of the player's party, to avoid the Pokémon from being duplicated if its slot was not the first slot |
Quote:
Alright to get my deletion routine I've just changed cmp r6 #6 to cmp r6 #0. Not exactly efficient but it's a neat trick for anyone who wants all but their first mon to get deleted at some point (like I do). Many thanks for routine 2, it is a beaut! |
Quote:
Code:
|
Quote:
Code:
|
Quote:
Spoiler:
For Variable 0x8000: set it to 3 if you want Pokemon icons to be used set it to anything if you want other formats (do not use bytes above 0x04 if you haven't expanded the table yet) For Variable 0x8001: Set it to the index number of your desired Pokemon Icon. Do not forget to add "waitstate" command after calling the ASM. Doing this will save you some spaces as you don't have to make many routines if you are wanting for a multiple password formats. All credits goes to chestertagat and BluRose. |
Quote:
It's a bit hacky, as it technically allows every Pokmon in the National Dex to be seen, so they'll be listed as No. 000 if using the the quoted custom regional dex routine. What it does is hijack the routine for loading each Pokdex Search Mode to increase the limit of the regional dex to 386 Pokmon like the National Dex mode routine does. If anyone can improve it so that it allows for only custom regional dex Pokmon before getting the National Dex, please do so. My knowledge of ASM hacking is pretty limited, so this is the best I can do for now. Code:
|
Quote:
Because without something like that, this is what happens In-Game. https://s20.postimg.cc/uip29y73h/Oud_LQTH.png Unrelated: Could someone port this routine to Emerald, please? It's basically FBI's EV/IV Checker, but it uses the Vars 8000-8005 instead of 8005-800A. He wrote it in a matter of minutes at some point inside the Discord server and I had it saved ever since, but I'd really like to have a version that works with Pokémon Emerald too. Thanks :) |
Quote:
Hi Spherical Ice, could you shorten your routines into one, similar to what MWisBest did for DizzyEgg's? https://www.pokecommunity.com/showpost.php?p=9611218&postcount=1150 |
Quote:
Basically, the process as you explain it Skelli is: Quote:
Welp, I can't get more than 44 items. This is the script that I'm trying, and all the items after Calcium are being omitted: https://pastebin.com/gK3UpwHA EDIT: I also tried to put all the items after the Calcium in a separate script, but it's useless. I'm just not getting them. The bag still ends at Calcium, the 44th item. |
Quote:
Code:
|
Quote:
Quote:
I'm confused. |
Quote:
|
Quote:
10 B5 08 4C F1 20 A0 30 C0 00 FA F6 CD FB 20 60 00 28 06 D0 04 48 FA F6 C7 FB 60 60 00 28 00 D0 01 20 10 BD 18 AD 03 02 E3 11 00 00 ^ That is the routine that you just gave to me right here. Then I go to 0x99E44 and Ctrl+B this: 10 49 0C 48 08 60 96 20 40 00 88 80 08 48 88 60 3C 20 08 73 08 48 08 61 1B 20 08 75 07 48 88 61 80 20 08 77 06 48 08 62 24 31 43 20 08 70 70 47 C0 59 02 02 D0 C6 03 02 3C 58 02 02 D0 C4 03 02 B0 58 02 02 8C 98 03 02 As you explained in this post. And then it should be working? Because it's not. The Items pocket of my bag is still capping at 44 items. EDIT: Alright, we were able to solve the issue on Discord. The procedure is simple and I'm gonna leave it right here in order to avoid any kind of confusion: 1) Compile the routine that Skeli posted right here and Ctrl+B it in 0x1083F4. 2) Compile this ASM Routine that he wrote and Ctrl+B it in 0x99E44. 3) Save and test, but make sure to start a new savefile. Old savefiles will not work. And that's it. Here's a quick video showing it in action. |
Hey everyone. I have another ASM hack to provide.
This ASM hack is one for infinite use of the Elemental Hyper Beam tutor and I've made it so that all of the final starter evolutions have access to their respective ultimate moves just like in newer games as well. It isn't like the other tutors where you can just clear or never set a particular flag just by looking at the flags in the script and it also uses two routines to check for compatibility. Routine 1: Code:
Routine 2: Code:
And this is the edited script for the old lady tutor: Code:
Do note the #org 0x1A644F = Do you want to teach this move to\nyour Pokémon? is actually used by other move tutors as well. It replaces the message that tells you it can only be taught once, which doesn't make sense if you've made the tutors infinite use. You can also change the move table name offset if you are using a custom one, but if you're just using the normal one then comment out the identified routines before compiling. Also this clears the flags at 0x2DE, 0x2DF, and 0x2E0 which are set by special2 0x800D/LASTRESULT 0x1A4 after teaching each of the moves once allowing for infinite tutoring! This also doesn't set flag 0x2 which prevented you from teaching another move unless you exited the house and came back in again. If there are any problems, questions, or improvements don't hesitate to reply to this message or PM me. |
Quote:
i just needed to sit down and do it Spoiler:
|
Quote:
https://s20.postimg.cc/kefrhb425/kxx_HVw_U.gif |
Quote:
Spherical Ice' EV-Reducing Berries for FireRed should seriously be indexed in the main thread. |
Actually, everything after like pg 43 stopped being indexed ??
|
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.