Next, we must change the pointers to our new location (0x900000 in my case). Search C42F0408. There is only one pointer at 0x42FC0.
Next the game has a limit on the number of evolutions. This is at 0x42FAA. Change this to the new number of evolutions (in hex)
Step 2 (Creating evolution routines; ASM needed)
Spoiler:
That table we pointed to contains the pointers to each evolution method, so if we write our own we can have a new evolution.
However writing a method can be quite difficult to explain. I'll try my best. Here is a working* script I wrote for Goodra's evolution (raining in the overworld)
Now the bolded section must always be included in the start, it is consistent mostly with all evolution routines. So put that in your code. Notice the red word (ldrb). This loads the argument in the evolution (item or level). An item uses a half word and a level uses a byte. This matters and affects the size of r2
Quote:
Check for appropriate level: levelcheckloc: .word 0x08043017
Go straight to the evolution (no levelcheck): evolutionloc: .word 0x0804310D
This leads to R2... This register contains the Argument, so if you need to check for a specific item... compare the item with R2. You cannot compare items and levels at the same time.
You also might see R3 -> R10 then R10 -> R1. This is necessary because you pop R0-R7.
Finally you will need this routine: Located HERE!!
TO use it in your script you need a bl instruction
This should be enough to get you started. I recommend using Knizz' dis-assembly for further routines. I also will update this post when I become more knowledgeable as well.
Once you are done assemble the .asm file and place it in your ROM somewhere. Now go to your table and add another entry pointing to the assembled code (you do NOT need +1). Now
Step 3 (Making the routine work in the game)
Spoiler:
To make this compatible with G3HS open up the .ini file and navigate to these lines:
Quote:
evolutionmethods =
evomethodsproperties =
Add in a name for your method, and for properties add either Level, Item, None. Note: Follow KK552's syntax for the ini file.
Finally open your ROM and in G3HS and work add the evolution and test it!!!
Final notes, I am a bit vague on the structure of the routine musts because I am still learning it. However finally all evolutions will be open-sourced and available below in the spoiler (will add more over time).
Spoiler:
Evolutions
NOTE: If you have used the "Changed Number of Evolutions per MON'" button on G3HS, these routines ain't going to work.
Assemble them anyway and change the .bin file accordingly.
Quote:
8 evolutions per mon: Change F0 19 to 70 00
16 evolutions per mon: Change F0 19 to B0 00
32 evolutions per mon: Change F0 19 to F0 00
Evolve with a Fairy type move (KDS Credits)
Spoiler:
.text
.align 2
.thumb
.thumb_func
.global sylveon
main:
push {r0-r7}
add r0, r6, r7
lsl r0, r0, #0x3
add r0, r2, r0
add r3, r0, r3
ldrh r2, [r3, #0x2]
mov r0, r8
mov r5, #0x0
loop:
mov r1, #0xD
add r1, r1, r5
bl decrypt
mov r11, r0
pop {r0-r7}
mov r1, r11
ldr r4, movedata
mov r6, #0xC
mul r6, r1
add r4, r4, r6
ldrb r4, [r4, #0x2]
cmp r4, #0xXX @replace XX with 16 if you are using MrDollSteak's rombase, otherwise keep the index that you have set while adding fairy type
beq true
cmp r5, #0x3
beq exit
add r5, #0x1
b loop
.align
movedata: .word 0x08250C04 @if you have repointed the moves table this needs to be changed as well, for MrDollSteak's rombase set to 0x08900000
levelcheckloc: .word 0x0804310D
noevo: .word 0x08043111
decryptpoke: .word 0x0803FBE9
Lastly, acknowledgements go to Daniils and Jambo for their guidance and locations for everything.
~ Thank you and good luck
Superjub
June 20th, 2014 11:02 AM
Definitely going to keep an eye on this thread, this will be extremely helpful! :D Thanks for posting this. ^^
Joexv
June 20th, 2014 3:30 PM
So in theory this could be used to make a similar asm routine that could make a pokemon evolve when levling up in a certain map? Kinda like diamond and pearl where some pokemon needed to level up in mt cornet to evolve.
kearnseyboy6
June 20th, 2014 4:05 PM
Quote:
Originally Posted by joexv
(Post 8310060)
So in theory this could be used to make a similar asm routine that could make a pokemon evolve when levling up in a certain map? Kinda like diamond and pearl where some pokemon needed to level up in mt cornet to evolve.
Yeh exactly. The routine for that will be similar to the raining in overworld routine.
The map is number is stored at 0x02036E10 (0x2 behind weather byte). All you need to do is compare that byte to the map number (eg: Pallet Town = 0x58 I think). There's a list around the site.
Joexv
June 21st, 2014 3:24 PM
So this would make a pokemon evolve if leveled up in pallet town.(i dont know too much about asm so hopefully this works) I used you rain routine like you said and then changed the offset it calls and the number it is compared to.
Instead of checking for a specific map I would take a variable and check it's value, simply because you can have multiple maps asigned to the same evolution with this. (e.g. "evolves in a desert"), also you can excatly specify the place by setting the variable via non-mapscripts.
~SBird
Joexv
June 21st, 2014 4:29 PM
Yea but wouldnt that be a whole lot more work? Since you would have to set the var everytime you enter and leave one of those maps. And you can set more than just one map with the same evolution, it would just need another line of asm right after
Code:
cmp r6, #0x56
beq town
so you could just have it say
Code:
cmp r6, #0x56
beq town
cmp r6, #0x57
beq town
Like in the rain evolution script it is comparing multiple numbers to apply for more than just one type of rain.
kearnseyboy6
June 21st, 2014 8:19 PM
Quote:
Originally Posted by joexv
(Post 8311578)
So this would make a pokemon evolve if leveled up in pallet town.(i dont know too much about asm so hopefully this works) I used you rain routine like you said and then changed the offset it calls and the number it is compared to.
Pretty nice. It would work in theory, Pallet Town is 0x58 I think, but to make it dynamic like SBird said we need to take advantage of the 'argument' that G3HS has. Since the maps are a byte long you would keep the start. You would compare your r6 with r2 (the argument).
Unfortunately in G3HS at the moment it only features level and item, so for this to work, you would be limited to 100 levels or maps that have values 0x64 and less. The good news is KK552 will be working on the list if the list is provided to him. I have FR but none else.
Thank you so much for sharing this, this is amazing! =)
STikER
June 24th, 2014 11:59 PM
This is great tutorial, finally I can include new evolution methods. But is it possible to make Pokemon forms with similar method? I made eighteen different-types Arceus as separate Pokemon, and now I want when Arceus is holding a Plate, it changes form (technically evolves) to another form, but when there is no Plate, it reverts back to regular form. But I don't want to see evolution screen, simplify, you give Plate to Arceus and it changes form.
kearnseyboy6
June 25th, 2014 4:11 AM
Quote:
Originally Posted by Ollie11
(Post 8316554)
This is great tutorial, finally I can include new evolution methods. But is it possible to make Pokemon forms with similar method? I made eighteen different-types Arceus as separate Pokemon, and now I want when Arceus is holding a Plate, it changes form (technically evolves) to another form, but when there is no Plate, it reverts back to regular form. But I don't want to see evolution screen, simplify, you give Plate to Arceus and it changes form.
Yes forms are possible on the todo list. I am still thinking of a good method; I'm leaning towards making each form a different index. But we will see. Don't expect in the next month though, I'm on a break now sorry.
Phenom2122
July 2nd, 2014 10:49 PM
For anyone interested in doing this for Emerald (I'm not sure if this info is already around), the evolution table that needs repointing is at 0x06D198
Its one and only pointer is also right behind it at 0x06D194
And it appears there are an extra two bytes in whatever code runs there in Emerald so the spacing is not identical to Fire Red (it is out by two) but I am pretty sure the limit on evolutions is at 0x06D180.
I haven't tested this out for myself yet (I'm too busy on too many things and not in a position to test yet) but I am 99% sure this is correct.
After finished all steps, I tested and realized that the pokemon won't evolute anymore. Is this problem caused by the warning? If not, what happened?
Phenom2122
July 4th, 2014 4:07 AM
I'm afraid I'm no ASM expert so I cannot say what is wrong with the script. I just did a quick test with my repointed 255 evolution methods and a normal evolution went absolutely fine, no issues. I will try now assigning that poke the 255th evolution (they all point to the same places for now) and if that works I will try one of these routines.
I have never has an error like that compiling ASM so I'm really not sure :(
Edit: I just did the stupidest thing and wasted good time lol. I wanted to test evolving my Pokémon from somewhere around the 244th slot (a duplicate of level up). Then I saw that it did not evolve at all :O Then I sweated like crazy because I thought I had the wrong limiter byte. Tried a few things, nothing worked, then I realised I forgot to click 'save tab' in G3HS lol.
SoSo after a proper test, expanding the amount of evolutions definitely works.
Sorry I can't help you with your routine, perhaps OP can help you when they see this. (I've noticed other people aren't very quick to help around here)
jirachiwishmaker
July 4th, 2014 7:26 PM
Quote:
Originally Posted by Phenom2122
(Post 8329718)
I'm afraid I'm no ASM expert so I cannot say what is wrong with the script. I just did a quick test with my repointed 255 evolution methods and a normal evolution went absolutely fine, no issues. I will try now assigning that poke the 255th evolution (they all point to the same places for now) and if that works I will try one of these routines.
I have never has an error like that compiling ASM so I'm really not sure :(
Edit: I just did the stupidest thing and wasted good time lol. I wanted to test evolving my Pokémon from somewhere around the 244th slot (a duplicate of level up). Then I saw that it did not evolve at all :O Then I sweated like crazy because I thought I had the wrong limiter byte. Tried a few things, nothing worked, then I realised I forgot to click 'save tab' in G3HS lol.
SoSo after a proper test, expanding the amount of evolutions definitely works.
Sorry I can't help you with your routine, perhaps OP can help you when they see this. (I've noticed other people aren't very quick to help around here)
Thanks a lot for your attention and testing. The new evolutions won't work because I have had expanded the number of evolution by G3HS. Kearnseyboy6 had been mentioned early but I missed it out.
mrtienduc1999
July 5th, 2014 2:04 PM
Oh, good tut! I give you a ideal :)) check gender to evolution. I think it needs 2 asm code: 1 male and 1 female. And check level to evolution. In gen 4, it has a pokemon evolution check gender...
STikER
July 6th, 2014 1:49 AM
Quote:
Originally Posted by mrtienduc1999
(Post 8331973)
Oh, good tut! I give you a ideal :)) check gender to evolution. I think it needs 2 asm code: 1 male and 1 female. And check level to evolution. In gen 4, it has a pokemon evolution check gender...
For gender it might check Pokemon ID. There is 1 third gen Pokemon that have evolution with low or high PID on level 7. It's Wurmple! So, only left to find Wurmple evolution routines and edit it, so it checks not PID's 2 last bytes, but only one (last byte means gender of Pokemon). I don't have much ASM skills, so I can't do it by myself, but if anyone can, use this method.
mrtienduc1999
July 6th, 2014 3:51 AM
I dont understand personality value, but i think it has PID < 4 and it's a male or female. So if we use PID, we will have some problems with logic lol :D i hope you understand!
Doctis
July 6th, 2014 11:59 AM
Is there any way to disable evolution unless the player has an item in their inventory? All evolutions would proceed normally once the item is obtained.
stephenbrook
July 8th, 2014 1:18 AM
So how would I go about adding the item held item ones into a rom then? I can't really do much with regards to hex but if there is an editor out there that includes this or even if all of the ones so far were put into a base rom?
STikER
July 8th, 2014 11:57 AM
Quote:
Originally Posted by stephenbrook
(Post 8336710)
So how would I go about adding the item held item ones into a rom then? I can't really do much with regards to hex but if there is an editor out there that includes this or even if all of the ones so far were put into a base rom?
You mean held items? You can use any item editor to replace "?????????" items with held item. Follow this tutorial but not the last part (doing item to do something), we don't need it. Then open G3HS, and set held item evolution method on Pokemon that you want to evolve with it, and also choose your newly created item.
mrtienduc1999
July 8th, 2014 10:13 PM
Uk... I think we can write a asm code to replace evolution stones into evolution items. I viewed a topic, it show to me how to create a new evolution stones, but i dont understand it. If we create a method: evolution items: items use out of battle: potions, stones, ..etc..., we will not create a new stone. I Think it's simpler.
kearnseyboy6
July 9th, 2014 5:18 AM
Quote:
Originally Posted by jirachiwishmaker
(Post 8330829)
Thanks a lot for your attention and testing. The new evolutions won't work because I have had expanded the number of evolution by G3HS. Kearnseyboy6 had been mentioned early but I missed it out.
I updated this before you posted but maybe you missed it, this wasn't in the OP until I while ago:
NOTE: If you have used the "Changed Number of Evolutions per MON'" button on G3HS, these routines ain't going to work.
Assemble them anyway and change the .bin file accordingly.
Quote:
8 evolutions per mon: Change F0 19 to 70 00
16 evolutions per mon: Change F0 19 to B0 00
32 evolutions per mon: Change F0 19 to F0 00
Try that :)
kearnseyboy6
July 9th, 2014 5:24 AM
Quote:
Originally Posted by mrtienduc1999
(Post 8333093)
I dont understand personality value, but i think it has PID < 4 and it's a male or female. So if we use PID, we will have some problems with logic lol :D i hope you understand!
Nearly, if the PID has a value less than the gender value in the pokemon stats table, then it's female or male I think. So doing a compare is quite achievable and I'll have it written up in a day or so.
kearnseyboy6
July 9th, 2014 5:30 AM
Quote:
Originally Posted by mrtienduc1999
(Post 8338535)
Uk... I think we can write a asm code to replace evolution stones into evolution items. I viewed a topic, it show to me how to create a new evolution stones, but i dont understand it. If we create a method: evolution items: items use out of battle: potions, stones, ..etc..., we will not create a new stone. I Think it's simpler.
If you want the gender check for gallade and froslass... I haven't broken down the stone routine yet so I can't do it! And it seems really difficult to accopmlish! I'll try it soon!
stephenbrook
July 9th, 2014 9:56 AM
Quote:
Originally Posted by Ollie11
(Post 8337469)
You mean held items? You can use any item editor to replace "?????????" items with held item. Follow (icant post urls yet) but not the last part (doing item to do something), we don't need it. Then open G3HS, and set held item evolution method on Pokemon that you want to evolve with it, and also choose your newly created item.
I was meaning, for example, is there a way I can make it so for onix to evolve it needs to level up holding metal coat?
STikER
July 9th, 2014 11:36 AM
Quote:
Originally Posted by stephenbrook
(Post 8339298)
I was meaning, for example, is there a way I can make it so for onix to evolve it needs to level up holding metal coat?
Then, in G3HS simply set evolution by level-up holding an item for Onix.
Quote:
Originally Posted by kearnseyboy6
(Post 8338908)
If you want the gender check for gallade and froslass... I haven't broken down the stone routine yet so I can't do it! And it seems really difficult to accopmlish! I'll try it soon!
You might make evolution method such as Burmy's (females to Wormadam, males to Mothim), because you already made routines with level check, so it might be simplier for you.
mrtienduc1999
July 9th, 2014 9:56 PM
Quote:
Originally Posted by kearnseyboy6
(Post 8338899)
Nearly, if the PID has a value less than the gender value in the pokemon stats table, then it's female or male I think. So doing a compare is quite achievable and I'll have it written up in a day or so.
^^ Thanks you so much. it help me very much :)
stephenbrook
July 12th, 2014 12:06 PM
I'm completely lost by this. Starting from scratch how do I make it so that if Onix is holding the metal coat and levels up he evolves to steelix?
I can just about get my head around hex but this ASM lark? I'm lost, I know its doable as I have seen it on heartgold hacks
STikER
July 12th, 2014 1:05 PM
Quote:
Originally Posted by stephenbrook
(Post 8345403)
I'm completely lost by this. Starting from scratch how do I make it so that if Onix is holding the metal coat and levels up he evolves to steelix?
I can just about get my head around hex but this ASM lark? I'm lost, I know its doable as I have seen it on heartgold hacks
Okay, so now I will explain all. First, compile 4th (for night evolution) or 5th (for day evolution) ASM routine in kearnseyboy6's list in first post. Then, to make these routines work, you must follow tutorial (finding evolution routine, repointing it changing limiters and setting new evolution method in G3HS's ini). Because they need day and night system, implement it to rom (the best for begginers is primedialga's DNS). And then, in G3HS, set evolution to Onix. And only after all of this evolution will work.
Besides, this tutorial is really simple. Idk why you getting it so hard.
P.S. If you don't know how to compile and insert ASM routine, find tutorial somewhere. I'm not going to teach you this.
If you want the gender check for gallade and froslass... I haven't broken down the stone routine yet so I can't do it! And it seems really difficult to accopmlish! I'll try it soon!
Thank so much again! :) now, i can create new stones, if i want!
stephenbrook
July 13th, 2014 1:03 AM
So frustrating, I have tried it but now I can't open my ROM in . I guess I'll have to hope for a program that can do this as I clearly have no chance
STikER
July 13th, 2014 1:26 AM
Quote:
Originally Posted by stephenbrook
(Post 8346455)
So frustrating, I have tried it but now I can't open my ROM in . I guess I'll have to hope for a program that can do this as I clearly have no chance
Okay, I hope you made backup or copy of your rom. Send me PM with your ips patch for rom (if you don't know what is that, simply PM me). And also send me your G3HS ini, so I can include all new evolution methods. Then, I will send you ips patch with all evolution methods. Simple.
anonyboy
July 13th, 2014 3:39 AM
Quote:
Originally Posted by Ollie11
(Post 8346470)
Okay, I hope you made backup or copy of your rom. Send me PM with your ips patch for rom (if you don't know what is that, simply PM me). And also send me your G3HS ini, so I can include all new evolution methods. Then, I will send you ips patch with all evolution methods. Simple.
May You please publish the ips with all the evo methods here? just thought it'll ease up for many people
STikER
July 13th, 2014 6:22 AM
1 Attachment(s)
Quote:
Originally Posted by anonyboy
(Post 8346613)
May You please publish the ips with all the evo methods here? just thought it'll ease up for many people
Okay, I'll publish it here.
EDIT: There is archive in attachments with patch and G3HS ini (made it from fresh, because stephenbrook's rom was broken)
STikER
July 13th, 2014 10:44 AM
Quote:
Originally Posted by PurpleOrange
(Post 8347227)
errr is this supposed to have two mains?
Simply remove second main and it will work.
kearnseyboy6
July 14th, 2014 1:16 AM
Quote:
Originally Posted by Ollie11
(Post 8347234)
Simply remove second main and it will work.
Thanks! I will remove that main... Silly me :)
jirachiwishmaker
July 14th, 2014 2:30 AM
Quote:
Originally Posted by kearnseyboy6
(Post 8348385)
Thanks! I will remove that main... Silly me :)
I have tried the Day time Item Hold Induced Evolution routine, it won't works anymore. The "main" no need to remove, it must be change to "loop". Like the following:
Originally Posted by jirachiwishmaker
(Post 8348435)
I have tried the Day time Item Hold Induced Evolution routine, it won't works anymore. The "main" no need to remove, it must be change to "loop".
There should be no need to change that, I left the main in by accident. because the code doesn't even reference 'main' anywhere means that it isn't necessary. IIRC the 'main' at the start is just convention and good habitat; if you were to loop back there then it's necessary.
Your error might be the evolution expander in G3HS, as Doesn't slightly altered the game's routine I use, so just follow the instructions in the OP :)
Trainer 781
July 14th, 2014 3:28 AM
I am trying to attempt to create a routine for Evolution During Day From Certain Level (i.e. Tyrunt) by looking at routines for other evolution methods.
The pokemon by this method is evolved in day due to level up and does not evolve in night, but is unable to check the required level in the argument. (i.e. evolves at any level during day on levelling up). Can somebody tell me what I am missing>
I am trying to attempt to create a routine for Evolution During Day From Certain Level (i.e. Tyrunt) by looking at routines for other evolution methods.
The pokemon by this method is evolved in day due to level up and does not evolve in night, but is unable to check the required level in the argument. (i.e. evolves at any level during day on levelling up). Can somebody tell me what I am missing>
0x0804310D: That location will jump straight to the evolution, ie: no check. If you want to go to the level check routine you need 0x08043017.
Now, you can either change that or do your own level check. You loaded the level into r2 with this code:
ldrb r2, [r3, #0x2]
You can decrypt your level with the decrypt function and compare, or just use the level check already in the game stated above.
PS. Can I use and credit your routine in the OP? It works on my rom :)
Trainer 781
July 14th, 2014 7:12 AM
Sure, use it. And thank you for telling the right offset
Trainer 781
July 27th, 2014 7:30 AM
^- Just remove these lines in the night time item hold evolution then you are set:
Code:
ldr r5, time
ldrb r5, [r5, #0x0]
cmp r5, #0x15
bge test
cmp r5, #0x6
blt test
b exit
test:
Trainer 781
July 27th, 2014 8:12 AM
Yes, but not necessary. Remove it because now it has no use.
GoGoJJTech
July 27th, 2014 8:26 PM
I really hope you understand that there are lines you need to change based on how many evolutions per pokemon you have. Without those changes, people will have errors.
kearnseyboy6
July 27th, 2014 11:49 PM
Quote:
Originally Posted by GoGoJJTech
(Post 8372645)
I really hope you understand that there are lines you need to change based on how many evolutions per pokemon you have. Without those changes, people will have errors.
It's covered already in the tutorial ;)
jirachiwishmaker
July 27th, 2014 11:52 PM
Quote:
Originally Posted by KDS
(Post 8371658)
Yes, but not necessary. Remove it because now it has no use.
Do you know the RAM Map or RAM Map Name of Emerald?
Trainer 781
July 28th, 2014 7:56 AM
^ -Well no, because I have not hacked emerald yet. So I don't have much info about emerald offsets.
GoGoJJTech
July 28th, 2014 8:13 AM
Quote:
Originally Posted by kearnseyboy6
(Post 8372876)
It's covered already in the tutorial ;)
o rlly
>.<
Derp moment there, continue on :D
anonyboy
August 2nd, 2014 4:29 AM
I've Added move induced Evoultion To the rom, but how do i make it display on g3hs, And should i put freespace in place of the table that's repointed in the beginning of the tut?
EDIT: It Shows up In G3HS But uses the item table and A Ton of garbage after it, How do i Make it Show moves?
Trainer 781
August 2nd, 2014 10:11 AM
Quote:
Originally Posted by anonyboy
(Post 8381403)
I've Added move induced Evoultion To the rom, but how do i make it display on g3hs, And should i put freespace in place of the table that's repointed in the beginning of the tut?
EDIT: It Shows up In G3HS But uses the item table and A Ton of garbage after it, How do i Make it Show moves?
You have to cross-reference the move id with item id, i.e. in G3HS suppose you want to evolve by learning the move pound, gets its move_id which is 0x1, now search the item which has the same item_id of 0x1 (say masterball for example, don't remember the item with id 0x1), set the item with the id 0x1 in G3hs, then the pokemon will evolve by learning pound. This is a bit inconvenient, but this only the way you can set the evo method for now. (The future versions of G3HS are expected to add the dropdown list for moves and mapnames).
As for filling the original table with freespace is not neccessary, but generally, it is a good practice while relocating tables as the data there is practically useless, and if big tables are repointed then you can also get some extra amount of freespace.
anonyboy
August 2nd, 2014 4:09 PM
Quote:
Originally Posted by KDS
(Post 8381780)
You have to cross-reference the move id with item id, i.e. in G3HS suppose you want to evolve by learning the move pound, gets its move_id which is 0x1, now search the item which has the same item_id of 0x1 (say masterball for example, don't remember the item with id 0x1), set the item with the id 0x1 in G3hs, then the pokemon will evolve by learning pound. This is a bit inconvenient, but this only the way you can set the evo method for now. (The future versions of G3HS are expected to add the dropdown list for moves and mapnames).
As for filling the original table with freespace is not neccessary, but generally, it is a good practice while relocating tables as the data there is practically useless, and if big tables are repointed then you can also get some extra amount of freespace.
Actually It eventually showed me The move list but wasn't working in the game.
BTW, What exactly do i need to edit in the Pokemon BST Table to make The gender Evolutions work?
kearnseyboy6
August 2nd, 2014 11:25 PM
Quote:
Originally Posted by PurpleOrange
(Post 8381621)
i've found a bug regarding the level up with item in the night/day, when evolving if you cancel the evolution, the item used still disappears, is there any way to fix that?
Aaaaah nope, dammit sorry.
kearnseyboy6
August 4th, 2014 1:59 AM
Quote:
Originally Posted by PurpleOrange
(Post 8382876)
is there any way to make it so you cannot cancel the evolution? or not get rid of the item at all? they're not ideal but they'd fix the problem
yes you can actually sorry! I'll do some research on the evolution stone as that's where you can't press the B button. I'm super busy at the moment but I'll try to have it done by the end of the week!
Mustachemon
August 6th, 2014 6:57 AM
The patch someone posted does not work with MrDollSteak's rombase. Could someone please add a patch that works with the rombase?
Edit: It probably has to do with the .ini, I'll investigate.
Edit 2: Fixed it. Just a quick .ini change and I got it to work! :)
Evil Goku
August 18th, 2014 10:11 AM
Thanks for information bro Now I will Evol with Day And Night Like Pokemon PPD HGSS
daniilS
August 19th, 2014 4:16 AM
Quote:
Originally Posted by kearnseyboy6
(Post 8384552)
yes you can actually sorry! I'll do some research on the evolution stone as that's where you can't press the B button. I'm super busy at the moment but I'll try to have it done by the end of the week!
Hmm, new issue. I will also look into it.
persian_17
August 28th, 2014 2:26 AM
Could you do an evolution which a pokemon will evolve just by holding an item, and evolve back if you remove the held item? it could be a good alternative for mega evolution... ^_^
daniilS
August 28th, 2014 2:35 AM
Quote:
Originally Posted by persian_17
(Post 8417506)
Could you do an evolution which a pokemon will evolve just by holding an item, and evolve back if you remove the held item? it could be a good alternative for mega evolution... ^_^
Yeah, it would just always be mega evolved, even in the overworld. Also it would allow players to have 6 mega evolved pokemon on their team, wouldn't require a mega ring, and probably would have to be a simple asm routine to change the index number based on a hold item (which I have made and still need to clean up before publishing) rather than an evolution routine.
I think we'd need more than that.
persian_17
August 28th, 2014 2:49 AM
Quote:
Originally Posted by daniilS
(Post 8417513)
Yeah, it would just always be mega evolved, even in the overworld. Also it would allow players to have 6 mega evolved pokemon on their team, wouldn't require a mega ring, and probably would have to be a simple asm routine to change the index number based on a hold item (which I have made and still need to clean up before publishing) rather than an evolution routine.
I think we'd need more than that.
my idea is to have only 1 universal stone that will serve as a mega stone for all, and will be given only one in-game, ithink it is alright for a pokemon to stay mega evolved out of the battle, but i dont know what to do for x and y variants of charizard and mewtwo :(
i have another idea, what about a reverse type of nincada's evolution,
e.g. Slowpoke will evolve to slowbro if you have a shellder in the team. but shellder will be removed to the team after slowpoke evolved.
daniilS
August 28th, 2014 3:29 AM
Quote:
Originally Posted by persian_17
(Post 8417524)
i have another idea, what about a reverse type of nincada's evolution,
e.g. Slowpoke will evolve to slowbro if you have a shellder in the team. but shellder will be removed to the team after slowpoke evolved.
I think it would be easier to edit the Mantyke-Mantine evo for that.
persian_17
August 28th, 2014 8:59 AM
Quote:
Originally Posted by daniilS
(Post 8417558)
I think it would be easier to edit the Mantyke-Mantine evo for that.
But the remoraid stays in the party right? its better if shellder and slowpoke will be joined like what should happen
daniilS
August 28th, 2014 9:44 AM
Quote:
Originally Posted by persian_17
(Post 8417826)
But the remoraid stays in the party right? its better if shellder and slowpoke will be joined like what should happen
That's why I said edit. randomfillertoreachcharacterminimum
kearnseyboy6
August 28th, 2014 7:08 PM
Quote:
Originally Posted by persian_17
(Post 8417826)
But the remoraid stays in the party right? its better if shellder and slowpoke will be joined like what should happen
In the last section I explain how to make it compatible with G3HS, simply for KK552's convention and you can make any pokemon evolve with any pokemon. If you want the pokemon to disappear after evolution, well that's a whole kettle of fish.
Lance32497
September 1st, 2014 6:37 PM
Quote:
Originally Posted by kearnseyboy6
(Post 8309246)
Step 2 (Creating evolution routines; ASM needed) [SPOILER]That table we pointed to contains the pointers to each evolution method, so if we write our own we can have a new evolution.
However writing a method can be quite difficult to explain. I'll try my best. Here is a working* script I wrote for Goodra's evolution (raining in the overworld)
How can I insert this routine in my rom, because it is not he same in the tutorial given by other here..... He/She says that to call that routine in a rom, I must call that using XSE..... Just a noob question...xD
Quote:
Once you are done assemble the .asm file and place it in your ROM somewhere. Now go to your table and add another entry pointing to the assembled code (you do NOT need +1).
I dont get that, so after I wrote THE RAIN EVO METHOD in THUMB assembler, I need to right that again inTHUMB ASSEMBLER? then after what will I do? Do I need to edit hex or something....sorry for the questions, I just want to know how to compile that and make it works.
Quote:
Step 3 (Making the routine work in the game) [SPOILER]To make this compatible with G3HS open up the .ini file and navigate to these lines:
Add in a name for your method, and for properties add either Level, Item, None. Note: Follow KK552's syntax for the ini file.
another that confuses my mind.... I tried to edit that in G#HS but nothing happened... and Will you give me a link for KK552's syntax for the ini file . another one, will you give me a clearer example of what will I edit in the ini file... for example in evomethod blah blah blah, I just replace the offset of offset I placed my asm or something........
also, I dont know what do you mean in #0x ## is that a variable for a certain byte, example #0x16 that refers to a fairy or something,
How should I insert that in a Rom? Is that necessary to write? and Is that seperated in the first asm?
kearnseyboy6
September 2nd, 2014 8:52 PM
Quote:
Originally Posted by Lance32497
(Post 8422889)
How can I insert this routine in my rom, because it is not he same in the tutorial given by other here..... He/She says that to call that routine in a rom, I must call that using XSE..... Just a noob question...xD
I dont get that, so after I wrote THE RAIN EVO METHOD in THUMB assembler, I need to right that again inTHUMB ASSEMBLER? then after what will I do? Do I need to edit hex or something....sorry for the questions, I just want to know how to compile that and make it works.
another that confuses my mind.... I tried to edit that in G#HS but nothing happened... and Will you give me a link for KK552's syntax for the ini file . another one, will you give me a clearer example of what will I edit in the ini file... for example in evomethod blah blah blah, I just replace the offset of offset I placed my asm or something........
sorry for the questions
Firstly all routines you compile you must put anywhere in the ROM with free space that ends in either 0,4,8,C. You then take that location and put it in the next entry of the table you repointed in step 1. No SXE is needed.
Then open up the ini, and follow the format for G3HS (there is only 'level','item','trade') to add your own entries.
Lance32497
September 3rd, 2014 1:40 AM
Quote:
Originally Posted by kearnseyboy6
(Post 8424150)
Firstly all routines you compile you must put anywhere in the ROM with free space that ends in either 0,4,8,C. You then take that location and put it in the next entry of the table you repointed in step 1. No SXE is needed.
Then open up the ini, and follow the format for G3HS (there is only 'level','item','trade') to add your own entries.
sorry, but can you give the link on how to edit .ini file?
and my second question...How can I perform bl routine
TIA
Chronosplit
October 6th, 2014 2:44 PM
Question, I'm curious if anyone's tried this.
Let's say I used the methods here to introduce leveling up as male only, and made Kirlia level-up as a male in to evolve into Gallade. But I leave Gardevoir's evolution at plain level-up as any gender, except at a higher level. Let's say Gallade is at 25 and Gardevoir is at 30.
Will the world explode if I left things like this? What happens if someone wants to raise a Male Gardevoir under these conditions?
Oh, and do I need to change an item into an evolutionary stone in order to use it for leveling-up while holding an item?
MrDollSteak
October 6th, 2014 6:59 PM
Quote:
Originally Posted by Projectwolfie
(Post 8461773)
Question, I'm curious if anyone's tried this.
Let's say I used the methods here to introduce leveling up as male only, and made Kirlia level-up as a male in to evolve into Gallade. But I leave Gardevoir's evolution at plain level-up as any gender, except at a higher level. Let's say Gallade is at 25 and Gardevoir is at 30.
Will the world explode if I left things like this? What happens if someone wants to raise a Male Gardevoir under these conditions?
Oh, and do I need to change an item into an evolutionary stone in order to use it for leveling-up while holding an item?
It wouldn't work, Gardevoir would need to be female. You can't have Level Up and Friendship evolutions for the same reason. I'm pretty sure that the game doesn't know how to differentiate between the two evolutions if they activate at the same time (if you had a lvl 29 male kirlia that hit 30)
kearnseyboy6
October 6th, 2014 10:05 PM
Quote:
Originally Posted by MrDollSteak
(Post 8461962)
It wouldn't work, Gardevoir would need to be female. You can't have Level Up and Friendship evolutions for the same reason. I'm pretty sure that the game doesn't know how to differentiate between the two evolutions if they activate at the same time (if you had a lvl 29 male kirlia that hit 30)
Not exactly, the game can use 1 variable argument (visible in G3HS) which can be a level, hold item, map name, weather, move etc.
There are two branching locations as well:
Check for appropriate level: levelcheckloc: .word 0x08043017
Go straight to the evolution (no levelcheck): evolutionloc: .word 0x0804310D
Also specifics relating to the properties of the pokemon ie: gender, stats, happiness etc can all be decrypted from the pokemon. So yes you can decrypt happiness and then compare it and send it to the levelcheck location.
~SAGE
October 7th, 2014 2:25 AM
when i apply the .ips in my rom, the rom crashs,
why?
i've installed the patch of jonkane with 870pkm,
cold u tell me what new types of evolution are included in this new patch?
kearnseyboy6
October 7th, 2014 2:47 PM
Quote:
Originally Posted by laflacapkm
(Post 8462127)
when i apply the .ips in my rom, the rom crashs,
why?
i've installed the patch of jonkane with 870pkm,
cold u tell me what new types of evolution are included in this new patch?
No idea, you will have to discuss that with jonkane and ask where he repointed everything in his patch.
Lance32497
October 15th, 2014 10:55 PM
Hey the other routines can now import to rom? or I need to put bl code?
anonyboy
October 15th, 2014 11:14 PM
Quote:
Originally Posted by kearnseyboy6
(Post 8462590)
No idea, you will have to discuss that with jonkane and ask where he repointed everything in his patch.
Basically he dosen't need to ask, he just need to go to the offset 0x42fc0 and then to the pointer located there.
Quote:
Originally Posted by PurpleOrange
(Post 8473427)
i don't know if i should put this here but whatever. for emerald, the table that needs to be copied to free space is at 0x6D198. and the offset that needs to be changed to the repointed table is at 0x6D194. for ruby, the table that needs to be copied to free space is at 0x3F58C. and the offset that needs to be changed to the repointed table is at 0x3F588. however i do not know where the limiting bytes are for either of them
Try Changing In emerald 0x6D180 and in ruby it is 0x3F574.
HidoranBlaze
October 19th, 2014 5:55 PM
Quote:
Originally Posted by PurpleOrange
(Post 8474102)
can any one tell me what's wrong with this routine, it's for specific map name evolution in emerald
i figure it may have something to do with the numbers at the bottom, but i'm not good with asm
I just looked at your map bank offset in VBA's memory viewer, and it seems like your offset is wrong. (It had a FF byte in it, and it didn't change when I went from Petalburg City to Route 102) I'll try and find the correct map bank offset, and I'll notify you if I find it.
EDIT: the map bank offset seems to be 0x020322E4. Try that, and see if it works. If it doesn't work, the offsets for the levelcheckloc or the noevo could be wrong. (or the evolutions work differently for em, but I highly doubt that)
EDIT2: *facepalm
I misunderstood which routine you were using. I thought you were using the map bank routine, instead of the map name routine. Sorry about that. That being said though, you probably still have the wrong map name offset, since the ram offsets for fr and em are usually different.
jirachiwishmaker
October 20th, 2014 4:02 AM
Quote:
Originally Posted by PurpleOrange
(Post 8474102)
can any one tell me what's wrong with this routine, it's for specific map name evolution in emerald
i figure it may have something to do with the numbers at the bottom, but i'm not good with asm
The map ram of Emerald is 0x0203732C. I spent a few hours to find it out last time. I had been tested it and worked properly.
jirachiwishmaker
October 20th, 2014 4:07 AM
Quote:
Originally Posted by HidoranBlaze
(Post 8474647)
I just looked at your map bank offset in VBA's memory viewer, and it seems like your offset is wrong. (It had a FF byte in it, and it didn't change when I went from Petalburg City to Route 102) I'll try and find the correct map bank offset, and I'll notify you if I find it.
EDIT: the map bank offset seems to be 0x020322E4. Try that, and see if it works. If it doesn't work, the offsets for the levelcheckloc or the noevo could be wrong. (or the evolutions work differently for em, but I highly doubt that)
EDIT2: *facepalm
I misunderstood which routine you were using. I thought you were using the map bank routine, instead of the map name routine. Sorry about that. That being said though, you probably still have the wrong map name offset, since the ram offsets for fr and em are usually different.
It was fixed. The map ram is 0x0203732C. Could you tell me how to change the map bank and map number into hex code if I using the map bank routine in Emerald? Thanks in advance.
anonyboy
October 20th, 2014 4:58 AM
Quote:
Originally Posted by jirachiwishmaker
(Post 8474893)
It was fixed. The map ram is 0x0203732C. Could you tell me how to change the map bank and map number into hex code if I using the map bank routine in Emerald? Thanks in advance.
could you find the decryptpoke offset for emerald? if we have it that means we could port the existing evolution routines from FR to Emerald.
jirachiwishmaker
October 20th, 2014 5:42 AM
Quote:
Originally Posted by anonyboy
(Post 8474905)
could you find the decryptpoke offset for emerald? if we have it that means we could port the existing evolution routines from FR to Emerald.
I have all of them:
levelcheckloc: 0x0806D32F
noevo: 0x0806D333
decryptpoke: 0x0806A519
encryptpoke: 0x0806ACAD
firstpoke: 0x020244EC
mapbank: 0x020322E4
map: 0x0203732C
HidoranBlaze
October 20th, 2014 6:40 AM
Quote:
Originally Posted by jirachiwishmaker
(Post 8474893)
It was fixed. The map ram is 0x0203732C. Could you tell me how to change the map bank and map number into hex code if I using the map bank routine in Emerald? Thanks in advance.
I'm not sure what you're asking here. If you're asking how to assign the map bank argument to each Pokemon without using G3HS, there's an evolution table with the structure listed here: http://bulbapedia.bulbagarden.net/wiki/Pokémon_evolution_data_structure_in_Generation_III
The offset is somewhere in G3HS's ini.
If you're asking how to find the hex numbers for the map bank and map number, that's easy. AMap has the map bank and map numbers listed; just convert that to hex and you're good to go. The map number offset is right next to the map bank offset in the ram btw.
anonyboy
October 20th, 2014 11:06 AM
Quote:
Originally Posted by jirachiwishmaker
(Post 8474927)
I have all of them:
levelcheckloc: 0x0806D32F
noevo: 0x0806D333
decryptpoke: 0x0806A519
encryptpoke: 0x0806ACAD
firstpoke: 0x020244EC
mapbank: 0x020322E4
map: 0x0203732C
Well i think keanersboy should make a step 4 regarding methods in emerald and we should show how to port/publish ported routines.
HidoranBlaze
October 20th, 2014 1:38 PM
@kearnseyboy6:
So I was looking through your methods, and I noticed this one:
If we're checking for a specific map bank and map number, wouldn't it be more efficient to load a halfword into r6 and compare to r2, since the map number is stored right next to the map bank in RAM?
If we're checking for a specific map bank and map number, wouldn't it be more efficient to load a halfword into r6 and compare to r2, since the map number is stored right next to the map bank in RAM?
Hello guys, I now Understand howto implement it but I got some errors, not ingame errors.:
First of all, I dont know if my evolution properties are correct
Fairymove-None
Pancham-Level
Male-Item(because of Gallade evolution)
female-Level
rain-Level
night time level up-Level
Day time tyrunt-Level
Night time Item Hold Induced Evolution-Item
Day time Item Hold Induced Evolution-Item
Evolution by Move induced-Item
Evolve with other Pokemon in Party-Item(Correct me if im wrong, I used item because the pokemon that will be the result of the evolution was the same in the index number of the item I used)
I Havent test those routines because the newly added evolution methods didnt appeared in G3HS although I edited the ini.
Here's the edited evo propeties:
Quote:
evolutionmethods = Breeding Only,Friendship,Friendship (Day),Friendship (Night),Level-Up,Trade,Trade (Hold Item),Stone,ATK > DEF,ATK = DEF,ATK < DEF,PID (Wurmple->Silcoon),PID (Wurmple->Cascoon),Spawn a Second,Create Spawn,Beauty,Fairy Move,Pancham,Male,Female,Rain,NightTimeLVLUP,DayTimeLVLUP,Night Time Item,Day time Item,Move induced,Other Pokemon
evomethodsproperties = None,None,None,None,Level,None,Item,Item,Level,Level,Level,Level,Level,Level,Level,None,None,Level,Item,Level,Level,Level,Level,Item,Item,None,None
and here is my entire ini.
Spoiler:
[ALL]
offsetthatcontainssecondromid = 0xFFFFFE
justusestandardini = False
checkfordevbuilds = True
checkforupdates = True
autosavepokeswhenswitching = False
notes_about_this_ini = -
note1 = justusestandardini allows you to turn the dynamic ini system on or off.
note2 = All booleans are either have two CASE-SENSITIVE states -> True or False
note3 = The lists (like EggGroups) must be in order from lowest to highest.
note4 = If you want to provide a name for your game in the ini, just do Name = X. See below examples. Eventually, I will load this name to the program and display it.
note5 = DO NOT change the gamecode property in the ini. That is used for providing the correct fix for Shedinja Evolution for your base rom.
note6 = Evolution types currently support the following CASE-SENSITIVE arguments: Level, Item, Pokemon, Move, None
Hello guys, I now Understand howto implement it but I got some errors, not ingame errors.:
First of all, I dont know if my evolution properties are correct
Fairymove-None
Pancham-Level
Male-Item(because of Gallade evolution)
female-Level
rain-Level
night time level up-Level
Day time tyrunt-Level
Night time Item Hold Induced Evolution-Item
Day time Item Hold Induced Evolution-Item
Evolution by Move induced-Item
Evolve with other Pokemon in Party-Item(Correct me if im wrong, I used item because the pokemon that will be the result of the evolution was the same in the index number of the item I used)
I Havent test those routines because the newly added evolution methods didnt appeared in G3HS although I edited the ini.
Here's the edited evo propeties:
and here is my entire ini.
Spoiler:
[ALL]
offsetthatcontainssecondromid = 0xFFFFFE
justusestandardini = False
checkfordevbuilds = True
checkforupdates = True
autosavepokeswhenswitching = False
notes_about_this_ini = -
note1 = justusestandardini allows you to turn the dynamic ini system on or off.
note2 = All booleans are either have two CASE-SENSITIVE states -> True or False
note3 = The lists (like EggGroups) must be in order from lowest to highest.
note4 = If you want to provide a name for your game in the ini, just do Name = X. See below examples. Eventually, I will load this name to the program and display it.
note5 = DO NOT change the gamecode property in the ini. That is used for providing the correct fix for Shedinja Evolution for your base rom.
note6 = Evolution types currently support the following CASE-SENSITIVE arguments: Level, Item, Pokemon, Move, None
You're close... I've edited wrong things in your ini
Lance32497
December 11th, 2014 5:19 AM
Quote:
Originally Posted by anonyboy
(Post 8528317)
You're close... I've edited wrong things in your ini
Ahhh, thanks xD,.Ill tried it asap.
EDIT: I tried your edited ini but it does not still let my new evolution methods appear in the tool...
Heres the screenshot: http://i.imgur.com/Ub0slOE.png
AriArk
December 21st, 2014 10:39 AM
Hey
How would I use the Specific Map Name evolution in G3HS?
anonyboy
December 22nd, 2014 4:06 AM
Quote:
Originally Posted by AriArk
(Post 8541701)
Hey
How would I use the Specific Map Name evolution in G3HS?
Write Location In the argument.
Specific Map Bank/Name Has to be edited in Hex.
AriArk
December 22nd, 2014 5:54 AM
Quote:
Originally Posted by anonyboy
(Post 8542665)
Write Location In the argument.
Specific Map Bank/Name Has to be edited in Hex.
I've put that, but it is not showing up in the program
anonyboy
December 22nd, 2014 7:22 AM
Quote:
Originally Posted by AriArk
(Post 8542734)
I've put that, but it is not showing up in the program
Have you set an evolution method's name? check it!
thehypersonic2338
January 6th, 2015 9:08 AM
how to make new evo method appear in g3hs?
AtecainCorp.
January 6th, 2015 12:28 PM
Someone can translate this to EMERALD or RUBY?
Joexv
January 6th, 2015 1:29 PM
Quote:
Originally Posted by thehypersonic2338
(Post 8567912)
how to make new evo method appear in g3hs?
Rea the OP it says how.:P
Quote:
Originally Posted by Ksiazek Bartlomiej
(Post 8568206)