![]() |
Quote:
|
Quote:
|
Quote:
I totally agree though, it's about time patches got more love. Once I get a bit of planning done, I will look to collaborate with someone around the forum who can make a tool. The idea now, based off what you've said, is to create a table of offsets leading to the actual routines which the program would locate the space for. However if I cannot get assistance from anyone with knowledge I will work my best to replicate a system using data near the end of the 16mb rom (ie. 80EB0000+) and one for a 32mb rom. The new idea would be an easy way to add and remove patches, like a mod system. The program would look at the table of offsets, were you could then have the choice to delete, add, or edit. I understand some routines require hooks into vanilla stuff, but I imagine someone with programming skills can have it save a backup of all edits made in case deletion is required. I actually think I may make a new thread on this, this will get more attention that way. But before I do I will make some form of a mockup. |
I agree patches are a bad idea... a tool is a far better idea... maybe someone should get on that... hrmm that locksmitharmy guy might be tempted to make one. ;)
Im just worried about how adjustible they should be. I could make a tool that is expandible to add more stuff later... What would we call it... the "awesome asm adder tool"? |
While it seems pretty obvious most people are against a patch, I'd also like to say that I think that a patch would be a bad idea. It gets rid of the whole customisation aspect, as well as having quite a few logistical issues to work.
Quote:
(Babies cause y'know these routines are his babies). |
Quote:
(If I do get it working in-battle I'll be sure to credit you for it) |
Tool is better than patch, but its not bad to make a patch for it. The disadvantages are it might overwrite the datas that are already consumed and it may cause a bug for edited rom. Tool is much better, it allows us to use free spaces.
Well, Im looking forward for tht kind of tool, FBIs awesome projects conpiler(FAPC), or Advance FBI Routines inserter(AFRI) Lelz, just kidding |
Quote:
Quote:
Quote:
Quote:
Quote:
Quote:
Quote:
Quote:
Quote:
Quote:
Quote:
On a side note: Do we really need patches/tools for insertion? I think I've made the insertion instructions rather simple and honestly the most complicated thing in the process is knowing how to reverse hex a pointer and then add 1 to it :X Well, I don't really mind if people make tools/patches. These routines are for public use, and can be used/modified in whatever way you wish. On a more side side note: Recently I've been working on chain fishing. FireRed's super rod Fishing Routines are actually rather limited. They don't support the suction cups or stick hold abilities, they don't cancel the fishing sequence if you hit A early and they don't let the Pokemon get away if you press A too late either. Anyways, I've got the chain fishing part and abilities working. For the pressing A too early and pressing A too late, I made my own routines for detecting key presses and such, everything works fine, but the game freezes afterwards. I'm not sure why that's happening, nor do I really want to investigate longer than the 3 days-ish I have been. I think I'm going to just post what I have, and maybe if I find myself with some extra time I'll add to it later. |
Chain FishingThis is a semi-complete port of the ORAS chain fishing feature onto FireRed. There are a few pre-requisite routines that you need to insert first as well, so make sure you've inserted those. Prerequisites: Random Number Generator Shiny Generator Reset Chain if fishing spot changesThis is simply a routine that's run every step. Every time you take a step it sets variable 0x8002 to 0x0. This is completely save unless you're using 0x8002 for something long term (which you shouldn't because it IS a temporary variable). How to insert: Compile and insert the following routine into free space: Spoiler:
Now navigate to 0x6D5F6 and insert the following byte changes: Code:
Usage: The routine is run automatically once a step is taken (i.e tile displacement occurs) Ability Number getterVery simply, just gets the abilityID of the first Pokemon in your party. How to insert: Compile and insert into free space the following routine: Spoiler:
Usage: This one is a standalone routine actually. It will store into variable 0x8000 the ID number of the ability of your first Pokemon. It becomes needed for Sticky Hold and Suction Cups later! Fixing the Suction cup/Sticky Hold abilitiesThis routine just takes into account suction cups and stick hold for the fishing rod routines. It is also expandable, so you can add your own things to increase catch rate. If you have questions about that feel free to ask later (I'm a little lazy to type out everything :D). How to insert: You need to have inserted the Random Number Generating routine and the ability number routine before you can continue and insert the main one. Once you've done that, look at the last line in the following routine and replace the ".word 0x8[OFFSET +1]" with the pointer to the RNG routine (not in reverse hex). Finally there's an all caps comment. It requires you to set the pointer there to the ability ID routine from before. After that compile and insert into free space: Spoiler:
Finally, navigate to 0x5D316 and insert the following byte changes: Code:
Usage: It's automated. There isn't a usage :) Increment Counter on Successful ChainIt simply increments 0x8002 by one if a Pokemon is hooked. How to insert: Compile and insert the following routine into free space: Spoiler:
Now navigate to 0x5D66E and insert the following byte changes: Code:
Usage: The increments are automated...actually everything here will be automated. I'm just keeping this section here for consistency :) Increased Shiny Encounter ChanceThis feature isn't very documented at all. There's no numbers on it in any site I've tried, so I just kinda made up my own algorithm to create an increased chance-based shiny encounter with the amount of successful chains greatly swaying the chances. I'll explain how all the math comes together in a later section. How to insert: Before inserting this routine you need to have inserted my RNG routine from the prerequisites section. Once you've done that change the last line of this routine to match where you inserted the RNG routine (not reversed). After that, you can compile and insert into free space. Spoiler:
Finally, navigate to 0x5D2C2 and insert the following byte changes: Code:
Usage: None, it's automated every time you use your rod. Explanation of FunctionalityFirst of all, a successful chain is defined as every time the player hooks a Pokemon. The chain counter starts at 0 and is increased by 0x1 once the Rod is used and again by 0x1 once a Pokemon is hooked. This means chainCounter%2 != 1 is a successful chain. Everytime the Rod is used this calculation is confirmed, and the chain counter is reset if the condition isn't matched. How big of a margin does the chainCounter affect shiny encounters? 32640/65535 = approx 50% chance at max chains The numerator starts at 0, and increases to by 128 per successful chain. I've also done a little "pity" thing for the unlucky souls like me out there. Basically after 255 successful chains, you're guaranteed a shiny. The chance of this occurring is: Sum of (i=0 to 255) {PR(x = (128 * i)/ 65535) : [rand (y = 65535) && y < 128 * i] } ; currentSum < 1 It's very very unlikely unless your the bad luck god like myself. Also, you'll have to forgive my dirty notation. Happy Fishing :D http://i.imgur.com/JY3Xj2M.png |
Quote:
Now if we could block saving in certain areas like the Elite 4 rooms... I vote for ASMAGIX Inserter. Despite the fact that I'm terrible with naming too. |
I'm looking for a way to turn multichoice scrollable and have 102 entries to make a standings list of sorts in FR
|
I like ASMAGIX lol ...
Ill have to work on it in segments since there is sooo much here. |
Quote:
|
Quote:
|
Quote:
Quote:
Quote:
Quote:
On a side note I've decided to drop these requests: - Battle style set/shift toggling - Other battle script related stuff Battle style set/shift was done in a battle script as far as I could tell. I was hoping there'd be a byte in RAM I could just find and manipulate, but I couldn't find one (though I'm 65% sure it's probably done like this). Also for this one Quote:
Link: http://www.pokecommunity.com/showthread.php?p=8509300#8509300 I'll post what I've done so far soon. Progress has been rather slow because I got sick and spent pretty much most of the last couple of days in bed X_X |
Temporarily disabling EXP gains from battleIt was brought to my attention by some requesters that for their battle/tournament events they wouldn't want their Pokemon leveling up. This routine disables the exp gains in battle. Note that the player can still use stuff like Rare Candy to level. The fix to that is exactly the same as this, but with slight modifications. I hope you don't give the player a chance to rare candy in battle though or I will go to your hack's thread and severly criticize your lack of common sense :c How to insert: Compile and insert the following routine into free space: Spoiler:
Now navigate to 0x21CFA and insert the following byte changes: Code:
Usage: If flag 0x202 is set, the EXP gains will be disabled. Obviously, to re-enable just clear the flag. Currently the way I'm doing this is by making the game act like the player's party is already max level, so therefore they don't gain exp :) |
Adjusting Shiny encounter chancePre-requisites: - Shiny Pokemon Generator - Random Number Generator How to insert: Before compiling the routine look at the last line. There is a .word 0x8[RANDOM +1]. Change the content after the 0x8 to be a pointer to where you inserted RANDOM +1. Once you've done that, look for the line that says "mov r0, #0x1 @item ID". Change 0x1 to the Item ID for your Shiny charm item. If you don't have one implemented, delete these lines: Code:
Spoiler:
Now navigate to 0x3DACE and insert the following byte changes: Code:
Usage: It's Automagic, also happens to give the shiny chance to Pokemon in wild, trainer Pokemon, given Pokemon ect. Right now encounter chance is 1/4096 without shiny charm, and 1/1356 with it. |
Quote:
|
Quote:
|
Quote:
|
Quote:
|
Black Sludge Implementation:
-> Insert at x1BE18: 00 49 08 47 XX+1 XX XX 08 00 00 -> Routine at XXXXXX: Spoiler:
-> Battle Script at GGGGGG: Spoiler:
(OPTIONAL) Update the Leftovers message to latest Generation (used for positive Black Sludge too): -> At 1C0F4: HH HH HH 08 (In reverse hex) -> Battle Script at HHHHHH: Spoiler:
|
Quote:
Do you have any kind of experience into implementing a battle frontier into FR? Not totally sure how many and what kind of ASM routines would be needed. Sort of a general question. |
Hey fbi how would I go about making the battle by move asm to use a different flag for each routine? Cause I dont want the prevent whiteout and the delete pokemon on at the same time.:(
|
Quote:
Quote:
Quote:
Good job, lol. Quote:
Quote:
|
| 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.