Advertiser Content

Development Forms and Formes Page 3

Started by daniilS January 1st, 2015 1:15 PM
  • 28592 views
  • 99 replies

daniilS

busy trying to do stuff not done yet

Age 20
Male
Seen November 6th, 2018
Posted October 7th, 2015
409 posts
6.6 Years
May I know how about the form of Cherrim?
I have actually made a routine for it, based on Castform, but I couldn't test it because Castform itself was broken in PRPB somehow. I should look at it again soon.
Male
California
Seen September 28th, 2015
Posted September 4th, 2015
16 posts
5.3 Years
I think they're referring to gender differences, like Jellicent or Hippowdon or whatever.
Exactly, there are some big gender differences in mons like unfezant, pyroar, jellicent, meowstic, and it would be nice to make nidoran one pokemon lol
Though I'm far from a pro, I try can help you on your ROM with scripting, ASM, mapping WHATEVER.

Just ask

Lance32497

LanceKoijer of Pokemon_Addicts

Male
Criscanto town-Ginoa Region xD
Seen August 13th, 2017
Posted January 1st, 2017
793 posts
5.5 Years
Hello, I tried to insert the burmy routine but it doesn't work

plant plant sandy 0000 0000 0000 sandy sandy trash plant
What does those mean?

Should I insert the index number of Plant burmy, Sand Burmy and Trash burmmy in reverse hex? And I just leave those 0's or vice versa?
This signature has been disabled.
Scrollbar appears
Please review and fix the issues by reading the signature rules.

You must edit it to meet the limits set by the rules before you may remove the [sig-reason] code from your signature. Removing this tag will re-enable it.

Do not remove the tag until you fix the issues in your signature. You may be infracted for removing this tag if you do not fix the specified issues. Do not use this tag for decoration purposes.

PurpleOrange

still don't know what I'm doing

Age 22
Male
Littleroot Town (UK)
Seen November 27th, 2018
Posted September 29th, 2018
366 posts
6.4 Years
Hello, I tried to insert the burmy routine but it doesn't work

plant plant sandy 0000 0000 0000 sandy sandy trash plant
What does those mean?

Should I insert the index number of Plant burmy, Sand Burmy and Trash burmmy in reverse hex? And I just leave those 0's or vice versa?
yes, you do put the index number in reverse hex, and don't touch those zeros

Lance32497

LanceKoijer of Pokemon_Addicts

Male
Criscanto town-Ginoa Region xD
Seen August 13th, 2017
Posted January 1st, 2017
793 posts
5.5 Years
This might be a noob question, but does this code
Spoiler:
ldr r3, burmytransform
mov pc, r3
burmytransform: .word 0x________
@address of burmytransform.asm here
continue:
str r0, [sp]
can be modifiedso that, not only burmy can be used but also Vivilion..

*Just asking*
This signature has been disabled.
Scrollbar appears
Please review and fix the issues by reading the signature rules.

You must edit it to meet the limits set by the rules before you may remove the [sig-reason] code from your signature. Removing this tag will re-enable it.

Do not remove the tag until you fix the issues in your signature. You may be infracted for removing this tag if you do not fix the specified issues. Do not use this tag for decoration purposes.

daniilS

busy trying to do stuff not done yet

Age 20
Male
Seen November 6th, 2018
Posted October 7th, 2015
409 posts
6.6 Years
This might be a noob question, but does this code
Spoiler:
ldr r3, burmytransform
mov pc, r3
burmytransform: .word 0x________
@address of burmytransform.asm here
continue:
str r0, [sp]
can be modifiedso that, not only burmy can be used but also Vivilion..

*Just asking*
This code is the hook for the form changing routine. Vivillon only has different patterns. Also, the GBA doesn't know what region you're in.

Lance32497

LanceKoijer of Pokemon_Addicts

Male
Criscanto town-Ginoa Region xD
Seen August 13th, 2017
Posted January 1st, 2017
793 posts
5.5 Years
This code is the hook for the form changing routine. Vivillon only has different patterns. Also, the GBA doesn't know what region you're in.
oohhh, I have a question, about the burmy's evolution, what if I have Sandy Burmy then I make Sandy Wormadam as its evolution, does it register the index number in National Dex?
This signature has been disabled.
Scrollbar appears
Please review and fix the issues by reading the signature rules.

You must edit it to meet the limits set by the rules before you may remove the [sig-reason] code from your signature. Removing this tag will re-enable it.

Do not remove the tag until you fix the issues in your signature. You may be infracted for removing this tag if you do not fix the specified issues. Do not use this tag for decoration purposes.

daniilS

busy trying to do stuff not done yet

Age 20
Male
Seen November 6th, 2018
Posted October 7th, 2015
409 posts
6.6 Years
oohhh, I have a question, about the burmy's evolution, what if I have Sandy Burmy then I make Sandy Wormadam as its evolution, does it register the index number in National Dex?
Give them the same dex number.

Lance32497

LanceKoijer of Pokemon_Addicts

Male
Criscanto town-Ginoa Region xD
Seen August 13th, 2017
Posted January 1st, 2017
793 posts
5.5 Years
Give them the same dex number.
Ohhh, thanks
This signature has been disabled.
Scrollbar appears
Please review and fix the issues by reading the signature rules.

You must edit it to meet the limits set by the rules before you may remove the [sig-reason] code from your signature. Removing this tag will re-enable it.

Do not remove the tag until you fix the issues in your signature. You may be infracted for removing this tag if you do not fix the specified issues. Do not use this tag for decoration purposes.

Xencleamas

Suddenly lurking in the shadows...

Male
Asgard
Seen January 21st, 2019
Posted August 7th, 2018
460 posts
6.1 Years
0x8004 needs to be the slot in your party containing the Swampert, 0x8005 the index number of Mewtwo. And it's worth noting that after the routine finishes, both vars will remain unaltered.
Ahh. So, 0x8004 is the PARTY SLOT. Ok! I got it now working. Thanks dude. But, what about if a certain Pokemon is selected? If that certain Pokemon is selected, it will change. If not, it does nothing. Example, I have Charizard want to change into someone else but I have picked Blastoise then it will do nothing. I guess after the special that picks Pokemon, there should be a comparison if a certain index slot is selected. Can you post an example of a script as well? Hope you can understand this if confusing. Thanks! Nah! I've figured it out about specific Pokemon. I've combined the script with the "checkpokemon" script found at quick research thread.

Xencleamas Untitled Pokémon Fan Game (Coming Soon!) Untitled Region (Coming Soon!)

Circaoffire

Clueless Scripter :/

Male
Seen May 27th, 2016
Posted July 22nd, 2015
48 posts
7.9 Years
By the name of Arceus: EWWWWW
I have already stated that I got Arceus and Giratina working using hold items, they just don't work yet from the pc, I know why, but somehow I still never have had the time to sit down and no-life port the routine to four different places.

Neither will I use any kind of IV cheating for judgement, getting it to have variable type shouldn't be that hard.
So, I see you said you got the hold item forme changes working. If it's fully complete and working, would you mind updating the original post with that one too? Your ASM is super rad, and I'm curious as to how you got hold items working. :D Cheers!
Male
Seen January 10th, 2019
Posted May 4th, 2017
216 posts
6.6 Years

Arceus and Giratina forms


Spoiler:

Emerald
Spoiler:

Insert this routine anywhere :
Spoiler:

.thumb
.thumb_func

.equ GriseousIndex, 0x____
.equ GiratinaIndex, 0x____
.equ GiratinaOIndex, 0x____

.equ ArceusNormal, 0x____

.equ FistPlateIndex, 0x____
.equ ArceusFight, 0x____

.equ SkyPlateIndex, 0x____
.equ ArceusFly, 0x____

.equ ToxicPlateIndex, 0x____
.equ ArceusPoison, 0x____

.equ EarthPlateIndex, 0x____
.equ ArceusGround, 0x____

.equ StonePlateIndex, 0x____
.equ ArceusRock, 0x____

.equ InsectPlateIndex, 0x____
.equ ArceusBug, 0x____

.equ SpookyPlateIndex, 0x____
.equ ArceusGhost, 0x____

.equ IronPlateIndex, 0x____
.equ ArceusSteel, 0x____

.equ FlamePlateIndex, 0x____
.equ ArceusFire, 0x____

.equ SplashPlateIndex, 0x____
.equ ArceusWater, 0x____

.equ ZapPlateIndex, 0x____
.equ ArceusElectric, 0x____

.equ MeadowPlateIndex, 0x____
.equ ArceusGrass, 0x____

.equ IciclePlateIndex, 0x____
.equ ArceusIce, 0x____

.equ DracoPlateIndex, 0x____
.equ ArceusDragon, 0x____

.equ DreadPlateIndex, 0x____
.equ ArceusDark, 0x____

.equ PixiPlateIndex, 0x____
.equ ArceusFairy, 0x____

Start:
ldrb r1, [r4]
ldrb r0, [r4, #1]
lsl r0, r0, #8
add r1, r1, r0
mov r0, r8
strh r1, [r0, #2]
push {r0-r7}

Initialising:
ldrh r2, [r0]
ldr r6, GiratinaO
cmp r2, r6
beq GrisCheck
ldr r6, Giratina
cmp r2, r6
beq GrisCheck2

LoadGivenItem:
mov r6, #6
adr r5, Table
add r5, #4
mov r7, r1
bl LoopLoad
cmp r6, #0
bne ItemInTable

ItemNotInTable:
adr r5, Table
add r5, #6
mov r6, #6
mov r7, r2
bl LoopLoad
cmp r6, #1
bne Return
ldrh r4, [r5, #2]
b Changing

GrisCheck:
ldr r6, GriseousOrb
cmp r1, r6
beq LoadGivenItem
ldr r4, Giratina
b Changing

GrisCheck2:
ldr r6, GriseousOrb
cmp r1, r6
bne LoadGivenItem
ldr r4, GiratinaO
b Changing

ItemInTable:
ldrh r3, [r5, #2]
mov r7, r2
mov r6, #6
adr r5, Table
bl LoopLoad
cmp r6, #1
bne Return
mov r4, r3
b Changing

Return:
pop {r0-r7}
Return3:
ldr r0, Back
bx r0
Return2:
ldr r0, Back2
bx r0

Changing:
strh r4, [r0]
pop {r0-r7}
ldr r3, Limit
cmp r0, r3
bhi Return3
mov r0, r7
ldr r3, pokemon_calc_checksum
bl Call
strh r0, [r7, #0x1C]
mov r0, r7
ldr r3, pokemon_encrypt
bl Call
mov r0, r7
ldr r3, pokemon_calculate_stats
bl Call
b Return2

LoopLoad:
push {lr}
Looping:
ldrh r4, [r5]
cmp r4, #0
beq Nope
cmp r4, r7
beq Yep
add r5, r6
b Looping
Nope:
mov r6, #0
pop {pc}
Yep:
mov r6, #1
pop {pc}

Call:
mov pc, r3

.align 2
GriseousOrb: .word GriseousIndex
Giratina: .word GiratinaIndex
GiratinaO: .word GiratinaOIndex
pokemon_calc_checksum: .word 0x08068C78
pokemon_encrypt: .word 0x0806A228
pokemon_calculate_stats: .word 0x08068D0C
Back: .word 0x0806B3D8+1
Back2: .word 0x0806B3EC+1
Limit: .word 0x02024744
Table:
.hword ArceusNormal, ArceusNormal, FistPlateIndex, ArceusFight, ArceusNormal, SkyPlateIndex, ArceusFly, ArceusNormal, ToxicPlateIndex
.hword ArceusPoison, ArceusNormal, EarthPlateIndex, ArceusGround, ArceusNormal, StonePlateIndex, ArceusRock, ArceusNormal, InsectPlateIndex
.hword ArceusBug, ArceusNormal, SpookyPlateIndex, ArceusGhost, ArceusNormal, IronPlateIndex, ArceusSteel, ArceusNormal, FlamePlateIndex
.hword ArceusFire, ArceusNormal, SplashPlateIndex, ArceusWater, ArceusNormal, ZapPlateIndex, ArceusElectric, ArceusNormal, MeadowPlateIndex
.hword ArceusGrass, ArceusNormal, IciclePlateIndex, ArceusIce, ArceusNormal, DracoPlateIndex, ArceusDragon, ArceusNormal, DreadPlateIndex
.hword ArceusDark, ArceusNormal, PixiPlateIndex, ArceusFairy, ArceusNormal, 0x0, 0x0, 0x0, 0x0

How to use it ? :
Spoiler:

At the start of the routine, just replace the 0x___ with the values you use.

/* 00 49 08 47 xx+1 xx xx 08 at 0806B04C with xx xx xx being the reversed address of your routine*/


Fire Red :
Spoiler:

Insert this routine anywhere :
Spoiler:

.thumb
.thumb_func

.equ GriseousIndex, 0x____
.equ GiratinaIndex, 0x____
.equ GiratinaOIndex, 0x____

.equ ArceusNormal, 0x____

.equ FistPlateIndex, 0x____
.equ ArceusFight, 0x____

.equ SkyPlateIndex, 0x____
.equ ArceusFly, 0x____

.equ ToxicPlateIndex, 0x____
.equ ArceusPoison, 0x____

.equ EarthPlateIndex, 0x____
.equ ArceusGround, 0x____

.equ StonePlateIndex, 0x____
.equ ArceusRock, 0x____

.equ InsectPlateIndex, 0x____
.equ ArceusBug, 0x____

.equ SpookyPlateIndex, 0x____
.equ ArceusGhost, 0x____

.equ IronPlateIndex, 0x____
.equ ArceusSteel, 0x____

.equ FlamePlateIndex, 0x____
.equ ArceusFire, 0x____

.equ SplashPlateIndex, 0x____
.equ ArceusWater, 0x____

.equ ZapPlateIndex, 0x____
.equ ArceusElectric, 0x____

.equ MeadowPlateIndex, 0x____
.equ ArceusGrass, 0x____

.equ IciclePlateIndex, 0x____
.equ ArceusIce, 0x____

.equ DracoPlateIndex, 0x____
.equ ArceusDragon, 0x____

.equ DreadPlateIndex, 0x____
.equ ArceusDark, 0x____

.equ PixiPlateIndex, 0x____
.equ ArceusFairy, 0x____

Start:
ldrb r1, [r4]
ldrb r0, [r4, #1]
lsl r0, r0, #8
add r1, r1, r0
mov r0, r8
strh r1, [r0, #2]
push {r0-r7}

Initialising:
ldrh r2, [r0]
ldr r6, GiratinaO
cmp r2, r6
beq GrisCheck
ldr r6, Giratina
cmp r2, r6
beq GrisCheck2

LoadGivenItem:
mov r6, #6
adr r5, Table
add r5, #4
mov r7, r1
bl LoopLoad
cmp r6, #0
bne ItemInTable

ItemNotInTable:
adr r5, Table
add r5, #6
mov r6, #6
mov r7, r2
bl LoopLoad
cmp r6, #1
bne Return
ldrh r4, [r5, #2]
b Changing

GrisCheck:
ldr r6, GriseousOrb
cmp r1, r6
beq LoadGivenItem
ldr r4, Giratina
b Changing

GrisCheck2:
ldr r6, GriseousOrb
cmp r1, r6
bne LoadGivenItem
ldr r4, GiratinaO
b Changing

ItemInTable:
ldrh r3, [r5, #2]
mov r7, r2
mov r6, #6
adr r5, Table
bl LoopLoad
cmp r6, #1
bne Return
mov r4, r3
b Changing

Return:
pop {r0-r7}
Return3:
ldr r0, Back
bx r0
Return2:
ldr r0, Back2
bx r0

Changing:
strh r4, [r0]
pop {r0-r7}
ldr r3, Limit
cmp r0, r3
bhi Return3
mov r0, r7
ldr r3, pokemon_calc_checksum
bl Call
strh r0, [r7, #0x1C]
mov r0, r7
ldr r3, pokemon_encrypt
bl Call
mov r0, r7
ldr r3, pokemon_calculate_stats
bl Call
b Return2

LoopLoad:
push {lr}
Looping:
ldrh r4, [r5]
cmp r4, #0
beq Nope
cmp r4, r7
beq Yep
add r5, r6
b Looping
Nope:
mov r6, #0
pop {pc}
Yep:
mov r6, #1
pop {pc}

Call:
mov pc, r3

.align 2
GriseousOrb: .word GriseousIndex
Giratina: .word GiratinaIndex
GiratinaO: .word GiratinaOIndex
pokemon_calc_checksum:	.word 0x0803E3E8+1
pokemon_encrypt:	.word 0x0803F8F8+1
pokemon_calculate_stats:	.word 0x0803E47C+1
Back:	.word 0x08040ADA+1
Back2:	.word 0x08040AEE+1
Limit: .word 0x02024540
Table:
.hword ArceusNormal, ArceusNormal, FistPlateIndex, ArceusFight, ArceusNormal, SkyPlateIndex, ArceusFly, ArceusNormal, ToxicPlateIndex
.hword ArceusPoison, ArceusNormal, EarthPlateIndex, ArceusGround, ArceusNormal, StonePlateIndex, ArceusRock, ArceusNormal, InsectPlateIndex
.hword ArceusBug, ArceusNormal, SpookyPlateIndex, ArceusGhost, ArceusNormal, IronPlateIndex, ArceusSteel, ArceusNormal, FlamePlateIndex
.hword ArceusFire, ArceusNormal, SplashPlateIndex, ArceusWater, ArceusNormal, ZapPlateIndex, ArceusElectric, ArceusNormal, MeadowPlateIndex
.hword ArceusGrass, ArceusNormal, IciclePlateIndex, ArceusIce, ArceusNormal, DracoPlateIndex, ArceusDragon, ArceusNormal, DreadPlateIndex
.hword ArceusDark, ArceusNormal, PixiPlateIndex, ArceusFairy, ArceusNormal, 0x0, 0x0, 0x0, 0x0

How to use it :
Spoiler:

At the start of the routine, just replace the 0x___ with the values you use.

/* 00 49 08 47 xx+1 xx xx 08 at 08040780 with xx xx xx being the reversed address of your routine*/


Male
Seen January 10th, 2019
Posted May 4th, 2017
216 posts
6.6 Years
How can I, in theory, add another form of Castform? (One example would be Castform's Forecast turning Castform into a 'Sandy' form when the weather turns into a Sandstorm.)
Create a new type for castform isn't really hard, the problem would be to create a new sprite and update it correctly

I edit this post rather than response with another one to not fill the thread with questions/answers

If you're new in ASM, you should read some ASM tutorial. Look in tool tutorials and resource, look for FBI's one, it is very good.

If you have trouble to understand some part, feel free to post your question in the ASM/disassembly help thread. You can also PM me while it's not too complicated.

Finally, you should let castform away for now, as even very experimented hackers don't understand everything about the routines that handle its sprite

Marky Vigoroth

...I just liked the Entei icon.

Male
Puerto Rico
Seen 3 Days Ago
Posted December 31st, 2019
102 posts
4.5 Years
Create a new type for castform isn't really hard, the problem would be to create a new sprite and update it correctly
...you are talking to someone who is new at scripting and ASM hacking.
Hack-player; hack-maker.

Lance32497

LanceKoijer of Pokemon_Addicts

Male
Criscanto town-Ginoa Region xD
Seen August 13th, 2017
Posted January 1st, 2017
793 posts
5.5 Years

Arceus and Giratina forms


Spoiler:

Emerald
Spoiler:

Insert this routine anywhere :
Spoiler:

.thumb
.thumb_func

.equ GriseousIndex, 0x____
.equ GiratinaIndex, 0x____
.equ GiratinaOIndex, 0x____

.equ ArceusNormal, 0x____

.equ FistPlateIndex, 0x____
.equ ArceusFight, 0x____

.equ SkyPlateIndex, 0x____
.equ ArceusFly, 0x____

.equ ToxicPlateIndex, 0x____
.equ ArceusPoison, 0x____

.equ EarthPlateIndex, 0x____
.equ ArceusGround, 0x____

.equ StonePlateIndex, 0x____
.equ ArceusRock, 0x____

.equ InsectPlateIndex, 0x____
.equ ArceusBug, 0x____

.equ SpookyPlateIndex, 0x____
.equ ArceusGhost, 0x____

.equ IronPlateIndex, 0x____
.equ ArceusSteel, 0x____

.equ FlamePlateIndex, 0x____
.equ ArceusFire, 0x____

.equ SplashPlateIndex, 0x____
.equ ArceusWater, 0x____

.equ ZapPlateIndex, 0x____
.equ ArceusElectric, 0x____

.equ MeadowPlateIndex, 0x____
.equ ArceusGrass, 0x____

.equ IciclePlateIndex, 0x____
.equ ArceusIce, 0x____

.equ DracoPlateIndex, 0x____
.equ ArceusDragon, 0x____

.equ DreadPlateIndex, 0x____
.equ ArceusDark, 0x____

.equ PixiPlateIndex, 0x____
.equ ArceusFairy, 0x____

Start:
ldrb r1, [r4]
ldrb r0, [r4, #1]
lsl r0, r0, #8
add r1, r1, r0
mov r0, r8
strh r1, [r0, #2]
push {r0-r7}

Initialising:
ldrh r2, [r0]
ldr r6, GiratinaO
cmp r2, r6
beq GrisCheck
ldr r6, Giratina
cmp r2, r6
beq GrisCheck2

LoadGivenItem:
mov r6, #6
adr r5, Table
add r5, #4
mov r7, r1
bl LoopLoad
cmp r6, #0
bne ItemInTable

ItemNotInTable:
adr r5, Table
add r5, #6
mov r6, #6
mov r7, r2
bl LoopLoad
cmp r6, #1
bne Return
ldrh r4, [r5, #2]
b Changing

GrisCheck:
ldr r6, GriseousOrb
cmp r1, r6
beq LoadGivenItem
ldr r4, Giratina
b Changing

GrisCheck2:
ldr r6, GriseousOrb
cmp r1, r6
bne LoadGivenItem
ldr r4, GiratinaO
b Changing

ItemInTable:
ldrh r3, [r5, #2]
mov r7, r2
mov r6, #6
adr r5, Table
bl LoopLoad
cmp r6, #1
bne Return
mov r4, r3
b Changing

Return:
pop {r0-r7}
Return3:
ldr r0, Back
bx r0
Return2:
ldr r0, Back2
bx r0

Changing:
strh r4, [r0]
pop {r0-r7}
ldr r3, Limit
cmp r0, r3
bhi Return3
mov r0, r7
ldr r3, pokemon_calc_checksum
bl Call
strh r0, [r7, #0x1C]
mov r0, r7
ldr r3, pokemon_encrypt
bl Call
mov r0, r7
ldr r3, pokemon_calculate_stats
bl Call
b Return2

LoopLoad:
push {lr}
Looping:
ldrh r4, [r5]
cmp r4, #0
beq Nope
cmp r4, r7
beq Yep
add r5, r6
b Looping
Nope:
mov r6, #0
pop {pc}
Yep:
mov r6, #1
pop {pc}

Call:
mov pc, r3

.align 2
[b]GriseousOrb: .word GriseousIndex
Giratina: .word GiratinaIndex
GiratinaO: .word GiratinaOIndex
pokemon_calc_checksum: .word 0x08068C78
pokemon_encrypt: .word 0x0806A228
pokemon_calculate_stats: .word 0x08068D0C
Back: .word 0x0806B3D8+1
Back2: .word 0x0806B3EC+1
Limit: .word 0x02024744
Table:
.hword 
ArceusNormal, 
ArceusNormal, 
FistPlateIndex, 
ArceusFight, 
ArceusNormal, 
SkyPlateIndex, 
ArceusFly, 
ArceusNormal,
ToxicPlateIndex, 
ArceusPoison, 
ArceusNormal
EarthPlateIndex, 
ArceusGround, 
ArceusNormal
StonePlateIndex, 
ArceusRock, 
ArceusNormal
InsectPlateIndex, 
ArceusBug, 
ArceusNormal
SpookyPlateIndex, 
ArceusGhost, 
ArceusNormal
IronPlateIndex, 
ArceusSteel, 
ArceusNormal
FlamePlateIndex, 
ArceusFire, 
ArceusNormal
SplashPlateIndex, 
ArceusWater, 
ArceusNormal
ZapPlateIndex, 
ArceusElectric, 
ArceusNormal
MeadowPlateIndex, 
ArceusGrass, 
ArceusNormal
IciclePlateIndex, 
ArceusIce, 
ArceusNormal
DracoPlateIndex, 
ArceusDragon, 
ArceusNormal
DreadPlateIndex, 
ArceusDark, 
ArceusNormal
PixiPlateIndex, 
ArceusFairy, 
ArceusNormal,
0x0, 0x0, 0x0, 0x0

How to use it ? :
Spoiler:

At the start of the routine, just replace the 0x___ with the values you use.

/* 00 49 08 47 xx+1 xx xx 08 at 0806B04C with xx xx xx being the reversed address of your routine*/


Fire Red (untested) :
Spoiler:

/* 00 49 08 47 xx+1 xx xx 08 at 08040780 with xx xx xx being the reversed address of your routine*/

pokemon_calc_checksum: .word 0x0803E3E8+1
pokemon_encrypt: .word 0x0803F8F8+1
pokemon_calculate_stats: .word 0x0803E47C+1
Back: .word 0x08040ADA+1
Back2: .word 0x08040AEE+1
Limit: .word 0x02024540

Look at the emerald part fort the routine/instructions

It's working in FireRed, thanks!
This signature has been disabled.
Scrollbar appears
Please review and fix the issues by reading the signature rules.

You must edit it to meet the limits set by the rules before you may remove the [sig-reason] code from your signature. Removing this tag will re-enable it.

Do not remove the tag until you fix the issues in your signature. You may be infracted for removing this tag if you do not fix the specified issues. Do not use this tag for decoration purposes.

thedarkdragon11

New World Pirate

Male
Raftel, New World
Seen 3 Days Ago
Posted 3 Days Ago
884 posts
10.8 Years
How about Aegislash, Deerling line, Shaymin, Genesect, Meloetta, Kyurem, Hoopa, Keldeo, Therian Formes or even Furfrou?
Male
Antarctica
Seen January 29th, 2018
Posted September 26th, 2017
326 posts
5.9 Years
How about Aegislash, Deerling line, Shaymin, Genesect, Meloetta, Kyurem, Hoopa, Keldeo, Therian Formes or even Furfrou?
Check the ability thread for Aegislash, and the move thread for Meloetta. kleenexfeu did Stance Change for Aegislash, and I made Relic Song for Meloetta. Kyurem can be done using Rotom/Deoxys' forme change routine with some additional scripting(just check to see if Zekrom/Reshiram is in the party), and so can Therian formes. Furfrou's form change could also be used with Rotom's forme change routine, but it'd burn a lot of dex space so I don't know why you'd want that. We could use an alternate routine, but honestly it's really low priority if you can already do it that way. To correctly make Hoopa, Shaymin, and Deerling, we'd need to hack the RTC and add a hook there as well as a bunch of other places to make them appear correctly. As for Genesect, kleenexfeu's Giratina/Arceus routine could be modded to deal with that as well.


~EDIT~ I was wrong about Genesect, I just looked into it. If you really care about the palette change, then this won't be as easy, but other than that all you'll need is a battle script for Techno Blast.

thedarkdragon11

New World Pirate

Male
Raftel, New World
Seen 3 Days Ago
Posted 3 Days Ago
884 posts
10.8 Years
Check the ability thread for Aegislash, and the move thread for Meloetta. kleenexfeu did Stance Change for Aegislash, and I made Relic Song for Meloetta. Kyurem can be done using Rotom/Deoxys' forme change routine with some additional scripting(just check to see if Zekrom/Reshiram is in the party), and so can Therian formes. Furfrou's form change could also be used with Rotom's forme change routine, but it'd burn a lot of dex space so I don't know why you'd want that. We could use an alternate routine, but honestly it's really low priority if you can already do it that way. To correctly make Hoopa, Shaymin, and Deerling, we'd need to hack the RTC and add a hook there as well as a bunch of other places to make them appear correctly. As for Genesect, kleenexfeu's Giratina/Arceus routine could be modded to deal with that as well.


~EDIT~ I was wrong about Genesect, I just looked into it. If you really care about the palette change, then this won't be as easy, but other than that all you'll need is a battle script for Techno Blast.
Thanks!

Le pug

Creator of Pokémon: Discovery / Fat Kid

Age 27
Male
Le bed
Seen 1 Week Ago
Posted June 6th, 2019
871 posts
6.5 Years
You just need to change all of them to the following code, I was tested and it worked properly.

.align 2
var8004: .word 0x020375E0
poke_slot_1: .word 0x020244EC
var8005: .word 0x020375E2
pokemon_setattr: .word 0x0806ACAC
pokemon_calc_effective_stats: .word 0x08068D0C
Confirmed to work ... for ease, here is the compiled code:

For Emerald
10 B5 09 48 02 88 64 20 42 43 08 48 14 18 08 4A 0B 21 20 1C 07 4B 00 F0 05 F8 20 1C 06 4B 00 F0 01 F8 10 BD 9F 46 C0 46 E0 75 03 02 EC 44 02 02 E2 75 03 02 AC AC 06 08 0C 8D 06 08
Or the adjusted routine:

Spoiler:
.thumb

getpokeoffset:
	push {r4, lr}
	ldr r0, var8004
	ldrh r2, [r0]
	mov r0, #100
	mul r2, r0
	ldr r0, poke_slot_1
	add r4, r2, r0
getandsetnewindexnumber:
	ldr r2, var8005
	mov r1, #0xB
	mov r0, r4
	ldr r3, pokemon_setattr
	bl jump
recalc20bytes:
	mov r0, r4
	ldr r3, pokemon_calc_effective_stats
	bl jump
	pop {r4, pc}
jump:
	mov pc, r3
	
.align 2
var8004: .word 0x020375E0
poke_slot_1: .word 0x020244EC
var8005: .word 0x020375E2
pokemon_setattr: .word 0x0806ACAC
pokemon_calc_effective_stats: .word 0x08068D0C

/*insert anywhere. set var 0x8004 to the desired pokemon's slot and 0x8005 to the new index number, then callasm this routine+1.*/
Retired. Thank you guys for a wonderful five years.

pokefreak890

The One that will make everything great

Male
Seen November 4th, 2018
Posted January 23rd, 2018
820 posts
5.3 Years
hello i was wondering if anyone could share what the rotom forme script would look like i cant find the script anywhere on the fourms i have the deoyxs script but when i test it nothing happens

this is my deoyxs script

#org 0x900000
setvar 0x8004 0x5 'Check the last Pokemon in your party
special2 0x8005 0x147
compare 0x8005 0x19A
if 0x1 goto 0x8FFC0D4
[...]
end

#org 0xFFC0D4
setvar 0x8004 0x5
setvar 0x8005 0x3FB
callasm 0xE97B78
[...]
end

is thereany problem that im having with this script that i cant see?
3DS FREIND CODE : 2724-3540-0898
Advertiser Content